tango-app-ui-analyse-traffic 3.3.1-beta.21 → 3.3.1-beta.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/traffic-analysis/traffic-analysis.component.mjs +3 -3
- package/esm2022/lib/components/traffic-card-charts/traffic-card-charts.component.mjs +3 -3
- package/esm2022/lib/components/traffic-charts/traffic-charts.component.mjs +3 -3
- package/fesm2022/tango-app-ui-analyse-traffic.mjs +6 -6
- package/fesm2022/tango-app-ui-analyse-traffic.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1305,11 +1305,11 @@ line-height: 13px;">
|
|
|
1305
1305
|
}
|
|
1306
1306
|
}
|
|
1307
1307
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TrafficAnalysisComponent, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.Router }, { token: i2.ExcelService }, { token: i3.TrafficService }, { token: i4.GlobalStateService }, { token: i0.ChangeDetectorRef }, { token: i5.ToastService }, { token: i6.NgbModal }], target: i0.ɵɵFactoryTarget.Component });
|
|
1308
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TrafficAnalysisComponent, selector: "lib-traffic-analysis", host: { listeners: { "document:click": "handleClickOutside($event)" } }, viewQueries: [{ propertyName: "tooltip", first: true, predicate: ["t"], descendants: true }], ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"col-md-7\">\r\n <div class=\"row\">\r\n <div class=\"col-md-8 \">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"row position-relative\">\r\n <div class=\"col-md-6\">\r\n <div class=\"px-2\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <!-- [ngbTooltip]=\"footfallTooltip\" placement=\"right\" -->\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <!-- Display footfall count or '--' if not available -->\r\n <span class=\"card-label header\">{{ getCardData?.footfall?.count ? getCardData.footfall.count.toLocaleString('en-IN') : '--' }}</span>\r\n <span class=\"sub-header\">{{footfallName}}</span>\r\n </h3>\r\n \r\n <!-- Switch toggle -->\r\n <div class=\"card-toolbar\">\r\n <div class=\"col-md-12 text-end\">\r\n <div class=\"form-check form-switch text-end\">\r\n <input class=\"form-check-input mt-1\" type=\"checkbox\" id=\"flexSwitchCheckDefault\" \r\n [(ngModel)]=\"isAverage\" (change)=\"toggleAverage($event)\" [disabled]=\"isDisabled\">\r\n </div>\r\n <div class=\"form-check-label mt-5\">Average</div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <ng-template #footfallTooltip>\r\n <div class=\"tooltip-content\">\r\n <h5 class=\"tooltip-title text-start\">Footfall</h5>\r\n <p class=\"text-start\">Total unique walk-ins into the selected stores.</p>\r\n <h4 class=\"text-start\">{{getCardData?.footfall?.count}}</h4>\r\n <footer class=\"tooltip-footer text-start\"> <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.footfall?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.footfall?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2 ms-2\"><span class=\"percent-value\" *ngIf=\"getCardGraphData?.footfall?.PreviousData !==0\">{{getCardGraphData?.footfall?.PreviousData ? getCardGraphData?.footfall?.PreviousData:'--'}}%</span><span\r\n class=\"week-font\"> (123) vs Previous \r\n <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span>\r\n </span>\r\n\r\n </span></footer>\r\n </div>\r\n </ng-template> -->\r\n <div class=\"card-body p-0\">\r\n \r\n <section >\r\n <div class=\"row\">\r\n <div class=\"col-md-10 pe-0\">\r\n <div *ngIf=\"cardloading\" class=\"text-center\">\r\n <img class=\"loader-img\" src=\"assets/tango/layout/Loader.gif\">\r\n </div>\r\n <div *ngIf=\"cardNodata\" class=\"row\">\r\n \r\n <div class=\"card-body pb-0 px-0 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"footimg-nodata1\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title1\">No data found</div>\r\n <!-- <div class=\"nodata-sub\">There is no result for this conversion funnel</div> -->\r\n </div>\r\n \r\n </div>\r\n <div *ngIf=\"!cardNodata\" class=\"text-center\" id=\"Footfall\"></div>\r\n </div>\r\n <div class=\"col-md-2 mt-3\">\r\n <div class=\"mt-1 cursor-pointer fs-5\" [ngClass]=\"dateType ==='daily' ? 'text-primary' :''\" (click)=\"dateValue('daily')\">1D</div>\r\n <div class=\"mt-1 cursor-pointer fs-5\" [ngClass]=\"dateType ==='weekly' ? 'text-primary' :''\" (click)=\"dateValue('weekly')\">1W</div>\r\n <div class=\"mt-1 cursor-pointer fs-5\" [ngClass]=\"dateType ==='monthly' ? 'text-primary' :''\" (click)=\"dateValue('monthly')\">1M</div>\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.footfall?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.footfall?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"getCardGraphData?.footfall?.PreviousData ===0\" class=\"percent-value ms-2\">0%</span>\r\n <span class=\"mt-2 ms-2\"><span class=\"percent-value\" *ngIf=\"getCardGraphData?.footfall?.PreviousData !==0\">{{getCardGraphData?.footfall?.PreviousData ? getCardGraphData?.footfall?.PreviousData:'--'}}%</span><span\r\n class=\"week-font\"> vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span> </span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M6 12L10 8L6 4\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div> -->\r\n </div>\r\n <div class=\"position-absolute left-50\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M6 12L10 8L6 4\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n <div class=\"col-md-6\">\r\n\r\n <div class=\"px-2\">\r\n <div class=\"card-header ellipse1 border-0 px-3\" >\r\n <!-- [ngbTooltip]=\"conversionTooltip\" placement=\"left\" -->\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label header\">{{valueConversionRate ? valueConversionRate : '--'}}%</span>\r\n <span class=\"sub-header\">Conversion <span *ngIf=\"conversionValue ==='footfall' || conversionValue ==='engagers' || conversionValue ==='Potential Buyers' || conversionValue ==='NoB Derived' \"> - {{conversionValue | titlecase}}</span></span>\r\n </h3>\r\n </div>\r\n <!-- <ng-template #conversionTooltip>\r\n <div class=\"tooltip-content\">\r\n <h5 class=\"tooltip-title text-start\">Conversion Rate</h5>\r\n <p class=\"text-start\">Total % of <engagers> who spent more than <10mins> in the store..</p>\r\n <h4 class=\"text-start\">{{valueConversionRate}}</h4>\r\n <footer class=\"tooltip-footer text-start\"> <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.conversion?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.conversion?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\">\r\n <span *ngIf=\"conversionValue ==='footfall' && getCardGraphData?.conversion?.footfall.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"conversionValue ==='footfall' && getCardGraphData?.conversion?.footfall.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.conversion?.footfall.PreviousData ? getCardGraphData?.conversion?.footfall.PreviousData:'--'}}%</span>\r\n <span *ngIf=\"conversionValue ==='engagers' && getCardGraphData?.conversion?.engagers.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n \r\n <span *ngIf=\"conversionValue ==='engagers' && getCardGraphData?.conversion?.engagers.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.conversion?.engagers.PreviousData ? getCardGraphData?.conversion?.engagers.PreviousData:'--'}}%</span>\r\n\r\n <span *ngIf=\"conversionValue ==='Potential Buyers' && getCardGraphData?.conversion?.potentialBuyers.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"conversionValue ==='Potential Buyers' && getCardGraphData?.conversion?.potentialBuyers.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.conversion?.potentialBuyers.PreviousData ? getCardGraphData?.conversion?.potentialBuyers.PreviousData:'--'}}%</span>\r\n <span *ngIf=\"conversionValue ==='NoB Derived'\" class=\"percent-value\">--%</span>\r\n <span *ngIf=\"conversionValue ==='' && getCardGraphData?.conversion?.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n\r\n <span *ngIf=\"conversionValue ==='' && getCardGraphData?.conversion?.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.conversion?.PreviousData ? getCardGraphData?.conversion?.PreviousData:'--'}}%</span>\r\n \r\n <span\r\n class=\"week-font\"> vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span>\r\n </footer>\r\n </div>\r\n </ng-template> -->\r\n <div class=\"card-body p-0\">\r\n <div class=\"h-100px pt-10 px-3 row\">\r\n <span class=\"h-75px col-md-3\">\r\n <svg class=\"cursor-pointer\" *ngIf=\"conversionValue !=='footfall'\" placement=\"top\" \r\n ngbTooltip=\"Footfall\"\r\n (click)=\"changeValue('footfall')\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path\r\n d=\"M4 18H9.5V19.25C9.5 19.9793 9.21027 20.6788 8.69454 21.1945C8.17882 21.7103 7.47935 22 6.75 22C6.02065 22 5.32118 21.7103 4.80546 21.1945C4.28973 20.6788 4 19.9793 4 19.25V18ZM8 6.11999C10 6.11999 11 8.99999 11 11C11 12 10.5 13 10 14.5L9.5 16H4C4 15 3.5 13.5 3.5 11C3.5 8.49999 5.498 6.11999 8 6.11999ZM20.054 14.098L19.837 15.329C19.7023 16.0396 19.2931 16.6686 18.698 17.0796C18.1029 17.4907 17.3698 17.6508 16.6576 17.5252C15.9453 17.3996 15.3111 16.9984 14.8925 16.4086C14.4739 15.8188 14.3045 15.0878 14.421 14.374L14.637 13.144L20.054 14.098ZM18.178 1.70499C20.642 2.13899 22.196 4.82999 21.762 7.29199C21.328 9.75399 20.575 11.144 20.402 12.129L14.985 11.174L14.753 9.60999C14.521 8.04599 14.203 6.97399 14.376 5.98999C14.723 4.01999 16.208 1.35799 18.178 1.70499Z\"\r\n fill=\"#98A2B3\" />\r\n </svg>\r\n <svg placement=\"top\" ngbTooltip=\"Footfall\" *ngIf=\"conversionValue ==='footfall'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M4 18H9.5V19.25C9.5 19.9793 9.21027 20.6788 8.69454 21.1945C8.17882 21.7103 7.47935 22 6.75 22C6.02065 22 5.32118 21.7103 4.80546 21.1945C4.28973 20.6788 4 19.9793 4 19.25V18ZM8 6.11999C10 6.11999 11 8.99999 11 11C11 12 10.5 13 10 14.5L9.5 16H4C4 15 3.5 13.5 3.5 11C3.5 8.49999 5.498 6.11999 8 6.11999ZM20.054 14.098L19.837 15.329C19.7023 16.0396 19.2931 16.6686 18.698 17.0796C18.1029 17.4907 17.3698 17.6508 16.6576 17.5252C15.9453 17.3996 15.3111 16.9984 14.8925 16.4086C14.4739 15.8188 14.3045 15.0878 14.421 14.374L14.637 13.144L20.054 14.098ZM18.178 1.70499C20.642 2.13899 22.196 4.82999 21.762 7.29199C21.328 9.75399 20.575 11.144 20.402 12.129L14.985 11.174L14.753 9.60999C14.521 8.04599 14.203 6.97399 14.376 5.98999C14.723 4.01999 16.208 1.35799 18.178 1.70499Z\" fill=\"#00A3FF\"/>\r\n </svg>\r\n </span>\r\n <span class=\"h-75px col-md-3\">\r\n <svg placement=\"top\" ngbTooltip=\"Engagers\" class=\"cursor-pointer\" *ngIf=\"conversionValue !=='engagers'\" (click)=\"changeValue('engagers')\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path \r\n d=\"M17 21V19C17 17.9391 16.5786 16.9217 15.8284 16.1716C15.0783 15.4214 14.0609 15 13 15H5C3.93913 15 2.92172 15.4214 2.17157 16.1716C1.42143 16.9217 1 17.9391 1 19V21M23 21V19C22.9993 18.1137 22.7044 17.2528 22.1614 16.5523C21.6184 15.8519 20.8581 15.3516 20 15.13M16 3.13C16.8604 3.3503 17.623 3.8507 18.1676 4.55231C18.7122 5.25392 19.0078 6.11683 19.0078 7.005C19.0078 7.89317 18.7122 8.75608 18.1676 9.45769C17.623 10.1593 16.8604 10.6597 16 10.88M13 7C13 9.20914 11.2091 11 9 11C6.79086 11 5 9.20914 5 7C5 4.79086 6.79086 3 9 3C11.2091 3 13 4.79086 13 7Z\"\r\n stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg placement=\"top\" ngbTooltip=\"Engagers\" *ngIf=\"conversionValue ==='engagers'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M17 21V19C17 17.9391 16.5786 16.9217 15.8284 16.1716C15.0783 15.4214 14.0609 15 13 15H5C3.93913 15 2.92172 15.4214 2.17157 16.1716C1.42143 16.9217 1 17.9391 1 19V21M23 21V19C22.9993 18.1137 22.7044 17.2528 22.1614 16.5523C21.6184 15.8519 20.8581 15.3516 20 15.13M16 3.13C16.8604 3.3503 17.623 3.8507 18.1676 4.55231C18.7122 5.25392 19.0078 6.11683 19.0078 7.005C19.0078 7.89317 18.7122 8.75608 18.1676 9.45769C17.623 10.1593 16.8604 10.6597 16 10.88M13 7C13 9.20914 11.2091 11 9 11C6.79086 11 5 9.20914 5 7C5 4.79086 6.79086 3 9 3C11.2091 3 13 4.79086 13 7Z\" stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </span>\r\n <span class=\"h-75px col-md-3\">\r\n <svg placement=\"top\" ngbTooltip=\"Potential Buyers\" class=\"cursor-pointer\" *ngIf=\"conversionValue !=='Potential Buyers'\" (click)=\"changeValue('potentialBuyers')\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path opacity=\"0.3\"\r\n d=\"M20.0039 18.002H4.00391C3.40391 18.002 3.00391 17.602 3.00391 17.002V7.00195C3.00391 6.40195 3.40391 6.00195 4.00391 6.00195H20.0039C20.6039 6.00195 21.0039 6.40195 21.0039 7.00195V17.002C21.0039 17.602 20.6039 18.002 20.0039 18.002ZM12.0039 8.00195C10.3039 8.00195 9.00391 9.80195 9.00391 12.002C9.00391 14.202 10.3039 16.002 12.0039 16.002C13.7039 16.002 15.0039 14.202 15.0039 12.002C15.0039 9.80195 13.7039 8.00195 12.0039 8.00195Z\"\r\n fill=\"#98A2B3\" />\r\n <path\r\n d=\"M18.0039 6.00195H20.0039C20.6039 6.00195 21.0039 6.40195 21.0039 7.00195V9.00195C19.3039 9.00195 18.0039 7.70195 18.0039 6.00195ZM6.00391 6.00195H4.00391C3.40391 6.00195 3.00391 6.40195 3.00391 7.00195V9.00195C4.70391 9.00195 6.00391 7.70195 6.00391 6.00195ZM21.0039 17.002V15.002C19.3039 15.002 18.0039 16.302 18.0039 18.002H20.0039C20.6039 18.002 21.0039 17.602 21.0039 17.002ZM3.00391 15.002V17.002C3.00391 17.602 3.40391 18.002 4.00391 18.002H6.00391C6.00391 16.302 4.70391 15.002 3.00391 15.002Z\"\r\n fill=\"#98A2B3\" />\r\n </svg>\r\n <svg placement=\"top\" ngbTooltip=\"Potential Buyers\" *ngIf=\"conversionValue ==='Potential Buyers'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path opacity=\"0.3\" d=\"M20.0039 18.002H4.00391C3.40391 18.002 3.00391 17.602 3.00391 17.002V7.00195C3.00391 6.40195 3.40391 6.00195 4.00391 6.00195H20.0039C20.6039 6.00195 21.0039 6.40195 21.0039 7.00195V17.002C21.0039 17.602 20.6039 18.002 20.0039 18.002ZM12.0039 8.00195C10.3039 8.00195 9.00391 9.80195 9.00391 12.002C9.00391 14.202 10.3039 16.002 12.0039 16.002C13.7039 16.002 15.0039 14.202 15.0039 12.002C15.0039 9.80195 13.7039 8.00195 12.0039 8.00195Z\" fill=\"#00A3FF\"/>\r\n <path d=\"M18.0039 6.00195H20.0039C20.6039 6.00195 21.0039 6.40195 21.0039 7.00195V9.00195C19.3039 9.00195 18.0039 7.70195 18.0039 6.00195ZM6.00391 6.00195H4.00391C3.40391 6.00195 3.00391 6.40195 3.00391 7.00195V9.00195C4.70391 9.00195 6.00391 7.70195 6.00391 6.00195ZM21.0039 17.002V15.002C19.3039 15.002 18.0039 16.302 18.0039 18.002H20.0039C20.6039 18.002 21.0039 17.602 21.0039 17.002ZM3.00391 15.002V17.002C3.00391 17.602 3.40391 18.002 4.00391 18.002H6.00391C6.00391 16.302 4.70391 15.002 3.00391 15.002Z\" fill=\"#00A3FF\"/>\r\n </svg>\r\n </span>\r\n <span class=\"h-75px col-md-3\">\r\n <svg placement=\"top\" ngbTooltip=\"NoB Derived\" class=\"cursor-pointer\" *ngIf=\"conversionValue !=='NoB Derived'\" (click)=\"changeValue('NoB Derived')\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path opacity=\"0.3\"\r\n d=\"M18.0039 21.6005C16.3039 21.6005 15.0039 20.3005 15.0039 18.6005V2.5005C15.0039 2.2005 14.6039 2.00045 14.3039 2.20045L13.0039 3.60048L11.7039 2.30049C11.3039 1.90049 10.7039 1.90049 10.3039 2.30049L9.00391 3.60048L7.70392 2.30049C7.30392 1.90049 6.7039 1.90049 6.3039 2.30049L5.00391 3.60048L3.70392 2.30049C3.50392 2.10049 3.00391 2.2005 3.00391 3.5005V18.6005C3.00391 20.3005 4.30391 21.6005 6.00391 21.6005H18.0039Z\"\r\n fill=\"#98A2B3\" />\r\n <path\r\n d=\"M12.0059 12.5972H11.0059C10.4059 12.5972 10.0059 12.1972 10.0059 11.5972C10.0059 10.9972 10.4059 10.5972 11.0059 10.5972H12.0059C12.6059 10.5972 13.0059 10.9972 13.0059 11.5972C13.0059 12.1972 12.6059 12.5972 12.0059 12.5972ZM9.00586 11.5972C9.00586 10.9972 8.60586 10.5972 8.00586 10.5972H6.00586C5.40586 10.5972 5.00586 10.9972 5.00586 11.5972C5.00586 12.1972 5.40586 12.5972 6.00586 12.5972H8.00586C8.60586 12.5972 9.00586 12.1972 9.00586 11.5972ZM9.00586 7.59717C9.00586 6.99717 8.60586 6.59717 8.00586 6.59717H6.00586C5.40586 6.59717 5.00586 6.99717 5.00586 7.59717C5.00586 8.19717 5.40586 8.59717 6.00586 8.59717H8.00586C8.60586 8.59717 9.00586 8.19717 9.00586 7.59717ZM13.0059 7.59717C13.0059 6.99717 12.6059 6.59717 12.0059 6.59717H11.0059C10.4059 6.59717 10.0059 6.99717 10.0059 7.59717C10.0059 8.19717 10.4059 8.59717 11.0059 8.59717H12.0059C12.6059 8.59717 13.0059 8.19717 13.0059 7.59717ZM13.0059 15.5972C13.0059 14.9972 12.6059 14.5972 12.0059 14.5972H10.0059C9.40586 14.5972 9.00586 14.9972 9.00586 15.5972C9.00586 16.1972 9.40586 16.5972 10.0059 16.5972H12.0059C12.6059 16.5972 13.0059 16.1972 13.0059 15.5972Z\"\r\n fill=\"#98A2B3\" />\r\n <path\r\n d=\"M15.002 18.5971C15.002 20.2971 16.302 21.5971 18.002 21.5971C19.702 21.5971 21.002 20.2971 21.002 18.5971V12.4971C21.002 12.1971 20.602 11.9971 20.302 12.1971L19.002 13.5971L17.702 12.2971C17.302 11.8971 16.702 11.8971 16.302 12.2971L15.002 13.5971V18.5971Z\"\r\n fill=\"#98A2B3\" />\r\n </svg>\r\n <svg placement=\"top\" ngbTooltip=\"NoB Derived\" *ngIf=\"conversionValue ==='NoB Derived'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path opacity=\"0.3\"\r\n d=\"M18.0039 21.6005C16.3039 21.6005 15.0039 20.3005 15.0039 18.6005V2.5005C15.0039 2.2005 14.6039 2.00045 14.3039 2.20045L13.0039 3.60048L11.7039 2.30049C11.3039 1.90049 10.7039 1.90049 10.3039 2.30049L9.00391 3.60048L7.70392 2.30049C7.30392 1.90049 6.7039 1.90049 6.3039 2.30049L5.00391 3.60048L3.70392 2.30049C3.50392 2.10049 3.00391 2.2005 3.00391 3.5005V18.6005C3.00391 20.3005 4.30391 21.6005 6.00391 21.6005H18.0039Z\"\r\n fill=\"#00A3FF\" />\r\n <path\r\n d=\"M12.0059 12.5972H11.0059C10.4059 12.5972 10.0059 12.1972 10.0059 11.5972C10.0059 10.9972 10.4059 10.5972 11.0059 10.5972H12.0059C12.6059 10.5972 13.0059 10.9972 13.0059 11.5972C13.0059 12.1972 12.6059 12.5972 12.0059 12.5972ZM9.00586 11.5972C9.00586 10.9972 8.60586 10.5972 8.00586 10.5972H6.00586C5.40586 10.5972 5.00586 10.9972 5.00586 11.5972C5.00586 12.1972 5.40586 12.5972 6.00586 12.5972H8.00586C8.60586 12.5972 9.00586 12.1972 9.00586 11.5972ZM9.00586 7.59717C9.00586 6.99717 8.60586 6.59717 8.00586 6.59717H6.00586C5.40586 6.59717 5.00586 6.99717 5.00586 7.59717C5.00586 8.19717 5.40586 8.59717 6.00586 8.59717H8.00586C8.60586 8.59717 9.00586 8.19717 9.00586 7.59717ZM13.0059 7.59717C13.0059 6.99717 12.6059 6.59717 12.0059 6.59717H11.0059C10.4059 6.59717 10.0059 6.99717 10.0059 7.59717C10.0059 8.19717 10.4059 8.59717 11.0059 8.59717H12.0059C12.6059 8.59717 13.0059 8.19717 13.0059 7.59717ZM13.0059 15.5972C13.0059 14.9972 12.6059 14.5972 12.0059 14.5972H10.0059C9.40586 14.5972 9.00586 14.9972 9.00586 15.5972C9.00586 16.1972 9.40586 16.5972 10.0059 16.5972H12.0059C12.6059 16.5972 13.0059 16.1972 13.0059 15.5972Z\"\r\n fill=\"#00A3FF\" />\r\n <path\r\n d=\"M15.002 18.5971C15.002 20.2971 16.302 21.5971 18.002 21.5971C19.702 21.5971 21.002 20.2971 21.002 18.5971V12.4971C21.002 12.1971 20.602 11.9971 20.302 12.1971L19.002 13.5971L17.702 12.2971C17.302 11.8971 16.702 11.8971 16.302 12.2971L15.002 13.5971V18.5971Z\"\r\n fill=\"#00A3FF\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"card-footer ms-3 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.conversion?.footfall.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.conversion?.footfall.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\">\r\n <span *ngIf=\"conversionValue ==='footfall' && getCardGraphData?.conversion?.footfall.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"conversionValue ==='footfall' && getCardGraphData?.conversion?.footfall.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.conversion?.footfall.PreviousData ? getCardGraphData?.conversion?.footfall.PreviousData:'--'}}%</span>\r\n <span *ngIf=\"conversionValue ==='engagers' && getCardGraphData?.conversion?.engagers.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n \r\n <span *ngIf=\"conversionValue ==='engagers' && getCardGraphData?.conversion?.engagers.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.conversion?.engagers.PreviousData ? getCardGraphData?.conversion?.engagers.PreviousData:'--'}}%</span>\r\n\r\n <span *ngIf=\"conversionValue ==='Potential Buyers' && getCardGraphData?.conversion?.potentialBuyers.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"conversionValue ==='Potential Buyers' && getCardGraphData?.conversion?.potentialBuyers.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.conversion?.potentialBuyers.PreviousData ? getCardGraphData?.conversion?.potentialBuyers.PreviousData:'--'}}%</span>\r\n <span *ngIf=\"conversionValue ==='NoB Derived'\" class=\"percent-value\">--%</span>\r\n <span *ngIf=\"conversionValue ==='' && getCardGraphData?.conversion?.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n\r\n <span *ngIf=\"conversionValue ==='' && getCardGraphData?.conversion?.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.conversion?.PreviousData ? getCardGraphData?.conversion?.PreviousData:'--'}}%</span>\r\n \r\n <span\r\n class=\"week-font\"> vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"card-header ellipse1 border-0 px-3\" >\r\n <!-- [ngbTooltip]=\"bouncedTooltip\" placement=\"left\" -->\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"card-label header\">{{getCardData?.bounced?.rate ? getCardData?.bounced?.rate :'--'}}%</span>\r\n <span class=\"sub-header\">Bounced Rate</span>\r\n </h3>\r\n </div>\r\n <!-- <ng-template #bouncedTooltip>\r\n <div class=\"tooltip-content\">\r\n <h5 class=\"tooltip-title text-start\">Bounced Rate</h5>\r\n <p class=\"text-start\">Total walk-ins who spent less than <N>min/s.</p>\r\n <h4 class=\"text-start\">{{getCardData?.bounced?.rate}}</h4>\r\n <footer class=\"tooltip-footer text-start\"> <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.bounced?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.bounced?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span> <span class=\"mt-2 ms-2\">\r\n <span *ngIf=\"getCardGraphData?.bounced?.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"getCardGraphData?.bounced?.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.bounced?.PreviousData ? getCardGraphData?.bounced?.PreviousData:'--'}}%</span>\r\n <span class=\"week-font\">\r\n vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span></footer>\r\n </div>\r\n </ng-template> -->\r\n <div class=\"card-body p-0\">\r\n <div *ngIf=\"cardNodata\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body pb-0 px-0 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata1\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title1\">No data found</div>\r\n <!-- <div class=\"nodata-sub\">There is no result for this conversion funnel</div> -->\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!cardNodata\" class=\"text-center\" id=\"BouncedRate\"></div>\r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.bounced?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.bounced?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\">\r\n <span *ngIf=\"getCardGraphData?.bounced?.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"getCardGraphData?.bounced?.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.bounced?.PreviousData ? getCardGraphData?.bounced?.PreviousData:'--'}}%</span>\r\n <span class=\"week-font\">\r\n vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4 mt-3\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"card-header ellipse1 border-0 px-3\" >\r\n <!-- [ngbTooltip]=\"engagersTooltip\" placement=\"right\" -->\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"card-label header\">{{getCardData?.engagers?.rate ? getCardData?.engagers?.rate :'--'}}%</span>\r\n <span class=\"sub-header\">Engagers Rate</span>\r\n </h3>\r\n </div>\r\n <!-- <ng-template #engagersTooltip>\r\n <div class=\"tooltip-content\">\r\n <h5 class=\"tooltip-title text-start\">Engagers Rate</h5>\r\n <p class=\"text-start\">Total walk-ins who spent more than <Xmins> into the selected stores.</p>\r\n <h4 class=\"text-start\">{{getCardData?.engagers?.rate}}</h4>\r\n <footer class=\"tooltip-footer text-start\"> <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.engagers?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.engagers?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span> <span class=\"mt-2 ms-2\">\r\n <span *ngIf=\"getCardGraphData?.engagers?.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"getCardGraphData?.engagers?.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.engagers?.PreviousData ? getCardGraphData?.engagers?.PreviousData:'--'}}%</span>\r\n <span class=\"week-font\">\r\n vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span></footer>\r\n </div>\r\n </ng-template> -->\r\n <div class=\"card-body p-0\">\r\n <div *ngIf=\"cardNodata\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body pb-0 px-0 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata1\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title1\">No data found</div>\r\n <!-- <div class=\"nodata-sub\">There is no result for this conversion funnel</div> -->\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!cardNodata\" class=\"text-center\" id=\"engagers\"></div>\r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.engagers?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.engagers?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\">\r\n <span *ngIf=\"getCardGraphData?.engagers?.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"getCardGraphData?.engagers?.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.engagers?.PreviousData ? getCardGraphData?.engagers?.PreviousData:'--'}}%</span>\r\n <span class=\"week-font\">\r\n vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4 mt-3\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"card-header ellipse1 border-0 px-3\" > \r\n <!-- [ngbTooltip]=\"missedTooltip\" placement=\"right\" -->\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"card-label header\">{{getCardData?.missedopportunities?.rate ? getCardData?.missedopportunities?.rate :'--'}}%</span>\r\n <span class=\"sub-header\">Missed Opportunities</span>\r\n </h3>\r\n </div>\r\n\r\n <!-- <ng-template #missedTooltip>\r\n <div class=\"tooltip-content\">\r\n <h5 class=\"tooltip-title text-start\">Missed Opportunities</h5>\r\n <p class=\"text-start\">The difference between <engagers> and <conversions>, showing potential loss.</p>\r\n <h4 class=\"text-start\">{{getCardData?.missedopportunities?.rate}}</h4>\r\n <footer class=\"tooltip-footer text-start\"> \r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.missedopportunities?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.missedopportunities?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"ms-2 mt-2\">\r\n <span *ngIf=\"getCardGraphData?.missedopportunities?.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"getCardGraphData?.missedopportunities?.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.missedopportunities?.PreviousData ? getCardGraphData?.missedopportunities?.PreviousData:'--'}}%</span>\r\n <span class=\"week-font\">\r\n vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span>\r\n </footer>\r\n </div>\r\n </ng-template> -->\r\n <div class=\"card-body p-0 h-90px mt-3 mx-3\">\r\n <div class=\"row\">\r\n <div class=\"col-md-9\"><!--{{getCardData?.revenue?.value ?? '--'}} -->\r\n <div class=\"my-2\" *ngIf=\"getCardData?.revenue?.currency !=='inr'\"> <span class=\"card-label header\"><span class=\"me-1\">$</span> {{getCardData?.revenue?.value.toLocaleString('en-IN') ?? '--'}}</span></div>\r\n <div class=\"my-2\" *ngIf=\"getCardData?.revenue?.currency ==='inr'\"> <span class=\"card-label header\"><span class=\"me-1\">\u20B9</span> {{getCardData?.revenue?.value.toLocaleString('en-IN') ?? '--'}}</span></div>\r\n <div class=\"my-1\"><span class=\"sub-header\">Avg. Revenue Loss</span></div>\r\n </div>\r\n <div class=\"col-md-3 mt-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\r\n <g filter=\"url(#filter0_d_3885_2531)\">\r\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"#EAF8FF\"/>\r\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#EAF8FF\"/>\r\n <g clip-path=\"url(#clip0_3885_2531)\">\r\n <path d=\"M27.4585 17.2251C27.8133 18.8556 27.6707 20.5614 27.0505 22.1027L25.8593 21.3838L26.017 26.097L30 23.8834L28.717 23.1086C30.7171 18.4823 29.0726 12.9333 24.7799 10.3407C23.3328 9.46633 21.6918 9.00406 20.0206 9.00003C18.3494 8.99599 16.7064 9.45033 15.2555 10.3177L16.2049 12.0544C17.5933 11.2249 19.1953 10.8712 20.7858 11.043C22.3764 11.2149 23.8754 11.9036 25.0723 13.0125C26.2692 14.1214 27.1037 15.5946 27.4585 17.2251Z\" fill=\"#00A3FF\"/>\r\n <path d=\"M12.5402 20.7759C12.1854 19.1452 12.3282 17.4392 12.9485 15.8978L14.1398 16.6167L13.982 11.9035L10 14.1181L11.283 14.8909C9.28199 19.5182 10.9264 25.0662 15.2192 27.6588C16.6661 28.5333 18.3071 28.9958 19.9783 29C21.6495 29.0042 23.2926 28.55 24.7435 27.6828L23.7951 25.9461C22.4067 26.776 20.8045 27.13 19.2138 26.9583C17.623 26.7867 16.1237 26.0979 14.9267 24.989C13.7296 23.88 12.895 22.4066 12.5402 20.7759Z\" fill=\"#00A3FF\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M21.0372 13.003C21.0372 12.5514 20.6871 12.1852 20.2552 12.1852C19.8234 12.1852 19.4733 12.5514 19.4733 13.003V14.3659H18.952C18.2607 14.3659 17.5978 14.653 17.109 15.1642C16.6201 15.6754 16.3455 16.3687 16.3455 17.0916C16.3455 17.8146 16.6201 18.5079 17.109 19.0191C17.5978 19.5302 18.2607 19.8174 18.952 19.8174H19.4733V21.998H17.1275C16.6956 21.998 16.3455 22.3641 16.3455 22.8158C16.3455 23.2674 16.6956 23.6335 17.1275 23.6335H19.4733V24.9964C19.4733 25.448 19.8234 25.8141 20.2552 25.8141C20.6871 25.8141 21.0372 25.448 21.0372 24.9964V23.6335H21.5585C22.2498 23.6335 22.9127 23.3463 23.4015 22.8351C23.8903 22.324 24.1649 21.6306 24.1649 20.9077C24.1649 20.1848 23.8903 19.4915 23.4015 18.9803C22.9127 18.4691 22.2498 18.182 21.5585 18.182H21.0372V16.0013H22.8617C23.2936 16.0013 23.6437 15.6352 23.6437 15.1836C23.6437 14.732 23.2936 14.3659 22.8617 14.3659H21.0372V13.003ZM18.952 16.0013H19.4733V18.182H18.952C18.6755 18.182 18.4103 18.0671 18.2148 17.8626C18.0193 17.6581 17.9094 17.3808 17.9094 17.0916C17.9094 16.8025 18.0193 16.5252 18.2148 16.3207C18.4103 16.1162 18.6755 16.0013 18.952 16.0013ZM21.0372 21.998V19.8174H21.5585C21.835 19.8174 22.1002 19.9323 22.2957 20.1368C22.4912 20.3412 22.6011 20.6186 22.6011 20.9077C22.6011 21.1969 22.4912 21.4742 22.2957 21.6787C22.1002 21.8832 21.835 21.998 21.5585 21.998H21.0372Z\" fill=\"#00A3FF\"/>\r\n </g>\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_3885_2531\" x=\"0\" y=\"0\" width=\"40\" height=\"40\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/>\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\"/>\r\n <feOffset dy=\"1\"/>\r\n <feGaussianBlur stdDeviation=\"1\"/>\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\"/>\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_3885_2531\"/>\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_3885_2531\" result=\"shape\"/>\r\n </filter>\r\n <clipPath id=\"clip0_3885_2531\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(10 9)\"/>\r\n </clipPath>\r\n </defs>\r\n </svg></div>\r\n </div>\r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.missedopportunities?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.missedopportunities?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"ms-2 mt-2\">\r\n <span *ngIf=\"getCardGraphData?.missedopportunities?.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"getCardGraphData?.missedopportunities?.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.missedopportunities?.PreviousData ? getCardGraphData?.missedopportunities?.PreviousData:'--'}}%</span>\r\n <span class=\"week-font\">\r\n vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4 mt-3 h-100\">\r\n <div class=\"card card-border mb-5 py-0\">\r\n <div class=\"card-body p-0 h-90px mt-3 mx-3\">\r\n <div class=\"d-flex align-items-center me-2\">\r\n <div class=\"mt-3 flex-shrink-0\">\r\n <svg width=\"40\" height=\"41\" viewBox=\"0 0 40 41\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect y=\"0.5\" width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\"/>\r\n <path d=\"M17.6382 12.8922C17.6382 12.6835 17.7212 12.4833 17.8688 12.3357C18.0164 12.1881 18.2165 12.1052 18.4253 12.1052H21.5734C21.7822 12.1052 21.9823 12.1881 22.1299 12.3357C22.2775 12.4833 22.3605 12.6835 22.3605 12.8922C22.3605 13.1009 22.2775 13.3011 22.1299 13.4487C21.9823 13.5963 21.7822 13.6792 21.5734 13.6792H20.7864V14.7286L20.7853 14.7716C22.1156 14.9174 23.3767 15.4398 24.4204 16.2775L24.4277 16.2712L25.2148 15.4842C25.311 15.3806 25.4333 15.3048 25.569 15.2649C25.7046 15.2251 25.8485 15.2225 25.9855 15.2575C26.1224 15.2925 26.2474 15.3638 26.3472 15.4639C26.4471 15.564 26.5181 15.6892 26.5527 15.8263C26.5877 15.9631 26.5852 16.1068 26.5455 16.2423C26.5058 16.3778 26.4304 16.5002 26.3271 16.5965L25.5401 17.3836L25.5338 17.3909C26.3662 18.4331 26.8875 19.6891 27.0377 21.0144C27.1878 22.3397 26.9607 23.6805 26.3824 24.8825C25.8042 26.0845 24.8983 27.0987 23.7691 27.8086C22.6399 28.5184 21.3332 28.895 19.9993 28.895C18.6655 28.895 17.3588 28.5184 16.2296 27.8086C15.1004 27.0987 14.1945 26.0845 13.6163 24.8825C13.038 23.6805 12.8109 22.3397 12.961 21.0144C13.1112 19.6891 13.6325 18.4331 14.4649 17.3909L14.4586 17.3836L13.6716 16.5965C13.5324 16.4474 13.4566 16.25 13.4601 16.046C13.4636 15.842 13.5462 15.6473 13.6905 15.5031C13.8347 15.3588 14.0294 15.2762 14.2334 15.2727C14.4374 15.2692 14.6348 15.345 14.7839 15.4842L15.571 16.2712L15.5783 16.2775C16.6217 15.44 17.8824 14.9176 19.2123 14.7716V13.6792H18.4253C18.2165 13.6792 18.0164 13.5963 17.8688 13.4487C17.7212 13.3011 17.6382 13.1009 17.6382 12.8922ZM19.9993 27.3212C21.4606 27.3211 22.862 26.7404 23.8952 25.7071C24.9284 24.6737 25.5087 23.2722 25.5086 21.8109C25.5085 20.3496 24.9278 18.9482 23.8945 17.915C22.8611 16.8819 21.4596 16.3015 19.9983 16.3016C18.537 16.3018 17.1356 16.8824 16.1025 17.9158C15.0693 18.9492 14.4889 20.3507 14.489 21.8119C14.4892 23.2732 15.0698 24.6746 16.1032 25.7078C17.1366 26.741 18.5381 27.3213 19.9993 27.3212ZM20.4076 20.2903L21.8032 18.8947C21.8758 18.8195 21.9626 18.7595 22.0586 18.7182C22.1546 18.6769 22.2579 18.6551 22.3624 18.6542C22.4669 18.6532 22.5705 18.6731 22.6673 18.7126C22.764 18.7521 22.8519 18.8105 22.9259 18.8844C22.9998 18.9582 23.0583 19.0461 23.0979 19.1428C23.1375 19.2395 23.1575 19.3431 23.1566 19.4476C23.1557 19.5521 23.1341 19.6554 23.0929 19.7515C23.0517 19.8475 22.9918 19.9344 22.9166 20.007L21.521 21.4037C21.583 21.6371 21.5906 21.8815 21.5432 22.1182C21.4958 22.355 21.3948 22.5777 21.2478 22.7692C21.1008 22.9607 20.9118 23.1159 20.6953 23.2228C20.4789 23.3298 20.2408 23.3856 19.9993 23.386C19.7766 23.3841 19.5567 23.3349 19.3544 23.2416C19.1521 23.1483 18.9718 23.0131 18.8257 22.845C18.6795 22.6768 18.5707 22.4796 18.5066 22.2662C18.4424 22.0528 18.4243 21.8283 18.4534 21.6074C18.4825 21.3865 18.5582 21.1743 18.6755 20.9849C18.7928 20.7955 18.949 20.6332 19.1338 20.5086C19.3185 20.3841 19.5276 20.3003 19.7472 20.2626C19.9668 20.225 20.1919 20.2344 20.4076 20.2903Z\" fill=\"#667085\"/>\r\n </svg>\r\n </div>\r\n <div class=\"mx-3 mt-1\">\r\n <div class=\"my-1 card-label header\" *ngIf=\"getCardData?.avgDwellTime === 0\">0 mins</div>\r\n <div class=\"my-1 card-label header\" *ngIf=\"getCardData?.avgDwellTime !== 0\">{{getCardData?.avgDwellTime ? getCardData?.avgDwellTime :'--'}} mins</div>\r\n <div class=\"sub-header\">Avg Dwell Time</div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n <div class=\"card card-border py-0\">\r\n <div class=\"card-body p-0 h-90px mt-3 mx-3\">\r\n <div class=\"d-flex align-items-center me-2\">\r\n <div class=\"flex-shrink-0 mt-3\">\r\n <svg width=\"40\" height=\"41\" viewBox=\"0 0 40 41\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect y=\"0.5\" width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\"/>\r\n <path d=\"M21.9004 12.1675C22.9958 12.1675 24.0423 12.3918 24.9977 12.7987C25.9889 13.2207 26.8809 13.8402 27.6279 14.6087C28.3734 15.3756 28.9756 16.2931 29.3857 17.3162C29.7813 18.299 29.9993 19.3756 29.9993 20.5008C29.9993 21.6277 29.7813 22.7043 29.3857 23.6871C28.9756 24.7068 28.3734 25.6244 27.6263 26.3929C26.8809 27.1598 25.9889 27.7793 24.9945 28.2012C24.0391 28.6081 22.9925 28.8325 21.8988 28.8325C20.8034 28.8325 19.7568 28.6081 18.8014 28.2012C17.8102 27.7793 16.9183 27.1598 16.1729 26.3929L16.1712 26.3912C15.4242 25.6227 14.8236 24.7052 14.4134 23.6871C14.2865 23.3707 14.1774 23.0459 14.0879 22.7127C14.2572 22.7294 14.4297 22.7378 14.6038 22.7378C14.9342 22.7378 15.2565 22.7076 15.5706 22.649C15.6227 22.8098 15.6797 22.9688 15.7415 23.1246C16.0785 23.9617 16.5732 24.7152 17.1885 25.3481C17.8037 25.981 18.5378 26.49 19.3499 26.8366C20.1328 27.1698 20.9938 27.3557 21.8988 27.3557C22.8037 27.3557 23.6631 27.1715 24.4476 26.8366C25.2614 26.49 25.9938 25.981 26.6091 25.3481C27.2243 24.7152 27.7191 23.9601 28.056 23.1246C28.3799 22.3192 28.5605 21.4334 28.5605 20.5025C28.5605 19.5715 28.3815 18.6875 28.056 17.8804C27.7191 17.0432 27.2243 16.2898 26.6091 15.6569C25.9938 15.024 25.2598 14.5149 24.4476 14.1684C23.6647 13.8352 22.8037 13.6493 21.8988 13.6493C20.9938 13.6493 20.1344 13.8335 19.3499 14.1684C19.2799 14.1985 19.21 14.2303 19.1416 14.2621C18.8747 13.8301 18.5524 13.4383 18.1829 13.0984C18.3848 12.9913 18.5915 12.8925 18.8014 12.8021C19.7601 12.3918 20.805 12.1675 21.9004 12.1675ZM20.971 16.5393C20.971 16.335 21.0524 16.1508 21.181 16.0169C21.3112 15.8829 21.4902 15.8009 21.6888 15.8009C21.8874 15.8009 22.0664 15.8829 22.1966 16.0169C22.3268 16.1508 22.4066 16.335 22.4066 16.5393V20.4271L25.2305 22.1501C25.3997 22.2539 25.5137 22.4196 25.5592 22.6021C25.6048 22.7847 25.5837 22.9856 25.4827 23.1597V23.1614C25.3818 23.3355 25.2207 23.4527 25.0433 23.4996C24.8659 23.5465 24.6706 23.5247 24.5013 23.4209H24.4997L21.3405 21.4937C21.2314 21.4318 21.1419 21.3413 21.0768 21.2342C21.0101 21.122 20.971 20.9897 20.971 20.8491V16.5393Z\" fill=\"#667085\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M14.3913 12.6095C16.8164 12.6095 18.7826 14.6321 18.7826 17.1269C18.7826 19.6218 16.8164 21.6444 14.3913 21.6444C11.9661 21.6444 10 19.6218 10 17.1269C10 14.6321 11.9661 12.6095 14.3913 12.6095ZM14.3913 19.7172L16.748 16.7201H15.2848V15.1261H13.4977V16.7201H12.0345L14.3913 19.7172Z\" fill=\"#F04438\"/>\r\n </svg>\r\n </div>\r\n <div class=\"mx-3 mt-1\">\r\n <div class=\"my-1 card-label header\" *ngIf=\"getCardData?.avgDownTime === 0\">0 mins</div>\r\n <div class=\"my-1 card-label header\" *ngIf=\"getCardData?.avgDownTime !== 0\">{{getCardData?.avgDownTime ? getCardData?.avgDownTime :'--'}} mins</div>\r\n <div class=\"sub-header\">Avg Down Time</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4 mt-3 position-relative\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"card-label header\">{{getCardData?.potentialBuyers?.rate ? getCardData?.potentialBuyers?.rate :'--'}}%</span>\r\n <span class=\"sub-header \">Potential Buyers</span>\r\n </h3>\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <div *ngIf=\"cardNodata\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body pb-0 px-0 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata1\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title1\">No data found</div>\r\n <!-- <div class=\"nodata-sub\">There is no result for this conversion funnel</div> -->\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!cardNodata\" class=\"text-center\" id=\"PotentialBuyers\"></div>\r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.potentialBuyers?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.potentialBuyers?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\">\r\n <span *ngIf=\"getCardGraphData?.potentialBuyers?.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"getCardGraphData?.potentialBuyers?.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.potentialBuyers?.PreviousData ? getCardGraphData?.potentialBuyers?.PreviousData:'--'}}%</span>\r\n <span class=\"week-font\">\r\n vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"position-absolute end-0\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M6 12L10 8L6 4\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"col-md-8 mt-3\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <div class=\"px-2\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"card-label header\">Potential Buyer Distribution</span>\r\n <span class=\"sub-header\">Category-wise</span>\r\n </h3> \r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-9\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6 px-0\">\r\n <div class=\"card-body p-0\">\r\n <div class=\"text-start ms-10 mt-7 mb-3\"><span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"25\" height=\"24\" viewBox=\"0 0 25 24\" fill=\"none\">\r\n <path d=\"M20.25 21V19C20.25 17.9391 19.8286 16.9217 19.0784 16.1716C18.3283 15.4214 17.3109 15 16.25 15H8.25C7.18913 15 6.17172 15.4214 5.42157 16.1716C4.67143 16.9217 4.25 17.9391 4.25 19V21M16.25 7C16.25 9.20914 14.4591 11 12.25 11C10.0409 11 8.25 9.20914 8.25 7C8.25 4.79086 10.0409 3 12.25 3C14.4591 3 16.25 4.79086 16.25 7Z\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span><span class=\"left-card-count mt-2 ms-1\">{{getCardData?.potentialBuyers?.potentialBuyersSingle?.count ? getCardData?.potentialBuyers?.potentialBuyersSingle?.count.toLocaleString('en-IN'):'--'}}</span> <span class=\"left-card-count-header ms-1\">Single</span></div>\r\n <div class=\"text-start ms-15 mb-3\"><span class=\"badge badge-light-default week-font\">{{getCardData?.potentialBuyers?.potentialBuyersSingle?.ageGroup ? getCardData?.potentialBuyers?.potentialBuyersSingle?.ageGroup:'--'}} age</span></div>\r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.potentialBuyers?.potentialBuyersSingle?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.potentialBuyers?.potentialBuyersSingle?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\">\r\n <span *ngIf=\"getCardGraphData?.potentialBuyers?.potentialBuyersSingle?.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"getCardGraphData?.potentialBuyers?.potentialBuyersSingle?.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.potentialBuyers?.potentialBuyersSingle?.PreviousData ? getCardGraphData?.potentialBuyers?.potentialBuyersSingle?.PreviousData:'--'}}%</span>\r\n <span\r\n class=\"week-font\"> vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6 px-0\">\r\n <div class=\"card-body p-0\">\r\n <div class=\"text-start ms-10 mt-7 mb-3\"><span> <svg width=\"26\" height=\"24\" viewBox=\"0 0 26 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect width=\"26\" height=\"24\" fill=\"#DCDCDC\"/>\r\n <rect x=\"-460.5\" y=\"-340.5\" width=\"783\" height=\"1947\" rx=\"4.5\" stroke=\"#9747FF\" stroke-dasharray=\"10 5\"/>\r\n <mask id=\"path-2-inside-1_707_13106\" fill=\"white\">\r\n <path d=\"M-189 -89C-189 -95.6274 -183.627 -101 -177 -101H295C301.627 -101 307 -95.6274 307 -89V85C307 91.6274 301.627 97 295 97H-177C-183.627 97 -189 91.6274 -189 85V-89Z\"/>\r\n </mask>\r\n <path d=\"M-189 -89C-189 -95.6274 -183.627 -101 -177 -101H295C301.627 -101 307 -95.6274 307 -89V85C307 91.6274 301.627 97 295 97H-177C-183.627 97 -189 91.6274 -189 85V-89Z\" fill=\"white\"/>\r\n <path d=\"M-190 -89C-190 -96.1797 -184.18 -102 -177 -102H294C301.18 -102 307 -96.1797 307 -89C307 -95.0751 301.627 -100 295 -100H-177C-183.075 -100 -188 -95.0751 -188 -89H-190ZM307 85C307 92.1797 301.18 98 294 98H-177C-184.18 98 -190 92.1797 -190 85H-188C-188 91.0751 -183.075 96 -177 96H295C301.627 96 307 91.0751 307 85ZM-177 98C-184.18 98 -190 92.1797 -190 85V-89C-190 -96.1797 -184.18 -102 -177 -102V-100C-183.075 -100 -188 -95.0751 -188 -89V85C-188 91.0751 -183.075 96 -177 96V98ZM307 -101V97V-101Z\" fill=\"#D0D5DD\" mask=\"url(#path-2-inside-1_707_13106)\"/>\r\n <mask id=\"path-6-inside-2_707_13106\" fill=\"white\">\r\n <path d=\"M7.71064 7.38462C8.19552 7.38462 8.67565 7.28911 9.12362 7.10356C9.57159 6.918 9.97863 6.64603 10.3215 6.30316C10.6644 5.9603 10.9363 5.55326 11.1219 5.10529C11.3074 4.65732 11.4029 4.17719 11.4029 3.69231C11.4029 3.20743 11.3074 2.72729 11.1219 2.27932C10.9363 1.83135 10.6644 1.42431 10.3215 1.08145C9.97863 0.73859 9.57159 0.466616 9.12362 0.28106C8.67565 0.0955043 8.19552 -7.22529e-09 7.71064 0C6.73138 1.45921e-08 5.79222 0.38901 5.09978 1.08145C4.40734 1.77389 4.01833 2.71305 4.01833 3.69231C4.01833 4.67157 4.40734 5.61072 5.09978 6.30316C5.79222 6.99561 6.73138 7.38462 7.71064 7.38462ZM18.7876 7.38462C19.2724 7.38462 19.7526 7.28911 20.2005 7.10356C20.6485 6.918 21.0556 6.64603 21.3984 6.30316C21.7413 5.9603 22.0133 5.55326 22.1988 5.10529C22.3844 4.65732 22.4799 4.17719 22.4799 3.69231C22.4799 3.20743 22.3844 2.72729 22.1988 2.27932C22.0133 1.83135 21.7413 1.42431 21.3984 1.08145C21.0556 0.73859 20.6485 0.466616 20.2005 0.28106C19.7526 0.0955043 19.2724 -7.22529e-09 18.7876 0C17.8083 1.45921e-08 16.8691 0.38901 16.1767 1.08145C15.4843 1.77389 15.0953 2.71305 15.0953 3.69231C15.0953 4.67157 15.4843 5.61072 16.1767 6.30316C16.8691 6.99561 17.8083 7.38462 18.7876 7.38462ZM0.941406 10.736C0.941406 10.4575 0.996258 10.1818 1.10283 9.92448C1.2094 9.66719 1.3656 9.43342 1.56252 9.2365C1.75944 9.03958 1.99321 8.88338 2.2505 8.77681C2.50778 8.67024 2.78354 8.61539 3.06202 8.61539H8.98448C8.55169 9.36345 8.32452 10.2127 8.32602 11.0769C8.32519 11.7755 8.47341 12.4662 8.76079 13.1029C9.04816 13.7396 9.46807 14.3077 9.99248 14.7692H8.60048C8.01418 14.7687 7.43803 14.9222 6.92969 15.2144C6.42134 15.5065 5.99864 15.927 5.70387 16.4338C3.7211 16.0449 2.51618 15.0782 1.81464 13.992C0.941406 12.64 0.941406 11.2431 0.941406 11.0012V10.736ZM17.8977 14.7692C18.484 14.7687 19.0602 14.9222 19.5685 15.2144C20.0769 15.5065 20.4996 15.927 20.7943 16.4338C22.7771 16.0449 23.982 15.0782 24.6836 13.992C25.5568 12.64 25.5568 11.2431 25.5568 11.0012V10.7366C25.5569 10.4581 25.5021 10.1823 25.3955 9.9249C25.289 9.66755 25.1328 9.4337 24.9359 9.23672C24.739 9.03973 24.5052 8.88348 24.2478 8.77687C23.9905 8.67026 23.7147 8.61539 23.4362 8.61539H17.5137C17.9465 9.36345 18.1737 10.2127 18.1722 11.0769C18.173 11.7755 18.0248 12.4662 17.7374 13.1029C17.45 13.7396 17.0301 14.3077 16.5057 14.7692H17.8977ZM16.9414 11.0769C16.9414 12.0562 16.5524 12.9953 15.86 13.6878C15.1675 14.3802 14.2284 14.7692 13.2491 14.7692C12.2698 14.7692 11.3307 14.3802 10.6382 13.6878C9.9458 12.9953 9.55679 12.0562 9.55679 11.0769C9.55679 10.0977 9.9458 9.15851 10.6382 8.46607C11.3307 7.77363 12.2698 7.38462 13.2491 7.38462C14.2284 7.38462 15.1675 7.77363 15.86 8.46607C16.5524 9.15851 16.9414 10.0977 16.9414 11.0769ZM6.47987 18.1206C6.47987 17.5582 6.70329 17.0188 7.10098 16.6211C7.49867 16.2234 8.03806 16 8.60048 16H17.8977C18.4601 16 18.9995 16.2234 19.3972 16.6211C19.7949 17.0188 20.0183 17.5582 20.0183 18.1206V18.3858C20.0183 18.6283 20.0183 20.0246 19.1451 21.3766C18.2325 22.7895 16.4694 24 13.2491 24C10.0288 24 8.26571 22.7895 7.3531 21.3766C6.47987 20.0246 6.47987 18.6277 6.47987 18.3858V18.1206Z\"/>\r\n </mask>\r\n <path d=\"M7.71064 7.38462C8.19552 7.38462 8.67565 7.28911 9.12362 7.10356C9.57159 6.918 9.97863 6.64603 10.3215 6.30316C10.6644 5.9603 10.9363 5.55326 11.1219 5.10529C11.3074 4.65732 11.4029 4.17719 11.4029 3.69231C11.4029 3.20743 11.3074 2.72729 11.1219 2.27932C10.9363 1.83135 10.6644 1.42431 10.3215 1.08145C9.97863 0.73859 9.57159 0.466616 9.12362 0.28106C8.67565 0.0955043 8.19552 -7.22529e-09 7.71064 0C6.73138 1.45921e-08 5.79222 0.38901 5.09978 1.08145C4.40734 1.77389 4.01833 2.71305 4.01833 3.69231C4.01833 4.67157 4.40734 5.61072 5.09978 6.30316C5.79222 6.99561 6.73138 7.38462 7.71064 7.38462ZM18.7876 7.38462C19.2724 7.38462 19.7526 7.28911 20.2005 7.10356C20.6485 6.918 21.0556 6.64603 21.3984 6.30316C21.7413 5.9603 22.0133 5.55326 22.1988 5.10529C22.3844 4.65732 22.4799 4.17719 22.4799 3.69231C22.4799 3.20743 22.3844 2.72729 22.1988 2.27932C22.0133 1.83135 21.7413 1.42431 21.3984 1.08145C21.0556 0.73859 20.6485 0.466616 20.2005 0.28106C19.7526 0.0955043 19.2724 -7.22529e-09 18.7876 0C17.8083 1.45921e-08 16.8691 0.38901 16.1767 1.08145C15.4843 1.77389 15.0953 2.71305 15.0953 3.69231C15.0953 4.67157 15.4843 5.61072 16.1767 6.30316C16.8691 6.99561 17.8083 7.38462 18.7876 7.38462ZM0.941406 10.736C0.941406 10.4575 0.996258 10.1818 1.10283 9.92448C1.2094 9.66719 1.3656 9.43342 1.56252 9.2365C1.75944 9.03958 1.99321 8.88338 2.2505 8.77681C2.50778 8.67024 2.78354 8.61539 3.06202 8.61539H8.98448C8.55169 9.36345 8.32452 10.2127 8.32602 11.0769C8.32519 11.7755 8.47341 12.4662 8.76079 13.1029C9.04816 13.7396 9.46807 14.3077 9.99248 14.7692H8.60048C8.01418 14.7687 7.43803 14.9222 6.92969 15.2144C6.42134 15.5065 5.99864 15.927 5.70387 16.4338C3.7211 16.0449 2.51618 15.0782 1.81464 13.992C0.941406 12.64 0.941406 11.2431 0.941406 11.0012V10.736ZM17.8977 14.7692C18.484 14.7687 19.0602 14.9222 19.5685 15.2144C20.0769 15.5065 20.4996 15.927 20.7943 16.4338C22.7771 16.0449 23.982 15.0782 24.6836 13.992C25.5568 12.64 25.5568 11.2431 25.5568 11.0012V10.7366C25.5569 10.4581 25.5021 10.1823 25.3955 9.9249C25.289 9.66755 25.1328 9.4337 24.9359 9.23672C24.739 9.03973 24.5052 8.88348 24.2478 8.77687C23.9905 8.67026 23.7147 8.61539 23.4362 8.61539H17.5137C17.9465 9.36345 18.1737 10.2127 18.1722 11.0769C18.173 11.7755 18.0248 12.4662 17.7374 13.1029C17.45 13.7396 17.0301 14.3077 16.5057 14.7692H17.8977ZM16.9414 11.0769C16.9414 12.0562 16.5524 12.9953 15.86 13.6878C15.1675 14.3802 14.2284 14.7692 13.2491 14.7692C12.2698 14.7692 11.3307 14.3802 10.6382 13.6878C9.9458 12.9953 9.55679 12.0562 9.55679 11.0769C9.55679 10.0977 9.9458 9.15851 10.6382 8.46607C11.3307 7.77363 12.2698 7.38462 13.2491 7.38462C14.2284 7.38462 15.1675 7.77363 15.86 8.46607C16.5524 9.15851 16.9414 10.0977 16.9414 11.0769ZM6.47987 18.1206C6.47987 17.5582 6.70329 17.0188 7.10098 16.6211C7.49867 16.2234 8.03806 16 8.60048 16H17.8977C18.4601 16 18.9995 16.2234 19.3972 16.6211C19.7949 17.0188 20.0183 17.5582 20.0183 18.1206V18.3858C20.0183 18.6283 20.0183 20.0246 19.1451 21.3766C18.2325 22.7895 16.4694 24 13.2491 24C10.0288 24 8.26571 22.7895 7.3531 21.3766C6.47987 20.0246 6.47987 18.6277 6.47987 18.3858V18.1206Z\" stroke=\"#98A2B3\" stroke-width=\"3\" mask=\"url(#path-6-inside-2_707_13106)\"/>\r\n </svg></span><span class=\"left-card-count ms-1 mt-2\">{{getCardData?.potentialBuyers?.potentialBuyersGroup?.count ? getCardData?.potentialBuyers?.potentialBuyersGroup?.count.toLocaleString('en-IN'):'--'}}</span> <span class=\"left-card-count-header ms-1\">Group</span></div>\r\n <div class=\"text-start ms-15 mb-3\"><span class=\"badge badge-light-default week-font\">{{getCardData?.potentialBuyers?.potentialBuyersGroup?.ageGroup ? getCardData?.potentialBuyers?.potentialBuyersGroup?.ageGroup:'--'}} age</span></div>\r\n \r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.potentialBuyers?.potentialBuyersGroup?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.potentialBuyers?.potentialBuyersGroup?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\">\r\n <span *ngIf=\"getCardGraphData?.potentialBuyers?.potentialBuyersGroup?.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"getCardGraphData?.potentialBuyers?.potentialBuyersGroup?.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.potentialBuyers?.potentialBuyersGroup?.PreviousData ? getCardGraphData?.potentialBuyers?.potentialBuyersGroup?.PreviousData:'--'}}%</span>\r\n <span\r\n class=\"week-font\"> vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n \r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-3 px-0\">\r\n <div class=\"card-body p-0\">\r\n <div class=\"text-center mt-7 mb-3\"><span class=\"left-card-count mt-2\">{{getCardData?.potentialBuyers?.potentialBuyersPersons?.count ? getCardData?.potentialBuyers?.potentialBuyersPersons?.count.toLocaleString('en-IN'):'--'}}</span> <span class=\"left-card-count-header ms-1\">Persons</span></div>\r\n <div class=\"text-center mb-3\"><span class=\"badge badge-light-default week-font\">{{getCardData?.potentialBuyers?.potentialBuyersSingle?.ageGroup ? getCardData.potentialBuyers?.potentialBuyersSingle?.ageGroup:'--'}} age</span>\r\n </div>\r\n \r\n </div>\r\n <div class=\"card-footer text-center p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2 ms-2\"><span class=\"percent-value\"></span><span\r\n class=\"ms-2 week-font\"> Avg. Group size</span>\r\n \r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M6 12L10 8L6 4\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div> -->\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n\r\n </div>\r\n <div class=\"col-md-5\">\r\n <div class=\"card mb-3\">\r\n <div class=\"card-header border-0 pt-3 ps-5\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text\">Conversion Funnel \r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" \r\n placement=\"top\" \r\n ngbTooltip=\"Total opportunity of sales conversion versus total walkins\">\r\n <g clip-path=\"url(#clip0_1432_80035)\">\r\n <path d=\"M8.00065 10.6666V7.99992M8.00065 5.33325H8.00732M14.6673 7.99992C14.6673 11.6818 11.6826 14.6666 8.00065 14.6666C4.31875 14.6666 1.33398 11.6818 1.33398 7.99992C1.33398 4.31802 4.31875 1.33325 8.00065 1.33325C11.6826 1.33325 14.6673 4.31802 14.6673 7.99992Z\" stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1432_80035\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"text-sub mb-2\">{{headerData?.date?.startDate | date:'dd MMM, yyyy'}} \u2013 {{headerData?.date?.endDate | date:'dd MMM, yyyy'}}</span>\r\n </h3>\r\n \r\n </div>\r\n\r\n <div class=\"card-body p-0\" >\r\n <div *ngIf=\"heatloading\" class=\"row loader d-flex justify-content-center align-items-center h-275px\">\r\n <div class=\"shimmer pt-0\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"heatnoData\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this conversion funnel</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!heatloading && !heatnoData\" class=\"text-center mb-3\" id=\"chartdiv\"></div>\r\n </div>\r\n </div>\r\n \r\n <div *ngIf=\"mpaloading && storeIdarray?.length > 1 || mapnoData && storeIdarray?.length > 1 || !storeIdarray?.length\" class=\"card\">\r\n <div class=\"card-header border-0 pt-3 ps-7 pe-0\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text\" >Explore</span> \r\n </h3>\r\n \r\n </div>\r\n <div *ngIf=\"mpaloading\" class=\"row loader d-flex justify-content-center align-items-center h-225px\">\r\n <div class=\"shimmer pt-0\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"mapnoData\" class=\"row px-3\">\r\n <div class=\"col-md-12\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-map\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this Store map</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!mpaloading && !mapnoData && storeIdarray?.length > 1\" class=\"card\">\r\n <div class=\"card-header border-0 pt-3 ps-7 pe-0\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text\" >Explore</span> \r\n </h3>\r\n <div class=\"card-toolbar mt-0\">\r\n \r\n <button *ngIf=\"!mpaloading && !mapnoData\" type=\"button\" (click)=\"exporeView()\"\r\n class=\"btn me-8 btn-light-primary1 rounded-3 text-nowrap border-val\">\r\n <span class=\"ms-2\">Explore</span>\r\n </button>\r\n </div>\r\n \r\n </div>\r\n \r\n <div *ngIf=\"!mapnoData\" class=\"card-body col-md-12 pt-0 pb-5 ps-7\">\r\n <div id=\"map\" class=\"w-100\" ></div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"storeIdarray?.length === 1\" class=\"card pb-2\">\r\n <div class=\"card-header border-0 pt-3 ps-5 pe-0\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text\">Recap Video \r\n <svg placement=\"right\"\r\n ngbTooltip=\"A quick recap of the store activity along with the avg tech infrastructure downtime status\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1432_80035)\">\r\n <path d=\"M8.00065 10.6666V7.99992M8.00065 5.33325H8.00732M14.6673 7.99992C14.6673 11.6818 11.6826 14.6666 8.00065 14.6666C4.31875 14.6666 1.33398 11.6818 1.33398 7.99992C1.33398 4.31802 4.31875 1.33325 8.00065 1.33325C11.6826 1.33325 14.6673 4.31802 14.6673 7.99992Z\" stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1432_80035\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n \r\n \r\n </span>\r\n \r\n <span class=\"text-sub mb-2\">Dated: {{headerData?.date?.endDate | date:' dd MMM,yyyy'}}</span>\r\n </h3>\r\n <div class=\"card-toolbar mt-0\">\r\n <button type=\"button\" \r\n class=\"btn btn-default btn-outline btn-outline-default rounded-3 text-nowrap border-val text-start\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"14\" viewBox=\"0 0 16 14\" fill=\"none\">\r\n <g id=\"Group\">\r\n <path id=\"Vector\" d=\"M9.51953 0.333984C10.3958 0.333984 11.2331 0.513477 11.9974 0.838974C12.7904 1.17653 13.5039 1.67214 14.1016 2.28697C14.6979 2.90046 15.1797 3.6345 15.5078 4.45293C15.8242 5.23922 15.9987 6.10051 15.9987 7.00065C15.9987 7.90213 15.8242 8.76343 15.5078 9.54971C15.1797 10.3655 14.6979 11.0995 14.1003 11.7143C13.5039 12.3278 12.7904 12.8234 11.9948 13.161C11.2305 13.4865 10.3932 13.666 9.51823 13.666C8.64193 13.666 7.80469 13.4865 7.04036 13.161C6.2474 12.8234 5.53385 12.3278 4.9375 11.7143L4.9362 11.713C4.33854 11.0982 3.85807 10.3641 3.52995 9.54971C3.42839 9.29655 3.34115 9.03668 3.26953 8.77013C3.40495 8.78352 3.54297 8.79022 3.68229 8.79022C3.94661 8.79022 4.20443 8.76611 4.45573 8.71922C4.4974 8.84782 4.54297 8.97507 4.59245 9.09964C4.86198 9.76939 5.25781 10.3722 5.75 10.8785C6.24219 11.3848 6.82943 11.792 7.47917 12.0693C8.10547 12.3359 8.79427 12.4845 9.51823 12.4845C10.2422 12.4845 10.9297 12.3372 11.5573 12.0693C12.2083 11.792 12.7943 11.3848 13.2865 10.8785C13.7786 10.3722 14.1745 9.76805 14.444 9.09964C14.7031 8.45534 14.8477 7.74675 14.8477 7.00199C14.8477 6.25723 14.7044 5.54998 14.444 4.90434C14.1745 4.23459 13.7786 3.63182 13.2865 3.12549C12.7943 2.61916 12.207 2.21196 11.5573 1.93468C10.931 1.66812 10.2422 1.51944 9.51823 1.51944C8.79427 1.51944 8.10677 1.66678 7.47917 1.93468C7.42318 1.95879 7.36719 1.98424 7.3125 2.00969C7.09896 1.6641 6.84115 1.35066 6.54557 1.07874C6.70703 0.993016 6.8724 0.913986 7.04036 0.841653C7.80729 0.513477 8.64323 0.333984 9.51953 0.333984ZM8.77604 3.83141C8.77604 3.66799 8.84115 3.52064 8.94401 3.41348C9.04818 3.30632 9.19141 3.24069 9.35026 3.24069C9.50911 3.24069 9.65234 3.30632 9.75651 3.41348C9.86068 3.52064 9.92448 3.66799 9.92448 3.83141V6.94171L12.1836 8.32005C12.319 8.4031 12.4102 8.53571 12.4466 8.68172C12.4831 8.82772 12.4661 8.98846 12.3854 9.12777V9.12911C12.3047 9.26842 12.1758 9.36218 12.0339 9.39969C11.8919 9.43719 11.7357 9.41978 11.6003 9.33673H11.599L9.07161 7.79497C8.98438 7.74541 8.91276 7.67308 8.86068 7.58735C8.80729 7.4976 8.77604 7.39178 8.77604 7.27927V3.83141Z\" fill=\"#667085\"/>\r\n <path id=\"Vector_2\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M3.51302 0.687622C5.45312 0.687622 7.02604 2.30573 7.02604 4.30158C7.02604 6.29743 5.45312 7.91554 3.51302 7.91554C1.57292 7.91554 0 6.29743 0 4.30158C0 2.30573 1.57292 0.687622 3.51302 0.687622ZM3.51302 6.37378L5.39844 3.97608H4.22786V2.70088H2.79818V3.97608H1.6276L3.51302 6.37378Z\" fill=\"#F04438\"/>\r\n </g>\r\n </svg>\r\n <span class=\"ms-2\">{{getRecapVideoData?.downTime ?? '--'}} Mins</span>\r\n </button>\r\n <button type=\"button\" \r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\">\r\n <svg *ngIf=\"getRecapVideoData?.health ==='GOOD'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g id=\"Frame\">\r\n <path id=\"Vector\" d=\"M13.4349 2.5C14.8238 2.5 15.9871 3.01389 16.9249 4.04167C17.8627 5.06944 18.3313 6.29167 18.3307 7.70833C18.3307 7.95833 18.3168 8.205 18.2891 8.44833C18.2613 8.69167 18.2127 8.93111 18.1432 9.16667H12.9349L11.5182 7.04167C11.4488 6.93056 11.3516 6.84028 11.2266 6.77083C11.1016 6.70139 10.9696 6.66667 10.8307 6.66667C10.6502 6.66667 10.4868 6.72222 10.3407 6.83333C10.1946 6.94444 10.0941 7.08333 10.0391 7.25L8.91406 10.625L8.1849 9.54167C8.11545 9.43056 8.01823 9.34028 7.89323 9.27083C7.76823 9.20139 7.63628 9.16667 7.4974 9.16667H1.85156C1.78212 8.93056 1.73351 8.69083 1.70573 8.4475C1.67795 8.20417 1.66406 7.96472 1.66406 7.72917C1.66406 6.29861 2.12934 5.06944 3.0599 4.04167C3.99045 3.01389 5.15017 2.5 6.53906 2.5C7.20573 2.5 7.83434 2.63194 8.4249 2.89583C9.01545 3.15972 9.53962 3.52778 9.9974 4C10.4418 3.52778 10.9593 3.15972 11.5499 2.89583C12.1405 2.63194 12.7688 2.5 13.4349 2.5ZM9.9974 17.5C9.7474 17.5 9.50767 17.4547 9.27823 17.3642C9.04878 17.2736 8.84406 17.1383 8.66406 16.9583L3.08073 11.3542C2.9974 11.2708 2.92101 11.1875 2.85156 11.1042C2.78212 11.0208 2.71267 10.9306 2.64323 10.8333H7.03906L8.45573 12.9583C8.52517 13.0694 8.6224 13.1597 8.7474 13.2292C8.8724 13.2986 9.00434 13.3333 9.14323 13.3333C9.32378 13.3333 9.49045 13.2778 9.64323 13.1667C9.79601 13.0556 9.90017 12.9167 9.95573 12.75L11.0807 9.375L11.7891 10.4583C11.8724 10.5694 11.9766 10.6597 12.1016 10.7292C12.2266 10.7986 12.3585 10.8333 12.4974 10.8333H17.3307L17.1224 11.0833L16.9141 11.3333L11.3099 16.9583C11.1293 17.1389 10.928 17.2744 10.7057 17.365C10.4835 17.4556 10.2474 17.5006 9.9974 17.5Z\" fill=\"#12B76A\"/>\r\n </g>\r\n </svg>\r\n <svg *ngIf=\"getRecapVideoData?.health ==='AVERAGE'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g id=\"Frame\">\r\n <path id=\"Vector\" d=\"M13.4349 2.5C14.8238 2.5 15.9871 3.01389 16.9249 4.04167C17.8627 5.06944 18.3313 6.29167 18.3307 7.70833C18.3307 7.95833 18.3168 8.205 18.2891 8.44833C18.2613 8.69167 18.2127 8.93111 18.1432 9.16667H12.9349L11.5182 7.04167C11.4488 6.93056 11.3516 6.84028 11.2266 6.77083C11.1016 6.70139 10.9696 6.66667 10.8307 6.66667C10.6502 6.66667 10.4868 6.72222 10.3407 6.83333C10.1946 6.94444 10.0941 7.08333 10.0391 7.25L8.91406 10.625L8.1849 9.54167C8.11545 9.43056 8.01823 9.34028 7.89323 9.27083C7.76823 9.20139 7.63628 9.16667 7.4974 9.16667H1.85156C1.78212 8.93056 1.73351 8.69083 1.70573 8.4475C1.67795 8.20417 1.66406 7.96472 1.66406 7.72917C1.66406 6.29861 2.12934 5.06944 3.0599 4.04167C3.99045 3.01389 5.15017 2.5 6.53906 2.5C7.20573 2.5 7.83434 2.63194 8.4249 2.89583C9.01545 3.15972 9.53962 3.52778 9.9974 4C10.4418 3.52778 10.9593 3.15972 11.5499 2.89583C12.1405 2.63194 12.7688 2.5 13.4349 2.5ZM9.9974 17.5C9.7474 17.5 9.50767 17.4547 9.27823 17.3642C9.04878 17.2736 8.84406 17.1383 8.66406 16.9583L3.08073 11.3542C2.9974 11.2708 2.92101 11.1875 2.85156 11.1042C2.78212 11.0208 2.71267 10.9306 2.64323 10.8333H7.03906L8.45573 12.9583C8.52517 13.0694 8.6224 13.1597 8.7474 13.2292C8.8724 13.2986 9.00434 13.3333 9.14323 13.3333C9.32378 13.3333 9.49045 13.2778 9.64323 13.1667C9.79601 13.0556 9.90017 12.9167 9.95573 12.75L11.0807 9.375L11.7891 10.4583C11.8724 10.5694 11.9766 10.6597 12.1016 10.7292C12.2266 10.7986 12.3585 10.8333 12.4974 10.8333H17.3307L17.1224 11.0833L16.9141 11.3333L11.3099 16.9583C11.1293 17.1389 10.928 17.2744 10.7057 17.365C10.4835 17.4556 10.2474 17.5006 9.9974 17.5Z\" fill=\"#FACC15\"/>\r\n </g>\r\n </svg>\r\n <svg *ngIf=\"getRecapVideoData?.health ==='BAD'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g id=\"Frame\">\r\n <path id=\"Vector\" d=\"M13.4349 2.5C14.8238 2.5 15.9871 3.01389 16.9249 4.04167C17.8627 5.06944 18.3313 6.29167 18.3307 7.70833C18.3307 7.95833 18.3168 8.205 18.2891 8.44833C18.2613 8.69167 18.2127 8.93111 18.1432 9.16667H12.9349L11.5182 7.04167C11.4488 6.93056 11.3516 6.84028 11.2266 6.77083C11.1016 6.70139 10.9696 6.66667 10.8307 6.66667C10.6502 6.66667 10.4868 6.72222 10.3407 6.83333C10.1946 6.94444 10.0941 7.08333 10.0391 7.25L8.91406 10.625L8.1849 9.54167C8.11545 9.43056 8.01823 9.34028 7.89323 9.27083C7.76823 9.20139 7.63628 9.16667 7.4974 9.16667H1.85156C1.78212 8.93056 1.73351 8.69083 1.70573 8.4475C1.67795 8.20417 1.66406 7.96472 1.66406 7.72917C1.66406 6.29861 2.12934 5.06944 3.0599 4.04167C3.99045 3.01389 5.15017 2.5 6.53906 2.5C7.20573 2.5 7.83434 2.63194 8.4249 2.89583C9.01545 3.15972 9.53962 3.52778 9.9974 4C10.4418 3.52778 10.9593 3.15972 11.5499 2.89583C12.1405 2.63194 12.7688 2.5 13.4349 2.5ZM9.9974 17.5C9.7474 17.5 9.50767 17.4547 9.27823 17.3642C9.04878 17.2736 8.84406 17.1383 8.66406 16.9583L3.08073 11.3542C2.9974 11.2708 2.92101 11.1875 2.85156 11.1042C2.78212 11.0208 2.71267 10.9306 2.64323 10.8333H7.03906L8.45573 12.9583C8.52517 13.0694 8.6224 13.1597 8.7474 13.2292C8.8724 13.2986 9.00434 13.3333 9.14323 13.3333C9.32378 13.3333 9.49045 13.2778 9.64323 13.1667C9.79601 13.0556 9.90017 12.9167 9.95573 12.75L11.0807 9.375L11.7891 10.4583C11.8724 10.5694 11.9766 10.6597 12.1016 10.7292C12.2266 10.7986 12.3585 10.8333 12.4974 10.8333H17.3307L17.1224 11.0833L16.9141 11.3333L11.3099 16.9583C11.1293 17.1389 10.928 17.2744 10.7057 17.365C10.4835 17.4556 10.2474 17.5006 9.9974 17.5Z\" fill=\"#F04438\"/>\r\n </g>\r\n </svg>\r\n <span class=\"ms-2\">{{getRecapVideoData?.health ?? '--'}}</span>\r\n </button>\r\n <!-- <button type=\"button\" (click)=\"cameraView()\"\r\n class=\"btn mx-2 btn-light-primary1 rounded-3 text-nowrap border-val\">\r\n <span class=\"ms-2\">Live View</span>\r\n </button> -->\r\n </div>\r\n \r\n </div>\r\n <div *ngIf=\"recaplaoding\" class=\"row loader d-flex justify-content-center align-items-center h-225px\">\r\n <div class=\"shimmer pt-0\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"recapnoData\" class=\"row px-3\">\r\n <div class=\"col-md-12\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-map-recap\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this Recap video</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!recaplaoding && !recapnoData\" class=\"card-body p-0\">\r\n <div class=\"row mx-3\">\r\n \r\n <div class=\"carousel\">\r\n <div class=\"carousel-inner\">\r\n <div\r\n class=\"carousel-item\"\r\n *ngFor=\"let group of recapsGrouped; let i = index\"\r\n [class.active]=\"i === currentIndex\"\r\n >\r\n <div class=\"row\">\r\n <div *ngFor=\"let pair of group\" [ngClass]=\"colValue\">\r\n <img [src]=\"pair.thumbImage\"\r\n (click)=\"videoClick(pair)\"\r\n class=\"image-thumb mb-8 d-block w-100 cursor-pointer\"\r\n alt=\"Image {{ i + 1 }}\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <!-- Conditionally display Previous button -->\r\n <button class=\"carousel-control-prev\" *ngIf=\"currentIndex > 0\" (click)=\"prevSlide()\">\r\n <span class=\"carousel-control-prev-icon\"></span>\r\n </button>\r\n \r\n <!-- Conditionally display Next button -->\r\n <button class=\"carousel-control-next\" *ngIf=\"currentIndex < recapsGrouped.length - 1\" (click)=\"nextSlide()\">\r\n <span class=\"carousel-control-next-icon\"></span>\r\n </button>\r\n \r\n <!-- Navigation Dots -->\r\n <div *ngIf=\"recapsGrouped.length > 1\" class=\"row\">\r\n <ul class=\"carousel-indicators\">\r\n <li *ngFor=\"let group of recapsGrouped; let i = index\"\r\n [class.active]=\"i === currentIndex\"\r\n (click)=\"goToSlide(i)\">\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n </div>\r\n \r\n \r\n <!-- <video controls autoplay class=\"recap-img p-3\" [src]=\"getRecapData?.videoURL\"> -->\r\n <!-- <source type=\"video/mp4\"> -->\r\n <!-- <source [src]=\"getRecapData?.videoURL\" type=\"video/ogg\"> -->\r\n <!-- </video> -->\r\n <!-- <div #mapContainer style=\"height:230px;\"></div> -->\r\n <!-- <div class=\"col-md-6 mb-3\"><img src=\"assets/tango/Images/recap.svg\" alt=\"\" class=\"recap-img\"></div>\r\n <div class=\"col-md-6 mb-3\"><img src=\"assets/tango/Images/recap.svg\" alt=\"\" class=\"recap-img\"></div> -->\r\n\r\n </div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n <div class=\"col-md-12 mt-3\">\r\n <lib-traffic-charts class=\"my-2\"></lib-traffic-charts>\r\n \r\n <lib-traffic-card-charts class=\"my-2\"></lib-traffic-card-charts>\r\n <lib-image-doc *ngIf=\"storeIdarray?.length === 1\" class=\"my-2\"></lib-image-doc>\r\n </div>\r\n <div *ngIf=\"storeIdarray?.length > 1\" class=\"col-md-6 mt-3\">\r\n <div class=\"card h-100\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text mb-2\">Performance Matrix\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" placement=\"right\"\r\n ngbTooltip=\"Store performance based on metrics selected\">\r\n <g clip-path=\"url(#clip0_1432_80035)\">\r\n <path\r\n d=\"M8.00065 10.6666V7.99992M8.00065 5.33325H8.00732M14.6673 7.99992C14.6673 11.6818 11.6826 14.6666 8.00065 14.6666C4.31875 14.6666 1.33398 11.6818 1.33398 7.99992C1.33398 4.31802 4.31875 1.33325 8.00065 1.33325C11.6826 1.33325 14.6673 4.31802 14.6673 7.99992Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1432_80035\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"text-sub mb-2\">{{headerData?.date?.startDate | date:'dd MMM, yyyy'}} \u2013 {{headerData?.date?.endDate | date:'dd MMM, yyyy'}}</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n \r\n </div>\r\n </div>\r\n <div class=\"row mx-3 align-items-center w-75\">\r\n <div class=\"d-flex align-items-center ms-3\">\r\n <select class=\"form-select-sm form-select me-2 dropselect\" [(ngModel)]=\"footfallValue\" (change)=\"onValueChange($event)\">\r\n <option *ngFor=\"let obj of getFilteredFootfallDatasets()\" [id]=\"obj.label\" [value]=\"obj.value\">{{obj.label}}</option>\r\n </select>\r\n <span class=\"mx-2\">Vs</span>\r\n <select class=\"form-select-sm form-select ms-2 dropselect\" [(ngModel)]=\"bounceValue\" (change)=\"onBounceChange($event)\">\r\n <option *ngFor=\"let obj of getFilteredBounceDatasets()\" [id]=\"obj.label\" [value]=\"obj.value\">{{obj.label}}</option>\r\n\r\n </select>\r\n </div>\r\n </div>\r\n <div *ngIf=\"performanceLoading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"performancenoData\" class=\"row\">\r\n <div class=\"col-lg-12 mt-20 mb-6\">\r\n <div class=\" mt-20 card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata-table\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this {{footfallLabel | titlecase}} vs {{bounceLabel | titlecase}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!performanceLoading && !performancenoData\" class=\"card-body\">\r\n \r\n <div class=\"quadrant-chart z-1\">\r\n <div class=\"axis-labels\">\r\n <!-- X Axis Label -->\r\n <div class=\"x-axis-label\">\r\n <span>{{bounceLabel | titlecase}} -></span>\r\n </div>\r\n <!-- Y Axis Label -->\r\n <div class=\"y-axis-label\">\r\n <span>{{footfallLabel | titlecase}} -></span>\r\n </div>\r\n </div>\r\n <!-- Top Left Quadrant -->\r\n <div class=\"quadrant\" id=\"q1\">\r\n <span class=\"label\">High <span *ngIf=\"footfallLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"footfallLabel !=='Bounced Footfall'\">{{footfallLabel | titlecase}}</span>, Low <span\r\n *ngIf=\"bounceLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"bounceLabel !=='Bounced Footfall'\">{{bounceLabel | titlecase}}</span></span>\r\n </div>\r\n \r\n <!-- Top Right Quadrant -->\r\n <div class=\"quadrant\" id=\"q2\">\r\n <span class=\"label\">High <span *ngIf=\"footfallLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"footfallLabel !=='Bounced Footfall'\">{{footfallLabel | titlecase}}</span>, High <span\r\n *ngIf=\"bounceLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"bounceLabel !=='Bounced Footfall'\">{{bounceLabel | titlecase}}</span></span>\r\n </div>\r\n \r\n <!-- Bottom Left Quadrant -->\r\n <div class=\"quadrant\" id=\"q3\">\r\n <span class=\"label\">Low <span *ngIf=\"footfallLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"footfallLabel !=='Bounced Footfall'\">{{footfallLabel | titlecase}}</span>, Low <span\r\n *ngIf=\"bounceLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"bounceLabel !=='Bounced Footfall'\">{{bounceLabel | titlecase}}</span></span>\r\n </div>\r\n \r\n <!-- Bottom Right Quadrant -->\r\n <div class=\"quadrant\" id=\"q4\">\r\n <span class=\"label\">Low <span *ngIf=\"footfallLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"footfallLabel !=='Bounced Footfall'\">{{footfallLabel | titlecase}}</span>, High <span\r\n *ngIf=\"bounceLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"bounceLabel !=='Bounced Footfall'\">{{bounceLabel| titlecase}}</span></span>\r\n </div>\r\n <div *ngFor=\"let point of points\" class=\"point\" [ngStyle]=\"{'top': point.top + '%', 'left': point.left + '%'}\">\r\n <div class=\"text-center\" (click)=\"toggleTooltip(point.name)\">\r\n <div class=\"dot\" ></div>\r\n <!-- Clickable label that toggles the tooltip -->\r\n <div class=\"label z-1 mt-4\" style=\"font-size: 10px !important;\" >\r\n {{ point.name }}\r\n </div>\r\n </div>\r\n <!-- Custom Tooltip Popup -->\r\n <div class=\"tooltip-popup z-5\" *ngIf=\"activeTooltip === point.name\">\r\n <div class=\"tooltip-content\">\r\n <h3 class=\"text-white cursor-pointer\" (click)=\"storeView(point.storeId)\">{{ point.name }}</h3>\r\n <p>Avg {{footfallLabel | titlecase}}: {{ point.avgFootfall }}</p>\r\n <p class=\"my-2\">Open Time: <strong>{{ point.openTime }}</strong></p>\r\n <p>Close Time: <strong>{{ point.closeTime }}</strong></p>\r\n </div>\r\n <div class=\"tooltip-arrow\"></div>\r\n </div>\r\n </div>\r\n <!-- Add more points here -->\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"storeIdarray?.length > 1\" class=\"col-md-6 mt-3\">\r\n <div class=\"card\">\r\n <div class=\"card-header px-5 border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text mb-2\">Zone Dwell Time Split \r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"\r\n placement=\"right\"\r\n ngbTooltip=\"Overall zone concentration and average dwell time across selected stores\">\r\n <g clip-path=\"url(#clip0_1432_80035)\">\r\n <path\r\n d=\"M8.00065 10.6666V7.99992M8.00065 5.33325H8.00732M14.6673 7.99992C14.6673 11.6818 11.6826 14.6666 8.00065 14.6666C4.31875 14.6666 1.33398 11.6818 1.33398 7.99992C1.33398 4.31802 4.31875 1.33325 8.00065 1.33325C11.6826 1.33325 14.6673 4.31802 14.6673 7.99992Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1432_80035\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"text-sub mb-2\">{{headerData?.date?.startDate | date:'dd MMM, yyyy'}} \u2013 {{headerData?.date?.endDate | date:'dd MMM, yyyy'}}</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <button type=\"button\" (click)=\"goToZone()\"\r\n class=\"btn btn-light-primary1 rounded-3 text-nowrap border-val\">\r\n <span class=\"ms-2\">Go to Zones</span>\r\n </button>\r\n \r\n </div>\r\n </div>\r\n <div calss=\"card-body\">\r\n <div class=\"image-container position-relative\">\r\n <img src=\"assets/tango/Images/zone-img.svg\" alt=\"Store Layout\" class=\"px-5 img-src my-3 background-image\" />\r\n <!-- <img *ngIf=\"zoneDwellTimeSplitData[0]?.zoneName ==='Overall Store'\" src=\"assets/tango/Images/zone-img1.svg\" alt=\"Store Layout\" class=\"px-5 img-src my-3 background-image\" /> -->\r\n <!-- <div class=\"centered\">Centered</div> -->\r\n <!-- <div class=\"overlay-content\" *ngFor=\"let point of zoneDwellTimeSplitData\"> -->\r\n <div *ngIf=\"zoneDwellTimeSplitData[0]?.zoneName !=='Overall Store'\" class=\"top-zone\">\r\n <div class=\"text-center text-zone\">{{zoneDwellTimeSplitData[0]?.zoneName ? zoneDwellTimeSplitData[0]?.zoneName :'Front'}}</div>\r\n <span class=\"text-zone-val\"> Conc: {{ zoneDwellTimeSplitData[0]?.concentrationRate ? zoneDwellTimeSplitData[0]?.concentrationRate:'--' }}% </span>\r\n <span class=\"text-zone-val\">Dwell time: {{ zoneDwellTimeSplitData[0]?.dwellTime ? zoneDwellTimeSplitData[0]?.dwellTime :'--' }} Mins</span>\r\n </div>\r\n <div *ngIf=\"zoneDwellTimeSplitData[0]?.zoneName ==='Overall Store'\" class=\"centered-zone\">\r\n <div class=\"text-center text-zone\">{{zoneDwellTimeSplitData[0]?.zoneName ? zoneDwellTimeSplitData[0]?.zoneName :'Front'}}</div>\r\n <span class=\"text-zone-val\"> Conc: {{ zoneDwellTimeSplitData[0]?.concentrationRate ? zoneDwellTimeSplitData[0]?.concentrationRate:'--' }}% </span>\r\n <span class=\"text-zone-val\">Dwell time: {{ zoneDwellTimeSplitData[0]?.dwellTime ? zoneDwellTimeSplitData[0]?.dwellTime:'--' }} Mins</span>\r\n </div>\r\n <div *ngIf=\"zoneDwellTimeSplitData[0]?.zoneName !=='Overall Store'\" class=\"bottom-zone \">\r\n <div class=\"text-center text-zone\">{{zoneDwellTimeSplitData[1]?.zoneName ? zoneDwellTimeSplitData[2]?.zoneName : 'Back'}}</div>\r\n <span class=\"text-zone-val\"> Conc: {{ zoneDwellTimeSplitData[1]?.concentrationRate ? zoneDwellTimeSplitData[2]?.concentrationRate:'--' }}% </span>\r\n <span class=\"text-zone-val\">Dwell time: {{ zoneDwellTimeSplitData[1]?.dwellTime ? zoneDwellTimeSplitData[2]?.dwellTime:'--'}} Mins</span>\r\n </div>\r\n <!-- </div> -->\r\n </div>\r\n <!-- <img class=\"px-5 img-src mb-3\" src=\"assets/tango/Images/zone-img.svg\" alt=\"\"> -->\r\n </div>\r\n <div class=\"card-header px-5 border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text mb-2\">Store Operations\r\n <span > \r\n <svg ngbTooltip=\"Avg store open & close time across the selected stores\" placement=\"top\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" >\r\n <g clip-path=\"url(#clip0_1432_80035)\">\r\n <path\r\n d=\"M8.00065 10.6666V7.99992M8.00065 5.33325H8.00732M14.6673 7.99992C14.6673 11.6818 11.6826 14.6666 8.00065 14.6666C4.31875 14.6666 1.33398 11.6818 1.33398 7.99992C1.33398 4.31802 4.31875 1.33325 8.00065 1.33325C11.6826 1.33325 14.6673 4.31802 14.6673 7.99992Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1432_80035\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </span>\r\n <span class=\"text-sub mb-2\">{{headerData?.date?.startDate | date:'dd MMM, yyyy'}} \u2013 {{headerData?.date?.endDate | date:'dd MMM, yyyy'}}</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <!-- <button type=\"button\"\r\n class=\"btn btn-light-primary1 rounded-3 text-nowrap border-val\">\r\n <span class=\"ms-2\">Go to Trax</span>\r\n </button> -->\r\n </div>\r\n </div>\r\n <div class=\"card-body\">\r\n <div class=\"row\">\r\n <div class=\"col-md-3 text-center mb-3\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\"><!--{{getCardData?.revenue?.value ?? '--'}} -->\r\n <div class=\"my-2\"> <span class=\"left-card-count-title\">{{storeOperationData?.overall?.avgOpenTime\r\n ?storeOperationData?.overall?.avgOpenTime:'--' }}</span></div>\r\n <div class=\"\"><span class=\"sub-header\">Avg. Open Time</span></div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n <div class=\"col-md-6 mt-5 mb-3\">\r\n <svg width=\"326\" height=\"2\" viewBox=\"0 0 326 2\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <line y1=\"0.75\" x2=\"356\" y2=\"0.75\" stroke=\"#D0D5DD\" />\r\n </svg>\r\n </div>\r\n <div class=\"col-md-3 text-center mb-3\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\"><!--{{getCardData?.revenue?.value ?? '--'}} -->\r\n <div class=\"my-2\"> <span class=\"left-card-count-title\">{{storeOperationData?.overall?.avgCloseTime\r\n ?storeOperationData?.overall?.avgCloseTime:'--' }}</span></div>\r\n <div class=\"\"><span class=\"sub-header\">Avg. Close Time</span></div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n <div class=\"col-md-6 mt-3\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"left-card-count-header1 text-decoration-underline cursor-pointer\" (click)=\"storeView(storeOperationData?.topLateOpen?.storeId)\">{{storeOperationData?.topLateOpen?.storeName ?\r\n storeOperationData?.topLateOpen?.storeName :'--'}}</span>\r\n <span class=\"sub-header mt-2\">Top Late Open</span>\r\n </h3>\r\n </div>\r\n <div class=\"card-body p-0 h-75px mt-3 mx-3\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\"><!--{{getCardData?.revenue?.value ?? '--'}} -->\r\n <div class=\"my-1\"> <span\r\n class=\"left-card-count-header1\">{{storeOperationData?.topLateOpen?.avgStoreOpenTime\r\n ?storeOperationData?.topLateOpen?.avgStoreOpenTime:'--' }}</span></div>\r\n <span class=\"sub-header\">Avg. Store Opening Time</span>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n <div class=\"col-md-6 mt-3\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"left-card-count-header1 text-decoration-underline cursor-pointer\" (click)=\"storeView(storeOperationData?.topEarlyClose?.storeId)\">{{storeOperationData?.topEarlyClose?.storeName ?\r\n storeOperationData?.topEarlyClose?.storeName :'--'}}</span>\r\n <span class=\"sub-header mt-2\">Top Early Close</span>\r\n </h3>\r\n </div>\r\n <div class=\"card-body p-0 h-75px mt-3 mx-3\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\"><!--{{getCardData?.revenue?.value ?? '--'}} -->\r\n <div class=\"my-1\"> <span\r\n class=\"left-card-count-header1\">{{storeOperationData?.topEarlyClose?.avgStoreCloseTime\r\n ?storeOperationData?.topEarlyClose?.avgStoreCloseTime:'--' }}</span></div>\r\n <span class=\"sub-header\">Avg. Store Closing Time</span>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 mt-3\">\r\n <div class=\"card mb-5\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text mb-2\">Summary Table</span>\r\n <span class=\"text-sub mb-2\">{{headerData?.date?.startDate | date:'dd MMM, yyyy'}} \u2013 {{headerData?.date?.endDate | date:'dd MMM, yyyy'}}</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input (change)=\"searchData()\" [(ngModel)]=\"searchValue\" type=\"text\" class=\"form-control ps-14 me-2\" autocomplete=\"off\" placeholder=\"Search\" />\r\n <!-- filter Start -->\r\n <!-- <lib-filters [dataObject]=\"dataObject\" (appliedFilters)=\"applyFilters($event)\"></lib-filters> -->\r\n <!-- filter End -->\r\n <!-- Sum Button -->\r\n <section *ngIf=\"(storeIdarray?.length > 1 && headerData?.date?.startDate != headerData?.date?.endDate) && !noData && !loading\">\r\n <button type=\"button\" (click)=\"onValueType('sum')\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"\r\n [ngClass]=\"{'btn-light btn-primary text-white': typeValue === 'sum'}\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n [ngStyle]=\"{'stroke': typeValue === 'sum' ? '#FFFFFF' : '#344054'}\">\r\n <path d=\"M9.99935 4.16675V15.8334M4.16602 10.0001H15.8327\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"ms-2\" [ngClass]=\"{'text-white': typeValue === 'sum'}\">Sum</span>\r\n </button>\r\n </section>\r\n \r\n<!-- Average Button -->\r\n <section *ngIf=\"(storeIdarray?.length > 1 && headerData?.date?.startDate != headerData?.date?.endDate) && !noData && !loading\">\r\n<button type=\"button\" (click)=\"onValueType('average')\"\r\nclass=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"\r\n[ngClass]=\"{'btn-light btn-primary text-white': typeValue === 'average'}\">\r\n<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\r\n [ngStyle]=\"{'stroke': typeValue === 'average' ? '#FFFFFF' : '#101828'}\">\r\n <path d=\"M17.5 17.5H8.33333C5.58333 17.5 4.20833 17.5 3.35417 16.6458C2.5 15.7917 2.5 14.4167 2.5 11.6667V2.5M5 10H5.0075M7.49917 10H7.50583M9.9975 10H10.0042M12.4958 10H12.5033M14.9942 10H15.0017M17.4925 10H17.5\"\r\n stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M5 5.83341C5.56083 4.89841 6.3225 4.16675 7.49417 4.16675C12.4467 4.16675 9.6625 14.1667 14.985 14.1667C16.165 14.1667 16.9217 13.4301 17.5 12.5001\"\r\n stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n</svg>\r\n<span class=\"ms-2\" [ngClass]=\"{'text-white': typeValue === 'average'}\">Average</span>\r\n</button>\r\n</section>\r\n \r\n <button *ngIf=\"!noData && !loading\" type=\"button\" (click)=\"exportXLSX()\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Export</span> </button>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"noData\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata-table\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this summary table</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!noData && !loading\" calss=\"card-body\">\r\n <div class=\"table-responsive\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('storeName')\">Store Name <svg \r\n [ngClass]=\"sortedColumn === 'storeName' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'storeName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('storeId')\">Store ID <svg [ngClass]=\"sortedColumn === 'storeId' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'storeId' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th *ngIf=\"storeIdarray?.length === 1\" class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('date')\">Date <svg [ngClass]=\"sortedColumn === 'date' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'date' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('footfallCount')\">Footfall <svg [ngClass]=\"sortedColumn === 'footfallCount' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'footfallCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('bouncedCount')\">Bounced Footfall<svg [ngClass]=\"sortedColumn === 'bouncedCount' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'bouncedCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('engagersCount')\">Engagers <svg [ngClass]=\"sortedColumn === 'engagersCount' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'engagersCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('missedOpportunityCount')\">Missed Opportunity<svg [ngClass]=\"sortedColumn === 'missedOpportunityCount' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'missedOpportunityCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('potentialBuyersCount')\">Potential Buyers <svg [ngClass]=\"sortedColumn === 'potentialBuyersCount' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'potentialBuyersCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('conversionRate')\">Conversion Rate <svg [ngClass]=\"sortedColumn === 'conversionRate' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'conversionRate' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('avgDwellTime')\">Avg.Dwell Time <svg [ngClass]=\"sortedColumn === 'avgDwellTime' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'avgDwellTime' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('avgInfraDowntime')\">Avg.Infra DownTime <svg [ngClass]=\"sortedColumn === 'avgInfraDowntime' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'avgInfraDowntime' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('below12')\">Below12 <svg [ngClass]=\"sortedColumn === 'below12' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'below12' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('13-19')\">13-19 <svg [ngClass]=\"sortedColumn === '13-19' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === '13-19' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('20-30')\">20-30 <svg [ngClass]=\"sortedColumn === '20-30' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === '20-30' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('31-45')\">31-45 <svg [ngClass]=\"sortedColumn === '31-45' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === '31-45' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('46-59')\">46-59 <svg [ngClass]=\"sortedColumn === '46-59' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === '46-59' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('60 above')\">60 above <svg [ngClass]=\"sortedColumn === '60 above' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === '60 above' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('male')\">Male <svg [ngClass]=\"sortedColumn === 'male' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'male' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('female')\">Female <svg \r\n [ngClass]=\"sortedColumn === 'female' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'female' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let obj of getSummaryTableData;let i=index;\">\r\n <!-- (click)=\"storeView(obj)\" -->\r\n <td class=\"text-primary text-capitalize text-decoration-underline cursor-pointer\" (click)=\"storeView(obj.storeId)\">{{obj.storeName}}</td>\r\n <td>{{obj.storeId}}</td>\r\n <td *ngIf=\"obj?.date\">{{obj?.date | date:'MMM dd, yyyy'}}</td>\r\n <td>{{obj.footfallCount}}</td>\r\n <td>{{obj.bouncedCount}}</td>\r\n <td>{{obj.engagersCount}}</td>\r\n <td>{{obj.missedOpportunityCount}}</td>\r\n <td>{{obj.potentialBuyersCount}}</td>\r\n <td>{{obj.conversionRate}}</td>\r\n <td>{{obj.avgDwellTime}}</td>\r\n <td>{{obj.avgInfraDowntime}}</td>\r\n <td>{{obj.below12}}</td>\r\n <td>{{obj['13-19']}}</td>\r\n <td>{{obj['20-30']}}</td>\r\n <td>{{obj['31-45']}}</td>\r\n <td>{{obj[\"46-59\"]}}</td>\r\n <td>{{obj[\"60 above\"]}}</td>\r\n <td>{{obj.male}}</td>\r\n <td>{{obj.female}}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <lib-pagination [itemsPerPage]=\"pageSize\" [currentPage]=\"offset\" [totalItems]=\"totalItems\"\r\n [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\" (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n", styles: ["#Footfall,#BouncedRate,#PotentialBuyers,#engagers{width:100%;height:100px}#chartdiv{width:100%;height:225px}.ellipse1{border-radius:6px;border-bottom:2px solid var(--Gray-200, #EAECF0);background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d}.card-border{padding:8px;border-radius:12px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF)}.card-footer{border-top:none!important}.percent-value{color:var(--Gray-500, #667085)!important;text-align:center;font-size:16px;font-style:normal;font-weight:600;line-height:18px}.week-font{color:var(--Gray-800, #1D2939)!important;font-size:12px;font-style:normal;font-weight:400;line-height:18px}.card-header,.header{color:var(--Gray-900, #101828);font-size:20px!important;font-style:normal;font-weight:700;line-height:30px}.sub-header{color:var(--Gray-700, #344054);font-size:14px!important;font-style:normal;font-weight:500;line-height:20px}.img-src{width:100%}.img-src1{width:100%;min-height:227px!important;max-height:auto!important}.recap-img{width:100%;height:250px}.activePlanBtn{border-radius:6px;background:var(--Primary-50, #EAF8FF);color:var(--Gray-700, #344054);font-size:14px!important;font-weight:500!important;line-height:20px}.inactivePlanBtn{color:var(--Gray-500, #667085)!important;font-size:14px;font-weight:500!important;line-height:20px}.trax-bg{border-radius:12px!important;background:var(--Gray-100, #F2F4F7)!important}.left-card-count{color:var(--Gray-900, #101828);font-size:18px!important;font-style:normal;font-weight:600;line-height:28px}.left-card-count-header{color:var(--Gray-900, #101828)!important;font-size:14px!important;font-style:normal;font-weight:400;line-height:18px}.left-card-count-header1{color:var(--Gray-900, #101828)!important;font-size:20px!important;font-style:normal;font-weight:700;line-height:30px}.left-card-count-title{color:var(--Gray-700, #344054)!important;font-size:16px!important;font-style:normal;font-weight:700;line-height:24px}.quadrant-chart{position:relative;width:100%;height:500px;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;border:2px solid #ddd}.quadrant{position:relative;border:1px solid #ddd;display:flex;justify-content:center;align-items:center;padding:20px}#q1,#q2{align-items:flex-start}#q3,#q4{align-items:flex-end}.label{color:#000;font-size:12.723px;font-style:normal;font-weight:600;line-height:19.791px;text-align:center}@media (max-width: 768px){.quadrant-chart{width:100%;height:auto}.point{font-size:10px}}.quadrant-chart{position:relative;width:100%;height:100%}.point{position:absolute;display:flex;align-items:center;color:#000;font-size:9px;font-style:normal;font-weight:500;line-height:12px}.axis-labels{position:absolute;width:100%;height:100%;top:0;left:0;display:flex;justify-content:space-between;align-items:center;pointer-events:none}.x-axis-label{position:absolute;bottom:-25px;left:10%;transform:translate(-50%);color:#000;font-size:12.723px;font-style:normal;font-weight:400;line-height:19.791px}.y-axis-label{position:absolute;top:95%;left:-15px;transform:translateY(-50%) rotate(270deg);transform-origin:left center;white-space:nowrap;color:#000;font-size:12.723px;font-style:normal;font-weight:400;line-height:19.791px}.label{cursor:pointer;margin-right:10px}.tooltip-popup{position:absolute;background:var(--gradient-primary-800700265-deg, linear-gradient(27deg, #0082CC 8.33%, #0093E6 91.67%));color:#fff;padding:10px;left:-55px;top:-165px;border:20px solid #fff;border-radius:8px;z-index:1000!important;width:230px;box-shadow:0 4px 8px #0003}.tooltip-content{font-size:13px}.tooltip-popup h3{margin:0;font-size:16px}.tooltip-popup p{margin:10px 0}.tooltip-popup strong{font-weight:700}.tooltip-arrow{position:absolute;bottom:-9px;left:50%;margin-left:-10px;width:0;height:0;border-left:10px solid transparent;border-right:10px solid transparent;border-top:10px solid #0082CC}.border-val{color:var(--Gray-700, #344054)!important;font-family:Inter;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}.table-title-primary{color:var(--Primary-700, #009BF3)!important;font-weight:500!important}.table-sub{line-height:30px!important;color:var(--Gray-500, #667085)!important;font-size:12px!important;font-weight:400!important}table td{line-height:40px!important}.dot{height:12px;width:12px;background-color:#4eb3ed;border-radius:50%;margin-right:5px;z-index:1;position:absolute;left:50%;transform:translate(-50%)}.custom-dropdown{position:relative}.custom-dropdown button{width:100%;background-color:#f8f9fa;border:1px solid #ced4da;border-radius:.25rem;padding:.375rem}.custom-dropdown .dropdown-list{position:absolute;width:100%;background-color:#fff;border:1px solid #ced4da;margin-top:.25rem;list-style:none;padding:0}.custom-dropdown .dropdown-list li{padding:.5rem;cursor:pointer}.custom-dropdown .dropdown-list li.selected{background-color:#007bff;color:#fff}.chart-legend-item-minus{display:none}.img-nodata{width:29%;height:20%}.img-nodata-table{width:25%;height:20%}.text-primary{color:#009bf3!important}.loader-img{width:1%}.img-nodata1{width:25%;height:15%}.nodata-title1{font-size:12px!important;font-weight:600}.btn-light-primary1{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-style:normal;font-weight:600!important;line-height:18px;text-transform:capitalize;border-radius:8px!important;border:1px solid var(--Primary-50, #EAF8FF)!important;background:var(--Primary-50, #EAF8FF)!important;box-shadow:0 1px 2px #1018280d!important}.rotate{rotate:180deg;transition:1s}:host::ng-deep .map-container{width:100%!important;position:relative;overflow:hidden}.img-map{width:45.5%;height:20%}.img-map-recap{width:43%;height:20%}#map{height:262px}@media (min-width: 1390px) and (max-width: 1534px){.img-map{width:52%;height:20%}.img-map-recap{width:48.5%;height:20%}.img-nodata{width:38%;height:20%}#map{height:241px}.fs-5{font-size:.9rem!important}}@media (min-width: 1700px) and (max-width: 1919px){.img-map{width:39%;height:20%}.img-map-recap{width:37%;height:20%}.img-nodata{width:30%;height:20%}#chartdiv{width:100%;height:229px}#map{height:255px}}@media (min-width: 1920px) and (max-width: 2119px){.img-map{width:37%;height:20%}.img-map-recap{width:35%;height:20%}.img-nodata{width:28%;height:20%}#chartdiv{width:100%;height:215px}#map{height:262px}}.image-container{position:relative;width:100%;max-width:1000px;margin:0 auto}.background-image{width:100%;height:auto}.overlay-content{position:absolute;background-color:#0009;color:#fff;padding:5px;border-radius:3px;text-align:center;white-space:nowrap}.centered-zone{position:absolute;top:54%;left:50%;transform:translate(-50%)}.top-zone{position:absolute;top:67%;left:50%;transform:translate(-50%)}.bottom-zone{position:absolute;top:39%;left:50%;transform:translate(-50%)}.text-zone-val{color:var(--Black, #101828)!important;font-size:12px!important;font-style:normal;font-weight:700;line-height:18px}.text-zone{color:var(--Black, #101828)!important;text-align:center;font-size:12px!important;font-style:normal;font-weight:400;line-height:18px}.card-title .card-label{color:var(--Gray-900, #101828)!important;font-family:Inter;font-size:24px!important;font-weight:700!important;line-height:30px}.form-check-label{color:var(--Gray-500, #667085);text-align:center;font-size:12px;font-weight:500;line-height:18px}.title-text{color:var(--Gray-900, #101828)!important;font-size:16px!important;font-weight:600!important;line-height:24px}.left-50{left:47%;top:12%}.end-0{top:16%;left:97%}.carousel{position:relative}.carousel-item{display:none;transition:opacity .5s}.carousel-item.active{display:block;opacity:1}.carousel-control-prev,.carousel-control-next{position:absolute;top:50%;transform:translateY(-50%);border:none;padding:10px;cursor:pointer}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-indicators{position:absolute;left:35%;transform:translate(-50%);gap:10px}.carousel-indicators li{list-style:none!important;width:10px;height:10px;background-color:#ddd;border-radius:50%;cursor:pointer;transition:background-color .3s}.carousel-indicators li.active{background-color:#007bff}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:25rem!important;height:25rem!important;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.image-thumb{height:240px;border-radius:8px}.dropselect{color:var(--Gray-500, #344054);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:18px;white-space:nowrap}.nodata-title{font-size:14px!important;font-weight:600}.carousel-control-prev-icon,.carousel-control-next-icon{color:#fff!important}.footimg-nodata1{width:30%;height:66%}.tooltip-content{max-width:200px}.tooltip-title{font-weight:700;margin-bottom:10px}.tooltip-footer{margin-top:10px;font-size:.8em;color:gray}\n"], dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i8.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i8.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i8.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "directive", type: i6.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "component", type: i9.TrafficChartsComponent, selector: "lib-traffic-charts" }, { kind: "component", type: i10.TrafficCardChartsComponent, selector: "lib-traffic-card-charts" }, { kind: "component", type: i11.ImageDocComponent, selector: "lib-image-doc" }, { kind: "pipe", type: i7.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i7.DatePipe, name: "date" }] });
|
|
1308
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TrafficAnalysisComponent, selector: "lib-traffic-analysis", host: { listeners: { "document:click": "handleClickOutside($event)" } }, viewQueries: [{ propertyName: "tooltip", first: true, predicate: ["t"], descendants: true }], ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"col-md-7\">\r\n <div class=\"row\">\r\n <div class=\"col-md-8 \">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"row position-relative\">\r\n <div class=\"col-md-6\">\r\n <div class=\"px-2\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <!-- [ngbTooltip]=\"footfallTooltip\" placement=\"right\" -->\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <!-- Display footfall count or '--' if not available -->\r\n <span class=\"card-label header\">{{ getCardData?.footfall?.count ? getCardData.footfall.count.toLocaleString('en-IN') : '--' }}</span>\r\n <span class=\"sub-header\">{{footfallName}}</span>\r\n </h3>\r\n \r\n <!-- Switch toggle -->\r\n <div class=\"card-toolbar\">\r\n <div class=\"col-md-12 text-end\">\r\n <div class=\"form-check form-switch text-end\">\r\n <input class=\"form-check-input mt-1\" type=\"checkbox\" id=\"flexSwitchCheckDefault\" \r\n [(ngModel)]=\"isAverage\" (change)=\"toggleAverage($event)\" [disabled]=\"isDisabled\">\r\n </div>\r\n <div class=\"form-check-label mt-5\">Average</div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <ng-template #footfallTooltip>\r\n <div class=\"tooltip-content\">\r\n <h5 class=\"tooltip-title text-start\">Footfall</h5>\r\n <p class=\"text-start\">Total unique walk-ins into the selected stores.</p>\r\n <h4 class=\"text-start\">{{getCardData?.footfall?.count}}</h4>\r\n <footer class=\"tooltip-footer text-start\"> <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.footfall?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.footfall?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2 ms-2\"><span class=\"percent-value\" *ngIf=\"getCardGraphData?.footfall?.PreviousData !==0\">{{getCardGraphData?.footfall?.PreviousData ? getCardGraphData?.footfall?.PreviousData:'--'}}%</span><span\r\n class=\"week-font\"> (123) vs Previous \r\n <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span>\r\n </span>\r\n\r\n </span></footer>\r\n </div>\r\n </ng-template> -->\r\n <div class=\"card-body p-0\">\r\n \r\n <section >\r\n <div class=\"row\">\r\n <div class=\"col-md-10 pe-0\">\r\n <div *ngIf=\"cardloading\" class=\"text-center\">\r\n <img class=\"loader-img\" src=\"assets/tango/layout/Loader.gif\">\r\n </div>\r\n <div *ngIf=\"cardNodata\" class=\"row\">\r\n \r\n <div class=\"card-body pb-0 px-0 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"footimg-nodata1\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title1\">No data found</div>\r\n <!-- <div class=\"nodata-sub\">There is no result for this conversion funnel</div> -->\r\n </div>\r\n \r\n </div>\r\n <div *ngIf=\"!cardNodata\" class=\"text-center\" id=\"Footfall\"></div>\r\n </div>\r\n <div class=\"col-md-2 mt-3\">\r\n <div class=\"mt-1 cursor-pointer fs-5\" [ngClass]=\"dateType ==='daily' ? 'text-primary' :''\" (click)=\"dateValue('daily')\">1D</div>\r\n <div class=\"mt-1 cursor-pointer fs-5\" [ngClass]=\"dateType ==='weekly' ? 'text-primary' :''\" (click)=\"dateValue('weekly')\">1W</div>\r\n <div class=\"mt-1 cursor-pointer fs-5\" [ngClass]=\"dateType ==='monthly' ? 'text-primary' :''\" (click)=\"dateValue('monthly')\">1M</div>\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.footfall?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.footfall?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"getCardGraphData?.footfall?.PreviousData ===0\" class=\"percent-value ms-2\">0%</span>\r\n <span class=\"mt-2 ms-2\"><span class=\"percent-value\" *ngIf=\"getCardGraphData?.footfall?.PreviousData !==0\">{{getCardGraphData?.footfall?.PreviousData ? getCardGraphData?.footfall?.PreviousData:'--'}}%</span><span\r\n class=\"week-font\"> vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span> </span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M6 12L10 8L6 4\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div> -->\r\n </div>\r\n <div class=\"position-absolute left-50\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M6 12L10 8L6 4\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n <div class=\"col-md-6\">\r\n\r\n <div class=\"px-2\">\r\n <div class=\"card-header ellipse1 border-0 px-3\" >\r\n <!-- [ngbTooltip]=\"conversionTooltip\" placement=\"left\" -->\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label header\">{{valueConversionRate ? valueConversionRate : '--'}}%</span>\r\n <span class=\"sub-header\">Conversion <span *ngIf=\"conversionValue ==='footfall' || conversionValue ==='engagers' || conversionValue ==='Potential Buyers' || conversionValue ==='NoB Derived' \"> - {{conversionValue | titlecase}}</span></span>\r\n </h3>\r\n </div>\r\n <!-- <ng-template #conversionTooltip>\r\n <div class=\"tooltip-content\">\r\n <h5 class=\"tooltip-title text-start\">Conversion Rate</h5>\r\n <p class=\"text-start\">Total % of <engagers> who spent more than <10mins> in the store..</p>\r\n <h4 class=\"text-start\">{{valueConversionRate}}</h4>\r\n <footer class=\"tooltip-footer text-start\"> <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.conversion?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.conversion?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\">\r\n <span *ngIf=\"conversionValue ==='footfall' && getCardGraphData?.conversion?.footfall.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"conversionValue ==='footfall' && getCardGraphData?.conversion?.footfall.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.conversion?.footfall.PreviousData ? getCardGraphData?.conversion?.footfall.PreviousData:'--'}}%</span>\r\n <span *ngIf=\"conversionValue ==='engagers' && getCardGraphData?.conversion?.engagers.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n \r\n <span *ngIf=\"conversionValue ==='engagers' && getCardGraphData?.conversion?.engagers.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.conversion?.engagers.PreviousData ? getCardGraphData?.conversion?.engagers.PreviousData:'--'}}%</span>\r\n\r\n <span *ngIf=\"conversionValue ==='Potential Buyers' && getCardGraphData?.conversion?.potentialBuyers.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"conversionValue ==='Potential Buyers' && getCardGraphData?.conversion?.potentialBuyers.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.conversion?.potentialBuyers.PreviousData ? getCardGraphData?.conversion?.potentialBuyers.PreviousData:'--'}}%</span>\r\n <span *ngIf=\"conversionValue ==='NoB Derived'\" class=\"percent-value\">--%</span>\r\n <span *ngIf=\"conversionValue ==='' && getCardGraphData?.conversion?.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n\r\n <span *ngIf=\"conversionValue ==='' && getCardGraphData?.conversion?.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.conversion?.PreviousData ? getCardGraphData?.conversion?.PreviousData:'--'}}%</span>\r\n \r\n <span\r\n class=\"week-font\"> vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span>\r\n </footer>\r\n </div>\r\n </ng-template> -->\r\n <div class=\"card-body p-0\">\r\n <div class=\"h-100px pt-10 px-3 row\">\r\n <span class=\"h-75px col-md-3\">\r\n <svg class=\"cursor-pointer\" *ngIf=\"conversionValue !=='footfall'\" placement=\"top\" \r\n ngbTooltip=\"Footfall\"\r\n (click)=\"changeValue('footfall')\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path\r\n d=\"M4 18H9.5V19.25C9.5 19.9793 9.21027 20.6788 8.69454 21.1945C8.17882 21.7103 7.47935 22 6.75 22C6.02065 22 5.32118 21.7103 4.80546 21.1945C4.28973 20.6788 4 19.9793 4 19.25V18ZM8 6.11999C10 6.11999 11 8.99999 11 11C11 12 10.5 13 10 14.5L9.5 16H4C4 15 3.5 13.5 3.5 11C3.5 8.49999 5.498 6.11999 8 6.11999ZM20.054 14.098L19.837 15.329C19.7023 16.0396 19.2931 16.6686 18.698 17.0796C18.1029 17.4907 17.3698 17.6508 16.6576 17.5252C15.9453 17.3996 15.3111 16.9984 14.8925 16.4086C14.4739 15.8188 14.3045 15.0878 14.421 14.374L14.637 13.144L20.054 14.098ZM18.178 1.70499C20.642 2.13899 22.196 4.82999 21.762 7.29199C21.328 9.75399 20.575 11.144 20.402 12.129L14.985 11.174L14.753 9.60999C14.521 8.04599 14.203 6.97399 14.376 5.98999C14.723 4.01999 16.208 1.35799 18.178 1.70499Z\"\r\n fill=\"#98A2B3\" />\r\n </svg>\r\n <svg placement=\"top\" ngbTooltip=\"Footfall\" *ngIf=\"conversionValue ==='footfall'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M4 18H9.5V19.25C9.5 19.9793 9.21027 20.6788 8.69454 21.1945C8.17882 21.7103 7.47935 22 6.75 22C6.02065 22 5.32118 21.7103 4.80546 21.1945C4.28973 20.6788 4 19.9793 4 19.25V18ZM8 6.11999C10 6.11999 11 8.99999 11 11C11 12 10.5 13 10 14.5L9.5 16H4C4 15 3.5 13.5 3.5 11C3.5 8.49999 5.498 6.11999 8 6.11999ZM20.054 14.098L19.837 15.329C19.7023 16.0396 19.2931 16.6686 18.698 17.0796C18.1029 17.4907 17.3698 17.6508 16.6576 17.5252C15.9453 17.3996 15.3111 16.9984 14.8925 16.4086C14.4739 15.8188 14.3045 15.0878 14.421 14.374L14.637 13.144L20.054 14.098ZM18.178 1.70499C20.642 2.13899 22.196 4.82999 21.762 7.29199C21.328 9.75399 20.575 11.144 20.402 12.129L14.985 11.174L14.753 9.60999C14.521 8.04599 14.203 6.97399 14.376 5.98999C14.723 4.01999 16.208 1.35799 18.178 1.70499Z\" fill=\"#00A3FF\"/>\r\n </svg>\r\n </span>\r\n <span class=\"h-75px col-md-3\">\r\n <svg placement=\"top\" ngbTooltip=\"Engagers\" class=\"cursor-pointer\" *ngIf=\"conversionValue !=='engagers'\" (click)=\"changeValue('engagers')\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path \r\n d=\"M17 21V19C17 17.9391 16.5786 16.9217 15.8284 16.1716C15.0783 15.4214 14.0609 15 13 15H5C3.93913 15 2.92172 15.4214 2.17157 16.1716C1.42143 16.9217 1 17.9391 1 19V21M23 21V19C22.9993 18.1137 22.7044 17.2528 22.1614 16.5523C21.6184 15.8519 20.8581 15.3516 20 15.13M16 3.13C16.8604 3.3503 17.623 3.8507 18.1676 4.55231C18.7122 5.25392 19.0078 6.11683 19.0078 7.005C19.0078 7.89317 18.7122 8.75608 18.1676 9.45769C17.623 10.1593 16.8604 10.6597 16 10.88M13 7C13 9.20914 11.2091 11 9 11C6.79086 11 5 9.20914 5 7C5 4.79086 6.79086 3 9 3C11.2091 3 13 4.79086 13 7Z\"\r\n stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg placement=\"top\" ngbTooltip=\"Engagers\" *ngIf=\"conversionValue ==='engagers'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M17 21V19C17 17.9391 16.5786 16.9217 15.8284 16.1716C15.0783 15.4214 14.0609 15 13 15H5C3.93913 15 2.92172 15.4214 2.17157 16.1716C1.42143 16.9217 1 17.9391 1 19V21M23 21V19C22.9993 18.1137 22.7044 17.2528 22.1614 16.5523C21.6184 15.8519 20.8581 15.3516 20 15.13M16 3.13C16.8604 3.3503 17.623 3.8507 18.1676 4.55231C18.7122 5.25392 19.0078 6.11683 19.0078 7.005C19.0078 7.89317 18.7122 8.75608 18.1676 9.45769C17.623 10.1593 16.8604 10.6597 16 10.88M13 7C13 9.20914 11.2091 11 9 11C6.79086 11 5 9.20914 5 7C5 4.79086 6.79086 3 9 3C11.2091 3 13 4.79086 13 7Z\" stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </span>\r\n <span class=\"h-75px col-md-3\">\r\n <svg placement=\"top\" ngbTooltip=\"Potential Buyers\" class=\"cursor-pointer\" *ngIf=\"conversionValue !=='Potential Buyers'\" (click)=\"changeValue('potentialBuyers')\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path opacity=\"0.3\"\r\n d=\"M20.0039 18.002H4.00391C3.40391 18.002 3.00391 17.602 3.00391 17.002V7.00195C3.00391 6.40195 3.40391 6.00195 4.00391 6.00195H20.0039C20.6039 6.00195 21.0039 6.40195 21.0039 7.00195V17.002C21.0039 17.602 20.6039 18.002 20.0039 18.002ZM12.0039 8.00195C10.3039 8.00195 9.00391 9.80195 9.00391 12.002C9.00391 14.202 10.3039 16.002 12.0039 16.002C13.7039 16.002 15.0039 14.202 15.0039 12.002C15.0039 9.80195 13.7039 8.00195 12.0039 8.00195Z\"\r\n fill=\"#98A2B3\" />\r\n <path\r\n d=\"M18.0039 6.00195H20.0039C20.6039 6.00195 21.0039 6.40195 21.0039 7.00195V9.00195C19.3039 9.00195 18.0039 7.70195 18.0039 6.00195ZM6.00391 6.00195H4.00391C3.40391 6.00195 3.00391 6.40195 3.00391 7.00195V9.00195C4.70391 9.00195 6.00391 7.70195 6.00391 6.00195ZM21.0039 17.002V15.002C19.3039 15.002 18.0039 16.302 18.0039 18.002H20.0039C20.6039 18.002 21.0039 17.602 21.0039 17.002ZM3.00391 15.002V17.002C3.00391 17.602 3.40391 18.002 4.00391 18.002H6.00391C6.00391 16.302 4.70391 15.002 3.00391 15.002Z\"\r\n fill=\"#98A2B3\" />\r\n </svg>\r\n <svg placement=\"top\" ngbTooltip=\"Potential Buyers\" *ngIf=\"conversionValue ==='Potential Buyers'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path opacity=\"0.3\" d=\"M20.0039 18.002H4.00391C3.40391 18.002 3.00391 17.602 3.00391 17.002V7.00195C3.00391 6.40195 3.40391 6.00195 4.00391 6.00195H20.0039C20.6039 6.00195 21.0039 6.40195 21.0039 7.00195V17.002C21.0039 17.602 20.6039 18.002 20.0039 18.002ZM12.0039 8.00195C10.3039 8.00195 9.00391 9.80195 9.00391 12.002C9.00391 14.202 10.3039 16.002 12.0039 16.002C13.7039 16.002 15.0039 14.202 15.0039 12.002C15.0039 9.80195 13.7039 8.00195 12.0039 8.00195Z\" fill=\"#00A3FF\"/>\r\n <path d=\"M18.0039 6.00195H20.0039C20.6039 6.00195 21.0039 6.40195 21.0039 7.00195V9.00195C19.3039 9.00195 18.0039 7.70195 18.0039 6.00195ZM6.00391 6.00195H4.00391C3.40391 6.00195 3.00391 6.40195 3.00391 7.00195V9.00195C4.70391 9.00195 6.00391 7.70195 6.00391 6.00195ZM21.0039 17.002V15.002C19.3039 15.002 18.0039 16.302 18.0039 18.002H20.0039C20.6039 18.002 21.0039 17.602 21.0039 17.002ZM3.00391 15.002V17.002C3.00391 17.602 3.40391 18.002 4.00391 18.002H6.00391C6.00391 16.302 4.70391 15.002 3.00391 15.002Z\" fill=\"#00A3FF\"/>\r\n </svg>\r\n </span>\r\n <span class=\"h-75px col-md-3\">\r\n <svg placement=\"top\" ngbTooltip=\"NoB Derived\" class=\"cursor-pointer\" *ngIf=\"conversionValue !=='NoB Derived'\" (click)=\"changeValue('NoB Derived')\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path opacity=\"0.3\"\r\n d=\"M18.0039 21.6005C16.3039 21.6005 15.0039 20.3005 15.0039 18.6005V2.5005C15.0039 2.2005 14.6039 2.00045 14.3039 2.20045L13.0039 3.60048L11.7039 2.30049C11.3039 1.90049 10.7039 1.90049 10.3039 2.30049L9.00391 3.60048L7.70392 2.30049C7.30392 1.90049 6.7039 1.90049 6.3039 2.30049L5.00391 3.60048L3.70392 2.30049C3.50392 2.10049 3.00391 2.2005 3.00391 3.5005V18.6005C3.00391 20.3005 4.30391 21.6005 6.00391 21.6005H18.0039Z\"\r\n fill=\"#98A2B3\" />\r\n <path\r\n d=\"M12.0059 12.5972H11.0059C10.4059 12.5972 10.0059 12.1972 10.0059 11.5972C10.0059 10.9972 10.4059 10.5972 11.0059 10.5972H12.0059C12.6059 10.5972 13.0059 10.9972 13.0059 11.5972C13.0059 12.1972 12.6059 12.5972 12.0059 12.5972ZM9.00586 11.5972C9.00586 10.9972 8.60586 10.5972 8.00586 10.5972H6.00586C5.40586 10.5972 5.00586 10.9972 5.00586 11.5972C5.00586 12.1972 5.40586 12.5972 6.00586 12.5972H8.00586C8.60586 12.5972 9.00586 12.1972 9.00586 11.5972ZM9.00586 7.59717C9.00586 6.99717 8.60586 6.59717 8.00586 6.59717H6.00586C5.40586 6.59717 5.00586 6.99717 5.00586 7.59717C5.00586 8.19717 5.40586 8.59717 6.00586 8.59717H8.00586C8.60586 8.59717 9.00586 8.19717 9.00586 7.59717ZM13.0059 7.59717C13.0059 6.99717 12.6059 6.59717 12.0059 6.59717H11.0059C10.4059 6.59717 10.0059 6.99717 10.0059 7.59717C10.0059 8.19717 10.4059 8.59717 11.0059 8.59717H12.0059C12.6059 8.59717 13.0059 8.19717 13.0059 7.59717ZM13.0059 15.5972C13.0059 14.9972 12.6059 14.5972 12.0059 14.5972H10.0059C9.40586 14.5972 9.00586 14.9972 9.00586 15.5972C9.00586 16.1972 9.40586 16.5972 10.0059 16.5972H12.0059C12.6059 16.5972 13.0059 16.1972 13.0059 15.5972Z\"\r\n fill=\"#98A2B3\" />\r\n <path\r\n d=\"M15.002 18.5971C15.002 20.2971 16.302 21.5971 18.002 21.5971C19.702 21.5971 21.002 20.2971 21.002 18.5971V12.4971C21.002 12.1971 20.602 11.9971 20.302 12.1971L19.002 13.5971L17.702 12.2971C17.302 11.8971 16.702 11.8971 16.302 12.2971L15.002 13.5971V18.5971Z\"\r\n fill=\"#98A2B3\" />\r\n </svg>\r\n <svg placement=\"top\" ngbTooltip=\"NoB Derived\" *ngIf=\"conversionValue ==='NoB Derived'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path opacity=\"0.3\"\r\n d=\"M18.0039 21.6005C16.3039 21.6005 15.0039 20.3005 15.0039 18.6005V2.5005C15.0039 2.2005 14.6039 2.00045 14.3039 2.20045L13.0039 3.60048L11.7039 2.30049C11.3039 1.90049 10.7039 1.90049 10.3039 2.30049L9.00391 3.60048L7.70392 2.30049C7.30392 1.90049 6.7039 1.90049 6.3039 2.30049L5.00391 3.60048L3.70392 2.30049C3.50392 2.10049 3.00391 2.2005 3.00391 3.5005V18.6005C3.00391 20.3005 4.30391 21.6005 6.00391 21.6005H18.0039Z\"\r\n fill=\"#00A3FF\" />\r\n <path\r\n d=\"M12.0059 12.5972H11.0059C10.4059 12.5972 10.0059 12.1972 10.0059 11.5972C10.0059 10.9972 10.4059 10.5972 11.0059 10.5972H12.0059C12.6059 10.5972 13.0059 10.9972 13.0059 11.5972C13.0059 12.1972 12.6059 12.5972 12.0059 12.5972ZM9.00586 11.5972C9.00586 10.9972 8.60586 10.5972 8.00586 10.5972H6.00586C5.40586 10.5972 5.00586 10.9972 5.00586 11.5972C5.00586 12.1972 5.40586 12.5972 6.00586 12.5972H8.00586C8.60586 12.5972 9.00586 12.1972 9.00586 11.5972ZM9.00586 7.59717C9.00586 6.99717 8.60586 6.59717 8.00586 6.59717H6.00586C5.40586 6.59717 5.00586 6.99717 5.00586 7.59717C5.00586 8.19717 5.40586 8.59717 6.00586 8.59717H8.00586C8.60586 8.59717 9.00586 8.19717 9.00586 7.59717ZM13.0059 7.59717C13.0059 6.99717 12.6059 6.59717 12.0059 6.59717H11.0059C10.4059 6.59717 10.0059 6.99717 10.0059 7.59717C10.0059 8.19717 10.4059 8.59717 11.0059 8.59717H12.0059C12.6059 8.59717 13.0059 8.19717 13.0059 7.59717ZM13.0059 15.5972C13.0059 14.9972 12.6059 14.5972 12.0059 14.5972H10.0059C9.40586 14.5972 9.00586 14.9972 9.00586 15.5972C9.00586 16.1972 9.40586 16.5972 10.0059 16.5972H12.0059C12.6059 16.5972 13.0059 16.1972 13.0059 15.5972Z\"\r\n fill=\"#00A3FF\" />\r\n <path\r\n d=\"M15.002 18.5971C15.002 20.2971 16.302 21.5971 18.002 21.5971C19.702 21.5971 21.002 20.2971 21.002 18.5971V12.4971C21.002 12.1971 20.602 11.9971 20.302 12.1971L19.002 13.5971L17.702 12.2971C17.302 11.8971 16.702 11.8971 16.302 12.2971L15.002 13.5971V18.5971Z\"\r\n fill=\"#00A3FF\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"card-footer ms-3 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.conversion?.footfall.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.conversion?.footfall.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\">\r\n <span *ngIf=\"conversionValue ==='footfall' && getCardGraphData?.conversion?.footfall.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"conversionValue ==='footfall' && getCardGraphData?.conversion?.footfall.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.conversion?.footfall.PreviousData ? getCardGraphData?.conversion?.footfall.PreviousData:'--'}}%</span>\r\n <span *ngIf=\"conversionValue ==='engagers' && getCardGraphData?.conversion?.engagers.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n \r\n <span *ngIf=\"conversionValue ==='engagers' && getCardGraphData?.conversion?.engagers.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.conversion?.engagers.PreviousData ? getCardGraphData?.conversion?.engagers.PreviousData:'--'}}%</span>\r\n\r\n <span *ngIf=\"conversionValue ==='Potential Buyers' && getCardGraphData?.conversion?.potentialBuyers.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"conversionValue ==='Potential Buyers' && getCardGraphData?.conversion?.potentialBuyers.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.conversion?.potentialBuyers.PreviousData ? getCardGraphData?.conversion?.potentialBuyers.PreviousData:'--'}}%</span>\r\n <span *ngIf=\"conversionValue ==='NoB Derived'\" class=\"percent-value\">--%</span>\r\n <span *ngIf=\"conversionValue ==='' && getCardGraphData?.conversion?.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n\r\n <span *ngIf=\"conversionValue ==='' && getCardGraphData?.conversion?.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.conversion?.PreviousData ? getCardGraphData?.conversion?.PreviousData:'--'}}%</span>\r\n \r\n <span\r\n class=\"week-font\"> vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"card-header ellipse1 border-0 px-3\" >\r\n <!-- [ngbTooltip]=\"bouncedTooltip\" placement=\"left\" -->\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"card-label header\">{{getCardData?.bounced?.rate ? getCardData?.bounced?.rate :'--'}}%</span>\r\n <span class=\"sub-header\">Bounced Rate</span>\r\n </h3>\r\n </div>\r\n <!-- <ng-template #bouncedTooltip>\r\n <div class=\"tooltip-content\">\r\n <h5 class=\"tooltip-title text-start\">Bounced Rate</h5>\r\n <p class=\"text-start\">Total walk-ins who spent less than <N>min/s.</p>\r\n <h4 class=\"text-start\">{{getCardData?.bounced?.rate}}</h4>\r\n <footer class=\"tooltip-footer text-start\"> <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.bounced?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.bounced?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span> <span class=\"mt-2 ms-2\">\r\n <span *ngIf=\"getCardGraphData?.bounced?.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"getCardGraphData?.bounced?.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.bounced?.PreviousData ? getCardGraphData?.bounced?.PreviousData:'--'}}%</span>\r\n <span class=\"week-font\">\r\n vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span></footer>\r\n </div>\r\n </ng-template> -->\r\n <div class=\"card-body p-0\">\r\n <div *ngIf=\"cardNodata\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body pb-0 px-0 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata1\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title1\">No data found</div>\r\n <!-- <div class=\"nodata-sub\">There is no result for this conversion funnel</div> -->\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!cardNodata\" class=\"text-center\" id=\"BouncedRate\"></div>\r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.bounced?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.bounced?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\">\r\n <span *ngIf=\"getCardGraphData?.bounced?.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"getCardGraphData?.bounced?.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.bounced?.PreviousData ? getCardGraphData?.bounced?.PreviousData:'--'}}%</span>\r\n <span class=\"week-font\">\r\n vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4 mt-3\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"card-header ellipse1 border-0 px-3\" >\r\n <!-- [ngbTooltip]=\"engagersTooltip\" placement=\"right\" -->\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"card-label header\">{{getCardData?.engagers?.rate ? getCardData?.engagers?.rate :'--'}}%</span>\r\n <span class=\"sub-header\">Engagers Rate</span>\r\n </h3>\r\n </div>\r\n <!-- <ng-template #engagersTooltip>\r\n <div class=\"tooltip-content\">\r\n <h5 class=\"tooltip-title text-start\">Engagers Rate</h5>\r\n <p class=\"text-start\">Total walk-ins who spent more than <Xmins> into the selected stores.</p>\r\n <h4 class=\"text-start\">{{getCardData?.engagers?.rate}}</h4>\r\n <footer class=\"tooltip-footer text-start\"> <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.engagers?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.engagers?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span> <span class=\"mt-2 ms-2\">\r\n <span *ngIf=\"getCardGraphData?.engagers?.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"getCardGraphData?.engagers?.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.engagers?.PreviousData ? getCardGraphData?.engagers?.PreviousData:'--'}}%</span>\r\n <span class=\"week-font\">\r\n vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span></footer>\r\n </div>\r\n </ng-template> -->\r\n <div class=\"card-body p-0\">\r\n <div *ngIf=\"cardNodata\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body pb-0 px-0 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata1\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title1\">No data found</div>\r\n <!-- <div class=\"nodata-sub\">There is no result for this conversion funnel</div> -->\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!cardNodata\" class=\"text-center\" id=\"engagers\"></div>\r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.engagers?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.engagers?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\">\r\n <span *ngIf=\"getCardGraphData?.engagers?.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"getCardGraphData?.engagers?.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.engagers?.PreviousData ? getCardGraphData?.engagers?.PreviousData:'--'}}%</span>\r\n <span class=\"week-font\">\r\n vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4 mt-3\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"card-header ellipse1 border-0 px-3\" > \r\n <!-- [ngbTooltip]=\"missedTooltip\" placement=\"right\" -->\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"card-label header\">{{getCardData?.missedopportunities?.rate ? getCardData?.missedopportunities?.rate :'--'}}%</span>\r\n <span class=\"sub-header\">Missed Opportunities</span>\r\n </h3>\r\n </div>\r\n\r\n <!-- <ng-template #missedTooltip>\r\n <div class=\"tooltip-content\">\r\n <h5 class=\"tooltip-title text-start\">Missed Opportunities</h5>\r\n <p class=\"text-start\">The difference between <engagers> and <conversions>, showing potential loss.</p>\r\n <h4 class=\"text-start\">{{getCardData?.missedopportunities?.rate}}</h4>\r\n <footer class=\"tooltip-footer text-start\"> \r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.missedopportunities?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.missedopportunities?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"ms-2 mt-2\">\r\n <span *ngIf=\"getCardGraphData?.missedopportunities?.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"getCardGraphData?.missedopportunities?.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.missedopportunities?.PreviousData ? getCardGraphData?.missedopportunities?.PreviousData:'--'}}%</span>\r\n <span class=\"week-font\">\r\n vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span>\r\n </footer>\r\n </div>\r\n </ng-template> -->\r\n <div class=\"card-body p-0 h-90px mt-3 mx-3\">\r\n <div class=\"row\">\r\n <div class=\"col-md-9\"><!--{{getCardData?.revenue?.value ?? '--'}} -->\r\n <div class=\"my-2\" *ngIf=\"getCardData?.revenue?.currency !=='inr'\"> <span class=\"card-label header\"><span class=\"me-1\">$</span> {{getCardData?.revenue?.value.toLocaleString('en-IN') ?? '--'}}</span></div>\r\n <div class=\"my-2\" *ngIf=\"getCardData?.revenue?.currency ==='inr'\"> <span class=\"card-label header\"><span class=\"me-1\">\u20B9</span> {{getCardData?.revenue?.value.toLocaleString('en-IN') ?? '--'}}</span></div>\r\n <div class=\"my-1\"><span class=\"sub-header\">Avg. Revenue Loss</span></div>\r\n </div>\r\n <div class=\"col-md-3 mt-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\r\n <g filter=\"url(#filter0_d_3885_2531)\">\r\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"#EAF8FF\"/>\r\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#EAF8FF\"/>\r\n <g clip-path=\"url(#clip0_3885_2531)\">\r\n <path d=\"M27.4585 17.2251C27.8133 18.8556 27.6707 20.5614 27.0505 22.1027L25.8593 21.3838L26.017 26.097L30 23.8834L28.717 23.1086C30.7171 18.4823 29.0726 12.9333 24.7799 10.3407C23.3328 9.46633 21.6918 9.00406 20.0206 9.00003C18.3494 8.99599 16.7064 9.45033 15.2555 10.3177L16.2049 12.0544C17.5933 11.2249 19.1953 10.8712 20.7858 11.043C22.3764 11.2149 23.8754 11.9036 25.0723 13.0125C26.2692 14.1214 27.1037 15.5946 27.4585 17.2251Z\" fill=\"#00A3FF\"/>\r\n <path d=\"M12.5402 20.7759C12.1854 19.1452 12.3282 17.4392 12.9485 15.8978L14.1398 16.6167L13.982 11.9035L10 14.1181L11.283 14.8909C9.28199 19.5182 10.9264 25.0662 15.2192 27.6588C16.6661 28.5333 18.3071 28.9958 19.9783 29C21.6495 29.0042 23.2926 28.55 24.7435 27.6828L23.7951 25.9461C22.4067 26.776 20.8045 27.13 19.2138 26.9583C17.623 26.7867 16.1237 26.0979 14.9267 24.989C13.7296 23.88 12.895 22.4066 12.5402 20.7759Z\" fill=\"#00A3FF\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M21.0372 13.003C21.0372 12.5514 20.6871 12.1852 20.2552 12.1852C19.8234 12.1852 19.4733 12.5514 19.4733 13.003V14.3659H18.952C18.2607 14.3659 17.5978 14.653 17.109 15.1642C16.6201 15.6754 16.3455 16.3687 16.3455 17.0916C16.3455 17.8146 16.6201 18.5079 17.109 19.0191C17.5978 19.5302 18.2607 19.8174 18.952 19.8174H19.4733V21.998H17.1275C16.6956 21.998 16.3455 22.3641 16.3455 22.8158C16.3455 23.2674 16.6956 23.6335 17.1275 23.6335H19.4733V24.9964C19.4733 25.448 19.8234 25.8141 20.2552 25.8141C20.6871 25.8141 21.0372 25.448 21.0372 24.9964V23.6335H21.5585C22.2498 23.6335 22.9127 23.3463 23.4015 22.8351C23.8903 22.324 24.1649 21.6306 24.1649 20.9077C24.1649 20.1848 23.8903 19.4915 23.4015 18.9803C22.9127 18.4691 22.2498 18.182 21.5585 18.182H21.0372V16.0013H22.8617C23.2936 16.0013 23.6437 15.6352 23.6437 15.1836C23.6437 14.732 23.2936 14.3659 22.8617 14.3659H21.0372V13.003ZM18.952 16.0013H19.4733V18.182H18.952C18.6755 18.182 18.4103 18.0671 18.2148 17.8626C18.0193 17.6581 17.9094 17.3808 17.9094 17.0916C17.9094 16.8025 18.0193 16.5252 18.2148 16.3207C18.4103 16.1162 18.6755 16.0013 18.952 16.0013ZM21.0372 21.998V19.8174H21.5585C21.835 19.8174 22.1002 19.9323 22.2957 20.1368C22.4912 20.3412 22.6011 20.6186 22.6011 20.9077C22.6011 21.1969 22.4912 21.4742 22.2957 21.6787C22.1002 21.8832 21.835 21.998 21.5585 21.998H21.0372Z\" fill=\"#00A3FF\"/>\r\n </g>\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_3885_2531\" x=\"0\" y=\"0\" width=\"40\" height=\"40\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/>\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\"/>\r\n <feOffset dy=\"1\"/>\r\n <feGaussianBlur stdDeviation=\"1\"/>\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\"/>\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_3885_2531\"/>\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_3885_2531\" result=\"shape\"/>\r\n </filter>\r\n <clipPath id=\"clip0_3885_2531\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(10 9)\"/>\r\n </clipPath>\r\n </defs>\r\n </svg></div>\r\n </div>\r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.missedopportunities?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.missedopportunities?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"ms-2 mt-2\">\r\n <span *ngIf=\"getCardGraphData?.missedopportunities?.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"getCardGraphData?.missedopportunities?.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.missedopportunities?.PreviousData ? getCardGraphData?.missedopportunities?.PreviousData:'--'}}%</span>\r\n <span class=\"week-font\">\r\n vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4 mt-3 h-100\">\r\n <div class=\"card card-border mb-5 py-0\">\r\n <div class=\"card-body p-0 h-90px mt-3 mx-3\">\r\n <div class=\"d-flex align-items-center me-2\">\r\n <div class=\"mt-3 flex-shrink-0\">\r\n <svg width=\"40\" height=\"41\" viewBox=\"0 0 40 41\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect y=\"0.5\" width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\"/>\r\n <path d=\"M17.6382 12.8922C17.6382 12.6835 17.7212 12.4833 17.8688 12.3357C18.0164 12.1881 18.2165 12.1052 18.4253 12.1052H21.5734C21.7822 12.1052 21.9823 12.1881 22.1299 12.3357C22.2775 12.4833 22.3605 12.6835 22.3605 12.8922C22.3605 13.1009 22.2775 13.3011 22.1299 13.4487C21.9823 13.5963 21.7822 13.6792 21.5734 13.6792H20.7864V14.7286L20.7853 14.7716C22.1156 14.9174 23.3767 15.4398 24.4204 16.2775L24.4277 16.2712L25.2148 15.4842C25.311 15.3806 25.4333 15.3048 25.569 15.2649C25.7046 15.2251 25.8485 15.2225 25.9855 15.2575C26.1224 15.2925 26.2474 15.3638 26.3472 15.4639C26.4471 15.564 26.5181 15.6892 26.5527 15.8263C26.5877 15.9631 26.5852 16.1068 26.5455 16.2423C26.5058 16.3778 26.4304 16.5002 26.3271 16.5965L25.5401 17.3836L25.5338 17.3909C26.3662 18.4331 26.8875 19.6891 27.0377 21.0144C27.1878 22.3397 26.9607 23.6805 26.3824 24.8825C25.8042 26.0845 24.8983 27.0987 23.7691 27.8086C22.6399 28.5184 21.3332 28.895 19.9993 28.895C18.6655 28.895 17.3588 28.5184 16.2296 27.8086C15.1004 27.0987 14.1945 26.0845 13.6163 24.8825C13.038 23.6805 12.8109 22.3397 12.961 21.0144C13.1112 19.6891 13.6325 18.4331 14.4649 17.3909L14.4586 17.3836L13.6716 16.5965C13.5324 16.4474 13.4566 16.25 13.4601 16.046C13.4636 15.842 13.5462 15.6473 13.6905 15.5031C13.8347 15.3588 14.0294 15.2762 14.2334 15.2727C14.4374 15.2692 14.6348 15.345 14.7839 15.4842L15.571 16.2712L15.5783 16.2775C16.6217 15.44 17.8824 14.9176 19.2123 14.7716V13.6792H18.4253C18.2165 13.6792 18.0164 13.5963 17.8688 13.4487C17.7212 13.3011 17.6382 13.1009 17.6382 12.8922ZM19.9993 27.3212C21.4606 27.3211 22.862 26.7404 23.8952 25.7071C24.9284 24.6737 25.5087 23.2722 25.5086 21.8109C25.5085 20.3496 24.9278 18.9482 23.8945 17.915C22.8611 16.8819 21.4596 16.3015 19.9983 16.3016C18.537 16.3018 17.1356 16.8824 16.1025 17.9158C15.0693 18.9492 14.4889 20.3507 14.489 21.8119C14.4892 23.2732 15.0698 24.6746 16.1032 25.7078C17.1366 26.741 18.5381 27.3213 19.9993 27.3212ZM20.4076 20.2903L21.8032 18.8947C21.8758 18.8195 21.9626 18.7595 22.0586 18.7182C22.1546 18.6769 22.2579 18.6551 22.3624 18.6542C22.4669 18.6532 22.5705 18.6731 22.6673 18.7126C22.764 18.7521 22.8519 18.8105 22.9259 18.8844C22.9998 18.9582 23.0583 19.0461 23.0979 19.1428C23.1375 19.2395 23.1575 19.3431 23.1566 19.4476C23.1557 19.5521 23.1341 19.6554 23.0929 19.7515C23.0517 19.8475 22.9918 19.9344 22.9166 20.007L21.521 21.4037C21.583 21.6371 21.5906 21.8815 21.5432 22.1182C21.4958 22.355 21.3948 22.5777 21.2478 22.7692C21.1008 22.9607 20.9118 23.1159 20.6953 23.2228C20.4789 23.3298 20.2408 23.3856 19.9993 23.386C19.7766 23.3841 19.5567 23.3349 19.3544 23.2416C19.1521 23.1483 18.9718 23.0131 18.8257 22.845C18.6795 22.6768 18.5707 22.4796 18.5066 22.2662C18.4424 22.0528 18.4243 21.8283 18.4534 21.6074C18.4825 21.3865 18.5582 21.1743 18.6755 20.9849C18.7928 20.7955 18.949 20.6332 19.1338 20.5086C19.3185 20.3841 19.5276 20.3003 19.7472 20.2626C19.9668 20.225 20.1919 20.2344 20.4076 20.2903Z\" fill=\"#667085\"/>\r\n </svg>\r\n </div>\r\n <div class=\"mx-3 mt-1\">\r\n <div class=\"my-1 card-label header\" *ngIf=\"getCardData?.avgDwellTime === 0\">0 mins</div>\r\n <div class=\"my-1 card-label header\" *ngIf=\"getCardData?.avgDwellTime !== 0\">{{getCardData?.avgDwellTime ? getCardData?.avgDwellTime :'--'}} mins</div>\r\n <div class=\"sub-header\">Avg Dwell Time</div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n <div class=\"card card-border py-0\">\r\n <div class=\"card-body p-0 h-90px mt-3 mx-3\">\r\n <div class=\"d-flex align-items-center me-2\">\r\n <div class=\"flex-shrink-0 mt-3\">\r\n <svg width=\"40\" height=\"41\" viewBox=\"0 0 40 41\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect y=\"0.5\" width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\"/>\r\n <path d=\"M21.9004 12.1675C22.9958 12.1675 24.0423 12.3918 24.9977 12.7987C25.9889 13.2207 26.8809 13.8402 27.6279 14.6087C28.3734 15.3756 28.9756 16.2931 29.3857 17.3162C29.7813 18.299 29.9993 19.3756 29.9993 20.5008C29.9993 21.6277 29.7813 22.7043 29.3857 23.6871C28.9756 24.7068 28.3734 25.6244 27.6263 26.3929C26.8809 27.1598 25.9889 27.7793 24.9945 28.2012C24.0391 28.6081 22.9925 28.8325 21.8988 28.8325C20.8034 28.8325 19.7568 28.6081 18.8014 28.2012C17.8102 27.7793 16.9183 27.1598 16.1729 26.3929L16.1712 26.3912C15.4242 25.6227 14.8236 24.7052 14.4134 23.6871C14.2865 23.3707 14.1774 23.0459 14.0879 22.7127C14.2572 22.7294 14.4297 22.7378 14.6038 22.7378C14.9342 22.7378 15.2565 22.7076 15.5706 22.649C15.6227 22.8098 15.6797 22.9688 15.7415 23.1246C16.0785 23.9617 16.5732 24.7152 17.1885 25.3481C17.8037 25.981 18.5378 26.49 19.3499 26.8366C20.1328 27.1698 20.9938 27.3557 21.8988 27.3557C22.8037 27.3557 23.6631 27.1715 24.4476 26.8366C25.2614 26.49 25.9938 25.981 26.6091 25.3481C27.2243 24.7152 27.7191 23.9601 28.056 23.1246C28.3799 22.3192 28.5605 21.4334 28.5605 20.5025C28.5605 19.5715 28.3815 18.6875 28.056 17.8804C27.7191 17.0432 27.2243 16.2898 26.6091 15.6569C25.9938 15.024 25.2598 14.5149 24.4476 14.1684C23.6647 13.8352 22.8037 13.6493 21.8988 13.6493C20.9938 13.6493 20.1344 13.8335 19.3499 14.1684C19.2799 14.1985 19.21 14.2303 19.1416 14.2621C18.8747 13.8301 18.5524 13.4383 18.1829 13.0984C18.3848 12.9913 18.5915 12.8925 18.8014 12.8021C19.7601 12.3918 20.805 12.1675 21.9004 12.1675ZM20.971 16.5393C20.971 16.335 21.0524 16.1508 21.181 16.0169C21.3112 15.8829 21.4902 15.8009 21.6888 15.8009C21.8874 15.8009 22.0664 15.8829 22.1966 16.0169C22.3268 16.1508 22.4066 16.335 22.4066 16.5393V20.4271L25.2305 22.1501C25.3997 22.2539 25.5137 22.4196 25.5592 22.6021C25.6048 22.7847 25.5837 22.9856 25.4827 23.1597V23.1614C25.3818 23.3355 25.2207 23.4527 25.0433 23.4996C24.8659 23.5465 24.6706 23.5247 24.5013 23.4209H24.4997L21.3405 21.4937C21.2314 21.4318 21.1419 21.3413 21.0768 21.2342C21.0101 21.122 20.971 20.9897 20.971 20.8491V16.5393Z\" fill=\"#667085\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M14.3913 12.6095C16.8164 12.6095 18.7826 14.6321 18.7826 17.1269C18.7826 19.6218 16.8164 21.6444 14.3913 21.6444C11.9661 21.6444 10 19.6218 10 17.1269C10 14.6321 11.9661 12.6095 14.3913 12.6095ZM14.3913 19.7172L16.748 16.7201H15.2848V15.1261H13.4977V16.7201H12.0345L14.3913 19.7172Z\" fill=\"#F04438\"/>\r\n </svg>\r\n </div>\r\n <div class=\"mx-3 mt-1\">\r\n <div class=\"my-1 card-label header\" *ngIf=\"getCardData?.avgDownTime === 0\">0 mins</div>\r\n <div class=\"my-1 card-label header\" *ngIf=\"getCardData?.avgDownTime !== 0\">{{getCardData?.avgDownTime ? getCardData?.avgDownTime :'--'}} mins</div>\r\n <div class=\"sub-header\">Avg Down Time</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4 mt-3 position-relative\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"card-label header\">{{getCardData?.potentialBuyers?.rate ? getCardData?.potentialBuyers?.rate :'--'}}%</span>\r\n <span class=\"sub-header \">Potential Buyers</span>\r\n </h3>\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <div *ngIf=\"cardNodata\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body pb-0 px-0 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata1\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title1\">No data found</div>\r\n <!-- <div class=\"nodata-sub\">There is no result for this conversion funnel</div> -->\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!cardNodata\" class=\"text-center\" id=\"PotentialBuyers\"></div>\r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.potentialBuyers?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.potentialBuyers?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\">\r\n <span *ngIf=\"getCardGraphData?.potentialBuyers?.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"getCardGraphData?.potentialBuyers?.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.potentialBuyers?.PreviousData ? getCardGraphData?.potentialBuyers?.PreviousData:'--'}}%</span>\r\n <span class=\"week-font\">\r\n vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"position-absolute end-0\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M6 12L10 8L6 4\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"col-md-8 mt-3\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <div class=\"px-2\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"card-label header\">Potential Buyer Distribution</span>\r\n <span class=\"sub-header\">Category-wise</span>\r\n </h3> \r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-9\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6 px-0\">\r\n <div class=\"card-body p-0\">\r\n <div class=\"text-start ms-10 mt-7 mb-3\"><span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"25\" height=\"24\" viewBox=\"0 0 25 24\" fill=\"none\">\r\n <path d=\"M20.25 21V19C20.25 17.9391 19.8286 16.9217 19.0784 16.1716C18.3283 15.4214 17.3109 15 16.25 15H8.25C7.18913 15 6.17172 15.4214 5.42157 16.1716C4.67143 16.9217 4.25 17.9391 4.25 19V21M16.25 7C16.25 9.20914 14.4591 11 12.25 11C10.0409 11 8.25 9.20914 8.25 7C8.25 4.79086 10.0409 3 12.25 3C14.4591 3 16.25 4.79086 16.25 7Z\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span><span class=\"left-card-count mt-2 ms-1\">{{getCardData?.potentialBuyers?.potentialBuyersSingle?.count ? getCardData?.potentialBuyers?.potentialBuyersSingle?.count.toLocaleString('en-IN'):'--'}}</span> <span class=\"left-card-count-header ms-1\">Single</span></div>\r\n <div class=\"text-start ms-15 mb-3\"><span class=\"badge badge-light-default week-font\">{{getCardData?.potentialBuyers?.potentialBuyersSingle?.ageGroup ? getCardData?.potentialBuyers?.potentialBuyersSingle?.ageGroup:'--'}} age</span></div>\r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.potentialBuyers?.potentialBuyersSingle?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.potentialBuyers?.potentialBuyersSingle?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\">\r\n <span *ngIf=\"getCardGraphData?.potentialBuyers?.potentialBuyersSingle?.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"getCardGraphData?.potentialBuyers?.potentialBuyersSingle?.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.potentialBuyers?.potentialBuyersSingle?.PreviousData ? getCardGraphData?.potentialBuyers?.potentialBuyersSingle?.PreviousData:'--'}}%</span>\r\n <span\r\n class=\"week-font\"> vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6 px-0\">\r\n <div class=\"card-body p-0\">\r\n <div class=\"text-start ms-10 mt-7 mb-3\"><span> <svg width=\"26\" height=\"24\" viewBox=\"0 0 26 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect width=\"26\" height=\"24\" fill=\"#DCDCDC\"/>\r\n <rect x=\"-460.5\" y=\"-340.5\" width=\"783\" height=\"1947\" rx=\"4.5\" stroke=\"#9747FF\" stroke-dasharray=\"10 5\"/>\r\n <mask id=\"path-2-inside-1_707_13106\" fill=\"white\">\r\n <path d=\"M-189 -89C-189 -95.6274 -183.627 -101 -177 -101H295C301.627 -101 307 -95.6274 307 -89V85C307 91.6274 301.627 97 295 97H-177C-183.627 97 -189 91.6274 -189 85V-89Z\"/>\r\n </mask>\r\n <path d=\"M-189 -89C-189 -95.6274 -183.627 -101 -177 -101H295C301.627 -101 307 -95.6274 307 -89V85C307 91.6274 301.627 97 295 97H-177C-183.627 97 -189 91.6274 -189 85V-89Z\" fill=\"white\"/>\r\n <path d=\"M-190 -89C-190 -96.1797 -184.18 -102 -177 -102H294C301.18 -102 307 -96.1797 307 -89C307 -95.0751 301.627 -100 295 -100H-177C-183.075 -100 -188 -95.0751 -188 -89H-190ZM307 85C307 92.1797 301.18 98 294 98H-177C-184.18 98 -190 92.1797 -190 85H-188C-188 91.0751 -183.075 96 -177 96H295C301.627 96 307 91.0751 307 85ZM-177 98C-184.18 98 -190 92.1797 -190 85V-89C-190 -96.1797 -184.18 -102 -177 -102V-100C-183.075 -100 -188 -95.0751 -188 -89V85C-188 91.0751 -183.075 96 -177 96V98ZM307 -101V97V-101Z\" fill=\"#D0D5DD\" mask=\"url(#path-2-inside-1_707_13106)\"/>\r\n <mask id=\"path-6-inside-2_707_13106\" fill=\"white\">\r\n <path d=\"M7.71064 7.38462C8.19552 7.38462 8.67565 7.28911 9.12362 7.10356C9.57159 6.918 9.97863 6.64603 10.3215 6.30316C10.6644 5.9603 10.9363 5.55326 11.1219 5.10529C11.3074 4.65732 11.4029 4.17719 11.4029 3.69231C11.4029 3.20743 11.3074 2.72729 11.1219 2.27932C10.9363 1.83135 10.6644 1.42431 10.3215 1.08145C9.97863 0.73859 9.57159 0.466616 9.12362 0.28106C8.67565 0.0955043 8.19552 -7.22529e-09 7.71064 0C6.73138 1.45921e-08 5.79222 0.38901 5.09978 1.08145C4.40734 1.77389 4.01833 2.71305 4.01833 3.69231C4.01833 4.67157 4.40734 5.61072 5.09978 6.30316C5.79222 6.99561 6.73138 7.38462 7.71064 7.38462ZM18.7876 7.38462C19.2724 7.38462 19.7526 7.28911 20.2005 7.10356C20.6485 6.918 21.0556 6.64603 21.3984 6.30316C21.7413 5.9603 22.0133 5.55326 22.1988 5.10529C22.3844 4.65732 22.4799 4.17719 22.4799 3.69231C22.4799 3.20743 22.3844 2.72729 22.1988 2.27932C22.0133 1.83135 21.7413 1.42431 21.3984 1.08145C21.0556 0.73859 20.6485 0.466616 20.2005 0.28106C19.7526 0.0955043 19.2724 -7.22529e-09 18.7876 0C17.8083 1.45921e-08 16.8691 0.38901 16.1767 1.08145C15.4843 1.77389 15.0953 2.71305 15.0953 3.69231C15.0953 4.67157 15.4843 5.61072 16.1767 6.30316C16.8691 6.99561 17.8083 7.38462 18.7876 7.38462ZM0.941406 10.736C0.941406 10.4575 0.996258 10.1818 1.10283 9.92448C1.2094 9.66719 1.3656 9.43342 1.56252 9.2365C1.75944 9.03958 1.99321 8.88338 2.2505 8.77681C2.50778 8.67024 2.78354 8.61539 3.06202 8.61539H8.98448C8.55169 9.36345 8.32452 10.2127 8.32602 11.0769C8.32519 11.7755 8.47341 12.4662 8.76079 13.1029C9.04816 13.7396 9.46807 14.3077 9.99248 14.7692H8.60048C8.01418 14.7687 7.43803 14.9222 6.92969 15.2144C6.42134 15.5065 5.99864 15.927 5.70387 16.4338C3.7211 16.0449 2.51618 15.0782 1.81464 13.992C0.941406 12.64 0.941406 11.2431 0.941406 11.0012V10.736ZM17.8977 14.7692C18.484 14.7687 19.0602 14.9222 19.5685 15.2144C20.0769 15.5065 20.4996 15.927 20.7943 16.4338C22.7771 16.0449 23.982 15.0782 24.6836 13.992C25.5568 12.64 25.5568 11.2431 25.5568 11.0012V10.7366C25.5569 10.4581 25.5021 10.1823 25.3955 9.9249C25.289 9.66755 25.1328 9.4337 24.9359 9.23672C24.739 9.03973 24.5052 8.88348 24.2478 8.77687C23.9905 8.67026 23.7147 8.61539 23.4362 8.61539H17.5137C17.9465 9.36345 18.1737 10.2127 18.1722 11.0769C18.173 11.7755 18.0248 12.4662 17.7374 13.1029C17.45 13.7396 17.0301 14.3077 16.5057 14.7692H17.8977ZM16.9414 11.0769C16.9414 12.0562 16.5524 12.9953 15.86 13.6878C15.1675 14.3802 14.2284 14.7692 13.2491 14.7692C12.2698 14.7692 11.3307 14.3802 10.6382 13.6878C9.9458 12.9953 9.55679 12.0562 9.55679 11.0769C9.55679 10.0977 9.9458 9.15851 10.6382 8.46607C11.3307 7.77363 12.2698 7.38462 13.2491 7.38462C14.2284 7.38462 15.1675 7.77363 15.86 8.46607C16.5524 9.15851 16.9414 10.0977 16.9414 11.0769ZM6.47987 18.1206C6.47987 17.5582 6.70329 17.0188 7.10098 16.6211C7.49867 16.2234 8.03806 16 8.60048 16H17.8977C18.4601 16 18.9995 16.2234 19.3972 16.6211C19.7949 17.0188 20.0183 17.5582 20.0183 18.1206V18.3858C20.0183 18.6283 20.0183 20.0246 19.1451 21.3766C18.2325 22.7895 16.4694 24 13.2491 24C10.0288 24 8.26571 22.7895 7.3531 21.3766C6.47987 20.0246 6.47987 18.6277 6.47987 18.3858V18.1206Z\"/>\r\n </mask>\r\n <path d=\"M7.71064 7.38462C8.19552 7.38462 8.67565 7.28911 9.12362 7.10356C9.57159 6.918 9.97863 6.64603 10.3215 6.30316C10.6644 5.9603 10.9363 5.55326 11.1219 5.10529C11.3074 4.65732 11.4029 4.17719 11.4029 3.69231C11.4029 3.20743 11.3074 2.72729 11.1219 2.27932C10.9363 1.83135 10.6644 1.42431 10.3215 1.08145C9.97863 0.73859 9.57159 0.466616 9.12362 0.28106C8.67565 0.0955043 8.19552 -7.22529e-09 7.71064 0C6.73138 1.45921e-08 5.79222 0.38901 5.09978 1.08145C4.40734 1.77389 4.01833 2.71305 4.01833 3.69231C4.01833 4.67157 4.40734 5.61072 5.09978 6.30316C5.79222 6.99561 6.73138 7.38462 7.71064 7.38462ZM18.7876 7.38462C19.2724 7.38462 19.7526 7.28911 20.2005 7.10356C20.6485 6.918 21.0556 6.64603 21.3984 6.30316C21.7413 5.9603 22.0133 5.55326 22.1988 5.10529C22.3844 4.65732 22.4799 4.17719 22.4799 3.69231C22.4799 3.20743 22.3844 2.72729 22.1988 2.27932C22.0133 1.83135 21.7413 1.42431 21.3984 1.08145C21.0556 0.73859 20.6485 0.466616 20.2005 0.28106C19.7526 0.0955043 19.2724 -7.22529e-09 18.7876 0C17.8083 1.45921e-08 16.8691 0.38901 16.1767 1.08145C15.4843 1.77389 15.0953 2.71305 15.0953 3.69231C15.0953 4.67157 15.4843 5.61072 16.1767 6.30316C16.8691 6.99561 17.8083 7.38462 18.7876 7.38462ZM0.941406 10.736C0.941406 10.4575 0.996258 10.1818 1.10283 9.92448C1.2094 9.66719 1.3656 9.43342 1.56252 9.2365C1.75944 9.03958 1.99321 8.88338 2.2505 8.77681C2.50778 8.67024 2.78354 8.61539 3.06202 8.61539H8.98448C8.55169 9.36345 8.32452 10.2127 8.32602 11.0769C8.32519 11.7755 8.47341 12.4662 8.76079 13.1029C9.04816 13.7396 9.46807 14.3077 9.99248 14.7692H8.60048C8.01418 14.7687 7.43803 14.9222 6.92969 15.2144C6.42134 15.5065 5.99864 15.927 5.70387 16.4338C3.7211 16.0449 2.51618 15.0782 1.81464 13.992C0.941406 12.64 0.941406 11.2431 0.941406 11.0012V10.736ZM17.8977 14.7692C18.484 14.7687 19.0602 14.9222 19.5685 15.2144C20.0769 15.5065 20.4996 15.927 20.7943 16.4338C22.7771 16.0449 23.982 15.0782 24.6836 13.992C25.5568 12.64 25.5568 11.2431 25.5568 11.0012V10.7366C25.5569 10.4581 25.5021 10.1823 25.3955 9.9249C25.289 9.66755 25.1328 9.4337 24.9359 9.23672C24.739 9.03973 24.5052 8.88348 24.2478 8.77687C23.9905 8.67026 23.7147 8.61539 23.4362 8.61539H17.5137C17.9465 9.36345 18.1737 10.2127 18.1722 11.0769C18.173 11.7755 18.0248 12.4662 17.7374 13.1029C17.45 13.7396 17.0301 14.3077 16.5057 14.7692H17.8977ZM16.9414 11.0769C16.9414 12.0562 16.5524 12.9953 15.86 13.6878C15.1675 14.3802 14.2284 14.7692 13.2491 14.7692C12.2698 14.7692 11.3307 14.3802 10.6382 13.6878C9.9458 12.9953 9.55679 12.0562 9.55679 11.0769C9.55679 10.0977 9.9458 9.15851 10.6382 8.46607C11.3307 7.77363 12.2698 7.38462 13.2491 7.38462C14.2284 7.38462 15.1675 7.77363 15.86 8.46607C16.5524 9.15851 16.9414 10.0977 16.9414 11.0769ZM6.47987 18.1206C6.47987 17.5582 6.70329 17.0188 7.10098 16.6211C7.49867 16.2234 8.03806 16 8.60048 16H17.8977C18.4601 16 18.9995 16.2234 19.3972 16.6211C19.7949 17.0188 20.0183 17.5582 20.0183 18.1206V18.3858C20.0183 18.6283 20.0183 20.0246 19.1451 21.3766C18.2325 22.7895 16.4694 24 13.2491 24C10.0288 24 8.26571 22.7895 7.3531 21.3766C6.47987 20.0246 6.47987 18.6277 6.47987 18.3858V18.1206Z\" stroke=\"#98A2B3\" stroke-width=\"3\" mask=\"url(#path-6-inside-2_707_13106)\"/>\r\n </svg></span><span class=\"left-card-count ms-1 mt-2\">{{getCardData?.potentialBuyers?.potentialBuyersGroup?.count ? getCardData?.potentialBuyers?.potentialBuyersGroup?.count.toLocaleString('en-IN'):'--'}}</span> <span class=\"left-card-count-header ms-1\">Group</span></div>\r\n <div class=\"text-start ms-15 mb-3\"><span class=\"badge badge-light-default week-font\">{{getCardData?.potentialBuyers?.potentialBuyersGroup?.ageGroup ? getCardData?.potentialBuyers?.potentialBuyersGroup?.ageGroup:'--'}} age</span></div>\r\n \r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.potentialBuyers?.potentialBuyersGroup?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.potentialBuyers?.potentialBuyersGroup?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\">\r\n <span *ngIf=\"getCardGraphData?.potentialBuyers?.potentialBuyersGroup?.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"getCardGraphData?.potentialBuyers?.potentialBuyersGroup?.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.potentialBuyers?.potentialBuyersGroup?.PreviousData ? getCardGraphData?.potentialBuyers?.potentialBuyersGroup?.PreviousData:'--'}}%</span>\r\n <span\r\n class=\"week-font\"> vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n \r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-3 px-0\">\r\n <div class=\"card-body p-0\">\r\n <div class=\"text-center mt-7 mb-3\"><span class=\"left-card-count mt-2\">{{getCardData?.potentialBuyers?.potentialBuyersPersons?.count ? getCardData?.potentialBuyers?.potentialBuyersPersons?.count.toLocaleString('en-IN'):'--'}}</span> <span class=\"left-card-count-header ms-1\">Persons</span></div>\r\n <div class=\"text-center mb-3\"><span class=\"badge badge-light-default week-font\">{{getCardData?.potentialBuyers?.potentialBuyersSingle?.ageGroup ? getCardData.potentialBuyers?.potentialBuyersSingle?.ageGroup:'--'}} age</span>\r\n </div>\r\n \r\n </div>\r\n <div class=\"card-footer text-center p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2 ms-2\"><span class=\"percent-value\"></span><span\r\n class=\"ms-2 week-font\"> Avg. Group size</span>\r\n \r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M6 12L10 8L6 4\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div> -->\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n\r\n </div>\r\n <div class=\"col-md-5\">\r\n <div class=\"card mb-3\">\r\n <div class=\"card-header border-0 pt-3 ps-5\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text\">Conversion Funnel \r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" \r\n placement=\"top\" \r\n ngbTooltip=\"Total opportunity of sales conversion versus total walkins\">\r\n <g clip-path=\"url(#clip0_1432_80035)\">\r\n <path d=\"M8.00065 10.6666V7.99992M8.00065 5.33325H8.00732M14.6673 7.99992C14.6673 11.6818 11.6826 14.6666 8.00065 14.6666C4.31875 14.6666 1.33398 11.6818 1.33398 7.99992C1.33398 4.31802 4.31875 1.33325 8.00065 1.33325C11.6826 1.33325 14.6673 4.31802 14.6673 7.99992Z\" stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1432_80035\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"text-sub mb-2\">{{headerData?.date?.startDate | date:'dd MMM, yyyy'}} \u2013 {{headerData?.date?.endDate | date:'dd MMM, yyyy'}}</span>\r\n </h3>\r\n \r\n </div>\r\n\r\n <div class=\"card-body p-0\" >\r\n <div *ngIf=\"heatloading\" class=\"row loader d-flex justify-content-center align-items-center h-275px\">\r\n <div class=\"shimmer pt-0\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"heatnoData\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this conversion funnel</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!heatloading && !heatnoData\" class=\"text-center mb-3\" id=\"chartdiv\"></div>\r\n </div>\r\n </div>\r\n \r\n <div *ngIf=\"mpaloading && storeIdarray?.length > 1 || mapnoData && storeIdarray?.length > 1 || !storeIdarray?.length\" class=\"card\">\r\n <div class=\"card-header border-0 pt-3 ps-7 pe-0\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text\" >Explore</span> \r\n </h3>\r\n \r\n </div>\r\n <div *ngIf=\"mpaloading\" class=\"row loader d-flex justify-content-center align-items-center h-225px\">\r\n <div class=\"shimmer pt-0\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"mapnoData\" class=\"row px-3\">\r\n <div class=\"col-md-12\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-map\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this Store map</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!mpaloading && !mapnoData && storeIdarray?.length > 1\" class=\"card\">\r\n <div class=\"card-header border-0 pt-3 ps-7 pe-0\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text\" >Explore</span> \r\n </h3>\r\n <div class=\"card-toolbar mt-0\">\r\n \r\n <button *ngIf=\"!mpaloading && !mapnoData\" type=\"button\" (click)=\"exporeView()\"\r\n class=\"btn me-8 btn-light-primary1 rounded-3 text-nowrap border-val\">\r\n <span class=\"ms-2\">Explore</span>\r\n </button>\r\n </div>\r\n \r\n </div>\r\n \r\n <div *ngIf=\"!mapnoData\" class=\"card-body col-md-12 pt-0 pb-5 ps-7\">\r\n <div id=\"map\" class=\"w-100\" ></div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"storeIdarray?.length === 1\" class=\"card pb-2\">\r\n <div class=\"card-header border-0 pt-3 ps-5 pe-0\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text\">Recap Video \r\n <svg placement=\"right\"\r\n ngbTooltip=\"A quick recap of the store activity along with the avg tech infrastructure downtime status\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1432_80035)\">\r\n <path d=\"M8.00065 10.6666V7.99992M8.00065 5.33325H8.00732M14.6673 7.99992C14.6673 11.6818 11.6826 14.6666 8.00065 14.6666C4.31875 14.6666 1.33398 11.6818 1.33398 7.99992C1.33398 4.31802 4.31875 1.33325 8.00065 1.33325C11.6826 1.33325 14.6673 4.31802 14.6673 7.99992Z\" stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1432_80035\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n \r\n \r\n </span>\r\n \r\n <span class=\"text-sub mb-2\">Dated: {{headerData?.date?.endDate | date:' dd MMM,yyyy'}}</span>\r\n </h3>\r\n <div class=\"card-toolbar mt-0\">\r\n <button type=\"button\" \r\n class=\"btn btn-default btn-outline btn-outline-default rounded-3 text-nowrap border-val text-start\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"14\" viewBox=\"0 0 16 14\" fill=\"none\">\r\n <g id=\"Group\">\r\n <path id=\"Vector\" d=\"M9.51953 0.333984C10.3958 0.333984 11.2331 0.513477 11.9974 0.838974C12.7904 1.17653 13.5039 1.67214 14.1016 2.28697C14.6979 2.90046 15.1797 3.6345 15.5078 4.45293C15.8242 5.23922 15.9987 6.10051 15.9987 7.00065C15.9987 7.90213 15.8242 8.76343 15.5078 9.54971C15.1797 10.3655 14.6979 11.0995 14.1003 11.7143C13.5039 12.3278 12.7904 12.8234 11.9948 13.161C11.2305 13.4865 10.3932 13.666 9.51823 13.666C8.64193 13.666 7.80469 13.4865 7.04036 13.161C6.2474 12.8234 5.53385 12.3278 4.9375 11.7143L4.9362 11.713C4.33854 11.0982 3.85807 10.3641 3.52995 9.54971C3.42839 9.29655 3.34115 9.03668 3.26953 8.77013C3.40495 8.78352 3.54297 8.79022 3.68229 8.79022C3.94661 8.79022 4.20443 8.76611 4.45573 8.71922C4.4974 8.84782 4.54297 8.97507 4.59245 9.09964C4.86198 9.76939 5.25781 10.3722 5.75 10.8785C6.24219 11.3848 6.82943 11.792 7.47917 12.0693C8.10547 12.3359 8.79427 12.4845 9.51823 12.4845C10.2422 12.4845 10.9297 12.3372 11.5573 12.0693C12.2083 11.792 12.7943 11.3848 13.2865 10.8785C13.7786 10.3722 14.1745 9.76805 14.444 9.09964C14.7031 8.45534 14.8477 7.74675 14.8477 7.00199C14.8477 6.25723 14.7044 5.54998 14.444 4.90434C14.1745 4.23459 13.7786 3.63182 13.2865 3.12549C12.7943 2.61916 12.207 2.21196 11.5573 1.93468C10.931 1.66812 10.2422 1.51944 9.51823 1.51944C8.79427 1.51944 8.10677 1.66678 7.47917 1.93468C7.42318 1.95879 7.36719 1.98424 7.3125 2.00969C7.09896 1.6641 6.84115 1.35066 6.54557 1.07874C6.70703 0.993016 6.8724 0.913986 7.04036 0.841653C7.80729 0.513477 8.64323 0.333984 9.51953 0.333984ZM8.77604 3.83141C8.77604 3.66799 8.84115 3.52064 8.94401 3.41348C9.04818 3.30632 9.19141 3.24069 9.35026 3.24069C9.50911 3.24069 9.65234 3.30632 9.75651 3.41348C9.86068 3.52064 9.92448 3.66799 9.92448 3.83141V6.94171L12.1836 8.32005C12.319 8.4031 12.4102 8.53571 12.4466 8.68172C12.4831 8.82772 12.4661 8.98846 12.3854 9.12777V9.12911C12.3047 9.26842 12.1758 9.36218 12.0339 9.39969C11.8919 9.43719 11.7357 9.41978 11.6003 9.33673H11.599L9.07161 7.79497C8.98438 7.74541 8.91276 7.67308 8.86068 7.58735C8.80729 7.4976 8.77604 7.39178 8.77604 7.27927V3.83141Z\" fill=\"#667085\"/>\r\n <path id=\"Vector_2\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M3.51302 0.687622C5.45312 0.687622 7.02604 2.30573 7.02604 4.30158C7.02604 6.29743 5.45312 7.91554 3.51302 7.91554C1.57292 7.91554 0 6.29743 0 4.30158C0 2.30573 1.57292 0.687622 3.51302 0.687622ZM3.51302 6.37378L5.39844 3.97608H4.22786V2.70088H2.79818V3.97608H1.6276L3.51302 6.37378Z\" fill=\"#F04438\"/>\r\n </g>\r\n </svg>\r\n <span class=\"ms-2\">{{getRecapVideoData?.downTime ?? '--'}} Mins</span>\r\n </button>\r\n <button type=\"button\" \r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\">\r\n <svg *ngIf=\"getRecapVideoData?.health ==='GOOD'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g id=\"Frame\">\r\n <path id=\"Vector\" d=\"M13.4349 2.5C14.8238 2.5 15.9871 3.01389 16.9249 4.04167C17.8627 5.06944 18.3313 6.29167 18.3307 7.70833C18.3307 7.95833 18.3168 8.205 18.2891 8.44833C18.2613 8.69167 18.2127 8.93111 18.1432 9.16667H12.9349L11.5182 7.04167C11.4488 6.93056 11.3516 6.84028 11.2266 6.77083C11.1016 6.70139 10.9696 6.66667 10.8307 6.66667C10.6502 6.66667 10.4868 6.72222 10.3407 6.83333C10.1946 6.94444 10.0941 7.08333 10.0391 7.25L8.91406 10.625L8.1849 9.54167C8.11545 9.43056 8.01823 9.34028 7.89323 9.27083C7.76823 9.20139 7.63628 9.16667 7.4974 9.16667H1.85156C1.78212 8.93056 1.73351 8.69083 1.70573 8.4475C1.67795 8.20417 1.66406 7.96472 1.66406 7.72917C1.66406 6.29861 2.12934 5.06944 3.0599 4.04167C3.99045 3.01389 5.15017 2.5 6.53906 2.5C7.20573 2.5 7.83434 2.63194 8.4249 2.89583C9.01545 3.15972 9.53962 3.52778 9.9974 4C10.4418 3.52778 10.9593 3.15972 11.5499 2.89583C12.1405 2.63194 12.7688 2.5 13.4349 2.5ZM9.9974 17.5C9.7474 17.5 9.50767 17.4547 9.27823 17.3642C9.04878 17.2736 8.84406 17.1383 8.66406 16.9583L3.08073 11.3542C2.9974 11.2708 2.92101 11.1875 2.85156 11.1042C2.78212 11.0208 2.71267 10.9306 2.64323 10.8333H7.03906L8.45573 12.9583C8.52517 13.0694 8.6224 13.1597 8.7474 13.2292C8.8724 13.2986 9.00434 13.3333 9.14323 13.3333C9.32378 13.3333 9.49045 13.2778 9.64323 13.1667C9.79601 13.0556 9.90017 12.9167 9.95573 12.75L11.0807 9.375L11.7891 10.4583C11.8724 10.5694 11.9766 10.6597 12.1016 10.7292C12.2266 10.7986 12.3585 10.8333 12.4974 10.8333H17.3307L17.1224 11.0833L16.9141 11.3333L11.3099 16.9583C11.1293 17.1389 10.928 17.2744 10.7057 17.365C10.4835 17.4556 10.2474 17.5006 9.9974 17.5Z\" fill=\"#12B76A\"/>\r\n </g>\r\n </svg>\r\n <svg *ngIf=\"getRecapVideoData?.health ==='AVERAGE'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g id=\"Frame\">\r\n <path id=\"Vector\" d=\"M13.4349 2.5C14.8238 2.5 15.9871 3.01389 16.9249 4.04167C17.8627 5.06944 18.3313 6.29167 18.3307 7.70833C18.3307 7.95833 18.3168 8.205 18.2891 8.44833C18.2613 8.69167 18.2127 8.93111 18.1432 9.16667H12.9349L11.5182 7.04167C11.4488 6.93056 11.3516 6.84028 11.2266 6.77083C11.1016 6.70139 10.9696 6.66667 10.8307 6.66667C10.6502 6.66667 10.4868 6.72222 10.3407 6.83333C10.1946 6.94444 10.0941 7.08333 10.0391 7.25L8.91406 10.625L8.1849 9.54167C8.11545 9.43056 8.01823 9.34028 7.89323 9.27083C7.76823 9.20139 7.63628 9.16667 7.4974 9.16667H1.85156C1.78212 8.93056 1.73351 8.69083 1.70573 8.4475C1.67795 8.20417 1.66406 7.96472 1.66406 7.72917C1.66406 6.29861 2.12934 5.06944 3.0599 4.04167C3.99045 3.01389 5.15017 2.5 6.53906 2.5C7.20573 2.5 7.83434 2.63194 8.4249 2.89583C9.01545 3.15972 9.53962 3.52778 9.9974 4C10.4418 3.52778 10.9593 3.15972 11.5499 2.89583C12.1405 2.63194 12.7688 2.5 13.4349 2.5ZM9.9974 17.5C9.7474 17.5 9.50767 17.4547 9.27823 17.3642C9.04878 17.2736 8.84406 17.1383 8.66406 16.9583L3.08073 11.3542C2.9974 11.2708 2.92101 11.1875 2.85156 11.1042C2.78212 11.0208 2.71267 10.9306 2.64323 10.8333H7.03906L8.45573 12.9583C8.52517 13.0694 8.6224 13.1597 8.7474 13.2292C8.8724 13.2986 9.00434 13.3333 9.14323 13.3333C9.32378 13.3333 9.49045 13.2778 9.64323 13.1667C9.79601 13.0556 9.90017 12.9167 9.95573 12.75L11.0807 9.375L11.7891 10.4583C11.8724 10.5694 11.9766 10.6597 12.1016 10.7292C12.2266 10.7986 12.3585 10.8333 12.4974 10.8333H17.3307L17.1224 11.0833L16.9141 11.3333L11.3099 16.9583C11.1293 17.1389 10.928 17.2744 10.7057 17.365C10.4835 17.4556 10.2474 17.5006 9.9974 17.5Z\" fill=\"#FACC15\"/>\r\n </g>\r\n </svg>\r\n <svg *ngIf=\"getRecapVideoData?.health ==='BAD'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g id=\"Frame\">\r\n <path id=\"Vector\" d=\"M13.4349 2.5C14.8238 2.5 15.9871 3.01389 16.9249 4.04167C17.8627 5.06944 18.3313 6.29167 18.3307 7.70833C18.3307 7.95833 18.3168 8.205 18.2891 8.44833C18.2613 8.69167 18.2127 8.93111 18.1432 9.16667H12.9349L11.5182 7.04167C11.4488 6.93056 11.3516 6.84028 11.2266 6.77083C11.1016 6.70139 10.9696 6.66667 10.8307 6.66667C10.6502 6.66667 10.4868 6.72222 10.3407 6.83333C10.1946 6.94444 10.0941 7.08333 10.0391 7.25L8.91406 10.625L8.1849 9.54167C8.11545 9.43056 8.01823 9.34028 7.89323 9.27083C7.76823 9.20139 7.63628 9.16667 7.4974 9.16667H1.85156C1.78212 8.93056 1.73351 8.69083 1.70573 8.4475C1.67795 8.20417 1.66406 7.96472 1.66406 7.72917C1.66406 6.29861 2.12934 5.06944 3.0599 4.04167C3.99045 3.01389 5.15017 2.5 6.53906 2.5C7.20573 2.5 7.83434 2.63194 8.4249 2.89583C9.01545 3.15972 9.53962 3.52778 9.9974 4C10.4418 3.52778 10.9593 3.15972 11.5499 2.89583C12.1405 2.63194 12.7688 2.5 13.4349 2.5ZM9.9974 17.5C9.7474 17.5 9.50767 17.4547 9.27823 17.3642C9.04878 17.2736 8.84406 17.1383 8.66406 16.9583L3.08073 11.3542C2.9974 11.2708 2.92101 11.1875 2.85156 11.1042C2.78212 11.0208 2.71267 10.9306 2.64323 10.8333H7.03906L8.45573 12.9583C8.52517 13.0694 8.6224 13.1597 8.7474 13.2292C8.8724 13.2986 9.00434 13.3333 9.14323 13.3333C9.32378 13.3333 9.49045 13.2778 9.64323 13.1667C9.79601 13.0556 9.90017 12.9167 9.95573 12.75L11.0807 9.375L11.7891 10.4583C11.8724 10.5694 11.9766 10.6597 12.1016 10.7292C12.2266 10.7986 12.3585 10.8333 12.4974 10.8333H17.3307L17.1224 11.0833L16.9141 11.3333L11.3099 16.9583C11.1293 17.1389 10.928 17.2744 10.7057 17.365C10.4835 17.4556 10.2474 17.5006 9.9974 17.5Z\" fill=\"#F04438\"/>\r\n </g>\r\n </svg>\r\n <span class=\"ms-2\">{{getRecapVideoData?.health ?? '--'}}</span>\r\n </button>\r\n <!-- <button type=\"button\" (click)=\"cameraView()\"\r\n class=\"btn mx-2 btn-light-primary1 rounded-3 text-nowrap border-val\">\r\n <span class=\"ms-2\">Live View</span>\r\n </button> -->\r\n </div>\r\n \r\n </div>\r\n <div *ngIf=\"recaplaoding\" class=\"row loader d-flex justify-content-center align-items-center h-225px\">\r\n <div class=\"shimmer pt-0\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"recapnoData\" class=\"row px-3\">\r\n <div class=\"col-md-12\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-map-recap\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this Recap video</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!recaplaoding && !recapnoData\" class=\"card-body p-0\">\r\n <div class=\"row mx-3\">\r\n \r\n <div class=\"carousel\">\r\n <div class=\"carousel-inner\">\r\n <div\r\n class=\"carousel-item\"\r\n *ngFor=\"let group of recapsGrouped; let i = index\"\r\n [class.active]=\"i === currentIndex\"\r\n >\r\n <div class=\"row\">\r\n <div *ngFor=\"let pair of group\" [ngClass]=\"colValue\">\r\n <img [src]=\"pair.thumbImage\"\r\n (click)=\"videoClick(pair)\"\r\n class=\"image-thumb mb-8 d-block w-100 cursor-pointer\"\r\n alt=\"Image {{ i + 1 }}\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <!-- Conditionally display Previous button -->\r\n <button class=\"carousel-control-prev\" *ngIf=\"currentIndex > 0\" (click)=\"prevSlide()\">\r\n <span class=\"carousel-control-prev-icon\"></span>\r\n </button>\r\n \r\n <!-- Conditionally display Next button -->\r\n <button class=\"carousel-control-next\" *ngIf=\"currentIndex < recapsGrouped.length - 1\" (click)=\"nextSlide()\">\r\n <span class=\"carousel-control-next-icon\"></span>\r\n </button>\r\n \r\n <!-- Navigation Dots -->\r\n <div *ngIf=\"recapsGrouped.length > 1\" class=\"row\">\r\n <ul class=\"carousel-indicators\">\r\n <li *ngFor=\"let group of recapsGrouped; let i = index\"\r\n [class.active]=\"i === currentIndex\"\r\n (click)=\"goToSlide(i)\">\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n </div>\r\n \r\n \r\n <!-- <video controls autoplay class=\"recap-img p-3\" [src]=\"getRecapData?.videoURL\"> -->\r\n <!-- <source type=\"video/mp4\"> -->\r\n <!-- <source [src]=\"getRecapData?.videoURL\" type=\"video/ogg\"> -->\r\n <!-- </video> -->\r\n <!-- <div #mapContainer style=\"height:230px;\"></div> -->\r\n <!-- <div class=\"col-md-6 mb-3\"><img src=\"assets/tango/Images/recap.svg\" alt=\"\" class=\"recap-img\"></div>\r\n <div class=\"col-md-6 mb-3\"><img src=\"assets/tango/Images/recap.svg\" alt=\"\" class=\"recap-img\"></div> -->\r\n\r\n </div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n <div class=\"col-md-12 mt-3\">\r\n <lib-traffic-charts class=\"my-2\"></lib-traffic-charts>\r\n \r\n <lib-traffic-card-charts *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" class=\"my-2\"></lib-traffic-card-charts>\r\n <lib-image-doc *ngIf=\"storeIdarray?.length === 1\" class=\"my-2\"></lib-image-doc>\r\n </div>\r\n <div *ngIf=\"storeIdarray?.length > 1\" class=\"col-md-6 mt-3\">\r\n <div class=\"card h-100\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text mb-2\">Performance Matrix\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" placement=\"right\"\r\n ngbTooltip=\"Store performance based on metrics selected\">\r\n <g clip-path=\"url(#clip0_1432_80035)\">\r\n <path\r\n d=\"M8.00065 10.6666V7.99992M8.00065 5.33325H8.00732M14.6673 7.99992C14.6673 11.6818 11.6826 14.6666 8.00065 14.6666C4.31875 14.6666 1.33398 11.6818 1.33398 7.99992C1.33398 4.31802 4.31875 1.33325 8.00065 1.33325C11.6826 1.33325 14.6673 4.31802 14.6673 7.99992Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1432_80035\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"text-sub mb-2\">{{headerData?.date?.startDate | date:'dd MMM, yyyy'}} \u2013 {{headerData?.date?.endDate | date:'dd MMM, yyyy'}}</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n \r\n </div>\r\n </div>\r\n <div class=\"row mx-3 align-items-center w-75\">\r\n <div class=\"d-flex align-items-center ms-3\">\r\n <select class=\"form-select-sm form-select me-2 dropselect\" [(ngModel)]=\"footfallValue\" (change)=\"onValueChange($event)\">\r\n <option *ngFor=\"let obj of getFilteredFootfallDatasets()\" [id]=\"obj.label\" [value]=\"obj.value\">{{obj.label}}</option>\r\n </select>\r\n <span class=\"mx-2\">Vs</span>\r\n <select class=\"form-select-sm form-select ms-2 dropselect\" [(ngModel)]=\"bounceValue\" (change)=\"onBounceChange($event)\">\r\n <option *ngFor=\"let obj of getFilteredBounceDatasets()\" [id]=\"obj.label\" [value]=\"obj.value\">{{obj.label}}</option>\r\n\r\n </select>\r\n </div>\r\n </div>\r\n <div *ngIf=\"performanceLoading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"performancenoData\" class=\"row\">\r\n <div class=\"col-lg-12 mt-20 mb-6\">\r\n <div class=\" mt-20 card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata-table\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this {{footfallLabel | titlecase}} vs {{bounceLabel | titlecase}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!performanceLoading && !performancenoData\" class=\"card-body\">\r\n \r\n <div class=\"quadrant-chart z-1\">\r\n <div class=\"axis-labels\">\r\n <!-- X Axis Label -->\r\n <div class=\"x-axis-label\">\r\n <span>{{bounceLabel | titlecase}} -></span>\r\n </div>\r\n <!-- Y Axis Label -->\r\n <div class=\"y-axis-label\">\r\n <span>{{footfallLabel | titlecase}} -></span>\r\n </div>\r\n </div>\r\n <!-- Top Left Quadrant -->\r\n <div class=\"quadrant\" id=\"q1\">\r\n <span class=\"label\">High <span *ngIf=\"footfallLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"footfallLabel !=='Bounced Footfall'\">{{footfallLabel | titlecase}}</span>, Low <span\r\n *ngIf=\"bounceLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"bounceLabel !=='Bounced Footfall'\">{{bounceLabel | titlecase}}</span></span>\r\n </div>\r\n \r\n <!-- Top Right Quadrant -->\r\n <div class=\"quadrant\" id=\"q2\">\r\n <span class=\"label\">High <span *ngIf=\"footfallLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"footfallLabel !=='Bounced Footfall'\">{{footfallLabel | titlecase}}</span>, High <span\r\n *ngIf=\"bounceLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"bounceLabel !=='Bounced Footfall'\">{{bounceLabel | titlecase}}</span></span>\r\n </div>\r\n \r\n <!-- Bottom Left Quadrant -->\r\n <div class=\"quadrant\" id=\"q3\">\r\n <span class=\"label\">Low <span *ngIf=\"footfallLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"footfallLabel !=='Bounced Footfall'\">{{footfallLabel | titlecase}}</span>, Low <span\r\n *ngIf=\"bounceLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"bounceLabel !=='Bounced Footfall'\">{{bounceLabel | titlecase}}</span></span>\r\n </div>\r\n \r\n <!-- Bottom Right Quadrant -->\r\n <div class=\"quadrant\" id=\"q4\">\r\n <span class=\"label\">Low <span *ngIf=\"footfallLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"footfallLabel !=='Bounced Footfall'\">{{footfallLabel | titlecase}}</span>, High <span\r\n *ngIf=\"bounceLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"bounceLabel !=='Bounced Footfall'\">{{bounceLabel| titlecase}}</span></span>\r\n </div>\r\n <div *ngFor=\"let point of points\" class=\"point\" [ngStyle]=\"{'top': point.top + '%', 'left': point.left + '%'}\">\r\n <div class=\"text-center\" (click)=\"toggleTooltip(point.name)\">\r\n <div class=\"dot\" ></div>\r\n <!-- Clickable label that toggles the tooltip -->\r\n <div class=\"label z-1 mt-4\" style=\"font-size: 10px !important;\" >\r\n {{ point.name }}\r\n </div>\r\n </div>\r\n <!-- Custom Tooltip Popup -->\r\n <div class=\"tooltip-popup z-5\" *ngIf=\"activeTooltip === point.name\">\r\n <div class=\"tooltip-content\">\r\n <h3 class=\"text-white cursor-pointer\" (click)=\"storeView(point.storeId)\">{{ point.name }}</h3>\r\n <p>Avg {{footfallLabel | titlecase}}: {{ point.avgFootfall }}</p>\r\n <p class=\"my-2\">Open Time: <strong>{{ point.openTime }}</strong></p>\r\n <p>Close Time: <strong>{{ point.closeTime }}</strong></p>\r\n </div>\r\n <div class=\"tooltip-arrow\"></div>\r\n </div>\r\n </div>\r\n <!-- Add more points here -->\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"storeIdarray?.length > 1\" class=\"col-md-6 mt-3\">\r\n <div class=\"card\">\r\n <div class=\"card-header px-5 border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text mb-2\">Zone Dwell Time Split \r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"\r\n placement=\"right\"\r\n ngbTooltip=\"Overall zone concentration and average dwell time across selected stores\">\r\n <g clip-path=\"url(#clip0_1432_80035)\">\r\n <path\r\n d=\"M8.00065 10.6666V7.99992M8.00065 5.33325H8.00732M14.6673 7.99992C14.6673 11.6818 11.6826 14.6666 8.00065 14.6666C4.31875 14.6666 1.33398 11.6818 1.33398 7.99992C1.33398 4.31802 4.31875 1.33325 8.00065 1.33325C11.6826 1.33325 14.6673 4.31802 14.6673 7.99992Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1432_80035\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"text-sub mb-2\">{{headerData?.date?.startDate | date:'dd MMM, yyyy'}} \u2013 {{headerData?.date?.endDate | date:'dd MMM, yyyy'}}</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <button type=\"button\" (click)=\"goToZone()\"\r\n class=\"btn btn-light-primary1 rounded-3 text-nowrap border-val\">\r\n <span class=\"ms-2\">Go to Zones</span>\r\n </button>\r\n \r\n </div>\r\n </div>\r\n <div calss=\"card-body\">\r\n <div class=\"image-container position-relative\">\r\n <img src=\"assets/tango/Images/zone-img.svg\" alt=\"Store Layout\" class=\"px-5 img-src my-3 background-image\" />\r\n <!-- <img *ngIf=\"zoneDwellTimeSplitData[0]?.zoneName ==='Overall Store'\" src=\"assets/tango/Images/zone-img1.svg\" alt=\"Store Layout\" class=\"px-5 img-src my-3 background-image\" /> -->\r\n <!-- <div class=\"centered\">Centered</div> -->\r\n <!-- <div class=\"overlay-content\" *ngFor=\"let point of zoneDwellTimeSplitData\"> -->\r\n <div *ngIf=\"zoneDwellTimeSplitData[0]?.zoneName !=='Overall Store'\" class=\"top-zone\">\r\n <div class=\"text-center text-zone\">{{zoneDwellTimeSplitData[0]?.zoneName ? zoneDwellTimeSplitData[0]?.zoneName :'Front'}}</div>\r\n <span class=\"text-zone-val\"> Conc: {{ zoneDwellTimeSplitData[0]?.concentrationRate ? zoneDwellTimeSplitData[0]?.concentrationRate:'--' }}% </span>\r\n <span class=\"text-zone-val\">Dwell time: {{ zoneDwellTimeSplitData[0]?.dwellTime ? zoneDwellTimeSplitData[0]?.dwellTime :'--' }} Mins</span>\r\n </div>\r\n <div *ngIf=\"zoneDwellTimeSplitData[0]?.zoneName ==='Overall Store'\" class=\"centered-zone\">\r\n <div class=\"text-center text-zone\">{{zoneDwellTimeSplitData[0]?.zoneName ? zoneDwellTimeSplitData[0]?.zoneName :'Front'}}</div>\r\n <span class=\"text-zone-val\"> Conc: {{ zoneDwellTimeSplitData[0]?.concentrationRate ? zoneDwellTimeSplitData[0]?.concentrationRate:'--' }}% </span>\r\n <span class=\"text-zone-val\">Dwell time: {{ zoneDwellTimeSplitData[0]?.dwellTime ? zoneDwellTimeSplitData[0]?.dwellTime:'--' }} Mins</span>\r\n </div>\r\n <div *ngIf=\"zoneDwellTimeSplitData[0]?.zoneName !=='Overall Store'\" class=\"bottom-zone \">\r\n <div class=\"text-center text-zone\">{{zoneDwellTimeSplitData[1]?.zoneName ? zoneDwellTimeSplitData[2]?.zoneName : 'Back'}}</div>\r\n <span class=\"text-zone-val\"> Conc: {{ zoneDwellTimeSplitData[1]?.concentrationRate ? zoneDwellTimeSplitData[2]?.concentrationRate:'--' }}% </span>\r\n <span class=\"text-zone-val\">Dwell time: {{ zoneDwellTimeSplitData[1]?.dwellTime ? zoneDwellTimeSplitData[2]?.dwellTime:'--'}} Mins</span>\r\n </div>\r\n <!-- </div> -->\r\n </div>\r\n <!-- <img class=\"px-5 img-src mb-3\" src=\"assets/tango/Images/zone-img.svg\" alt=\"\"> -->\r\n </div>\r\n <div class=\"card-header px-5 border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text mb-2\">Store Operations\r\n <span > \r\n <svg ngbTooltip=\"Avg store open & close time across the selected stores\" placement=\"top\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" >\r\n <g clip-path=\"url(#clip0_1432_80035)\">\r\n <path\r\n d=\"M8.00065 10.6666V7.99992M8.00065 5.33325H8.00732M14.6673 7.99992C14.6673 11.6818 11.6826 14.6666 8.00065 14.6666C4.31875 14.6666 1.33398 11.6818 1.33398 7.99992C1.33398 4.31802 4.31875 1.33325 8.00065 1.33325C11.6826 1.33325 14.6673 4.31802 14.6673 7.99992Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1432_80035\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </span>\r\n <span class=\"text-sub mb-2\">{{headerData?.date?.startDate | date:'dd MMM, yyyy'}} \u2013 {{headerData?.date?.endDate | date:'dd MMM, yyyy'}}</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <!-- <button type=\"button\"\r\n class=\"btn btn-light-primary1 rounded-3 text-nowrap border-val\">\r\n <span class=\"ms-2\">Go to Trax</span>\r\n </button> -->\r\n </div>\r\n </div>\r\n <div class=\"card-body\">\r\n <div class=\"row\">\r\n <div class=\"col-md-3 text-center mb-3\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\"><!--{{getCardData?.revenue?.value ?? '--'}} -->\r\n <div class=\"my-2\"> <span class=\"left-card-count-title\">{{storeOperationData?.overall?.avgOpenTime\r\n ?storeOperationData?.overall?.avgOpenTime:'--' }}</span></div>\r\n <div class=\"\"><span class=\"sub-header\">Avg. Open Time</span></div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n <div class=\"col-md-6 mt-5 mb-3\">\r\n <svg width=\"326\" height=\"2\" viewBox=\"0 0 326 2\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <line y1=\"0.75\" x2=\"356\" y2=\"0.75\" stroke=\"#D0D5DD\" />\r\n </svg>\r\n </div>\r\n <div class=\"col-md-3 text-center mb-3\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\"><!--{{getCardData?.revenue?.value ?? '--'}} -->\r\n <div class=\"my-2\"> <span class=\"left-card-count-title\">{{storeOperationData?.overall?.avgCloseTime\r\n ?storeOperationData?.overall?.avgCloseTime:'--' }}</span></div>\r\n <div class=\"\"><span class=\"sub-header\">Avg. Close Time</span></div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n <div class=\"col-md-6 mt-3\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"left-card-count-header1 text-decoration-underline cursor-pointer\" (click)=\"storeView(storeOperationData?.topLateOpen?.storeId)\">{{storeOperationData?.topLateOpen?.storeName ?\r\n storeOperationData?.topLateOpen?.storeName :'--'}}</span>\r\n <span class=\"sub-header mt-2\">Top Late Open</span>\r\n </h3>\r\n </div>\r\n <div class=\"card-body p-0 h-75px mt-3 mx-3\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\"><!--{{getCardData?.revenue?.value ?? '--'}} -->\r\n <div class=\"my-1\"> <span\r\n class=\"left-card-count-header1\">{{storeOperationData?.topLateOpen?.avgStoreOpenTime\r\n ?storeOperationData?.topLateOpen?.avgStoreOpenTime:'--' }}</span></div>\r\n <span class=\"sub-header\">Avg. Store Opening Time</span>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n <div class=\"col-md-6 mt-3\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"left-card-count-header1 text-decoration-underline cursor-pointer\" (click)=\"storeView(storeOperationData?.topEarlyClose?.storeId)\">{{storeOperationData?.topEarlyClose?.storeName ?\r\n storeOperationData?.topEarlyClose?.storeName :'--'}}</span>\r\n <span class=\"sub-header mt-2\">Top Early Close</span>\r\n </h3>\r\n </div>\r\n <div class=\"card-body p-0 h-75px mt-3 mx-3\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\"><!--{{getCardData?.revenue?.value ?? '--'}} -->\r\n <div class=\"my-1\"> <span\r\n class=\"left-card-count-header1\">{{storeOperationData?.topEarlyClose?.avgStoreCloseTime\r\n ?storeOperationData?.topEarlyClose?.avgStoreCloseTime:'--' }}</span></div>\r\n <span class=\"sub-header\">Avg. Store Closing Time</span>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 mt-3\">\r\n <div class=\"card mb-5\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text mb-2\">Summary Table</span>\r\n <span class=\"text-sub mb-2\">{{headerData?.date?.startDate | date:'dd MMM, yyyy'}} \u2013 {{headerData?.date?.endDate | date:'dd MMM, yyyy'}}</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input (change)=\"searchData()\" [(ngModel)]=\"searchValue\" type=\"text\" class=\"form-control ps-14 me-2\" autocomplete=\"off\" placeholder=\"Search\" />\r\n <!-- filter Start -->\r\n <!-- <lib-filters [dataObject]=\"dataObject\" (appliedFilters)=\"applyFilters($event)\"></lib-filters> -->\r\n <!-- filter End -->\r\n <!-- Sum Button -->\r\n <section *ngIf=\"(storeIdarray?.length > 1 && headerData?.date?.startDate != headerData?.date?.endDate) && !noData && !loading\">\r\n <button type=\"button\" (click)=\"onValueType('sum')\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"\r\n [ngClass]=\"{'btn-light btn-primary text-white': typeValue === 'sum'}\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n [ngStyle]=\"{'stroke': typeValue === 'sum' ? '#FFFFFF' : '#344054'}\">\r\n <path d=\"M9.99935 4.16675V15.8334M4.16602 10.0001H15.8327\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"ms-2\" [ngClass]=\"{'text-white': typeValue === 'sum'}\">Sum</span>\r\n </button>\r\n </section>\r\n \r\n<!-- Average Button -->\r\n <section *ngIf=\"(storeIdarray?.length > 1 && headerData?.date?.startDate != headerData?.date?.endDate) && !noData && !loading\">\r\n<button type=\"button\" (click)=\"onValueType('average')\"\r\nclass=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"\r\n[ngClass]=\"{'btn-light btn-primary text-white': typeValue === 'average'}\">\r\n<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\r\n [ngStyle]=\"{'stroke': typeValue === 'average' ? '#FFFFFF' : '#101828'}\">\r\n <path d=\"M17.5 17.5H8.33333C5.58333 17.5 4.20833 17.5 3.35417 16.6458C2.5 15.7917 2.5 14.4167 2.5 11.6667V2.5M5 10H5.0075M7.49917 10H7.50583M9.9975 10H10.0042M12.4958 10H12.5033M14.9942 10H15.0017M17.4925 10H17.5\"\r\n stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M5 5.83341C5.56083 4.89841 6.3225 4.16675 7.49417 4.16675C12.4467 4.16675 9.6625 14.1667 14.985 14.1667C16.165 14.1667 16.9217 13.4301 17.5 12.5001\"\r\n stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n</svg>\r\n<span class=\"ms-2\" [ngClass]=\"{'text-white': typeValue === 'average'}\">Average</span>\r\n</button>\r\n</section>\r\n \r\n <button *ngIf=\"!noData && !loading\" type=\"button\" (click)=\"exportXLSX()\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Export</span> </button>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"noData\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata-table\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this summary table</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!noData && !loading\" calss=\"card-body\">\r\n <div class=\"table-responsive\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('storeName')\">Store Name <svg \r\n [ngClass]=\"sortedColumn === 'storeName' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'storeName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('storeId')\">Store ID <svg [ngClass]=\"sortedColumn === 'storeId' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'storeId' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th *ngIf=\"storeIdarray?.length === 1\" class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('date')\">Date <svg [ngClass]=\"sortedColumn === 'date' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'date' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('footfallCount')\">Footfall <svg [ngClass]=\"sortedColumn === 'footfallCount' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'footfallCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('bouncedCount')\">Bounced Footfall<svg [ngClass]=\"sortedColumn === 'bouncedCount' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'bouncedCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('engagersCount')\">Engagers <svg [ngClass]=\"sortedColumn === 'engagersCount' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'engagersCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('missedOpportunityCount')\">Missed Opportunity<svg [ngClass]=\"sortedColumn === 'missedOpportunityCount' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'missedOpportunityCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('potentialBuyersCount')\">Potential Buyers <svg [ngClass]=\"sortedColumn === 'potentialBuyersCount' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'potentialBuyersCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('conversionRate')\">Conversion Rate <svg [ngClass]=\"sortedColumn === 'conversionRate' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'conversionRate' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('avgDwellTime')\">Avg.Dwell Time <svg [ngClass]=\"sortedColumn === 'avgDwellTime' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'avgDwellTime' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('avgInfraDowntime')\">Avg.Infra DownTime <svg [ngClass]=\"sortedColumn === 'avgInfraDowntime' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'avgInfraDowntime' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('below12')\">Below12 <svg [ngClass]=\"sortedColumn === 'below12' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'below12' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('13-19')\">13-19 <svg [ngClass]=\"sortedColumn === '13-19' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === '13-19' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('20-30')\">20-30 <svg [ngClass]=\"sortedColumn === '20-30' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === '20-30' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('31-45')\">31-45 <svg [ngClass]=\"sortedColumn === '31-45' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === '31-45' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('46-59')\">46-59 <svg [ngClass]=\"sortedColumn === '46-59' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === '46-59' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('60 above')\">60 above <svg [ngClass]=\"sortedColumn === '60 above' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === '60 above' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('male')\">Male <svg [ngClass]=\"sortedColumn === 'male' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'male' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('female')\">Female <svg \r\n [ngClass]=\"sortedColumn === 'female' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'female' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let obj of getSummaryTableData;let i=index;\">\r\n <!-- (click)=\"storeView(obj)\" -->\r\n <td class=\"text-primary text-capitalize text-decoration-underline cursor-pointer\" (click)=\"storeView(obj.storeId)\">{{obj.storeName}}</td>\r\n <td>{{obj.storeId}}</td>\r\n <td *ngIf=\"obj?.date\">{{obj?.date | date:'MMM dd, yyyy'}}</td>\r\n <td>{{obj.footfallCount}}</td>\r\n <td>{{obj.bouncedCount}}</td>\r\n <td>{{obj.engagersCount}}</td>\r\n <td>{{obj.missedOpportunityCount}}</td>\r\n <td>{{obj.potentialBuyersCount}}</td>\r\n <td>{{obj.conversionRate}}</td>\r\n <td>{{obj.avgDwellTime}}</td>\r\n <td>{{obj.avgInfraDowntime}}</td>\r\n <td>{{obj.below12}}</td>\r\n <td>{{obj['13-19']}}</td>\r\n <td>{{obj['20-30']}}</td>\r\n <td>{{obj['31-45']}}</td>\r\n <td>{{obj[\"46-59\"]}}</td>\r\n <td>{{obj[\"60 above\"]}}</td>\r\n <td>{{obj.male}}</td>\r\n <td>{{obj.female}}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <lib-pagination [itemsPerPage]=\"pageSize\" [currentPage]=\"offset\" [totalItems]=\"totalItems\"\r\n [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\" (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n", styles: ["#Footfall,#BouncedRate,#PotentialBuyers,#engagers{width:100%;height:100px}#chartdiv{width:100%;height:225px}.ellipse1{border-radius:6px;border-bottom:2px solid var(--Gray-200, #EAECF0);background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d}.card-border{padding:8px;border-radius:12px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF)}.card-footer{border-top:none!important}.percent-value{color:var(--Gray-500, #667085)!important;text-align:center;font-size:16px;font-style:normal;font-weight:600;line-height:18px}.week-font{color:var(--Gray-800, #1D2939)!important;font-size:12px;font-style:normal;font-weight:400;line-height:18px}.card-header,.header{color:var(--Gray-900, #101828);font-size:20px!important;font-style:normal;font-weight:700;line-height:30px}.sub-header{color:var(--Gray-700, #344054);font-size:14px!important;font-style:normal;font-weight:500;line-height:20px}.img-src{width:100%}.img-src1{width:100%;min-height:227px!important;max-height:auto!important}.recap-img{width:100%;height:250px}.activePlanBtn{border-radius:6px;background:var(--Primary-50, #EAF8FF);color:var(--Gray-700, #344054);font-size:14px!important;font-weight:500!important;line-height:20px}.inactivePlanBtn{color:var(--Gray-500, #667085)!important;font-size:14px;font-weight:500!important;line-height:20px}.trax-bg{border-radius:12px!important;background:var(--Gray-100, #F2F4F7)!important}.left-card-count{color:var(--Gray-900, #101828);font-size:18px!important;font-style:normal;font-weight:600;line-height:28px}.left-card-count-header{color:var(--Gray-900, #101828)!important;font-size:14px!important;font-style:normal;font-weight:400;line-height:18px}.left-card-count-header1{color:var(--Gray-900, #101828)!important;font-size:20px!important;font-style:normal;font-weight:700;line-height:30px}.left-card-count-title{color:var(--Gray-700, #344054)!important;font-size:16px!important;font-style:normal;font-weight:700;line-height:24px}.quadrant-chart{position:relative;width:100%;height:500px;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;border:2px solid #ddd}.quadrant{position:relative;border:1px solid #ddd;display:flex;justify-content:center;align-items:center;padding:20px}#q1,#q2{align-items:flex-start}#q3,#q4{align-items:flex-end}.label{color:#000;font-size:12.723px;font-style:normal;font-weight:600;line-height:19.791px;text-align:center}@media (max-width: 768px){.quadrant-chart{width:100%;height:auto}.point{font-size:10px}}.quadrant-chart{position:relative;width:100%;height:100%}.point{position:absolute;display:flex;align-items:center;color:#000;font-size:9px;font-style:normal;font-weight:500;line-height:12px}.axis-labels{position:absolute;width:100%;height:100%;top:0;left:0;display:flex;justify-content:space-between;align-items:center;pointer-events:none}.x-axis-label{position:absolute;bottom:-25px;left:10%;transform:translate(-50%);color:#000;font-size:12.723px;font-style:normal;font-weight:400;line-height:19.791px}.y-axis-label{position:absolute;top:95%;left:-15px;transform:translateY(-50%) rotate(270deg);transform-origin:left center;white-space:nowrap;color:#000;font-size:12.723px;font-style:normal;font-weight:400;line-height:19.791px}.label{cursor:pointer;margin-right:10px}.tooltip-popup{position:absolute;background:var(--gradient-primary-800700265-deg, linear-gradient(27deg, #0082CC 8.33%, #0093E6 91.67%));color:#fff;padding:10px;left:-55px;top:-165px;border:20px solid #fff;border-radius:8px;z-index:1000!important;width:230px;box-shadow:0 4px 8px #0003}.tooltip-content{font-size:13px}.tooltip-popup h3{margin:0;font-size:16px}.tooltip-popup p{margin:10px 0}.tooltip-popup strong{font-weight:700}.tooltip-arrow{position:absolute;bottom:-9px;left:50%;margin-left:-10px;width:0;height:0;border-left:10px solid transparent;border-right:10px solid transparent;border-top:10px solid #0082CC}.border-val{color:var(--Gray-700, #344054)!important;font-family:Inter;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}.table-title-primary{color:var(--Primary-700, #009BF3)!important;font-weight:500!important}.table-sub{line-height:30px!important;color:var(--Gray-500, #667085)!important;font-size:12px!important;font-weight:400!important}table td{line-height:40px!important}.dot{height:12px;width:12px;background-color:#4eb3ed;border-radius:50%;margin-right:5px;z-index:1;position:absolute;left:50%;transform:translate(-50%)}.custom-dropdown{position:relative}.custom-dropdown button{width:100%;background-color:#f8f9fa;border:1px solid #ced4da;border-radius:.25rem;padding:.375rem}.custom-dropdown .dropdown-list{position:absolute;width:100%;background-color:#fff;border:1px solid #ced4da;margin-top:.25rem;list-style:none;padding:0}.custom-dropdown .dropdown-list li{padding:.5rem;cursor:pointer}.custom-dropdown .dropdown-list li.selected{background-color:#007bff;color:#fff}.chart-legend-item-minus{display:none}.img-nodata{width:29%;height:20%}.img-nodata-table{width:25%;height:20%}.text-primary{color:#009bf3!important}.loader-img{width:1%}.img-nodata1{width:25%;height:15%}.nodata-title1{font-size:12px!important;font-weight:600}.btn-light-primary1{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-style:normal;font-weight:600!important;line-height:18px;text-transform:capitalize;border-radius:8px!important;border:1px solid var(--Primary-50, #EAF8FF)!important;background:var(--Primary-50, #EAF8FF)!important;box-shadow:0 1px 2px #1018280d!important}.rotate{rotate:180deg;transition:1s}:host::ng-deep .map-container{width:100%!important;position:relative;overflow:hidden}.img-map{width:45.5%;height:20%}.img-map-recap{width:43%;height:20%}#map{height:262px}@media (min-width: 1390px) and (max-width: 1534px){.img-map{width:52%;height:20%}.img-map-recap{width:48.5%;height:20%}.img-nodata{width:38%;height:20%}#map{height:241px}.fs-5{font-size:.9rem!important}}@media (min-width: 1700px) and (max-width: 1919px){.img-map{width:39%;height:20%}.img-map-recap{width:37%;height:20%}.img-nodata{width:30%;height:20%}#chartdiv{width:100%;height:229px}#map{height:255px}}@media (min-width: 1920px) and (max-width: 2119px){.img-map{width:37%;height:20%}.img-map-recap{width:35%;height:20%}.img-nodata{width:28%;height:20%}#chartdiv{width:100%;height:215px}#map{height:262px}}.image-container{position:relative;width:100%;max-width:1000px;margin:0 auto}.background-image{width:100%;height:auto}.overlay-content{position:absolute;background-color:#0009;color:#fff;padding:5px;border-radius:3px;text-align:center;white-space:nowrap}.centered-zone{position:absolute;top:54%;left:50%;transform:translate(-50%)}.top-zone{position:absolute;top:67%;left:50%;transform:translate(-50%)}.bottom-zone{position:absolute;top:39%;left:50%;transform:translate(-50%)}.text-zone-val{color:var(--Black, #101828)!important;font-size:12px!important;font-style:normal;font-weight:700;line-height:18px}.text-zone{color:var(--Black, #101828)!important;text-align:center;font-size:12px!important;font-style:normal;font-weight:400;line-height:18px}.card-title .card-label{color:var(--Gray-900, #101828)!important;font-family:Inter;font-size:24px!important;font-weight:700!important;line-height:30px}.form-check-label{color:var(--Gray-500, #667085);text-align:center;font-size:12px;font-weight:500;line-height:18px}.title-text{color:var(--Gray-900, #101828)!important;font-size:16px!important;font-weight:600!important;line-height:24px}.left-50{left:47%;top:12%}.end-0{top:16%;left:97%}.carousel{position:relative}.carousel-item{display:none;transition:opacity .5s}.carousel-item.active{display:block;opacity:1}.carousel-control-prev,.carousel-control-next{position:absolute;top:50%;transform:translateY(-50%);border:none;padding:10px;cursor:pointer}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-indicators{position:absolute;left:35%;transform:translate(-50%);gap:10px}.carousel-indicators li{list-style:none!important;width:10px;height:10px;background-color:#ddd;border-radius:50%;cursor:pointer;transition:background-color .3s}.carousel-indicators li.active{background-color:#007bff}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:25rem!important;height:25rem!important;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.image-thumb{height:240px;border-radius:8px}.dropselect{color:var(--Gray-500, #344054);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:18px;white-space:nowrap}.nodata-title{font-size:14px!important;font-weight:600}.carousel-control-prev-icon,.carousel-control-next-icon{color:#fff!important}.footimg-nodata1{width:30%;height:66%}.tooltip-content{max-width:200px}.tooltip-title{font-weight:700;margin-bottom:10px}.tooltip-footer{margin-top:10px;font-size:.8em;color:gray}\n"], dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i8.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i8.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i8.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "directive", type: i6.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "component", type: i9.TrafficChartsComponent, selector: "lib-traffic-charts" }, { kind: "component", type: i10.TrafficCardChartsComponent, selector: "lib-traffic-card-charts" }, { kind: "component", type: i11.ImageDocComponent, selector: "lib-image-doc" }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i7.DatePipe, name: "date" }] });
|
|
1309
1309
|
}
|
|
1310
1310
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TrafficAnalysisComponent, decorators: [{
|
|
1311
1311
|
type: Component,
|
|
1312
|
-
args: [{ selector: "lib-traffic-analysis", template: "<div class=\"row\">\r\n <div class=\"col-md-7\">\r\n <div class=\"row\">\r\n <div class=\"col-md-8 \">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"row position-relative\">\r\n <div class=\"col-md-6\">\r\n <div class=\"px-2\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <!-- [ngbTooltip]=\"footfallTooltip\" placement=\"right\" -->\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <!-- Display footfall count or '--' if not available -->\r\n <span class=\"card-label header\">{{ getCardData?.footfall?.count ? getCardData.footfall.count.toLocaleString('en-IN') : '--' }}</span>\r\n <span class=\"sub-header\">{{footfallName}}</span>\r\n </h3>\r\n \r\n <!-- Switch toggle -->\r\n <div class=\"card-toolbar\">\r\n <div class=\"col-md-12 text-end\">\r\n <div class=\"form-check form-switch text-end\">\r\n <input class=\"form-check-input mt-1\" type=\"checkbox\" id=\"flexSwitchCheckDefault\" \r\n [(ngModel)]=\"isAverage\" (change)=\"toggleAverage($event)\" [disabled]=\"isDisabled\">\r\n </div>\r\n <div class=\"form-check-label mt-5\">Average</div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <ng-template #footfallTooltip>\r\n <div class=\"tooltip-content\">\r\n <h5 class=\"tooltip-title text-start\">Footfall</h5>\r\n <p class=\"text-start\">Total unique walk-ins into the selected stores.</p>\r\n <h4 class=\"text-start\">{{getCardData?.footfall?.count}}</h4>\r\n <footer class=\"tooltip-footer text-start\"> <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.footfall?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.footfall?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2 ms-2\"><span class=\"percent-value\" *ngIf=\"getCardGraphData?.footfall?.PreviousData !==0\">{{getCardGraphData?.footfall?.PreviousData ? getCardGraphData?.footfall?.PreviousData:'--'}}%</span><span\r\n class=\"week-font\"> (123) vs Previous \r\n <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span>\r\n </span>\r\n\r\n </span></footer>\r\n </div>\r\n </ng-template> -->\r\n <div class=\"card-body p-0\">\r\n \r\n <section >\r\n <div class=\"row\">\r\n <div class=\"col-md-10 pe-0\">\r\n <div *ngIf=\"cardloading\" class=\"text-center\">\r\n <img class=\"loader-img\" src=\"assets/tango/layout/Loader.gif\">\r\n </div>\r\n <div *ngIf=\"cardNodata\" class=\"row\">\r\n \r\n <div class=\"card-body pb-0 px-0 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"footimg-nodata1\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title1\">No data found</div>\r\n <!-- <div class=\"nodata-sub\">There is no result for this conversion funnel</div> -->\r\n </div>\r\n \r\n </div>\r\n <div *ngIf=\"!cardNodata\" class=\"text-center\" id=\"Footfall\"></div>\r\n </div>\r\n <div class=\"col-md-2 mt-3\">\r\n <div class=\"mt-1 cursor-pointer fs-5\" [ngClass]=\"dateType ==='daily' ? 'text-primary' :''\" (click)=\"dateValue('daily')\">1D</div>\r\n <div class=\"mt-1 cursor-pointer fs-5\" [ngClass]=\"dateType ==='weekly' ? 'text-primary' :''\" (click)=\"dateValue('weekly')\">1W</div>\r\n <div class=\"mt-1 cursor-pointer fs-5\" [ngClass]=\"dateType ==='monthly' ? 'text-primary' :''\" (click)=\"dateValue('monthly')\">1M</div>\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.footfall?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.footfall?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"getCardGraphData?.footfall?.PreviousData ===0\" class=\"percent-value ms-2\">0%</span>\r\n <span class=\"mt-2 ms-2\"><span class=\"percent-value\" *ngIf=\"getCardGraphData?.footfall?.PreviousData !==0\">{{getCardGraphData?.footfall?.PreviousData ? getCardGraphData?.footfall?.PreviousData:'--'}}%</span><span\r\n class=\"week-font\"> vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span> </span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M6 12L10 8L6 4\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div> -->\r\n </div>\r\n <div class=\"position-absolute left-50\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M6 12L10 8L6 4\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n <div class=\"col-md-6\">\r\n\r\n <div class=\"px-2\">\r\n <div class=\"card-header ellipse1 border-0 px-3\" >\r\n <!-- [ngbTooltip]=\"conversionTooltip\" placement=\"left\" -->\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label header\">{{valueConversionRate ? valueConversionRate : '--'}}%</span>\r\n <span class=\"sub-header\">Conversion <span *ngIf=\"conversionValue ==='footfall' || conversionValue ==='engagers' || conversionValue ==='Potential Buyers' || conversionValue ==='NoB Derived' \"> - {{conversionValue | titlecase}}</span></span>\r\n </h3>\r\n </div>\r\n <!-- <ng-template #conversionTooltip>\r\n <div class=\"tooltip-content\">\r\n <h5 class=\"tooltip-title text-start\">Conversion Rate</h5>\r\n <p class=\"text-start\">Total % of <engagers> who spent more than <10mins> in the store..</p>\r\n <h4 class=\"text-start\">{{valueConversionRate}}</h4>\r\n <footer class=\"tooltip-footer text-start\"> <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.conversion?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.conversion?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\">\r\n <span *ngIf=\"conversionValue ==='footfall' && getCardGraphData?.conversion?.footfall.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"conversionValue ==='footfall' && getCardGraphData?.conversion?.footfall.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.conversion?.footfall.PreviousData ? getCardGraphData?.conversion?.footfall.PreviousData:'--'}}%</span>\r\n <span *ngIf=\"conversionValue ==='engagers' && getCardGraphData?.conversion?.engagers.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n \r\n <span *ngIf=\"conversionValue ==='engagers' && getCardGraphData?.conversion?.engagers.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.conversion?.engagers.PreviousData ? getCardGraphData?.conversion?.engagers.PreviousData:'--'}}%</span>\r\n\r\n <span *ngIf=\"conversionValue ==='Potential Buyers' && getCardGraphData?.conversion?.potentialBuyers.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"conversionValue ==='Potential Buyers' && getCardGraphData?.conversion?.potentialBuyers.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.conversion?.potentialBuyers.PreviousData ? getCardGraphData?.conversion?.potentialBuyers.PreviousData:'--'}}%</span>\r\n <span *ngIf=\"conversionValue ==='NoB Derived'\" class=\"percent-value\">--%</span>\r\n <span *ngIf=\"conversionValue ==='' && getCardGraphData?.conversion?.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n\r\n <span *ngIf=\"conversionValue ==='' && getCardGraphData?.conversion?.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.conversion?.PreviousData ? getCardGraphData?.conversion?.PreviousData:'--'}}%</span>\r\n \r\n <span\r\n class=\"week-font\"> vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span>\r\n </footer>\r\n </div>\r\n </ng-template> -->\r\n <div class=\"card-body p-0\">\r\n <div class=\"h-100px pt-10 px-3 row\">\r\n <span class=\"h-75px col-md-3\">\r\n <svg class=\"cursor-pointer\" *ngIf=\"conversionValue !=='footfall'\" placement=\"top\" \r\n ngbTooltip=\"Footfall\"\r\n (click)=\"changeValue('footfall')\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path\r\n d=\"M4 18H9.5V19.25C9.5 19.9793 9.21027 20.6788 8.69454 21.1945C8.17882 21.7103 7.47935 22 6.75 22C6.02065 22 5.32118 21.7103 4.80546 21.1945C4.28973 20.6788 4 19.9793 4 19.25V18ZM8 6.11999C10 6.11999 11 8.99999 11 11C11 12 10.5 13 10 14.5L9.5 16H4C4 15 3.5 13.5 3.5 11C3.5 8.49999 5.498 6.11999 8 6.11999ZM20.054 14.098L19.837 15.329C19.7023 16.0396 19.2931 16.6686 18.698 17.0796C18.1029 17.4907 17.3698 17.6508 16.6576 17.5252C15.9453 17.3996 15.3111 16.9984 14.8925 16.4086C14.4739 15.8188 14.3045 15.0878 14.421 14.374L14.637 13.144L20.054 14.098ZM18.178 1.70499C20.642 2.13899 22.196 4.82999 21.762 7.29199C21.328 9.75399 20.575 11.144 20.402 12.129L14.985 11.174L14.753 9.60999C14.521 8.04599 14.203 6.97399 14.376 5.98999C14.723 4.01999 16.208 1.35799 18.178 1.70499Z\"\r\n fill=\"#98A2B3\" />\r\n </svg>\r\n <svg placement=\"top\" ngbTooltip=\"Footfall\" *ngIf=\"conversionValue ==='footfall'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M4 18H9.5V19.25C9.5 19.9793 9.21027 20.6788 8.69454 21.1945C8.17882 21.7103 7.47935 22 6.75 22C6.02065 22 5.32118 21.7103 4.80546 21.1945C4.28973 20.6788 4 19.9793 4 19.25V18ZM8 6.11999C10 6.11999 11 8.99999 11 11C11 12 10.5 13 10 14.5L9.5 16H4C4 15 3.5 13.5 3.5 11C3.5 8.49999 5.498 6.11999 8 6.11999ZM20.054 14.098L19.837 15.329C19.7023 16.0396 19.2931 16.6686 18.698 17.0796C18.1029 17.4907 17.3698 17.6508 16.6576 17.5252C15.9453 17.3996 15.3111 16.9984 14.8925 16.4086C14.4739 15.8188 14.3045 15.0878 14.421 14.374L14.637 13.144L20.054 14.098ZM18.178 1.70499C20.642 2.13899 22.196 4.82999 21.762 7.29199C21.328 9.75399 20.575 11.144 20.402 12.129L14.985 11.174L14.753 9.60999C14.521 8.04599 14.203 6.97399 14.376 5.98999C14.723 4.01999 16.208 1.35799 18.178 1.70499Z\" fill=\"#00A3FF\"/>\r\n </svg>\r\n </span>\r\n <span class=\"h-75px col-md-3\">\r\n <svg placement=\"top\" ngbTooltip=\"Engagers\" class=\"cursor-pointer\" *ngIf=\"conversionValue !=='engagers'\" (click)=\"changeValue('engagers')\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path \r\n d=\"M17 21V19C17 17.9391 16.5786 16.9217 15.8284 16.1716C15.0783 15.4214 14.0609 15 13 15H5C3.93913 15 2.92172 15.4214 2.17157 16.1716C1.42143 16.9217 1 17.9391 1 19V21M23 21V19C22.9993 18.1137 22.7044 17.2528 22.1614 16.5523C21.6184 15.8519 20.8581 15.3516 20 15.13M16 3.13C16.8604 3.3503 17.623 3.8507 18.1676 4.55231C18.7122 5.25392 19.0078 6.11683 19.0078 7.005C19.0078 7.89317 18.7122 8.75608 18.1676 9.45769C17.623 10.1593 16.8604 10.6597 16 10.88M13 7C13 9.20914 11.2091 11 9 11C6.79086 11 5 9.20914 5 7C5 4.79086 6.79086 3 9 3C11.2091 3 13 4.79086 13 7Z\"\r\n stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg placement=\"top\" ngbTooltip=\"Engagers\" *ngIf=\"conversionValue ==='engagers'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M17 21V19C17 17.9391 16.5786 16.9217 15.8284 16.1716C15.0783 15.4214 14.0609 15 13 15H5C3.93913 15 2.92172 15.4214 2.17157 16.1716C1.42143 16.9217 1 17.9391 1 19V21M23 21V19C22.9993 18.1137 22.7044 17.2528 22.1614 16.5523C21.6184 15.8519 20.8581 15.3516 20 15.13M16 3.13C16.8604 3.3503 17.623 3.8507 18.1676 4.55231C18.7122 5.25392 19.0078 6.11683 19.0078 7.005C19.0078 7.89317 18.7122 8.75608 18.1676 9.45769C17.623 10.1593 16.8604 10.6597 16 10.88M13 7C13 9.20914 11.2091 11 9 11C6.79086 11 5 9.20914 5 7C5 4.79086 6.79086 3 9 3C11.2091 3 13 4.79086 13 7Z\" stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </span>\r\n <span class=\"h-75px col-md-3\">\r\n <svg placement=\"top\" ngbTooltip=\"Potential Buyers\" class=\"cursor-pointer\" *ngIf=\"conversionValue !=='Potential Buyers'\" (click)=\"changeValue('potentialBuyers')\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path opacity=\"0.3\"\r\n d=\"M20.0039 18.002H4.00391C3.40391 18.002 3.00391 17.602 3.00391 17.002V7.00195C3.00391 6.40195 3.40391 6.00195 4.00391 6.00195H20.0039C20.6039 6.00195 21.0039 6.40195 21.0039 7.00195V17.002C21.0039 17.602 20.6039 18.002 20.0039 18.002ZM12.0039 8.00195C10.3039 8.00195 9.00391 9.80195 9.00391 12.002C9.00391 14.202 10.3039 16.002 12.0039 16.002C13.7039 16.002 15.0039 14.202 15.0039 12.002C15.0039 9.80195 13.7039 8.00195 12.0039 8.00195Z\"\r\n fill=\"#98A2B3\" />\r\n <path\r\n d=\"M18.0039 6.00195H20.0039C20.6039 6.00195 21.0039 6.40195 21.0039 7.00195V9.00195C19.3039 9.00195 18.0039 7.70195 18.0039 6.00195ZM6.00391 6.00195H4.00391C3.40391 6.00195 3.00391 6.40195 3.00391 7.00195V9.00195C4.70391 9.00195 6.00391 7.70195 6.00391 6.00195ZM21.0039 17.002V15.002C19.3039 15.002 18.0039 16.302 18.0039 18.002H20.0039C20.6039 18.002 21.0039 17.602 21.0039 17.002ZM3.00391 15.002V17.002C3.00391 17.602 3.40391 18.002 4.00391 18.002H6.00391C6.00391 16.302 4.70391 15.002 3.00391 15.002Z\"\r\n fill=\"#98A2B3\" />\r\n </svg>\r\n <svg placement=\"top\" ngbTooltip=\"Potential Buyers\" *ngIf=\"conversionValue ==='Potential Buyers'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path opacity=\"0.3\" d=\"M20.0039 18.002H4.00391C3.40391 18.002 3.00391 17.602 3.00391 17.002V7.00195C3.00391 6.40195 3.40391 6.00195 4.00391 6.00195H20.0039C20.6039 6.00195 21.0039 6.40195 21.0039 7.00195V17.002C21.0039 17.602 20.6039 18.002 20.0039 18.002ZM12.0039 8.00195C10.3039 8.00195 9.00391 9.80195 9.00391 12.002C9.00391 14.202 10.3039 16.002 12.0039 16.002C13.7039 16.002 15.0039 14.202 15.0039 12.002C15.0039 9.80195 13.7039 8.00195 12.0039 8.00195Z\" fill=\"#00A3FF\"/>\r\n <path d=\"M18.0039 6.00195H20.0039C20.6039 6.00195 21.0039 6.40195 21.0039 7.00195V9.00195C19.3039 9.00195 18.0039 7.70195 18.0039 6.00195ZM6.00391 6.00195H4.00391C3.40391 6.00195 3.00391 6.40195 3.00391 7.00195V9.00195C4.70391 9.00195 6.00391 7.70195 6.00391 6.00195ZM21.0039 17.002V15.002C19.3039 15.002 18.0039 16.302 18.0039 18.002H20.0039C20.6039 18.002 21.0039 17.602 21.0039 17.002ZM3.00391 15.002V17.002C3.00391 17.602 3.40391 18.002 4.00391 18.002H6.00391C6.00391 16.302 4.70391 15.002 3.00391 15.002Z\" fill=\"#00A3FF\"/>\r\n </svg>\r\n </span>\r\n <span class=\"h-75px col-md-3\">\r\n <svg placement=\"top\" ngbTooltip=\"NoB Derived\" class=\"cursor-pointer\" *ngIf=\"conversionValue !=='NoB Derived'\" (click)=\"changeValue('NoB Derived')\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path opacity=\"0.3\"\r\n d=\"M18.0039 21.6005C16.3039 21.6005 15.0039 20.3005 15.0039 18.6005V2.5005C15.0039 2.2005 14.6039 2.00045 14.3039 2.20045L13.0039 3.60048L11.7039 2.30049C11.3039 1.90049 10.7039 1.90049 10.3039 2.30049L9.00391 3.60048L7.70392 2.30049C7.30392 1.90049 6.7039 1.90049 6.3039 2.30049L5.00391 3.60048L3.70392 2.30049C3.50392 2.10049 3.00391 2.2005 3.00391 3.5005V18.6005C3.00391 20.3005 4.30391 21.6005 6.00391 21.6005H18.0039Z\"\r\n fill=\"#98A2B3\" />\r\n <path\r\n d=\"M12.0059 12.5972H11.0059C10.4059 12.5972 10.0059 12.1972 10.0059 11.5972C10.0059 10.9972 10.4059 10.5972 11.0059 10.5972H12.0059C12.6059 10.5972 13.0059 10.9972 13.0059 11.5972C13.0059 12.1972 12.6059 12.5972 12.0059 12.5972ZM9.00586 11.5972C9.00586 10.9972 8.60586 10.5972 8.00586 10.5972H6.00586C5.40586 10.5972 5.00586 10.9972 5.00586 11.5972C5.00586 12.1972 5.40586 12.5972 6.00586 12.5972H8.00586C8.60586 12.5972 9.00586 12.1972 9.00586 11.5972ZM9.00586 7.59717C9.00586 6.99717 8.60586 6.59717 8.00586 6.59717H6.00586C5.40586 6.59717 5.00586 6.99717 5.00586 7.59717C5.00586 8.19717 5.40586 8.59717 6.00586 8.59717H8.00586C8.60586 8.59717 9.00586 8.19717 9.00586 7.59717ZM13.0059 7.59717C13.0059 6.99717 12.6059 6.59717 12.0059 6.59717H11.0059C10.4059 6.59717 10.0059 6.99717 10.0059 7.59717C10.0059 8.19717 10.4059 8.59717 11.0059 8.59717H12.0059C12.6059 8.59717 13.0059 8.19717 13.0059 7.59717ZM13.0059 15.5972C13.0059 14.9972 12.6059 14.5972 12.0059 14.5972H10.0059C9.40586 14.5972 9.00586 14.9972 9.00586 15.5972C9.00586 16.1972 9.40586 16.5972 10.0059 16.5972H12.0059C12.6059 16.5972 13.0059 16.1972 13.0059 15.5972Z\"\r\n fill=\"#98A2B3\" />\r\n <path\r\n d=\"M15.002 18.5971C15.002 20.2971 16.302 21.5971 18.002 21.5971C19.702 21.5971 21.002 20.2971 21.002 18.5971V12.4971C21.002 12.1971 20.602 11.9971 20.302 12.1971L19.002 13.5971L17.702 12.2971C17.302 11.8971 16.702 11.8971 16.302 12.2971L15.002 13.5971V18.5971Z\"\r\n fill=\"#98A2B3\" />\r\n </svg>\r\n <svg placement=\"top\" ngbTooltip=\"NoB Derived\" *ngIf=\"conversionValue ==='NoB Derived'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path opacity=\"0.3\"\r\n d=\"M18.0039 21.6005C16.3039 21.6005 15.0039 20.3005 15.0039 18.6005V2.5005C15.0039 2.2005 14.6039 2.00045 14.3039 2.20045L13.0039 3.60048L11.7039 2.30049C11.3039 1.90049 10.7039 1.90049 10.3039 2.30049L9.00391 3.60048L7.70392 2.30049C7.30392 1.90049 6.7039 1.90049 6.3039 2.30049L5.00391 3.60048L3.70392 2.30049C3.50392 2.10049 3.00391 2.2005 3.00391 3.5005V18.6005C3.00391 20.3005 4.30391 21.6005 6.00391 21.6005H18.0039Z\"\r\n fill=\"#00A3FF\" />\r\n <path\r\n d=\"M12.0059 12.5972H11.0059C10.4059 12.5972 10.0059 12.1972 10.0059 11.5972C10.0059 10.9972 10.4059 10.5972 11.0059 10.5972H12.0059C12.6059 10.5972 13.0059 10.9972 13.0059 11.5972C13.0059 12.1972 12.6059 12.5972 12.0059 12.5972ZM9.00586 11.5972C9.00586 10.9972 8.60586 10.5972 8.00586 10.5972H6.00586C5.40586 10.5972 5.00586 10.9972 5.00586 11.5972C5.00586 12.1972 5.40586 12.5972 6.00586 12.5972H8.00586C8.60586 12.5972 9.00586 12.1972 9.00586 11.5972ZM9.00586 7.59717C9.00586 6.99717 8.60586 6.59717 8.00586 6.59717H6.00586C5.40586 6.59717 5.00586 6.99717 5.00586 7.59717C5.00586 8.19717 5.40586 8.59717 6.00586 8.59717H8.00586C8.60586 8.59717 9.00586 8.19717 9.00586 7.59717ZM13.0059 7.59717C13.0059 6.99717 12.6059 6.59717 12.0059 6.59717H11.0059C10.4059 6.59717 10.0059 6.99717 10.0059 7.59717C10.0059 8.19717 10.4059 8.59717 11.0059 8.59717H12.0059C12.6059 8.59717 13.0059 8.19717 13.0059 7.59717ZM13.0059 15.5972C13.0059 14.9972 12.6059 14.5972 12.0059 14.5972H10.0059C9.40586 14.5972 9.00586 14.9972 9.00586 15.5972C9.00586 16.1972 9.40586 16.5972 10.0059 16.5972H12.0059C12.6059 16.5972 13.0059 16.1972 13.0059 15.5972Z\"\r\n fill=\"#00A3FF\" />\r\n <path\r\n d=\"M15.002 18.5971C15.002 20.2971 16.302 21.5971 18.002 21.5971C19.702 21.5971 21.002 20.2971 21.002 18.5971V12.4971C21.002 12.1971 20.602 11.9971 20.302 12.1971L19.002 13.5971L17.702 12.2971C17.302 11.8971 16.702 11.8971 16.302 12.2971L15.002 13.5971V18.5971Z\"\r\n fill=\"#00A3FF\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"card-footer ms-3 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.conversion?.footfall.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.conversion?.footfall.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\">\r\n <span *ngIf=\"conversionValue ==='footfall' && getCardGraphData?.conversion?.footfall.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"conversionValue ==='footfall' && getCardGraphData?.conversion?.footfall.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.conversion?.footfall.PreviousData ? getCardGraphData?.conversion?.footfall.PreviousData:'--'}}%</span>\r\n <span *ngIf=\"conversionValue ==='engagers' && getCardGraphData?.conversion?.engagers.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n \r\n <span *ngIf=\"conversionValue ==='engagers' && getCardGraphData?.conversion?.engagers.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.conversion?.engagers.PreviousData ? getCardGraphData?.conversion?.engagers.PreviousData:'--'}}%</span>\r\n\r\n <span *ngIf=\"conversionValue ==='Potential Buyers' && getCardGraphData?.conversion?.potentialBuyers.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"conversionValue ==='Potential Buyers' && getCardGraphData?.conversion?.potentialBuyers.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.conversion?.potentialBuyers.PreviousData ? getCardGraphData?.conversion?.potentialBuyers.PreviousData:'--'}}%</span>\r\n <span *ngIf=\"conversionValue ==='NoB Derived'\" class=\"percent-value\">--%</span>\r\n <span *ngIf=\"conversionValue ==='' && getCardGraphData?.conversion?.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n\r\n <span *ngIf=\"conversionValue ==='' && getCardGraphData?.conversion?.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.conversion?.PreviousData ? getCardGraphData?.conversion?.PreviousData:'--'}}%</span>\r\n \r\n <span\r\n class=\"week-font\"> vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"card-header ellipse1 border-0 px-3\" >\r\n <!-- [ngbTooltip]=\"bouncedTooltip\" placement=\"left\" -->\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"card-label header\">{{getCardData?.bounced?.rate ? getCardData?.bounced?.rate :'--'}}%</span>\r\n <span class=\"sub-header\">Bounced Rate</span>\r\n </h3>\r\n </div>\r\n <!-- <ng-template #bouncedTooltip>\r\n <div class=\"tooltip-content\">\r\n <h5 class=\"tooltip-title text-start\">Bounced Rate</h5>\r\n <p class=\"text-start\">Total walk-ins who spent less than <N>min/s.</p>\r\n <h4 class=\"text-start\">{{getCardData?.bounced?.rate}}</h4>\r\n <footer class=\"tooltip-footer text-start\"> <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.bounced?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.bounced?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span> <span class=\"mt-2 ms-2\">\r\n <span *ngIf=\"getCardGraphData?.bounced?.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"getCardGraphData?.bounced?.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.bounced?.PreviousData ? getCardGraphData?.bounced?.PreviousData:'--'}}%</span>\r\n <span class=\"week-font\">\r\n vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span></footer>\r\n </div>\r\n </ng-template> -->\r\n <div class=\"card-body p-0\">\r\n <div *ngIf=\"cardNodata\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body pb-0 px-0 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata1\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title1\">No data found</div>\r\n <!-- <div class=\"nodata-sub\">There is no result for this conversion funnel</div> -->\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!cardNodata\" class=\"text-center\" id=\"BouncedRate\"></div>\r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.bounced?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.bounced?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\">\r\n <span *ngIf=\"getCardGraphData?.bounced?.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"getCardGraphData?.bounced?.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.bounced?.PreviousData ? getCardGraphData?.bounced?.PreviousData:'--'}}%</span>\r\n <span class=\"week-font\">\r\n vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4 mt-3\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"card-header ellipse1 border-0 px-3\" >\r\n <!-- [ngbTooltip]=\"engagersTooltip\" placement=\"right\" -->\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"card-label header\">{{getCardData?.engagers?.rate ? getCardData?.engagers?.rate :'--'}}%</span>\r\n <span class=\"sub-header\">Engagers Rate</span>\r\n </h3>\r\n </div>\r\n <!-- <ng-template #engagersTooltip>\r\n <div class=\"tooltip-content\">\r\n <h5 class=\"tooltip-title text-start\">Engagers Rate</h5>\r\n <p class=\"text-start\">Total walk-ins who spent more than <Xmins> into the selected stores.</p>\r\n <h4 class=\"text-start\">{{getCardData?.engagers?.rate}}</h4>\r\n <footer class=\"tooltip-footer text-start\"> <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.engagers?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.engagers?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span> <span class=\"mt-2 ms-2\">\r\n <span *ngIf=\"getCardGraphData?.engagers?.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"getCardGraphData?.engagers?.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.engagers?.PreviousData ? getCardGraphData?.engagers?.PreviousData:'--'}}%</span>\r\n <span class=\"week-font\">\r\n vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span></footer>\r\n </div>\r\n </ng-template> -->\r\n <div class=\"card-body p-0\">\r\n <div *ngIf=\"cardNodata\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body pb-0 px-0 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata1\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title1\">No data found</div>\r\n <!-- <div class=\"nodata-sub\">There is no result for this conversion funnel</div> -->\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!cardNodata\" class=\"text-center\" id=\"engagers\"></div>\r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.engagers?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.engagers?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\">\r\n <span *ngIf=\"getCardGraphData?.engagers?.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"getCardGraphData?.engagers?.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.engagers?.PreviousData ? getCardGraphData?.engagers?.PreviousData:'--'}}%</span>\r\n <span class=\"week-font\">\r\n vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4 mt-3\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"card-header ellipse1 border-0 px-3\" > \r\n <!-- [ngbTooltip]=\"missedTooltip\" placement=\"right\" -->\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"card-label header\">{{getCardData?.missedopportunities?.rate ? getCardData?.missedopportunities?.rate :'--'}}%</span>\r\n <span class=\"sub-header\">Missed Opportunities</span>\r\n </h3>\r\n </div>\r\n\r\n <!-- <ng-template #missedTooltip>\r\n <div class=\"tooltip-content\">\r\n <h5 class=\"tooltip-title text-start\">Missed Opportunities</h5>\r\n <p class=\"text-start\">The difference between <engagers> and <conversions>, showing potential loss.</p>\r\n <h4 class=\"text-start\">{{getCardData?.missedopportunities?.rate}}</h4>\r\n <footer class=\"tooltip-footer text-start\"> \r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.missedopportunities?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.missedopportunities?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"ms-2 mt-2\">\r\n <span *ngIf=\"getCardGraphData?.missedopportunities?.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"getCardGraphData?.missedopportunities?.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.missedopportunities?.PreviousData ? getCardGraphData?.missedopportunities?.PreviousData:'--'}}%</span>\r\n <span class=\"week-font\">\r\n vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span>\r\n </footer>\r\n </div>\r\n </ng-template> -->\r\n <div class=\"card-body p-0 h-90px mt-3 mx-3\">\r\n <div class=\"row\">\r\n <div class=\"col-md-9\"><!--{{getCardData?.revenue?.value ?? '--'}} -->\r\n <div class=\"my-2\" *ngIf=\"getCardData?.revenue?.currency !=='inr'\"> <span class=\"card-label header\"><span class=\"me-1\">$</span> {{getCardData?.revenue?.value.toLocaleString('en-IN') ?? '--'}}</span></div>\r\n <div class=\"my-2\" *ngIf=\"getCardData?.revenue?.currency ==='inr'\"> <span class=\"card-label header\"><span class=\"me-1\">\u20B9</span> {{getCardData?.revenue?.value.toLocaleString('en-IN') ?? '--'}}</span></div>\r\n <div class=\"my-1\"><span class=\"sub-header\">Avg. Revenue Loss</span></div>\r\n </div>\r\n <div class=\"col-md-3 mt-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\r\n <g filter=\"url(#filter0_d_3885_2531)\">\r\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"#EAF8FF\"/>\r\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#EAF8FF\"/>\r\n <g clip-path=\"url(#clip0_3885_2531)\">\r\n <path d=\"M27.4585 17.2251C27.8133 18.8556 27.6707 20.5614 27.0505 22.1027L25.8593 21.3838L26.017 26.097L30 23.8834L28.717 23.1086C30.7171 18.4823 29.0726 12.9333 24.7799 10.3407C23.3328 9.46633 21.6918 9.00406 20.0206 9.00003C18.3494 8.99599 16.7064 9.45033 15.2555 10.3177L16.2049 12.0544C17.5933 11.2249 19.1953 10.8712 20.7858 11.043C22.3764 11.2149 23.8754 11.9036 25.0723 13.0125C26.2692 14.1214 27.1037 15.5946 27.4585 17.2251Z\" fill=\"#00A3FF\"/>\r\n <path d=\"M12.5402 20.7759C12.1854 19.1452 12.3282 17.4392 12.9485 15.8978L14.1398 16.6167L13.982 11.9035L10 14.1181L11.283 14.8909C9.28199 19.5182 10.9264 25.0662 15.2192 27.6588C16.6661 28.5333 18.3071 28.9958 19.9783 29C21.6495 29.0042 23.2926 28.55 24.7435 27.6828L23.7951 25.9461C22.4067 26.776 20.8045 27.13 19.2138 26.9583C17.623 26.7867 16.1237 26.0979 14.9267 24.989C13.7296 23.88 12.895 22.4066 12.5402 20.7759Z\" fill=\"#00A3FF\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M21.0372 13.003C21.0372 12.5514 20.6871 12.1852 20.2552 12.1852C19.8234 12.1852 19.4733 12.5514 19.4733 13.003V14.3659H18.952C18.2607 14.3659 17.5978 14.653 17.109 15.1642C16.6201 15.6754 16.3455 16.3687 16.3455 17.0916C16.3455 17.8146 16.6201 18.5079 17.109 19.0191C17.5978 19.5302 18.2607 19.8174 18.952 19.8174H19.4733V21.998H17.1275C16.6956 21.998 16.3455 22.3641 16.3455 22.8158C16.3455 23.2674 16.6956 23.6335 17.1275 23.6335H19.4733V24.9964C19.4733 25.448 19.8234 25.8141 20.2552 25.8141C20.6871 25.8141 21.0372 25.448 21.0372 24.9964V23.6335H21.5585C22.2498 23.6335 22.9127 23.3463 23.4015 22.8351C23.8903 22.324 24.1649 21.6306 24.1649 20.9077C24.1649 20.1848 23.8903 19.4915 23.4015 18.9803C22.9127 18.4691 22.2498 18.182 21.5585 18.182H21.0372V16.0013H22.8617C23.2936 16.0013 23.6437 15.6352 23.6437 15.1836C23.6437 14.732 23.2936 14.3659 22.8617 14.3659H21.0372V13.003ZM18.952 16.0013H19.4733V18.182H18.952C18.6755 18.182 18.4103 18.0671 18.2148 17.8626C18.0193 17.6581 17.9094 17.3808 17.9094 17.0916C17.9094 16.8025 18.0193 16.5252 18.2148 16.3207C18.4103 16.1162 18.6755 16.0013 18.952 16.0013ZM21.0372 21.998V19.8174H21.5585C21.835 19.8174 22.1002 19.9323 22.2957 20.1368C22.4912 20.3412 22.6011 20.6186 22.6011 20.9077C22.6011 21.1969 22.4912 21.4742 22.2957 21.6787C22.1002 21.8832 21.835 21.998 21.5585 21.998H21.0372Z\" fill=\"#00A3FF\"/>\r\n </g>\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_3885_2531\" x=\"0\" y=\"0\" width=\"40\" height=\"40\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/>\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\"/>\r\n <feOffset dy=\"1\"/>\r\n <feGaussianBlur stdDeviation=\"1\"/>\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\"/>\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_3885_2531\"/>\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_3885_2531\" result=\"shape\"/>\r\n </filter>\r\n <clipPath id=\"clip0_3885_2531\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(10 9)\"/>\r\n </clipPath>\r\n </defs>\r\n </svg></div>\r\n </div>\r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.missedopportunities?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.missedopportunities?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"ms-2 mt-2\">\r\n <span *ngIf=\"getCardGraphData?.missedopportunities?.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"getCardGraphData?.missedopportunities?.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.missedopportunities?.PreviousData ? getCardGraphData?.missedopportunities?.PreviousData:'--'}}%</span>\r\n <span class=\"week-font\">\r\n vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4 mt-3 h-100\">\r\n <div class=\"card card-border mb-5 py-0\">\r\n <div class=\"card-body p-0 h-90px mt-3 mx-3\">\r\n <div class=\"d-flex align-items-center me-2\">\r\n <div class=\"mt-3 flex-shrink-0\">\r\n <svg width=\"40\" height=\"41\" viewBox=\"0 0 40 41\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect y=\"0.5\" width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\"/>\r\n <path d=\"M17.6382 12.8922C17.6382 12.6835 17.7212 12.4833 17.8688 12.3357C18.0164 12.1881 18.2165 12.1052 18.4253 12.1052H21.5734C21.7822 12.1052 21.9823 12.1881 22.1299 12.3357C22.2775 12.4833 22.3605 12.6835 22.3605 12.8922C22.3605 13.1009 22.2775 13.3011 22.1299 13.4487C21.9823 13.5963 21.7822 13.6792 21.5734 13.6792H20.7864V14.7286L20.7853 14.7716C22.1156 14.9174 23.3767 15.4398 24.4204 16.2775L24.4277 16.2712L25.2148 15.4842C25.311 15.3806 25.4333 15.3048 25.569 15.2649C25.7046 15.2251 25.8485 15.2225 25.9855 15.2575C26.1224 15.2925 26.2474 15.3638 26.3472 15.4639C26.4471 15.564 26.5181 15.6892 26.5527 15.8263C26.5877 15.9631 26.5852 16.1068 26.5455 16.2423C26.5058 16.3778 26.4304 16.5002 26.3271 16.5965L25.5401 17.3836L25.5338 17.3909C26.3662 18.4331 26.8875 19.6891 27.0377 21.0144C27.1878 22.3397 26.9607 23.6805 26.3824 24.8825C25.8042 26.0845 24.8983 27.0987 23.7691 27.8086C22.6399 28.5184 21.3332 28.895 19.9993 28.895C18.6655 28.895 17.3588 28.5184 16.2296 27.8086C15.1004 27.0987 14.1945 26.0845 13.6163 24.8825C13.038 23.6805 12.8109 22.3397 12.961 21.0144C13.1112 19.6891 13.6325 18.4331 14.4649 17.3909L14.4586 17.3836L13.6716 16.5965C13.5324 16.4474 13.4566 16.25 13.4601 16.046C13.4636 15.842 13.5462 15.6473 13.6905 15.5031C13.8347 15.3588 14.0294 15.2762 14.2334 15.2727C14.4374 15.2692 14.6348 15.345 14.7839 15.4842L15.571 16.2712L15.5783 16.2775C16.6217 15.44 17.8824 14.9176 19.2123 14.7716V13.6792H18.4253C18.2165 13.6792 18.0164 13.5963 17.8688 13.4487C17.7212 13.3011 17.6382 13.1009 17.6382 12.8922ZM19.9993 27.3212C21.4606 27.3211 22.862 26.7404 23.8952 25.7071C24.9284 24.6737 25.5087 23.2722 25.5086 21.8109C25.5085 20.3496 24.9278 18.9482 23.8945 17.915C22.8611 16.8819 21.4596 16.3015 19.9983 16.3016C18.537 16.3018 17.1356 16.8824 16.1025 17.9158C15.0693 18.9492 14.4889 20.3507 14.489 21.8119C14.4892 23.2732 15.0698 24.6746 16.1032 25.7078C17.1366 26.741 18.5381 27.3213 19.9993 27.3212ZM20.4076 20.2903L21.8032 18.8947C21.8758 18.8195 21.9626 18.7595 22.0586 18.7182C22.1546 18.6769 22.2579 18.6551 22.3624 18.6542C22.4669 18.6532 22.5705 18.6731 22.6673 18.7126C22.764 18.7521 22.8519 18.8105 22.9259 18.8844C22.9998 18.9582 23.0583 19.0461 23.0979 19.1428C23.1375 19.2395 23.1575 19.3431 23.1566 19.4476C23.1557 19.5521 23.1341 19.6554 23.0929 19.7515C23.0517 19.8475 22.9918 19.9344 22.9166 20.007L21.521 21.4037C21.583 21.6371 21.5906 21.8815 21.5432 22.1182C21.4958 22.355 21.3948 22.5777 21.2478 22.7692C21.1008 22.9607 20.9118 23.1159 20.6953 23.2228C20.4789 23.3298 20.2408 23.3856 19.9993 23.386C19.7766 23.3841 19.5567 23.3349 19.3544 23.2416C19.1521 23.1483 18.9718 23.0131 18.8257 22.845C18.6795 22.6768 18.5707 22.4796 18.5066 22.2662C18.4424 22.0528 18.4243 21.8283 18.4534 21.6074C18.4825 21.3865 18.5582 21.1743 18.6755 20.9849C18.7928 20.7955 18.949 20.6332 19.1338 20.5086C19.3185 20.3841 19.5276 20.3003 19.7472 20.2626C19.9668 20.225 20.1919 20.2344 20.4076 20.2903Z\" fill=\"#667085\"/>\r\n </svg>\r\n </div>\r\n <div class=\"mx-3 mt-1\">\r\n <div class=\"my-1 card-label header\" *ngIf=\"getCardData?.avgDwellTime === 0\">0 mins</div>\r\n <div class=\"my-1 card-label header\" *ngIf=\"getCardData?.avgDwellTime !== 0\">{{getCardData?.avgDwellTime ? getCardData?.avgDwellTime :'--'}} mins</div>\r\n <div class=\"sub-header\">Avg Dwell Time</div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n <div class=\"card card-border py-0\">\r\n <div class=\"card-body p-0 h-90px mt-3 mx-3\">\r\n <div class=\"d-flex align-items-center me-2\">\r\n <div class=\"flex-shrink-0 mt-3\">\r\n <svg width=\"40\" height=\"41\" viewBox=\"0 0 40 41\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect y=\"0.5\" width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\"/>\r\n <path d=\"M21.9004 12.1675C22.9958 12.1675 24.0423 12.3918 24.9977 12.7987C25.9889 13.2207 26.8809 13.8402 27.6279 14.6087C28.3734 15.3756 28.9756 16.2931 29.3857 17.3162C29.7813 18.299 29.9993 19.3756 29.9993 20.5008C29.9993 21.6277 29.7813 22.7043 29.3857 23.6871C28.9756 24.7068 28.3734 25.6244 27.6263 26.3929C26.8809 27.1598 25.9889 27.7793 24.9945 28.2012C24.0391 28.6081 22.9925 28.8325 21.8988 28.8325C20.8034 28.8325 19.7568 28.6081 18.8014 28.2012C17.8102 27.7793 16.9183 27.1598 16.1729 26.3929L16.1712 26.3912C15.4242 25.6227 14.8236 24.7052 14.4134 23.6871C14.2865 23.3707 14.1774 23.0459 14.0879 22.7127C14.2572 22.7294 14.4297 22.7378 14.6038 22.7378C14.9342 22.7378 15.2565 22.7076 15.5706 22.649C15.6227 22.8098 15.6797 22.9688 15.7415 23.1246C16.0785 23.9617 16.5732 24.7152 17.1885 25.3481C17.8037 25.981 18.5378 26.49 19.3499 26.8366C20.1328 27.1698 20.9938 27.3557 21.8988 27.3557C22.8037 27.3557 23.6631 27.1715 24.4476 26.8366C25.2614 26.49 25.9938 25.981 26.6091 25.3481C27.2243 24.7152 27.7191 23.9601 28.056 23.1246C28.3799 22.3192 28.5605 21.4334 28.5605 20.5025C28.5605 19.5715 28.3815 18.6875 28.056 17.8804C27.7191 17.0432 27.2243 16.2898 26.6091 15.6569C25.9938 15.024 25.2598 14.5149 24.4476 14.1684C23.6647 13.8352 22.8037 13.6493 21.8988 13.6493C20.9938 13.6493 20.1344 13.8335 19.3499 14.1684C19.2799 14.1985 19.21 14.2303 19.1416 14.2621C18.8747 13.8301 18.5524 13.4383 18.1829 13.0984C18.3848 12.9913 18.5915 12.8925 18.8014 12.8021C19.7601 12.3918 20.805 12.1675 21.9004 12.1675ZM20.971 16.5393C20.971 16.335 21.0524 16.1508 21.181 16.0169C21.3112 15.8829 21.4902 15.8009 21.6888 15.8009C21.8874 15.8009 22.0664 15.8829 22.1966 16.0169C22.3268 16.1508 22.4066 16.335 22.4066 16.5393V20.4271L25.2305 22.1501C25.3997 22.2539 25.5137 22.4196 25.5592 22.6021C25.6048 22.7847 25.5837 22.9856 25.4827 23.1597V23.1614C25.3818 23.3355 25.2207 23.4527 25.0433 23.4996C24.8659 23.5465 24.6706 23.5247 24.5013 23.4209H24.4997L21.3405 21.4937C21.2314 21.4318 21.1419 21.3413 21.0768 21.2342C21.0101 21.122 20.971 20.9897 20.971 20.8491V16.5393Z\" fill=\"#667085\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M14.3913 12.6095C16.8164 12.6095 18.7826 14.6321 18.7826 17.1269C18.7826 19.6218 16.8164 21.6444 14.3913 21.6444C11.9661 21.6444 10 19.6218 10 17.1269C10 14.6321 11.9661 12.6095 14.3913 12.6095ZM14.3913 19.7172L16.748 16.7201H15.2848V15.1261H13.4977V16.7201H12.0345L14.3913 19.7172Z\" fill=\"#F04438\"/>\r\n </svg>\r\n </div>\r\n <div class=\"mx-3 mt-1\">\r\n <div class=\"my-1 card-label header\" *ngIf=\"getCardData?.avgDownTime === 0\">0 mins</div>\r\n <div class=\"my-1 card-label header\" *ngIf=\"getCardData?.avgDownTime !== 0\">{{getCardData?.avgDownTime ? getCardData?.avgDownTime :'--'}} mins</div>\r\n <div class=\"sub-header\">Avg Down Time</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4 mt-3 position-relative\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"card-label header\">{{getCardData?.potentialBuyers?.rate ? getCardData?.potentialBuyers?.rate :'--'}}%</span>\r\n <span class=\"sub-header \">Potential Buyers</span>\r\n </h3>\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <div *ngIf=\"cardNodata\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body pb-0 px-0 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata1\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title1\">No data found</div>\r\n <!-- <div class=\"nodata-sub\">There is no result for this conversion funnel</div> -->\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!cardNodata\" class=\"text-center\" id=\"PotentialBuyers\"></div>\r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.potentialBuyers?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.potentialBuyers?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\">\r\n <span *ngIf=\"getCardGraphData?.potentialBuyers?.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"getCardGraphData?.potentialBuyers?.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.potentialBuyers?.PreviousData ? getCardGraphData?.potentialBuyers?.PreviousData:'--'}}%</span>\r\n <span class=\"week-font\">\r\n vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"position-absolute end-0\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M6 12L10 8L6 4\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"col-md-8 mt-3\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <div class=\"px-2\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"card-label header\">Potential Buyer Distribution</span>\r\n <span class=\"sub-header\">Category-wise</span>\r\n </h3> \r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-9\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6 px-0\">\r\n <div class=\"card-body p-0\">\r\n <div class=\"text-start ms-10 mt-7 mb-3\"><span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"25\" height=\"24\" viewBox=\"0 0 25 24\" fill=\"none\">\r\n <path d=\"M20.25 21V19C20.25 17.9391 19.8286 16.9217 19.0784 16.1716C18.3283 15.4214 17.3109 15 16.25 15H8.25C7.18913 15 6.17172 15.4214 5.42157 16.1716C4.67143 16.9217 4.25 17.9391 4.25 19V21M16.25 7C16.25 9.20914 14.4591 11 12.25 11C10.0409 11 8.25 9.20914 8.25 7C8.25 4.79086 10.0409 3 12.25 3C14.4591 3 16.25 4.79086 16.25 7Z\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span><span class=\"left-card-count mt-2 ms-1\">{{getCardData?.potentialBuyers?.potentialBuyersSingle?.count ? getCardData?.potentialBuyers?.potentialBuyersSingle?.count.toLocaleString('en-IN'):'--'}}</span> <span class=\"left-card-count-header ms-1\">Single</span></div>\r\n <div class=\"text-start ms-15 mb-3\"><span class=\"badge badge-light-default week-font\">{{getCardData?.potentialBuyers?.potentialBuyersSingle?.ageGroup ? getCardData?.potentialBuyers?.potentialBuyersSingle?.ageGroup:'--'}} age</span></div>\r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.potentialBuyers?.potentialBuyersSingle?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.potentialBuyers?.potentialBuyersSingle?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\">\r\n <span *ngIf=\"getCardGraphData?.potentialBuyers?.potentialBuyersSingle?.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"getCardGraphData?.potentialBuyers?.potentialBuyersSingle?.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.potentialBuyers?.potentialBuyersSingle?.PreviousData ? getCardGraphData?.potentialBuyers?.potentialBuyersSingle?.PreviousData:'--'}}%</span>\r\n <span\r\n class=\"week-font\"> vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6 px-0\">\r\n <div class=\"card-body p-0\">\r\n <div class=\"text-start ms-10 mt-7 mb-3\"><span> <svg width=\"26\" height=\"24\" viewBox=\"0 0 26 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect width=\"26\" height=\"24\" fill=\"#DCDCDC\"/>\r\n <rect x=\"-460.5\" y=\"-340.5\" width=\"783\" height=\"1947\" rx=\"4.5\" stroke=\"#9747FF\" stroke-dasharray=\"10 5\"/>\r\n <mask id=\"path-2-inside-1_707_13106\" fill=\"white\">\r\n <path d=\"M-189 -89C-189 -95.6274 -183.627 -101 -177 -101H295C301.627 -101 307 -95.6274 307 -89V85C307 91.6274 301.627 97 295 97H-177C-183.627 97 -189 91.6274 -189 85V-89Z\"/>\r\n </mask>\r\n <path d=\"M-189 -89C-189 -95.6274 -183.627 -101 -177 -101H295C301.627 -101 307 -95.6274 307 -89V85C307 91.6274 301.627 97 295 97H-177C-183.627 97 -189 91.6274 -189 85V-89Z\" fill=\"white\"/>\r\n <path d=\"M-190 -89C-190 -96.1797 -184.18 -102 -177 -102H294C301.18 -102 307 -96.1797 307 -89C307 -95.0751 301.627 -100 295 -100H-177C-183.075 -100 -188 -95.0751 -188 -89H-190ZM307 85C307 92.1797 301.18 98 294 98H-177C-184.18 98 -190 92.1797 -190 85H-188C-188 91.0751 -183.075 96 -177 96H295C301.627 96 307 91.0751 307 85ZM-177 98C-184.18 98 -190 92.1797 -190 85V-89C-190 -96.1797 -184.18 -102 -177 -102V-100C-183.075 -100 -188 -95.0751 -188 -89V85C-188 91.0751 -183.075 96 -177 96V98ZM307 -101V97V-101Z\" fill=\"#D0D5DD\" mask=\"url(#path-2-inside-1_707_13106)\"/>\r\n <mask id=\"path-6-inside-2_707_13106\" fill=\"white\">\r\n <path d=\"M7.71064 7.38462C8.19552 7.38462 8.67565 7.28911 9.12362 7.10356C9.57159 6.918 9.97863 6.64603 10.3215 6.30316C10.6644 5.9603 10.9363 5.55326 11.1219 5.10529C11.3074 4.65732 11.4029 4.17719 11.4029 3.69231C11.4029 3.20743 11.3074 2.72729 11.1219 2.27932C10.9363 1.83135 10.6644 1.42431 10.3215 1.08145C9.97863 0.73859 9.57159 0.466616 9.12362 0.28106C8.67565 0.0955043 8.19552 -7.22529e-09 7.71064 0C6.73138 1.45921e-08 5.79222 0.38901 5.09978 1.08145C4.40734 1.77389 4.01833 2.71305 4.01833 3.69231C4.01833 4.67157 4.40734 5.61072 5.09978 6.30316C5.79222 6.99561 6.73138 7.38462 7.71064 7.38462ZM18.7876 7.38462C19.2724 7.38462 19.7526 7.28911 20.2005 7.10356C20.6485 6.918 21.0556 6.64603 21.3984 6.30316C21.7413 5.9603 22.0133 5.55326 22.1988 5.10529C22.3844 4.65732 22.4799 4.17719 22.4799 3.69231C22.4799 3.20743 22.3844 2.72729 22.1988 2.27932C22.0133 1.83135 21.7413 1.42431 21.3984 1.08145C21.0556 0.73859 20.6485 0.466616 20.2005 0.28106C19.7526 0.0955043 19.2724 -7.22529e-09 18.7876 0C17.8083 1.45921e-08 16.8691 0.38901 16.1767 1.08145C15.4843 1.77389 15.0953 2.71305 15.0953 3.69231C15.0953 4.67157 15.4843 5.61072 16.1767 6.30316C16.8691 6.99561 17.8083 7.38462 18.7876 7.38462ZM0.941406 10.736C0.941406 10.4575 0.996258 10.1818 1.10283 9.92448C1.2094 9.66719 1.3656 9.43342 1.56252 9.2365C1.75944 9.03958 1.99321 8.88338 2.2505 8.77681C2.50778 8.67024 2.78354 8.61539 3.06202 8.61539H8.98448C8.55169 9.36345 8.32452 10.2127 8.32602 11.0769C8.32519 11.7755 8.47341 12.4662 8.76079 13.1029C9.04816 13.7396 9.46807 14.3077 9.99248 14.7692H8.60048C8.01418 14.7687 7.43803 14.9222 6.92969 15.2144C6.42134 15.5065 5.99864 15.927 5.70387 16.4338C3.7211 16.0449 2.51618 15.0782 1.81464 13.992C0.941406 12.64 0.941406 11.2431 0.941406 11.0012V10.736ZM17.8977 14.7692C18.484 14.7687 19.0602 14.9222 19.5685 15.2144C20.0769 15.5065 20.4996 15.927 20.7943 16.4338C22.7771 16.0449 23.982 15.0782 24.6836 13.992C25.5568 12.64 25.5568 11.2431 25.5568 11.0012V10.7366C25.5569 10.4581 25.5021 10.1823 25.3955 9.9249C25.289 9.66755 25.1328 9.4337 24.9359 9.23672C24.739 9.03973 24.5052 8.88348 24.2478 8.77687C23.9905 8.67026 23.7147 8.61539 23.4362 8.61539H17.5137C17.9465 9.36345 18.1737 10.2127 18.1722 11.0769C18.173 11.7755 18.0248 12.4662 17.7374 13.1029C17.45 13.7396 17.0301 14.3077 16.5057 14.7692H17.8977ZM16.9414 11.0769C16.9414 12.0562 16.5524 12.9953 15.86 13.6878C15.1675 14.3802 14.2284 14.7692 13.2491 14.7692C12.2698 14.7692 11.3307 14.3802 10.6382 13.6878C9.9458 12.9953 9.55679 12.0562 9.55679 11.0769C9.55679 10.0977 9.9458 9.15851 10.6382 8.46607C11.3307 7.77363 12.2698 7.38462 13.2491 7.38462C14.2284 7.38462 15.1675 7.77363 15.86 8.46607C16.5524 9.15851 16.9414 10.0977 16.9414 11.0769ZM6.47987 18.1206C6.47987 17.5582 6.70329 17.0188 7.10098 16.6211C7.49867 16.2234 8.03806 16 8.60048 16H17.8977C18.4601 16 18.9995 16.2234 19.3972 16.6211C19.7949 17.0188 20.0183 17.5582 20.0183 18.1206V18.3858C20.0183 18.6283 20.0183 20.0246 19.1451 21.3766C18.2325 22.7895 16.4694 24 13.2491 24C10.0288 24 8.26571 22.7895 7.3531 21.3766C6.47987 20.0246 6.47987 18.6277 6.47987 18.3858V18.1206Z\"/>\r\n </mask>\r\n <path d=\"M7.71064 7.38462C8.19552 7.38462 8.67565 7.28911 9.12362 7.10356C9.57159 6.918 9.97863 6.64603 10.3215 6.30316C10.6644 5.9603 10.9363 5.55326 11.1219 5.10529C11.3074 4.65732 11.4029 4.17719 11.4029 3.69231C11.4029 3.20743 11.3074 2.72729 11.1219 2.27932C10.9363 1.83135 10.6644 1.42431 10.3215 1.08145C9.97863 0.73859 9.57159 0.466616 9.12362 0.28106C8.67565 0.0955043 8.19552 -7.22529e-09 7.71064 0C6.73138 1.45921e-08 5.79222 0.38901 5.09978 1.08145C4.40734 1.77389 4.01833 2.71305 4.01833 3.69231C4.01833 4.67157 4.40734 5.61072 5.09978 6.30316C5.79222 6.99561 6.73138 7.38462 7.71064 7.38462ZM18.7876 7.38462C19.2724 7.38462 19.7526 7.28911 20.2005 7.10356C20.6485 6.918 21.0556 6.64603 21.3984 6.30316C21.7413 5.9603 22.0133 5.55326 22.1988 5.10529C22.3844 4.65732 22.4799 4.17719 22.4799 3.69231C22.4799 3.20743 22.3844 2.72729 22.1988 2.27932C22.0133 1.83135 21.7413 1.42431 21.3984 1.08145C21.0556 0.73859 20.6485 0.466616 20.2005 0.28106C19.7526 0.0955043 19.2724 -7.22529e-09 18.7876 0C17.8083 1.45921e-08 16.8691 0.38901 16.1767 1.08145C15.4843 1.77389 15.0953 2.71305 15.0953 3.69231C15.0953 4.67157 15.4843 5.61072 16.1767 6.30316C16.8691 6.99561 17.8083 7.38462 18.7876 7.38462ZM0.941406 10.736C0.941406 10.4575 0.996258 10.1818 1.10283 9.92448C1.2094 9.66719 1.3656 9.43342 1.56252 9.2365C1.75944 9.03958 1.99321 8.88338 2.2505 8.77681C2.50778 8.67024 2.78354 8.61539 3.06202 8.61539H8.98448C8.55169 9.36345 8.32452 10.2127 8.32602 11.0769C8.32519 11.7755 8.47341 12.4662 8.76079 13.1029C9.04816 13.7396 9.46807 14.3077 9.99248 14.7692H8.60048C8.01418 14.7687 7.43803 14.9222 6.92969 15.2144C6.42134 15.5065 5.99864 15.927 5.70387 16.4338C3.7211 16.0449 2.51618 15.0782 1.81464 13.992C0.941406 12.64 0.941406 11.2431 0.941406 11.0012V10.736ZM17.8977 14.7692C18.484 14.7687 19.0602 14.9222 19.5685 15.2144C20.0769 15.5065 20.4996 15.927 20.7943 16.4338C22.7771 16.0449 23.982 15.0782 24.6836 13.992C25.5568 12.64 25.5568 11.2431 25.5568 11.0012V10.7366C25.5569 10.4581 25.5021 10.1823 25.3955 9.9249C25.289 9.66755 25.1328 9.4337 24.9359 9.23672C24.739 9.03973 24.5052 8.88348 24.2478 8.77687C23.9905 8.67026 23.7147 8.61539 23.4362 8.61539H17.5137C17.9465 9.36345 18.1737 10.2127 18.1722 11.0769C18.173 11.7755 18.0248 12.4662 17.7374 13.1029C17.45 13.7396 17.0301 14.3077 16.5057 14.7692H17.8977ZM16.9414 11.0769C16.9414 12.0562 16.5524 12.9953 15.86 13.6878C15.1675 14.3802 14.2284 14.7692 13.2491 14.7692C12.2698 14.7692 11.3307 14.3802 10.6382 13.6878C9.9458 12.9953 9.55679 12.0562 9.55679 11.0769C9.55679 10.0977 9.9458 9.15851 10.6382 8.46607C11.3307 7.77363 12.2698 7.38462 13.2491 7.38462C14.2284 7.38462 15.1675 7.77363 15.86 8.46607C16.5524 9.15851 16.9414 10.0977 16.9414 11.0769ZM6.47987 18.1206C6.47987 17.5582 6.70329 17.0188 7.10098 16.6211C7.49867 16.2234 8.03806 16 8.60048 16H17.8977C18.4601 16 18.9995 16.2234 19.3972 16.6211C19.7949 17.0188 20.0183 17.5582 20.0183 18.1206V18.3858C20.0183 18.6283 20.0183 20.0246 19.1451 21.3766C18.2325 22.7895 16.4694 24 13.2491 24C10.0288 24 8.26571 22.7895 7.3531 21.3766C6.47987 20.0246 6.47987 18.6277 6.47987 18.3858V18.1206Z\" stroke=\"#98A2B3\" stroke-width=\"3\" mask=\"url(#path-6-inside-2_707_13106)\"/>\r\n </svg></span><span class=\"left-card-count ms-1 mt-2\">{{getCardData?.potentialBuyers?.potentialBuyersGroup?.count ? getCardData?.potentialBuyers?.potentialBuyersGroup?.count.toLocaleString('en-IN'):'--'}}</span> <span class=\"left-card-count-header ms-1\">Group</span></div>\r\n <div class=\"text-start ms-15 mb-3\"><span class=\"badge badge-light-default week-font\">{{getCardData?.potentialBuyers?.potentialBuyersGroup?.ageGroup ? getCardData?.potentialBuyers?.potentialBuyersGroup?.ageGroup:'--'}} age</span></div>\r\n \r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.potentialBuyers?.potentialBuyersGroup?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.potentialBuyers?.potentialBuyersGroup?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\">\r\n <span *ngIf=\"getCardGraphData?.potentialBuyers?.potentialBuyersGroup?.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"getCardGraphData?.potentialBuyers?.potentialBuyersGroup?.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.potentialBuyers?.potentialBuyersGroup?.PreviousData ? getCardGraphData?.potentialBuyers?.potentialBuyersGroup?.PreviousData:'--'}}%</span>\r\n <span\r\n class=\"week-font\"> vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n \r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-3 px-0\">\r\n <div class=\"card-body p-0\">\r\n <div class=\"text-center mt-7 mb-3\"><span class=\"left-card-count mt-2\">{{getCardData?.potentialBuyers?.potentialBuyersPersons?.count ? getCardData?.potentialBuyers?.potentialBuyersPersons?.count.toLocaleString('en-IN'):'--'}}</span> <span class=\"left-card-count-header ms-1\">Persons</span></div>\r\n <div class=\"text-center mb-3\"><span class=\"badge badge-light-default week-font\">{{getCardData?.potentialBuyers?.potentialBuyersSingle?.ageGroup ? getCardData.potentialBuyers?.potentialBuyersSingle?.ageGroup:'--'}} age</span>\r\n </div>\r\n \r\n </div>\r\n <div class=\"card-footer text-center p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2 ms-2\"><span class=\"percent-value\"></span><span\r\n class=\"ms-2 week-font\"> Avg. Group size</span>\r\n \r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M6 12L10 8L6 4\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div> -->\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n\r\n </div>\r\n <div class=\"col-md-5\">\r\n <div class=\"card mb-3\">\r\n <div class=\"card-header border-0 pt-3 ps-5\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text\">Conversion Funnel \r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" \r\n placement=\"top\" \r\n ngbTooltip=\"Total opportunity of sales conversion versus total walkins\">\r\n <g clip-path=\"url(#clip0_1432_80035)\">\r\n <path d=\"M8.00065 10.6666V7.99992M8.00065 5.33325H8.00732M14.6673 7.99992C14.6673 11.6818 11.6826 14.6666 8.00065 14.6666C4.31875 14.6666 1.33398 11.6818 1.33398 7.99992C1.33398 4.31802 4.31875 1.33325 8.00065 1.33325C11.6826 1.33325 14.6673 4.31802 14.6673 7.99992Z\" stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1432_80035\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"text-sub mb-2\">{{headerData?.date?.startDate | date:'dd MMM, yyyy'}} \u2013 {{headerData?.date?.endDate | date:'dd MMM, yyyy'}}</span>\r\n </h3>\r\n \r\n </div>\r\n\r\n <div class=\"card-body p-0\" >\r\n <div *ngIf=\"heatloading\" class=\"row loader d-flex justify-content-center align-items-center h-275px\">\r\n <div class=\"shimmer pt-0\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"heatnoData\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this conversion funnel</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!heatloading && !heatnoData\" class=\"text-center mb-3\" id=\"chartdiv\"></div>\r\n </div>\r\n </div>\r\n \r\n <div *ngIf=\"mpaloading && storeIdarray?.length > 1 || mapnoData && storeIdarray?.length > 1 || !storeIdarray?.length\" class=\"card\">\r\n <div class=\"card-header border-0 pt-3 ps-7 pe-0\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text\" >Explore</span> \r\n </h3>\r\n \r\n </div>\r\n <div *ngIf=\"mpaloading\" class=\"row loader d-flex justify-content-center align-items-center h-225px\">\r\n <div class=\"shimmer pt-0\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"mapnoData\" class=\"row px-3\">\r\n <div class=\"col-md-12\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-map\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this Store map</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!mpaloading && !mapnoData && storeIdarray?.length > 1\" class=\"card\">\r\n <div class=\"card-header border-0 pt-3 ps-7 pe-0\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text\" >Explore</span> \r\n </h3>\r\n <div class=\"card-toolbar mt-0\">\r\n \r\n <button *ngIf=\"!mpaloading && !mapnoData\" type=\"button\" (click)=\"exporeView()\"\r\n class=\"btn me-8 btn-light-primary1 rounded-3 text-nowrap border-val\">\r\n <span class=\"ms-2\">Explore</span>\r\n </button>\r\n </div>\r\n \r\n </div>\r\n \r\n <div *ngIf=\"!mapnoData\" class=\"card-body col-md-12 pt-0 pb-5 ps-7\">\r\n <div id=\"map\" class=\"w-100\" ></div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"storeIdarray?.length === 1\" class=\"card pb-2\">\r\n <div class=\"card-header border-0 pt-3 ps-5 pe-0\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text\">Recap Video \r\n <svg placement=\"right\"\r\n ngbTooltip=\"A quick recap of the store activity along with the avg tech infrastructure downtime status\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1432_80035)\">\r\n <path d=\"M8.00065 10.6666V7.99992M8.00065 5.33325H8.00732M14.6673 7.99992C14.6673 11.6818 11.6826 14.6666 8.00065 14.6666C4.31875 14.6666 1.33398 11.6818 1.33398 7.99992C1.33398 4.31802 4.31875 1.33325 8.00065 1.33325C11.6826 1.33325 14.6673 4.31802 14.6673 7.99992Z\" stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1432_80035\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n \r\n \r\n </span>\r\n \r\n <span class=\"text-sub mb-2\">Dated: {{headerData?.date?.endDate | date:' dd MMM,yyyy'}}</span>\r\n </h3>\r\n <div class=\"card-toolbar mt-0\">\r\n <button type=\"button\" \r\n class=\"btn btn-default btn-outline btn-outline-default rounded-3 text-nowrap border-val text-start\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"14\" viewBox=\"0 0 16 14\" fill=\"none\">\r\n <g id=\"Group\">\r\n <path id=\"Vector\" d=\"M9.51953 0.333984C10.3958 0.333984 11.2331 0.513477 11.9974 0.838974C12.7904 1.17653 13.5039 1.67214 14.1016 2.28697C14.6979 2.90046 15.1797 3.6345 15.5078 4.45293C15.8242 5.23922 15.9987 6.10051 15.9987 7.00065C15.9987 7.90213 15.8242 8.76343 15.5078 9.54971C15.1797 10.3655 14.6979 11.0995 14.1003 11.7143C13.5039 12.3278 12.7904 12.8234 11.9948 13.161C11.2305 13.4865 10.3932 13.666 9.51823 13.666C8.64193 13.666 7.80469 13.4865 7.04036 13.161C6.2474 12.8234 5.53385 12.3278 4.9375 11.7143L4.9362 11.713C4.33854 11.0982 3.85807 10.3641 3.52995 9.54971C3.42839 9.29655 3.34115 9.03668 3.26953 8.77013C3.40495 8.78352 3.54297 8.79022 3.68229 8.79022C3.94661 8.79022 4.20443 8.76611 4.45573 8.71922C4.4974 8.84782 4.54297 8.97507 4.59245 9.09964C4.86198 9.76939 5.25781 10.3722 5.75 10.8785C6.24219 11.3848 6.82943 11.792 7.47917 12.0693C8.10547 12.3359 8.79427 12.4845 9.51823 12.4845C10.2422 12.4845 10.9297 12.3372 11.5573 12.0693C12.2083 11.792 12.7943 11.3848 13.2865 10.8785C13.7786 10.3722 14.1745 9.76805 14.444 9.09964C14.7031 8.45534 14.8477 7.74675 14.8477 7.00199C14.8477 6.25723 14.7044 5.54998 14.444 4.90434C14.1745 4.23459 13.7786 3.63182 13.2865 3.12549C12.7943 2.61916 12.207 2.21196 11.5573 1.93468C10.931 1.66812 10.2422 1.51944 9.51823 1.51944C8.79427 1.51944 8.10677 1.66678 7.47917 1.93468C7.42318 1.95879 7.36719 1.98424 7.3125 2.00969C7.09896 1.6641 6.84115 1.35066 6.54557 1.07874C6.70703 0.993016 6.8724 0.913986 7.04036 0.841653C7.80729 0.513477 8.64323 0.333984 9.51953 0.333984ZM8.77604 3.83141C8.77604 3.66799 8.84115 3.52064 8.94401 3.41348C9.04818 3.30632 9.19141 3.24069 9.35026 3.24069C9.50911 3.24069 9.65234 3.30632 9.75651 3.41348C9.86068 3.52064 9.92448 3.66799 9.92448 3.83141V6.94171L12.1836 8.32005C12.319 8.4031 12.4102 8.53571 12.4466 8.68172C12.4831 8.82772 12.4661 8.98846 12.3854 9.12777V9.12911C12.3047 9.26842 12.1758 9.36218 12.0339 9.39969C11.8919 9.43719 11.7357 9.41978 11.6003 9.33673H11.599L9.07161 7.79497C8.98438 7.74541 8.91276 7.67308 8.86068 7.58735C8.80729 7.4976 8.77604 7.39178 8.77604 7.27927V3.83141Z\" fill=\"#667085\"/>\r\n <path id=\"Vector_2\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M3.51302 0.687622C5.45312 0.687622 7.02604 2.30573 7.02604 4.30158C7.02604 6.29743 5.45312 7.91554 3.51302 7.91554C1.57292 7.91554 0 6.29743 0 4.30158C0 2.30573 1.57292 0.687622 3.51302 0.687622ZM3.51302 6.37378L5.39844 3.97608H4.22786V2.70088H2.79818V3.97608H1.6276L3.51302 6.37378Z\" fill=\"#F04438\"/>\r\n </g>\r\n </svg>\r\n <span class=\"ms-2\">{{getRecapVideoData?.downTime ?? '--'}} Mins</span>\r\n </button>\r\n <button type=\"button\" \r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\">\r\n <svg *ngIf=\"getRecapVideoData?.health ==='GOOD'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g id=\"Frame\">\r\n <path id=\"Vector\" d=\"M13.4349 2.5C14.8238 2.5 15.9871 3.01389 16.9249 4.04167C17.8627 5.06944 18.3313 6.29167 18.3307 7.70833C18.3307 7.95833 18.3168 8.205 18.2891 8.44833C18.2613 8.69167 18.2127 8.93111 18.1432 9.16667H12.9349L11.5182 7.04167C11.4488 6.93056 11.3516 6.84028 11.2266 6.77083C11.1016 6.70139 10.9696 6.66667 10.8307 6.66667C10.6502 6.66667 10.4868 6.72222 10.3407 6.83333C10.1946 6.94444 10.0941 7.08333 10.0391 7.25L8.91406 10.625L8.1849 9.54167C8.11545 9.43056 8.01823 9.34028 7.89323 9.27083C7.76823 9.20139 7.63628 9.16667 7.4974 9.16667H1.85156C1.78212 8.93056 1.73351 8.69083 1.70573 8.4475C1.67795 8.20417 1.66406 7.96472 1.66406 7.72917C1.66406 6.29861 2.12934 5.06944 3.0599 4.04167C3.99045 3.01389 5.15017 2.5 6.53906 2.5C7.20573 2.5 7.83434 2.63194 8.4249 2.89583C9.01545 3.15972 9.53962 3.52778 9.9974 4C10.4418 3.52778 10.9593 3.15972 11.5499 2.89583C12.1405 2.63194 12.7688 2.5 13.4349 2.5ZM9.9974 17.5C9.7474 17.5 9.50767 17.4547 9.27823 17.3642C9.04878 17.2736 8.84406 17.1383 8.66406 16.9583L3.08073 11.3542C2.9974 11.2708 2.92101 11.1875 2.85156 11.1042C2.78212 11.0208 2.71267 10.9306 2.64323 10.8333H7.03906L8.45573 12.9583C8.52517 13.0694 8.6224 13.1597 8.7474 13.2292C8.8724 13.2986 9.00434 13.3333 9.14323 13.3333C9.32378 13.3333 9.49045 13.2778 9.64323 13.1667C9.79601 13.0556 9.90017 12.9167 9.95573 12.75L11.0807 9.375L11.7891 10.4583C11.8724 10.5694 11.9766 10.6597 12.1016 10.7292C12.2266 10.7986 12.3585 10.8333 12.4974 10.8333H17.3307L17.1224 11.0833L16.9141 11.3333L11.3099 16.9583C11.1293 17.1389 10.928 17.2744 10.7057 17.365C10.4835 17.4556 10.2474 17.5006 9.9974 17.5Z\" fill=\"#12B76A\"/>\r\n </g>\r\n </svg>\r\n <svg *ngIf=\"getRecapVideoData?.health ==='AVERAGE'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g id=\"Frame\">\r\n <path id=\"Vector\" d=\"M13.4349 2.5C14.8238 2.5 15.9871 3.01389 16.9249 4.04167C17.8627 5.06944 18.3313 6.29167 18.3307 7.70833C18.3307 7.95833 18.3168 8.205 18.2891 8.44833C18.2613 8.69167 18.2127 8.93111 18.1432 9.16667H12.9349L11.5182 7.04167C11.4488 6.93056 11.3516 6.84028 11.2266 6.77083C11.1016 6.70139 10.9696 6.66667 10.8307 6.66667C10.6502 6.66667 10.4868 6.72222 10.3407 6.83333C10.1946 6.94444 10.0941 7.08333 10.0391 7.25L8.91406 10.625L8.1849 9.54167C8.11545 9.43056 8.01823 9.34028 7.89323 9.27083C7.76823 9.20139 7.63628 9.16667 7.4974 9.16667H1.85156C1.78212 8.93056 1.73351 8.69083 1.70573 8.4475C1.67795 8.20417 1.66406 7.96472 1.66406 7.72917C1.66406 6.29861 2.12934 5.06944 3.0599 4.04167C3.99045 3.01389 5.15017 2.5 6.53906 2.5C7.20573 2.5 7.83434 2.63194 8.4249 2.89583C9.01545 3.15972 9.53962 3.52778 9.9974 4C10.4418 3.52778 10.9593 3.15972 11.5499 2.89583C12.1405 2.63194 12.7688 2.5 13.4349 2.5ZM9.9974 17.5C9.7474 17.5 9.50767 17.4547 9.27823 17.3642C9.04878 17.2736 8.84406 17.1383 8.66406 16.9583L3.08073 11.3542C2.9974 11.2708 2.92101 11.1875 2.85156 11.1042C2.78212 11.0208 2.71267 10.9306 2.64323 10.8333H7.03906L8.45573 12.9583C8.52517 13.0694 8.6224 13.1597 8.7474 13.2292C8.8724 13.2986 9.00434 13.3333 9.14323 13.3333C9.32378 13.3333 9.49045 13.2778 9.64323 13.1667C9.79601 13.0556 9.90017 12.9167 9.95573 12.75L11.0807 9.375L11.7891 10.4583C11.8724 10.5694 11.9766 10.6597 12.1016 10.7292C12.2266 10.7986 12.3585 10.8333 12.4974 10.8333H17.3307L17.1224 11.0833L16.9141 11.3333L11.3099 16.9583C11.1293 17.1389 10.928 17.2744 10.7057 17.365C10.4835 17.4556 10.2474 17.5006 9.9974 17.5Z\" fill=\"#FACC15\"/>\r\n </g>\r\n </svg>\r\n <svg *ngIf=\"getRecapVideoData?.health ==='BAD'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g id=\"Frame\">\r\n <path id=\"Vector\" d=\"M13.4349 2.5C14.8238 2.5 15.9871 3.01389 16.9249 4.04167C17.8627 5.06944 18.3313 6.29167 18.3307 7.70833C18.3307 7.95833 18.3168 8.205 18.2891 8.44833C18.2613 8.69167 18.2127 8.93111 18.1432 9.16667H12.9349L11.5182 7.04167C11.4488 6.93056 11.3516 6.84028 11.2266 6.77083C11.1016 6.70139 10.9696 6.66667 10.8307 6.66667C10.6502 6.66667 10.4868 6.72222 10.3407 6.83333C10.1946 6.94444 10.0941 7.08333 10.0391 7.25L8.91406 10.625L8.1849 9.54167C8.11545 9.43056 8.01823 9.34028 7.89323 9.27083C7.76823 9.20139 7.63628 9.16667 7.4974 9.16667H1.85156C1.78212 8.93056 1.73351 8.69083 1.70573 8.4475C1.67795 8.20417 1.66406 7.96472 1.66406 7.72917C1.66406 6.29861 2.12934 5.06944 3.0599 4.04167C3.99045 3.01389 5.15017 2.5 6.53906 2.5C7.20573 2.5 7.83434 2.63194 8.4249 2.89583C9.01545 3.15972 9.53962 3.52778 9.9974 4C10.4418 3.52778 10.9593 3.15972 11.5499 2.89583C12.1405 2.63194 12.7688 2.5 13.4349 2.5ZM9.9974 17.5C9.7474 17.5 9.50767 17.4547 9.27823 17.3642C9.04878 17.2736 8.84406 17.1383 8.66406 16.9583L3.08073 11.3542C2.9974 11.2708 2.92101 11.1875 2.85156 11.1042C2.78212 11.0208 2.71267 10.9306 2.64323 10.8333H7.03906L8.45573 12.9583C8.52517 13.0694 8.6224 13.1597 8.7474 13.2292C8.8724 13.2986 9.00434 13.3333 9.14323 13.3333C9.32378 13.3333 9.49045 13.2778 9.64323 13.1667C9.79601 13.0556 9.90017 12.9167 9.95573 12.75L11.0807 9.375L11.7891 10.4583C11.8724 10.5694 11.9766 10.6597 12.1016 10.7292C12.2266 10.7986 12.3585 10.8333 12.4974 10.8333H17.3307L17.1224 11.0833L16.9141 11.3333L11.3099 16.9583C11.1293 17.1389 10.928 17.2744 10.7057 17.365C10.4835 17.4556 10.2474 17.5006 9.9974 17.5Z\" fill=\"#F04438\"/>\r\n </g>\r\n </svg>\r\n <span class=\"ms-2\">{{getRecapVideoData?.health ?? '--'}}</span>\r\n </button>\r\n <!-- <button type=\"button\" (click)=\"cameraView()\"\r\n class=\"btn mx-2 btn-light-primary1 rounded-3 text-nowrap border-val\">\r\n <span class=\"ms-2\">Live View</span>\r\n </button> -->\r\n </div>\r\n \r\n </div>\r\n <div *ngIf=\"recaplaoding\" class=\"row loader d-flex justify-content-center align-items-center h-225px\">\r\n <div class=\"shimmer pt-0\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"recapnoData\" class=\"row px-3\">\r\n <div class=\"col-md-12\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-map-recap\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this Recap video</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!recaplaoding && !recapnoData\" class=\"card-body p-0\">\r\n <div class=\"row mx-3\">\r\n \r\n <div class=\"carousel\">\r\n <div class=\"carousel-inner\">\r\n <div\r\n class=\"carousel-item\"\r\n *ngFor=\"let group of recapsGrouped; let i = index\"\r\n [class.active]=\"i === currentIndex\"\r\n >\r\n <div class=\"row\">\r\n <div *ngFor=\"let pair of group\" [ngClass]=\"colValue\">\r\n <img [src]=\"pair.thumbImage\"\r\n (click)=\"videoClick(pair)\"\r\n class=\"image-thumb mb-8 d-block w-100 cursor-pointer\"\r\n alt=\"Image {{ i + 1 }}\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <!-- Conditionally display Previous button -->\r\n <button class=\"carousel-control-prev\" *ngIf=\"currentIndex > 0\" (click)=\"prevSlide()\">\r\n <span class=\"carousel-control-prev-icon\"></span>\r\n </button>\r\n \r\n <!-- Conditionally display Next button -->\r\n <button class=\"carousel-control-next\" *ngIf=\"currentIndex < recapsGrouped.length - 1\" (click)=\"nextSlide()\">\r\n <span class=\"carousel-control-next-icon\"></span>\r\n </button>\r\n \r\n <!-- Navigation Dots -->\r\n <div *ngIf=\"recapsGrouped.length > 1\" class=\"row\">\r\n <ul class=\"carousel-indicators\">\r\n <li *ngFor=\"let group of recapsGrouped; let i = index\"\r\n [class.active]=\"i === currentIndex\"\r\n (click)=\"goToSlide(i)\">\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n </div>\r\n \r\n \r\n <!-- <video controls autoplay class=\"recap-img p-3\" [src]=\"getRecapData?.videoURL\"> -->\r\n <!-- <source type=\"video/mp4\"> -->\r\n <!-- <source [src]=\"getRecapData?.videoURL\" type=\"video/ogg\"> -->\r\n <!-- </video> -->\r\n <!-- <div #mapContainer style=\"height:230px;\"></div> -->\r\n <!-- <div class=\"col-md-6 mb-3\"><img src=\"assets/tango/Images/recap.svg\" alt=\"\" class=\"recap-img\"></div>\r\n <div class=\"col-md-6 mb-3\"><img src=\"assets/tango/Images/recap.svg\" alt=\"\" class=\"recap-img\"></div> -->\r\n\r\n </div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n <div class=\"col-md-12 mt-3\">\r\n <lib-traffic-charts class=\"my-2\"></lib-traffic-charts>\r\n \r\n <lib-traffic-card-charts class=\"my-2\"></lib-traffic-card-charts>\r\n <lib-image-doc *ngIf=\"storeIdarray?.length === 1\" class=\"my-2\"></lib-image-doc>\r\n </div>\r\n <div *ngIf=\"storeIdarray?.length > 1\" class=\"col-md-6 mt-3\">\r\n <div class=\"card h-100\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text mb-2\">Performance Matrix\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" placement=\"right\"\r\n ngbTooltip=\"Store performance based on metrics selected\">\r\n <g clip-path=\"url(#clip0_1432_80035)\">\r\n <path\r\n d=\"M8.00065 10.6666V7.99992M8.00065 5.33325H8.00732M14.6673 7.99992C14.6673 11.6818 11.6826 14.6666 8.00065 14.6666C4.31875 14.6666 1.33398 11.6818 1.33398 7.99992C1.33398 4.31802 4.31875 1.33325 8.00065 1.33325C11.6826 1.33325 14.6673 4.31802 14.6673 7.99992Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1432_80035\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"text-sub mb-2\">{{headerData?.date?.startDate | date:'dd MMM, yyyy'}} \u2013 {{headerData?.date?.endDate | date:'dd MMM, yyyy'}}</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n \r\n </div>\r\n </div>\r\n <div class=\"row mx-3 align-items-center w-75\">\r\n <div class=\"d-flex align-items-center ms-3\">\r\n <select class=\"form-select-sm form-select me-2 dropselect\" [(ngModel)]=\"footfallValue\" (change)=\"onValueChange($event)\">\r\n <option *ngFor=\"let obj of getFilteredFootfallDatasets()\" [id]=\"obj.label\" [value]=\"obj.value\">{{obj.label}}</option>\r\n </select>\r\n <span class=\"mx-2\">Vs</span>\r\n <select class=\"form-select-sm form-select ms-2 dropselect\" [(ngModel)]=\"bounceValue\" (change)=\"onBounceChange($event)\">\r\n <option *ngFor=\"let obj of getFilteredBounceDatasets()\" [id]=\"obj.label\" [value]=\"obj.value\">{{obj.label}}</option>\r\n\r\n </select>\r\n </div>\r\n </div>\r\n <div *ngIf=\"performanceLoading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"performancenoData\" class=\"row\">\r\n <div class=\"col-lg-12 mt-20 mb-6\">\r\n <div class=\" mt-20 card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata-table\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this {{footfallLabel | titlecase}} vs {{bounceLabel | titlecase}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!performanceLoading && !performancenoData\" class=\"card-body\">\r\n \r\n <div class=\"quadrant-chart z-1\">\r\n <div class=\"axis-labels\">\r\n <!-- X Axis Label -->\r\n <div class=\"x-axis-label\">\r\n <span>{{bounceLabel | titlecase}} -></span>\r\n </div>\r\n <!-- Y Axis Label -->\r\n <div class=\"y-axis-label\">\r\n <span>{{footfallLabel | titlecase}} -></span>\r\n </div>\r\n </div>\r\n <!-- Top Left Quadrant -->\r\n <div class=\"quadrant\" id=\"q1\">\r\n <span class=\"label\">High <span *ngIf=\"footfallLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"footfallLabel !=='Bounced Footfall'\">{{footfallLabel | titlecase}}</span>, Low <span\r\n *ngIf=\"bounceLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"bounceLabel !=='Bounced Footfall'\">{{bounceLabel | titlecase}}</span></span>\r\n </div>\r\n \r\n <!-- Top Right Quadrant -->\r\n <div class=\"quadrant\" id=\"q2\">\r\n <span class=\"label\">High <span *ngIf=\"footfallLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"footfallLabel !=='Bounced Footfall'\">{{footfallLabel | titlecase}}</span>, High <span\r\n *ngIf=\"bounceLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"bounceLabel !=='Bounced Footfall'\">{{bounceLabel | titlecase}}</span></span>\r\n </div>\r\n \r\n <!-- Bottom Left Quadrant -->\r\n <div class=\"quadrant\" id=\"q3\">\r\n <span class=\"label\">Low <span *ngIf=\"footfallLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"footfallLabel !=='Bounced Footfall'\">{{footfallLabel | titlecase}}</span>, Low <span\r\n *ngIf=\"bounceLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"bounceLabel !=='Bounced Footfall'\">{{bounceLabel | titlecase}}</span></span>\r\n </div>\r\n \r\n <!-- Bottom Right Quadrant -->\r\n <div class=\"quadrant\" id=\"q4\">\r\n <span class=\"label\">Low <span *ngIf=\"footfallLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"footfallLabel !=='Bounced Footfall'\">{{footfallLabel | titlecase}}</span>, High <span\r\n *ngIf=\"bounceLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"bounceLabel !=='Bounced Footfall'\">{{bounceLabel| titlecase}}</span></span>\r\n </div>\r\n <div *ngFor=\"let point of points\" class=\"point\" [ngStyle]=\"{'top': point.top + '%', 'left': point.left + '%'}\">\r\n <div class=\"text-center\" (click)=\"toggleTooltip(point.name)\">\r\n <div class=\"dot\" ></div>\r\n <!-- Clickable label that toggles the tooltip -->\r\n <div class=\"label z-1 mt-4\" style=\"font-size: 10px !important;\" >\r\n {{ point.name }}\r\n </div>\r\n </div>\r\n <!-- Custom Tooltip Popup -->\r\n <div class=\"tooltip-popup z-5\" *ngIf=\"activeTooltip === point.name\">\r\n <div class=\"tooltip-content\">\r\n <h3 class=\"text-white cursor-pointer\" (click)=\"storeView(point.storeId)\">{{ point.name }}</h3>\r\n <p>Avg {{footfallLabel | titlecase}}: {{ point.avgFootfall }}</p>\r\n <p class=\"my-2\">Open Time: <strong>{{ point.openTime }}</strong></p>\r\n <p>Close Time: <strong>{{ point.closeTime }}</strong></p>\r\n </div>\r\n <div class=\"tooltip-arrow\"></div>\r\n </div>\r\n </div>\r\n <!-- Add more points here -->\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"storeIdarray?.length > 1\" class=\"col-md-6 mt-3\">\r\n <div class=\"card\">\r\n <div class=\"card-header px-5 border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text mb-2\">Zone Dwell Time Split \r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"\r\n placement=\"right\"\r\n ngbTooltip=\"Overall zone concentration and average dwell time across selected stores\">\r\n <g clip-path=\"url(#clip0_1432_80035)\">\r\n <path\r\n d=\"M8.00065 10.6666V7.99992M8.00065 5.33325H8.00732M14.6673 7.99992C14.6673 11.6818 11.6826 14.6666 8.00065 14.6666C4.31875 14.6666 1.33398 11.6818 1.33398 7.99992C1.33398 4.31802 4.31875 1.33325 8.00065 1.33325C11.6826 1.33325 14.6673 4.31802 14.6673 7.99992Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1432_80035\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"text-sub mb-2\">{{headerData?.date?.startDate | date:'dd MMM, yyyy'}} \u2013 {{headerData?.date?.endDate | date:'dd MMM, yyyy'}}</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <button type=\"button\" (click)=\"goToZone()\"\r\n class=\"btn btn-light-primary1 rounded-3 text-nowrap border-val\">\r\n <span class=\"ms-2\">Go to Zones</span>\r\n </button>\r\n \r\n </div>\r\n </div>\r\n <div calss=\"card-body\">\r\n <div class=\"image-container position-relative\">\r\n <img src=\"assets/tango/Images/zone-img.svg\" alt=\"Store Layout\" class=\"px-5 img-src my-3 background-image\" />\r\n <!-- <img *ngIf=\"zoneDwellTimeSplitData[0]?.zoneName ==='Overall Store'\" src=\"assets/tango/Images/zone-img1.svg\" alt=\"Store Layout\" class=\"px-5 img-src my-3 background-image\" /> -->\r\n <!-- <div class=\"centered\">Centered</div> -->\r\n <!-- <div class=\"overlay-content\" *ngFor=\"let point of zoneDwellTimeSplitData\"> -->\r\n <div *ngIf=\"zoneDwellTimeSplitData[0]?.zoneName !=='Overall Store'\" class=\"top-zone\">\r\n <div class=\"text-center text-zone\">{{zoneDwellTimeSplitData[0]?.zoneName ? zoneDwellTimeSplitData[0]?.zoneName :'Front'}}</div>\r\n <span class=\"text-zone-val\"> Conc: {{ zoneDwellTimeSplitData[0]?.concentrationRate ? zoneDwellTimeSplitData[0]?.concentrationRate:'--' }}% </span>\r\n <span class=\"text-zone-val\">Dwell time: {{ zoneDwellTimeSplitData[0]?.dwellTime ? zoneDwellTimeSplitData[0]?.dwellTime :'--' }} Mins</span>\r\n </div>\r\n <div *ngIf=\"zoneDwellTimeSplitData[0]?.zoneName ==='Overall Store'\" class=\"centered-zone\">\r\n <div class=\"text-center text-zone\">{{zoneDwellTimeSplitData[0]?.zoneName ? zoneDwellTimeSplitData[0]?.zoneName :'Front'}}</div>\r\n <span class=\"text-zone-val\"> Conc: {{ zoneDwellTimeSplitData[0]?.concentrationRate ? zoneDwellTimeSplitData[0]?.concentrationRate:'--' }}% </span>\r\n <span class=\"text-zone-val\">Dwell time: {{ zoneDwellTimeSplitData[0]?.dwellTime ? zoneDwellTimeSplitData[0]?.dwellTime:'--' }} Mins</span>\r\n </div>\r\n <div *ngIf=\"zoneDwellTimeSplitData[0]?.zoneName !=='Overall Store'\" class=\"bottom-zone \">\r\n <div class=\"text-center text-zone\">{{zoneDwellTimeSplitData[1]?.zoneName ? zoneDwellTimeSplitData[2]?.zoneName : 'Back'}}</div>\r\n <span class=\"text-zone-val\"> Conc: {{ zoneDwellTimeSplitData[1]?.concentrationRate ? zoneDwellTimeSplitData[2]?.concentrationRate:'--' }}% </span>\r\n <span class=\"text-zone-val\">Dwell time: {{ zoneDwellTimeSplitData[1]?.dwellTime ? zoneDwellTimeSplitData[2]?.dwellTime:'--'}} Mins</span>\r\n </div>\r\n <!-- </div> -->\r\n </div>\r\n <!-- <img class=\"px-5 img-src mb-3\" src=\"assets/tango/Images/zone-img.svg\" alt=\"\"> -->\r\n </div>\r\n <div class=\"card-header px-5 border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text mb-2\">Store Operations\r\n <span > \r\n <svg ngbTooltip=\"Avg store open & close time across the selected stores\" placement=\"top\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" >\r\n <g clip-path=\"url(#clip0_1432_80035)\">\r\n <path\r\n d=\"M8.00065 10.6666V7.99992M8.00065 5.33325H8.00732M14.6673 7.99992C14.6673 11.6818 11.6826 14.6666 8.00065 14.6666C4.31875 14.6666 1.33398 11.6818 1.33398 7.99992C1.33398 4.31802 4.31875 1.33325 8.00065 1.33325C11.6826 1.33325 14.6673 4.31802 14.6673 7.99992Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1432_80035\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </span>\r\n <span class=\"text-sub mb-2\">{{headerData?.date?.startDate | date:'dd MMM, yyyy'}} \u2013 {{headerData?.date?.endDate | date:'dd MMM, yyyy'}}</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <!-- <button type=\"button\"\r\n class=\"btn btn-light-primary1 rounded-3 text-nowrap border-val\">\r\n <span class=\"ms-2\">Go to Trax</span>\r\n </button> -->\r\n </div>\r\n </div>\r\n <div class=\"card-body\">\r\n <div class=\"row\">\r\n <div class=\"col-md-3 text-center mb-3\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\"><!--{{getCardData?.revenue?.value ?? '--'}} -->\r\n <div class=\"my-2\"> <span class=\"left-card-count-title\">{{storeOperationData?.overall?.avgOpenTime\r\n ?storeOperationData?.overall?.avgOpenTime:'--' }}</span></div>\r\n <div class=\"\"><span class=\"sub-header\">Avg. Open Time</span></div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n <div class=\"col-md-6 mt-5 mb-3\">\r\n <svg width=\"326\" height=\"2\" viewBox=\"0 0 326 2\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <line y1=\"0.75\" x2=\"356\" y2=\"0.75\" stroke=\"#D0D5DD\" />\r\n </svg>\r\n </div>\r\n <div class=\"col-md-3 text-center mb-3\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\"><!--{{getCardData?.revenue?.value ?? '--'}} -->\r\n <div class=\"my-2\"> <span class=\"left-card-count-title\">{{storeOperationData?.overall?.avgCloseTime\r\n ?storeOperationData?.overall?.avgCloseTime:'--' }}</span></div>\r\n <div class=\"\"><span class=\"sub-header\">Avg. Close Time</span></div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n <div class=\"col-md-6 mt-3\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"left-card-count-header1 text-decoration-underline cursor-pointer\" (click)=\"storeView(storeOperationData?.topLateOpen?.storeId)\">{{storeOperationData?.topLateOpen?.storeName ?\r\n storeOperationData?.topLateOpen?.storeName :'--'}}</span>\r\n <span class=\"sub-header mt-2\">Top Late Open</span>\r\n </h3>\r\n </div>\r\n <div class=\"card-body p-0 h-75px mt-3 mx-3\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\"><!--{{getCardData?.revenue?.value ?? '--'}} -->\r\n <div class=\"my-1\"> <span\r\n class=\"left-card-count-header1\">{{storeOperationData?.topLateOpen?.avgStoreOpenTime\r\n ?storeOperationData?.topLateOpen?.avgStoreOpenTime:'--' }}</span></div>\r\n <span class=\"sub-header\">Avg. Store Opening Time</span>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n <div class=\"col-md-6 mt-3\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"left-card-count-header1 text-decoration-underline cursor-pointer\" (click)=\"storeView(storeOperationData?.topEarlyClose?.storeId)\">{{storeOperationData?.topEarlyClose?.storeName ?\r\n storeOperationData?.topEarlyClose?.storeName :'--'}}</span>\r\n <span class=\"sub-header mt-2\">Top Early Close</span>\r\n </h3>\r\n </div>\r\n <div class=\"card-body p-0 h-75px mt-3 mx-3\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\"><!--{{getCardData?.revenue?.value ?? '--'}} -->\r\n <div class=\"my-1\"> <span\r\n class=\"left-card-count-header1\">{{storeOperationData?.topEarlyClose?.avgStoreCloseTime\r\n ?storeOperationData?.topEarlyClose?.avgStoreCloseTime:'--' }}</span></div>\r\n <span class=\"sub-header\">Avg. Store Closing Time</span>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 mt-3\">\r\n <div class=\"card mb-5\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text mb-2\">Summary Table</span>\r\n <span class=\"text-sub mb-2\">{{headerData?.date?.startDate | date:'dd MMM, yyyy'}} \u2013 {{headerData?.date?.endDate | date:'dd MMM, yyyy'}}</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input (change)=\"searchData()\" [(ngModel)]=\"searchValue\" type=\"text\" class=\"form-control ps-14 me-2\" autocomplete=\"off\" placeholder=\"Search\" />\r\n <!-- filter Start -->\r\n <!-- <lib-filters [dataObject]=\"dataObject\" (appliedFilters)=\"applyFilters($event)\"></lib-filters> -->\r\n <!-- filter End -->\r\n <!-- Sum Button -->\r\n <section *ngIf=\"(storeIdarray?.length > 1 && headerData?.date?.startDate != headerData?.date?.endDate) && !noData && !loading\">\r\n <button type=\"button\" (click)=\"onValueType('sum')\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"\r\n [ngClass]=\"{'btn-light btn-primary text-white': typeValue === 'sum'}\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n [ngStyle]=\"{'stroke': typeValue === 'sum' ? '#FFFFFF' : '#344054'}\">\r\n <path d=\"M9.99935 4.16675V15.8334M4.16602 10.0001H15.8327\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"ms-2\" [ngClass]=\"{'text-white': typeValue === 'sum'}\">Sum</span>\r\n </button>\r\n </section>\r\n \r\n<!-- Average Button -->\r\n <section *ngIf=\"(storeIdarray?.length > 1 && headerData?.date?.startDate != headerData?.date?.endDate) && !noData && !loading\">\r\n<button type=\"button\" (click)=\"onValueType('average')\"\r\nclass=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"\r\n[ngClass]=\"{'btn-light btn-primary text-white': typeValue === 'average'}\">\r\n<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\r\n [ngStyle]=\"{'stroke': typeValue === 'average' ? '#FFFFFF' : '#101828'}\">\r\n <path d=\"M17.5 17.5H8.33333C5.58333 17.5 4.20833 17.5 3.35417 16.6458C2.5 15.7917 2.5 14.4167 2.5 11.6667V2.5M5 10H5.0075M7.49917 10H7.50583M9.9975 10H10.0042M12.4958 10H12.5033M14.9942 10H15.0017M17.4925 10H17.5\"\r\n stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M5 5.83341C5.56083 4.89841 6.3225 4.16675 7.49417 4.16675C12.4467 4.16675 9.6625 14.1667 14.985 14.1667C16.165 14.1667 16.9217 13.4301 17.5 12.5001\"\r\n stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n</svg>\r\n<span class=\"ms-2\" [ngClass]=\"{'text-white': typeValue === 'average'}\">Average</span>\r\n</button>\r\n</section>\r\n \r\n <button *ngIf=\"!noData && !loading\" type=\"button\" (click)=\"exportXLSX()\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Export</span> </button>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"noData\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata-table\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this summary table</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!noData && !loading\" calss=\"card-body\">\r\n <div class=\"table-responsive\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('storeName')\">Store Name <svg \r\n [ngClass]=\"sortedColumn === 'storeName' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'storeName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('storeId')\">Store ID <svg [ngClass]=\"sortedColumn === 'storeId' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'storeId' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th *ngIf=\"storeIdarray?.length === 1\" class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('date')\">Date <svg [ngClass]=\"sortedColumn === 'date' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'date' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('footfallCount')\">Footfall <svg [ngClass]=\"sortedColumn === 'footfallCount' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'footfallCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('bouncedCount')\">Bounced Footfall<svg [ngClass]=\"sortedColumn === 'bouncedCount' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'bouncedCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('engagersCount')\">Engagers <svg [ngClass]=\"sortedColumn === 'engagersCount' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'engagersCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('missedOpportunityCount')\">Missed Opportunity<svg [ngClass]=\"sortedColumn === 'missedOpportunityCount' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'missedOpportunityCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('potentialBuyersCount')\">Potential Buyers <svg [ngClass]=\"sortedColumn === 'potentialBuyersCount' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'potentialBuyersCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('conversionRate')\">Conversion Rate <svg [ngClass]=\"sortedColumn === 'conversionRate' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'conversionRate' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('avgDwellTime')\">Avg.Dwell Time <svg [ngClass]=\"sortedColumn === 'avgDwellTime' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'avgDwellTime' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('avgInfraDowntime')\">Avg.Infra DownTime <svg [ngClass]=\"sortedColumn === 'avgInfraDowntime' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'avgInfraDowntime' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('below12')\">Below12 <svg [ngClass]=\"sortedColumn === 'below12' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'below12' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('13-19')\">13-19 <svg [ngClass]=\"sortedColumn === '13-19' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === '13-19' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('20-30')\">20-30 <svg [ngClass]=\"sortedColumn === '20-30' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === '20-30' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('31-45')\">31-45 <svg [ngClass]=\"sortedColumn === '31-45' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === '31-45' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('46-59')\">46-59 <svg [ngClass]=\"sortedColumn === '46-59' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === '46-59' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('60 above')\">60 above <svg [ngClass]=\"sortedColumn === '60 above' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === '60 above' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('male')\">Male <svg [ngClass]=\"sortedColumn === 'male' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'male' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('female')\">Female <svg \r\n [ngClass]=\"sortedColumn === 'female' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'female' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let obj of getSummaryTableData;let i=index;\">\r\n <!-- (click)=\"storeView(obj)\" -->\r\n <td class=\"text-primary text-capitalize text-decoration-underline cursor-pointer\" (click)=\"storeView(obj.storeId)\">{{obj.storeName}}</td>\r\n <td>{{obj.storeId}}</td>\r\n <td *ngIf=\"obj?.date\">{{obj?.date | date:'MMM dd, yyyy'}}</td>\r\n <td>{{obj.footfallCount}}</td>\r\n <td>{{obj.bouncedCount}}</td>\r\n <td>{{obj.engagersCount}}</td>\r\n <td>{{obj.missedOpportunityCount}}</td>\r\n <td>{{obj.potentialBuyersCount}}</td>\r\n <td>{{obj.conversionRate}}</td>\r\n <td>{{obj.avgDwellTime}}</td>\r\n <td>{{obj.avgInfraDowntime}}</td>\r\n <td>{{obj.below12}}</td>\r\n <td>{{obj['13-19']}}</td>\r\n <td>{{obj['20-30']}}</td>\r\n <td>{{obj['31-45']}}</td>\r\n <td>{{obj[\"46-59\"]}}</td>\r\n <td>{{obj[\"60 above\"]}}</td>\r\n <td>{{obj.male}}</td>\r\n <td>{{obj.female}}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <lib-pagination [itemsPerPage]=\"pageSize\" [currentPage]=\"offset\" [totalItems]=\"totalItems\"\r\n [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\" (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n", styles: ["#Footfall,#BouncedRate,#PotentialBuyers,#engagers{width:100%;height:100px}#chartdiv{width:100%;height:225px}.ellipse1{border-radius:6px;border-bottom:2px solid var(--Gray-200, #EAECF0);background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d}.card-border{padding:8px;border-radius:12px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF)}.card-footer{border-top:none!important}.percent-value{color:var(--Gray-500, #667085)!important;text-align:center;font-size:16px;font-style:normal;font-weight:600;line-height:18px}.week-font{color:var(--Gray-800, #1D2939)!important;font-size:12px;font-style:normal;font-weight:400;line-height:18px}.card-header,.header{color:var(--Gray-900, #101828);font-size:20px!important;font-style:normal;font-weight:700;line-height:30px}.sub-header{color:var(--Gray-700, #344054);font-size:14px!important;font-style:normal;font-weight:500;line-height:20px}.img-src{width:100%}.img-src1{width:100%;min-height:227px!important;max-height:auto!important}.recap-img{width:100%;height:250px}.activePlanBtn{border-radius:6px;background:var(--Primary-50, #EAF8FF);color:var(--Gray-700, #344054);font-size:14px!important;font-weight:500!important;line-height:20px}.inactivePlanBtn{color:var(--Gray-500, #667085)!important;font-size:14px;font-weight:500!important;line-height:20px}.trax-bg{border-radius:12px!important;background:var(--Gray-100, #F2F4F7)!important}.left-card-count{color:var(--Gray-900, #101828);font-size:18px!important;font-style:normal;font-weight:600;line-height:28px}.left-card-count-header{color:var(--Gray-900, #101828)!important;font-size:14px!important;font-style:normal;font-weight:400;line-height:18px}.left-card-count-header1{color:var(--Gray-900, #101828)!important;font-size:20px!important;font-style:normal;font-weight:700;line-height:30px}.left-card-count-title{color:var(--Gray-700, #344054)!important;font-size:16px!important;font-style:normal;font-weight:700;line-height:24px}.quadrant-chart{position:relative;width:100%;height:500px;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;border:2px solid #ddd}.quadrant{position:relative;border:1px solid #ddd;display:flex;justify-content:center;align-items:center;padding:20px}#q1,#q2{align-items:flex-start}#q3,#q4{align-items:flex-end}.label{color:#000;font-size:12.723px;font-style:normal;font-weight:600;line-height:19.791px;text-align:center}@media (max-width: 768px){.quadrant-chart{width:100%;height:auto}.point{font-size:10px}}.quadrant-chart{position:relative;width:100%;height:100%}.point{position:absolute;display:flex;align-items:center;color:#000;font-size:9px;font-style:normal;font-weight:500;line-height:12px}.axis-labels{position:absolute;width:100%;height:100%;top:0;left:0;display:flex;justify-content:space-between;align-items:center;pointer-events:none}.x-axis-label{position:absolute;bottom:-25px;left:10%;transform:translate(-50%);color:#000;font-size:12.723px;font-style:normal;font-weight:400;line-height:19.791px}.y-axis-label{position:absolute;top:95%;left:-15px;transform:translateY(-50%) rotate(270deg);transform-origin:left center;white-space:nowrap;color:#000;font-size:12.723px;font-style:normal;font-weight:400;line-height:19.791px}.label{cursor:pointer;margin-right:10px}.tooltip-popup{position:absolute;background:var(--gradient-primary-800700265-deg, linear-gradient(27deg, #0082CC 8.33%, #0093E6 91.67%));color:#fff;padding:10px;left:-55px;top:-165px;border:20px solid #fff;border-radius:8px;z-index:1000!important;width:230px;box-shadow:0 4px 8px #0003}.tooltip-content{font-size:13px}.tooltip-popup h3{margin:0;font-size:16px}.tooltip-popup p{margin:10px 0}.tooltip-popup strong{font-weight:700}.tooltip-arrow{position:absolute;bottom:-9px;left:50%;margin-left:-10px;width:0;height:0;border-left:10px solid transparent;border-right:10px solid transparent;border-top:10px solid #0082CC}.border-val{color:var(--Gray-700, #344054)!important;font-family:Inter;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}.table-title-primary{color:var(--Primary-700, #009BF3)!important;font-weight:500!important}.table-sub{line-height:30px!important;color:var(--Gray-500, #667085)!important;font-size:12px!important;font-weight:400!important}table td{line-height:40px!important}.dot{height:12px;width:12px;background-color:#4eb3ed;border-radius:50%;margin-right:5px;z-index:1;position:absolute;left:50%;transform:translate(-50%)}.custom-dropdown{position:relative}.custom-dropdown button{width:100%;background-color:#f8f9fa;border:1px solid #ced4da;border-radius:.25rem;padding:.375rem}.custom-dropdown .dropdown-list{position:absolute;width:100%;background-color:#fff;border:1px solid #ced4da;margin-top:.25rem;list-style:none;padding:0}.custom-dropdown .dropdown-list li{padding:.5rem;cursor:pointer}.custom-dropdown .dropdown-list li.selected{background-color:#007bff;color:#fff}.chart-legend-item-minus{display:none}.img-nodata{width:29%;height:20%}.img-nodata-table{width:25%;height:20%}.text-primary{color:#009bf3!important}.loader-img{width:1%}.img-nodata1{width:25%;height:15%}.nodata-title1{font-size:12px!important;font-weight:600}.btn-light-primary1{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-style:normal;font-weight:600!important;line-height:18px;text-transform:capitalize;border-radius:8px!important;border:1px solid var(--Primary-50, #EAF8FF)!important;background:var(--Primary-50, #EAF8FF)!important;box-shadow:0 1px 2px #1018280d!important}.rotate{rotate:180deg;transition:1s}:host::ng-deep .map-container{width:100%!important;position:relative;overflow:hidden}.img-map{width:45.5%;height:20%}.img-map-recap{width:43%;height:20%}#map{height:262px}@media (min-width: 1390px) and (max-width: 1534px){.img-map{width:52%;height:20%}.img-map-recap{width:48.5%;height:20%}.img-nodata{width:38%;height:20%}#map{height:241px}.fs-5{font-size:.9rem!important}}@media (min-width: 1700px) and (max-width: 1919px){.img-map{width:39%;height:20%}.img-map-recap{width:37%;height:20%}.img-nodata{width:30%;height:20%}#chartdiv{width:100%;height:229px}#map{height:255px}}@media (min-width: 1920px) and (max-width: 2119px){.img-map{width:37%;height:20%}.img-map-recap{width:35%;height:20%}.img-nodata{width:28%;height:20%}#chartdiv{width:100%;height:215px}#map{height:262px}}.image-container{position:relative;width:100%;max-width:1000px;margin:0 auto}.background-image{width:100%;height:auto}.overlay-content{position:absolute;background-color:#0009;color:#fff;padding:5px;border-radius:3px;text-align:center;white-space:nowrap}.centered-zone{position:absolute;top:54%;left:50%;transform:translate(-50%)}.top-zone{position:absolute;top:67%;left:50%;transform:translate(-50%)}.bottom-zone{position:absolute;top:39%;left:50%;transform:translate(-50%)}.text-zone-val{color:var(--Black, #101828)!important;font-size:12px!important;font-style:normal;font-weight:700;line-height:18px}.text-zone{color:var(--Black, #101828)!important;text-align:center;font-size:12px!important;font-style:normal;font-weight:400;line-height:18px}.card-title .card-label{color:var(--Gray-900, #101828)!important;font-family:Inter;font-size:24px!important;font-weight:700!important;line-height:30px}.form-check-label{color:var(--Gray-500, #667085);text-align:center;font-size:12px;font-weight:500;line-height:18px}.title-text{color:var(--Gray-900, #101828)!important;font-size:16px!important;font-weight:600!important;line-height:24px}.left-50{left:47%;top:12%}.end-0{top:16%;left:97%}.carousel{position:relative}.carousel-item{display:none;transition:opacity .5s}.carousel-item.active{display:block;opacity:1}.carousel-control-prev,.carousel-control-next{position:absolute;top:50%;transform:translateY(-50%);border:none;padding:10px;cursor:pointer}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-indicators{position:absolute;left:35%;transform:translate(-50%);gap:10px}.carousel-indicators li{list-style:none!important;width:10px;height:10px;background-color:#ddd;border-radius:50%;cursor:pointer;transition:background-color .3s}.carousel-indicators li.active{background-color:#007bff}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:25rem!important;height:25rem!important;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.image-thumb{height:240px;border-radius:8px}.dropselect{color:var(--Gray-500, #344054);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:18px;white-space:nowrap}.nodata-title{font-size:14px!important;font-weight:600}.carousel-control-prev-icon,.carousel-control-next-icon{color:#fff!important}.footimg-nodata1{width:30%;height:66%}.tooltip-content{max-width:200px}.tooltip-title{font-weight:700;margin-bottom:10px}.tooltip-footer{margin-top:10px;font-size:.8em;color:gray}\n"] }]
|
|
1312
|
+
args: [{ selector: "lib-traffic-analysis", template: "<div class=\"row\">\r\n <div class=\"col-md-7\">\r\n <div class=\"row\">\r\n <div class=\"col-md-8 \">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"row position-relative\">\r\n <div class=\"col-md-6\">\r\n <div class=\"px-2\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <!-- [ngbTooltip]=\"footfallTooltip\" placement=\"right\" -->\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <!-- Display footfall count or '--' if not available -->\r\n <span class=\"card-label header\">{{ getCardData?.footfall?.count ? getCardData.footfall.count.toLocaleString('en-IN') : '--' }}</span>\r\n <span class=\"sub-header\">{{footfallName}}</span>\r\n </h3>\r\n \r\n <!-- Switch toggle -->\r\n <div class=\"card-toolbar\">\r\n <div class=\"col-md-12 text-end\">\r\n <div class=\"form-check form-switch text-end\">\r\n <input class=\"form-check-input mt-1\" type=\"checkbox\" id=\"flexSwitchCheckDefault\" \r\n [(ngModel)]=\"isAverage\" (change)=\"toggleAverage($event)\" [disabled]=\"isDisabled\">\r\n </div>\r\n <div class=\"form-check-label mt-5\">Average</div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <ng-template #footfallTooltip>\r\n <div class=\"tooltip-content\">\r\n <h5 class=\"tooltip-title text-start\">Footfall</h5>\r\n <p class=\"text-start\">Total unique walk-ins into the selected stores.</p>\r\n <h4 class=\"text-start\">{{getCardData?.footfall?.count}}</h4>\r\n <footer class=\"tooltip-footer text-start\"> <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.footfall?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.footfall?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2 ms-2\"><span class=\"percent-value\" *ngIf=\"getCardGraphData?.footfall?.PreviousData !==0\">{{getCardGraphData?.footfall?.PreviousData ? getCardGraphData?.footfall?.PreviousData:'--'}}%</span><span\r\n class=\"week-font\"> (123) vs Previous \r\n <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span>\r\n </span>\r\n\r\n </span></footer>\r\n </div>\r\n </ng-template> -->\r\n <div class=\"card-body p-0\">\r\n \r\n <section >\r\n <div class=\"row\">\r\n <div class=\"col-md-10 pe-0\">\r\n <div *ngIf=\"cardloading\" class=\"text-center\">\r\n <img class=\"loader-img\" src=\"assets/tango/layout/Loader.gif\">\r\n </div>\r\n <div *ngIf=\"cardNodata\" class=\"row\">\r\n \r\n <div class=\"card-body pb-0 px-0 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"footimg-nodata1\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title1\">No data found</div>\r\n <!-- <div class=\"nodata-sub\">There is no result for this conversion funnel</div> -->\r\n </div>\r\n \r\n </div>\r\n <div *ngIf=\"!cardNodata\" class=\"text-center\" id=\"Footfall\"></div>\r\n </div>\r\n <div class=\"col-md-2 mt-3\">\r\n <div class=\"mt-1 cursor-pointer fs-5\" [ngClass]=\"dateType ==='daily' ? 'text-primary' :''\" (click)=\"dateValue('daily')\">1D</div>\r\n <div class=\"mt-1 cursor-pointer fs-5\" [ngClass]=\"dateType ==='weekly' ? 'text-primary' :''\" (click)=\"dateValue('weekly')\">1W</div>\r\n <div class=\"mt-1 cursor-pointer fs-5\" [ngClass]=\"dateType ==='monthly' ? 'text-primary' :''\" (click)=\"dateValue('monthly')\">1M</div>\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.footfall?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.footfall?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"getCardGraphData?.footfall?.PreviousData ===0\" class=\"percent-value ms-2\">0%</span>\r\n <span class=\"mt-2 ms-2\"><span class=\"percent-value\" *ngIf=\"getCardGraphData?.footfall?.PreviousData !==0\">{{getCardGraphData?.footfall?.PreviousData ? getCardGraphData?.footfall?.PreviousData:'--'}}%</span><span\r\n class=\"week-font\"> vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span> </span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M6 12L10 8L6 4\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div> -->\r\n </div>\r\n <div class=\"position-absolute left-50\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M6 12L10 8L6 4\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n <div class=\"col-md-6\">\r\n\r\n <div class=\"px-2\">\r\n <div class=\"card-header ellipse1 border-0 px-3\" >\r\n <!-- [ngbTooltip]=\"conversionTooltip\" placement=\"left\" -->\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label header\">{{valueConversionRate ? valueConversionRate : '--'}}%</span>\r\n <span class=\"sub-header\">Conversion <span *ngIf=\"conversionValue ==='footfall' || conversionValue ==='engagers' || conversionValue ==='Potential Buyers' || conversionValue ==='NoB Derived' \"> - {{conversionValue | titlecase}}</span></span>\r\n </h3>\r\n </div>\r\n <!-- <ng-template #conversionTooltip>\r\n <div class=\"tooltip-content\">\r\n <h5 class=\"tooltip-title text-start\">Conversion Rate</h5>\r\n <p class=\"text-start\">Total % of <engagers> who spent more than <10mins> in the store..</p>\r\n <h4 class=\"text-start\">{{valueConversionRate}}</h4>\r\n <footer class=\"tooltip-footer text-start\"> <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.conversion?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.conversion?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\">\r\n <span *ngIf=\"conversionValue ==='footfall' && getCardGraphData?.conversion?.footfall.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"conversionValue ==='footfall' && getCardGraphData?.conversion?.footfall.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.conversion?.footfall.PreviousData ? getCardGraphData?.conversion?.footfall.PreviousData:'--'}}%</span>\r\n <span *ngIf=\"conversionValue ==='engagers' && getCardGraphData?.conversion?.engagers.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n \r\n <span *ngIf=\"conversionValue ==='engagers' && getCardGraphData?.conversion?.engagers.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.conversion?.engagers.PreviousData ? getCardGraphData?.conversion?.engagers.PreviousData:'--'}}%</span>\r\n\r\n <span *ngIf=\"conversionValue ==='Potential Buyers' && getCardGraphData?.conversion?.potentialBuyers.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"conversionValue ==='Potential Buyers' && getCardGraphData?.conversion?.potentialBuyers.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.conversion?.potentialBuyers.PreviousData ? getCardGraphData?.conversion?.potentialBuyers.PreviousData:'--'}}%</span>\r\n <span *ngIf=\"conversionValue ==='NoB Derived'\" class=\"percent-value\">--%</span>\r\n <span *ngIf=\"conversionValue ==='' && getCardGraphData?.conversion?.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n\r\n <span *ngIf=\"conversionValue ==='' && getCardGraphData?.conversion?.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.conversion?.PreviousData ? getCardGraphData?.conversion?.PreviousData:'--'}}%</span>\r\n \r\n <span\r\n class=\"week-font\"> vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span>\r\n </footer>\r\n </div>\r\n </ng-template> -->\r\n <div class=\"card-body p-0\">\r\n <div class=\"h-100px pt-10 px-3 row\">\r\n <span class=\"h-75px col-md-3\">\r\n <svg class=\"cursor-pointer\" *ngIf=\"conversionValue !=='footfall'\" placement=\"top\" \r\n ngbTooltip=\"Footfall\"\r\n (click)=\"changeValue('footfall')\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path\r\n d=\"M4 18H9.5V19.25C9.5 19.9793 9.21027 20.6788 8.69454 21.1945C8.17882 21.7103 7.47935 22 6.75 22C6.02065 22 5.32118 21.7103 4.80546 21.1945C4.28973 20.6788 4 19.9793 4 19.25V18ZM8 6.11999C10 6.11999 11 8.99999 11 11C11 12 10.5 13 10 14.5L9.5 16H4C4 15 3.5 13.5 3.5 11C3.5 8.49999 5.498 6.11999 8 6.11999ZM20.054 14.098L19.837 15.329C19.7023 16.0396 19.2931 16.6686 18.698 17.0796C18.1029 17.4907 17.3698 17.6508 16.6576 17.5252C15.9453 17.3996 15.3111 16.9984 14.8925 16.4086C14.4739 15.8188 14.3045 15.0878 14.421 14.374L14.637 13.144L20.054 14.098ZM18.178 1.70499C20.642 2.13899 22.196 4.82999 21.762 7.29199C21.328 9.75399 20.575 11.144 20.402 12.129L14.985 11.174L14.753 9.60999C14.521 8.04599 14.203 6.97399 14.376 5.98999C14.723 4.01999 16.208 1.35799 18.178 1.70499Z\"\r\n fill=\"#98A2B3\" />\r\n </svg>\r\n <svg placement=\"top\" ngbTooltip=\"Footfall\" *ngIf=\"conversionValue ==='footfall'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M4 18H9.5V19.25C9.5 19.9793 9.21027 20.6788 8.69454 21.1945C8.17882 21.7103 7.47935 22 6.75 22C6.02065 22 5.32118 21.7103 4.80546 21.1945C4.28973 20.6788 4 19.9793 4 19.25V18ZM8 6.11999C10 6.11999 11 8.99999 11 11C11 12 10.5 13 10 14.5L9.5 16H4C4 15 3.5 13.5 3.5 11C3.5 8.49999 5.498 6.11999 8 6.11999ZM20.054 14.098L19.837 15.329C19.7023 16.0396 19.2931 16.6686 18.698 17.0796C18.1029 17.4907 17.3698 17.6508 16.6576 17.5252C15.9453 17.3996 15.3111 16.9984 14.8925 16.4086C14.4739 15.8188 14.3045 15.0878 14.421 14.374L14.637 13.144L20.054 14.098ZM18.178 1.70499C20.642 2.13899 22.196 4.82999 21.762 7.29199C21.328 9.75399 20.575 11.144 20.402 12.129L14.985 11.174L14.753 9.60999C14.521 8.04599 14.203 6.97399 14.376 5.98999C14.723 4.01999 16.208 1.35799 18.178 1.70499Z\" fill=\"#00A3FF\"/>\r\n </svg>\r\n </span>\r\n <span class=\"h-75px col-md-3\">\r\n <svg placement=\"top\" ngbTooltip=\"Engagers\" class=\"cursor-pointer\" *ngIf=\"conversionValue !=='engagers'\" (click)=\"changeValue('engagers')\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path \r\n d=\"M17 21V19C17 17.9391 16.5786 16.9217 15.8284 16.1716C15.0783 15.4214 14.0609 15 13 15H5C3.93913 15 2.92172 15.4214 2.17157 16.1716C1.42143 16.9217 1 17.9391 1 19V21M23 21V19C22.9993 18.1137 22.7044 17.2528 22.1614 16.5523C21.6184 15.8519 20.8581 15.3516 20 15.13M16 3.13C16.8604 3.3503 17.623 3.8507 18.1676 4.55231C18.7122 5.25392 19.0078 6.11683 19.0078 7.005C19.0078 7.89317 18.7122 8.75608 18.1676 9.45769C17.623 10.1593 16.8604 10.6597 16 10.88M13 7C13 9.20914 11.2091 11 9 11C6.79086 11 5 9.20914 5 7C5 4.79086 6.79086 3 9 3C11.2091 3 13 4.79086 13 7Z\"\r\n stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg placement=\"top\" ngbTooltip=\"Engagers\" *ngIf=\"conversionValue ==='engagers'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M17 21V19C17 17.9391 16.5786 16.9217 15.8284 16.1716C15.0783 15.4214 14.0609 15 13 15H5C3.93913 15 2.92172 15.4214 2.17157 16.1716C1.42143 16.9217 1 17.9391 1 19V21M23 21V19C22.9993 18.1137 22.7044 17.2528 22.1614 16.5523C21.6184 15.8519 20.8581 15.3516 20 15.13M16 3.13C16.8604 3.3503 17.623 3.8507 18.1676 4.55231C18.7122 5.25392 19.0078 6.11683 19.0078 7.005C19.0078 7.89317 18.7122 8.75608 18.1676 9.45769C17.623 10.1593 16.8604 10.6597 16 10.88M13 7C13 9.20914 11.2091 11 9 11C6.79086 11 5 9.20914 5 7C5 4.79086 6.79086 3 9 3C11.2091 3 13 4.79086 13 7Z\" stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </span>\r\n <span class=\"h-75px col-md-3\">\r\n <svg placement=\"top\" ngbTooltip=\"Potential Buyers\" class=\"cursor-pointer\" *ngIf=\"conversionValue !=='Potential Buyers'\" (click)=\"changeValue('potentialBuyers')\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path opacity=\"0.3\"\r\n d=\"M20.0039 18.002H4.00391C3.40391 18.002 3.00391 17.602 3.00391 17.002V7.00195C3.00391 6.40195 3.40391 6.00195 4.00391 6.00195H20.0039C20.6039 6.00195 21.0039 6.40195 21.0039 7.00195V17.002C21.0039 17.602 20.6039 18.002 20.0039 18.002ZM12.0039 8.00195C10.3039 8.00195 9.00391 9.80195 9.00391 12.002C9.00391 14.202 10.3039 16.002 12.0039 16.002C13.7039 16.002 15.0039 14.202 15.0039 12.002C15.0039 9.80195 13.7039 8.00195 12.0039 8.00195Z\"\r\n fill=\"#98A2B3\" />\r\n <path\r\n d=\"M18.0039 6.00195H20.0039C20.6039 6.00195 21.0039 6.40195 21.0039 7.00195V9.00195C19.3039 9.00195 18.0039 7.70195 18.0039 6.00195ZM6.00391 6.00195H4.00391C3.40391 6.00195 3.00391 6.40195 3.00391 7.00195V9.00195C4.70391 9.00195 6.00391 7.70195 6.00391 6.00195ZM21.0039 17.002V15.002C19.3039 15.002 18.0039 16.302 18.0039 18.002H20.0039C20.6039 18.002 21.0039 17.602 21.0039 17.002ZM3.00391 15.002V17.002C3.00391 17.602 3.40391 18.002 4.00391 18.002H6.00391C6.00391 16.302 4.70391 15.002 3.00391 15.002Z\"\r\n fill=\"#98A2B3\" />\r\n </svg>\r\n <svg placement=\"top\" ngbTooltip=\"Potential Buyers\" *ngIf=\"conversionValue ==='Potential Buyers'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path opacity=\"0.3\" d=\"M20.0039 18.002H4.00391C3.40391 18.002 3.00391 17.602 3.00391 17.002V7.00195C3.00391 6.40195 3.40391 6.00195 4.00391 6.00195H20.0039C20.6039 6.00195 21.0039 6.40195 21.0039 7.00195V17.002C21.0039 17.602 20.6039 18.002 20.0039 18.002ZM12.0039 8.00195C10.3039 8.00195 9.00391 9.80195 9.00391 12.002C9.00391 14.202 10.3039 16.002 12.0039 16.002C13.7039 16.002 15.0039 14.202 15.0039 12.002C15.0039 9.80195 13.7039 8.00195 12.0039 8.00195Z\" fill=\"#00A3FF\"/>\r\n <path d=\"M18.0039 6.00195H20.0039C20.6039 6.00195 21.0039 6.40195 21.0039 7.00195V9.00195C19.3039 9.00195 18.0039 7.70195 18.0039 6.00195ZM6.00391 6.00195H4.00391C3.40391 6.00195 3.00391 6.40195 3.00391 7.00195V9.00195C4.70391 9.00195 6.00391 7.70195 6.00391 6.00195ZM21.0039 17.002V15.002C19.3039 15.002 18.0039 16.302 18.0039 18.002H20.0039C20.6039 18.002 21.0039 17.602 21.0039 17.002ZM3.00391 15.002V17.002C3.00391 17.602 3.40391 18.002 4.00391 18.002H6.00391C6.00391 16.302 4.70391 15.002 3.00391 15.002Z\" fill=\"#00A3FF\"/>\r\n </svg>\r\n </span>\r\n <span class=\"h-75px col-md-3\">\r\n <svg placement=\"top\" ngbTooltip=\"NoB Derived\" class=\"cursor-pointer\" *ngIf=\"conversionValue !=='NoB Derived'\" (click)=\"changeValue('NoB Derived')\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path opacity=\"0.3\"\r\n d=\"M18.0039 21.6005C16.3039 21.6005 15.0039 20.3005 15.0039 18.6005V2.5005C15.0039 2.2005 14.6039 2.00045 14.3039 2.20045L13.0039 3.60048L11.7039 2.30049C11.3039 1.90049 10.7039 1.90049 10.3039 2.30049L9.00391 3.60048L7.70392 2.30049C7.30392 1.90049 6.7039 1.90049 6.3039 2.30049L5.00391 3.60048L3.70392 2.30049C3.50392 2.10049 3.00391 2.2005 3.00391 3.5005V18.6005C3.00391 20.3005 4.30391 21.6005 6.00391 21.6005H18.0039Z\"\r\n fill=\"#98A2B3\" />\r\n <path\r\n d=\"M12.0059 12.5972H11.0059C10.4059 12.5972 10.0059 12.1972 10.0059 11.5972C10.0059 10.9972 10.4059 10.5972 11.0059 10.5972H12.0059C12.6059 10.5972 13.0059 10.9972 13.0059 11.5972C13.0059 12.1972 12.6059 12.5972 12.0059 12.5972ZM9.00586 11.5972C9.00586 10.9972 8.60586 10.5972 8.00586 10.5972H6.00586C5.40586 10.5972 5.00586 10.9972 5.00586 11.5972C5.00586 12.1972 5.40586 12.5972 6.00586 12.5972H8.00586C8.60586 12.5972 9.00586 12.1972 9.00586 11.5972ZM9.00586 7.59717C9.00586 6.99717 8.60586 6.59717 8.00586 6.59717H6.00586C5.40586 6.59717 5.00586 6.99717 5.00586 7.59717C5.00586 8.19717 5.40586 8.59717 6.00586 8.59717H8.00586C8.60586 8.59717 9.00586 8.19717 9.00586 7.59717ZM13.0059 7.59717C13.0059 6.99717 12.6059 6.59717 12.0059 6.59717H11.0059C10.4059 6.59717 10.0059 6.99717 10.0059 7.59717C10.0059 8.19717 10.4059 8.59717 11.0059 8.59717H12.0059C12.6059 8.59717 13.0059 8.19717 13.0059 7.59717ZM13.0059 15.5972C13.0059 14.9972 12.6059 14.5972 12.0059 14.5972H10.0059C9.40586 14.5972 9.00586 14.9972 9.00586 15.5972C9.00586 16.1972 9.40586 16.5972 10.0059 16.5972H12.0059C12.6059 16.5972 13.0059 16.1972 13.0059 15.5972Z\"\r\n fill=\"#98A2B3\" />\r\n <path\r\n d=\"M15.002 18.5971C15.002 20.2971 16.302 21.5971 18.002 21.5971C19.702 21.5971 21.002 20.2971 21.002 18.5971V12.4971C21.002 12.1971 20.602 11.9971 20.302 12.1971L19.002 13.5971L17.702 12.2971C17.302 11.8971 16.702 11.8971 16.302 12.2971L15.002 13.5971V18.5971Z\"\r\n fill=\"#98A2B3\" />\r\n </svg>\r\n <svg placement=\"top\" ngbTooltip=\"NoB Derived\" *ngIf=\"conversionValue ==='NoB Derived'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path opacity=\"0.3\"\r\n d=\"M18.0039 21.6005C16.3039 21.6005 15.0039 20.3005 15.0039 18.6005V2.5005C15.0039 2.2005 14.6039 2.00045 14.3039 2.20045L13.0039 3.60048L11.7039 2.30049C11.3039 1.90049 10.7039 1.90049 10.3039 2.30049L9.00391 3.60048L7.70392 2.30049C7.30392 1.90049 6.7039 1.90049 6.3039 2.30049L5.00391 3.60048L3.70392 2.30049C3.50392 2.10049 3.00391 2.2005 3.00391 3.5005V18.6005C3.00391 20.3005 4.30391 21.6005 6.00391 21.6005H18.0039Z\"\r\n fill=\"#00A3FF\" />\r\n <path\r\n d=\"M12.0059 12.5972H11.0059C10.4059 12.5972 10.0059 12.1972 10.0059 11.5972C10.0059 10.9972 10.4059 10.5972 11.0059 10.5972H12.0059C12.6059 10.5972 13.0059 10.9972 13.0059 11.5972C13.0059 12.1972 12.6059 12.5972 12.0059 12.5972ZM9.00586 11.5972C9.00586 10.9972 8.60586 10.5972 8.00586 10.5972H6.00586C5.40586 10.5972 5.00586 10.9972 5.00586 11.5972C5.00586 12.1972 5.40586 12.5972 6.00586 12.5972H8.00586C8.60586 12.5972 9.00586 12.1972 9.00586 11.5972ZM9.00586 7.59717C9.00586 6.99717 8.60586 6.59717 8.00586 6.59717H6.00586C5.40586 6.59717 5.00586 6.99717 5.00586 7.59717C5.00586 8.19717 5.40586 8.59717 6.00586 8.59717H8.00586C8.60586 8.59717 9.00586 8.19717 9.00586 7.59717ZM13.0059 7.59717C13.0059 6.99717 12.6059 6.59717 12.0059 6.59717H11.0059C10.4059 6.59717 10.0059 6.99717 10.0059 7.59717C10.0059 8.19717 10.4059 8.59717 11.0059 8.59717H12.0059C12.6059 8.59717 13.0059 8.19717 13.0059 7.59717ZM13.0059 15.5972C13.0059 14.9972 12.6059 14.5972 12.0059 14.5972H10.0059C9.40586 14.5972 9.00586 14.9972 9.00586 15.5972C9.00586 16.1972 9.40586 16.5972 10.0059 16.5972H12.0059C12.6059 16.5972 13.0059 16.1972 13.0059 15.5972Z\"\r\n fill=\"#00A3FF\" />\r\n <path\r\n d=\"M15.002 18.5971C15.002 20.2971 16.302 21.5971 18.002 21.5971C19.702 21.5971 21.002 20.2971 21.002 18.5971V12.4971C21.002 12.1971 20.602 11.9971 20.302 12.1971L19.002 13.5971L17.702 12.2971C17.302 11.8971 16.702 11.8971 16.302 12.2971L15.002 13.5971V18.5971Z\"\r\n fill=\"#00A3FF\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"card-footer ms-3 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.conversion?.footfall.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.conversion?.footfall.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\">\r\n <span *ngIf=\"conversionValue ==='footfall' && getCardGraphData?.conversion?.footfall.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"conversionValue ==='footfall' && getCardGraphData?.conversion?.footfall.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.conversion?.footfall.PreviousData ? getCardGraphData?.conversion?.footfall.PreviousData:'--'}}%</span>\r\n <span *ngIf=\"conversionValue ==='engagers' && getCardGraphData?.conversion?.engagers.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n \r\n <span *ngIf=\"conversionValue ==='engagers' && getCardGraphData?.conversion?.engagers.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.conversion?.engagers.PreviousData ? getCardGraphData?.conversion?.engagers.PreviousData:'--'}}%</span>\r\n\r\n <span *ngIf=\"conversionValue ==='Potential Buyers' && getCardGraphData?.conversion?.potentialBuyers.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"conversionValue ==='Potential Buyers' && getCardGraphData?.conversion?.potentialBuyers.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.conversion?.potentialBuyers.PreviousData ? getCardGraphData?.conversion?.potentialBuyers.PreviousData:'--'}}%</span>\r\n <span *ngIf=\"conversionValue ==='NoB Derived'\" class=\"percent-value\">--%</span>\r\n <span *ngIf=\"conversionValue ==='' && getCardGraphData?.conversion?.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n\r\n <span *ngIf=\"conversionValue ==='' && getCardGraphData?.conversion?.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.conversion?.PreviousData ? getCardGraphData?.conversion?.PreviousData:'--'}}%</span>\r\n \r\n <span\r\n class=\"week-font\"> vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"card-header ellipse1 border-0 px-3\" >\r\n <!-- [ngbTooltip]=\"bouncedTooltip\" placement=\"left\" -->\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"card-label header\">{{getCardData?.bounced?.rate ? getCardData?.bounced?.rate :'--'}}%</span>\r\n <span class=\"sub-header\">Bounced Rate</span>\r\n </h3>\r\n </div>\r\n <!-- <ng-template #bouncedTooltip>\r\n <div class=\"tooltip-content\">\r\n <h5 class=\"tooltip-title text-start\">Bounced Rate</h5>\r\n <p class=\"text-start\">Total walk-ins who spent less than <N>min/s.</p>\r\n <h4 class=\"text-start\">{{getCardData?.bounced?.rate}}</h4>\r\n <footer class=\"tooltip-footer text-start\"> <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.bounced?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.bounced?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span> <span class=\"mt-2 ms-2\">\r\n <span *ngIf=\"getCardGraphData?.bounced?.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"getCardGraphData?.bounced?.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.bounced?.PreviousData ? getCardGraphData?.bounced?.PreviousData:'--'}}%</span>\r\n <span class=\"week-font\">\r\n vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span></footer>\r\n </div>\r\n </ng-template> -->\r\n <div class=\"card-body p-0\">\r\n <div *ngIf=\"cardNodata\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body pb-0 px-0 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata1\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title1\">No data found</div>\r\n <!-- <div class=\"nodata-sub\">There is no result for this conversion funnel</div> -->\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!cardNodata\" class=\"text-center\" id=\"BouncedRate\"></div>\r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.bounced?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.bounced?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\">\r\n <span *ngIf=\"getCardGraphData?.bounced?.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"getCardGraphData?.bounced?.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.bounced?.PreviousData ? getCardGraphData?.bounced?.PreviousData:'--'}}%</span>\r\n <span class=\"week-font\">\r\n vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4 mt-3\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"card-header ellipse1 border-0 px-3\" >\r\n <!-- [ngbTooltip]=\"engagersTooltip\" placement=\"right\" -->\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"card-label header\">{{getCardData?.engagers?.rate ? getCardData?.engagers?.rate :'--'}}%</span>\r\n <span class=\"sub-header\">Engagers Rate</span>\r\n </h3>\r\n </div>\r\n <!-- <ng-template #engagersTooltip>\r\n <div class=\"tooltip-content\">\r\n <h5 class=\"tooltip-title text-start\">Engagers Rate</h5>\r\n <p class=\"text-start\">Total walk-ins who spent more than <Xmins> into the selected stores.</p>\r\n <h4 class=\"text-start\">{{getCardData?.engagers?.rate}}</h4>\r\n <footer class=\"tooltip-footer text-start\"> <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.engagers?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.engagers?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span> <span class=\"mt-2 ms-2\">\r\n <span *ngIf=\"getCardGraphData?.engagers?.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"getCardGraphData?.engagers?.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.engagers?.PreviousData ? getCardGraphData?.engagers?.PreviousData:'--'}}%</span>\r\n <span class=\"week-font\">\r\n vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span></footer>\r\n </div>\r\n </ng-template> -->\r\n <div class=\"card-body p-0\">\r\n <div *ngIf=\"cardNodata\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body pb-0 px-0 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata1\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title1\">No data found</div>\r\n <!-- <div class=\"nodata-sub\">There is no result for this conversion funnel</div> -->\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!cardNodata\" class=\"text-center\" id=\"engagers\"></div>\r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.engagers?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.engagers?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\">\r\n <span *ngIf=\"getCardGraphData?.engagers?.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"getCardGraphData?.engagers?.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.engagers?.PreviousData ? getCardGraphData?.engagers?.PreviousData:'--'}}%</span>\r\n <span class=\"week-font\">\r\n vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4 mt-3\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"card-header ellipse1 border-0 px-3\" > \r\n <!-- [ngbTooltip]=\"missedTooltip\" placement=\"right\" -->\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"card-label header\">{{getCardData?.missedopportunities?.rate ? getCardData?.missedopportunities?.rate :'--'}}%</span>\r\n <span class=\"sub-header\">Missed Opportunities</span>\r\n </h3>\r\n </div>\r\n\r\n <!-- <ng-template #missedTooltip>\r\n <div class=\"tooltip-content\">\r\n <h5 class=\"tooltip-title text-start\">Missed Opportunities</h5>\r\n <p class=\"text-start\">The difference between <engagers> and <conversions>, showing potential loss.</p>\r\n <h4 class=\"text-start\">{{getCardData?.missedopportunities?.rate}}</h4>\r\n <footer class=\"tooltip-footer text-start\"> \r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.missedopportunities?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.missedopportunities?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"ms-2 mt-2\">\r\n <span *ngIf=\"getCardGraphData?.missedopportunities?.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"getCardGraphData?.missedopportunities?.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.missedopportunities?.PreviousData ? getCardGraphData?.missedopportunities?.PreviousData:'--'}}%</span>\r\n <span class=\"week-font\">\r\n vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span>\r\n </footer>\r\n </div>\r\n </ng-template> -->\r\n <div class=\"card-body p-0 h-90px mt-3 mx-3\">\r\n <div class=\"row\">\r\n <div class=\"col-md-9\"><!--{{getCardData?.revenue?.value ?? '--'}} -->\r\n <div class=\"my-2\" *ngIf=\"getCardData?.revenue?.currency !=='inr'\"> <span class=\"card-label header\"><span class=\"me-1\">$</span> {{getCardData?.revenue?.value.toLocaleString('en-IN') ?? '--'}}</span></div>\r\n <div class=\"my-2\" *ngIf=\"getCardData?.revenue?.currency ==='inr'\"> <span class=\"card-label header\"><span class=\"me-1\">\u20B9</span> {{getCardData?.revenue?.value.toLocaleString('en-IN') ?? '--'}}</span></div>\r\n <div class=\"my-1\"><span class=\"sub-header\">Avg. Revenue Loss</span></div>\r\n </div>\r\n <div class=\"col-md-3 mt-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\r\n <g filter=\"url(#filter0_d_3885_2531)\">\r\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"#EAF8FF\"/>\r\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#EAF8FF\"/>\r\n <g clip-path=\"url(#clip0_3885_2531)\">\r\n <path d=\"M27.4585 17.2251C27.8133 18.8556 27.6707 20.5614 27.0505 22.1027L25.8593 21.3838L26.017 26.097L30 23.8834L28.717 23.1086C30.7171 18.4823 29.0726 12.9333 24.7799 10.3407C23.3328 9.46633 21.6918 9.00406 20.0206 9.00003C18.3494 8.99599 16.7064 9.45033 15.2555 10.3177L16.2049 12.0544C17.5933 11.2249 19.1953 10.8712 20.7858 11.043C22.3764 11.2149 23.8754 11.9036 25.0723 13.0125C26.2692 14.1214 27.1037 15.5946 27.4585 17.2251Z\" fill=\"#00A3FF\"/>\r\n <path d=\"M12.5402 20.7759C12.1854 19.1452 12.3282 17.4392 12.9485 15.8978L14.1398 16.6167L13.982 11.9035L10 14.1181L11.283 14.8909C9.28199 19.5182 10.9264 25.0662 15.2192 27.6588C16.6661 28.5333 18.3071 28.9958 19.9783 29C21.6495 29.0042 23.2926 28.55 24.7435 27.6828L23.7951 25.9461C22.4067 26.776 20.8045 27.13 19.2138 26.9583C17.623 26.7867 16.1237 26.0979 14.9267 24.989C13.7296 23.88 12.895 22.4066 12.5402 20.7759Z\" fill=\"#00A3FF\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M21.0372 13.003C21.0372 12.5514 20.6871 12.1852 20.2552 12.1852C19.8234 12.1852 19.4733 12.5514 19.4733 13.003V14.3659H18.952C18.2607 14.3659 17.5978 14.653 17.109 15.1642C16.6201 15.6754 16.3455 16.3687 16.3455 17.0916C16.3455 17.8146 16.6201 18.5079 17.109 19.0191C17.5978 19.5302 18.2607 19.8174 18.952 19.8174H19.4733V21.998H17.1275C16.6956 21.998 16.3455 22.3641 16.3455 22.8158C16.3455 23.2674 16.6956 23.6335 17.1275 23.6335H19.4733V24.9964C19.4733 25.448 19.8234 25.8141 20.2552 25.8141C20.6871 25.8141 21.0372 25.448 21.0372 24.9964V23.6335H21.5585C22.2498 23.6335 22.9127 23.3463 23.4015 22.8351C23.8903 22.324 24.1649 21.6306 24.1649 20.9077C24.1649 20.1848 23.8903 19.4915 23.4015 18.9803C22.9127 18.4691 22.2498 18.182 21.5585 18.182H21.0372V16.0013H22.8617C23.2936 16.0013 23.6437 15.6352 23.6437 15.1836C23.6437 14.732 23.2936 14.3659 22.8617 14.3659H21.0372V13.003ZM18.952 16.0013H19.4733V18.182H18.952C18.6755 18.182 18.4103 18.0671 18.2148 17.8626C18.0193 17.6581 17.9094 17.3808 17.9094 17.0916C17.9094 16.8025 18.0193 16.5252 18.2148 16.3207C18.4103 16.1162 18.6755 16.0013 18.952 16.0013ZM21.0372 21.998V19.8174H21.5585C21.835 19.8174 22.1002 19.9323 22.2957 20.1368C22.4912 20.3412 22.6011 20.6186 22.6011 20.9077C22.6011 21.1969 22.4912 21.4742 22.2957 21.6787C22.1002 21.8832 21.835 21.998 21.5585 21.998H21.0372Z\" fill=\"#00A3FF\"/>\r\n </g>\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_3885_2531\" x=\"0\" y=\"0\" width=\"40\" height=\"40\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/>\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\"/>\r\n <feOffset dy=\"1\"/>\r\n <feGaussianBlur stdDeviation=\"1\"/>\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\"/>\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_3885_2531\"/>\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_3885_2531\" result=\"shape\"/>\r\n </filter>\r\n <clipPath id=\"clip0_3885_2531\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(10 9)\"/>\r\n </clipPath>\r\n </defs>\r\n </svg></div>\r\n </div>\r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.missedopportunities?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.missedopportunities?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"ms-2 mt-2\">\r\n <span *ngIf=\"getCardGraphData?.missedopportunities?.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"getCardGraphData?.missedopportunities?.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.missedopportunities?.PreviousData ? getCardGraphData?.missedopportunities?.PreviousData:'--'}}%</span>\r\n <span class=\"week-font\">\r\n vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4 mt-3 h-100\">\r\n <div class=\"card card-border mb-5 py-0\">\r\n <div class=\"card-body p-0 h-90px mt-3 mx-3\">\r\n <div class=\"d-flex align-items-center me-2\">\r\n <div class=\"mt-3 flex-shrink-0\">\r\n <svg width=\"40\" height=\"41\" viewBox=\"0 0 40 41\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect y=\"0.5\" width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\"/>\r\n <path d=\"M17.6382 12.8922C17.6382 12.6835 17.7212 12.4833 17.8688 12.3357C18.0164 12.1881 18.2165 12.1052 18.4253 12.1052H21.5734C21.7822 12.1052 21.9823 12.1881 22.1299 12.3357C22.2775 12.4833 22.3605 12.6835 22.3605 12.8922C22.3605 13.1009 22.2775 13.3011 22.1299 13.4487C21.9823 13.5963 21.7822 13.6792 21.5734 13.6792H20.7864V14.7286L20.7853 14.7716C22.1156 14.9174 23.3767 15.4398 24.4204 16.2775L24.4277 16.2712L25.2148 15.4842C25.311 15.3806 25.4333 15.3048 25.569 15.2649C25.7046 15.2251 25.8485 15.2225 25.9855 15.2575C26.1224 15.2925 26.2474 15.3638 26.3472 15.4639C26.4471 15.564 26.5181 15.6892 26.5527 15.8263C26.5877 15.9631 26.5852 16.1068 26.5455 16.2423C26.5058 16.3778 26.4304 16.5002 26.3271 16.5965L25.5401 17.3836L25.5338 17.3909C26.3662 18.4331 26.8875 19.6891 27.0377 21.0144C27.1878 22.3397 26.9607 23.6805 26.3824 24.8825C25.8042 26.0845 24.8983 27.0987 23.7691 27.8086C22.6399 28.5184 21.3332 28.895 19.9993 28.895C18.6655 28.895 17.3588 28.5184 16.2296 27.8086C15.1004 27.0987 14.1945 26.0845 13.6163 24.8825C13.038 23.6805 12.8109 22.3397 12.961 21.0144C13.1112 19.6891 13.6325 18.4331 14.4649 17.3909L14.4586 17.3836L13.6716 16.5965C13.5324 16.4474 13.4566 16.25 13.4601 16.046C13.4636 15.842 13.5462 15.6473 13.6905 15.5031C13.8347 15.3588 14.0294 15.2762 14.2334 15.2727C14.4374 15.2692 14.6348 15.345 14.7839 15.4842L15.571 16.2712L15.5783 16.2775C16.6217 15.44 17.8824 14.9176 19.2123 14.7716V13.6792H18.4253C18.2165 13.6792 18.0164 13.5963 17.8688 13.4487C17.7212 13.3011 17.6382 13.1009 17.6382 12.8922ZM19.9993 27.3212C21.4606 27.3211 22.862 26.7404 23.8952 25.7071C24.9284 24.6737 25.5087 23.2722 25.5086 21.8109C25.5085 20.3496 24.9278 18.9482 23.8945 17.915C22.8611 16.8819 21.4596 16.3015 19.9983 16.3016C18.537 16.3018 17.1356 16.8824 16.1025 17.9158C15.0693 18.9492 14.4889 20.3507 14.489 21.8119C14.4892 23.2732 15.0698 24.6746 16.1032 25.7078C17.1366 26.741 18.5381 27.3213 19.9993 27.3212ZM20.4076 20.2903L21.8032 18.8947C21.8758 18.8195 21.9626 18.7595 22.0586 18.7182C22.1546 18.6769 22.2579 18.6551 22.3624 18.6542C22.4669 18.6532 22.5705 18.6731 22.6673 18.7126C22.764 18.7521 22.8519 18.8105 22.9259 18.8844C22.9998 18.9582 23.0583 19.0461 23.0979 19.1428C23.1375 19.2395 23.1575 19.3431 23.1566 19.4476C23.1557 19.5521 23.1341 19.6554 23.0929 19.7515C23.0517 19.8475 22.9918 19.9344 22.9166 20.007L21.521 21.4037C21.583 21.6371 21.5906 21.8815 21.5432 22.1182C21.4958 22.355 21.3948 22.5777 21.2478 22.7692C21.1008 22.9607 20.9118 23.1159 20.6953 23.2228C20.4789 23.3298 20.2408 23.3856 19.9993 23.386C19.7766 23.3841 19.5567 23.3349 19.3544 23.2416C19.1521 23.1483 18.9718 23.0131 18.8257 22.845C18.6795 22.6768 18.5707 22.4796 18.5066 22.2662C18.4424 22.0528 18.4243 21.8283 18.4534 21.6074C18.4825 21.3865 18.5582 21.1743 18.6755 20.9849C18.7928 20.7955 18.949 20.6332 19.1338 20.5086C19.3185 20.3841 19.5276 20.3003 19.7472 20.2626C19.9668 20.225 20.1919 20.2344 20.4076 20.2903Z\" fill=\"#667085\"/>\r\n </svg>\r\n </div>\r\n <div class=\"mx-3 mt-1\">\r\n <div class=\"my-1 card-label header\" *ngIf=\"getCardData?.avgDwellTime === 0\">0 mins</div>\r\n <div class=\"my-1 card-label header\" *ngIf=\"getCardData?.avgDwellTime !== 0\">{{getCardData?.avgDwellTime ? getCardData?.avgDwellTime :'--'}} mins</div>\r\n <div class=\"sub-header\">Avg Dwell Time</div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n <div class=\"card card-border py-0\">\r\n <div class=\"card-body p-0 h-90px mt-3 mx-3\">\r\n <div class=\"d-flex align-items-center me-2\">\r\n <div class=\"flex-shrink-0 mt-3\">\r\n <svg width=\"40\" height=\"41\" viewBox=\"0 0 40 41\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect y=\"0.5\" width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\"/>\r\n <path d=\"M21.9004 12.1675C22.9958 12.1675 24.0423 12.3918 24.9977 12.7987C25.9889 13.2207 26.8809 13.8402 27.6279 14.6087C28.3734 15.3756 28.9756 16.2931 29.3857 17.3162C29.7813 18.299 29.9993 19.3756 29.9993 20.5008C29.9993 21.6277 29.7813 22.7043 29.3857 23.6871C28.9756 24.7068 28.3734 25.6244 27.6263 26.3929C26.8809 27.1598 25.9889 27.7793 24.9945 28.2012C24.0391 28.6081 22.9925 28.8325 21.8988 28.8325C20.8034 28.8325 19.7568 28.6081 18.8014 28.2012C17.8102 27.7793 16.9183 27.1598 16.1729 26.3929L16.1712 26.3912C15.4242 25.6227 14.8236 24.7052 14.4134 23.6871C14.2865 23.3707 14.1774 23.0459 14.0879 22.7127C14.2572 22.7294 14.4297 22.7378 14.6038 22.7378C14.9342 22.7378 15.2565 22.7076 15.5706 22.649C15.6227 22.8098 15.6797 22.9688 15.7415 23.1246C16.0785 23.9617 16.5732 24.7152 17.1885 25.3481C17.8037 25.981 18.5378 26.49 19.3499 26.8366C20.1328 27.1698 20.9938 27.3557 21.8988 27.3557C22.8037 27.3557 23.6631 27.1715 24.4476 26.8366C25.2614 26.49 25.9938 25.981 26.6091 25.3481C27.2243 24.7152 27.7191 23.9601 28.056 23.1246C28.3799 22.3192 28.5605 21.4334 28.5605 20.5025C28.5605 19.5715 28.3815 18.6875 28.056 17.8804C27.7191 17.0432 27.2243 16.2898 26.6091 15.6569C25.9938 15.024 25.2598 14.5149 24.4476 14.1684C23.6647 13.8352 22.8037 13.6493 21.8988 13.6493C20.9938 13.6493 20.1344 13.8335 19.3499 14.1684C19.2799 14.1985 19.21 14.2303 19.1416 14.2621C18.8747 13.8301 18.5524 13.4383 18.1829 13.0984C18.3848 12.9913 18.5915 12.8925 18.8014 12.8021C19.7601 12.3918 20.805 12.1675 21.9004 12.1675ZM20.971 16.5393C20.971 16.335 21.0524 16.1508 21.181 16.0169C21.3112 15.8829 21.4902 15.8009 21.6888 15.8009C21.8874 15.8009 22.0664 15.8829 22.1966 16.0169C22.3268 16.1508 22.4066 16.335 22.4066 16.5393V20.4271L25.2305 22.1501C25.3997 22.2539 25.5137 22.4196 25.5592 22.6021C25.6048 22.7847 25.5837 22.9856 25.4827 23.1597V23.1614C25.3818 23.3355 25.2207 23.4527 25.0433 23.4996C24.8659 23.5465 24.6706 23.5247 24.5013 23.4209H24.4997L21.3405 21.4937C21.2314 21.4318 21.1419 21.3413 21.0768 21.2342C21.0101 21.122 20.971 20.9897 20.971 20.8491V16.5393Z\" fill=\"#667085\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M14.3913 12.6095C16.8164 12.6095 18.7826 14.6321 18.7826 17.1269C18.7826 19.6218 16.8164 21.6444 14.3913 21.6444C11.9661 21.6444 10 19.6218 10 17.1269C10 14.6321 11.9661 12.6095 14.3913 12.6095ZM14.3913 19.7172L16.748 16.7201H15.2848V15.1261H13.4977V16.7201H12.0345L14.3913 19.7172Z\" fill=\"#F04438\"/>\r\n </svg>\r\n </div>\r\n <div class=\"mx-3 mt-1\">\r\n <div class=\"my-1 card-label header\" *ngIf=\"getCardData?.avgDownTime === 0\">0 mins</div>\r\n <div class=\"my-1 card-label header\" *ngIf=\"getCardData?.avgDownTime !== 0\">{{getCardData?.avgDownTime ? getCardData?.avgDownTime :'--'}} mins</div>\r\n <div class=\"sub-header\">Avg Down Time</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4 mt-3 position-relative\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"card-label header\">{{getCardData?.potentialBuyers?.rate ? getCardData?.potentialBuyers?.rate :'--'}}%</span>\r\n <span class=\"sub-header \">Potential Buyers</span>\r\n </h3>\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <div *ngIf=\"cardNodata\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body pb-0 px-0 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata1\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title1\">No data found</div>\r\n <!-- <div class=\"nodata-sub\">There is no result for this conversion funnel</div> -->\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!cardNodata\" class=\"text-center\" id=\"PotentialBuyers\"></div>\r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.potentialBuyers?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.potentialBuyers?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\">\r\n <span *ngIf=\"getCardGraphData?.potentialBuyers?.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"getCardGraphData?.potentialBuyers?.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.potentialBuyers?.PreviousData ? getCardGraphData?.potentialBuyers?.PreviousData:'--'}}%</span>\r\n <span class=\"week-font\">\r\n vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"position-absolute end-0\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M6 12L10 8L6 4\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"col-md-8 mt-3\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <div class=\"px-2\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"card-label header\">Potential Buyer Distribution</span>\r\n <span class=\"sub-header\">Category-wise</span>\r\n </h3> \r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-9\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6 px-0\">\r\n <div class=\"card-body p-0\">\r\n <div class=\"text-start ms-10 mt-7 mb-3\"><span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"25\" height=\"24\" viewBox=\"0 0 25 24\" fill=\"none\">\r\n <path d=\"M20.25 21V19C20.25 17.9391 19.8286 16.9217 19.0784 16.1716C18.3283 15.4214 17.3109 15 16.25 15H8.25C7.18913 15 6.17172 15.4214 5.42157 16.1716C4.67143 16.9217 4.25 17.9391 4.25 19V21M16.25 7C16.25 9.20914 14.4591 11 12.25 11C10.0409 11 8.25 9.20914 8.25 7C8.25 4.79086 10.0409 3 12.25 3C14.4591 3 16.25 4.79086 16.25 7Z\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span><span class=\"left-card-count mt-2 ms-1\">{{getCardData?.potentialBuyers?.potentialBuyersSingle?.count ? getCardData?.potentialBuyers?.potentialBuyersSingle?.count.toLocaleString('en-IN'):'--'}}</span> <span class=\"left-card-count-header ms-1\">Single</span></div>\r\n <div class=\"text-start ms-15 mb-3\"><span class=\"badge badge-light-default week-font\">{{getCardData?.potentialBuyers?.potentialBuyersSingle?.ageGroup ? getCardData?.potentialBuyers?.potentialBuyersSingle?.ageGroup:'--'}} age</span></div>\r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.potentialBuyers?.potentialBuyersSingle?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.potentialBuyers?.potentialBuyersSingle?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\">\r\n <span *ngIf=\"getCardGraphData?.potentialBuyers?.potentialBuyersSingle?.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"getCardGraphData?.potentialBuyers?.potentialBuyersSingle?.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.potentialBuyers?.potentialBuyersSingle?.PreviousData ? getCardGraphData?.potentialBuyers?.potentialBuyersSingle?.PreviousData:'--'}}%</span>\r\n <span\r\n class=\"week-font\"> vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6 px-0\">\r\n <div class=\"card-body p-0\">\r\n <div class=\"text-start ms-10 mt-7 mb-3\"><span> <svg width=\"26\" height=\"24\" viewBox=\"0 0 26 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect width=\"26\" height=\"24\" fill=\"#DCDCDC\"/>\r\n <rect x=\"-460.5\" y=\"-340.5\" width=\"783\" height=\"1947\" rx=\"4.5\" stroke=\"#9747FF\" stroke-dasharray=\"10 5\"/>\r\n <mask id=\"path-2-inside-1_707_13106\" fill=\"white\">\r\n <path d=\"M-189 -89C-189 -95.6274 -183.627 -101 -177 -101H295C301.627 -101 307 -95.6274 307 -89V85C307 91.6274 301.627 97 295 97H-177C-183.627 97 -189 91.6274 -189 85V-89Z\"/>\r\n </mask>\r\n <path d=\"M-189 -89C-189 -95.6274 -183.627 -101 -177 -101H295C301.627 -101 307 -95.6274 307 -89V85C307 91.6274 301.627 97 295 97H-177C-183.627 97 -189 91.6274 -189 85V-89Z\" fill=\"white\"/>\r\n <path d=\"M-190 -89C-190 -96.1797 -184.18 -102 -177 -102H294C301.18 -102 307 -96.1797 307 -89C307 -95.0751 301.627 -100 295 -100H-177C-183.075 -100 -188 -95.0751 -188 -89H-190ZM307 85C307 92.1797 301.18 98 294 98H-177C-184.18 98 -190 92.1797 -190 85H-188C-188 91.0751 -183.075 96 -177 96H295C301.627 96 307 91.0751 307 85ZM-177 98C-184.18 98 -190 92.1797 -190 85V-89C-190 -96.1797 -184.18 -102 -177 -102V-100C-183.075 -100 -188 -95.0751 -188 -89V85C-188 91.0751 -183.075 96 -177 96V98ZM307 -101V97V-101Z\" fill=\"#D0D5DD\" mask=\"url(#path-2-inside-1_707_13106)\"/>\r\n <mask id=\"path-6-inside-2_707_13106\" fill=\"white\">\r\n <path d=\"M7.71064 7.38462C8.19552 7.38462 8.67565 7.28911 9.12362 7.10356C9.57159 6.918 9.97863 6.64603 10.3215 6.30316C10.6644 5.9603 10.9363 5.55326 11.1219 5.10529C11.3074 4.65732 11.4029 4.17719 11.4029 3.69231C11.4029 3.20743 11.3074 2.72729 11.1219 2.27932C10.9363 1.83135 10.6644 1.42431 10.3215 1.08145C9.97863 0.73859 9.57159 0.466616 9.12362 0.28106C8.67565 0.0955043 8.19552 -7.22529e-09 7.71064 0C6.73138 1.45921e-08 5.79222 0.38901 5.09978 1.08145C4.40734 1.77389 4.01833 2.71305 4.01833 3.69231C4.01833 4.67157 4.40734 5.61072 5.09978 6.30316C5.79222 6.99561 6.73138 7.38462 7.71064 7.38462ZM18.7876 7.38462C19.2724 7.38462 19.7526 7.28911 20.2005 7.10356C20.6485 6.918 21.0556 6.64603 21.3984 6.30316C21.7413 5.9603 22.0133 5.55326 22.1988 5.10529C22.3844 4.65732 22.4799 4.17719 22.4799 3.69231C22.4799 3.20743 22.3844 2.72729 22.1988 2.27932C22.0133 1.83135 21.7413 1.42431 21.3984 1.08145C21.0556 0.73859 20.6485 0.466616 20.2005 0.28106C19.7526 0.0955043 19.2724 -7.22529e-09 18.7876 0C17.8083 1.45921e-08 16.8691 0.38901 16.1767 1.08145C15.4843 1.77389 15.0953 2.71305 15.0953 3.69231C15.0953 4.67157 15.4843 5.61072 16.1767 6.30316C16.8691 6.99561 17.8083 7.38462 18.7876 7.38462ZM0.941406 10.736C0.941406 10.4575 0.996258 10.1818 1.10283 9.92448C1.2094 9.66719 1.3656 9.43342 1.56252 9.2365C1.75944 9.03958 1.99321 8.88338 2.2505 8.77681C2.50778 8.67024 2.78354 8.61539 3.06202 8.61539H8.98448C8.55169 9.36345 8.32452 10.2127 8.32602 11.0769C8.32519 11.7755 8.47341 12.4662 8.76079 13.1029C9.04816 13.7396 9.46807 14.3077 9.99248 14.7692H8.60048C8.01418 14.7687 7.43803 14.9222 6.92969 15.2144C6.42134 15.5065 5.99864 15.927 5.70387 16.4338C3.7211 16.0449 2.51618 15.0782 1.81464 13.992C0.941406 12.64 0.941406 11.2431 0.941406 11.0012V10.736ZM17.8977 14.7692C18.484 14.7687 19.0602 14.9222 19.5685 15.2144C20.0769 15.5065 20.4996 15.927 20.7943 16.4338C22.7771 16.0449 23.982 15.0782 24.6836 13.992C25.5568 12.64 25.5568 11.2431 25.5568 11.0012V10.7366C25.5569 10.4581 25.5021 10.1823 25.3955 9.9249C25.289 9.66755 25.1328 9.4337 24.9359 9.23672C24.739 9.03973 24.5052 8.88348 24.2478 8.77687C23.9905 8.67026 23.7147 8.61539 23.4362 8.61539H17.5137C17.9465 9.36345 18.1737 10.2127 18.1722 11.0769C18.173 11.7755 18.0248 12.4662 17.7374 13.1029C17.45 13.7396 17.0301 14.3077 16.5057 14.7692H17.8977ZM16.9414 11.0769C16.9414 12.0562 16.5524 12.9953 15.86 13.6878C15.1675 14.3802 14.2284 14.7692 13.2491 14.7692C12.2698 14.7692 11.3307 14.3802 10.6382 13.6878C9.9458 12.9953 9.55679 12.0562 9.55679 11.0769C9.55679 10.0977 9.9458 9.15851 10.6382 8.46607C11.3307 7.77363 12.2698 7.38462 13.2491 7.38462C14.2284 7.38462 15.1675 7.77363 15.86 8.46607C16.5524 9.15851 16.9414 10.0977 16.9414 11.0769ZM6.47987 18.1206C6.47987 17.5582 6.70329 17.0188 7.10098 16.6211C7.49867 16.2234 8.03806 16 8.60048 16H17.8977C18.4601 16 18.9995 16.2234 19.3972 16.6211C19.7949 17.0188 20.0183 17.5582 20.0183 18.1206V18.3858C20.0183 18.6283 20.0183 20.0246 19.1451 21.3766C18.2325 22.7895 16.4694 24 13.2491 24C10.0288 24 8.26571 22.7895 7.3531 21.3766C6.47987 20.0246 6.47987 18.6277 6.47987 18.3858V18.1206Z\"/>\r\n </mask>\r\n <path d=\"M7.71064 7.38462C8.19552 7.38462 8.67565 7.28911 9.12362 7.10356C9.57159 6.918 9.97863 6.64603 10.3215 6.30316C10.6644 5.9603 10.9363 5.55326 11.1219 5.10529C11.3074 4.65732 11.4029 4.17719 11.4029 3.69231C11.4029 3.20743 11.3074 2.72729 11.1219 2.27932C10.9363 1.83135 10.6644 1.42431 10.3215 1.08145C9.97863 0.73859 9.57159 0.466616 9.12362 0.28106C8.67565 0.0955043 8.19552 -7.22529e-09 7.71064 0C6.73138 1.45921e-08 5.79222 0.38901 5.09978 1.08145C4.40734 1.77389 4.01833 2.71305 4.01833 3.69231C4.01833 4.67157 4.40734 5.61072 5.09978 6.30316C5.79222 6.99561 6.73138 7.38462 7.71064 7.38462ZM18.7876 7.38462C19.2724 7.38462 19.7526 7.28911 20.2005 7.10356C20.6485 6.918 21.0556 6.64603 21.3984 6.30316C21.7413 5.9603 22.0133 5.55326 22.1988 5.10529C22.3844 4.65732 22.4799 4.17719 22.4799 3.69231C22.4799 3.20743 22.3844 2.72729 22.1988 2.27932C22.0133 1.83135 21.7413 1.42431 21.3984 1.08145C21.0556 0.73859 20.6485 0.466616 20.2005 0.28106C19.7526 0.0955043 19.2724 -7.22529e-09 18.7876 0C17.8083 1.45921e-08 16.8691 0.38901 16.1767 1.08145C15.4843 1.77389 15.0953 2.71305 15.0953 3.69231C15.0953 4.67157 15.4843 5.61072 16.1767 6.30316C16.8691 6.99561 17.8083 7.38462 18.7876 7.38462ZM0.941406 10.736C0.941406 10.4575 0.996258 10.1818 1.10283 9.92448C1.2094 9.66719 1.3656 9.43342 1.56252 9.2365C1.75944 9.03958 1.99321 8.88338 2.2505 8.77681C2.50778 8.67024 2.78354 8.61539 3.06202 8.61539H8.98448C8.55169 9.36345 8.32452 10.2127 8.32602 11.0769C8.32519 11.7755 8.47341 12.4662 8.76079 13.1029C9.04816 13.7396 9.46807 14.3077 9.99248 14.7692H8.60048C8.01418 14.7687 7.43803 14.9222 6.92969 15.2144C6.42134 15.5065 5.99864 15.927 5.70387 16.4338C3.7211 16.0449 2.51618 15.0782 1.81464 13.992C0.941406 12.64 0.941406 11.2431 0.941406 11.0012V10.736ZM17.8977 14.7692C18.484 14.7687 19.0602 14.9222 19.5685 15.2144C20.0769 15.5065 20.4996 15.927 20.7943 16.4338C22.7771 16.0449 23.982 15.0782 24.6836 13.992C25.5568 12.64 25.5568 11.2431 25.5568 11.0012V10.7366C25.5569 10.4581 25.5021 10.1823 25.3955 9.9249C25.289 9.66755 25.1328 9.4337 24.9359 9.23672C24.739 9.03973 24.5052 8.88348 24.2478 8.77687C23.9905 8.67026 23.7147 8.61539 23.4362 8.61539H17.5137C17.9465 9.36345 18.1737 10.2127 18.1722 11.0769C18.173 11.7755 18.0248 12.4662 17.7374 13.1029C17.45 13.7396 17.0301 14.3077 16.5057 14.7692H17.8977ZM16.9414 11.0769C16.9414 12.0562 16.5524 12.9953 15.86 13.6878C15.1675 14.3802 14.2284 14.7692 13.2491 14.7692C12.2698 14.7692 11.3307 14.3802 10.6382 13.6878C9.9458 12.9953 9.55679 12.0562 9.55679 11.0769C9.55679 10.0977 9.9458 9.15851 10.6382 8.46607C11.3307 7.77363 12.2698 7.38462 13.2491 7.38462C14.2284 7.38462 15.1675 7.77363 15.86 8.46607C16.5524 9.15851 16.9414 10.0977 16.9414 11.0769ZM6.47987 18.1206C6.47987 17.5582 6.70329 17.0188 7.10098 16.6211C7.49867 16.2234 8.03806 16 8.60048 16H17.8977C18.4601 16 18.9995 16.2234 19.3972 16.6211C19.7949 17.0188 20.0183 17.5582 20.0183 18.1206V18.3858C20.0183 18.6283 20.0183 20.0246 19.1451 21.3766C18.2325 22.7895 16.4694 24 13.2491 24C10.0288 24 8.26571 22.7895 7.3531 21.3766C6.47987 20.0246 6.47987 18.6277 6.47987 18.3858V18.1206Z\" stroke=\"#98A2B3\" stroke-width=\"3\" mask=\"url(#path-6-inside-2_707_13106)\"/>\r\n </svg></span><span class=\"left-card-count ms-1 mt-2\">{{getCardData?.potentialBuyers?.potentialBuyersGroup?.count ? getCardData?.potentialBuyers?.potentialBuyersGroup?.count.toLocaleString('en-IN'):'--'}}</span> <span class=\"left-card-count-header ms-1\">Group</span></div>\r\n <div class=\"text-start ms-15 mb-3\"><span class=\"badge badge-light-default week-font\">{{getCardData?.potentialBuyers?.potentialBuyersGroup?.ageGroup ? getCardData?.potentialBuyers?.potentialBuyersGroup?.ageGroup:'--'}} age</span></div>\r\n \r\n </div>\r\n <div class=\"card-footer ms-2 p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2\">\r\n <svg *ngIf=\"!getCardGraphData?.potentialBuyers?.potentialBuyersGroup?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"getCardGraphData?.potentialBuyers?.potentialBuyersGroup?.PreviousVariation\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"mt-2 ms-2\">\r\n <span *ngIf=\"getCardGraphData?.potentialBuyers?.potentialBuyersGroup?.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n <span *ngIf=\"getCardGraphData?.potentialBuyers?.potentialBuyersGroup?.PreviousData !==0\" class=\"percent-value\">{{getCardGraphData?.potentialBuyers?.potentialBuyersGroup?.PreviousData ? getCardGraphData?.potentialBuyers?.potentialBuyersGroup?.PreviousData:'--'}}%</span>\r\n <span\r\n class=\"week-font\"> vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span *ngIf=\"dateType ==='weekly'\">week</span> <span *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n \r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-3 px-0\">\r\n <div class=\"card-body p-0\">\r\n <div class=\"text-center mt-7 mb-3\"><span class=\"left-card-count mt-2\">{{getCardData?.potentialBuyers?.potentialBuyersPersons?.count ? getCardData?.potentialBuyers?.potentialBuyersPersons?.count.toLocaleString('en-IN'):'--'}}</span> <span class=\"left-card-count-header ms-1\">Persons</span></div>\r\n <div class=\"text-center mb-3\"><span class=\"badge badge-light-default week-font\">{{getCardData?.potentialBuyers?.potentialBuyersSingle?.ageGroup ? getCardData.potentialBuyers?.potentialBuyersSingle?.ageGroup:'--'}} age</span>\r\n </div>\r\n \r\n </div>\r\n <div class=\"card-footer text-center p-0\">\r\n <div class=\"col-md-12\">\r\n <span class=\"mt-2 ms-2\"><span class=\"percent-value\"></span><span\r\n class=\"ms-2 week-font\"> Avg. Group size</span>\r\n \r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M6 12L10 8L6 4\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div> -->\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n\r\n </div>\r\n <div class=\"col-md-5\">\r\n <div class=\"card mb-3\">\r\n <div class=\"card-header border-0 pt-3 ps-5\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text\">Conversion Funnel \r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" \r\n placement=\"top\" \r\n ngbTooltip=\"Total opportunity of sales conversion versus total walkins\">\r\n <g clip-path=\"url(#clip0_1432_80035)\">\r\n <path d=\"M8.00065 10.6666V7.99992M8.00065 5.33325H8.00732M14.6673 7.99992C14.6673 11.6818 11.6826 14.6666 8.00065 14.6666C4.31875 14.6666 1.33398 11.6818 1.33398 7.99992C1.33398 4.31802 4.31875 1.33325 8.00065 1.33325C11.6826 1.33325 14.6673 4.31802 14.6673 7.99992Z\" stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1432_80035\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"text-sub mb-2\">{{headerData?.date?.startDate | date:'dd MMM, yyyy'}} \u2013 {{headerData?.date?.endDate | date:'dd MMM, yyyy'}}</span>\r\n </h3>\r\n \r\n </div>\r\n\r\n <div class=\"card-body p-0\" >\r\n <div *ngIf=\"heatloading\" class=\"row loader d-flex justify-content-center align-items-center h-275px\">\r\n <div class=\"shimmer pt-0\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"heatnoData\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this conversion funnel</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!heatloading && !heatnoData\" class=\"text-center mb-3\" id=\"chartdiv\"></div>\r\n </div>\r\n </div>\r\n \r\n <div *ngIf=\"mpaloading && storeIdarray?.length > 1 || mapnoData && storeIdarray?.length > 1 || !storeIdarray?.length\" class=\"card\">\r\n <div class=\"card-header border-0 pt-3 ps-7 pe-0\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text\" >Explore</span> \r\n </h3>\r\n \r\n </div>\r\n <div *ngIf=\"mpaloading\" class=\"row loader d-flex justify-content-center align-items-center h-225px\">\r\n <div class=\"shimmer pt-0\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"mapnoData\" class=\"row px-3\">\r\n <div class=\"col-md-12\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-map\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this Store map</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!mpaloading && !mapnoData && storeIdarray?.length > 1\" class=\"card\">\r\n <div class=\"card-header border-0 pt-3 ps-7 pe-0\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text\" >Explore</span> \r\n </h3>\r\n <div class=\"card-toolbar mt-0\">\r\n \r\n <button *ngIf=\"!mpaloading && !mapnoData\" type=\"button\" (click)=\"exporeView()\"\r\n class=\"btn me-8 btn-light-primary1 rounded-3 text-nowrap border-val\">\r\n <span class=\"ms-2\">Explore</span>\r\n </button>\r\n </div>\r\n \r\n </div>\r\n \r\n <div *ngIf=\"!mapnoData\" class=\"card-body col-md-12 pt-0 pb-5 ps-7\">\r\n <div id=\"map\" class=\"w-100\" ></div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"storeIdarray?.length === 1\" class=\"card pb-2\">\r\n <div class=\"card-header border-0 pt-3 ps-5 pe-0\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text\">Recap Video \r\n <svg placement=\"right\"\r\n ngbTooltip=\"A quick recap of the store activity along with the avg tech infrastructure downtime status\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1432_80035)\">\r\n <path d=\"M8.00065 10.6666V7.99992M8.00065 5.33325H8.00732M14.6673 7.99992C14.6673 11.6818 11.6826 14.6666 8.00065 14.6666C4.31875 14.6666 1.33398 11.6818 1.33398 7.99992C1.33398 4.31802 4.31875 1.33325 8.00065 1.33325C11.6826 1.33325 14.6673 4.31802 14.6673 7.99992Z\" stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1432_80035\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n \r\n \r\n </span>\r\n \r\n <span class=\"text-sub mb-2\">Dated: {{headerData?.date?.endDate | date:' dd MMM,yyyy'}}</span>\r\n </h3>\r\n <div class=\"card-toolbar mt-0\">\r\n <button type=\"button\" \r\n class=\"btn btn-default btn-outline btn-outline-default rounded-3 text-nowrap border-val text-start\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"14\" viewBox=\"0 0 16 14\" fill=\"none\">\r\n <g id=\"Group\">\r\n <path id=\"Vector\" d=\"M9.51953 0.333984C10.3958 0.333984 11.2331 0.513477 11.9974 0.838974C12.7904 1.17653 13.5039 1.67214 14.1016 2.28697C14.6979 2.90046 15.1797 3.6345 15.5078 4.45293C15.8242 5.23922 15.9987 6.10051 15.9987 7.00065C15.9987 7.90213 15.8242 8.76343 15.5078 9.54971C15.1797 10.3655 14.6979 11.0995 14.1003 11.7143C13.5039 12.3278 12.7904 12.8234 11.9948 13.161C11.2305 13.4865 10.3932 13.666 9.51823 13.666C8.64193 13.666 7.80469 13.4865 7.04036 13.161C6.2474 12.8234 5.53385 12.3278 4.9375 11.7143L4.9362 11.713C4.33854 11.0982 3.85807 10.3641 3.52995 9.54971C3.42839 9.29655 3.34115 9.03668 3.26953 8.77013C3.40495 8.78352 3.54297 8.79022 3.68229 8.79022C3.94661 8.79022 4.20443 8.76611 4.45573 8.71922C4.4974 8.84782 4.54297 8.97507 4.59245 9.09964C4.86198 9.76939 5.25781 10.3722 5.75 10.8785C6.24219 11.3848 6.82943 11.792 7.47917 12.0693C8.10547 12.3359 8.79427 12.4845 9.51823 12.4845C10.2422 12.4845 10.9297 12.3372 11.5573 12.0693C12.2083 11.792 12.7943 11.3848 13.2865 10.8785C13.7786 10.3722 14.1745 9.76805 14.444 9.09964C14.7031 8.45534 14.8477 7.74675 14.8477 7.00199C14.8477 6.25723 14.7044 5.54998 14.444 4.90434C14.1745 4.23459 13.7786 3.63182 13.2865 3.12549C12.7943 2.61916 12.207 2.21196 11.5573 1.93468C10.931 1.66812 10.2422 1.51944 9.51823 1.51944C8.79427 1.51944 8.10677 1.66678 7.47917 1.93468C7.42318 1.95879 7.36719 1.98424 7.3125 2.00969C7.09896 1.6641 6.84115 1.35066 6.54557 1.07874C6.70703 0.993016 6.8724 0.913986 7.04036 0.841653C7.80729 0.513477 8.64323 0.333984 9.51953 0.333984ZM8.77604 3.83141C8.77604 3.66799 8.84115 3.52064 8.94401 3.41348C9.04818 3.30632 9.19141 3.24069 9.35026 3.24069C9.50911 3.24069 9.65234 3.30632 9.75651 3.41348C9.86068 3.52064 9.92448 3.66799 9.92448 3.83141V6.94171L12.1836 8.32005C12.319 8.4031 12.4102 8.53571 12.4466 8.68172C12.4831 8.82772 12.4661 8.98846 12.3854 9.12777V9.12911C12.3047 9.26842 12.1758 9.36218 12.0339 9.39969C11.8919 9.43719 11.7357 9.41978 11.6003 9.33673H11.599L9.07161 7.79497C8.98438 7.74541 8.91276 7.67308 8.86068 7.58735C8.80729 7.4976 8.77604 7.39178 8.77604 7.27927V3.83141Z\" fill=\"#667085\"/>\r\n <path id=\"Vector_2\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M3.51302 0.687622C5.45312 0.687622 7.02604 2.30573 7.02604 4.30158C7.02604 6.29743 5.45312 7.91554 3.51302 7.91554C1.57292 7.91554 0 6.29743 0 4.30158C0 2.30573 1.57292 0.687622 3.51302 0.687622ZM3.51302 6.37378L5.39844 3.97608H4.22786V2.70088H2.79818V3.97608H1.6276L3.51302 6.37378Z\" fill=\"#F04438\"/>\r\n </g>\r\n </svg>\r\n <span class=\"ms-2\">{{getRecapVideoData?.downTime ?? '--'}} Mins</span>\r\n </button>\r\n <button type=\"button\" \r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\">\r\n <svg *ngIf=\"getRecapVideoData?.health ==='GOOD'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g id=\"Frame\">\r\n <path id=\"Vector\" d=\"M13.4349 2.5C14.8238 2.5 15.9871 3.01389 16.9249 4.04167C17.8627 5.06944 18.3313 6.29167 18.3307 7.70833C18.3307 7.95833 18.3168 8.205 18.2891 8.44833C18.2613 8.69167 18.2127 8.93111 18.1432 9.16667H12.9349L11.5182 7.04167C11.4488 6.93056 11.3516 6.84028 11.2266 6.77083C11.1016 6.70139 10.9696 6.66667 10.8307 6.66667C10.6502 6.66667 10.4868 6.72222 10.3407 6.83333C10.1946 6.94444 10.0941 7.08333 10.0391 7.25L8.91406 10.625L8.1849 9.54167C8.11545 9.43056 8.01823 9.34028 7.89323 9.27083C7.76823 9.20139 7.63628 9.16667 7.4974 9.16667H1.85156C1.78212 8.93056 1.73351 8.69083 1.70573 8.4475C1.67795 8.20417 1.66406 7.96472 1.66406 7.72917C1.66406 6.29861 2.12934 5.06944 3.0599 4.04167C3.99045 3.01389 5.15017 2.5 6.53906 2.5C7.20573 2.5 7.83434 2.63194 8.4249 2.89583C9.01545 3.15972 9.53962 3.52778 9.9974 4C10.4418 3.52778 10.9593 3.15972 11.5499 2.89583C12.1405 2.63194 12.7688 2.5 13.4349 2.5ZM9.9974 17.5C9.7474 17.5 9.50767 17.4547 9.27823 17.3642C9.04878 17.2736 8.84406 17.1383 8.66406 16.9583L3.08073 11.3542C2.9974 11.2708 2.92101 11.1875 2.85156 11.1042C2.78212 11.0208 2.71267 10.9306 2.64323 10.8333H7.03906L8.45573 12.9583C8.52517 13.0694 8.6224 13.1597 8.7474 13.2292C8.8724 13.2986 9.00434 13.3333 9.14323 13.3333C9.32378 13.3333 9.49045 13.2778 9.64323 13.1667C9.79601 13.0556 9.90017 12.9167 9.95573 12.75L11.0807 9.375L11.7891 10.4583C11.8724 10.5694 11.9766 10.6597 12.1016 10.7292C12.2266 10.7986 12.3585 10.8333 12.4974 10.8333H17.3307L17.1224 11.0833L16.9141 11.3333L11.3099 16.9583C11.1293 17.1389 10.928 17.2744 10.7057 17.365C10.4835 17.4556 10.2474 17.5006 9.9974 17.5Z\" fill=\"#12B76A\"/>\r\n </g>\r\n </svg>\r\n <svg *ngIf=\"getRecapVideoData?.health ==='AVERAGE'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g id=\"Frame\">\r\n <path id=\"Vector\" d=\"M13.4349 2.5C14.8238 2.5 15.9871 3.01389 16.9249 4.04167C17.8627 5.06944 18.3313 6.29167 18.3307 7.70833C18.3307 7.95833 18.3168 8.205 18.2891 8.44833C18.2613 8.69167 18.2127 8.93111 18.1432 9.16667H12.9349L11.5182 7.04167C11.4488 6.93056 11.3516 6.84028 11.2266 6.77083C11.1016 6.70139 10.9696 6.66667 10.8307 6.66667C10.6502 6.66667 10.4868 6.72222 10.3407 6.83333C10.1946 6.94444 10.0941 7.08333 10.0391 7.25L8.91406 10.625L8.1849 9.54167C8.11545 9.43056 8.01823 9.34028 7.89323 9.27083C7.76823 9.20139 7.63628 9.16667 7.4974 9.16667H1.85156C1.78212 8.93056 1.73351 8.69083 1.70573 8.4475C1.67795 8.20417 1.66406 7.96472 1.66406 7.72917C1.66406 6.29861 2.12934 5.06944 3.0599 4.04167C3.99045 3.01389 5.15017 2.5 6.53906 2.5C7.20573 2.5 7.83434 2.63194 8.4249 2.89583C9.01545 3.15972 9.53962 3.52778 9.9974 4C10.4418 3.52778 10.9593 3.15972 11.5499 2.89583C12.1405 2.63194 12.7688 2.5 13.4349 2.5ZM9.9974 17.5C9.7474 17.5 9.50767 17.4547 9.27823 17.3642C9.04878 17.2736 8.84406 17.1383 8.66406 16.9583L3.08073 11.3542C2.9974 11.2708 2.92101 11.1875 2.85156 11.1042C2.78212 11.0208 2.71267 10.9306 2.64323 10.8333H7.03906L8.45573 12.9583C8.52517 13.0694 8.6224 13.1597 8.7474 13.2292C8.8724 13.2986 9.00434 13.3333 9.14323 13.3333C9.32378 13.3333 9.49045 13.2778 9.64323 13.1667C9.79601 13.0556 9.90017 12.9167 9.95573 12.75L11.0807 9.375L11.7891 10.4583C11.8724 10.5694 11.9766 10.6597 12.1016 10.7292C12.2266 10.7986 12.3585 10.8333 12.4974 10.8333H17.3307L17.1224 11.0833L16.9141 11.3333L11.3099 16.9583C11.1293 17.1389 10.928 17.2744 10.7057 17.365C10.4835 17.4556 10.2474 17.5006 9.9974 17.5Z\" fill=\"#FACC15\"/>\r\n </g>\r\n </svg>\r\n <svg *ngIf=\"getRecapVideoData?.health ==='BAD'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g id=\"Frame\">\r\n <path id=\"Vector\" d=\"M13.4349 2.5C14.8238 2.5 15.9871 3.01389 16.9249 4.04167C17.8627 5.06944 18.3313 6.29167 18.3307 7.70833C18.3307 7.95833 18.3168 8.205 18.2891 8.44833C18.2613 8.69167 18.2127 8.93111 18.1432 9.16667H12.9349L11.5182 7.04167C11.4488 6.93056 11.3516 6.84028 11.2266 6.77083C11.1016 6.70139 10.9696 6.66667 10.8307 6.66667C10.6502 6.66667 10.4868 6.72222 10.3407 6.83333C10.1946 6.94444 10.0941 7.08333 10.0391 7.25L8.91406 10.625L8.1849 9.54167C8.11545 9.43056 8.01823 9.34028 7.89323 9.27083C7.76823 9.20139 7.63628 9.16667 7.4974 9.16667H1.85156C1.78212 8.93056 1.73351 8.69083 1.70573 8.4475C1.67795 8.20417 1.66406 7.96472 1.66406 7.72917C1.66406 6.29861 2.12934 5.06944 3.0599 4.04167C3.99045 3.01389 5.15017 2.5 6.53906 2.5C7.20573 2.5 7.83434 2.63194 8.4249 2.89583C9.01545 3.15972 9.53962 3.52778 9.9974 4C10.4418 3.52778 10.9593 3.15972 11.5499 2.89583C12.1405 2.63194 12.7688 2.5 13.4349 2.5ZM9.9974 17.5C9.7474 17.5 9.50767 17.4547 9.27823 17.3642C9.04878 17.2736 8.84406 17.1383 8.66406 16.9583L3.08073 11.3542C2.9974 11.2708 2.92101 11.1875 2.85156 11.1042C2.78212 11.0208 2.71267 10.9306 2.64323 10.8333H7.03906L8.45573 12.9583C8.52517 13.0694 8.6224 13.1597 8.7474 13.2292C8.8724 13.2986 9.00434 13.3333 9.14323 13.3333C9.32378 13.3333 9.49045 13.2778 9.64323 13.1667C9.79601 13.0556 9.90017 12.9167 9.95573 12.75L11.0807 9.375L11.7891 10.4583C11.8724 10.5694 11.9766 10.6597 12.1016 10.7292C12.2266 10.7986 12.3585 10.8333 12.4974 10.8333H17.3307L17.1224 11.0833L16.9141 11.3333L11.3099 16.9583C11.1293 17.1389 10.928 17.2744 10.7057 17.365C10.4835 17.4556 10.2474 17.5006 9.9974 17.5Z\" fill=\"#F04438\"/>\r\n </g>\r\n </svg>\r\n <span class=\"ms-2\">{{getRecapVideoData?.health ?? '--'}}</span>\r\n </button>\r\n <!-- <button type=\"button\" (click)=\"cameraView()\"\r\n class=\"btn mx-2 btn-light-primary1 rounded-3 text-nowrap border-val\">\r\n <span class=\"ms-2\">Live View</span>\r\n </button> -->\r\n </div>\r\n \r\n </div>\r\n <div *ngIf=\"recaplaoding\" class=\"row loader d-flex justify-content-center align-items-center h-225px\">\r\n <div class=\"shimmer pt-0\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"recapnoData\" class=\"row px-3\">\r\n <div class=\"col-md-12\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-map-recap\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this Recap video</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!recaplaoding && !recapnoData\" class=\"card-body p-0\">\r\n <div class=\"row mx-3\">\r\n \r\n <div class=\"carousel\">\r\n <div class=\"carousel-inner\">\r\n <div\r\n class=\"carousel-item\"\r\n *ngFor=\"let group of recapsGrouped; let i = index\"\r\n [class.active]=\"i === currentIndex\"\r\n >\r\n <div class=\"row\">\r\n <div *ngFor=\"let pair of group\" [ngClass]=\"colValue\">\r\n <img [src]=\"pair.thumbImage\"\r\n (click)=\"videoClick(pair)\"\r\n class=\"image-thumb mb-8 d-block w-100 cursor-pointer\"\r\n alt=\"Image {{ i + 1 }}\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <!-- Conditionally display Previous button -->\r\n <button class=\"carousel-control-prev\" *ngIf=\"currentIndex > 0\" (click)=\"prevSlide()\">\r\n <span class=\"carousel-control-prev-icon\"></span>\r\n </button>\r\n \r\n <!-- Conditionally display Next button -->\r\n <button class=\"carousel-control-next\" *ngIf=\"currentIndex < recapsGrouped.length - 1\" (click)=\"nextSlide()\">\r\n <span class=\"carousel-control-next-icon\"></span>\r\n </button>\r\n \r\n <!-- Navigation Dots -->\r\n <div *ngIf=\"recapsGrouped.length > 1\" class=\"row\">\r\n <ul class=\"carousel-indicators\">\r\n <li *ngFor=\"let group of recapsGrouped; let i = index\"\r\n [class.active]=\"i === currentIndex\"\r\n (click)=\"goToSlide(i)\">\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n </div>\r\n \r\n \r\n <!-- <video controls autoplay class=\"recap-img p-3\" [src]=\"getRecapData?.videoURL\"> -->\r\n <!-- <source type=\"video/mp4\"> -->\r\n <!-- <source [src]=\"getRecapData?.videoURL\" type=\"video/ogg\"> -->\r\n <!-- </video> -->\r\n <!-- <div #mapContainer style=\"height:230px;\"></div> -->\r\n <!-- <div class=\"col-md-6 mb-3\"><img src=\"assets/tango/Images/recap.svg\" alt=\"\" class=\"recap-img\"></div>\r\n <div class=\"col-md-6 mb-3\"><img src=\"assets/tango/Images/recap.svg\" alt=\"\" class=\"recap-img\"></div> -->\r\n\r\n </div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n <div class=\"col-md-12 mt-3\">\r\n <lib-traffic-charts class=\"my-2\"></lib-traffic-charts>\r\n \r\n <lib-traffic-card-charts *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" class=\"my-2\"></lib-traffic-card-charts>\r\n <lib-image-doc *ngIf=\"storeIdarray?.length === 1\" class=\"my-2\"></lib-image-doc>\r\n </div>\r\n <div *ngIf=\"storeIdarray?.length > 1\" class=\"col-md-6 mt-3\">\r\n <div class=\"card h-100\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text mb-2\">Performance Matrix\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" placement=\"right\"\r\n ngbTooltip=\"Store performance based on metrics selected\">\r\n <g clip-path=\"url(#clip0_1432_80035)\">\r\n <path\r\n d=\"M8.00065 10.6666V7.99992M8.00065 5.33325H8.00732M14.6673 7.99992C14.6673 11.6818 11.6826 14.6666 8.00065 14.6666C4.31875 14.6666 1.33398 11.6818 1.33398 7.99992C1.33398 4.31802 4.31875 1.33325 8.00065 1.33325C11.6826 1.33325 14.6673 4.31802 14.6673 7.99992Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1432_80035\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"text-sub mb-2\">{{headerData?.date?.startDate | date:'dd MMM, yyyy'}} \u2013 {{headerData?.date?.endDate | date:'dd MMM, yyyy'}}</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n \r\n </div>\r\n </div>\r\n <div class=\"row mx-3 align-items-center w-75\">\r\n <div class=\"d-flex align-items-center ms-3\">\r\n <select class=\"form-select-sm form-select me-2 dropselect\" [(ngModel)]=\"footfallValue\" (change)=\"onValueChange($event)\">\r\n <option *ngFor=\"let obj of getFilteredFootfallDatasets()\" [id]=\"obj.label\" [value]=\"obj.value\">{{obj.label}}</option>\r\n </select>\r\n <span class=\"mx-2\">Vs</span>\r\n <select class=\"form-select-sm form-select ms-2 dropselect\" [(ngModel)]=\"bounceValue\" (change)=\"onBounceChange($event)\">\r\n <option *ngFor=\"let obj of getFilteredBounceDatasets()\" [id]=\"obj.label\" [value]=\"obj.value\">{{obj.label}}</option>\r\n\r\n </select>\r\n </div>\r\n </div>\r\n <div *ngIf=\"performanceLoading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"performancenoData\" class=\"row\">\r\n <div class=\"col-lg-12 mt-20 mb-6\">\r\n <div class=\" mt-20 card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata-table\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this {{footfallLabel | titlecase}} vs {{bounceLabel | titlecase}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!performanceLoading && !performancenoData\" class=\"card-body\">\r\n \r\n <div class=\"quadrant-chart z-1\">\r\n <div class=\"axis-labels\">\r\n <!-- X Axis Label -->\r\n <div class=\"x-axis-label\">\r\n <span>{{bounceLabel | titlecase}} -></span>\r\n </div>\r\n <!-- Y Axis Label -->\r\n <div class=\"y-axis-label\">\r\n <span>{{footfallLabel | titlecase}} -></span>\r\n </div>\r\n </div>\r\n <!-- Top Left Quadrant -->\r\n <div class=\"quadrant\" id=\"q1\">\r\n <span class=\"label\">High <span *ngIf=\"footfallLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"footfallLabel !=='Bounced Footfall'\">{{footfallLabel | titlecase}}</span>, Low <span\r\n *ngIf=\"bounceLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"bounceLabel !=='Bounced Footfall'\">{{bounceLabel | titlecase}}</span></span>\r\n </div>\r\n \r\n <!-- Top Right Quadrant -->\r\n <div class=\"quadrant\" id=\"q2\">\r\n <span class=\"label\">High <span *ngIf=\"footfallLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"footfallLabel !=='Bounced Footfall'\">{{footfallLabel | titlecase}}</span>, High <span\r\n *ngIf=\"bounceLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"bounceLabel !=='Bounced Footfall'\">{{bounceLabel | titlecase}}</span></span>\r\n </div>\r\n \r\n <!-- Bottom Left Quadrant -->\r\n <div class=\"quadrant\" id=\"q3\">\r\n <span class=\"label\">Low <span *ngIf=\"footfallLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"footfallLabel !=='Bounced Footfall'\">{{footfallLabel | titlecase}}</span>, Low <span\r\n *ngIf=\"bounceLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"bounceLabel !=='Bounced Footfall'\">{{bounceLabel | titlecase}}</span></span>\r\n </div>\r\n \r\n <!-- Bottom Right Quadrant -->\r\n <div class=\"quadrant\" id=\"q4\">\r\n <span class=\"label\">Low <span *ngIf=\"footfallLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"footfallLabel !=='Bounced Footfall'\">{{footfallLabel | titlecase}}</span>, High <span\r\n *ngIf=\"bounceLabel==='Bounced Footfall'\">Bounce</span><span\r\n *ngIf=\"bounceLabel !=='Bounced Footfall'\">{{bounceLabel| titlecase}}</span></span>\r\n </div>\r\n <div *ngFor=\"let point of points\" class=\"point\" [ngStyle]=\"{'top': point.top + '%', 'left': point.left + '%'}\">\r\n <div class=\"text-center\" (click)=\"toggleTooltip(point.name)\">\r\n <div class=\"dot\" ></div>\r\n <!-- Clickable label that toggles the tooltip -->\r\n <div class=\"label z-1 mt-4\" style=\"font-size: 10px !important;\" >\r\n {{ point.name }}\r\n </div>\r\n </div>\r\n <!-- Custom Tooltip Popup -->\r\n <div class=\"tooltip-popup z-5\" *ngIf=\"activeTooltip === point.name\">\r\n <div class=\"tooltip-content\">\r\n <h3 class=\"text-white cursor-pointer\" (click)=\"storeView(point.storeId)\">{{ point.name }}</h3>\r\n <p>Avg {{footfallLabel | titlecase}}: {{ point.avgFootfall }}</p>\r\n <p class=\"my-2\">Open Time: <strong>{{ point.openTime }}</strong></p>\r\n <p>Close Time: <strong>{{ point.closeTime }}</strong></p>\r\n </div>\r\n <div class=\"tooltip-arrow\"></div>\r\n </div>\r\n </div>\r\n <!-- Add more points here -->\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"storeIdarray?.length > 1\" class=\"col-md-6 mt-3\">\r\n <div class=\"card\">\r\n <div class=\"card-header px-5 border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text mb-2\">Zone Dwell Time Split \r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"\r\n placement=\"right\"\r\n ngbTooltip=\"Overall zone concentration and average dwell time across selected stores\">\r\n <g clip-path=\"url(#clip0_1432_80035)\">\r\n <path\r\n d=\"M8.00065 10.6666V7.99992M8.00065 5.33325H8.00732M14.6673 7.99992C14.6673 11.6818 11.6826 14.6666 8.00065 14.6666C4.31875 14.6666 1.33398 11.6818 1.33398 7.99992C1.33398 4.31802 4.31875 1.33325 8.00065 1.33325C11.6826 1.33325 14.6673 4.31802 14.6673 7.99992Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1432_80035\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"text-sub mb-2\">{{headerData?.date?.startDate | date:'dd MMM, yyyy'}} \u2013 {{headerData?.date?.endDate | date:'dd MMM, yyyy'}}</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <button type=\"button\" (click)=\"goToZone()\"\r\n class=\"btn btn-light-primary1 rounded-3 text-nowrap border-val\">\r\n <span class=\"ms-2\">Go to Zones</span>\r\n </button>\r\n \r\n </div>\r\n </div>\r\n <div calss=\"card-body\">\r\n <div class=\"image-container position-relative\">\r\n <img src=\"assets/tango/Images/zone-img.svg\" alt=\"Store Layout\" class=\"px-5 img-src my-3 background-image\" />\r\n <!-- <img *ngIf=\"zoneDwellTimeSplitData[0]?.zoneName ==='Overall Store'\" src=\"assets/tango/Images/zone-img1.svg\" alt=\"Store Layout\" class=\"px-5 img-src my-3 background-image\" /> -->\r\n <!-- <div class=\"centered\">Centered</div> -->\r\n <!-- <div class=\"overlay-content\" *ngFor=\"let point of zoneDwellTimeSplitData\"> -->\r\n <div *ngIf=\"zoneDwellTimeSplitData[0]?.zoneName !=='Overall Store'\" class=\"top-zone\">\r\n <div class=\"text-center text-zone\">{{zoneDwellTimeSplitData[0]?.zoneName ? zoneDwellTimeSplitData[0]?.zoneName :'Front'}}</div>\r\n <span class=\"text-zone-val\"> Conc: {{ zoneDwellTimeSplitData[0]?.concentrationRate ? zoneDwellTimeSplitData[0]?.concentrationRate:'--' }}% </span>\r\n <span class=\"text-zone-val\">Dwell time: {{ zoneDwellTimeSplitData[0]?.dwellTime ? zoneDwellTimeSplitData[0]?.dwellTime :'--' }} Mins</span>\r\n </div>\r\n <div *ngIf=\"zoneDwellTimeSplitData[0]?.zoneName ==='Overall Store'\" class=\"centered-zone\">\r\n <div class=\"text-center text-zone\">{{zoneDwellTimeSplitData[0]?.zoneName ? zoneDwellTimeSplitData[0]?.zoneName :'Front'}}</div>\r\n <span class=\"text-zone-val\"> Conc: {{ zoneDwellTimeSplitData[0]?.concentrationRate ? zoneDwellTimeSplitData[0]?.concentrationRate:'--' }}% </span>\r\n <span class=\"text-zone-val\">Dwell time: {{ zoneDwellTimeSplitData[0]?.dwellTime ? zoneDwellTimeSplitData[0]?.dwellTime:'--' }} Mins</span>\r\n </div>\r\n <div *ngIf=\"zoneDwellTimeSplitData[0]?.zoneName !=='Overall Store'\" class=\"bottom-zone \">\r\n <div class=\"text-center text-zone\">{{zoneDwellTimeSplitData[1]?.zoneName ? zoneDwellTimeSplitData[2]?.zoneName : 'Back'}}</div>\r\n <span class=\"text-zone-val\"> Conc: {{ zoneDwellTimeSplitData[1]?.concentrationRate ? zoneDwellTimeSplitData[2]?.concentrationRate:'--' }}% </span>\r\n <span class=\"text-zone-val\">Dwell time: {{ zoneDwellTimeSplitData[1]?.dwellTime ? zoneDwellTimeSplitData[2]?.dwellTime:'--'}} Mins</span>\r\n </div>\r\n <!-- </div> -->\r\n </div>\r\n <!-- <img class=\"px-5 img-src mb-3\" src=\"assets/tango/Images/zone-img.svg\" alt=\"\"> -->\r\n </div>\r\n <div class=\"card-header px-5 border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text mb-2\">Store Operations\r\n <span > \r\n <svg ngbTooltip=\"Avg store open & close time across the selected stores\" placement=\"top\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" >\r\n <g clip-path=\"url(#clip0_1432_80035)\">\r\n <path\r\n d=\"M8.00065 10.6666V7.99992M8.00065 5.33325H8.00732M14.6673 7.99992C14.6673 11.6818 11.6826 14.6666 8.00065 14.6666C4.31875 14.6666 1.33398 11.6818 1.33398 7.99992C1.33398 4.31802 4.31875 1.33325 8.00065 1.33325C11.6826 1.33325 14.6673 4.31802 14.6673 7.99992Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1432_80035\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </span>\r\n <span class=\"text-sub mb-2\">{{headerData?.date?.startDate | date:'dd MMM, yyyy'}} \u2013 {{headerData?.date?.endDate | date:'dd MMM, yyyy'}}</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <!-- <button type=\"button\"\r\n class=\"btn btn-light-primary1 rounded-3 text-nowrap border-val\">\r\n <span class=\"ms-2\">Go to Trax</span>\r\n </button> -->\r\n </div>\r\n </div>\r\n <div class=\"card-body\">\r\n <div class=\"row\">\r\n <div class=\"col-md-3 text-center mb-3\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\"><!--{{getCardData?.revenue?.value ?? '--'}} -->\r\n <div class=\"my-2\"> <span class=\"left-card-count-title\">{{storeOperationData?.overall?.avgOpenTime\r\n ?storeOperationData?.overall?.avgOpenTime:'--' }}</span></div>\r\n <div class=\"\"><span class=\"sub-header\">Avg. Open Time</span></div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n <div class=\"col-md-6 mt-5 mb-3\">\r\n <svg width=\"326\" height=\"2\" viewBox=\"0 0 326 2\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <line y1=\"0.75\" x2=\"356\" y2=\"0.75\" stroke=\"#D0D5DD\" />\r\n </svg>\r\n </div>\r\n <div class=\"col-md-3 text-center mb-3\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\"><!--{{getCardData?.revenue?.value ?? '--'}} -->\r\n <div class=\"my-2\"> <span class=\"left-card-count-title\">{{storeOperationData?.overall?.avgCloseTime\r\n ?storeOperationData?.overall?.avgCloseTime:'--' }}</span></div>\r\n <div class=\"\"><span class=\"sub-header\">Avg. Close Time</span></div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n <div class=\"col-md-6 mt-3\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"left-card-count-header1 text-decoration-underline cursor-pointer\" (click)=\"storeView(storeOperationData?.topLateOpen?.storeId)\">{{storeOperationData?.topLateOpen?.storeName ?\r\n storeOperationData?.topLateOpen?.storeName :'--'}}</span>\r\n <span class=\"sub-header mt-2\">Top Late Open</span>\r\n </h3>\r\n </div>\r\n <div class=\"card-body p-0 h-75px mt-3 mx-3\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\"><!--{{getCardData?.revenue?.value ?? '--'}} -->\r\n <div class=\"my-1\"> <span\r\n class=\"left-card-count-header1\">{{storeOperationData?.topLateOpen?.avgStoreOpenTime\r\n ?storeOperationData?.topLateOpen?.avgStoreOpenTime:'--' }}</span></div>\r\n <span class=\"sub-header\">Avg. Store Opening Time</span>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n <div class=\"col-md-6 mt-3\">\r\n <div class=\"card card-border h-100\">\r\n <div class=\"card-header ellipse1 border-0 px-3\">\r\n <h3 class=\"card-title align-items-start flex-column \">\r\n <span class=\"left-card-count-header1 text-decoration-underline cursor-pointer\" (click)=\"storeView(storeOperationData?.topEarlyClose?.storeId)\">{{storeOperationData?.topEarlyClose?.storeName ?\r\n storeOperationData?.topEarlyClose?.storeName :'--'}}</span>\r\n <span class=\"sub-header mt-2\">Top Early Close</span>\r\n </h3>\r\n </div>\r\n <div class=\"card-body p-0 h-75px mt-3 mx-3\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\"><!--{{getCardData?.revenue?.value ?? '--'}} -->\r\n <div class=\"my-1\"> <span\r\n class=\"left-card-count-header1\">{{storeOperationData?.topEarlyClose?.avgStoreCloseTime\r\n ?storeOperationData?.topEarlyClose?.avgStoreCloseTime:'--' }}</span></div>\r\n <span class=\"sub-header\">Avg. Store Closing Time</span>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 mt-3\">\r\n <div class=\"card mb-5\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text mb-2\">Summary Table</span>\r\n <span class=\"text-sub mb-2\">{{headerData?.date?.startDate | date:'dd MMM, yyyy'}} \u2013 {{headerData?.date?.endDate | date:'dd MMM, yyyy'}}</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input (change)=\"searchData()\" [(ngModel)]=\"searchValue\" type=\"text\" class=\"form-control ps-14 me-2\" autocomplete=\"off\" placeholder=\"Search\" />\r\n <!-- filter Start -->\r\n <!-- <lib-filters [dataObject]=\"dataObject\" (appliedFilters)=\"applyFilters($event)\"></lib-filters> -->\r\n <!-- filter End -->\r\n <!-- Sum Button -->\r\n <section *ngIf=\"(storeIdarray?.length > 1 && headerData?.date?.startDate != headerData?.date?.endDate) && !noData && !loading\">\r\n <button type=\"button\" (click)=\"onValueType('sum')\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"\r\n [ngClass]=\"{'btn-light btn-primary text-white': typeValue === 'sum'}\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n [ngStyle]=\"{'stroke': typeValue === 'sum' ? '#FFFFFF' : '#344054'}\">\r\n <path d=\"M9.99935 4.16675V15.8334M4.16602 10.0001H15.8327\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"ms-2\" [ngClass]=\"{'text-white': typeValue === 'sum'}\">Sum</span>\r\n </button>\r\n </section>\r\n \r\n<!-- Average Button -->\r\n <section *ngIf=\"(storeIdarray?.length > 1 && headerData?.date?.startDate != headerData?.date?.endDate) && !noData && !loading\">\r\n<button type=\"button\" (click)=\"onValueType('average')\"\r\nclass=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"\r\n[ngClass]=\"{'btn-light btn-primary text-white': typeValue === 'average'}\">\r\n<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\r\n [ngStyle]=\"{'stroke': typeValue === 'average' ? '#FFFFFF' : '#101828'}\">\r\n <path d=\"M17.5 17.5H8.33333C5.58333 17.5 4.20833 17.5 3.35417 16.6458C2.5 15.7917 2.5 14.4167 2.5 11.6667V2.5M5 10H5.0075M7.49917 10H7.50583M9.9975 10H10.0042M12.4958 10H12.5033M14.9942 10H15.0017M17.4925 10H17.5\"\r\n stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M5 5.83341C5.56083 4.89841 6.3225 4.16675 7.49417 4.16675C12.4467 4.16675 9.6625 14.1667 14.985 14.1667C16.165 14.1667 16.9217 13.4301 17.5 12.5001\"\r\n stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n</svg>\r\n<span class=\"ms-2\" [ngClass]=\"{'text-white': typeValue === 'average'}\">Average</span>\r\n</button>\r\n</section>\r\n \r\n <button *ngIf=\"!noData && !loading\" type=\"button\" (click)=\"exportXLSX()\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Export</span> </button>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"noData\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata-table\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this summary table</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!noData && !loading\" calss=\"card-body\">\r\n <div class=\"table-responsive\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('storeName')\">Store Name <svg \r\n [ngClass]=\"sortedColumn === 'storeName' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'storeName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('storeId')\">Store ID <svg [ngClass]=\"sortedColumn === 'storeId' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'storeId' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th *ngIf=\"storeIdarray?.length === 1\" class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('date')\">Date <svg [ngClass]=\"sortedColumn === 'date' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'date' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('footfallCount')\">Footfall <svg [ngClass]=\"sortedColumn === 'footfallCount' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'footfallCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('bouncedCount')\">Bounced Footfall<svg [ngClass]=\"sortedColumn === 'bouncedCount' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'bouncedCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('engagersCount')\">Engagers <svg [ngClass]=\"sortedColumn === 'engagersCount' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'engagersCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('missedOpportunityCount')\">Missed Opportunity<svg [ngClass]=\"sortedColumn === 'missedOpportunityCount' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'missedOpportunityCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('potentialBuyersCount')\">Potential Buyers <svg [ngClass]=\"sortedColumn === 'potentialBuyersCount' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'potentialBuyersCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('conversionRate')\">Conversion Rate <svg [ngClass]=\"sortedColumn === 'conversionRate' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'conversionRate' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('avgDwellTime')\">Avg.Dwell Time <svg [ngClass]=\"sortedColumn === 'avgDwellTime' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'avgDwellTime' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('avgInfraDowntime')\">Avg.Infra DownTime <svg [ngClass]=\"sortedColumn === 'avgInfraDowntime' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'avgInfraDowntime' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('below12')\">Below12 <svg [ngClass]=\"sortedColumn === 'below12' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'below12' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('13-19')\">13-19 <svg [ngClass]=\"sortedColumn === '13-19' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === '13-19' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('20-30')\">20-30 <svg [ngClass]=\"sortedColumn === '20-30' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === '20-30' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('31-45')\">31-45 <svg [ngClass]=\"sortedColumn === '31-45' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === '31-45' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('46-59')\">46-59 <svg [ngClass]=\"sortedColumn === '46-59' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === '46-59' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('60 above')\">60 above <svg [ngClass]=\"sortedColumn === '60 above' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === '60 above' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('male')\">Male <svg [ngClass]=\"sortedColumn === 'male' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'male' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"cursor-pointer\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('female')\">Female <svg \r\n [ngClass]=\"sortedColumn === 'female' && sortDirection === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'female' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let obj of getSummaryTableData;let i=index;\">\r\n <!-- (click)=\"storeView(obj)\" -->\r\n <td class=\"text-primary text-capitalize text-decoration-underline cursor-pointer\" (click)=\"storeView(obj.storeId)\">{{obj.storeName}}</td>\r\n <td>{{obj.storeId}}</td>\r\n <td *ngIf=\"obj?.date\">{{obj?.date | date:'MMM dd, yyyy'}}</td>\r\n <td>{{obj.footfallCount}}</td>\r\n <td>{{obj.bouncedCount}}</td>\r\n <td>{{obj.engagersCount}}</td>\r\n <td>{{obj.missedOpportunityCount}}</td>\r\n <td>{{obj.potentialBuyersCount}}</td>\r\n <td>{{obj.conversionRate}}</td>\r\n <td>{{obj.avgDwellTime}}</td>\r\n <td>{{obj.avgInfraDowntime}}</td>\r\n <td>{{obj.below12}}</td>\r\n <td>{{obj['13-19']}}</td>\r\n <td>{{obj['20-30']}}</td>\r\n <td>{{obj['31-45']}}</td>\r\n <td>{{obj[\"46-59\"]}}</td>\r\n <td>{{obj[\"60 above\"]}}</td>\r\n <td>{{obj.male}}</td>\r\n <td>{{obj.female}}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <lib-pagination [itemsPerPage]=\"pageSize\" [currentPage]=\"offset\" [totalItems]=\"totalItems\"\r\n [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\" (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n", styles: ["#Footfall,#BouncedRate,#PotentialBuyers,#engagers{width:100%;height:100px}#chartdiv{width:100%;height:225px}.ellipse1{border-radius:6px;border-bottom:2px solid var(--Gray-200, #EAECF0);background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d}.card-border{padding:8px;border-radius:12px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF)}.card-footer{border-top:none!important}.percent-value{color:var(--Gray-500, #667085)!important;text-align:center;font-size:16px;font-style:normal;font-weight:600;line-height:18px}.week-font{color:var(--Gray-800, #1D2939)!important;font-size:12px;font-style:normal;font-weight:400;line-height:18px}.card-header,.header{color:var(--Gray-900, #101828);font-size:20px!important;font-style:normal;font-weight:700;line-height:30px}.sub-header{color:var(--Gray-700, #344054);font-size:14px!important;font-style:normal;font-weight:500;line-height:20px}.img-src{width:100%}.img-src1{width:100%;min-height:227px!important;max-height:auto!important}.recap-img{width:100%;height:250px}.activePlanBtn{border-radius:6px;background:var(--Primary-50, #EAF8FF);color:var(--Gray-700, #344054);font-size:14px!important;font-weight:500!important;line-height:20px}.inactivePlanBtn{color:var(--Gray-500, #667085)!important;font-size:14px;font-weight:500!important;line-height:20px}.trax-bg{border-radius:12px!important;background:var(--Gray-100, #F2F4F7)!important}.left-card-count{color:var(--Gray-900, #101828);font-size:18px!important;font-style:normal;font-weight:600;line-height:28px}.left-card-count-header{color:var(--Gray-900, #101828)!important;font-size:14px!important;font-style:normal;font-weight:400;line-height:18px}.left-card-count-header1{color:var(--Gray-900, #101828)!important;font-size:20px!important;font-style:normal;font-weight:700;line-height:30px}.left-card-count-title{color:var(--Gray-700, #344054)!important;font-size:16px!important;font-style:normal;font-weight:700;line-height:24px}.quadrant-chart{position:relative;width:100%;height:500px;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;border:2px solid #ddd}.quadrant{position:relative;border:1px solid #ddd;display:flex;justify-content:center;align-items:center;padding:20px}#q1,#q2{align-items:flex-start}#q3,#q4{align-items:flex-end}.label{color:#000;font-size:12.723px;font-style:normal;font-weight:600;line-height:19.791px;text-align:center}@media (max-width: 768px){.quadrant-chart{width:100%;height:auto}.point{font-size:10px}}.quadrant-chart{position:relative;width:100%;height:100%}.point{position:absolute;display:flex;align-items:center;color:#000;font-size:9px;font-style:normal;font-weight:500;line-height:12px}.axis-labels{position:absolute;width:100%;height:100%;top:0;left:0;display:flex;justify-content:space-between;align-items:center;pointer-events:none}.x-axis-label{position:absolute;bottom:-25px;left:10%;transform:translate(-50%);color:#000;font-size:12.723px;font-style:normal;font-weight:400;line-height:19.791px}.y-axis-label{position:absolute;top:95%;left:-15px;transform:translateY(-50%) rotate(270deg);transform-origin:left center;white-space:nowrap;color:#000;font-size:12.723px;font-style:normal;font-weight:400;line-height:19.791px}.label{cursor:pointer;margin-right:10px}.tooltip-popup{position:absolute;background:var(--gradient-primary-800700265-deg, linear-gradient(27deg, #0082CC 8.33%, #0093E6 91.67%));color:#fff;padding:10px;left:-55px;top:-165px;border:20px solid #fff;border-radius:8px;z-index:1000!important;width:230px;box-shadow:0 4px 8px #0003}.tooltip-content{font-size:13px}.tooltip-popup h3{margin:0;font-size:16px}.tooltip-popup p{margin:10px 0}.tooltip-popup strong{font-weight:700}.tooltip-arrow{position:absolute;bottom:-9px;left:50%;margin-left:-10px;width:0;height:0;border-left:10px solid transparent;border-right:10px solid transparent;border-top:10px solid #0082CC}.border-val{color:var(--Gray-700, #344054)!important;font-family:Inter;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}.table-title-primary{color:var(--Primary-700, #009BF3)!important;font-weight:500!important}.table-sub{line-height:30px!important;color:var(--Gray-500, #667085)!important;font-size:12px!important;font-weight:400!important}table td{line-height:40px!important}.dot{height:12px;width:12px;background-color:#4eb3ed;border-radius:50%;margin-right:5px;z-index:1;position:absolute;left:50%;transform:translate(-50%)}.custom-dropdown{position:relative}.custom-dropdown button{width:100%;background-color:#f8f9fa;border:1px solid #ced4da;border-radius:.25rem;padding:.375rem}.custom-dropdown .dropdown-list{position:absolute;width:100%;background-color:#fff;border:1px solid #ced4da;margin-top:.25rem;list-style:none;padding:0}.custom-dropdown .dropdown-list li{padding:.5rem;cursor:pointer}.custom-dropdown .dropdown-list li.selected{background-color:#007bff;color:#fff}.chart-legend-item-minus{display:none}.img-nodata{width:29%;height:20%}.img-nodata-table{width:25%;height:20%}.text-primary{color:#009bf3!important}.loader-img{width:1%}.img-nodata1{width:25%;height:15%}.nodata-title1{font-size:12px!important;font-weight:600}.btn-light-primary1{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-style:normal;font-weight:600!important;line-height:18px;text-transform:capitalize;border-radius:8px!important;border:1px solid var(--Primary-50, #EAF8FF)!important;background:var(--Primary-50, #EAF8FF)!important;box-shadow:0 1px 2px #1018280d!important}.rotate{rotate:180deg;transition:1s}:host::ng-deep .map-container{width:100%!important;position:relative;overflow:hidden}.img-map{width:45.5%;height:20%}.img-map-recap{width:43%;height:20%}#map{height:262px}@media (min-width: 1390px) and (max-width: 1534px){.img-map{width:52%;height:20%}.img-map-recap{width:48.5%;height:20%}.img-nodata{width:38%;height:20%}#map{height:241px}.fs-5{font-size:.9rem!important}}@media (min-width: 1700px) and (max-width: 1919px){.img-map{width:39%;height:20%}.img-map-recap{width:37%;height:20%}.img-nodata{width:30%;height:20%}#chartdiv{width:100%;height:229px}#map{height:255px}}@media (min-width: 1920px) and (max-width: 2119px){.img-map{width:37%;height:20%}.img-map-recap{width:35%;height:20%}.img-nodata{width:28%;height:20%}#chartdiv{width:100%;height:215px}#map{height:262px}}.image-container{position:relative;width:100%;max-width:1000px;margin:0 auto}.background-image{width:100%;height:auto}.overlay-content{position:absolute;background-color:#0009;color:#fff;padding:5px;border-radius:3px;text-align:center;white-space:nowrap}.centered-zone{position:absolute;top:54%;left:50%;transform:translate(-50%)}.top-zone{position:absolute;top:67%;left:50%;transform:translate(-50%)}.bottom-zone{position:absolute;top:39%;left:50%;transform:translate(-50%)}.text-zone-val{color:var(--Black, #101828)!important;font-size:12px!important;font-style:normal;font-weight:700;line-height:18px}.text-zone{color:var(--Black, #101828)!important;text-align:center;font-size:12px!important;font-style:normal;font-weight:400;line-height:18px}.card-title .card-label{color:var(--Gray-900, #101828)!important;font-family:Inter;font-size:24px!important;font-weight:700!important;line-height:30px}.form-check-label{color:var(--Gray-500, #667085);text-align:center;font-size:12px;font-weight:500;line-height:18px}.title-text{color:var(--Gray-900, #101828)!important;font-size:16px!important;font-weight:600!important;line-height:24px}.left-50{left:47%;top:12%}.end-0{top:16%;left:97%}.carousel{position:relative}.carousel-item{display:none;transition:opacity .5s}.carousel-item.active{display:block;opacity:1}.carousel-control-prev,.carousel-control-next{position:absolute;top:50%;transform:translateY(-50%);border:none;padding:10px;cursor:pointer}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-indicators{position:absolute;left:35%;transform:translate(-50%);gap:10px}.carousel-indicators li{list-style:none!important;width:10px;height:10px;background-color:#ddd;border-radius:50%;cursor:pointer;transition:background-color .3s}.carousel-indicators li.active{background-color:#007bff}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:25rem!important;height:25rem!important;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.image-thumb{height:240px;border-radius:8px}.dropselect{color:var(--Gray-500, #344054);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:18px;white-space:nowrap}.nodata-title{font-size:14px!important;font-weight:600}.carousel-control-prev-icon,.carousel-control-next-icon{color:#fff!important}.footimg-nodata1{width:30%;height:66%}.tooltip-content{max-width:200px}.tooltip-title{font-weight:700;margin-bottom:10px}.tooltip-footer{margin-top:10px;font-size:.8em;color:gray}\n"] }]
|
|
1313
1313
|
}], ctorParameters: () => [{ type: i0.NgZone }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.Router }, { type: i2.ExcelService }, { type: i3.TrafficService }, { type: i4.GlobalStateService }, { type: i0.ChangeDetectorRef }, { type: i5.ToastService }, { type: i6.NgbModal }], propDecorators: { handleClickOutside: [{
|
|
1314
1314
|
type: HostListener,
|
|
1315
1315
|
args: ['document:click', ['$event']]
|
|
@@ -1328,4 +1328,4 @@ function getDaysBetweenDates(fromDate, toDate) {
|
|
|
1328
1328
|
const differenceInDays = Math.floor(differenceInMs / millisecondsPerDay);
|
|
1329
1329
|
return differenceInDays;
|
|
1330
1330
|
}
|
|
1331
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhZmZpYy1hbmFseXNpcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYWZmaWMvc3JjL2xpYi9jb21wb25lbnRzL3RyYWZmaWMtYW5hbHlzaXMvdHJhZmZpYy1hbmFseXNpcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYWZmaWMvc3JjL2xpYi9jb21wb25lbnRzL3RyYWZmaWMtYW5hbHlzaXMvdHJhZmZpYy1hbmFseXNpcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQU1ULFNBQVMsRUFFVCxZQUFZLEVBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxLQUFLLEdBQUcsTUFBTSxxQkFBcUIsQ0FBQztBQUMzQyxPQUFPLEtBQUssS0FBSyxNQUFNLHdCQUF3QixDQUFDO0FBQ2hELE9BQU8sa0JBQWtCLE1BQU0scUNBQXFDLENBQUM7QUFDckUsT0FBTyxvQkFBb0IsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6RSxPQUFPLEtBQUssVUFBVSxNQUFNLDZCQUE2QixDQUFDO0FBRTFELE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRzFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc5QyxPQUFPLEtBQUssUUFBUSxNQUFNLFdBQVcsQ0FBQztBQUV0QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEtBQUssU0FBUyxNQUFNLFdBQVcsQ0FBQzs7Ozs7Ozs7Ozs7OztBQU92QyxNQUFNLE9BQU8sd0JBQXdCO0lBK0Z6QjtJQUNBO0lBQ0E7SUFBNEI7SUFBc0I7SUFDbEQ7SUFBK0I7SUFDL0I7SUFBOEI7SUFBNEI7SUFsRzVELFFBQVEs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QyxhQUFhLENBQUMsTUFBTSxFQUFFO1lBQ25ELElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1NBQzNCO0lBQ0gsQ0FBQzt3R0F6MkNVLHdCQUF3Qjs0RkFBeEIsd0JBQXdCLG1PQ2pDckMsZzNuS0Fpc0RBOzs0RkRocURhLHdCQUF3QjtrQkFMcEMsU0FBUzsrQkFDRSxzQkFBc0I7NFRBK0RoQyxrQkFBa0I7c0JBRGpCLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBNkNQLE9BQU87c0JBQXpDLFNBQVM7dUJBQUMsR0FBRyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTs7QUE0d0NuQyxTQUFTLG1CQUFtQixDQUFDLFFBQWdCLEVBQUUsTUFBYztJQUMzRCwyQ0FBMkM7SUFDM0MsTUFBTSxLQUFLLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDakMsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFN0IsMkNBQTJDO0lBQzNDLE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7SUFFdkQsK0RBQStEO0lBQy9ELE1BQU0sa0JBQWtCLEdBQUcsUUFBUSxDQUFDO0lBQ3BDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEdBQUcsa0JBQWtCLENBQUMsQ0FBQztJQUV6RSxPQUFPLGdCQUFnQixDQUFDO0FBQzFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBPbkluaXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE5nWm9uZSxcclxuICBFbGVtZW50UmVmLFxyXG4gIFJlbmRlcmVyMixcclxuICBWaWV3Q2hpbGQsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgSG9zdExpc3RlbmVyLCBBZnRlclZpZXdJbml0XHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0ICogYXMgYW01IGZyb20gXCJAYW1jaGFydHMvYW1jaGFydHM1XCI7XHJcbmltcG9ydCAqIGFzIGFtNXh5IGZyb20gXCJAYW1jaGFydHMvYW1jaGFydHM1L3h5XCI7XHJcbmltcG9ydCBhbTV0aGVtZXNfQW5pbWF0ZWQgZnJvbSBcIkBhbWNoYXJ0cy9hbWNoYXJ0czUvdGhlbWVzL0FuaW1hdGVkXCI7XHJcbmltcG9ydCBhbTV0aGVtZXNfUmVzcG9uc2l2ZSBmcm9tIFwiQGFtY2hhcnRzL2FtY2hhcnRzNS90aGVtZXMvUmVzcG9uc2l2ZVwiO1xyXG5pbXBvcnQgKiBhcyBhbTVwZXJjZW50IGZyb20gXCJAYW1jaGFydHMvYW1jaGFydHM1L3BlcmNlbnRcIjtcclxuaW1wb3J0IHsgVHJhZmZpY1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvdHJhZmZpYy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IE5nYk1vZGFsLCBOZ2JUb29sdGlwIH0gZnJvbSBcIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwXCI7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSB9IGZyb20gXCJ0YW5nby1hcHAtdWktZ2xvYmFsXCI7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBFeGNlbFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvZXhjZWwuc2VydmljZVwiO1xyXG5pbXBvcnQgKiBhcyBtYXBib3hnbCBmcm9tICdtYXBib3gtZ2wnO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tIFwidGFuZ28tYXBwLXVpLXNoYXJlZFwiO1xyXG5pbXBvcnQgeyBWaWRlb1VybENvbXBvbmVudCB9IGZyb20gXCIuLi92aWRlby11cmwvdmlkZW8tdXJsLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgKiBhcyBib290c3RyYXAgZnJvbSBcImJvb3RzdHJhcFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwibGliLXRyYWZmaWMtYW5hbHlzaXNcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3RyYWZmaWMtYW5hbHlzaXMuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybDogXCIuL3RyYWZmaWMtYW5hbHlzaXMuY29tcG9uZW50LnNjc3NcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIFRyYWZmaWNBbmFseXNpc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcclxuICBwcml2YXRlIGxpbmVyb290OiBhbTUuUm9vdDtcclxuICBwcml2YXRlIGJvdW5jZWRsaW5lcm9vdDogYW01LlJvb3Q7XHJcbiAgcHJpdmF0ZSBwb3RlbnRpYWxCdXllcnNsaW5lcm9vdDogYW01LlJvb3Q7XHJcbiAgcHJpdmF0ZSBlbmdhZ2Vyc2xpbmVyb290OiBhbTUuUm9vdDtcclxuICBzb3J0ZWRDb2x1bW46IGFueTtcclxuICBzb3J0RGlyZWN0aW9uOiBhbnk7XHJcbiAgcHJpdmF0ZSBjaGFydDogYW55O1xyXG4gIHByaXZhdGUgdG9vbHRpcEVsZW1lbnQ6IEhUTUxFbGVtZW50O1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG4gIGdldENhcmREYXRhOiBhbnkgPSBbXTtcclxuICBoZWF0TWFwRGF0YTogYW55ID0gW107XHJcbiAgZ2V0Q2FyZEdyYXBoRGF0YTogYW55O1xyXG4gIGdldFN1bW1hcnlUYWJsZURhdGE6IGFueTtcclxuICBpdGVtc1BlclBhZ2UgPSAxMDtcclxuICBjdXJyZW50UGFnZSA9IDE7XHJcbiAgdG90YWxJdGVtcyA9IDE7XHJcbiAgcGFnaW5hdGlvblNpemVzOmFueVtdID0gW107XHJcbiAgcGFnZVNpemUgPSAxMDtcclxuICBvZmZzZXQ6IG51bWJlciA9IDA7XHJcbiAgbGltaXQ6IG51bWJlciA9IDEwO1xyXG4gIGdldFJlY2FwVmlkZW9EYXRhOiBhbnk7XHJcbiAgdGFibGVvYmo6IGFueTtcclxuICBoZWF0TWFwcm9vdDogYW01LlJvb3Q7XHJcbiAgdmFsdWVUeXBlPVwiYWN0dWFsXCJcclxuICBkYXRlVHlwZT1cImRhaWx5XCI7XHJcbiAgcG9pbnRzOmFueSA9IFtdO1xyXG4gIGhlYWRlckRhdGE6IGFueTtcclxuICB0eXBlVmFsdWU6IGFueSA9J3N1bSc7XHJcbiAgdmFsdWVDb252ZXJzaW9uUmF0ZTogYW55O1xyXG4gIGNvbnZlcnNpb25WYWx1ZTogYW55PScnO1xyXG4gIHNlYXJjaFZhbHVlOiBhbnk7XHJcbiAgbG9hZGluZzogYm9vbGVhbiA9dHJ1ZTtcclxuICBub0RhdGE6IGJvb2xlYW4gPWZhbHNlO1xyXG4gIGNhcmRsb2FkaW5nOiBib29sZWFuID10cnVlO1xyXG4gIGNhcmROb2RhdGE6IGJvb2xlYW4gPWZhbHNlO1xyXG4gIGhlYXRsb2FkaW5nID0gdHJ1ZVxyXG4gIGhlYXRub0RhdGEgPSBmYWxzZVxyXG4gIHN0b3JlSWRhcnJheTogYW55ID1bXTtcclxuICBnZXRSZWNhcERhdGE6IGFueT1bXTtcclxuICBmb3JtOiBhbnk7XHJcbiAgZm9vdGZhbGxWYWx1ZTogYW55O1xyXG4gIGRhdGVMZW5ndGg6IG51bWJlcjtcclxuICBwZXJmb3JtYW5jZW5vRGF0YTogYm9vbGVhbiA9ZmFsc2U7XHJcbiAgcGVyZm9ybWFuY2VMb2FkaW5nOiBib29sZWFuID10cnVlO1xyXG4gIHpvbmVEd2VsbFRpbWVTcGxpdERhdGE6IGFueT1bXTtcclxuICBzdG9yZU9wZXJhdGlvbkRhdGE6IGFueT1bXTtcclxuICBmb290ZmFsbE5hbWU6IHN0cmluZz0nRm9vdGZhbGwnO1xyXG4gIGJvdW5jZUxhYmVsOiBhbnk7XHJcbiAgZm9vdGZhbGxMYWJlbDogYW55O1xyXG4gIGNvbFZhbHVlOiBhbnk7XHJcbiAgcmVjYXBsYW9kaW5nOiBib29sZWFuO1xyXG4gIHJlY2Fwbm9EYXRhOiBib29sZWFuO1xyXG4gIHJlY2Fwc0dyb3VwZWQ6IGFueVtdPVtdO1xyXG4gIGlzQXZlcmFnZTogYm9vbGVhbiA9IGZhbHNlOyAvLyBUb2dnbGUgc3RhdGUgZm9yIHRoZSBzd2l0Y2hcclxuICBpc0Rpc2FibGVkOiBib29sZWFuID1mYWxzZTtcclxuXHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcclxuICBoYW5kbGVDbGlja091dHNpZGUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGNvbnN0IGNsaWNrZWRJbnNpZGUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5jbG9zZXN0KCcudG9vbHRpcC1wb3B1cCwgLmxhYmVsJyk7XHJcbiAgICBpZiAoIWNsaWNrZWRJbnNpZGUpIHtcclxuICAgICAgdGhpcy5hY3RpdmVUb29sdGlwID0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcbiAgYWN0aXZlVG9vbHRpcDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIGF1TG9jYXRpb25zOiBhbnlbXSA9IFtdO1xyXG4gIG1hcE9wdGlvbnM6IGdvb2dsZS5tYXBzLk1hcE9wdGlvbnMgPSB7XHJcbiAgICBtYXBJZDogXCJERU1PX01BUF9JRFwiLFxyXG4gICAgY2VudGVyOiB7IGxhdDogMCwgbG5nOiAwIH0sICAvLyBJbml0aWFsIGNlbnRlclxyXG4gICAgem9vbTogMSxcclxuICB9O1xyXG5cclxuICBwZXJmb3JtYW5jZURhdGE6YW55ID0gW107XHJcbiAgbXBhbG9hZGluZyA9dHJ1ZTtcclxuICBtYXBub0RhdGE9IGZhbHNlO1xyXG4gIGZvb3RmYWxsZGF0YXNldHMgPSBbXHJcbiAgICB7IHZhbHVlOiAnZm9vdGZhbGwnLCBsYWJlbDogJ0Zvb3RmYWxsJyB9LFxyXG4gICAgeyB2YWx1ZTogJ2JvdW5jZWQnLCBsYWJlbDogJ0JvdW5jZWQgRm9vdGZhbGwnIH0sXHJcbiAgICB7IHZhbHVlOiAnZW5nYWdlcicsIGxhYmVsOiAnRW5nYWdlcnMnIH0sXHJcbiAgICB7IHZhbHVlOiAnbWlzc2VkT3Bwb3J0dW5pdHknLCBsYWJlbDogJ01pc3NlZCBPcHBvcnR1bml0eScgfSxcclxuICAgIHsgdmFsdWU6ICdwb3RlbnRpYWxCdXllcicsIGxhYmVsOiAnUG90ZW50aWFsIEJ1eWVyJyB9LFxyXG4gICAgeyB2YWx1ZTogJ2NvbnZlcnNpb24nLCBsYWJlbDogJ0NvbnZlcnNpb24nIH1cclxuICBdO1xyXG4gIGJvdW5jZWRhdGFzZXRzID0gW1xyXG4gICAgeyB2YWx1ZTogJ2Zvb3RmYWxsJywgbGFiZWw6ICdGb290ZmFsbCcgfSxcclxuICAgIHsgdmFsdWU6ICdib3VuY2VkJywgbGFiZWw6ICdCb3VuY2VkIEZvb3RmYWxsJyB9LFxyXG4gICAgeyB2YWx1ZTogJ2VuZ2FnZXInLCBsYWJlbDogJ0VuZ2FnZXJzJyB9LFxyXG4gICAgeyB2YWx1ZTogJ21pc3NlZE9wcG9ydHVuaXR5JywgbGFiZWw6ICdNaXNzZWQgT3Bwb3J0dW5pdHknIH0sXHJcbiAgICB7IHZhbHVlOiAncG90ZW50aWFsQnV5ZXInLCBsYWJlbDogJ1BvdGVudGlhbCBCdXllcicgfSxcclxuICAgIHsgdmFsdWU6ICdjb252ZXJzaW9uJywgbGFiZWw6ICdDb252ZXJzaW9uJyB9XHJcbiAgXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHpvbmU6IE5nWm9uZSxcclxuICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsXHJcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIscHJpdmF0ZSByb3V0ZXI6Um91dGVyLHByaXZhdGUgZXhjZWxTZXJ2aWNlOiBFeGNlbFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNlcnZpY2U6IFRyYWZmaWNTZXJ2aWNlLHB1YmxpYyBnczogR2xvYmFsU3RhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYscHJpdmF0ZSB0b2FzdDpUb2FzdFNlcnZpY2UsIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCxcclxuICApIHtcclxuICAgXHJcbiAgfVxyXG4gIEBWaWV3Q2hpbGQoXCJ0XCIsIHsgc3RhdGljOiBmYWxzZSB9KSB0b29sdGlwOiBOZ2JUb29sdGlwO1xyXG4gIHRvb2x0aXBWYWx1ZTogc3RyaW5nO1xyXG4gIGJvdW5jZVZhbHVlOmFueTtcclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIFxyXG4gICAgKG1hcGJveGdsIGFzIGFueSkuYWNjZXNzVG9rZW4gPSAncGsuZXlKMUlqb2lZbUZzWVdwcGRHRnVaMjhpTENKaElqb2lZMjB3WjJ4aWVtNTVNREZ4WVRKM2IyMXpiM0ZqTkhkd2F5Sjkubm5JSXp0N09lWWxZSHVmR0U4bEZXUSc7XHJcbiAgICB0aGlzLm9mZnNldCA9IDA7XHJcbiAgICB0aGlzLmxpbWl0PTEwO1xyXG4gICAgdGhpcy5ncy5kYXRhUmFuZ2VWYWx1ZVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCksIGRlYm91bmNlVGltZSgzMDApKVxyXG4gICAgICAuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZihkYXRhICE9PW51bGwgfHwgZGF0YT8uY2xpZW50ICE9PSBudWxsIHx8ICFkYXRhPy5zdG9yZXMubGVuZ3RoKXtcclxuICAgICAgICAvLyBPbmx5IHByb2Nlc3MgdGhlIGxhdGVzdCBkYXRhIGFmdGVyIGRlYm91bmNlIHRpbWVcclxuICAgICAgICB0aGlzLmhlYWRlckRhdGEgPSBkYXRhO1xyXG4gICAgICAgIHRoaXMudmFsdWVDb252ZXJzaW9uUmF0ZT0nJztcclxuICAgICAgICB0aGlzLmRhdGVMZW5ndGggPSBnZXREYXlzQmV0d2VlbkRhdGVzKGRhdGE/LmRhdGUuc3RhcnREYXRlLCBkYXRhPy5kYXRlLmVuZERhdGUpO1xyXG4gICAgICAgIGlmICh0aGlzLmRhdGVMZW5ndGggPiAyOClcclxuICAgICAgICAgIHRoaXMuZGF0ZVR5cGUgPSBcIm1vbnRobHlcIjtcclxuICAgICAgICBlbHNlIGlmICh0aGlzLmRhdGVMZW5ndGggPiA1KVxyXG4gICAgICAgICAgdGhpcy5kYXRlVHlwZSA9IFwid2Vla2x5XCI7XHJcbiAgICAgICAgZWxzZSBpZih0aGlzLmRhdGVMZW5ndGggPT09IDApXHJcbiAgICAgICAgICB0aGlzLmRhdGVUeXBlID0gXCJkYWlseVwiO1xyXG4gICAgICAgIHRoaXMudmFsdWVUeXBlPVwiYWN0dWFsXCI7XHJcbiAgICAgICAgdGhpcy50eXBlVmFsdWU9XCJzdW1cIlxyXG4gICAgICAgIHRoaXMuaXNBdmVyYWdlID0gZmFsc2VcclxuICAgICAgICB0aGlzLnN0b3JlSWRhcnJheSA9IHRoaXMuaGVhZGVyRGF0YT8uc3RvcmVzLmZpbHRlcigoc3RvcmU6IGFueSkgPT4gc3RvcmUuY2hlY2tlZCkubWFwKChzdG9yZTogYW55KSA9PiBzdG9yZS5zdG9yZUlkKVxyXG4gICAgICAgIHRoaXMudGFibGVvYmogPSB7XHJcbiAgICAgICAgICBmcm9tRGF0ZTogZGF0YT8uZGF0ZS5zdGFydERhdGUsXHJcbiAgICAgICAgICB0b0RhdGU6IGRhdGE/LmRhdGUuZW5kRGF0ZSxcclxuICAgICAgICAgIHN0b3JlSWQ6IGRhdGE/LnN0b3Jlcy5maWx0ZXIoKHN0b3JlOiBhbnkpID0+IHN0b3JlLmNoZWNrZWQpLm1hcCgoc3RvcmU6IGFueSkgPT4gc3RvcmUuc3RvcmVJZCksXHJcbiAgICAgICAgICBjbGllbnRJZDogZGF0YT8uY2xpZW50ID8gZGF0YT8uY2xpZW50IDonJyxcclxuICAgICAgICAgIHZhbHVlVHlwZTogdGhpcy52YWx1ZVR5cGUsXHJcbiAgICAgICAgICBkYXRlVHlwZTogdGhpcy5kYXRlVHlwZSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIFxyXG4gICAgICAgIHRoaXMuc2VydmljZS50b2dnbGVBdmVyYWdlKGZhbHNlKTtcclxuICAgICAgICAvLyBDYWxsIG1ldGhvZHMgdG8gdXBkYXRlIHRoZSB2aWV3XHJcbiAgICAgICAgdGhpcy5nZXRDYXJkKCk7XHJcbiAgICAgICAgdGhpcy5nZXRDYXJkR3JhcGgoKTtcclxuICAgICAgICB0aGlzLmdldFRhYmxlKCk7XHJcbiAgICAgICAgdGhpcy5wZXJmb3JtYW5jZSgpO1xyXG4gICAgICAgIHRoaXMuZ2V0Wm9uZSgpO1xyXG4gICAgICAgIHRoaXMuZ2V0Wm9uZVZhbHVlKCk7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5nZXRNYXAoKTtcclxuICAgICAgICB9LDEwMDApXHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKHRoaXMuc3RvcmVJZGFycmF5Py5sZW5ndGggPT09IDEpXHJcbiAgICAgICAgICB0aGlzLmdldFJlY2FwKCk7XHJcbiAgICAgICAgLy8gdGhpcy5pbml0TWFwKCk7XHJcbiAgICAgICAgdGhpcy50b29sdGlwVmFsdWUgPSBcIkRlZmF1bHQgVG9vbHRpcCBUZXh0XCI7XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMuc3RvcmVJZGFycmF5Py5sZW5ndGggPT09IDEgJiYgdGhpcy5oZWFkZXJEYXRhPy5kYXRlPy5zdGFydERhdGUgPT09IHRoaXMuaGVhZGVyRGF0YT8uZGF0ZT8uZW5kRGF0ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmlzRGlzYWJsZWQgPSB0cnVlXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmlzRGlzYWJsZWQgPSBmYWxzZVxyXG4gICAgICAgICAgfVxyXG59XHJcblxyXG4gICAgICB9KTtcclxuICAgIHRoaXMuZm9vdGZhbGxWYWx1ZSA9IHRoaXMuZm9vdGZhbGxkYXRhc2V0c1swXS52YWx1ZTtcclxuICAgIHRoaXMuYm91bmNlVmFsdWUgPSB0aGlzLmJvdW5jZWRhdGFzZXRzWzFdLnZhbHVlO1xyXG4gICAgdGhpcy5mb290ZmFsbExhYmVsID0gdGhpcy5mb290ZmFsbGRhdGFzZXRzWzBdLmxhYmVsO1xyXG4gICAgdGhpcy5ib3VuY2VMYWJlbCA9IHRoaXMuYm91bmNlZGF0YXNldHNbMV0ubGFiZWw7XHJcbiAgIFxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgLy8gSW5pdGlhbGl6ZSB0b29sdGlwcyBhZnRlciB0aGUgdmlldyBpcyBpbml0aWFsaXplZFxyXG4gICAgY29uc3QgdG9vbHRpcFRyaWdnZXJMaXN0ID0gW10uc2xpY2UuY2FsbChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1icy10b2dnbGU9XCJ0b29sdGlwXCJdJykpO1xyXG4gICAgdG9vbHRpcFRyaWdnZXJMaXN0LmZvckVhY2goZnVuY3Rpb24gKHRvb2x0aXBUcmlnZ2VyRWwpIHtcclxuICAgICAgbmV3IGJvb3RzdHJhcC5Ub29sdGlwKHRvb2x0aXBUcmlnZ2VyRWwpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGdldEZpbHRlcmVkQm91bmNlRGF0YXNldHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5ib3VuY2VkYXRhc2V0cy5maWx0ZXIoZGF0YXNldCA9PiBkYXRhc2V0LnZhbHVlICE9PSB0aGlzLmZvb3RmYWxsVmFsdWUpO1xyXG4gIH1cclxuICBcclxuICAvLyBGaWx0ZXIgdGhlIGZvb3RmYWxsIG9wdGlvbnMgd2hlbiB0aGUgYm91bmNlVmFsdWUgY2hhbmdlc1xyXG4gIGdldEZpbHRlcmVkRm9vdGZhbGxEYXRhc2V0cygpIHtcclxuICAgIHJldHVybiB0aGlzLmZvb3RmYWxsZGF0YXNldHMuZmlsdGVyKGRhdGFzZXQgPT4gZGF0YXNldC52YWx1ZSAhPT0gdGhpcy5ib3VuY2VWYWx1ZSk7XHJcbiAgfVxyXG4gIG9uVmFsdWVDaGFuZ2UoZXZ0OiBhbnkpIHtcclxuICAgIHRoaXMuZm9vdGZhbGxWYWx1ZSA9IGV2dC50YXJnZXQudmFsdWU7XHJcbmlmKGV2dC50YXJnZXQudmFsdWUgPT0gJ2Zvb3RmYWxsJylcclxuICB0aGlzLmZvb3RmYWxsTGFiZWwgPSAnRm9vdGZhbGwnXHJcbmVsc2UgaWYoZXZ0LnRhcmdldC52YWx1ZSA9PSAnYm91bmNlZCcpXHJcbiAgdGhpcy5mb290ZmFsbExhYmVsID0gJ0JvdW5jZWQgRm9vdGZhbGwnXHJcbmVsc2UgaWYoZXZ0LnRhcmdldC52YWx1ZSA9PSAnZW5nYWdlcicpXHJcbiAgdGhpcy5mb290ZmFsbExhYmVsID0gJ0VuZ2FnZXJzJ1xyXG5lbHNlIGlmKGV2dC50YXJnZXQudmFsdWUgPT0gJ21pc3NlZE9wcG9ydHVuaXR5JylcclxuICB0aGlzLmZvb3RmYWxsTGFiZWwgPSAnTWlzc2VkIE9wcG9ydHVuaXR5J1xyXG5lbHNlIGlmKGV2dC50YXJnZXQudmFsdWUgPT0gJ3BvdGVudGlhbEJ1eWVyJylcclxuICB0aGlzLmZvb3RmYWxsTGFiZWwgPSAnUG90ZW50aWFsIEJ1eWVyJ1xyXG5lbHNlIGlmKGV2dC50YXJnZXQudmFsdWUgPT0gJ2NvbnZlcnNpb24nKVxyXG4gIHRoaXMuZm9vdGZhbGxMYWJlbCA9ICdjb252ZXJzaW9uJ1xyXG4gICAgaWYodGhpcy5mb290ZmFsbFZhbHVlICE9PSB0aGlzLmJvdW5jZVZhbHVlKVxyXG4gICAgICB0aGlzLnBlcmZvcm1hbmNlKCk7XHJcbiAgICBlbHNlIFxyXG4gICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KCdTYW1lIHZhbHVlIG5vdCBmaWx0ZXJlZCcpXHJcbiAgfVxyXG4gIG9uQm91bmNlQ2hhbmdlKGV2dDogYW55KSB7XHJcbiAgICB0aGlzLmJvdW5jZVZhbHVlID0gZXZ0LnRhcmdldC52YWx1ZTtcclxuICAgIGlmKGV2dC50YXJnZXQudmFsdWUgPT0gJ2Zvb3RmYWxsJylcclxuICAgICAgdGhpcy5ib3VuY2VMYWJlbCA9ICdGb290ZmFsbCdcclxuICAgIGVsc2UgaWYoZXZ0LnRhcmdldC52YWx1ZSA9PSAnYm91bmNlZCcpXHJcbiAgICAgIHRoaXMuYm91bmNlTGFiZWwgPSAnQm91bmNlZCBGb290ZmFsbCdcclxuICAgIGVsc2UgaWYoZXZ0LnRhcmdldC52YWx1ZSA9PSAnZW5nYWdlcicpXHJcbiAgICAgIHRoaXMuYm91bmNlTGFiZWwgPSAnRW5nYWdlcnMnXHJcbiAgICBlbHNlIGlmKGV2dC50YXJnZXQudmFsdWUgPT0gJ21pc3NlZE9wcG9ydHVuaXR5JylcclxuICAgICAgdGhpcy5ib3VuY2VMYWJlbCA9ICdNaXNzZWQgT3Bwb3J0dW5pdHknXHJcbiAgICBlbHNlIGlmKGV2dC50YXJnZXQudmFsdWUgPT0gJ3BvdGVudGlhbEJ1eWVyJylcclxuICAgICAgdGhpcy5ib3VuY2VMYWJlbCA9ICdQb3RlbnRpYWwgQnV5ZXInXHJcbiAgICBlbHNlIGlmKGV2dC50YXJnZXQudmFsdWUgPT0gJ2NvbnZlcnNpb24nKVxyXG4gICAgICB0aGlzLmJvdW5jZUxhYmVsID0gJ2NvbnZlcnNpb24nXHJcbiAgICBpZih0aGlzLmZvb3RmYWxsVmFsdWUgIT09IHRoaXMuYm91bmNlVmFsdWUpXHJcbiAgICB0aGlzLnBlcmZvcm1hbmNlKCk7XHJcbiAgZWxzZSBcclxuICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoJ1NhbWUgdmFsdWUgbm90IGZpbHRlcmVkJylcclxuICB9XHJcbiAgY29udmVydFBlcmNlbnRUb1BpeGVscyhwZXJjZW50OiBzdHJpbmcsIG1heFBlcmNlbnQ6IG51bWJlciwgYmFzZURpbWVuc2lvbjogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIC8vIFJlbW92ZSB0aGUgJyUnIHNpZ24gYW5kIHBhcnNlIHRoZSB2YWx1ZVxyXG4gICAgY29uc3QgdmFsdWUgPSBwYXJzZUZsb2F0KHBlcmNlbnQucmVwbGFjZSgnJScsICcnKSk7XHJcbiAgICBpZiAoaXNOYU4odmFsdWUpKSByZXR1cm4gMDtcclxuICBcclxuICAgIC8vIENhbGN1bGF0ZSBwaXhlbCB2YWx1ZSBiYXNlZCBvbiB0aGUgbWF4aW11bSBwZXJjZW50YWdlIGFuZCBiYXNlIGRpbWVuc2lvblxyXG4gICAgcmV0dXJuICh2YWx1ZSAvIG1heFBlcmNlbnQpICogYmFzZURpbWVuc2lvbjtcclxuICB9XHJcbiAgXHJcblxyXG4gIGdldE1heFBlcmNlbnRhZ2UoZGF0YTogYW55W10sIGZpZWxkOiBzdHJpbmcpOiBudW1iZXIge1xyXG4gICAgLy8gRXh0cmFjdCBhbmQgcmV0dXJuIHRoZSBtYXhpbXVtIHBlcmNlbnRhZ2UgdmFsdWUgZnJvbSB0aGUgZmllbGRcclxuICAgIHJldHVybiBNYXRoLm1heCguLi5kYXRhLm1hcChpdGVtID0+IHBhcnNlRmxvYXQoaXRlbVtmaWVsZF0pIHx8IDApKTtcclxuICB9XHJcbiAgXHJcblxyXG5cclxuICAvLyBub3JtYWxpemVEYXRhKGRhdGE6IGFueVtdKTogYW55W10ge1xyXG4gIC8vICAgY29uc3QgbWF4VG9wUGVyY2VudCA9IE1hdGgubWF4KC4uLmRhdGEubWFwKGl0ZW0gPT4gcGFyc2VGbG9hdChpdGVtLnRvcC5yZXBsYWNlKCclJywgJycpKSkpO1xyXG4gIC8vICAgY29uc3QgbWF4TGVmdFBlcmNlbnQgPSBNYXRoLm1heCguLi5kYXRhLm1hcChpdGVtID0+IHBhcnNlRmxvYXQoaXRlbS5sZWZ0LnJlcGxhY2UoJyUnLCAnJykpKSk7XHJcbiAgXHJcbiAgLy8gICByZXR1cm4gZGF0YS5tYXAoaXRlbSA9PiAoe1xyXG4gIC8vICAgICAuLi5pdGVtLFxyXG4gIC8vICAgICB0b3A6IHRoaXMuc2NhbGVQZXJjZW50KGl0ZW0udG9wLCBtYXhUb3BQZXJjZW50KSArICclJyxcclxuICAvLyAgICAgbGVmdDogdGhpcy5zY2FsZVBlcmNlbnQoaXRlbS5sZWZ0LCBtYXhMZWZ0UGVyY2VudCkgKyAnJSdcclxuICAvLyAgIH0pKTtcclxuICAvLyB9XHJcbiAgXHJcbiAgc2NhbGVQZXJjZW50KHBlcmNlbnQ6IHN0cmluZywgbWF4UGVyY2VudDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHBlcmNlbnRWYWx1ZSA9IHBhcnNlRmxvYXQocGVyY2VudC5yZXBsYWNlKCclJywgJycpKTtcclxuICAgIHJldHVybiAoKHBlcmNlbnRWYWx1ZSAvIG1heFBlcmNlbnQpICogMTAwKS50b0ZpeGVkKDIpO1xyXG4gIH1cclxuLy8gVG9nZ2xlIHRoZSB0b29sdGlwIGRpc3BsYXlcclxudG9nZ2xlVG9vbHRpcChwb2ludE5hbWU6IHN0cmluZykge1xyXG4gIHRoaXMuYWN0aXZlVG9vbHRpcCA9IHRoaXMuYWN0aXZlVG9vbHRpcCA9PT0gcG9pbnROYW1lID8gbnVsbCA6IHBvaW50TmFtZTtcclxufVxyXG5cclxucGVyZm9ybWFuY2UoKXtcclxuICB0aGlzLnBlcmZvcm1hbmNlTG9hZGluZyA9IHRydWU7XHJcbiAgdGhpcy5wZXJmb3JtYW5jZW5vRGF0YSA9IGZhbHNlO1xyXG4gIGxldCBvYmogPSB7XHJcbiAgICBjbGllbnRJZDp0aGlzLmhlYWRlckRhdGE/LmNsaWVudCxcclxuICAgIGZyb21EYXRlOiB0aGlzLmhlYWRlckRhdGE/LmRhdGUuc3RhcnREYXRlLFxyXG4gICAgdG9EYXRlOiB0aGlzLmhlYWRlckRhdGE/LmRhdGUuZW5kRGF0ZSxcclxuICAgIHN0b3JlSWQ6IHRoaXMuaGVhZGVyRGF0YT8uc3RvcmVzLmZpbHRlcigoc3RvcmU6YW55KSA9PiBzdG9yZS5jaGVja2VkKS5tYXAoKHN0b3JlOmFueSkgPT4gc3RvcmUuc3RvcmVJZCksXHJcbiAgIHByb2Nlc3N0eXBlMTogdGhpcy5mb290ZmFsbFZhbHVlLFxyXG4gICBwcm9jZXNzdHlwZTIgOiB0aGlzLmJvdW5jZVZhbHVlXHJcbiAgfTtcclxuICB0aGlzLnNlcnZpY2UucGVyZm9ybWFuY2VNYXRyaXgob2JqKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICA/LnN1YnNjcmliZSh7XHJcbiAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgdGhpcy5wZXJmb3JtYW5jZURhdGEgPSByZXM/LmRhdGE/LnBlcmZvcm1hbmNlRGF0YVxyXG4gICAgICAgIC8vIHRoaXMucGVyZm9ybWFuY2VEYXRhID0gdGhpcy5ub3JtYWxpemVEYXRhKHRoaXMucGVyZm9ybWFuY2VEYXRhKTtcclxuICAgICAgICAvLyBDYWxjdWxhdGUgbWF4aW11bSBwZXJjZW50YWdlc1xyXG4gICAgICAgIC8vIGNvbnN0IG1heFRvcCA9IE1hdGgubWF4KC4uLnRoaXMucGVyZm9ybWFuY2VEYXRhLm1hcCgoaXRlbTphbnkpID0+IHBhcnNlRmxvYXQoaXRlbS50b3AucmVwbGFjZSgnJScsICcnKSkpKTtcclxuICAgICAgICAvLyBjb25zdCBtYXhMZWZ0ID0gTWF0aC5tYXgoLi4udGhpcy5wZXJmb3JtYW5jZURhdGEubWFwKChpdGVtOmFueSkgPT4gcGFyc2VGbG9hdChpdGVtLmxlZnQucmVwbGFjZSgnJScsICcnKSkpKTtcclxuICAgICAgICBcclxuICAgICAgICAvLyBDb252ZXJ0IHBlcmZvcm1hbmNlIGRhdGEgdG8gcGl4ZWwgdmFsdWVzXHJcbiAgICAgICAgdGhpcy5wb2ludHMgPSB0aGlzLnBlcmZvcm1hbmNlRGF0YS5tYXAoKGRhdGE6IGFueSkgPT4gKHtcclxuICAgICAgICAgIG5hbWU6IGRhdGEuc3RvcmVOYW1lLFxyXG4gICAgICAgICAgc3RvcmVJZDogZGF0YS5zdG9yZUlkLFxyXG4gICAgICAgICAgYXZnRm9vdGZhbGw6IGRhdGEuYXZnLFxyXG4gICAgICAgICAgb3BlblRpbWU6IGRhdGEuYXZnT3BlblRpbWUsXHJcbiAgICAgICAgICBjbG9zZVRpbWU6IGRhdGEuYXZnQ2xvc2VUaW1lLFxyXG4gICAgICAgICAgdG9wOiBkYXRhLnRvcCwgLy8gQXNzdW1pbmcgNTAwcHggYXMgdGhlIGJhc2UgaGVpZ2h0XHJcbiAgICAgICAgICBsZWZ0OiBkYXRhLmxlZnQgIC8vIEFzc3VtaW5nIDEwMDBweCBhcyB0aGUgYmFzZSB3aWR0aFxyXG4gICAgICAgIH0pKTsgXHJcbiAgICAgICAgdGhpcy5wZXJmb3JtYW5jZUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnBlcmZvcm1hbmNlbm9EYXRhID0gZmFsc2U7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5wZXJmb3JtYW5jZUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnBlcmZvcm1hbmNlbm9EYXRhID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0VG9vbHRpcFRleHQoKTogc3RyaW5nIHtcclxuICAgIC8vIExvZ2ljIHRvIGRldGVybWluZSB0aGUgdG9vbHRpcCB0ZXh0XHJcbiAgICByZXR1cm4gXCJEeW5hbWljIFRvb2x0aXAgVGV4dCBcIiArIG5ldyBEYXRlKCkudG9Mb2NhbGVUaW1lU3RyaW5nKCk7XHJcbiAgfVxyXG4gIGdldENhcmQoKSB7XHJcbiAgICB0aGlzLmhlYXRsb2FkaW5nID0gdHJ1ZVxyXG4gICAgdGhpcy5oZWF0bm9EYXRhID0gZmFsc2VcclxuICAgZGVsZXRlIHRoaXMudGFibGVvYmouZGF0ZVR5cGVcclxuICAgIHRoaXMuc2VydmljZVxyXG4gICAgICAuZ2V0Q2FyZExpc3QodGhpcy50YWJsZW9iailcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICA/LnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy5nZXRDYXJkRGF0YSA9IHJlcz8uZGF0YT8uY2FyZDtcclxuICAgICAgICAgICAgdGhpcy5oZWF0TWFwRGF0YSA9IHJlcz8uZGF0YT8uZnVubmVsQ2hhcnQ7XHJcbiAgICAgICAgICB0aGlzLmNvbnZlcnNpb25WYWx1ZSA9ICcnO1xyXG4gICAgICAgICAgICB0aGlzLnZhbHVlQ29udmVyc2lvblJhdGUgPSB0aGlzLmdldENhcmREYXRhPy5jb252ZXJzaW9uPy5yYXRlXHJcbiAgICAgICAgICAgIHRoaXMuaGVhdE1hcCgpO1xyXG4gICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0Q2FyZERhdGEgPVtdO1xyXG4gICAgICAgICAgICB0aGlzLmhlYXRNYXBEYXRhID1bXTtcclxuICAgICAgICAgIHRoaXMuaGVhdGxvYWRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgdGhpcy5oZWF0bm9EYXRhID0gdHJ1ZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5nZXRDYXJkRGF0YSA9W107XHJcbiAgICAgICAgICB0aGlzLmhlYXRNYXBEYXRhID1bXTtcclxuICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHt9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgZ2V0UmVjYXAoKSB7XHJcbiAgICB0aGlzLnJlY2FwbGFvZGluZyA9dHJ1ZTtcclxuICAgIHRoaXMucmVjYXBub0RhdGEgPWZhbHNlO1xyXG4gICAgZGVsZXRlIHRoaXMudGFibGVvYmoucHJvY2Vzc1R5cGU7IGRlbGV0ZSB0aGlzLnRhYmxlb2JqLm5vcm1hbGl6ZWREYXRhO1xyXG4gICAgIGRlbGV0ZSB0aGlzLnRhYmxlb2JqLmRhdGVUeXBlOyBkZWxldGUgdGhpcy50YWJsZW9iai5mcm9tRGF0ZTtcclxuICAgICBkZWxldGUgdGhpcy50YWJsZW9iai50b0RhdGU7IGRlbGV0ZSB0aGlzLnRhYmxlb2JqLnZhbHVlVHlwZTsgZGVsZXRlIHRoaXMudGFibGVvYmoucHJvY2Vzc1R5cGU7XHJcbiAgICAgZGVsZXRlIHRoaXMudGFibGVvYmouc2VhcmNoOyBkZWxldGUgdGhpcy50YWJsZW9iai5vZmZzZXQ7XHJcbiAgICAgZGVsZXRlIHRoaXMudGFibGVvYmoubGltaXQ7IGRlbGV0ZSB0aGlzLnRhYmxlb2JqLnNvcnRCeTsgZGVsZXRlIHRoaXMudGFibGVvYmouc29ydDtcclxuICAgICBkZWxldGUgdGhpcy50YWJsZW9iai5leHBvcnQ7XHJcbiAgICAgdGhpcy50YWJsZW9iai5yZWNhcFZpZGVvRGF0ZSA9IHRoaXMuaGVhZGVyRGF0YS5kYXRlLmVuZERhdGU7XHJcbiAgICB0aGlzLnNlcnZpY2VcclxuICAgICAgLmdldFJlY2FwVmlkZW8odGhpcy50YWJsZW9iailcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICA/LnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy5nZXRSZWNhcFZpZGVvRGF0YSA9IHJlcz8uZGF0YTtcclxuICAgICAgICAgICAgdGhpcy5nZXRSZWNhcERhdGEgPSByZXM/LmRhdGE/LnJlY2FwVmlkZW9EYXRhO1xyXG4gICAgICAgICAgICB0aGlzLmdyb3VwUmVjYXBzKCk7XHJcbiAgICAgICAgICAgIGlmKCF0aGlzLmdldFJlY2FwRGF0YS5sZW5ndGgpe1xyXG4gICAgICAgICAgICAgIHRoaXMucmVjYXBsYW9kaW5nID1mYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5yZWNhcG5vRGF0YSA9dHJ1ZTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnJlY2FwbGFvZGluZyA9ZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMucmVjYXBub0RhdGEgPWZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpOyAgICBcclxuICAgICAgICAgIH0gZWxzZXtcclxuICAgICAgICAgICAgdGhpcy5nZXRSZWNhcFZpZGVvRGF0YSA9W11cclxuICAgICAgICAgICAgdGhpcy5yZWNhcGxhb2RpbmcgPWZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnJlY2Fwbm9EYXRhID10cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB0aGlzLnJlY2FwbGFvZGluZyA9ZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnJlY2Fwbm9EYXRhID10cnVlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHt9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgZ3JvdXBSZWNhcHMoKSB7XHJcbiAgICB0aGlzLnJlY2Fwc0dyb3VwZWQgPSBbXTtcclxuICAgIGxldCBncm91cFNpemUgPSB0aGlzLmdldFJlY2FwRGF0YS5sZW5ndGggPT09IDEgPyAxIDogMjtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5nZXRSZWNhcERhdGEubGVuZ3RoOyBpICs9IGdyb3VwU2l6ZSkge1xyXG4gICAgICB0aGlzLnJlY2Fwc0dyb3VwZWQucHVzaCh0aGlzLmdldFJlY2FwRGF0YS5zbGljZShpLCBpICsgZ3JvdXBTaXplKSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNvbFZhbHVlID0gdGhpcy5nZXRSZWNhcERhdGEubGVuZ3RoID09PSAxID8gJ2NvbC1tZC0xMicgOiAnY29sLW1kLTYnO1xyXG4gIH1cclxuICB2aWRlb0NsaWNrKG9iajphbnkpe1xyXG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKFZpZGVvVXJsQ29tcG9uZW50LCB7XHJcbiAgICAgIGNlbnRlcmVkOiB0cnVlLFxyXG4gICAgICBzaXplOiBcImxnXCIsXHJcbiAgICAgIHNjcm9sbGFibGU6IHRydWUsXHJcbiAgICB9KTtcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnZpZGVvVXJsID0gb2JqO1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuZGF0ZT0gdGhpcy5oZWFkZXJEYXRhPy5kYXRlPy5lbmREYXRlXHJcbiAgICBtb2RhbFJlZi5yZXN1bHQudGhlbigocmVzdWx0OiBhbnkpID0+IHt9KTtcclxuICB9XHJcbiAgcHJldmlvdXNWYWx1ZTogYW55ID0gbnVsbDtcclxuICBjaGFuZ2VWYWx1ZShtZXRob2Q6IGFueSkge1xyXG4gICAgLy8gaWYgKHRoaXMucHJldmlvdXNWYWx1ZSA9PT0gbWV0aG9kKSB7XHJcbiAgICAvLyAgIC8vIElmIHRoZSBzYW1lIHZhbHVlIGlzIGNsaWNrZWQgYWdhaW4sIHJlc2V0IHRoZSB2YWx1ZXNcclxuICAgIC8vICAgdGhpcy5jb252ZXJzaW9uVmFsdWUgPSAnJztcclxuICAgIC8vICAgdGhpcy52YWx1ZUNvbnZlcnNpb25SYXRlID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy5wcmV2aW91c1ZhbHVlID0gbnVsbDsgLy8gUmVzZXQgcHJldmlvdXNWYWx1ZVxyXG4gICAgLy8gfSBlbHNlIHtcclxuICAgIC8vICAgLy8gT3RoZXJ3aXNlLCBzZXQgdGhlIG5ldyB2YWx1ZSBhbmQgdXBkYXRlIGNvbnZlcnNpb24gcmF0ZVxyXG4gICAgICB0aGlzLnByZXZpb3VzVmFsdWUgPSBtZXRob2Q7XHJcbiAgICAgIGlmICh0aGlzLnByZXZpb3VzVmFsdWUgPT09ICdwb3RlbnRpYWxCdXllcnMnKSB7XHJcbiAgICAgICAgdGhpcy5jb252ZXJzaW9uVmFsdWUgPSAnUG90ZW50aWFsIEJ1eWVycyc7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jb252ZXJzaW9uVmFsdWUgPSBtZXRob2Q7XHJcbiAgICAgIH1cclxuICBcclxuICAgICAgLy8gVXBkYXRlIGNvbnZlcnNpb24gcmF0ZXMgYmFzZWQgb24gdGhlIHNlbGVjdGVkIG1ldGhvZFxyXG4gICAgICBpZiAodGhpcy5wcmV2aW91c1ZhbHVlID09PSAnZm9vdGZhbGwnKSB7XHJcbiAgICAgICAgdGhpcy52YWx1ZUNvbnZlcnNpb25SYXRlID0gdGhpcy5nZXRDYXJkR3JhcGhEYXRhPy5jb252ZXJzaW9uPy5mb290ZmFsbC5yYXRlO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMucHJldmlvdXNWYWx1ZSA9PT0gJ2VuZ2FnZXJzJykge1xyXG4gICAgICAgIHRoaXMudmFsdWVDb252ZXJzaW9uUmF0ZSA9IHRoaXMuZ2V0Q2FyZEdyYXBoRGF0YT8uY29udmVyc2lvbj8uZW5nYWdlcnMucmF0ZTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnByZXZpb3VzVmFsdWUgPT09ICdwb3RlbnRpYWxCdXllcnMnKSB7XHJcbiAgICAgICAgdGhpcy52YWx1ZUNvbnZlcnNpb25SYXRlID0gdGhpcy5nZXRDYXJkR3JhcGhEYXRhPy5jb252ZXJzaW9uPy5wb3RlbnRpYWxCdXllcnMucmF0ZTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnByZXZpb3VzVmFsdWUgPT09ICdOb0IgRGVyaXZlZCcpIHtcclxuICAgICAgICB0aGlzLnZhbHVlQ29udmVyc2lvblJhdGUgPSB0aGlzLmdldENhcmRHcmFwaERhdGE/LmNvbnZlcnNpb24/Lm5vYi5ub2I7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy52YWx1ZUNvbnZlcnNpb25SYXRlID0gdGhpcy5nZXRDYXJkRGF0YT8uY29udmVyc2lvbj8ucmF0ZTtcclxuICAgICAgfVxyXG4gICAgLy8gfVxyXG4gIH1cclxuICBnZXRDYXJkR3JhcGgoKSB7XHJcbiAgICB0aGlzLmNhcmRsb2FkaW5nID10cnVlO1xyXG4gICAgdGhpcy5jYXJkTm9kYXRhID1mYWxzZTtcclxuICAgIGRlbGV0ZSB0aGlzLnRhYmxlb2JqLm5vcm1hbGl6ZWREYXRhO1xyXG4gICAgZGVsZXRlIHRoaXMudGFibGVvYmoucHJvY2Vzc1R5cGU7XHJcbiAgICB0aGlzLnRhYmxlb2JqLmRhdGVUeXBlID0gdGhpcy5kYXRlVHlwZTtcclxuICAgIHRoaXMuc2VydmljZVxyXG4gICAgICAuZ2V0Q2FyZEdyYXBoTGlzdCh0aGlzLnRhYmxlb2JqKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgID8uc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICB0aGlzLmdldENhcmRHcmFwaERhdGEgPSByZXM/LmRhdGE7XHJcbiAgICAgICAgICAgIHRoaXMuY2FyZGxvYWRpbmcgPWZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNhcmROb2RhdGEgPWZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmZvb3RmYWxsbGluZUNoYXJ0cygpO1xyXG4gICAgICAgICAgICB0aGlzLmJvdW5jZWRsaW5lQ2hhcnRzKCk7XHJcbiAgICAgICAgICAgIHRoaXMucG90ZW50aWFsbGluZUNoYXJ0cygpO1xyXG4gICAgICAgICAgICB0aGlzLmVuZ2FnZXJzbGluZUNoYXJ0cygpO1xyXG4gICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIH0gZWxzZSBpZighcmVzIHx8IHJlcy5jb2RlID09PSAyMDQpe1xyXG4gICAgICAgICAgICB0aGlzLmdldENhcmRHcmFwaERhdGE9W107XHJcbiAgICAgICAgICAgIHRoaXMuY2FyZGxvYWRpbmcgPWZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNhcmROb2RhdGEgPXRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7fSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRUYWJsZSgpIHtcclxuICAgIHRoaXMudGFibGVvYmoub2Zmc2V0ID0gdGhpcy5vZmZzZXQgPSB0aGlzLmN1cnJlbnRQYWdlIC0xO1xyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMubm9EYXRhID0gZmFsc2U7XHJcbiAgICBkZWxldGUgdGhpcy50YWJsZW9iai5wcm9jZXNzVHlwZTtcclxuICAgIGRlbGV0ZSB0aGlzLnRhYmxlb2JqLm5vcm1hbGl6ZWREYXRhO1xyXG4gICAgZGVsZXRlIHRoaXMudGFibGVvYmouZGF0ZVR5cGU7XHJcbiAgICAodGhpcy50YWJsZW9iai5saW1pdCA9IHRoaXMubGltaXQpO1xyXG4gICAgKHRoaXMudGFibGVvYmouc2VhcmNoID0gdGhpcy5zZWFyY2hWYWx1ZSksIFxyXG4gICAgICh0aGlzLnRhYmxlb2JqLnZhbHVlVHlwZSA9IHRoaXMudHlwZVZhbHVlKTtcclxuICAgICB0aGlzLnRhYmxlb2JqLmV4cG9ydCA9IGZhbHNlO1xyXG4gICAgdGhpcy5zZXJ2aWNlXHJcbiAgICAgIC5nZXRTdW1tYXJ5VGFibGVMaXN0KHRoaXMudGFibGVvYmopXHJcbiAgICAgID8ucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgID8uc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICB0aGlzLmdldFN1bW1hcnlUYWJsZURhdGEgPSByZXM/LmRhdGEuc3VtbWFyeURhdGE7XHJcbiAgICAgICAgICAgIHRoaXMudG90YWxJdGVtcyA9IHJlcy5kYXRhPy50b3RhbENvdW50O1xyXG4gICAgICAgICAgICB0aGlzLnNldFBhZ2luYXRpb25TaXplcygpO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5ub0RhdGEgPSBmYWxzZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0U3VtbWFyeVRhYmxlRGF0YSA9W11cclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMubm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gMDsgXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHt9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgc2VhcmNoRGF0YSgpIHtcclxuICAgIHRoaXMudGFibGVvYmouZnJvbURhdGU9IHRoaXMuaGVhZGVyRGF0YS5kYXRlLnN0YXJ0RGF0ZSxcclxuICAgIHRoaXMudGFibGVvYmoudG9EYXRlPSB0aGlzLmhlYWRlckRhdGEuZGF0ZS5lbmREYXRlLFxyXG4gICAgdGhpcy50YWJsZW9iai5zZWFyY2ggPSB0aGlzLnNlYXJjaFZhbHVlO1xyXG4gICAgZGVsZXRlIHRoaXMudGFibGVvYmoucmVjYXBWaWRlb0RhdGU7XHJcbiAgICB0aGlzLnRhYmxlb2JqLmV4cG9ydCA9IGZhbHNlO1xyXG4gICAgdGhpcy5vZmZzZXQgPSAxO1xyXG4gICAgdGhpcy50YWJsZW9iai5vZmZzZXQgPSB0aGlzLm9mZnNldCAtMTtcclxuICAgIHRoaXMubGltaXQ9MTA7XHJcbiAgICB0aGlzLmdldFRhYmxlKCk7XHJcbiAgfVxyXG5cclxuICBzZXRQYWdpbmF0aW9uU2l6ZXMoKSB7XHJcbiAgICBpZiAodGhpcy50b3RhbEl0ZW1zID4gMTApIHtcclxuICAgICAgdGhpcy5wYWdpbmF0aW9uU2l6ZXMgPSBbMTAsIDIwLCAzMF07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnBhZ2luYXRpb25TaXplcyA9IFt0aGlzLnRvdGFsSXRlbXNdOyAvLyBKdXN0IG9uZSBvcHRpb24gaWYgbGVzcyB0aGFuIDEwXHJcbiAgICB9XHJcbiAgICB0aGlzLnBhZ2VTaXplID0gdGhpcy5wYWdpbmF0aW9uU2l6ZXNbMF07XHJcbiAgfVxyXG4gIG9uUGFnZUNoYW5nZShwYWdlT2Zmc2V0OiBudW1iZXIpIHtcclxuICAgIHRoaXMub2Zmc2V0ID0gTnVtYmVyKHBhZ2VPZmZzZXQpO1xyXG4gICAgdGhpcy50YWJsZW9iai5vZmZzZXQgPSB0aGlzLm9mZnNldCAtMTtcclxuICAgICh0aGlzLnRhYmxlb2JqLmxpbWl0ID0gdGhpcy5saW1pdCksXHJcbiAgICAodGhpcy50YWJsZW9iai5zZWFyY2ggPSB0aGlzLnNlYXJjaFZhbHVlKSwgXHJcbiAgICAgKHRoaXMudGFibGVvYmoudmFsdWVUeXBlID0gdGhpcy50eXBlVmFsdWUpO1xyXG4gICAgdGhpcy50YWJsZW9iai5mcm9tRGF0ZT0gdGhpcy5oZWFkZXJEYXRhLmRhdGUuc3RhcnREYXRlLFxyXG4gICAgdGhpcy50YWJsZW9iai50b0RhdGU9IHRoaXMuaGVhZGVyRGF0YS5kYXRlLmVuZERhdGUsXHJcbiAgICB0aGlzLnRhYmxlb2JqLnNlYXJjaCA9IHRoaXMuc2VhcmNoVmFsdWU7XHJcbiAgICBkZWxldGUgdGhpcy50YWJsZW9iai5yZWNhcFZpZGVvRGF0ZTtcclxuICAgIHRoaXMudGFibGVvYmouZXhwb3J0ID0gZmFsc2U7XHJcbiAgICB0aGlzLnNlcnZpY2VcclxuICAgIC5nZXRTdW1tYXJ5VGFibGVMaXN0KHRoaXMudGFibGVvYmopXHJcbiAgICA/LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgPy5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMuZ2V0U3VtbWFyeVRhYmxlRGF0YSA9IHJlcz8uZGF0YS5zdW1tYXJ5RGF0YTtcclxuICAgICAgICAgIHRoaXMudG90YWxJdGVtcyA9IHJlcy5kYXRhPy50b3RhbENvdW50O1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7YGBcclxuICAgICAgICAgIHRoaXMubm9EYXRhID0gZmFsc2U7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZ2V0U3VtbWFyeVRhYmxlRGF0YSA9W11cclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5ub0RhdGEgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gMDsgXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGNvbXBsZXRlOiAoKSA9PiB7fSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25QYWdlU2l6ZUNoYW5nZShwYWdlU2l6ZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnBhZ2VTaXplID0gTnVtYmVyKHBhZ2VTaXplKTtcclxuICAgIHRoaXMubGltaXQgPSBOdW1iZXIocGFnZVNpemUpO1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XHJcbiAgICB0aGlzLm9mZnNldCA9IDA7XHJcbiAgICB0aGlzLnRhYmxlb2JqLmZyb21EYXRlPSB0aGlzLmhlYWRlckRhdGEuZGF0ZS5zdGFydERhdGUsXHJcbiAgICB0aGlzLnRhYmxlb2JqLnRvRGF0ZT0gdGhpcy5oZWFkZXJEYXRhLmRhdGUuZW5kRGF0ZSxcclxuICAgIHRoaXMudGFibGVvYmouc2VhcmNoID0gdGhpcy5zZWFyY2hWYWx1ZTtcclxuICAgIGRlbGV0ZSB0aGlzLnRhYmxlb2JqLnJlY2FwVmlkZW9EYXRlO1xyXG4gICAgdGhpcy50YWJsZW9iai5leHBvcnQgPSBmYWxzZTtcclxuICAgIHRoaXMuZ2V0VGFibGUoKTtcclxuICB9XHJcblxyXG4gIG9uVmFsdWVUeXBlKHR5cGU6YW55KXtcclxuICAgIHRoaXMudGFibGVvYmouZnJvbURhdGU9IHRoaXMuaGVhZGVyRGF0YS5kYXRlLnN0YXJ0RGF0ZSxcclxuICAgIHRoaXMudGFibGVvYmoudG9EYXRlPSB0aGlzLmhlYWRlckRhdGEuZGF0ZS5lbmREYXRlLFxyXG4gICAgZGVsZXRlIHRoaXMudGFibGVvYmoucmVjYXBWaWRlb0RhdGU7XHJcbiAgICB0aGlzLnRhYmxlb2JqLmV4cG9ydCA9IGZhbHNlO1xyXG4gICAgIHRoaXMudHlwZVZhbHVlID10eXBlO1xyXG4gICAgdGhpcy50YWJsZW9iai52YWx1ZVR5cGUgPXR5cGU7XHJcbiAgICB0aGlzLmdldFRhYmxlKCk7XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMubGluZXJvb3QpIHtcclxuICAgICAgICB0aGlzLmxpbmVyb290LmRpc3Bvc2UoKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5ib3VuY2VkbGluZXJvb3QpIHtcclxuICAgICAgICB0aGlzLmJvdW5jZWRsaW5lcm9vdC5kaXNwb3NlKCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMucG90ZW50aWFsQnV5ZXJzbGluZXJvb3QpIHtcclxuICAgICAgICB0aGlzLnBvdGVudGlhbEJ1eWVyc2xpbmVyb290LmRpc3Bvc2UoKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5lbmdhZ2Vyc2xpbmVyb290KSB7XHJcbiAgICAgICAgdGhpcy5lbmdhZ2Vyc2xpbmVyb290LmRpc3Bvc2UoKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5oZWF0TWFwcm9vdCkge1xyXG4gICAgICAgIHRoaXMuaGVhdE1hcHJvb3QuZGlzcG9zZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmludGVydmFsSWQpIHtcclxuICAgICAgICBjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWxJZCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICAvLyBjYXJkIGxpbmUgQ2hhcnRzIFN0YXJ0XHJcblxyXG4gIGZvb3RmYWxsbGluZUNoYXJ0cygpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjb25zdCBjaGFydERpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiRm9vdGZhbGxcIik7XHJcbiAgICAgIGlmICghY2hhcnREaXYpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMubGluZXJvb3QpIHtcclxuICAgICAgICB0aGlzLmxpbmVyb290LmRpc3Bvc2UoKTtcclxuICAgICAgfVxyXG4gICAgbGV0IHJvb3Q6IGFueTtcclxuICAgIHJvb3QgPSBhbTUuUm9vdC5uZXcoXCJGb290ZmFsbFwiKTtcclxuICAgIHJvb3Quc2V0VGhlbWVzKFtcclxuICAgICAgYW01dGhlbWVzX0FuaW1hdGVkLm5ldyhyb290KSxcclxuICAgICAgYW01dGhlbWVzX1Jlc3BvbnNpdmUubmV3KHJvb3QpLFxyXG4gICAgXSk7XHJcbiAgICBsZXQgY2hhcnQgPSByb290LmNvbnRhaW5lci5jaGlsZHJlbi5wdXNoKFxyXG4gICAgICBhbTV4eS5YWUNoYXJ0Lm5ldyhyb290LCB7XHJcbiAgICAgICAgcGFuWDogdHJ1ZSxcclxuICAgICAgICBwYW5ZOiB0cnVlLFxyXG4gICAgICAgIHdoZWVsWDogXCJwYW5YXCIsXHJcbiAgICAgICAgd2hlZWxZOiBcInpvb21YXCIsXHJcbiAgICAgICAgcGluY2hab29tWDogdHJ1ZSxcclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgLy8gQWRkIGRhdGFcclxuICAgIGxldCBkYXRhID0gdGhpcy5nZXRDYXJkR3JhcGhEYXRhPy5mb290ZmFsbD8uZGF0YS5tYXAoKGl0ZW06IGFueSkgPT4gKHtcclxuICAgICAgZGF0ZTogbmV3IERhdGUoaXRlbS5kYXRlKS5nZXRUaW1lKCksIC8vIENvbnZlcnQgZGF0ZSBzdHJpbmcgdG8gdGltZXN0YW1wXHJcbiAgICAgIHZhbHVlOiBOdW1iZXIoaXRlbS52YWx1ZSksXHJcbiAgICB9KSk7XHJcbiAgICAgLy8gRW5zdXJlIHRoYXQgZGF0YSBoYXMgYXQgbGVhc3QgMiBwb2ludHMgZm9yIGxpbmUgY2hhcnRcclxuICAgICBpZiAoZGF0YS5sZW5ndGggPT09IDEpIHtcclxuICAgICAgY29uc3QgZHVwbGljYXRlUG9pbnQgPSB7IC4uLmRhdGFbMF0gfTsgLy8gQ2xvbmUgdGhlIGV4aXN0aW5nIHBvaW50XHJcbiAgICAgIGR1cGxpY2F0ZVBvaW50LmRhdGUgKz0gMTsgLy8gQWRkIGEgc21hbGwgb2Zmc2V0IHRvIHRoZSBkYXRlXHJcbiAgICAgIGRhdGEucHVzaChkdXBsaWNhdGVQb2ludCk7IC8vIEFkZCB0aGUgZHVwbGljYXRlIHBvaW50IHRvIGRhdGFcclxuICAgIH1cclxuICAgIGxldCBjdXJzb3IgPSBjaGFydC5zZXQoXHJcbiAgICAgIFwiY3Vyc29yXCIsXHJcbiAgICAgIGFtNXh5LlhZQ3Vyc29yLm5ldyhyb290LCB7XHJcbiAgICAgICAgYmVoYXZpb3I6IFwibm9uZVwiLFxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIGN1cnNvci5saW5lWS5zZXQoXCJ2aXNpYmxlXCIsIGZhbHNlKTtcclxuICAgIC8vIENyZWF0ZSBheGVzXHJcbiAgICBsZXQgeEF4aXMgPSBjaGFydC54QXhlcy5wdXNoKFxyXG4gICAgICBhbTV4eS5EYXRlQXhpcy5uZXcocm9vdCwge1xyXG4gICAgICAgIG1heERldmlhdGlvbjogMC41LFxyXG4gICAgICAgIGJhc2VJbnRlcnZhbDogeyB0aW1lVW5pdDogXCJkYXlcIiwgY291bnQ6IDEgfSxcclxuICAgICAgICByZW5kZXJlcjogYW01eHkuQXhpc1JlbmRlcmVyWC5uZXcocm9vdCwgeyB9KSxcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICB4QXhpcy5nZXQoXCJyZW5kZXJlclwiKS5ncmlkLnRlbXBsYXRlLnNldChcImZvcmNlSGlkZGVuXCIsIHRydWUpO1xyXG4gICAgeEF4aXMuZ2V0KFwicmVuZGVyZXJcIikubGFiZWxzLnRlbXBsYXRlLnNldChcImZvcmNlSGlkZGVuXCIsIHRydWUpO1xyXG5cclxuICAgIGxldCB5QXhpcyA9IGNoYXJ0LnlBeGVzLnB1c2goXHJcbiAgICAgIGFtNXh5LlZhbHVlQXhpcy5uZXcocm9vdCwge1xyXG4gICAgICAgIHJlbmRlcmVyOiBhbTV4eS5BeGlzUmVuZGVyZXJZLm5ldyhyb290LCB7IH0pLFxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHlBeGlzLmdldChcInJlbmRlcmVyXCIpLmdyaWQudGVtcGxhdGUuc2V0KFwiZm9yY2VIaWRkZW5cIiwgdHJ1ZSk7XHJcbiAgICB5QXhpcy5nZXQoXCJyZW5kZXJlclwiKS5sYWJlbHMudGVtcGxhdGUuc2V0KFwiZm9yY2VIaWRkZW5cIiwgdHJ1ZSk7XHJcblxyXG4gICAgLy8gQ3JlYXRlIHNlcmllc1xyXG4gICAgbGV0IHNlcmllcyA9IGNoYXJ0LnNlcmllcy5wdXNoKFxyXG4gICAgICBhbTV4eS5MaW5lU2VyaWVzLm5ldyhyb290LCB7XHJcbiAgICAgICAgbmFtZTogXCJTZXJpZXNcIixcclxuICAgICAgICB4QXhpczogeEF4aXMsXHJcbiAgICAgICAgeUF4aXM6IHlBeGlzLFxyXG4gICAgICAgIHZhbHVlWUZpZWxkOiBcInZhbHVlXCIsXHJcbiAgICAgICAgdmFsdWVYRmllbGQ6IFwiZGF0ZVwiLFxyXG4gICAgICAgIHN0cm9rZTogYW01LmNvbG9yKDB4MDBhM2ZmKSwgLy8gU2V0IHRoZSBsaW5lIGNvbG9yIGhlcmUgKHJlZCBpbiB0aGlzIGNhc2UpXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgc2VyaWVzLmJ1bGxldHMucHVzaChmdW5jdGlvbiAoKSB7XHJcbiAgICAgIGxldCBidWxsZXRDaXJjbGUgPSBhbTUuQ2lyY2xlLm5ldyhyb290LCB7XHJcbiAgICAgICAgcmFkaXVzOiAwLFxyXG4gICAgICAgIGZpbGw6IHNlcmllcy5nZXQoXCJmaWxsXCIpXHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gYW01LkJ1bGxldC5uZXcocm9vdCwge1xyXG4gICAgICAgIHNwcml0ZTogYnVsbGV0Q2lyY2xlXHJcbiAgICAgIH0pXHJcbiAgICB9KVxyXG4gICAgc2VyaWVzLmRhdGEuc2V0QWxsKGRhdGEpO1xyXG4gICAgc2VyaWVzLnNldChcclxuICAgICAgXCJ0b29sdGlwXCIsXHJcbiAgICAgIGFtNS5Ub29sdGlwLm5ldyhyb290LCB7XHJcbiAgICAgICAgbGFiZWxUZXh0OiBcInt2YWx1ZVl9XCIsXHJcbiAgICAgICAgZ2V0RmlsbEZyb21TcHJpdGU6IGZhbHNlLCAvLyBQcmV2ZW50cyB0aGUgdG9vbHRpcCBmcm9tIGluaGVyaXRpbmcgY29sb3IgZnJvbSB0aGUgc3ByaXRlXHJcbiAgICAgICAgYmFja2dyb3VuZDogYW01LlJlY3RhbmdsZS5uZXcocm9vdCwge1xyXG4gICAgICAgICAgZmlsbDogYW01LmNvbG9yKDB4ZGFmMWZmKSwgLy8gU2V0IHRoZSB0b29sdGlwIGJhY2tncm91bmQgY29sb3IgaGVyZSAoYmx1ZSBpbiB0aGlzIGNhc2UpXHJcbiAgICAgICAgfSksXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgdGhpcy5saW5lcm9vdCA9IHJvb3Q7XHJcbiAgfSwwKVxyXG4gIH1cclxuICBib3VuY2VkbGluZUNoYXJ0cygpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjb25zdCBjaGFydERpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiQm91bmNlZFJhdGVcIik7XHJcbiAgICAgIGlmICghY2hhcnREaXYpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuYm91bmNlZGxpbmVyb290KSB7XHJcbiAgICAgICAgdGhpcy5ib3VuY2VkbGluZXJvb3QuZGlzcG9zZSgpO1xyXG4gICAgICB9XHJcbiAgICBsZXQgcm9vdDogYW55O1xyXG4gICAgcm9vdCA9IGFtNS5Sb290Lm5ldyhcIkJvdW5jZWRSYXRlXCIpO1xyXG4gICAgcm9vdC5zZXRUaGVtZXMoW1xyXG4gICAgICBhbTV0aGVtZXNfQW5pbWF0ZWQubmV3KHJvb3QpLFxyXG4gICAgICBhbTV0aGVtZXNfUmVzcG9uc2l2ZS5uZXcocm9vdCksXHJcbiAgICBdKTtcclxuICAgIGxldCBjaGFydCA9IHJvb3QuY29udGFpbmVyLmNoaWxkcmVuLnB1c2goXHJcbiAgICAgIGFtNXh5LlhZQ2hhcnQubmV3KHJvb3QsIHtcclxuICAgICAgICBwYW5YOiB0cnVlLFxyXG4gICAgICAgIHBhblk6IHRydWUsXHJcbiAgICAgICAgd2hlZWxYOiBcInBhblhcIixcclxuICAgICAgICB3aGVlbFk6IFwiem9vbVhcIixcclxuICAgICAgICBwaW5jaFpvb21YOiB0cnVlLFxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgICAvLyBBZGQgZGF0YVxyXG4gICAgbGV0IGRhdGEgPSB0aGlzLmdldENhcmRHcmFwaERhdGE/LmJvdW5jZWQ/LmRhdGEubWFwKChpdGVtOiBhbnkpID0+ICh7XHJcbiAgICAgIGRhdGU6IG5ldyBEYXRlKGl0ZW0uZGF0ZSkuZ2V0VGltZSgpLCAvLyBDb252ZXJ0IGRhdGUgc3RyaW5nIHRvIHRpbWVzdGFtcFxyXG4gICAgICB2YWx1ZTogTnVtYmVyKGl0ZW0udmFsdWUpLFxyXG4gICAgfSkpO1xyXG4gICAgbGV0IGN1cnNvciA9IGNoYXJ0LnNldChcclxuICAgICAgXCJjdXJzb3JcIixcclxuICAgICAgYW01eHkuWFlDdXJzb3IubmV3KHJvb3QsIHtcclxuICAgICAgICBiZWhhdmlvcjogXCJub25lXCIsXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgY3Vyc29yLmxpbmVZLnNldChcInZpc2libGVcIiwgZmFsc2UpO1xyXG4gICAgLy8gQ3JlYXRlIGF4ZXNcclxuICAgIGxldCB4QXhpcyA9IGNoYXJ0LnhBeGVzLnB1c2goXHJcbiAgICAgIGFtNXh5LkRhdGVBeGlzLm5ldyhyb290LCB7XHJcbiAgICAgICAgbWF4RGV2aWF0aW9uOiAwLjIsXHJcbiAgICAgICAgYmFzZUludGVydmFsOiB7IHRpbWVVbml0OiBcImRheVwiLCBjb3VudDogMSB9LFxyXG4gICAgICAgIHJlbmRlcmVyOiBhbTV4eS5BeGlzUmVuZGVyZXJYLm5ldyhyb290LCB7IG1pbm9yR3JpZEVuYWJsZWQ6IHRydWUgfSksXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgeEF4aXMuZ2V0KFwicmVuZGVyZXJcIikuZ3JpZC50ZW1wbGF0ZS5zZXQoXCJmb3JjZUhpZGRlblwiLCB0cnVlKTtcclxuICAgIHhBeGlzLmdldChcInJlbmRlcmVyXCIpLmxhYmVscy50ZW1wbGF0ZS5zZXQoXCJmb3JjZUhpZGRlblwiLCB0cnVlKTtcclxuXHJcbiAgICBsZXQgeUF4aXMgPSBjaGFydC55QXhlcy5wdXNoKFxyXG4gICAgICBhbTV4eS5WYWx1ZUF4aXMubmV3KHJvb3QsIHtcclxuICAgICAgICByZW5kZXJlcjogYW01eHkuQXhpc1JlbmRlcmVyWS5uZXcocm9vdCwgeyBwYW46IFwiem9vbVwiIH0pLFxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHlBeGlzLmdldChcInJlbmRlcmVyXCIpLmdyaWQudGVtcGxhdGUuc2V0KFwiZm9yY2VIaWRkZW5cIiwgdHJ1ZSk7XHJcbiAgICB5QXhpcy5nZXQoXCJyZW5kZXJlclwiKS5sYWJlbHMudGVtcGxhdGUuc2V0KFwiZm9yY2VIaWRkZW5cIiwgdHJ1ZSk7XHJcblxyXG4gICAgLy8gQ3JlYXRlIHNlcmllc1xyXG4gICAgbGV0IHNlcmllcyA9IGNoYXJ0LnNlcmllcy5wdXNoKFxyXG4gICAgICBhbTV4eS5MaW5lU2VyaWVzLm5ldyhyb290LCB7XHJcbiAgICAgICAgbmFtZTogXCJTZXJpZXNcIixcclxuICAgICAgICB4QXhpczogeEF4aXMsXHJcbiAgICAgICAgeUF4aXM6IHlBeGlzLFxyXG4gICAgICAgIHZhbHVlWUZpZWxkOiBcInZhbHVlXCIsXHJcbiAgICAgICAgdmFsdWVYRmllbGQ6IFwiZGF0ZVwiLFxyXG4gICAgICAgIHN0cm9rZTogYW01LmNvbG9yKDB4MDBhM2ZmKSwgLy8gU2V0IHRoZSBsaW5lIGNvbG9yIGhlcmUgKHJlZCBpbiB0aGlzIGNhc2UpXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgc2VyaWVzLmJ1bGxldHMucHVzaChmdW5jdGlvbiAoKSB7XHJcbiAgICAgIGxldCBidWxsZXRDaXJjbGUgPSBhbTUuQ2lyY2xlLm5ldyhyb290LCB7XHJcbiAgICAgICAgcmFkaXVzOiAwLFxyXG4gICAgICAgIGZpbGw6IHNlcmllcy5nZXQoXCJmaWxsXCIpXHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gYW01LkJ1bGxldC5uZXcocm9vdCwge1xyXG4gICAgICAgIHNwcml0ZTogYnVsbGV0Q2lyY2xlXHJcbiAgICAgIH0pXHJcbiAgICB9KVxyXG4gICAgc2VyaWVzLmRhdGEuc2V0QWxsKGRhdGEpO1xyXG4gICAgc2VyaWVzLnNldChcclxuICAgICAgXCJ0b29sdGlwXCIsXHJcbiAgICAgIGFtNS5Ub29sdGlwLm5ldyhyb290LCB7XHJcbiAgICAgICAgbGFiZWxUZXh0OiBcInt2YWx1ZVl9XCIsXHJcbiAgICAgICAgZ2V0RmlsbEZyb21TcHJpdGU6IGZhbHNlLCAvLyBQcmV2ZW50cyB0aGUgdG9vbHRpcCBmcm9tIGluaGVyaXRpbmcgY29sb3IgZnJvbSB0aGUgc3ByaXRlXHJcbiAgICAgICAgYmFja2dyb3VuZDogYW01LlJlY3RhbmdsZS5uZXcocm9vdCwge1xyXG4gICAgICAgICAgZmlsbDogYW01LmNvbG9yKDB4ZGFmMWZmKSwgLy8gU2V0IHRoZSB0b29sdGlwIGJhY2tncm91bmQgY29sb3IgaGVyZSAoYmx1ZSBpbiB0aGlzIGNhc2UpXHJcbiAgICAgICAgfSksXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgdGhpcy5ib3VuY2VkbGluZXJvb3QgPSByb290O1xyXG4gIH0sMClcclxuICB9XHJcblxyXG4gIHBvdGVudGlhbGxpbmVDaGFydHMoKSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgY2hhcnREaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIlBvdGVudGlhbEJ1eWVyc1wiKTtcclxuICAgICAgaWYgKCFjaGFydERpdikge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5wb3RlbnRpYWxCdXllcnNsaW5lcm9vdCkge1xyXG4gICAgICAgIHRoaXMucG90ZW50aWFsQnV5ZXJzbGluZXJvb3QuZGlzcG9zZSgpO1xyXG4gICAgICB9XHJcbiAgICBsZXQgcm9vdDogYW55O1xyXG4gICAgcm9vdCA9IGFtNS5Sb290Lm5ldyhcIlBvdGVudGlhbEJ1eWVyc1wiKTtcclxuICAgIHJvb3Quc2V0VGhlbWVzKFtcclxuICAgICAgYW01dGhlbWVzX0FuaW1hdGVkLm5ldyhyb290KSxcclxuICAgICAgYW01dGhlbWVzX1Jlc3BvbnNpdmUubmV3KHJvb3QpLFxyXG4gICAgXSk7XHJcbiAgICBsZXQgY2hhcnQgPSByb290LmNvbnRhaW5lci5jaGlsZHJlbi5wdXNoKFxyXG4gICAgICBhbTV4eS5YWUNoYXJ0Lm5ldyhyb290LCB7XHJcbiAgICAgICAgcGFuWDogdHJ1ZSxcclxuICAgICAgICBwYW5ZOiB0cnVlLFxyXG4gICAgICAgIHdoZWVsWDogXCJwYW5YXCIsXHJcbiAgICAgICAgd2hlZWxZOiBcInpvb21YXCIsXHJcbiAgICAgICAgcGluY2hab29tWDogdHJ1ZSxcclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgLy8gQWRkIGRhdGFcclxuICAgIGxldCBkYXRhID0gdGhpcy5nZXRDYXJkR3JhcGhEYXRhPy5wb3RlbnRpYWxCdXllcnM/LmRhdGEubWFwKFxyXG4gICAgICAoaXRlbTogYW55KSA9PiAoe1xyXG4gICAgICAgIGRhdGU6IG5ldyBEYXRlKGl0ZW0uZGF0ZSkuZ2V0VGltZSgpLCAvLyBDb252ZXJ0IGRhdGUgc3RyaW5nIHRvIHRpbWVzdGFtcFxyXG4gICAgICAgIHZhbHVlOiBOdW1iZXIoaXRlbS52YWx1ZSksXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgbGV0IGN1cnNvciA9IGNoYXJ0LnNldChcclxuICAgICAgXCJjdXJzb3JcIixcclxuICAgICAgYW01eHkuWFlDdXJzb3IubmV3KHJvb3QsIHtcclxuICAgICAgICBiZWhhdmlvcjogXCJub25lXCIsXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgY3Vyc29yLmxpbmVZLnNldChcInZpc2libGVcIiwgZmFsc2UpO1xyXG4gICAgLy8gQ3JlYXRlIGF4ZXNcclxuICAgIGxldCB4QXhpcyA9IGNoYXJ0LnhBeGVzLnB1c2goXHJcbiAgICAgIGFtNXh5LkRhdGVBeGlzLm5ldyhyb290LCB7XHJcbiAgICAgICAgbWF4RGV2aWF0aW9uOiAwLjIsXHJcbiAgICAgICAgYmFzZUludGVydmFsOiB7IHRpbWVVbml0OiBcImRheVwiLCBjb3VudDogMSB9LFxyXG4gICAgICAgIHJlbmRlcmVyOiBhbTV4eS5BeGlzUmVuZGVyZXJYLm5ldyhyb290LCB7IG1pbm9yR3JpZEVuYWJsZWQ6IHRydWUgfSksXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgeEF4aXMuZ2V0KFwicmVuZGVyZXJcIikuZ3JpZC50ZW1wbGF0ZS5zZXQoXCJmb3JjZUhpZGRlblwiLCB0cnVlKTtcclxuICAgIHhBeGlzLmdldChcInJlbmRlcmVyXCIpLmxhYmVscy50ZW1wbGF0ZS5zZXQoXCJmb3JjZUhpZGRlblwiLCB0cnVlKTtcclxuXHJcbiAgICBsZXQgeUF4aXMgPSBjaGFydC55QXhlcy5wdXNoKFxyXG4gICAgICBhbTV4eS5WYWx1ZUF4aXMubmV3KHJvb3QsIHtcclxuICAgICAgICByZW5kZXJlcjogYW01eHkuQXhpc1JlbmRlcmVyWS5uZXcocm9vdCwgeyBwYW46IFwiem9vbVwiIH0pLFxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHlBeGlzLmdldChcInJlbmRlcmVyXCIpLmdyaWQudGVtcGxhdGUuc2V0KFwiZm9yY2VIaWRkZW5cIiwgdHJ1ZSk7XHJcbiAgICB5QXhpcy5nZXQoXCJyZW5kZXJlclwiKS5sYWJlbHMudGVtcGxhdGUuc2V0KFwiZm9yY2VIaWRkZW5cIiwgdHJ1ZSk7XHJcblxyXG4gICAgLy8gQ3JlYXRlIHNlcmllc1xyXG4gICAgbGV0IHNlcmllcyA9IGNoYXJ0LnNlcmllcy5wdXNoKFxyXG4gICAgICBhbTV4eS5MaW5lU2VyaWVzLm5ldyhyb290LCB7XHJcbiAgICAgICAgbmFtZTogXCJTZXJpZXNcIixcclxuICAgICAgICB4QXhpczogeEF4aXMsXHJcbiAgICAgICAgeUF4aXM6IHlBeGlzLFxyXG4gICAgICAgIHZhbHVlWUZpZWxkOiBcInZhbHVlXCIsXHJcbiAgICAgICAgdmFsdWVYRmllbGQ6IFwiZGF0ZVwiLFxyXG4gICAgICAgIHN0cm9rZTogYW01LmNvbG9yKDB4MDBhM2ZmKSwgLy8gU2V0IHRoZSBsaW5lIGNvbG9yIGhlcmUgKHJlZCBpbiB0aGlzIGNhc2UpXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgc2VyaWVzLmJ1bGxldHMucHVzaChmdW5jdGlvbiAoKSB7XHJcbiAgICAgIGxldCBidWxsZXRDaXJjbGUgPSBhbTUuQ2lyY2xlLm5ldyhyb290LCB7XHJcbiAgICAgICAgcmFkaXVzOiAwLFxyXG4gICAgICAgIGZpbGw6IHNlcmllcy5nZXQoXCJmaWxsXCIpXHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gYW01LkJ1bGxldC5uZXcocm9vdCwge1xyXG4gICAgICAgIHNwcml0ZTogYnVsbGV0Q2lyY2xlXHJcbiAgICAgIH0pXHJcbiAgICB9KVxyXG4gICAgc2VyaWVzLmRhdGEuc2V0QWxsKGRhdGEpO1xyXG4gICAgc2VyaWVzLnNldChcclxuICAgICAgXCJ0b29sdGlwXCIsXHJcbiAgICAgIGFtNS5Ub29sdGlwLm5ldyhyb290LCB7XHJcbiAgICAgICAgbGFiZWxUZXh0OiBcInt2YWx1ZVl9XCIsXHJcbiAgICAgICAgZ2V0RmlsbEZyb21TcHJpdGU6IGZhbHNlLCAvLyBQcmV2ZW50cyB0aGUgdG9vbHRpcCBmcm9tIGluaGVyaXRpbmcgY29sb3IgZnJvbSB0aGUgc3ByaXRlXHJcbiAgICAgICAgYmFja2dyb3VuZDogYW01LlJlY3RhbmdsZS5uZXcocm9vdCwge1xyXG4gICAgICAgICAgZmlsbDogYW01LmNvbG9yKDB4ZGFmMWZmKSwgLy8gU2V0IHRoZSB0b29sdGlwIGJhY2tncm91bmQgY29sb3IgaGVyZSAoYmx1ZSBpbiB0aGlzIGNhc2UpXHJcbiAgICAgICAgfSksXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgdGhpcy5wb3RlbnRpYWxCdXllcnNsaW5lcm9vdCA9IHJvb3Q7XHJcbiAgfSwwKVxyXG4gIH1cclxuXHJcbiAgZW5nYWdlcnNsaW5lQ2hhcnRzKCkge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGNoYXJ0RGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJlbmdhZ2Vyc1wiKTtcclxuICAgICAgaWYgKCFjaGFydERpdikge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5lbmdhZ2Vyc2xpbmVyb290KSB7XHJcbiAgICAgICAgdGhpcy5lbmdhZ2Vyc2xpbmVyb290LmRpc3Bvc2UoKTtcclxuICAgICAgfVxyXG4gICAgbGV0IHJvb3Q6IGFueTtcclxuICAgIHJvb3QgPSBhbTUuUm9vdC5uZXcoXCJlbmdhZ2Vyc1wiKTtcclxuICAgIHJvb3Quc2V0VGhlbWVzKFtcclxuICAgICAgYW01dGhlbWVzX0FuaW1hdGVkLm5ldyhyb290KSxcclxuICAgICAgYW01dGhlbWVzX1Jlc3BvbnNpdmUubmV3KHJvb3QpLFxyXG4gICAgXSk7XHJcbiAgICBsZXQgY2hhcnQgPSByb290LmNvbnRhaW5lci5jaGlsZHJlbi5wdXNoKFxyXG4gICAgICBhbTV4eS5YWUNoYXJ0Lm5ldyhyb290LCB7XHJcbiAgICAgICAgcGFuWDogdHJ1ZSxcclxuICAgICAgICBwYW5ZOiB0cnVlLFxyXG4gICAgICAgIHdoZWVsWDogXCJwYW5YXCIsXHJcbiAgICAgICAgd2hlZWxZOiBcInpvb21YXCIsXHJcbiAgICAgICAgcGluY2hab29tWDogdHJ1ZSxcclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgLy8gQWRkIGRhdGFcclxuICAgIGxldCBkYXRhID0gdGhpcy5nZXRDYXJkR3JhcGhEYXRhPy5lbmdhZ2Vycz8uZGF0YS5tYXAoKGl0ZW06IGFueSkgPT4gKHtcclxuICAgICAgZGF0ZTogbmV3IERhdGUoaXRlbS5kYXRlKS5nZXRUaW1lKCksIC8vIENvbnZlcnQgZGF0ZSBzdHJpbmcgdG8gdGltZXN0YW1wXHJcbiAgICAgIHZhbHVlOiBOdW1iZXIoaXRlbS52YWx1ZSksXHJcbiAgICB9KSk7XHJcbiAgICBsZXQgY3Vyc29yID0gY2hhcnQuc2V0KFxyXG4gICAgICBcImN1cnNvclwiLFxyXG4gICAgICBhbTV4eS5YWUN1cnNvci5uZXcocm9vdCwge1xyXG4gICAgICAgIGJlaGF2aW9yOiBcIm5vbmVcIixcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICBjdXJzb3IubGluZVkuc2V0KFwidmlzaWJsZVwiLCBmYWxzZSk7XHJcbiAgICAvLyBDcmVhdGUgYXhlc1xyXG4gICAgbGV0IHhBeGlzID0gY2hhcnQueEF4ZXMucHVzaChcclxuICAgICAgYW01eHkuRGF0ZUF4aXMubmV3KHJvb3QsIHtcclxuICAgICAgICBtYXhEZXZpYXRpb246IDAuMixcclxuICAgICAgICBiYXNlSW50ZXJ2YWw6IHsgdGltZVVuaXQ6IFwiZGF5XCIsIGNvdW50OiAxIH0sXHJcbiAgICAgICAgcmVuZGVyZXI6IGFtNXh5LkF4aXNSZW5kZXJlclgubmV3KHJvb3QsIHsgbWlub3JHcmlkRW5hYmxlZDogdHJ1ZSB9KSxcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICB4QXhpcy5nZXQoXCJyZW5kZXJlclwiKS5ncmlkLnRlbXBsYXRlLnNldChcImZvcmNlSGlkZGVuXCIsIHRydWUpO1xyXG4gICAgeEF4aXMuZ2V0KFwicmVuZGVyZXJcIikubGFiZWxzLnRlbXBsYXRlLnNldChcImZvcmNlSGlkZGVuXCIsIHRydWUpO1xyXG5cclxuICAgIGxldCB5QXhpcyA9IGNoYXJ0LnlBeGVzLnB1c2goXHJcbiAgICAgIGFtNXh5LlZhbHVlQXhpcy5uZXcocm9vdCwge1xyXG4gICAgICAgIHJlbmRlcmVyOiBhbTV4eS5BeGlzUmVuZGVyZXJZLm5ldyhyb290LCB7IHBhbjogXCJ6b29tXCIgfSksXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgeUF4aXMuZ2V0KFwicmVuZGVyZXJcIikuZ3JpZC50ZW1wbGF0ZS5zZXQoXCJmb3JjZUhpZGRlblwiLCB0cnVlKTtcclxuICAgIHlBeGlzLmdldChcInJlbmRlcmVyXCIpLmxhYmVscy50ZW1wbGF0ZS5zZXQoXCJmb3JjZUhpZGRlblwiLCB0cnVlKTtcclxuXHJcbiAgICAvLyBDcmVhdGUgc2VyaWVzXHJcbiAgICBsZXQgc2VyaWVzID0gY2hhcnQuc2VyaWVzLnB1c2goXHJcbiAgICAgIGFtNXh5LkxpbmVTZXJpZXMubmV3KHJvb3QsIHtcclxuICAgICAgICBuYW1lOiBcIlNlcmllc1wiLFxyXG4gICAgICAgIHhBeGlzOiB4QXhpcyxcclxuICAgICAgICB5QXhpczogeUF4aXMsXHJcbiAgICAgICAgdmFsdWVZRmllbGQ6IFwidmFsdWVcIixcclxuICAgICAgICB2YWx1ZVhGaWVsZDogXCJkYXRlXCIsXHJcbiAgICAgICAgc3Ryb2tlOiBhbTUuY29sb3IoMHgwMGEzZmYpLCAvLyBTZXQgdGhlIGxpbmUgY29sb3IgaGVyZSAocmVkIGluIHRoaXMgY2FzZSlcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICBzZXJpZXMuYnVsbGV0cy5wdXNoKGZ1bmN0aW9uICgpIHtcclxuICAgICAgbGV0IGJ1bGxldENpcmNsZSA9IGFtNS5DaXJjbGUubmV3KHJvb3QsIHtcclxuICAgICAgICByYWRpdXM6IDAsXHJcbiAgICAgICAgZmlsbDogc2VyaWVzLmdldChcImZpbGxcIilcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBhbTUuQnVsbGV0Lm5ldyhyb290LCB7XHJcbiAgICAgICAgc3ByaXRlOiBidWxsZXRDaXJjbGVcclxuICAgICAgfSlcclxuICAgIH0pXHJcbiAgICBzZXJpZXMuZGF0YS5zZXRBbGwoZGF0YSk7XHJcbiAgICBzZXJpZXMuc2V0KFxyXG4gICAgICBcInRvb2x0aXBcIixcclxuICAgICAgYW01LlRvb2x0aXAubmV3KHJvb3QsIHtcclxuICAgICAgICBsYWJlbFRleHQ6IFwie3ZhbHVlWX1cIixcclxuICAgICAgICBnZXRGaWxsRnJvbVNwcml0ZTogZmFsc2UsIC8vIFByZXZlbnRzIHRoZSB0b29sdGlwIGZyb20gaW5oZXJpdGluZyBjb2xvciBmcm9tIHRoZSBzcHJpdGVcclxuICAgICAgICBiYWNrZ3JvdW5kOiBhbTUuUmVjdGFuZ2xlLm5ldyhyb290LCB7XHJcbiAgICAgICAgICBmaWxsOiBhbTUuY29sb3IoMHhkYWYxZmYpLCAvLyBTZXQgdGhlIHRvb2x0aXAgYmFja2dyb3VuZCBjb2xvciBoZXJlIChibHVlIGluIHRoaXMgY2FzZSlcclxuICAgICAgICB9KSxcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICB0aGlzLmVuZ2FnZXJzbGluZXJvb3QgPSByb290O1xyXG4gIH0sMClcclxuICB9XHJcbiAgLy8gY2FyZCBsaW5lIENoYXJ0cyBFbmRcclxuXHJcbiAgaGVhdE1hcCgpIHtcclxuICAgIHRoaXMuaGVhdGxvYWRpbmcgPSBmYWxzZVxyXG4gICAgdGhpcy5oZWF0bm9EYXRhID0gZmFsc2VcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjb25zdCBjaGFydERpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY2hhcnRkaXZcIik7XHJcbiAgICAgIGlmICghY2hhcnREaXYpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuaGVhdE1hcHJvb3QpIHtcclxuICAgICAgICB0aGlzLmhlYXRNYXByb290LmRpc3Bvc2UoKTtcclxuICAgICAgfVxyXG4gICAgbGV0IHJvb3QgPSBhbTUuUm9vdC5uZXcoXCJjaGFydGRpdlwiKTtcclxuICAgIHJvb3Quc2V0VGhlbWVzKFthbTV0aGVtZXNfQW5pbWF0ZWQubmV3KHJvb3QpXSk7XHJcblxyXG4gICAgbGV0IGNoYXJ0ID0gcm9vdC5jb250YWluZXIuY2hpbGRyZW4ucHVzaChcclxuICAgICAgYW01cGVyY2VudC5TbGljZWRDaGFydC5uZXcocm9vdCwge1xyXG4gICAgICAgIGxheW91dDogcm9vdC52ZXJ0aWNhbExheW91dCxcclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgbGV0IGRhdGEgPSB0aGlzLmhlYXRNYXBEYXRhO1xyXG4gIFxyXG4gICAgZGF0YS5zb3J0KChhOmFueSwgYjphbnkpID0+IGIudmFsdWUgLSBhLnZhbHVlKTtcclxuICAgIGxldCBzZXJpZXMgPSBjaGFydC5zZXJpZXMucHVzaChcclxuICAgICAgYW01cGVyY2VudC5GdW5uZWxTZXJpZXMubmV3KHJvb3QsIHtcclxuICAgICAgICBhbGlnbkxhYmVsczogZmFsc2UsXHJcbiAgICAgICAgb3JpZW50YXRpb246IFwiaG9yaXpvbnRhbFwiLFxyXG4gICAgICAgIHZhbHVlRmllbGQ6IFwidmFsdWVcIixcclxuICAgICAgICBjYXRlZ29yeUZpZWxkOiBcImNhdGVnb3J5XCIsXHJcbiAgICAgICAgYm90dG9tUmF0aW86IDEsXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG5cclxuICAgIHNlcmllcy5kYXRhLnNldEFsbChkYXRhKTtcclxuICAgIHNlcmllcy5hcHBlYXIoKTtcclxuICAgIC8vIFVwZGF0ZSB0aGUgbGFiZWwgdGVtcGxhdGUgdG8gaW5jbHVkZSB0aGUgcGVyY2VudGFnZVxyXG4gICAgc2VyaWVzLmxhYmVscy50ZW1wbGF0ZS5zZXRBbGwoe1xyXG4gICAgICBwb3B1bGF0ZVRleHQ6IHRydWUsXHJcbiAgICAgIHRleHQ6IFwie2NhdGVnb3J5fSAoe2NvdW50fSUpXFxuXFxue3ZhbHVlfVwiLFxyXG4gICAgICBmb250U2l6ZTpcIjEzcHhcIixcclxuICAgICAgZm9udFdlaWdodDpcIjQwMFwiLFxyXG4gICAgICB0ZXh0QWxpZ246XCJjZW50ZXJcIlxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmhlYXRNYXByb290ID0gcm9vdDtcclxuICAgIGNoYXJ0LmFwcGVhcigxMDAwLCAxMDApO1xyXG4gIH0sMCk7XHJcblxyXG4gIH1cclxuXHJcbiAgdHlwZTogYW55ID0gXCJkYWlseVwiO1xyXG4gIHNlbGVjdFBsYW4odHlwZTogYW55KSB7XHJcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xyXG4gIH1cclxuXHJcbiAgLy8gVG9nZ2xlIGZ1bmN0aW9uIGZvciB0aGUgc3dpdGNoXHJcbiAgdG9nZ2xlQXZlcmFnZShldnQ6YW55KSB7XHJcbiAgICB0aGlzLmlzQXZlcmFnZSA9IGV2dC50YXJnZXQuY2hlY2tlZDtcclxuICAgIHRoaXMuc2VydmljZS50b2dnbGVBdmVyYWdlKHRoaXMuaXNBdmVyYWdlKTtcclxuICAgIGNvbnNvbGUubG9nKCdUb2dnbGluZyBBdmVyYWdlOicsIHRoaXMuaXNBdmVyYWdlKTtcclxuICAgIHRoaXMudGFibGVvYmouZnJvbURhdGU9IHRoaXMuaGVhZGVyRGF0YS5kYXRlLnN0YXJ0RGF0ZSxcclxuICAgIHRoaXMudGFibGVvYmoudG9EYXRlPSB0aGlzLmhlYWRlckRhdGEuZGF0ZS5lbmREYXRlLFxyXG4gICAgZGVsZXRlIHRoaXMudGFibGVvYmoucmVjYXBWaWRlb0RhdGU7XHJcbiAgICBkZWxldGUgdGhpcy50YWJsZW9iai5saW1pdDsgZGVsZXRlIHRoaXMudGFibGVvYmouZXhwb3J0O1xyXG4gICAgZGVsZXRlIHRoaXMudGFibGVvYmoub2Zmc2V0O1xyXG4gICAgaWYodGhpcy5pc0F2ZXJhZ2UgPT09IHRydWUpe1xyXG4gICAgdGhpcy52YWx1ZVR5cGUgPSAnYXZlcmFnZSc7XHJcbiAgICAgdGhpcy5mb290ZmFsbE5hbWUgPSAnQXZnLiBGb290ZmFsbCdcclxuICAgdGhpcy50YWJsZW9iai52YWx1ZVR5cGUgPXRoaXMudmFsdWVUeXBlO1xyXG4gICB0aGlzLmNvbnZlcnNpb25WYWx1ZSA9ICcnO1xyXG4gICB0aGlzLnR5cGVWYWx1ZT0nYXZlcmFnZSc7XHJcbiAgIHRoaXMudmFsdWVDb252ZXJzaW9uUmF0ZSA9IHRoaXMuZ2V0Q2FyZERhdGE/LmNvbnZlcnNpb24/LnJhdGU7XHJcbiAgfSAgZWxzZSB7XHJcbiAgICAgdGhpcy5mb290ZmFsbE5hbWUgPSAnRm9vdGZhbGwnXHJcbiAgICB0aGlzLnRhYmxlb2JqLnZhbHVlVHlwZSA9J2FjdHVhbCc7XHJcbiAgICB0aGlzLnR5cGVWYWx1ZT0nc3VtJztcclxuICAgIHRoaXMuY29udmVyc2lvblZhbHVlID0gJyc7XHJcbiAgICB0aGlzLnZhbHVlQ29udmVyc2lvblJhdGUgPSB0aGlzLmdldENhcmREYXRhPy5jb252ZXJzaW9uPy5yYXRlO1xyXG4gIH1cclxuICB0aGlzLnByZXZpb3VzVmFsdWUgPSAnZm9vdGZhbGwnOyBcclxuIFxyXG4gICAgdGhpcy5nZXRDYXJkKCk7XHJcbiAgICB0aGlzLmdldENhcmRHcmFwaCgpO1xyXG4gICAgdGhpcy5nZXRUYWJsZSgpO1xyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgY2FtZXJhVmlldygpe1xyXG4gICAgdGhpcy5zdG9yZUlkYXJyYXkgPSB0aGlzLmhlYWRlckRhdGE/LnN0b3Jlcy5maWx0ZXIoKHN0b3JlOmFueSkgPT4gc3RvcmUuY2hlY2tlZCkubWFwKChzdG9yZTphbnkpID0+IHN0b3JlLnN0b3JlSWQpXHJcbiAgICBsZXQgZGF0YTogYW55ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImhlYWRlci1maWx0ZXJzXCIpIHx8IFwiXCIpO1xyXG4gICAgZGF0YS5zdG9yZSA9IHRoaXMuc3RvcmVJZGFycmF5WzBdO1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJoZWFkZXItZmlsdGVyc1wiLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7XHJcbiAgICB0aGlzLmdzLmRhdGFSYW5nZVZhbHVlLm5leHQoZGF0YSk7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCIvbWFuYWdlL3N0b3Jlcy9jYW1lcmFzXCJdLCB7XHJcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7IHN0b3JlSWQ6IHRoaXMuc3RvcmVJZGFycmF5WzBdfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0WExTWCgpIHtcclxuICAgIHRoaXMudGFibGVvYmoub2Zmc2V0ID0gMDtcclxuICAgIHRoaXMudGFibGVvYmoubGltaXQgPSAxMDAwMDtcclxuICAgICh0aGlzLnRhYmxlb2JqLnZhbHVlVHlwZSA9IHRoaXMudHlwZVZhbHVlKTtcclxuICAgIHRoaXMudGFibGVvYmouZnJvbURhdGU9IHRoaXMuaGVhZGVyRGF0YS5kYXRlLnN0YXJ0RGF0ZSxcclxuICAgIHRoaXMudGFibGVvYmoudG9EYXRlPSB0aGlzLmhlYWRlckRhdGEuZGF0ZS5lbmREYXRlLFxyXG4gICAgdGhpcy50YWJsZW9iai5zZWFyY2ggPSB0aGlzLnNlYXJjaFZhbHVlO1xyXG4gICAgdGhpcy50YWJsZW9iai5leHBvcnQgPSB0cnVlO1xyXG4gICAgZGVsZXRlIHRoaXMudGFibGVvYmoucmVjYXBWaWRlb0RhdGU7XHJcbiAgICB0aGlzLnNlcnZpY2VcclxuICAgIC5nZXRTdW1tYXJ5VGFibGVMaXN0RXhwb3J0KHRoaXMudGFibGVvYmopXHJcbiAgICA/LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgPy5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgICB0aGlzLmV4Y2VsU2VydmljZS5zYXZlQXNFeGNlbEZpbGUocmVzLCBcIlRyYWZmaWMgU3VtbWFyeSBUYWJsZSBMaXN0XCIpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKCkgPT4ge30sXHJcbiAgICB9KTtcclxuICAgIHRoaXMudGFibGVvYmoubGltaXQgPSB0aGlzLmxpbWl0O1xyXG4gICAgdGhpcy50YWJsZW9iai5leHBvcnQgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIG9uU29ydChjb2x1bW46IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuc29ydGVkQ29sdW1uID09PSBjb2x1bW4pIHtcclxuICAgICAgdGhpcy5zb3J0RGlyZWN0aW9uID0gdGhpcy5zb3J0RGlyZWN0aW9uID09PSAxID8gLTEgOiAxO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zb3J0ZWRDb2x1bW4gPSBjb2x1bW47XHJcbiAgICAgIHRoaXMuc29ydERpcmVjdGlvbiA9IDE7XHJcbiAgICB9XHJcbiAgICB0aGlzLnRhYmxlb2JqLmZyb21EYXRlPSB0aGlzLmhlYWRlckRhdGEuZGF0ZS5zdGFydERhdGUsXHJcbiAgICB0aGlzLnRhYmxlb2JqLnRvRGF0ZT0gdGhpcy5oZWFkZXJEYXRhLmRhdGUuZW5kRGF0ZSxcclxuICAgIGRlbGV0ZSB0aGlzLnRhYmxlb2JqLnJlY2FwVmlkZW9EYXRlO1xyXG4gICAgdGhpcy50YWJsZW9iai5zb3J0QnkgPSB0aGlzLnNvcnREaXJlY3Rpb24sIC8vWzEtPmFzYywgLTEtPkRFc2NdXHJcbiAgICB0aGlzLnRhYmxlb2JqLnNvcnQgPSB0aGlzLnNvcnRlZENvbHVtbiwgLy8gQ29sdW1uIE5hbWVcclxuICAgIHRoaXMuZ2V0VGFibGUoKTtcclxuICB9XHJcblxyXG4gIGdldE1hcCgpIHtcclxuICAgIHRoaXMubXBhbG9hZGluZyA9dHJ1ZTtcclxuICAgIHRoaXMubWFwbm9EYXRhPSBmYWxzZTtcclxuICAgIGNvbnN0IG9iaiA9IHtcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuaGVhZGVyRGF0YT8uY2xpZW50LFxyXG4gICAgICBzdG9yZURhdGU6IHRoaXMuaGVhZGVyRGF0YT8uZGF0ZT8uZW5kRGF0ZSxcclxuICAgICAgc3RvcmVJZDogdGhpcy5zdG9yZUlkYXJyYXlcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5zZXJ2aWNlLmdlTWFwcyhvYmopPy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZihyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCl7XHJcbiAgICAgICAgICAvLyBpZiAocmVzICYmIHJlcy5kYXRhICYmIHJlcy5kYXRhLnN0b3JlRGF0YSkge1xyXG4gICAgICAgICAgICB0aGlzLmF1TG9jYXRpb25zID0gcmVzLmRhdGEuc3RvcmVEYXRhO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIFVwZGF0ZSBtYXBPcHRpb25zIGNlbnRlciBpZiBuZWVkZWRcclxuICAgICAgICAgICAgaWYgKHRoaXMuYXVMb2NhdGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGZpcnN0TG9jYXRpb24gPSB0aGlzLmF1TG9jYXRpb25zWzBdO1xyXG4gICAgICAgICAgICAgIGlmIChmaXJzdExvY2F0aW9uICYmIHR5cGVvZiBmaXJzdExvY2F0aW9uLmxhdCA9PT0gJ251bWJlcicgJiYgdHlwZW9mIGZpcnN0TG9jYXRpb24ubG5nID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tYXBPcHRpb25zID0ge1xyXG4gICAgICAgICAgICAgICAgICAuLi50aGlzLm1hcE9wdGlvbnMsXHJcbiAgICAgICAgICAgICAgICAgIGNlbnRlcjogeyBsYXQ6IGZpcnN0TG9jYXRpb24ubGF0LCBsbmc6IGZpcnN0TG9jYXRpb24ubG5nIH1cclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsgIHRoaXMuZ2V0RGF0YSgpOyB9LDEwMClcclxuICAgICAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7fVxyXG4gICAgICAgICAgICB9IGVsc2Uge31cclxuICAgICAgICAgIC8vIH1cclxuICAgICAgICAgIHRoaXMubXBhbG9hZGluZyA9ZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLm1hcG5vRGF0YT0gZmFsc2U7XHJcbiAgICAgICAgICB9IGVsc2UgaWYocmVzID09PSBudWxsKXtcclxuICAgICAgICAgICAgdGhpcy5tYXBub0RhdGE9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMubXBhbG9hZGluZyA9ZmFsc2U7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmF1TG9jYXRpb25zID1bXTtcclxuICAgICAgICAgICAgdGhpcy5tcGFsb2FkaW5nID1mYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5tYXBub0RhdGE9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5hdUxvY2F0aW9ucyA9W107XHJcbiAgICAgICAgICB0aGlzLm1wYWxvYWRpbmcgPWZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm1hcG5vRGF0YT0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICBtYXA6IG1hcGJveGdsLk1hcDtcclxuICBwcml2YXRlIGNoZWNrTWFwQ29udGFpbmVySW50ZXJ2YWw6IGFueTtcclxuICBnZXREYXRhKCkge1xyXG4gICAgdGhpcy5jaGVja01hcENvbnRhaW5lckludGVydmFsID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IG1hcENvbnRhaW5lciA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcjbWFwJyk7XHJcbiAgICAgIGlmIChtYXBDb250YWluZXIpIHtcclxuICAgICAgICBjbGVhckludGVydmFsKHRoaXMuY2hlY2tNYXBDb250YWluZXJJbnRlcnZhbCk7XHJcbiAgICAgICAgdGhpcy5pbml0aWFsaXplTWFwKG1hcENvbnRhaW5lcik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmNoZWNrTWFwQ29udGFpbmVySW50ZXJ2YWwpO1xyXG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZU1hcChtYXBDb250YWluZXIpO1xyXG4gICAgICB9XHJcbiAgICB9LCAxMDApO1xyXG5cclxuICB9XHJcbiAgaW5pdGlhbGl6ZU1hcChtYXBDb250YWluZXI6IEhUTUxFbGVtZW50KXtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4geyAgXHJcbiAgICAgIGNvbnN0IG1hcENvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYXAnKTtcclxuICAgICAgaWYgKCFtYXBDb250YWluZXIpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIC8vIENoZWNrIHRoYXQgbG9jYXRpb25zIGV4aXN0IGJlZm9yZSBwcm9jZWVkaW5nXHJcbiAgICBpZiAodGhpcy5hdUxvY2F0aW9ucz8ubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICBcclxuICAgIGNvbnN0IGdlb2pzb24gPSB7XHJcbiAgICAgICd0eXBlJzogJ0ZlYXR1cmVDb2xsZWN0aW9uJyxcclxuICAgICAgJ2ZlYXR1cmVzJzogdGhpcy5hdUxvY2F0aW9ucy5tYXAoKHN0b3JlLCBpbmRleCkgPT4gKHtcclxuICAgICAgICAndHlwZSc6ICdGZWF0dXJlJyxcclxuICAgICAgICAncHJvcGVydGllcyc6IHtcclxuICAgICAgICAgICdzdG9yZU5hbWUnOiBzdG9yZS5zdG9yZU5hbWUsICAgICAgICAgLy8gU3RvcmUgbmFtZVxyXG4gICAgICAgICAgJ2ltYWdlSWQnOiAxMDExICsgaW5kZXgsICAgICAgICAgICAgICAvLyBEeW5hbWljIGltYWdlIElEXHJcbiAgICAgICAgICAnaWNvblNpemUnOiBbNjAsIDYwXSwgICAgICAgICAgICAgICAgIC8vIEFkanVzdCBpY29uIHNpemUgYXMgbmVlZGVkXHJcbiAgICAgICAgICAnZm9vdGZhbGwnOiBzdG9yZS5hdmdGb290ZmFsbCwgICAgICAgIC8vIEZvb3RmYWxsIGRhdGFcclxuICAgICAgICAgICdvcGVuVGltZSc6IHN0b3JlLm9wZW5UaW1lLCAgICAgICAgICAgLy8gT3BlbiB0aW1lXHJcbiAgICAgICAgICAnY2xvc2VUaW1lJzogc3RvcmUuY2xvc2VUaW1lLCAgICAgICAgIC8vIENsb3NlIHRpbWVcclxuICAgICAgICB9LFxyXG4gICAgICAgICdnZW9tZXRyeSc6IHtcclxuICAgICAgICAgICd0eXBlJzogJ1BvaW50JyxcclxuICAgICAgICAgICdjb29yZGluYXRlcyc6IFtzdG9yZS5sbmcsIHN0b3JlLmxhdF0gIC8vIENvb3JkaW5hdGVzIGZyb20gc3RvcmUgZGF0YVxyXG4gICAgICAgIH1cclxuICAgICAgfSkpXHJcbiAgICB9O1xyXG4gIFxyXG4gICAgLy8gRHluYW1pY2FsbHkgc2V0IG1hcCBjZW50ZXIgYmFzZWQgb24gdGhlIGZpcnN0IGxvY2F0aW9uXHJcbiAgICBjb25zdCBmaXJzdExvY2F0aW9uID0gdGhpcy5hdUxvY2F0aW9uc1swXTtcclxuIFxyXG4gICAgdGhpcy5tYXAgPSBuZXcgbWFwYm94Z2wuTWFwKHtcclxuICAgICAgY29udGFpbmVyOiAnbWFwJyxcclxuICAgICAgc3R5bGU6ICdtYXBib3g6Ly9zdHlsZXMvbWFwYm94L3N0cmVldHMtdjEyJyxcclxuICAgICAgY2VudGVyOiBbZmlyc3RMb2NhdGlvbi5sbmcsIGZpcnN0TG9jYXRpb24ubGF0XSwgLy8gQ2VudGVyIG1hcCBvbiB0aGUgZmlyc3QgbG9jYXRpb25cclxuICAgICAgem9vbTogMTAsIC8vIEFkanVzdCB0aGlzIHZhbHVlICgxID0gd29ybGQgdmlldywgMjAgPSBidWlsZGluZyB2aWV3KVxyXG4gICAgICBtYXhab29tOiAyMCwgLy8gT3B0aW9uYWw6IExpbWl0IG1heCB6b29tIGxldmVsXHJcbiAgICAgIG1pblpvb206IDEgICAvLyBPcHRpb25hbDogTGltaXQgbWluIHpvb20gbGV2ZWxcclxuICAgIH0pO1xyXG4gIFxyXG4gICAgLy8gQWRkIG1hcmtlcnMgdG8gdGhlIG1hcFxyXG4gICAgZ2VvanNvbi5mZWF0dXJlcy5mb3JFYWNoKChmZWF0dXJlLCBmZWF0dXJlSW5kZXgpID0+IHtcclxuICAgICAgY29uc3QgeyBwcm9wZXJ0aWVzLCBnZW9tZXRyeSB9ID0gZmVhdHVyZTtcclxuICAgICAgY29uc3Qgc3RvcmUgPSB0aGlzLmF1TG9jYXRpb25zW2ZlYXR1cmVJbmRleF07XHJcbiAgICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgIGNvbnN0IHdpZHRoID0gcHJvcGVydGllcy5pY29uU2l6ZVswXTtcclxuICAgICAgY29uc3QgaGVpZ2h0ID0gcHJvcGVydGllcy5pY29uU2l6ZVsxXTtcclxuICAgICAgZWwuY2xhc3NOYW1lID0gJ21hcmtlcic7XHJcbiAgICAgIGVsLmlubmVySFRNTCA9IGBcclxuICAgICAgPGRpdiBjbGFzcz1cIm1hcmtlci1pY29uXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsgd2lkdGg6ICR7d2lkdGh9cHg7IGhlaWdodDogJHtoZWlnaHR9cHg7IGRpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVudDogY2VudGVyOyBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBjb2xvcjogdmFyKC0tR3JheS03MDAsICMzNDQwNTQpO1xyXG50ZXh0LWFsaWduOiBjZW50ZXI7XHJcbmZvbnQtZmFtaWx5OiBJbnRlcjtcclxuZm9udC1zaXplOiA5LjAwN3B4O1xyXG5mb250LXN0eWxlOiBub3JtYWw7XHJcbmZvbnQtd2VpZ2h0OiA2MDA7XHJcbmxpbmUtaGVpZ2h0OiAxM3B4O1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYXJrZXItY29udGVudFwiIHN0eWxlPVwiZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgYWxpZ24taXRlbXM6IGNlbnRlcjtcIj5cclxuICAgICAgICAgIDxzdmcgY2xhc3M9XCJtYi0xXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTNcIiBoZWlnaHQ9XCIxM1wiIHZpZXdCb3g9XCIwIDAgMTMgMTNcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICA8cGF0aCBkPVwiTTEuMzM2NTQgMy4zNjM3TDEuMjk2NTggMy40MjYxMUMwLjg3NzY5OCA0LjE2NzAxIDEuMzI0OTMgNS4xMDMzNSAyLjEyOTMxIDUuMjEwNzZDMi4yMDIxOCA1LjIxOTY3IDIuMjY5OTkgNS4yMjQzOCAyLjMzNjI1IDUuMjI0MzhDMi43NzAyMSA1LjIyNDM4IDMuMTUzOSA1LjAzODIxIDMuNDIxMzIgNC43NDc5M0wzLjgzNjY2IDQuMjk3MUw0LjI1MDU5IDQuNzQ5MjNDNC41MTQ3NiA1LjAzNzc4IDQuODk3NTggNS4yMjQzOCA1LjMzNDQ4IDUuMjI0MzhDNS43Njk0MSA1LjIyNDM4IDYuMTU0NDMgNS4wMzc1MiA2LjQxODM3IDQuNzQ5MjNMNi44MzM1OSA0LjI5NTY4TDcuMjQ4ODIgNC43NDkyM0M3LjUxMjc1IDUuMDM3NTIgNy44OTc3NyA1LjIyNDM4IDguMzMyNzEgNS4yMjQzOEM4Ljc2NzY0IDUuMjI0MzggOS4xNTI2NiA1LjAzNzUyIDkuNDE2NiA0Ljc0OTIzTDkuODMxODIgNC4yOTU2OEwxMC4yNDcgNC43NDkyM0MxMC41MTEgNS4wMzc1MiAxMC44OTYgNS4yMjQzOCAxMS4zMzA5IDUuMjI0MzhDMTEuMzk1IDUuMjI0MzggMTEuNDY0OSA1LjIxOTY2IDExLjUzNzIgNS4yMTA4M0MxMi4zNTkzIDUuMDk4NzUgMTIuODA4IDQuMTEyMjUgMTIuMzI4NiAzLjM2NDA4QzEyLjMyODYgMy4zNjQwMyAxMi4zMjg1IDMuMzYzOTkgMTIuMzI4NSAzLjM2Mzk1TDExLjAwODggMS4zMDYyMUwxMS4wMDgxIDEuMzA1MTFDMTAuOTk2NyAxLjI4NzIyIDEwLjk2ODYgMS4yNjgwNCAxMC45MzMyIDEuMjY4MDRIMi43Mjk0MkMyLjY5NDAzIDEuMjY4MDQgMi42NjU4OSAxLjI4NzIyIDIuNjU0NDggMS4zMDUxMUwyLjY1NDAxIDEuMzA1ODRMMS4zMzY1NCAzLjM2MzdaTTExLjA3MzEgNy4wNjY2N1Y5LjQxNzUzVjkuOTgwNDlIMTAuNTEwMUgzLjE1MjQ4SDIuNTg5NTJWOS40MTc1M1Y3LjA2NzAyQzIuNTA2NzggNy4wNzMxOCAyLjQyMzA4IDcuMDc2MzQgMi4zMzg1NSA3LjA3NjM0QzIuMzA2NzkgNy4wNzYzNCAyLjI3NTI1IDcuMDc1ODcgMi4yNDM5MiA3LjA3NDk1VjkuNDE3NTNWMTAuODY5NkMyLjI0MzkyIDExLjM1MjYgMi42NDQ2NyAxMS43NTg3IDMuMTUyNDggMTEuNzU4N0gxMC41MTAxQzExLjAxNzkgMTEuNzU4NyAxMS40MTg3IDExLjM1MjYgMTEuNDE4NyAxMC44Njk2VjkuNDE3NTNWNy4wNzUwOUMxMS4zODg4IDcuMDc1OTEgMTEuMzU4NyA3LjA3NjM0IDExLjMyODYgNy4wNzYzNEMxMS4yNDI4IDcuMDc2MzQgMTEuMTU3NSA3LjA3MzA4IDExLjA3MzEgNy4wNjY2N1pcIiBzdHJva2U9XCIjMTAxODI4XCIgc3Ryb2tlLXdpZHRoPVwiMS4xMjU5MlwiLz5cclxuICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1hcmtlci1sYWJlbFwiIHN0eWxlPVwiZm9udC1zaXplOiAxMHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7XCI+XHJcbiAgICAgICAgICAgICR7cHJvcGVydGllcy5zdG9yZU5hbWV9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICBgO1xyXG4gICAgICAvLyBlbC5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2UgPSBgdXJsKGh0dHBzOi8vcGljc3VtLnBob3Rvcy9pZC8ke3Byb3BlcnRpZXMuaW1hZ2VJZH0vJHt3aWR0aH0vJHtoZWlnaHR9KWA7XHJcbiAgICAgIGVsLnN0eWxlLndpZHRoID0gYCR7d2lkdGh9cHhgO1xyXG4gICAgICBlbC5zdHlsZS5oZWlnaHQgPSBgJHtoZWlnaHR9cHhgO1xyXG4gICAgICBlbC5zdHlsZS5iYWNrZ3JvdW5kU2l6ZSA9ICcxMDAlJztcclxuICBcclxuICAgICAgLy8gQ3JlYXRlIGEgcG9wdXAgaW5zdGFuY2Ugd2l0aCB0aGUgZmVhdHVyZSBwcm9wZXJ0aWVzXHJcbiAgICAgIGNvbnN0IHBvcHVwID0gbmV3IG1hcGJveGdsLlBvcHVwKHsgb2Zmc2V0OiAyNSB9KSAgXHJcbiAgICAgIC8vIFVzZSB0aGUgY29vcmRpbmF0ZXMgZnJvbSB0aGUgZmVhdHVyZVxyXG4gICAgICBjb25zdCBjb29yZGluYXRlczogW251bWJlciwgbnVtYmVyXSA9IGdlb21ldHJ5LmNvb3JkaW5hdGVzIGFzIFtudW1iZXIsIG51bWJlcl07XHJcbiAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuYWRqdXN0TGF5b3V0KHN0b3JlKTtcclxuICAgICAgfSk7XHJcbiAgICAgIC8vIEFkZCBtYXJrZXJzIHRvIHRoZSBtYXBcclxuICAgICAgbmV3IG1hcGJveGdsLk1hcmtlcihlbClcclxuICAgICAgICAuc2V0TG5nTGF0KGNvb3JkaW5hdGVzKVxyXG4gICAgICAgIC5zZXRQb3B1cChwb3B1cCkgIC8vIEF0dGFjaCB0aGUgcG9wdXAgdG8gdGhlIG1hcmtlclxyXG4gICAgICAgIC5hZGRUbyh0aGlzLm1hcCk7XHJcbiAgICB9KTtcclxuICAgIFxyXG4gIH0sMTAwKVxyXG4gIH1cclxuICBhZGp1c3RMYXlvdXQoZGF0YTogYW55KSB7XHJcbiAgICBjb25zdCBkYXRhdmFsdWU6IGFueSA9IEpTT04ucGFyc2UoXHJcbiAgICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiaGVhZGVyLWZpbHRlcnNcIikgfHwgXCJ7fVwiXHJcbiAgICApO1xyXG4gICAgY29uc3QgbWF0Y2hlZFN0b3JlcyA9IGRhdGF2YWx1ZS5zdG9yZXMuZmlsdGVyKChzdG9yZTogYW55KSA9PiBzdG9yZS5jaGVja2VkICYmIHN0b3JlLnN0b3JlSWQgPT09IGRhdGEuc3RvcmVJZCk7XHJcbiAgICAvLyBVcGRhdGUgdGhlIGJhbGFuY2Ugc3RvcmVzICh0aG9zZSBub3QgaW4gdGhlIG1hdGNoZWQgc3RvcmVzKSB0byBzZXQgdGhlaXIgY2hlY2tlZCBwcm9wZXJ0eSB0byBmYWxzZVxyXG4gICAgZGF0YXZhbHVlLnN0b3Jlcy5mb3JFYWNoKChzdG9yZTogYW55KSA9PiB7XHJcbiAgICAgIGlmICghbWF0Y2hlZFN0b3Jlcy5zb21lKChtYXRjaGVkU3RvcmU6YW55KSA9PiBtYXRjaGVkU3RvcmUuc3RvcmVJZCA9PT0gc3RvcmUuc3RvcmVJZCkpIHtcclxuICAgICAgICBzdG9yZS5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pOyBcclxuICAgIGRhdGF2YWx1ZS5zdG9yZSA9IGRhdGEuc3RvcmVJZDtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiaGVhZGVyLWZpbHRlcnNcIiwgSlNPTi5zdHJpbmdpZnkoZGF0YXZhbHVlKSk7XHJcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKVxyXG4gICAgdGhpcy5ncy5kYXRhUmFuZ2VWYWx1ZS5uZXh0KGRhdGF2YWx1ZSlcclxuICAgIHRoaXMuZ3MubWFuYWdlUmVmcmVzaFRyaWdnZXIubmV4dCh0cnVlKTtcclxuICAgXHJcbiAgfVxyXG4gIGV4cG9yZVZpZXcoKXtcclxudGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvbWFuYWdlL3RyYWZmaWMvZXhwbG9yZSddKVxyXG4gIH1cclxuICBkYXRlVmFsdWUodHlwZTphbnkpe1xyXG4gICAgZGVsZXRlIHRoaXMudGFibGVvYmoubGltaXQ7IGRlbGV0ZSB0aGlzLnRhYmxlb2JqLmV4cG9ydDtcclxuICAgIGRlbGV0ZSB0aGlzLnRhYmxlb2JqLm9mZnNldDtcclxuICAgIHRoaXMudGFibGVvYmouZnJvbURhdGU9IHRoaXMuaGVhZGVyRGF0YS5kYXRlLnN0YXJ0RGF0ZSxcclxuICAgIHRoaXMudGFibGVvYmoudG9EYXRlPSB0aGlzLmhlYWRlckRhdGEuZGF0ZS5lbmREYXRlLFxyXG4gICAgZGVsZXRlIHRoaXMudGFibGVvYmoucmVjYXBWaWRlb0RhdGU7XHJcbiAgICB0aGlzLmRhdGVUeXBlID0gdHlwZTtcclxuICAgIGNvbnNvbGUubG9nKHR5cGUpXHJcbiAgICB0aGlzLnRhYmxlb2JqLmRhdGVUeXBlPSB0aGlzLmRhdGVUeXBlO1xyXG4gICAgdGhpcy5nZXRDYXJkR3JhcGgoKTtcclxuICB9XHJcblxyXG5cclxuICBnZXRab25lKCl7XHJcbiAgICBjb25zdCBvYmogPSB7XHJcbiAgICAgIGNsaWVudElkOiB0aGlzLmhlYWRlckRhdGE/LmNsaWVudCxcclxuICAgICAgZnJvbURhdGU6IHRoaXMuaGVhZGVyRGF0YT8uZGF0ZT8uc3RhcnREYXRlLFxyXG4gICAgdG9EYXRlOiB0aGlzLmhlYWRlckRhdGE/LmRhdGU/LmVuZERhdGUsXHJcbiAgICAgIHN0b3JlSWQ6IHRoaXMuc3RvcmVJZGFycmF5XHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuc2VydmljZS56b25lRHdlbGxUaW1lKG9iaik/LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmKHJlcyAmJiByZXMuY29kZSA9PT0gMjAwKXtcclxuICAgICAgICAgICAgdGhpcy56b25lRHdlbGxUaW1lU3BsaXREYXRhID0gcmVzLmRhdGEuem9uZUR3ZWxsVGltZVNwbGl0RGF0YTtcclxuICAgICAgICAgIH0gZWxzZXtcclxuICAgICAgICAgICAgdGhpcy56b25lRHdlbGxUaW1lU3BsaXREYXRhID1bXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnpvbmVEd2VsbFRpbWVTcGxpdERhdGE9W107XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfSlcclxuICAgIFxyXG4gIH1cclxuICBnZXRab25lVmFsdWUoKXtcclxuICAgIGNvbnN0IG9iaiA9IHtcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuaGVhZGVyRGF0YT8uY2xpZW50LFxyXG4gICAgICBmcm9tRGF0ZTogdGhpcy5oZWFkZXJEYXRhPy5kYXRlPy5zdGFydERhdGUsXHJcbiAgICB0b0RhdGU6IHRoaXMuaGVhZGVyRGF0YT8uZGF0ZT8uZW5kRGF0ZSxcclxuICAgICAgc3RvcmVJZDogdGhpcy5zdG9yZUlkYXJyYXlcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5zZXJ2aWNlLnN0b3JlT3BlcmF0aW9uKG9iaik/LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmKHJlcyAmJiByZXMuY29kZSA9PT0gMjAwKXtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZU9wZXJhdGlvbkRhdGEgPSByZXMuZGF0YS5zdG9yZU9wZXJhdGlvbkRhdGFbMF07XHJcbiAgICAgICAgICB9IGVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmVPcGVyYXRpb25EYXRhID1bXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnN0b3JlT3BlcmF0aW9uRGF0YT1bXTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICB9KVxyXG4gICAgXHJcbiAgfVxyXG5cclxuICBzdG9yZVZpZXcoZGF0YTphbnkpe1xyXG4gICAgY29uc3QgZGF0YXZhbHVlOiBhbnkgPSBKU09OLnBhcnNlKFxyXG4gICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImhlYWRlci1maWx0ZXJzXCIpIHx8IFwie31cIlxyXG4gICAgKTtcclxuICAgIGNvbnN0IG1hdGNoZWRTdG9yZXMgPSBkYXRhdmFsdWUuc3RvcmVzLmZpbHRlcigoc3RvcmU6IGFueSkgPT4gc3RvcmUuY2hlY2tlZCAmJiBzdG9yZS5zdG9yZUlkID09PSBkYXRhKTtcclxuICAgIC8vIFVwZGF0ZSB0aGUgYmFsYW5jZSBzdG9yZXMgKHRob3NlIG5vdCBpbiB0aGUgbWF0Y2hlZCBzdG9yZXMpIHRvIHNldCB0aGVpciBjaGVja2VkIHByb3BlcnR5IHRvIGZhbHNlXHJcbiAgICBkYXRhdmFsdWUuc3RvcmVzLmZvckVhY2goKHN0b3JlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKCFtYXRjaGVkU3RvcmVzLnNvbWUoKG1hdGNoZWRTdG9yZTphbnkpID0+IG1hdGNoZWRTdG9yZS5zdG9yZUlkID09PSBzdG9yZS5zdG9yZUlkKSkge1xyXG4gICAgICAgIHN0b3JlLmNoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSk7IFxyXG4gICAgZGF0YXZhbHVlLnN0b3JlID0gZGF0YTtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiaGVhZGVyLWZpbHRlcnNcIiwgSlNPTi5zdHJpbmdpZnkoZGF0YXZhbHVlKSk7XHJcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKVxyXG4gICAgdGhpcy5ncy5kYXRhUmFuZ2VWYWx1ZS5uZXh0KGRhdGF2YWx1ZSlcclxuICAgIHRoaXMuZ3MubWFuYWdlUmVmcmVzaFRyaWdnZXIubmV4dCh0cnVlKTtcclxuICB9XHJcbiAgZ29Ub1pvbmUoKXtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9tYW5hZ2Uvem9uZXNcIl0pOyBcclxuXHJcbiAgfVxyXG5cclxuICBjdXJyZW50SW5kZXg6IG51bWJlciA9IDA7XHJcbiAgaW50ZXJ2YWxJZDogYW55O1xyXG5cclxuXHJcbiAgcHJldlNsaWRlKCkge1xyXG4gICAgaWYgKHRoaXMuY3VycmVudEluZGV4ID4gMCkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRJbmRleC0tO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmV4dFNsaWRlKCkge1xyXG4gICAgaWYgKHRoaXMuY3VycmVudEluZGV4IDwgdGhpcy5yZWNhcHNHcm91cGVkLmxlbmd0aCAtIDEpIHtcclxuICAgICAgdGhpcy5jdXJyZW50SW5kZXgrKztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdvVG9TbGlkZShpbmRleDogbnVtYmVyKSB7XHJcbiAgICBpZiAoaW5kZXggPj0gMCAmJiBpbmRleCA8IHRoaXMucmVjYXBzR3JvdXBlZC5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5jdXJyZW50SW5kZXggPSBpbmRleDtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxufVxyXG5cclxuaW50ZXJmYWNlIERhdGFDb250ZXh0IHtcclxuICBjYXRlZ29yeTogc3RyaW5nO1xyXG4gIHZhbHVlOiBudW1iZXI7XHJcbiAgY291bnQ6IG51bWJlcjtcclxufVxyXG5mdW5jdGlvbiBnZXREYXlzQmV0d2VlbkRhdGVzKGZyb21EYXRlOiBzdHJpbmcsIHRvRGF0ZTogc3RyaW5nKTogbnVtYmVyIHtcclxuICAvLyBQYXJzZSB0aGUgZGF0ZSBzdHJpbmdzIGludG8gRGF0ZSBvYmplY3RzXHJcbiAgY29uc3Qgc3RhcnQgPSBuZXcgRGF0ZShmcm9tRGF0ZSk7XHJcbiAgY29uc3QgZW5kID0gbmV3IERhdGUodG9EYXRlKTtcclxuXHJcbiAgLy8gQ2FsY3VsYXRlIHRoZSBkaWZmZXJlbmNlIGluIG1pbGxpc2Vjb25kc1xyXG4gIGNvbnN0IGRpZmZlcmVuY2VJbk1zID0gZW5kLmdldFRpbWUoKSAtIHN0YXJ0LmdldFRpbWUoKTtcclxuXHJcbiAgLy8gQ29udmVydCBtaWxsaXNlY29uZHMgdG8gZGF5cyAoMSBkYXkgPSA4NjQwMDAwMCBtaWxsaXNlY29uZHMpXHJcbiAgY29uc3QgbWlsbGlzZWNvbmRzUGVyRGF5ID0gODY0MDAwMDA7XHJcbiAgY29uc3QgZGlmZmVyZW5jZUluRGF5cyA9IE1hdGguZmxvb3IoZGlmZmVyZW5jZUluTXMgLyBtaWxsaXNlY29uZHNQZXJEYXkpO1xyXG5cclxuICByZXR1cm4gZGlmZmVyZW5jZUluRGF5cztcclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOCBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtYm9yZGVyIGgtMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGVsbGlwc2UxIGJvcmRlci0wIHB4LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBbbmdiVG9vbHRpcF09XCJmb290ZmFsbFRvb2x0aXBcIiBwbGFjZW1lbnQ9XCJyaWdodFwiIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBEaXNwbGF5IGZvb3RmYWxsIGNvdW50IG9yICctLScgaWYgbm90IGF2YWlsYWJsZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmQtbGFiZWwgaGVhZGVyXCI+e3sgZ2V0Q2FyZERhdGE/LmZvb3RmYWxsPy5jb3VudCA/IGdldENhcmREYXRhLmZvb3RmYWxsLmNvdW50LnRvTG9jYWxlU3RyaW5nKCdlbi1JTicpIDogJy0tJyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1Yi1oZWFkZXJcIj57e2Zvb3RmYWxsTmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBTd2l0Y2ggdG9nZ2xlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIHRleHQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1zd2l0Y2ggdGV4dC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgbXQtMVwiIHR5cGU9XCJjaGVja2JveFwiIGlkPVwiZmxleFN3aXRjaENoZWNrRGVmYXVsdFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpc0F2ZXJhZ2VcIiAoY2hhbmdlKT1cInRvZ2dsZUF2ZXJhZ2UoJGV2ZW50KVwiIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgbXQtNVwiPkF2ZXJhZ2U8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPG5nLXRlbXBsYXRlICNmb290ZmFsbFRvb2x0aXA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b29sdGlwLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJ0b29sdGlwLXRpdGxlIHRleHQtc3RhcnRcIj5Gb290ZmFsbDwvaDU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LXN0YXJ0XCI+VG90YWwgdW5pcXVlIHdhbGstaW5zIGludG8gdGhlIHNlbGVjdGVkIHN0b3Jlcy48L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPVwidGV4dC1zdGFydFwiPnt7Z2V0Q2FyZERhdGE/LmZvb3RmYWxsPy5jb3VudH19PC9oND5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9vdGVyIGNsYXNzPVwidG9vbHRpcC1mb290ZXIgdGV4dC1zdGFydFwiPiA8c3BhbiBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIhZ2V0Q2FyZEdyYXBoRGF0YT8uZm9vdGZhbGw/LlByZXZpb3VzVmFyaWF0aW9uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDE4IDE4XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjMyOF80NjU0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSA5TDYuNzUgNC4yNUw0LjI1IDYuNzVMMC41IDNNMTEuNSA5SDguNU0xMS41IDlWNlwiIHN0cm9rZT1cIiNEOTJEMjBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjMyOF80NjU0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJnZXRDYXJkR3JhcGhEYXRhPy5mb290ZmFsbD8uUHJldmlvdXNWYXJpYXRpb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8zMjE2XzExOClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgM0w2Ljc1IDcuNzVMNC4yNSA1LjI1TDAuNSA5TTExLjUgM0g4LjVNMTEuNSAzVjZcIiBzdHJva2U9XCIjMDM5ODU1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzMyMTZfMTE4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiAgY2xhc3M9XCJtdC0yIG1zLTJcIj48c3BhbiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIiAqbmdJZj1cImdldENhcmRHcmFwaERhdGE/LmZvb3RmYWxsPy5QcmV2aW91c0RhdGEgIT09MFwiPnt7Z2V0Q2FyZEdyYXBoRGF0YT8uZm9vdGZhbGw/LlByZXZpb3VzRGF0YSA/IGdldENhcmRHcmFwaERhdGE/LmZvb3RmYWxsPy5QcmV2aW91c0RhdGE6Jy0tJ319JTwvc3Bhbj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3ZWVrLWZvbnRcIj4gKDEyMykgdnMgUHJldmlvdXMgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImRhdGVUeXBlID09PSdkYWlseSdcIj5kYXk8L3NwYW4+PHNwYW4gKm5nSWY9XCJkYXRlVHlwZSA9PT0nd2Vla2x5J1wiPndlZWs8L3NwYW4+IDxzcGFuICpuZ0lmPVwiZGF0ZVR5cGUgPT09J21vbnRobHknXCI+bW9udGg8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48L2Zvb3Rlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHAtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTAgcGUtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY2FyZGxvYWRpbmdcIiBjbGFzcz1cInRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwibG9hZGVyLWltZ1wiIHNyYz1cImFzc2V0cy90YW5nby9sYXlvdXQvTG9hZGVyLmdpZlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNhcmROb2RhdGFcIiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHBiLTAgcHgtMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImZvb3RpbWctbm9kYXRhMVwiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YTEuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGEtdGl0bGUxXCI+Tm8gZGF0YSBmb3VuZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJub2RhdGEtc3ViXCI+VGhlcmUgaXMgbm8gcmVzdWx0IGZvciB0aGlzIGNvbnZlcnNpb24gZnVubmVsPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhY2FyZE5vZGF0YVwiIGNsYXNzPVwidGV4dC1jZW50ZXJcIiBpZD1cIkZvb3RmYWxsXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTIgbXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAgY2xhc3M9XCJtdC0xIGN1cnNvci1wb2ludGVyIGZzLTVcIiBbbmdDbGFzc109XCJkYXRlVHlwZSA9PT0nZGFpbHknID8gJ3RleHQtcHJpbWFyeScgOicnXCIgKGNsaWNrKT1cImRhdGVWYWx1ZSgnZGFpbHknKVwiPjFEPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICBjbGFzcz1cIm10LTEgY3Vyc29yLXBvaW50ZXIgZnMtNVwiICBbbmdDbGFzc109XCJkYXRlVHlwZSA9PT0nd2Vla2x5JyA/ICd0ZXh0LXByaW1hcnknIDonJ1wiICAoY2xpY2spPVwiZGF0ZVZhbHVlKCd3ZWVrbHknKVwiPjFXPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICBjbGFzcz1cIm10LTEgY3Vyc29yLXBvaW50ZXIgZnMtNVwiICBbbmdDbGFzc109XCJkYXRlVHlwZSA9PT0nbW9udGhseScgPyAndGV4dC1wcmltYXJ5JyA6JydcIiAgKGNsaWNrKT1cImRhdGVWYWx1ZSgnbW9udGhseScpXCI+MU08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIG1zLTIgcC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIhZ2V0Q2FyZEdyYXBoRGF0YT8uZm9vdGZhbGw/LlByZXZpb3VzVmFyaWF0aW9uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMzI4XzQ2NTQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSA5TDYuNzUgNC4yNUw0LjI1IDYuNzVMMC41IDNNMTEuNSA5SDguNU0xMS41IDlWNlwiIHN0cm9rZT1cIiNEOTJEMjBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIzMjhfNDY1NFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJnZXRDYXJkR3JhcGhEYXRhPy5mb290ZmFsbD8uUHJldmlvdXNWYXJpYXRpb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzMyMTZfMTE4KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgM0w2Ljc1IDcuNzVMNC4yNSA1LjI1TDAuNSA5TTExLjUgM0g4LjVNMTEuNSAzVjZcIiBzdHJva2U9XCIjMDM5ODU1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8zMjE2XzExOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2V0Q2FyZEdyYXBoRGF0YT8uZm9vdGZhbGw/LlByZXZpb3VzRGF0YSA9PT0wXCIgY2xhc3M9XCJwZXJjZW50LXZhbHVlIG1zLTJcIj4wJTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICBjbGFzcz1cIm10LTIgbXMtMlwiPjxzcGFuIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiICpuZ0lmPVwiZ2V0Q2FyZEdyYXBoRGF0YT8uZm9vdGZhbGw/LlByZXZpb3VzRGF0YSAhPT0wXCI+e3tnZXRDYXJkR3JhcGhEYXRhPy5mb290ZmFsbD8uUHJldmlvdXNEYXRhID8gZ2V0Q2FyZEdyYXBoRGF0YT8uZm9vdGZhbGw/LlByZXZpb3VzRGF0YTonLS0nfX0lPC9zcGFuPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwid2Vlay1mb250XCI+IHZzIFByZXZpb3VzIDxzcGFuICpuZ0lmPVwiZGF0ZVR5cGUgPT09J2RhaWx5J1wiPmRheTwvc3Bhbj48c3BhbiAqbmdJZj1cImRhdGVUeXBlID09PSd3ZWVrbHknXCI+d2Vlazwvc3Bhbj4gPHNwYW4gKm5nSWY9XCJkYXRlVHlwZSA9PT0nbW9udGhseSdcIj5tb250aDwvc3Bhbj4gPC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02IDEyTDEwIDhMNiA0XCIgc3Ryb2tlPVwiIzk4QTJCM1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgbGVmdC01MFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02IDEyTDEwIDhMNiA0XCIgc3Ryb2tlPVwiIzk4QTJCM1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGVsbGlwc2UxIGJvcmRlci0wIHB4LTNcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gW25nYlRvb2x0aXBdPVwiY29udmVyc2lvblRvb2x0aXBcIiBwbGFjZW1lbnQ9XCJsZWZ0XCIgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZC1sYWJlbCBoZWFkZXJcIj57e3ZhbHVlQ29udmVyc2lvblJhdGUgID8gdmFsdWVDb252ZXJzaW9uUmF0ZSA6ICctLSd9fSU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1Yi1oZWFkZXJcIj5Db252ZXJzaW9uIDxzcGFuICpuZ0lmPVwiY29udmVyc2lvblZhbHVlID09PSdmb290ZmFsbCcgfHwgY29udmVyc2lvblZhbHVlID09PSdlbmdhZ2VycycgfHwgY29udmVyc2lvblZhbHVlID09PSdQb3RlbnRpYWwgQnV5ZXJzJyB8fCBjb252ZXJzaW9uVmFsdWUgPT09J05vQiBEZXJpdmVkJyBcIj4gLSB7e2NvbnZlcnNpb25WYWx1ZSB8IHRpdGxlY2FzZX19PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxuZy10ZW1wbGF0ZSAjY29udmVyc2lvblRvb2x0aXA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b29sdGlwLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJ0b29sdGlwLXRpdGxlIHRleHQtc3RhcnRcIj5Db252ZXJzaW9uIFJhdGU8L2g1PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1zdGFydFwiPlRvdGFsICUgb2YgJmx0O2VuZ2FnZXJzJmd0OyB3aG8gc3BlbnQgbW9yZSB0aGFuICZsdDsxMG1pbnMmZ3Q7IGluIHRoZSBzdG9yZS4uPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz1cInRleHQtc3RhcnRcIj57e3ZhbHVlQ29udmVyc2lvblJhdGV9fTwvaDQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvb3RlciBjbGFzcz1cInRvb2x0aXAtZm9vdGVyIHRleHQtc3RhcnRcIj4gPHNwYW4gY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIWdldENhcmRHcmFwaERhdGE/LmNvbnZlcnNpb24/LlByZXZpb3VzVmFyaWF0aW9uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDE4IDE4XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjMyOF80NjU0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSA5TDYuNzUgNC4yNUw0LjI1IDYuNzVMMC41IDNNMTEuNSA5SDguNU0xMS41IDlWNlwiIHN0cm9rZT1cIiNEOTJEMjBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjMyOF80NjU0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJnZXRDYXJkR3JhcGhEYXRhPy5jb252ZXJzaW9uPy5QcmV2aW91c1ZhcmlhdGlvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzMyMTZfMTE4KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSAzTDYuNzUgNy43NUw0LjI1IDUuMjVMMC41IDlNMTEuNSAzSDguNU0xMS41IDNWNlwiIHN0cm9rZT1cIiMwMzk4NTVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMzIxNl8xMThcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm10LTIgbXMtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb252ZXJzaW9uVmFsdWUgPT09J2Zvb3RmYWxsJyAmJiBnZXRDYXJkR3JhcGhEYXRhPy5jb252ZXJzaW9uPy5mb290ZmFsbC5QcmV2aW91c0RhdGEgPT09MFwiIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPjAlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb252ZXJzaW9uVmFsdWUgPT09J2Zvb3RmYWxsJyAmJiBnZXRDYXJkR3JhcGhEYXRhPy5jb252ZXJzaW9uPy5mb290ZmFsbC5QcmV2aW91c0RhdGEgIT09MFwiIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPnt7Z2V0Q2FyZEdyYXBoRGF0YT8uY29udmVyc2lvbj8uZm9vdGZhbGwuUHJldmlvdXNEYXRhID8gZ2V0Q2FyZEdyYXBoRGF0YT8uY29udmVyc2lvbj8uZm9vdGZhbGwuUHJldmlvdXNEYXRhOictLSd9fSU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbnZlcnNpb25WYWx1ZSA9PT0nZW5nYWdlcnMnICYmIGdldENhcmRHcmFwaERhdGE/LmNvbnZlcnNpb24/LmVuZ2FnZXJzLlByZXZpb3VzRGF0YSA9PT0wXCIgY2xhc3M9XCJwZXJjZW50LXZhbHVlXCI+MCU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbnZlcnNpb25WYWx1ZSA9PT0nZW5nYWdlcnMnICYmIGdldENhcmRHcmFwaERhdGE/LmNvbnZlcnNpb24/LmVuZ2FnZXJzLlByZXZpb3VzRGF0YSAhPT0wXCIgY2xhc3M9XCJwZXJjZW50LXZhbHVlXCI+e3tnZXRDYXJkR3JhcGhEYXRhPy5jb252ZXJzaW9uPy5lbmdhZ2Vycy5QcmV2aW91c0RhdGEgPyBnZXRDYXJkR3JhcGhEYXRhPy5jb252ZXJzaW9uPy5lbmdhZ2Vycy5QcmV2aW91c0RhdGE6Jy0tJ319JTwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbnZlcnNpb25WYWx1ZSA9PT0nUG90ZW50aWFsIEJ1eWVycycgJiYgZ2V0Q2FyZEdyYXBoRGF0YT8uY29udmVyc2lvbj8ucG90ZW50aWFsQnV5ZXJzLlByZXZpb3VzRGF0YSA9PT0wXCIgY2xhc3M9XCJwZXJjZW50LXZhbHVlXCI+MCU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbnZlcnNpb25WYWx1ZSA9PT0nUG90ZW50aWFsIEJ1eWVycycgJiYgZ2V0Q2FyZEdyYXBoRGF0YT8uY29udmVyc2lvbj8ucG90ZW50aWFsQnV5ZXJzLlByZXZpb3VzRGF0YSAhPT0wXCIgY2xhc3M9XCJwZXJjZW50LXZhbHVlXCI+e3tnZXRDYXJkR3JhcGhEYXRhPy5jb252ZXJzaW9uPy5wb3RlbnRpYWxCdXllcnMuUHJldmlvdXNEYXRhID8gZ2V0Q2FyZEdyYXBoRGF0YT8uY29udmVyc2lvbj8ucG90ZW50aWFsQnV5ZXJzLlByZXZpb3VzRGF0YTonLS0nfX0lPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb252ZXJzaW9uVmFsdWUgPT09J05vQiBEZXJpdmVkJ1wiIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPi0tJTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29udmVyc2lvblZhbHVlID09PScnICYmIGdldENhcmRHcmFwaERhdGE/LmNvbnZlcnNpb24/LlByZXZpb3VzRGF0YSA9PT0wXCIgY2xhc3M9XCJwZXJjZW50LXZhbHVlXCI+MCU8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29udmVyc2lvblZhbHVlID09PScnICYmIGdldENhcmRHcmFwaERhdGE/LmNvbnZlcnNpb24/LlByZXZpb3VzRGF0YSAhPT0wXCIgIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPnt7Z2V0Q2FyZEdyYXBoRGF0YT8uY29udmVyc2lvbj8uUHJldmlvdXNEYXRhID8gZ2V0Q2FyZEdyYXBoRGF0YT8uY29udmVyc2lvbj8uUHJldmlvdXNEYXRhOictLSd9fSU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwid2Vlay1mb250XCI+IHZzIFByZXZpb3VzICA8c3BhbiAqbmdJZj1cImRhdGVUeXBlID09PSdkYWlseSdcIj5kYXk8L3NwYW4+PHNwYW4gKm5nSWY9XCJkYXRlVHlwZSA9PT0nd2Vla2x5J1wiPndlZWs8L3NwYW4+IDxzcGFuICpuZ0lmPVwiZGF0ZVR5cGUgPT09J21vbnRobHknXCI+bW9udGg8L3NwYW4+PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb290ZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLTEwMHB4IHB0LTEwIHB4LTMgcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoLTc1cHggY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKm5nSWY9XCJjb252ZXJzaW9uVmFsdWUgIT09J2Zvb3RmYWxsJ1wiIHBsYWNlbWVudD1cInRvcFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwiRm9vdGZhbGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlVmFsdWUoJ2Zvb3RmYWxsJylcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNCAxOEg5LjVWMTkuMjVDOS41IDE5Ljk3OTMgOS4yMTAyNyAyMC42Nzg4IDguNjk0NTQgMjEuMTk0NUM4LjE3ODgyIDIxLjcxMDMgNy40NzkzNSAyMiA2Ljc1IDIyQzYuMDIwNjUgMjIgNS4zMjExOCAyMS43MTAzIDQuODA1NDYgMjEuMTk0NUM0LjI4OTczIDIwLjY3ODggNCAxOS45NzkzIDQgMTkuMjVWMThaTTggNi4xMTk5OUMxMCA2LjExOTk5IDExIDguOTk5OTkgMTEgMTFDMTEgMTIgMTAuNSAxMyAxMCAxNC41TDkuNSAxNkg0QzQgMTUgMy41IDEzLjUgMy41IDExQzMuNSA4LjQ5OTk5IDUuNDk4IDYuMTE5OTkgOCA2LjExOTk5Wk0yMC4wNTQgMTQuMDk4TDE5LjgzNyAxNS4zMjlDMTkuNzAyMyAxNi4wMzk2IDE5LjI5MzEgMTYuNjY4NiAxOC42OTggMTcuMDc5NkMxOC4xMDI5IDE3LjQ5MDcgMTcuMzY5OCAxNy42NTA4IDE2LjY1NzYgMTcuNTI1MkMxNS45NDUzIDE3LjM5OTYgMTUuMzExMSAxNi45OTg0IDE0Ljg5MjUgMTYuNDA4NkMxNC40NzM5IDE1LjgxODggMTQuMzA0NSAxNS4wODc4IDE0LjQyMSAxNC4zNzRMMTQuNjM3IDEzLjE0NEwyMC4wNTQgMTQuMDk4Wk0xOC4xNzggMS43MDQ5OUMyMC42NDIgMi4xMzg5OSAyMi4xOTYgNC44Mjk5OSAyMS43NjIgNy4yOTE5OUMyMS4zMjggOS43NTM5OSAyMC41NzUgMTEuMTQ0IDIwLjQwMiAxMi4xMjlMMTQuOTg1IDExLjE3NEwxNC43NTMgOS42MDk5OUMxNC41MjEgOC4wNDU5OSAxNC4yMDMgNi45NzM5OSAxNC4zNzYgNS45ODk5OUMxNC43MjMgNC4wMTk5OSAxNi4yMDggMS4zNTc5OSAxOC4xNzggMS43MDQ5OVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjOThBMkIzXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgcGxhY2VtZW50PVwidG9wXCIgbmdiVG9vbHRpcD1cIkZvb3RmYWxsXCIgKm5nSWY9XCJjb252ZXJzaW9uVmFsdWUgPT09J2Zvb3RmYWxsJ1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNCAxOEg5LjVWMTkuMjVDOS41IDE5Ljk3OTMgOS4yMTAyNyAyMC42Nzg4IDguNjk0NTQgMjEuMTk0NUM4LjE3ODgyIDIxLjcxMDMgNy40NzkzNSAyMiA2Ljc1IDIyQzYuMDIwNjUgMjIgNS4zMjExOCAyMS43MTAzIDQuODA1NDYgMjEuMTk0NUM0LjI4OTczIDIwLjY3ODggNCAxOS45NzkzIDQgMTkuMjVWMThaTTggNi4xMTk5OUMxMCA2LjExOTk5IDExIDguOTk5OTkgMTEgMTFDMTEgMTIgMTAuNSAxMyAxMCAxNC41TDkuNSAxNkg0QzQgMTUgMy41IDEzLjUgMy41IDExQzMuNSA4LjQ5OTk5IDUuNDk4IDYuMTE5OTkgOCA2LjExOTk5Wk0yMC4wNTQgMTQuMDk4TDE5LjgzNyAxNS4zMjlDMTkuNzAyMyAxNi4wMzk2IDE5LjI5MzEgMTYuNjY4NiAxOC42OTggMTcuMDc5NkMxOC4xMDI5IDE3LjQ5MDcgMTcuMzY5OCAxNy42NTA4IDE2LjY1NzYgMTcuNTI1MkMxNS45NDUzIDE3LjM5OTYgMTUuMzExMSAxNi45OTg0IDE0Ljg5MjUgMTYuNDA4NkMxNC40NzM5IDE1LjgxODggMTQuMzA0NSAxNS4wODc4IDE0LjQyMSAxNC4zNzRMMTQuNjM3IDEzLjE0NEwyMC4wNTQgMTQuMDk4Wk0xOC4xNzggMS43MDQ5OUMyMC42NDIgMi4xMzg5OSAyMi4xOTYgNC44Mjk5OSAyMS43NjIgNy4yOTE5OUMyMS4zMjggOS43NTM5OSAyMC41NzUgMTEuMTQ0IDIwLjQwMiAxMi4xMjlMMTQuOTg1IDExLjE3NEwxNC43NTMgOS42MDk5OUMxNC41MjEgOC4wNDU5OSAxNC4yMDMgNi45NzM5OSAxNC4zNzYgNS45ODk5OUMxNC43MjMgNC4wMTk5OSAxNi4yMDggMS4zNTc5OSAxOC4xNzggMS43MDQ5OVpcIiBmaWxsPVwiIzAwQTNGRlwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoLTc1cHggY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBwbGFjZW1lbnQ9XCJ0b3BcIiBuZ2JUb29sdGlwPVwiRW5nYWdlcnNcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKm5nSWY9XCJjb252ZXJzaW9uVmFsdWUgIT09J2VuZ2FnZXJzJ1wiIChjbGljayk9XCJjaGFuZ2VWYWx1ZSgnZW5nYWdlcnMnKVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTcgMjFWMTlDMTcgMTcuOTM5MSAxNi41Nzg2IDE2LjkyMTcgMTUuODI4NCAxNi4xNzE2QzE1LjA3ODMgMTUuNDIxNCAxNC4wNjA5IDE1IDEzIDE1SDVDMy45MzkxMyAxNSAyLjkyMTcyIDE1LjQyMTQgMi4xNzE1NyAxNi4xNzE2QzEuNDIxNDMgMTYuOTIxNyAxIDE3LjkzOTEgMSAxOVYyMU0yMyAyMVYxOUMyMi45OTkzIDE4LjExMzcgMjIuNzA0NCAxNy4yNTI4IDIyLjE2MTQgMTYuNTUyM0MyMS42MTg0IDE1Ljg1MTkgMjAuODU4MSAxNS4zNTE2IDIwIDE1LjEzTTE2IDMuMTNDMTYuODYwNCAzLjM1MDMgMTcuNjIzIDMuODUwNyAxOC4xNjc2IDQuNTUyMzFDMTguNzEyMiA1LjI1MzkyIDE5LjAwNzggNi4xMTY4MyAxOS4wMDc4IDcuMDA1QzE5LjAwNzggNy44OTMxNyAxOC43MTIyIDguNzU2MDggMTguMTY3NiA5LjQ1NzY5QzE3LjYyMyAxMC4xNTkzIDE2Ljg2MDQgMTAuNjU5NyAxNiAxMC44OE0xMyA3QzEzIDkuMjA5MTQgMTEuMjA5MSAxMSA5IDExQzYuNzkwODYgMTEgNSA5LjIwOTE0IDUgN0M1IDQuNzkwODYgNi43OTA4NiAzIDkgM0MxMS4yMDkxIDMgMTMgNC43OTA4NiAxMyA3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzk4QTJCM1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBwbGFjZW1lbnQ9XCJ0b3BcIiBuZ2JUb29sdGlwPVwiRW5nYWdlcnNcIiAqbmdJZj1cImNvbnZlcnNpb25WYWx1ZSA9PT0nZW5nYWdlcnMnXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNyAyMVYxOUMxNyAxNy45MzkxIDE2LjU3ODYgMTYuOTIxNyAxNS44Mjg0IDE2LjE3MTZDMTUuMDc4MyAxNS40MjE0IDE0LjA2MDkgMTUgMTMgMTVINUMzLjkzOTEzIDE1IDIuOTIxNzIgMTUuNDIxNCAyLjE3MTU3IDE2LjE3MTZDMS40MjE0MyAxNi45MjE3IDEgMTcuOTM5MSAxIDE5VjIxTTIzIDIxVjE5QzIyLjk5OTMgMTguMTEzNyAyMi43MDQ0IDE3LjI1MjggMjIuMTYxNCAxNi41NTIzQzIxLjYxODQgMTUuODUxOSAyMC44NTgxIDE1LjM1MTYgMjAgMTUuMTNNMTYgMy4xM0MxNi44NjA0IDMuMzUwMyAxNy42MjMgMy44NTA3IDE4LjE2NzYgNC41NTIzMUMxOC43MTIyIDUuMjUzOTIgMTkuMDA3OCA2LjExNjgzIDE5LjAwNzggNy4wMDVDMTkuMDA3OCA3Ljg5MzE3IDE4LjcxMjIgOC43NTYwOCAxOC4xNjc2IDkuNDU3NjlDMTcuNjIzIDEwLjE1OTMgMTYuODYwNCAxMC42NTk3IDE2IDEwLjg4TTEzIDdDMTMgOS4yMDkxNCAxMS4yMDkxIDExIDkgMTFDNi43OTA4NiAxMSA1IDkuMjA5MTQgNSA3QzUgNC43OTA4NiA2Ljc5MDg2IDMgOSAzQzExLjIwOTEgMyAxMyA0Ljc5MDg2IDEzIDdaXCIgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoLTc1cHggY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBwbGFjZW1lbnQ9XCJ0b3BcIiBuZ2JUb29sdGlwPVwiUG90ZW50aWFsIEJ1eWVyc1wiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAqbmdJZj1cImNvbnZlcnNpb25WYWx1ZSAhPT0nUG90ZW50aWFsIEJ1eWVycydcIiAoY2xpY2spPVwiY2hhbmdlVmFsdWUoJ3BvdGVudGlhbEJ1eWVycycpXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggb3BhY2l0eT1cIjAuM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yMC4wMDM5IDE4LjAwMkg0LjAwMzkxQzMuNDAzOTEgMTguMDAyIDMuMDAzOTEgMTcuNjAyIDMuMDAzOTEgMTcuMDAyVjcuMDAxOTVDMy4wMDM5MSA2LjQwMTk1IDMuNDAzOTEgNi4wMDE5NSA0LjAwMzkxIDYuMDAxOTVIMjAuMDAzOUMyMC42MDM5IDYuMDAxOTUgMjEuMDAzOSA2LjQwMTk1IDIxLjAwMzkgNy4wMDE5NVYxNy4wMDJDMjEuMDAzOSAxNy42MDIgMjAuNjAzOSAxOC4wMDIgMjAuMDAzOSAxOC4wMDJaTTEyLjAwMzkgOC4wMDE5NUMxMC4zMDM5IDguMDAxOTUgOS4wMDM5MSA5LjgwMTk1IDkuMDAzOTEgMTIuMDAyQzkuMDAzOTEgMTQuMjAyIDEwLjMwMzkgMTYuMDAyIDEyLjAwMzkgMTYuMDAyQzEzLjcwMzkgMTYuMDAyIDE1LjAwMzkgMTQuMjAyIDE1LjAwMzkgMTIuMDAyQzE1LjAwMzkgOS44MDE5NSAxMy43MDM5IDguMDAxOTUgMTIuMDAzOSA4LjAwMTk1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM5OEEyQjNcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE4LjAwMzkgNi4wMDE5NUgyMC4wMDM5QzIwLjYwMzkgNi4wMDE5NSAyMS4wMDM5IDYuNDAxOTUgMjEuMDAzOSA3LjAwMTk1VjkuMDAxOTVDMTkuMzAzOSA5LjAwMTk1IDE4LjAwMzkgNy43MDE5NSAxOC4wMDM5IDYuMDAxOTVaTTYuMDAzOTEgNi4wMDE5NUg0LjAwMzkxQzMuNDAzOTEgNi4wMDE5NSAzLjAwMzkxIDYuNDAxOTUgMy4wMDM5MSA3LjAwMTk1VjkuMDAxOTVDNC43MDM5MSA5LjAwMTk1IDYuMDAzOTEgNy43MDE5NSA2LjAwMzkxIDYuMDAxOTVaTTIxLjAwMzkgMTcuMDAyVjE1LjAwMkMxOS4zMDM5IDE1LjAwMiAxOC4wMDM5IDE2LjMwMiAxOC4wMDM5IDE4LjAwMkgyMC4wMDM5QzIwLjYwMzkgMTguMDAyIDIxLjAwMzkgMTcuNjAyIDIxLjAwMzkgMTcuMDAyWk0zLjAwMzkxIDE1LjAwMlYxNy4wMDJDMy4wMDM5MSAxNy42MDIgMy40MDM5MSAxOC4wMDIgNC4wMDM5MSAxOC4wMDJINi4wMDM5MUM2LjAwMzkxIDE2LjMwMiA0LjcwMzkxIDE1LjAwMiAzLjAwMzkxIDE1LjAwMlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjOThBMkIzXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgcGxhY2VtZW50PVwidG9wXCIgbmdiVG9vbHRpcD1cIlBvdGVudGlhbCBCdXllcnNcIiAqbmdJZj1cImNvbnZlcnNpb25WYWx1ZSA9PT0nUG90ZW50aWFsIEJ1eWVycydcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBvcGFjaXR5PVwiMC4zXCIgZD1cIk0yMC4wMDM5IDE4LjAwMkg0LjAwMzkxQzMuNDAzOTEgMTguMDAyIDMuMDAzOTEgMTcuNjAyIDMuMDAzOTEgMTcuMDAyVjcuMDAxOTVDMy4wMDM5MSA2LjQwMTk1IDMuNDAzOTEgNi4wMDE5NSA0LjAwMzkxIDYuMDAxOTVIMjAuMDAzOUMyMC42MDM5IDYuMDAxOTUgMjEuMDAzOSA2LjQwMTk1IDIxLjAwMzkgNy4wMDE5NVYxNy4wMDJDMjEuMDAzOSAxNy42MDIgMjAuNjAzOSAxOC4wMDIgMjAuMDAzOSAxOC4wMDJaTTEyLjAwMzkgOC4wMDE5NUMxMC4zMDM5IDguMDAxOTUgOS4wMDM5MSA5LjgwMTk1IDkuMDAzOTEgMTIuMDAyQzkuMDAzOTEgMTQuMjAyIDEwLjMwMzkgMTYuMDAyIDEyLjAwMzkgMTYuMDAyQzEzLjcwMzkgMTYuMDAyIDE1LjAwMzkgMTQuMjAyIDE1LjAwMzkgMTIuMDAyQzE1LjAwMzkgOS44MDE5NSAxMy43MDM5IDguMDAxOTUgMTIuMDAzOSA4LjAwMTk1WlwiIGZpbGw9XCIjMDBBM0ZGXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xOC4wMDM5IDYuMDAxOTVIMjAuMDAzOUMyMC42MDM5IDYuMDAxOTUgMjEuMDAzOSA2LjQwMTk1IDIxLjAwMzkgNy4wMDE5NVY5LjAwMTk1QzE5LjMwMzkgOS4wMDE5NSAxOC4wMDM5IDcuNzAxOTUgMTguMDAzOSA2LjAwMTk1Wk02LjAwMzkxIDYuMDAxOTVINC4wMDM5MUMzLjQwMzkxIDYuMDAxOTUgMy4wMDM5MSA2LjQwMTk1IDMuMDAzOTEgNy4wMDE5NVY5LjAwMTk1QzQuNzAzOTEgOS4wMDE5NSA2LjAwMzkxIDcuNzAxOTUgNi4wMDM5MSA2LjAwMTk1Wk0yMS4wMDM5IDE3LjAwMlYxNS4wMDJDMTkuMzAzOSAxNS4wMDIgMTguMDAzOSAxNi4zMDIgMTguMDAzOSAxOC4wMDJIMjAuMDAzOUMyMC42MDM5IDE4LjAwMiAyMS4wMDM5IDE3LjYwMiAyMS4wMDM5IDE3LjAwMlpNMy4wMDM5MSAxNS4wMDJWMTcuMDAyQzMuMDAzOTEgMTcuNjAyIDMuNDAzOTEgMTguMDAyIDQuMDAzOTEgMTguMDAySDYuMDAzOTFDNi4wMDM5MSAxNi4zMDIgNC43MDM5MSAxNS4wMDIgMy4wMDM5MSAxNS4wMDJaXCIgZmlsbD1cIiMwMEEzRkZcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoLTc1cHggY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBwbGFjZW1lbnQ9XCJ0b3BcIiBuZ2JUb29sdGlwPVwiTm9CIERlcml2ZWRcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKm5nSWY9XCJjb252ZXJzaW9uVmFsdWUgIT09J05vQiBEZXJpdmVkJ1wiIChjbGljayk9XCJjaGFuZ2VWYWx1ZSgnTm9CIERlcml2ZWQnKVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIG9wYWNpdHk9XCIwLjNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTguMDAzOSAyMS42MDA1QzE2LjMwMzkgMjEuNjAwNSAxNS4wMDM5IDIwLjMwMDUgMTUuMDAzOSAxOC42MDA1VjIuNTAwNUMxNS4wMDM5IDIuMjAwNSAxNC42MDM5IDIuMDAwNDUgMTQuMzAzOSAyLjIwMDQ1TDEzLjAwMzkgMy42MDA0OEwxMS43MDM5IDIuMzAwNDlDMTEuMzAzOSAxLjkwMDQ5IDEwLjcwMzkgMS45MDA0OSAxMC4zMDM5IDIuMzAwNDlMOS4wMDM5MSAzLjYwMDQ4TDcuNzAzOTIgMi4zMDA0OUM3LjMwMzkyIDEuOTAwNDkgNi43MDM5IDEuOTAwNDkgNi4zMDM5IDIuMzAwNDlMNS4wMDM5MSAzLjYwMDQ4TDMuNzAzOTIgMi4zMDA0OUMzLjUwMzkyIDIuMTAwNDkgMy4wMDM5MSAyLjIwMDUgMy4wMDM5MSAzLjUwMDVWMTguNjAwNUMzLjAwMzkxIDIwLjMwMDUgNC4zMDM5MSAyMS42MDA1IDYuMDAzOTEgMjEuNjAwNUgxOC4wMDM5WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM5OEEyQjNcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEyLjAwNTkgMTIuNTk3MkgxMS4wMDU5QzEwLjQwNTkgMTIuNTk3MiAxMC4wMDU5IDEyLjE5NzIgMTAuMDA1OSAxMS41OTcyQzEwLjAwNTkgMTAuOTk3MiAxMC40MDU5IDEwLjU5NzIgMTEuMDA1OSAxMC41OTcySDEyLjAwNTlDMTIuNjA1OSAxMC41OTcyIDEzLjAwNTkgMTAuOTk3MiAxMy4wMDU5IDExLjU5NzJDMTMuMDA1OSAxMi4xOTcyIDEyLjYwNTkgMTIuNTk3MiAxMi4wMDU5IDEyLjU5NzJaTTkuMDA1ODYgMTEuNTk3MkM5LjAwNTg2IDEwLjk5NzIgOC42MDU4NiAxMC41OTcyIDguMDA1ODYgMTAuNTk3Mkg2LjAwNTg2QzUuNDA1ODYgMTAuNTk3MiA1LjAwNTg2IDEwLjk5NzIgNS4wMDU4NiAxMS41OTcyQzUuMDA1ODYgMTIuMTk3MiA1LjQwNTg2IDEyLjU5NzIgNi4wMDU4NiAxMi41OTcySDguMDA1ODZDOC42MDU4NiAxMi41OTcyIDkuMDA1ODYgMTIuMTk3MiA5LjAwNTg2IDExLjU5NzJaTTkuMDA1ODYgNy41OTcxN0M5LjAwNTg2IDYuOTk3MTcgOC42MDU4NiA2LjU5NzE3IDguMDA1ODYgNi41OTcxN0g2LjAwNTg2QzUuNDA1ODYgNi41OTcxNyA1LjAwNTg2IDYuOTk3MTcgNS4wMDU4NiA3LjU5NzE3QzUuMDA1ODYgOC4xOTcxNyA1LjQwNTg2IDguNTk3MTcgNi4wMDU4NiA4LjU5NzE3SDguMDA1ODZDOC42MDU4NiA4LjU5NzE3IDkuMDA1ODYgOC4xOTcxNyA5LjAwNTg2IDcuNTk3MTdaTTEzLjAwNTkgNy41OTcxN0MxMy4wMDU5IDYuOTk3MTcgMTIuNjA1OSA2LjU5NzE3IDEyLjAwNTkgNi41OTcxN0gxMS4wMDU5QzEwLjQwNTkgNi41OTcxNyAxMC4wMDU5IDYuOTk3MTcgMTAuMDA1OSA3LjU5NzE3QzEwLjAwNTkgOC4xOTcxNyAxMC40MDU5IDguNTk3MTcgMTEuMDA1OSA4LjU5NzE3SDEyLjAwNTlDMTIuNjA1OSA4LjU5NzE3IDEzLjAwNTkgOC4xOTcxNyAxMy4wMDU5IDcuNTk3MTdaTTEzLjAwNTkgMTUuNTk3MkMxMy4wMDU5IDE0Ljk5NzIgMTIuNjA1OSAxNC41OTcyIDEyLjAwNTkgMTQuNTk3MkgxMC4wMDU5QzkuNDA1ODYgMTQuNTk3MiA5LjAwNTg2IDE0Ljk5NzIgOS4wMDU4NiAxNS41OTcyQzkuMDA1ODYgMTYuMTk3MiA5LjQwNTg2IDE2LjU5NzIgMTAuMDA1OSAxNi41OTcySDEyLjAwNTlDMTIuNjA1OSAxNi41OTcyIDEzLjAwNTkgMTYuMTk3MiAxMy4wMDU5IDE1LjU5NzJaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzk4QTJCM1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTUuMDAyIDE4LjU5NzFDMTUuMDAyIDIwLjI5NzEgMTYuMzAyIDIxLjU5NzEgMTguMDAyIDIxLjU5NzFDMTkuNzAyIDIxLjU5NzEgMjEuMDAyIDIwLjI5NzEgMjEuMDAyIDE4LjU5NzFWMTIuNDk3MUMyMS4wMDIgMTIuMTk3MSAyMC42MDIgMTEuOTk3MSAyMC4zMDIgMTIuMTk3MUwxOS4wMDIgMTMuNTk3MUwxNy43MDIgMTIuMjk3MUMxNy4zMDIgMTEuODk3MSAxNi43MDIgMTEuODk3MSAxNi4zMDIgMTIuMjk3MUwxNS4wMDIgMTMuNTk3MVYxOC41OTcxWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM5OEEyQjNcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBwbGFjZW1lbnQ9XCJ0b3BcIiBuZ2JUb29sdGlwPVwiTm9CIERlcml2ZWRcIiAqbmdJZj1cImNvbnZlcnNpb25WYWx1ZSA9PT0nTm9CIERlcml2ZWQnXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggb3BhY2l0eT1cIjAuM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xOC4wMDM5IDIxLjYwMDVDMTYuMzAzOSAyMS42MDA1IDE1LjAwMzkgMjAuMzAwNSAxNS4wMDM5IDE4LjYwMDVWMi41MDA1QzE1LjAwMzkgMi4yMDA1IDE0LjYwMzkgMi4wMDA0NSAxNC4zMDM5IDIuMjAwNDVMMTMuMDAzOSAzLjYwMDQ4TDExLjcwMzkgMi4zMDA0OUMxMS4zMDM5IDEuOTAwNDkgMTAuNzAzOSAxLjkwMDQ5IDEwLjMwMzkgMi4zMDA0OUw5LjAwMzkxIDMuNjAwNDhMNy43MDM5MiAyLjMwMDQ5QzcuMzAzOTIgMS45MDA0OSA2LjcwMzkgMS45MDA0OSA2LjMwMzkgMi4zMDA0OUw1LjAwMzkxIDMuNjAwNDhMMy43MDM5MiAyLjMwMDQ5QzMuNTAzOTIgMi4xMDA0OSAzLjAwMzkxIDIuMjAwNSAzLjAwMzkxIDMuNTAwNVYxOC42MDA1QzMuMDAzOTEgMjAuMzAwNSA0LjMwMzkxIDIxLjYwMDUgNi4wMDM5MSAyMS42MDA1SDE4LjAwMzlaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzAwQTNGRlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTIuMDA1OSAxMi41OTcySDExLjAwNTlDMTAuNDA1OSAxMi41OTcyIDEwLjAwNTkgMTIuMTk3MiAxMC4wMDU5IDExLjU5NzJDMTAuMDA1OSAxMC45OTcyIDEwLjQwNTkgMTAuNTk3MiAxMS4wMDU5IDEwLjU5NzJIMTIuMDA1OUMxMi42MDU5IDEwLjU5NzIgMTMuMDA1OSAxMC45OTcyIDEzLjAwNTkgMTEuNTk3MkMxMy4wMDU5IDEyLjE5NzIgMTIuNjA1OSAxMi41OTcyIDEyLjAwNTkgMTIuNTk3MlpNOS4wMDU4NiAxMS41OTcyQzkuMDA1ODYgMTAuOTk3MiA4LjYwNTg2IDEwLjU5NzIgOC4wMDU4NiAxMC41OTcySDYuMDA1ODZDNS40MDU4NiAxMC41OTcyIDUuMDA1ODYgMTAuOTk3MiA1LjAwNTg2IDExLjU5NzJDNS4wMDU4NiAxMi4xOTcyIDUuNDA1ODYgMTIuNTk3MiA2LjAwNTg2IDEyLjU5NzJIOC4wMDU4NkM4LjYwNTg2IDEyLjU5NzIgOS4wMDU4NiAxMi4xOTcyIDkuMDA1ODYgMTEuNTk3MlpNOS4wMDU4NiA3LjU5NzE3QzkuMDA1ODYgNi45OTcxNyA4LjYwNTg2IDYuNTk3MTcgOC4wMDU4NiA2LjU5NzE3SDYuMDA1ODZDNS40MDU4NiA2LjU5NzE3IDUuMDA1ODYgNi45OTcxNyA1LjAwNTg2IDcuNTk3MTdDNS4wMDU4NiA4LjE5NzE3IDUuNDA1ODYgOC41OTcxNyA2LjAwNTg2IDguNTk3MTdIOC4wMDU4NkM4LjYwNTg2IDguNTk3MTcgOS4wMDU4NiA4LjE5NzE3IDkuMDA1ODYgNy41OTcxN1pNMTMuMDA1OSA3LjU5NzE3QzEzLjAwNTkgNi45OTcxNyAxMi42MDU5IDYuNTk3MTcgMTIuMDA1OSA2LjU5NzE3SDExLjAwNTlDMTAuNDA1OSA2LjU5NzE3IDEwLjAwNTkgNi45OTcxNyAxMC4wMDU5IDcuNTk3MTdDMTAuMDA1OSA4LjE5NzE3IDEwLjQwNTkgOC41OTcxNyAxMS4wMDU5IDguNTk3MTdIMTIuMDA1OUMxMi42MDU5IDguNTk3MTcgMTMuMDA1OSA4LjE5NzE3IDEzLjAwNTkgNy41OTcxN1pNMTMuMDA1OSAxNS41OTcyQzEzLjAwNTkgMTQuOTk3MiAxMi42MDU5IDE0LjU5NzIgMTIuMDA1OSAxNC41OTcySDEwLjAwNTlDOS40MDU4NiAxNC41OTcyIDkuMDA1ODYgMTQuOTk3MiA5LjAwNTg2IDE1LjU5NzJDOS4wMDU4NiAxNi4xOTcyIDkuNDA1ODYgMTYuNTk3MiAxMC4wMDU5IDE2LjU5NzJIMTIuMDA1OUMxMi42MDU5IDE2LjU5NzIgMTMuMDA1OSAxNi4xOTcyIDEzLjAwNTkgMTUuNTk3MlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMDBBM0ZGXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNS4wMDIgMTguNTk3MUMxNS4wMDIgMjAuMjk3MSAxNi4zMDIgMjEuNTk3MSAxOC4wMDIgMjEuNTk3MUMxOS43MDIgMjEuNTk3MSAyMS4wMDIgMjAuMjk3MSAyMS4wMDIgMTguNTk3MVYxMi40OTcxQzIxLjAwMiAxMi4xOTcxIDIwLjYwMiAxMS45OTcxIDIwLjMwMiAxMi4xOTcxTDE5LjAwMiAxMy41OTcxTDE3LjcwMiAxMi4yOTcxQzE3LjMwMiAxMS44OTcxIDE2LjcwMiAxMS44OTcxIDE2LjMwMiAxMi4yOTcxTDE1LjAwMiAxMy41OTcxVjE4LjU5NzFaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzAwQTNGRlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXIgbXMtMyBwLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFnZXRDYXJkR3JhcGhEYXRhPy5jb252ZXJzaW9uPy5mb290ZmFsbC5QcmV2aW91c1ZhcmlhdGlvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjMyOF80NjU0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgOUw2Ljc1IDQuMjVMNC4yNSA2Ljc1TDAuNSAzTTExLjUgOUg4LjVNMTEuNSA5VjZcIiBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMzI4XzQ2NTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiZ2V0Q2FyZEdyYXBoRGF0YT8uY29udmVyc2lvbj8uZm9vdGZhbGwuUHJldmlvdXNWYXJpYXRpb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzMyMTZfMTE4KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgM0w2Ljc1IDcuNzVMNC4yNSA1LjI1TDAuNSA5TTExLjUgM0g4LjVNMTEuNSAzVjZcIiBzdHJva2U9XCIjMDM5ODU1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8zMjE2XzExOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXQtMiBtcy0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb252ZXJzaW9uVmFsdWUgPT09J2Zvb3RmYWxsJyAmJiBnZXRDYXJkR3JhcGhEYXRhPy5jb252ZXJzaW9uPy5mb290ZmFsbC5QcmV2aW91c0RhdGEgPT09MFwiIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPjAlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29udmVyc2lvblZhbHVlID09PSdmb290ZmFsbCcgJiYgZ2V0Q2FyZEdyYXBoRGF0YT8uY29udmVyc2lvbj8uZm9vdGZhbGwuUHJldmlvdXNEYXRhICE9PTBcIiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIj57e2dldENhcmRHcmFwaERhdGE/LmNvbnZlcnNpb24/LmZvb3RmYWxsLlByZXZpb3VzRGF0YSA/IGdldENhcmRHcmFwaERhdGE/LmNvbnZlcnNpb24/LmZvb3RmYWxsLlByZXZpb3VzRGF0YTonLS0nfX0lPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29udmVyc2lvblZhbHVlID09PSdlbmdhZ2VycycgJiYgZ2V0Q2FyZEdyYXBoRGF0YT8uY29udmVyc2lvbj8uZW5nYWdlcnMuUHJldmlvdXNEYXRhID09PTBcIiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIj4wJTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb252ZXJzaW9uVmFsdWUgPT09J2VuZ2FnZXJzJyAmJiBnZXRDYXJkR3JhcGhEYXRhPy5jb252ZXJzaW9uPy5lbmdhZ2Vycy5QcmV2aW91c0RhdGEgIT09MFwiIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPnt7Z2V0Q2FyZEdyYXBoRGF0YT8uY29udmVyc2lvbj8uZW5nYWdlcnMuUHJldmlvdXNEYXRhID8gZ2V0Q2FyZEdyYXBoRGF0YT8uY29udmVyc2lvbj8uZW5nYWdlcnMuUHJldmlvdXNEYXRhOictLSd9fSU8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29udmVyc2lvblZhbHVlID09PSdQb3RlbnRpYWwgQnV5ZXJzJyAmJiBnZXRDYXJkR3JhcGhEYXRhPy5jb252ZXJzaW9uPy5wb3RlbnRpYWxCdXllcnMuUHJldmlvdXNEYXRhID09PTBcIiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIj4wJTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbnZlcnNpb25WYWx1ZSA9PT0nUG90ZW50aWFsIEJ1eWVycycgJiYgZ2V0Q2FyZEdyYXBoRGF0YT8uY29udmVyc2lvbj8ucG90ZW50aWFsQnV5ZXJzLlByZXZpb3VzRGF0YSAhPT0wXCIgY2xhc3M9XCJwZXJjZW50LXZhbHVlXCI+e3tnZXRDYXJkR3JhcGhEYXRhPy5jb252ZXJzaW9uPy5wb3RlbnRpYWxCdXllcnMuUHJldmlvdXNEYXRhID8gZ2V0Q2FyZEdyYXBoRGF0YT8uY29udmVyc2lvbj8ucG90ZW50aWFsQnV5ZXJzLlByZXZpb3VzRGF0YTonLS0nfX0lPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29udmVyc2lvblZhbHVlID09PSdOb0IgRGVyaXZlZCdcIiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIj4tLSU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb252ZXJzaW9uVmFsdWUgPT09JycgJiYgZ2V0Q2FyZEdyYXBoRGF0YT8uY29udmVyc2lvbj8uUHJldmlvdXNEYXRhID09PTBcIiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIj4wJTwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29udmVyc2lvblZhbHVlID09PScnICYmIGdldENhcmRHcmFwaERhdGE/LmNvbnZlcnNpb24/LlByZXZpb3VzRGF0YSAhPT0wXCIgIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPnt7Z2V0Q2FyZEdyYXBoRGF0YT8uY29udmVyc2lvbj8uUHJldmlvdXNEYXRhID8gZ2V0Q2FyZEdyYXBoRGF0YT8uY29udmVyc2lvbj8uUHJldmlvdXNEYXRhOictLSd9fSU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwid2Vlay1mb250XCI+IHZzIFByZXZpb3VzIDxzcGFuICpuZ0lmPVwiZGF0ZVR5cGUgPT09J2RhaWx5J1wiPmRheTwvc3Bhbj48c3BhbiAqbmdJZj1cImRhdGVUeXBlID09PSd3ZWVrbHknXCI+d2Vlazwvc3Bhbj4gPHNwYW4gKm5nSWY9XCJkYXRlVHlwZSA9PT0nbW9udGhseSdcIj5tb250aDwvc3Bhbj48L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1ib3JkZXIgaC0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgZWxsaXBzZTEgYm9yZGVyLTAgcHgtM1wiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBbbmdiVG9vbHRpcF09XCJib3VuY2VkVG9vbHRpcFwiIHBsYWNlbWVudD1cImxlZnRcIiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtbiBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZC1sYWJlbCBoZWFkZXJcIj57e2dldENhcmREYXRhPy5ib3VuY2VkPy5yYXRlID8gZ2V0Q2FyZERhdGE/LmJvdW5jZWQ/LnJhdGUgOictLSd9fSU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1Yi1oZWFkZXJcIj5Cb3VuY2VkIFJhdGU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8bmctdGVtcGxhdGUgI2JvdW5jZWRUb29sdGlwPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9vbHRpcC1jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwidG9vbHRpcC10aXRsZSB0ZXh0LXN0YXJ0XCI+Qm91bmNlZCBSYXRlPC9oNT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtc3RhcnRcIj5Ub3RhbCB3YWxrLWlucyB3aG8gc3BlbnQgbGVzcyB0aGFuICZsdDtOJmd0O21pbi9zLjwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJ0ZXh0LXN0YXJ0XCI+e3tnZXRDYXJkRGF0YT8uYm91bmNlZD8ucmF0ZX19PC9oND5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9vdGVyIGNsYXNzPVwidG9vbHRpcC1mb290ZXIgdGV4dC1zdGFydFwiPiA8c3BhbiBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIhZ2V0Q2FyZEdyYXBoRGF0YT8uYm91bmNlZD8uUHJldmlvdXNWYXJpYXRpb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMzI4XzQ2NTQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS41IDlMNi43NSA0LjI1TDQuMjUgNi43NUwwLjUgM00xMS41IDlIOC41TTExLjUgOVY2XCIgc3Ryb2tlPVwiI0Q5MkQyMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMzI4XzQ2NTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImdldENhcmRHcmFwaERhdGE/LmJvdW5jZWQ/LlByZXZpb3VzVmFyaWF0aW9uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMzIxNl8xMTgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS41IDNMNi43NSA3Ljc1TDQuMjUgNS4yNUwwLjUgOU0xMS41IDNIOC41TTExLjUgM1Y2XCIgc3Ryb2tlPVwiIzAzOTg1NVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8zMjE2XzExOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+IDxzcGFuIGNsYXNzPVwibXQtMiBtcy0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdldENhcmRHcmFwaERhdGE/LmJvdW5jZWQ/LlByZXZpb3VzRGF0YSA9PT0wXCIgY2xhc3M9XCJwZXJjZW50LXZhbHVlXCI+MCU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdldENhcmRHcmFwaERhdGE/LmJvdW5jZWQ/LlByZXZpb3VzRGF0YSAhPT0wXCIgY2xhc3M9XCJwZXJjZW50LXZhbHVlXCI+e3tnZXRDYXJkR3JhcGhEYXRhPy5ib3VuY2VkPy5QcmV2aW91c0RhdGEgPyBnZXRDYXJkR3JhcGhEYXRhPy5ib3VuY2VkPy5QcmV2aW91c0RhdGE6Jy0tJ319JTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwid2Vlay1mb250XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnMgUHJldmlvdXMgIDxzcGFuICpuZ0lmPVwiZGF0ZVR5cGUgPT09J2RhaWx5J1wiPmRheTwvc3Bhbj48c3BhbiAqbmdJZj1cImRhdGVUeXBlID09PSd3ZWVrbHknXCI+d2Vlazwvc3Bhbj4gPHNwYW4gKm5nSWY9XCJkYXRlVHlwZSA9PT0nbW9udGhseSdcIj5tb250aDwvc3Bhbj48L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PC9mb290ZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNhcmROb2RhdGFcIiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMiBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwYi0wIHB4LTAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctbm9kYXRhMVwiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YTEuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGEtdGl0bGUxXCI+Tm8gZGF0YSBmb3VuZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJub2RhdGEtc3ViXCI+VGhlcmUgaXMgbm8gcmVzdWx0IGZvciB0aGlzIGNvbnZlcnNpb24gZnVubmVsPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWNhcmROb2RhdGFcIiBjbGFzcz1cInRleHQtY2VudGVyXCIgaWQ9XCJCb3VuY2VkUmF0ZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBtcy0yIHAtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIWdldENhcmRHcmFwaERhdGE/LmJvdW5jZWQ/LlByZXZpb3VzVmFyaWF0aW9uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMzI4XzQ2NTQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSA5TDYuNzUgNC4yNUw0LjI1IDYuNzVMMC41IDNNMTEuNSA5SDguNU0xMS41IDlWNlwiIHN0cm9rZT1cIiNEOTJEMjBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIzMjhfNDY1NFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJnZXRDYXJkR3JhcGhEYXRhPy5ib3VuY2VkPy5QcmV2aW91c1ZhcmlhdGlvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMzIxNl8xMTgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSAzTDYuNzUgNy43NUw0LjI1IDUuMjVMMC41IDlNMTEuNSAzSDguNU0xMS41IDNWNlwiIHN0cm9rZT1cIiMwMzk4NTVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzMyMTZfMTE4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdC0yIG1zLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdldENhcmRHcmFwaERhdGE/LmJvdW5jZWQ/LlByZXZpb3VzRGF0YSA9PT0wXCIgY2xhc3M9XCJwZXJjZW50LXZhbHVlXCI+MCU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnZXRDYXJkR3JhcGhEYXRhPy5ib3VuY2VkPy5QcmV2aW91c0RhdGEgIT09MFwiIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPnt7Z2V0Q2FyZEdyYXBoRGF0YT8uYm91bmNlZD8uUHJldmlvdXNEYXRhID8gZ2V0Q2FyZEdyYXBoRGF0YT8uYm91bmNlZD8uUHJldmlvdXNEYXRhOictLSd9fSU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ3ZWVrLWZvbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnMgUHJldmlvdXMgIDxzcGFuICpuZ0lmPVwiZGF0ZVR5cGUgPT09J2RhaWx5J1wiPmRheTwvc3Bhbj48c3BhbiAqbmdJZj1cImRhdGVUeXBlID09PSd3ZWVrbHknXCI+d2Vlazwvc3Bhbj4gPHNwYW4gKm5nSWY9XCJkYXRlVHlwZSA9PT0nbW9udGhseSdcIj5tb250aDwvc3Bhbj48L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IG10LTNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtYm9yZGVyIGgtMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGVsbGlwc2UxIGJvcmRlci0wIHB4LTNcIiAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFtuZ2JUb29sdGlwXT1cImVuZ2FnZXJzVG9vbHRpcFwiIHBsYWNlbWVudD1cInJpZ2h0XCIgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW4gXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmQtbGFiZWwgaGVhZGVyXCI+e3tnZXRDYXJkRGF0YT8uZW5nYWdlcnM/LnJhdGUgPyBnZXRDYXJkRGF0YT8uZW5nYWdlcnM/LnJhdGUgOictLSd9fSU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1Yi1oZWFkZXJcIj5FbmdhZ2VycyBSYXRlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPG5nLXRlbXBsYXRlICNlbmdhZ2Vyc1Rvb2x0aXA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b29sdGlwLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJ0b29sdGlwLXRpdGxlIHRleHQtc3RhcnRcIj5FbmdhZ2VycyBSYXRlPC9oNT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtc3RhcnRcIj5Ub3RhbCB3YWxrLWlucyB3aG8gc3BlbnQgbW9yZSB0aGFuICZsdDtYbWlucyZndDsgaW50byB0aGUgc2VsZWN0ZWQgc3RvcmVzLjwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJ0ZXh0LXN0YXJ0XCI+e3tnZXRDYXJkRGF0YT8uZW5nYWdlcnM/LnJhdGV9fTwvaDQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvb3RlciBjbGFzcz1cInRvb2x0aXAtZm9vdGVyIHRleHQtc3RhcnRcIj4gPHNwYW4gY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIWdldENhcmRHcmFwaERhdGE/LmVuZ2FnZXJzPy5QcmV2aW91c1ZhcmlhdGlvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIzMjhfNDY1NClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgOUw2Ljc1IDQuMjVMNC4yNSA2Ljc1TDAuNSAzTTExLjUgOUg4LjVNMTEuNSA5VjZcIiBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIzMjhfNDY1NFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiZ2V0Q2FyZEdyYXBoRGF0YT8uZW5nYWdlcnM/LlByZXZpb3VzVmFyaWF0aW9uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMzIxNl8xMTgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS41IDNMNi43NSA3Ljc1TDQuMjUgNS4yNUwwLjUgOU0xMS41IDNIOC41TTExLjUgM1Y2XCIgc3Ryb2tlPVwiIzAzOTg1NVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8zMjE2XzExOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+IDxzcGFuIGNsYXNzPVwibXQtMiBtcy0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdldENhcmRHcmFwaERhdGE/LmVuZ2FnZXJzPy5QcmV2aW91c0RhdGEgPT09MFwiIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPjAlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnZXRDYXJkR3JhcGhEYXRhPy5lbmdhZ2Vycz8uUHJldmlvdXNEYXRhICE9PTBcIiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIj57e2dldENhcmRHcmFwaERhdGE/LmVuZ2FnZXJzPy5QcmV2aW91c0RhdGEgPyBnZXRDYXJkR3JhcGhEYXRhPy5lbmdhZ2Vycz8uUHJldmlvdXNEYXRhOictLSd9fSU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIndlZWstZm9udFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZzIFByZXZpb3VzICA8c3BhbiAqbmdJZj1cImRhdGVUeXBlID09PSdkYWlseSdcIj5kYXk8L3NwYW4+PHNwYW4gKm5nSWY9XCJkYXRlVHlwZSA9PT0nd2Vla2x5J1wiPndlZWs8L3NwYW4+IDxzcGFuICpuZ0lmPVwiZGF0ZVR5cGUgPT09J21vbnRobHknXCI+bW9udGg8L3NwYW4+PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjwvZm9vdGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjYXJkTm9kYXRhXCIgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcGItMCBweC0wIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLW5vZGF0YTFcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGExLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhLXRpdGxlMVwiPk5vIGRhdGEgZm91bmQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwibm9kYXRhLXN1YlwiPlRoZXJlIGlzIG5vIHJlc3VsdCBmb3IgdGhpcyBjb252ZXJzaW9uIGZ1bm5lbDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFjYXJkTm9kYXRhXCIgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiIGlkPVwiZW5nYWdlcnNcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXIgbXMtMiBwLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFnZXRDYXJkR3JhcGhEYXRhPy5lbmdhZ2Vycz8uUHJldmlvdXNWYXJpYXRpb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjMyOF80NjU0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS41IDlMNi43NSA0LjI1TDQuMjUgNi43NUwwLjUgM00xMS41IDlIOC41TTExLjUgOVY2XCIgc3Ryb2tlPVwiI0Q5MkQyMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIzMjhfNDY1NFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImdldENhcmRHcmFwaERhdGE/LmVuZ2FnZXJzPy5QcmV2aW91c1ZhcmlhdGlvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8zMjE2XzExOClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSAzTDYuNzUgNy43NUw0LjI1IDUuMjVMMC41IDlNMTEuNSAzSDguNU0xMS41IDNWNlwiIHN0cm9rZT1cIiMwMzk4NTVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8zMjE2XzExOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm10LTIgbXMtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2V0Q2FyZEdyYXBoRGF0YT8uZW5nYWdlcnM/LlByZXZpb3VzRGF0YSA9PT0wXCIgY2xhc3M9XCJwZXJjZW50LXZhbHVlXCI+MCU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnZXRDYXJkR3JhcGhEYXRhPy5lbmdhZ2Vycz8uUHJldmlvdXNEYXRhICE9PTBcIiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIj57e2dldENhcmRHcmFwaERhdGE/LmVuZ2FnZXJzPy5QcmV2aW91c0RhdGEgPyBnZXRDYXJkR3JhcGhEYXRhPy5lbmdhZ2Vycz8uUHJldmlvdXNEYXRhOictLSd9fSU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ3ZWVrLWZvbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnMgUHJldmlvdXMgIDxzcGFuICpuZ0lmPVwiZGF0ZVR5cGUgPT09J2RhaWx5J1wiPmRheTwvc3Bhbj48c3BhbiAqbmdJZj1cImRhdGVUeXBlID09PSd3ZWVrbHknXCI+d2Vlazwvc3Bhbj4gPHNwYW4gKm5nSWY9XCJkYXRlVHlwZSA9PT0nbW9udGhseSdcIj5tb250aDwvc3Bhbj48L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IG10LTNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtYm9yZGVyIGgtMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGVsbGlwc2UxIGJvcmRlci0wIHB4LTNcIiA+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFtuZ2JUb29sdGlwXT1cIm1pc3NlZFRvb2x0aXBcIiBwbGFjZW1lbnQ9XCJyaWdodFwiIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJkLWxhYmVsIGhlYWRlclwiPnt7Z2V0Q2FyZERhdGE/Lm1pc3NlZG9wcG9ydHVuaXRpZXM/LnJhdGUgPyBnZXRDYXJkRGF0YT8ubWlzc2Vkb3Bwb3J0dW5pdGllcz8ucmF0ZSA6Jy0tJ319JTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ViLWhlYWRlclwiPk1pc3NlZCBPcHBvcnR1bml0aWVzPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxuZy10ZW1wbGF0ZSAjbWlzc2VkVG9vbHRpcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRvb2x0aXAtY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cInRvb2x0aXAtdGl0bGUgdGV4dC1zdGFydFwiPk1pc3NlZCBPcHBvcnR1bml0aWVzPC9oNT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtc3RhcnRcIj5UaGUgZGlmZmVyZW5jZSBiZXR3ZWVuICZsdDtlbmdhZ2VycyZndDsgYW5kICZsdDtjb252ZXJzaW9ucyZndDssIHNob3dpbmcgcG90ZW50aWFsIGxvc3MuPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz1cInRleHQtc3RhcnRcIj57e2dldENhcmREYXRhPy5taXNzZWRvcHBvcnR1bml0aWVzPy5yYXRlfX08L2g0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxmb290ZXIgY2xhc3M9XCJ0b29sdGlwLWZvb3RlciB0ZXh0LXN0YXJ0XCI+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFnZXRDYXJkR3JhcGhEYXRhPy5taXNzZWRvcHBvcnR1bml0aWVzPy5QcmV2aW91c1ZhcmlhdGlvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjMyOF80NjU0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgOUw2Ljc1IDQuMjVMNC4yNSA2Ljc1TDAuNSAzTTExLjUgOUg4LjVNMTEuNSA5VjZcIiBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMzI4XzQ2NTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiZ2V0Q2FyZEdyYXBoRGF0YT8ubWlzc2Vkb3Bwb3J0dW5pdGllcz8uUHJldmlvdXNWYXJpYXRpb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzMyMTZfMTE4KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgM0w2Ljc1IDcuNzVMNC4yNSA1LjI1TDAuNSA5TTExLjUgM0g4LjVNMTEuNSAzVjZcIiBzdHJva2U9XCIjMDM5ODU1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8zMjE2XzExOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMiBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnZXRDYXJkR3JhcGhEYXRhPy5taXNzZWRvcHBvcnR1bml0aWVzPy5QcmV2aW91c0RhdGEgPT09MFwiIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPjAlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2V0Q2FyZEdyYXBoRGF0YT8ubWlzc2Vkb3Bwb3J0dW5pdGllcz8uUHJldmlvdXNEYXRhICE9PTBcIiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIj57e2dldENhcmRHcmFwaERhdGE/Lm1pc3NlZG9wcG9ydHVuaXRpZXM/LlByZXZpb3VzRGF0YSA/IGdldENhcmRHcmFwaERhdGE/Lm1pc3NlZG9wcG9ydHVuaXRpZXM/LlByZXZpb3VzRGF0YTonLS0nfX0lPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ3ZWVrLWZvbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnMgUHJldmlvdXMgIDxzcGFuICpuZ0lmPVwiZGF0ZVR5cGUgPT09J2RhaWx5J1wiPmRheTwvc3Bhbj48c3BhbiAqbmdJZj1cImRhdGVUeXBlID09PSd3ZWVrbHknXCI+d2Vlazwvc3Bhbj4gPHNwYW4gKm5nSWY9XCJkYXRlVHlwZSA9PT0nbW9udGhseSdcIj5tb250aDwvc3Bhbj48L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Zvb3Rlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHAtMCBoLTkwcHggbXQtMyBteC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOVwiPjwhLS17e2dldENhcmREYXRhPy5yZXZlbnVlPy52YWx1ZSA/PyAnLS0nfX0gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS0yXCIgKm5nSWY9XCJnZXRDYXJkRGF0YT8ucmV2ZW51ZT8uY3VycmVuY3kgIT09J2lucidcIj4gPHNwYW4gY2xhc3M9XCJjYXJkLWxhYmVsIGhlYWRlclwiPjxzcGFuIGNsYXNzPVwibWUtMVwiPiQ8L3NwYW4+IHt7Z2V0Q2FyZERhdGE/LnJldmVudWU/LnZhbHVlLnRvTG9jYWxlU3RyaW5nKCdlbi1JTicpID8/ICctLSd9fTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTJcIiAqbmdJZj1cImdldENhcmREYXRhPy5yZXZlbnVlPy5jdXJyZW5jeSA9PT0naW5yJ1wiPiA8c3BhbiBjbGFzcz1cImNhcmQtbGFiZWwgaGVhZGVyXCI+PHNwYW4gY2xhc3M9XCJtZS0xXCI+4oK5PC9zcGFuPiB7e2dldENhcmREYXRhPy5yZXZlbnVlPy52YWx1ZS50b0xvY2FsZVN0cmluZygnZW4tSU4nKSA/PyAnLS0nfX08L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS0xXCI+PHNwYW4gY2xhc3M9XCJzdWItaGVhZGVyXCI+QXZnLiBSZXZlbnVlIExvc3M8L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgbXQtNVwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiIHZpZXdCb3g9XCIwIDAgNDAgNDBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgZmlsdGVyPVwidXJsKCNmaWx0ZXIwX2RfMzg4NV8yNTMxKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjJcIiB5PVwiMVwiIHdpZHRoPVwiMzZcIiBoZWlnaHQ9XCIzNlwiIHJ4PVwiOFwiIGZpbGw9XCIjRUFGOEZGXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjIuNVwiIHk9XCIxLjVcIiB3aWR0aD1cIjM1XCIgaGVpZ2h0PVwiMzVcIiByeD1cIjcuNVwiIHN0cm9rZT1cIiNFQUY4RkZcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzM4ODVfMjUzMSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMjcuNDU4NSAxNy4yMjUxQzI3LjgxMzMgMTguODU1NiAyNy42NzA3IDIwLjU2MTQgMjcuMDUwNSAyMi4xMDI3TDI1Ljg1OTMgMjEuMzgzOEwyNi4wMTcgMjYuMDk3TDMwIDIzLjg4MzRMMjguNzE3IDIzLjEwODZDMzAuNzE3MSAxOC40ODIzIDI5LjA3MjYgMTIuOTMzMyAyNC43Nzk5IDEwLjM0MDdDMjMuMzMyOCA5LjQ2NjMzIDIxLjY5MTggOS4wMDQwNiAyMC4wMjA2IDkuMDAwMDNDMTguMzQ5NCA4Ljk5NTk5IDE2LjcwNjQgOS40NTAzMyAxNS4yNTU1IDEwLjMxNzdMMTYuMjA0OSAxMi4wNTQ0QzE3LjU5MzMgMTEuMjI0OSAxOS4xOTUzIDEwLjg3MTIgMjAuNzg1OCAxMS4wNDNDMjIuMzc2NCAxMS4yMTQ5IDIzLjg3NTQgMTEuOTAzNiAyNS4wNzIzIDEzLjAxMjVDMjYuMjY5MiAxNC4xMjE0IDI3LjEwMzcgMTUuNTk0NiAyNy40NTg1IDE3LjIyNTFaXCIgZmlsbD1cIiMwMEEzRkZcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEyLjU0MDIgMjAuNzc1OUMxMi4xODU0IDE5LjE0NTIgMTIuMzI4MiAxNy40MzkyIDEyLjk0ODUgMTUuODk3OEwxNC4xMzk4IDE2LjYxNjdMMTMuOTgyIDExLjkwMzVMMTAgMTQuMTE4MUwxMS4yODMgMTQuODkwOUM5LjI4MTk5IDE5LjUxODIgMTAuOTI2NCAyNS4wNjYyIDE1LjIxOTIgMjcuNjU4OEMxNi42NjYxIDI4LjUzMzMgMTguMzA3MSAyOC45OTU4IDE5Ljk3ODMgMjlDMjEuNjQ5NSAyOS4wMDQyIDIzLjI5MjYgMjguNTUgMjQuNzQzNSAyNy42ODI4TDIzLjc5NTEgMjUuOTQ2MUMyMi40MDY3IDI2Ljc3NiAyMC44MDQ1IDI3LjEzIDE5LjIxMzggMjYuOTU4M0MxNy42MjMgMjYuNzg2NyAxNi4xMjM3IDI2LjA5NzkgMTQuOTI2NyAyNC45ODlDMTMuNzI5NiAyMy44OCAxMi44OTUgMjIuNDA2NiAxMi41NDAyIDIwLjc3NTlaXCIgZmlsbD1cIiMwMEEzRkZcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNMjEuMDM3MiAxMy4wMDNDMjEuMDM3MiAxMi41NTE0IDIwLjY4NzEgMTIuMTg1MiAyMC4yNTUyIDEyLjE4NTJDMTkuODIzNCAxMi4xODUyIDE5LjQ3MzMgMTIuNTUxNCAxOS40NzMzIDEzLjAwM1YxNC4zNjU5SDE4Ljk1MkMxOC4yNjA3IDE0LjM2NTkgMTcuNTk3OCAxNC42NTMgMTcuMTA5IDE1LjE2NDJDMTYuNjIwMSAxNS42NzU0IDE2LjM0NTUgMTYuMzY4NyAxNi4zNDU1IDE3LjA5MTZDMTYuMzQ1NSAxNy44MTQ2IDE2LjYyMDEgMTguNTA3OSAxNy4xMDkgMTkuMDE5MUMxNy41OTc4IDE5LjUzMDIgMTguMjYwNyAxOS44MTc0IDE4Ljk1MiAxOS44MTc0SDE5LjQ3MzNWMjEuOTk4SDE3LjEyNzVDMTYuNjk1NiAyMS45OTggMTYuMzQ1NSAyMi4zNjQxIDE2LjM0NTUgMjIuODE1OEMxNi4zNDU1IDIzLjI2NzQgMTYuNjk1NiAyMy42MzM1IDE3LjEyNzUgMjMuNjMzNUgxOS40NzMzVjI0Ljk5NjRDMTkuNDczMyAyNS40NDggMTkuODIzNCAyNS44MTQxIDIwLjI1NTIgMjUuODE0MUMyMC42ODcxIDI1LjgxNDEgMjEuMDM3MiAyNS40NDggMjEuMDM3MiAyNC45OTY0VjIzLjYzMzVIMjEuNTU4NUMyMi4yNDk4IDIzLjYzMzUgMjIuOTEyNyAyMy4zNDYzIDIzLjQwMTUgMjIuODM1MUMyMy44OTAzIDIyLjMyNCAyNC4xNjQ5IDIxLjYzMDYgMjQuMTY0OSAyMC45MDc3QzI0LjE2NDkgMjAuMTg0OCAyMy44OTAzIDE5LjQ5MTUgMjMuNDAxNSAxOC45ODAzQzIyLjkxMjcgMTguNDY5MSAyMi4yNDk4IDE4LjE4MiAyMS41NTg1IDE4LjE4MkgyMS4wMzcyVjE2LjAwMTNIMjIuODYxN0MyMy4yOTM2IDE2LjAwMTMgMjMuNjQzNyAxNS42MzUyIDIzLjY0MzcgMTUuMTgzNkMyMy42NDM3IDE0LjczMiAyMy4yOTM2IDE0LjM2NTkgMjIuODYxNyAxNC4zNjU5SDIxLjAzNzJWMTMuMDAzWk0xOC45NTIgMTYuMDAxM0gxOS40NzMzVjE4LjE4MkgxOC45NTJDMTguNjc1NSAxOC4xODIgMTguNDEwMyAxOC4wNjcxIDE4LjIxNDggMTcuODYyNkMxOC4wMTkzIDE3LjY1ODEgMTcuOTA5NCAxNy4zODA4IDE3LjkwOTQgMTcuMDkxNkMxNy45MDk0IDE2LjgwMjUgMTguMDE5MyAxNi41MjUyIDE4LjIxNDggMTYuMzIwN0MxOC40MTAzIDE2LjExNjIgMTguNjc1NSAxNi4wMDEzIDE4Ljk1MiAxNi4wMDEzWk0yMS4wMzcyIDIxLjk5OFYxOS44MTc0SDIxLjU1ODVDMjEuODM1IDE5LjgxNzQgMjIuMTAwMiAxOS45MzIzIDIyLjI5NTcgMjAuMTM2OEMyMi40OTEyIDIwLjM0MTIgMjIuNjAxMSAyMC42MTg2IDIyLjYwMTEgMjAuOTA3N0MyMi42MDExIDIxLjE5NjkgMjIuNDkxMiAyMS40NzQyIDIyLjI5NTcgMjEuNjc4N0MyMi4xMDAyIDIxLjg4MzIgMjEuODM1IDIxLjk5OCAyMS41NTg1IDIxLjk5OEgyMS4wMzcyWlwiIGZpbGw9XCIjMDBBM0ZGXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsdGVyIGlkPVwiZmlsdGVyMF9kXzM4ODVfMjUzMVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiBmaWx0ZXJVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPVwic1JHQlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT1cIjBcIiByZXN1bHQ9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlT2Zmc2V0IGR5PVwiMVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIxXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMC4wNjI3NDUxIDAgMCAwIDAgMC4wOTQxMTc2IDAgMCAwIDAgMC4xNTY4NjMgMCAwIDAgMC4wNSAwXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cIkJhY2tncm91bmRJbWFnZUZpeFwiIHJlc3VsdD1cImVmZmVjdDFfZHJvcFNoYWRvd18zODg1XzI1MzFcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW49XCJTb3VyY2VHcmFwaGljXCIgaW4yPVwiZWZmZWN0MV9kcm9wU2hhZG93XzM4ODVfMjUzMVwiIHJlc3VsdD1cInNoYXBlXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9maWx0ZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8zODg1XzI1MzFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgxMCA5KVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBtcy0yIHAtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIWdldENhcmRHcmFwaERhdGE/Lm1pc3NlZG9wcG9ydHVuaXRpZXM/LlByZXZpb3VzVmFyaWF0aW9uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMzI4XzQ2NTQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSA5TDYuNzUgNC4yNUw0LjI1IDYuNzVMMC41IDNNMTEuNSA5SDguNU0xMS41IDlWNlwiIHN0cm9rZT1cIiNEOTJEMjBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIzMjhfNDY1NFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJnZXRDYXJkR3JhcGhEYXRhPy5taXNzZWRvcHBvcnR1bml0aWVzPy5QcmV2aW91c1ZhcmlhdGlvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMzIxNl8xMTgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSAzTDYuNzUgNy43NUw0LjI1IDUuMjVMMC41IDlNMTEuNSAzSDguNU0xMS41IDNWNlwiIHN0cm9rZT1cIiMwMzk4NTVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzMyMTZfMTE4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdldENhcmRHcmFwaERhdGE/Lm1pc3NlZG9wcG9ydHVuaXRpZXM/LlByZXZpb3VzRGF0YSA9PT0wXCIgY2xhc3M9XCJwZXJjZW50LXZhbHVlXCI+MCU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnZXRDYXJkR3JhcGhEYXRhPy5taXNzZWRvcHBvcnR1bml0aWVzPy5QcmV2aW91c0RhdGEgIT09MFwiIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPnt7Z2V0Q2FyZEdyYXBoRGF0YT8ubWlzc2Vkb3Bwb3J0dW5pdGllcz8uUHJldmlvdXNEYXRhID8gZ2V0Q2FyZEdyYXBoRGF0YT8ubWlzc2Vkb3Bwb3J0dW5pdGllcz8uUHJldmlvdXNEYXRhOictLSd9fSU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIndlZWstZm9udFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2cyBQcmV2aW91cyAgPHNwYW4gKm5nSWY9XCJkYXRlVHlwZSA9PT0nZGFpbHknXCI+ZGF5PC9zcGFuPjxzcGFuICpuZ0lmPVwiZGF0ZVR5cGUgPT09J3dlZWtseSdcIj53ZWVrPC9zcGFuPiA8c3BhbiAqbmdJZj1cImRhdGVUeXBlID09PSdtb250aGx5J1wiPm1vbnRoPC9zcGFuPjwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgbXQtMyBoLTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1ib3JkZXIgbWItNSBweS0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwLTAgaC05MHB4IG10LTMgbXgtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMyBmbGV4LXNocmluay0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQxXCIgdmlld0JveD1cIjAgMCA0MCA0MVwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeT1cIjAuNVwiIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiIHJ4PVwiMjBcIiBmaWxsPVwiI0RBRjFGRlwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTcuNjM4MiAxMi44OTIyQzE3LjYzODIgMTIuNjgzNSAxNy43MjEyIDEyLjQ4MzMgMTcuODY4OCAxMi4zMzU3QzE4LjAxNjQgMTIuMTg4MSAxOC4yMTY1IDEyLjEwNTIgMTguNDI1MyAxMi4xMDUySDIxLjU3MzRDMjEuNzgyMiAxMi4xMDUyIDIxLjk4MjMgMTIuMTg4MSAyMi4xMjk5IDEyLjMzNTdDMjIuMjc3NSAxMi40ODMzIDIyLjM2MDUgMTIuNjgzNSAyMi4zNjA1IDEyLjg5MjJDMjIuMzYwNSAxMy4xMDA5IDIyLjI3NzUgMTMuMzAxMSAyMi4xMjk5IDEzLjQ0ODdDMjEuOTgyMyAxMy41OTYzIDIxLjc4MjIgMTMuNjc5MiAyMS41NzM0IDEzLjY3OTJIMjAuNzg2NFYxNC43Mjg2TDIwLjc4NTMgMTQuNzcxNkMyMi4xMTU2IDE0LjkxNzQgMjMuMzc2NyAxNS40Mzk4IDI0LjQyMDQgMTYuMjc3NUwyNC40Mjc3IDE2LjI3MTJMMjUuMjE0OCAxNS40ODQyQzI1LjMxMSAxNS4zODA2IDI1LjQzMzMgMTUuMzA0OCAyNS41NjkgMTUuMjY0OUMyNS43MDQ2IDE1LjIyNTEgMjUuODQ4NSAxNS4yMjI1IDI1Ljk4NTUgMTUuMjU3NUMyNi4xMjI0IDE1LjI5MjUgMjYuMjQ3NCAxNS4zNjM4IDI2LjM0NzIgMTUuNDYzOUMyNi40NDcxIDE1LjU2NCAyNi41MTgxIDE1LjY4OTIgMjYuNTUyNyAxNS44MjYzQzI2LjU4NzcgMTUuOTYzMSAyNi41ODUyIDE2LjEwNjggMjYuNTQ1NSAxNi4yNDIzQzI2LjUwNTggMTYuMzc3OCAyNi40MzA0IDE2LjUwMDIgMjYuMzI3MSAxNi41OTY1TDI1LjU0MDEgMTcuMzgzNkwyNS41MzM4IDE3LjM5MDlDMjYuMzY2MiAxOC40MzMxIDI2Ljg4NzUgMTkuNjg5MSAyNy4wMzc3IDIxLjAxNDRDMjcuMTg3OCAyMi4zMzk3IDI2Ljk2MDcgMjMuNjgwNSAyNi4zODI0IDI0Ljg4MjVDMjUuODA0MiAyNi4wODQ1IDI0Ljg5ODMgMjcuMDk4NyAyMy43NjkxIDI3LjgwODZDMjIuNjM5OSAyOC41MTg0IDIxLjMzMzIgMjguODk1IDE5Ljk5OTMgMjguODk1QzE4LjY2NTUgMjguODk1IDE3LjM1ODggMjguNTE4NCAxNi4yMjk2IDI3LjgwODZDMTUuMTAwNCAyNy4wOTg3IDE0LjE5NDUgMjYuMDg0NSAxMy42MTYzIDI0Ljg4MjVDMTMuMDM4IDIzLjY4MDUgMTIuODEwOSAyMi4zMzk3IDEyLjk2MSAyMS4wMTQ0QzEzLjExMTIgMTkuNjg5MSAxMy42MzI1IDE4LjQzMzEgMTQuNDY0OSAxNy4zOTA5TDE0LjQ1ODYgMTcuMzgzNkwxMy42NzE2IDE2LjU5NjVDMTMuNTMyNCAxNi40NDc0IDEzLjQ1NjYgMTYuMjUgMTMuNDYwMSAxNi4wNDZDMTMuNDYzNiAxNS44NDIgMTMuNTQ2MiAxNS42NDczIDEzLjY5MDUgMTUuNTAzMUMxMy44MzQ3IDE1LjM1ODggMTQuMDI5NCAxNS4yNzYyIDE0LjIzMzQgMTUuMjcyN0MxNC40Mzc0IDE1LjI2OTIgMTQuNjM0OCAxNS4zNDUgMTQuNzgzOSAxNS40ODQyTDE1LjU3MSAxNi4yNzEyTDE1LjU3ODMgMTYuMjc3NUMxNi42MjE3IDE1LjQ0IDE3Ljg4MjQgMTQuOTE3NiAxOS4yMTIzIDE0Ljc3MTZWMTMuNjc5MkgxOC40MjUzQzE4LjIxNjUgMTMuNjc5MiAxOC4wMTY0IDEzLjU5NjMgMTcuODY4OCAxMy40NDg3QzE3LjcyMTIgMTMuMzAxMSAxNy42MzgyIDEzLjEwMDkgMTcuNjM4MiAxMi44OTIyWk0xOS45OTkzIDI3LjMyMTJDMjEuNDYwNiAyNy4zMjExIDIyLjg2MiAyNi43NDA0IDIzLjg5NTIgMjUuNzA3MUMyNC45Mjg0IDI0LjY3MzcgMjUuNTA4NyAyMy4yNzIyIDI1LjUwODYgMjEuODEwOUMyNS41MDg1IDIwLjM0OTYgMjQuOTI3OCAxOC45NDgyIDIzLjg5NDUgMTcuOTE1QzIyLjg2MTEgMTYuODgxOSAyMS40NTk2IDE2LjMwMTUgMTkuOTk4MyAxNi4zMDE2QzE4LjUzNyAxNi4zMDE4IDE3LjEzNTYgMTYuODgyNCAxNi4xMDI1IDE3LjkxNThDMTUuMDY5MyAxOC45NDkyIDE0LjQ4ODkgMjAuMzUwNyAxNC40ODkgMjEuODExOUMxNC40ODkyIDIzLjI3MzIgMTUuMDY5OCAyNC42NzQ2IDE2LjEwMzIgMjUuNzA3OEMxNy4xMzY2IDI2Ljc0MSAxOC41MzgxIDI3LjMyMTMgMTkuOTk5MyAyNy4zMjEyWk0yMC40MDc2IDIwLjI5MDNMMjEuODAzMiAxOC44OTQ3QzIxLjg3NTggMTguODE5NSAyMS45NjI2IDE4Ljc1OTUgMjIuMDU4NiAxOC43MTgyQzIyLjE1NDYgMTguNjc2OSAyMi4yNTc5IDE4LjY1NTEgMjIuMzYyNCAxOC42NTQyQzIyLjQ2NjkgMTguNjUzMiAyMi41NzA1IDE4LjY3MzEgMjIuNjY3MyAxOC43MTI2QzIyLjc2NCAxOC43NTIxIDIyLjg1MTkgMTguODEwNSAyMi45MjU5IDE4Ljg4NDRDMjIuOTk5OCAxOC45NTgyIDIzLjA1ODMgMTkuMDQ2MSAyMy4wOTc5IDE5LjE0MjhDMjMuMTM3NSAxOS4yMzk1IDIzLjE1NzUgMTkuMzQzMSAyMy4xNTY2IDE5LjQ0NzZDMjMuMTU1NyAxOS41NTIxIDIzLjEzNDEgMTkuNjU1NCAyMy4wOTI5IDE5Ljc1MTVDMjMuMDUxNyAxOS44NDc1IDIyLjk5MTggMTkuOTM0NCAyMi45MTY2IDIwLjAwN0wyMS41MjEgMjEuNDAzN0MyMS41ODMgMjEuNjM3MSAyMS41OTA2IDIxLjg4MTUgMjEuNTQzMiAyMi4xMTgyQzIxLjQ5NTggMjIuMzU1IDIxLjM5NDggMjIuNTc3NyAyMS4yNDc4IDIyLjc2OTJDMjEuMTAwOCAyMi45NjA3IDIwLjkxMTggMjMuMTE1OSAyMC42OTUzIDIzLjIyMjhDMjAuNDc4OSAyMy4zMjk4IDIwLjI0MDggMjMuMzg1NiAxOS45OTkzIDIzLjM4NkMxOS43NzY2IDIzLjM4NDEgMTkuNTU2NyAyMy4zMzQ5IDE5LjM1NDQgMjMuMjQxNkMxOS4xNTIxIDIzLjE0ODMgMTguOTcxOCAyMy4wMTMxIDE4LjgyNTcgMjIuODQ1QzE4LjY3OTUgMjIuNjc2OCAxOC41NzA3IDIyLjQ3OTYgMTguNTA2NiAyMi4yNjYyQzE4LjQ0MjQgMjIuMDUyOCAxOC40MjQzIDIxLjgyODMgMTguNDUzNCAyMS42MDc0QzE4LjQ4MjUgMjEuMzg2NSAxOC41NTgyIDIxLjE3NDMgMTguNjc1NSAyMC45ODQ5QzE4Ljc5MjggMjAuNzk1NSAxOC45NDkgMjAuNjMzMiAxOS4xMzM4IDIwLjUwODZDMTkuMzE4NSAyMC4zODQxIDE5LjUyNzYgMjAuMzAwMyAxOS43NDcyIDIwLjI2MjZDMTkuOTY2OCAyMC4yMjUgMjAuMTkxOSAyMC4yMzQ0IDIwLjQwNzYgMjAuMjkwM1pcIiBmaWxsPVwiIzY2NzA4NVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMyBtdC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTEgY2FyZC1sYWJlbCBoZWFkZXJcIiAqbmdJZj1cImdldENhcmREYXRhPy5hdmdEd2VsbFRpbWUgPT09IDBcIj4wIG1pbnM8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktMSBjYXJkLWxhYmVsIGhlYWRlclwiICAqbmdJZj1cImdldENhcmREYXRhPy5hdmdEd2VsbFRpbWUgIT09IDBcIj57e2dldENhcmREYXRhPy5hdmdEd2VsbFRpbWUgPyBnZXRDYXJkRGF0YT8uYXZnRHdlbGxUaW1lIDonLS0nfX0gbWluczwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItaGVhZGVyXCI+QXZnIER3ZWxsIFRpbWU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1ib3JkZXIgcHktMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHAtMCBoLTkwcHggbXQtMyBteC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtc2hyaW5rLTAgbXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MVwiIHZpZXdCb3g9XCIwIDAgNDAgNDFcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHk9XCIwLjVcIiB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiByeD1cIjIwXCIgZmlsbD1cIiNEQUYxRkZcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTIxLjkwMDQgMTIuMTY3NUMyMi45OTU4IDEyLjE2NzUgMjQuMDQyMyAxMi4zOTE4IDI0Ljk5NzcgMTIuNzk4N0MyNS45ODg5IDEzLjIyMDcgMjYuODgwOSAxMy44NDAyIDI3LjYyNzkgMTQuNjA4N0MyOC4zNzM0IDE1LjM3NTYgMjguOTc1NiAxNi4yOTMxIDI5LjM4NTcgMTcuMzE2MkMyOS43ODEzIDE4LjI5OSAyOS45OTkzIDE5LjM3NTYgMjkuOTk5MyAyMC41MDA4QzI5Ljk5OTMgMjEuNjI3NyAyOS43ODEzIDIyLjcwNDMgMjkuMzg1NyAyMy42ODcxQzI4Ljk3NTYgMjQuNzA2OCAyOC4zNzM0IDI1LjYyNDQgMjcuNjI2MyAyNi4zOTI5QzI2Ljg4MDkgMjcuMTU5OCAyNS45ODg5IDI3Ljc3OTMgMjQuOTk0NSAyOC4yMDEyQzI0LjAzOTEgMjguNjA4MSAyMi45OTI1IDI4LjgzMjUgMjEuODk4OCAyOC44MzI1QzIwLjgwMzQgMjguODMyNSAxOS43NTY4IDI4LjYwODEgMTguODAxNCAyOC4yMDEyQzE3LjgxMDIgMjcuNzc5MyAxNi45MTgzIDI3LjE1OTggMTYuMTcyOSAyNi4zOTI5TDE2LjE3MTIgMjYuMzkxMkMxNS40MjQyIDI1LjYyMjcgMTQuODIzNiAyNC43MDUyIDE0LjQxMzQgMjMuNjg3MUMxNC4yODY1IDIzLjM3MDcgMTQuMTc3NCAyMy4wNDU5IDE0LjA4NzkgMjIuNzEyN0MxNC4yNTcyIDIyLjcyOTQgMTQuNDI5NyAyMi43Mzc4IDE0LjYwMzggMjIuNzM3OEMxNC45MzQyIDIyLjczNzggMTUuMjU2NSAyMi43MDc2IDE1LjU3MDYgMjIuNjQ5QzE1LjYyMjcgMjIuODA5OCAxNS42Nzk3IDIyLjk2ODggMTUuNzQxNSAyMy4xMjQ2QzE2LjA3ODUgMjMuOTYxNyAxNi41NzMyIDI0LjcxNTIgMTcuMTg4NSAyNS4zNDgxQzE3LjgwMzcgMjUuOTgxIDE4LjUzNzggMjYuNDkgMTkuMzQ5OSAyNi44MzY2QzIwLjEzMjggMjcuMTY5OCAyMC45OTM4IDI3LjM1NTcgMjEuODk4OCAyNy4zNTU3QzIyLjgwMzcgMjcuMzU1NyAyMy42NjMxIDI3LjE3MTUgMjQuNDQ3NiAyNi44MzY2QzI1LjI2MTQgMjYuNDkgMjUuOTkzOCAyNS45ODEgMjYuNjA5MSAyNS4zNDgxQzI3LjIyNDMgMjQuNzE1MiAyNy43MTkxIDIzLjk2MDEgMjguMDU2IDIzLjEyNDZDMjguMzc5OSAyMi4zMTkyIDI4LjU2MDUgMjEuNDMzNCAyOC41NjA1IDIwLjUwMjVDMjguNTYwNSAxOS41NzE1IDI4LjM4MTUgMTguNjg3NSAyOC4wNTYgMTcuODgwNEMyNy43MTkxIDE3LjA0MzIgMjcuMjI0MyAxNi4yODk4IDI2LjYwOTEgMTUuNjU2OUMyNS45OTM4IDE1LjAyNCAyNS4yNTk4IDE0LjUxNDkgMjQuNDQ3NiAxNC4xNjg0QzIzLjY2NDcgMTMuODM1MiAyMi44MDM3IDEzLjY0OTMgMjEuODk4OCAxMy42NDkzQzIwLjk5MzggMTMuNjQ5MyAyMC4xMzQ0IDEzLjgzMzUgMTkuMzQ5OSAxNC4xNjg0QzE5LjI3OTkgMTQuMTk4NSAxOS4yMSAxNC4yMzAzIDE5LjE0MTYgMTQuMjYyMUMxOC44NzQ3IDEzLjgzMDEgMTguNTUyNCAxMy40MzgzIDE4LjE4MjkgMTMuMDk4NEMxOC4zODQ4IDEyLjk5MTMgMTguNTkxNSAxMi44OTI1IDE4LjgwMTQgMTIuODAyMUMxOS43NjAxIDEyLjM5MTggMjAuODA1IDEyLjE2NzUgMjEuOTAwNCAxMi4xNjc1Wk0yMC45NzEgMTYuNTM5M0MyMC45NzEgMTYuMzM1IDIxLjA1MjQgMTYuMTUwOCAyMS4xODEgMTYuMDE2OUMyMS4zMTEyIDE1Ljg4MjkgMjEuNDkwMiAxNS44MDA5IDIxLjY4ODggMTUuODAwOUMyMS44ODc0IDE1LjgwMDkgMjIuMDY2NCAxNS44ODI5IDIyLjE5NjYgMTYuMDE2OUMyMi4zMjY4IDE2LjE1MDggMjIuNDA2NiAxNi4zMzUgMjIuNDA2NiAxNi41MzkzVjIwLjQyNzFMMjUuMjMwNSAyMi4xNTAxQzI1LjM5OTcgMjIuMjUzOSAyNS41MTM3IDIyLjQxOTYgMjUuNTU5MiAyMi42MDIxQzI1LjYwNDggMjIuNzg0NyAyNS41ODM3IDIyLjk4NTYgMjUuNDgyNyAyMy4xNTk3VjIzLjE2MTRDMjUuMzgxOCAyMy4zMzU1IDI1LjIyMDcgMjMuNDUyNyAyNS4wNDMzIDIzLjQ5OTZDMjQuODY1OSAyMy41NDY1IDI0LjY3MDYgMjMuNTI0NyAyNC41MDEzIDIzLjQyMDlIMjQuNDk5N0wyMS4zNDA1IDIxLjQ5MzdDMjEuMjMxNCAyMS40MzE4IDIxLjE0MTkgMjEuMzQxMyAyMS4wNzY4IDIxLjIzNDJDMjEuMDEwMSAyMS4xMjIgMjAuOTcxIDIwLjk4OTcgMjAuOTcxIDIwLjg0OTFWMTYuNTM5M1pcIiBmaWxsPVwiIzY2NzA4NVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgZD1cIk0xNC4zOTEzIDEyLjYwOTVDMTYuODE2NCAxMi42MDk1IDE4Ljc4MjYgMTQuNjMyMSAxOC43ODI2IDE3LjEyNjlDMTguNzgyNiAxOS42MjE4IDE2LjgxNjQgMjEuNjQ0NCAxNC4zOTEzIDIxLjY0NDRDMTEuOTY2MSAyMS42NDQ0IDEwIDE5LjYyMTggMTAgMTcuMTI2OUMxMCAxNC42MzIxIDExLjk2NjEgMTIuNjA5NSAxNC4zOTEzIDEyLjYwOTVaTTE0LjM5MTMgMTkuNzE3MkwxNi43NDggMTYuNzIwMUgxNS4yODQ4VjE1LjEyNjFIMTMuNDk3N1YxNi43MjAxSDEyLjAzNDVMMTQuMzkxMyAxOS43MTcyWlwiIGZpbGw9XCIjRjA0NDM4XCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LTMgbXQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktMSBjYXJkLWxhYmVsIGhlYWRlclwiICpuZ0lmPVwiZ2V0Q2FyZERhdGE/LmF2Z0Rvd25UaW1lID09PSAwXCI+MCBtaW5zPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS0xIGNhcmQtbGFiZWwgaGVhZGVyXCIgICpuZ0lmPVwiZ2V0Q2FyZERhdGE/LmF2Z0Rvd25UaW1lICE9PSAwXCI+e3tnZXRDYXJkRGF0YT8uYXZnRG93blRpbWUgPyBnZXRDYXJkRGF0YT8uYXZnRG93blRpbWUgOictLSd9fSBtaW5zPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItaGVhZGVyXCI+QXZnIERvd24gVGltZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IG10LTMgcG9zaXRpb24tcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtYm9yZGVyIGgtMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGVsbGlwc2UxIGJvcmRlci0wIHB4LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtbiBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZC1sYWJlbCBoZWFkZXJcIj57e2dldENhcmREYXRhPy5wb3RlbnRpYWxCdXllcnM/LnJhdGUgPyBnZXRDYXJkRGF0YT8ucG90ZW50aWFsQnV5ZXJzPy5yYXRlIDonLS0nfX0lPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdWItaGVhZGVyIFwiPlBvdGVudGlhbCBCdXllcnM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNhcmROb2RhdGFcIiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMiBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwYi0wIHB4LTAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctbm9kYXRhMVwiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YTEuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGEtdGl0bGUxXCI+Tm8gZGF0YSBmb3VuZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJub2RhdGEtc3ViXCI+VGhlcmUgaXMgbm8gcmVzdWx0IGZvciB0aGlzIGNvbnZlcnNpb24gZnVubmVsPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWNhcmROb2RhdGFcIiBjbGFzcz1cInRleHQtY2VudGVyXCIgaWQ9XCJQb3RlbnRpYWxCdXllcnNcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXIgbXMtMiBwLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFnZXRDYXJkR3JhcGhEYXRhPy5wb3RlbnRpYWxCdXllcnM/LlByZXZpb3VzVmFyaWF0aW9uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMzI4XzQ2NTQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSA5TDYuNzUgNC4yNUw0LjI1IDYuNzVMMC41IDNNMTEuNSA5SDguNU0xMS41IDlWNlwiIHN0cm9rZT1cIiNEOTJEMjBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIzMjhfNDY1NFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJnZXRDYXJkR3JhcGhEYXRhPy5wb3RlbnRpYWxCdXllcnM/LlByZXZpb3VzVmFyaWF0aW9uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8zMjE2XzExOClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS41IDNMNi43NSA3Ljc1TDQuMjUgNS4yNUwwLjUgOU0xMS41IDNIOC41TTExLjUgM1Y2XCIgc3Ryb2tlPVwiIzAzOTg1NVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMzIxNl8xMThcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm10LTIgbXMtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2V0Q2FyZEdyYXBoRGF0YT8ucG90ZW50aWFsQnV5ZXJzPy5QcmV2aW91c0RhdGEgPT09MFwiIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPjAlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2V0Q2FyZEdyYXBoRGF0YT8ucG90ZW50aWFsQnV5ZXJzPy5QcmV2aW91c0RhdGEgIT09MFwiIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPnt7Z2V0Q2FyZEdyYXBoRGF0YT8ucG90ZW50aWFsQnV5ZXJzPy5QcmV2aW91c0RhdGEgPyBnZXRDYXJkR3JhcGhEYXRhPy5wb3RlbnRpYWxCdXllcnM/LlByZXZpb3VzRGF0YTonLS0nfX0lPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwid2Vlay1mb250XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZzIFByZXZpb3VzICA8c3BhbiAqbmdJZj1cImRhdGVUeXBlID09PSdkYWlseSdcIj5kYXk8L3NwYW4+PHNwYW4gKm5nSWY9XCJkYXRlVHlwZSA9PT0nd2Vla2x5J1wiPndlZWs8L3NwYW4+IDxzcGFuICpuZ0lmPVwiZGF0ZVR5cGUgPT09J21vbnRobHknXCI+bW9udGg8L3NwYW4+PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSBlbmQtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYgMTJMMTAgOEw2IDRcIiBzdHJva2U9XCIjOThBMkIzXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC04IG10LTNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtYm9yZGVyIGgtMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBlbGxpcHNlMSBib3JkZXItMCBweC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW4gXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmQtbGFiZWwgaGVhZGVyXCI+UG90ZW50aWFsIEJ1eWVyIERpc3RyaWJ1dGlvbjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ViLWhlYWRlclwiPkNhdGVnb3J5LXdpc2U8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaDM+ICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgcHgtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc3RhcnQgbXMtMTAgIG10LTcgbWItM1wiPjxzcGFuPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjVcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjUgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTIwLjI1IDIxVjE5QzIwLjI1IDE3LjkzOTEgMTkuODI4NiAxNi45MjE3IDE5LjA3ODQgMTYuMTcxNkMxOC4zMjgzIDE1LjQyMTQgMTcuMzEwOSAxNSAxNi4yNSAxNUg4LjI1QzcuMTg5MTMgMTUgNi4xNzE3MiAxNS40MjE0IDUuNDIxNTcgMTYuMTcxNkM0LjY3MTQzIDE2LjkyMTcgNC4yNSAxNy45MzkxIDQuMjUgMTlWMjFNMTYuMjUgN0MxNi4yNSA5LjIwOTE0IDE0LjQ1OTEgMTEgMTIuMjUgMTFDMTAuMDQwOSAxMSA4LjI1IDkuMjA5MTQgOC4yNSA3QzguMjUgNC43OTA4NiAxMC4wNDA5IDMgMTIuMjUgM0MxNC40NTkxIDMgMTYuMjUgNC43OTA4NiAxNi4yNSA3WlwiIHN0cm9rZT1cIiM5OEEyQjNcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPjxzcGFuIGNsYXNzPVwibGVmdC1jYXJkLWNvdW50IG10LTIgbXMtMVwiPnt7Z2V0Q2FyZERhdGE/LnBvdGVudGlhbEJ1eWVycz8ucG90ZW50aWFsQnV5ZXJzU2luZ2xlPy5jb3VudCA/IGdldENhcmREYXRhPy5wb3RlbnRpYWxCdXllcnM/LnBvdGVudGlhbEJ1eWVyc1NpbmdsZT8uY291bnQudG9Mb2NhbGVTdHJpbmcoJ2VuLUlOJyk6Jy0tJ319PC9zcGFuPiA8c3BhbiBjbGFzcz1cImxlZnQtY2FyZC1jb3VudC1oZWFkZXIgbXMtMVwiPlNpbmdsZTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXN0YXJ0IG1zLTE1IG1iLTNcIj48c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHQgd2Vlay1mb250XCI+e3tnZXRDYXJkRGF0YT8ucG90ZW50aWFsQnV5ZXJzPy5wb3RlbnRpYWxCdXllcnNTaW5nbGU/LmFnZUdyb3VwID8gZ2V0Q2FyZERhdGE/LnBvdGVudGlhbEJ1eWVycz8ucG90ZW50aWFsQnV5ZXJzU2luZ2xlPy5hZ2VHcm91cDonLS0nfX0gYWdlPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBtcy0yIHAtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIWdldENhcmRHcmFwaERhdGE/LnBvdGVudGlhbEJ1eWVycz8ucG90ZW50aWFsQnV5ZXJzU2luZ2xlPy5QcmV2aW91c1ZhcmlhdGlvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjMyOF80NjU0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgOUw2Ljc1IDQuMjVMNC4yNSA2Ljc1TDAuNSAzTTExLjUgOUg4LjVNMTEuNSA5VjZcIiBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMzI4XzQ2NTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiZ2V0Q2FyZEdyYXBoRGF0YT8ucG90ZW50aWFsQnV5ZXJzPy5wb3RlbnRpYWxCdXllcnNTaW5nbGU/LlByZXZpb3VzVmFyaWF0aW9uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8zMjE2XzExOClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS41IDNMNi43NSA3Ljc1TDQuMjUgNS4yNUwwLjUgOU0xMS41IDNIOC41TTExLjUgM1Y2XCIgc3Ryb2tlPVwiIzAzOTg1NVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMzIxNl8xMThcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm10LTIgbXMtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2V0Q2FyZEdyYXBoRGF0YT8ucG90ZW50aWFsQnV5ZXJzPy5wb3RlbnRpYWxCdXllcnNTaW5nbGU/LlByZXZpb3VzRGF0YSA9PT0wXCIgY2xhc3M9XCJwZXJjZW50LXZhbHVlXCI+MCU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnZXRDYXJkR3JhcGhEYXRhPy5wb3RlbnRpYWxCdXllcnM/LnBvdGVudGlhbEJ1eWVyc1NpbmdsZT8uUHJldmlvdXNEYXRhICE9PTBcIiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIj57e2dldENhcmRHcmFwaERhdGE/LnBvdGVudGlhbEJ1eWVycz8ucG90ZW50aWFsQnV5ZXJzU2luZ2xlPy5QcmV2aW91c0RhdGEgPyBnZXRDYXJkR3JhcGhEYXRhPy5wb3RlbnRpYWxCdXllcnM/LnBvdGVudGlhbEJ1eWVyc1NpbmdsZT8uUHJldmlvdXNEYXRhOictLSd9fSU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3ZWVrLWZvbnRcIj4gdnMgUHJldmlvdXMgIDxzcGFuICpuZ0lmPVwiZGF0ZVR5cGUgPT09J2RhaWx5J1wiPmRheTwvc3Bhbj48c3BhbiAqbmdJZj1cImRhdGVUeXBlID09PSd3ZWVrbHknXCI+d2Vlazwvc3Bhbj4gPHNwYW4gKm5nSWY9XCJkYXRlVHlwZSA9PT0nbW9udGhseSdcIj5tb250aDwvc3Bhbj48L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgcHgtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHAtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc3RhcnQgbXMtMTAgbXQtNyBtYi0zXCI+PHNwYW4+IDxzdmcgd2lkdGg9XCIyNlwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNiAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjZcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjRENEQ0RDXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCItNDYwLjVcIiB5PVwiLTM0MC41XCIgd2lkdGg9XCI3ODNcIiBoZWlnaHQ9XCIxOTQ3XCIgcng9XCI0LjVcIiBzdHJva2U9XCIjOTc0N0ZGXCIgc3Ryb2tlLWRhc2hhcnJheT1cIjEwIDVcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hc2sgaWQ9XCJwYXRoLTItaW5zaWRlLTFfNzA3XzEzMTA2XCIgZmlsbD1cIndoaXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0tMTg5IC04OUMtMTg5IC05NS42Mjc0IC0xODMuNjI3IC0xMDEgLTE3NyAtMTAxSDI5NUMzMDEuNjI3IC0xMDEgMzA3IC05NS42Mjc0IDMwNyAtODlWODVDMzA3IDkxLjYyNzQgMzAxLjYyNyA5NyAyOTUgOTdILTE3N0MtMTgzLjYyNyA5NyAtMTg5IDkxLjYyNzQgLTE4OSA4NVYtODlaXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWFzaz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTS0xODkgLTg5Qy0xODkgLTk1LjYyNzQgLTE4My42MjcgLTEwMSAtMTc3IC0xMDFIMjk1QzMwMS42MjcgLTEwMSAzMDcgLTk1LjYyNzQgMzA3IC04OVY4NUMzMDcgOTEuNjI3NCAzMDEuNjI3IDk3IDI5NSA5N0gtMTc3Qy0xODMuNjI3IDk3IC0xODkgOTEuNjI3NCAtMTg5IDg1Vi04OVpcIiBmaWxsPVwid2hpdGVcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0tMTkwIC04OUMtMTkwIC05Ni4xNzk3IC0xODQuMTggLTEwMiAtMTc3IC0xMDJIMjk0QzMwMS4xOCAtMTAyIDMwNyAtOTYuMTc5NyAzMDcgLTg5QzMwNyAtOTUuMDc1MSAzMDEuNjI3IC0xMDAgMjk1IC0xMDBILTE3N0MtMTgzLjA3NSAtMTAwIC0xODggLTk1LjA3NTEgLTE4OCAtODlILTE5MFpNMzA3IDg1QzMwNyA5Mi4xNzk3IDMwMS4xOCA5OCAyOTQgOThILTE3N0MtMTg0LjE4IDk4IC0xOTAgOTIuMTc5NyAtMTkwIDg1SC0xODhDLTE4OCA5MS4wNzUxIC0xODMuMDc1IDk2IC0xNzcgOTZIMjk1QzMwMS42MjcgOTYgMzA3IDkxLjA3NTEgMzA3IDg1Wk0tMTc3IDk4Qy0xODQuMTggOTggLTE5MCA5Mi4xNzk3IC0xOTAgODVWLTg5Qy0xOTAgLTk2LjE3OTcgLTE4NC4xOCAtMTAyIC0xNzcgLTEwMlYtMTAwQy0xODMuMDc1IC0xMDAgLTE4OCAtOTUuMDc1MSAtMTg4IC04OVY4NUMtMTg4IDkxLjA3NTEgLTE4My4wNzUgOTYgLTE3NyA5NlY5OFpNMzA3IC0xMDFWOTdWLTEwMVpcIiBmaWxsPVwiI0QwRDVERFwiIG1hc2s9XCJ1cmwoI3BhdGgtMi1pbnNpZGUtMV83MDdfMTMxMDYpXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXNrIGlkPVwicGF0aC02LWluc2lkZS0yXzcwN18xMzEwNlwiIGZpbGw9XCJ3aGl0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNy43MTA2NCA3LjM4NDYyQzguMTk1NTIgNy4zODQ2MiA4LjY3NTY1IDcuMjg5MTEgOS4xMjM2MiA3LjEwMzU2QzkuNTcxNTkgNi45MTggOS45Nzg2MyA2LjY0NjAzIDEwLjMyMTUgNi4zMDMxNkMxMC42NjQ0IDUuOTYwMyAxMC45MzYzIDUuNTUzMjYgMTEuMTIxOSA1LjEwNTI5QzExLjMwNzQgNC42NTczMiAxMS40MDI5IDQuMTc3MTkgMTEuNDAyOSAzLjY5MjMxQzExLjQwMjkgMy4yMDc0MyAxMS4zMDc0IDIuNzI3MjkgMTEuMTIxOSAyLjI3OTMyQzEwLjkzNjMgMS44MzEzNSAxMC42NjQ0IDEuNDI0MzEgMTAuMzIxNSAxLjA4MTQ1QzkuOTc4NjMgMC43Mzg1OSA5LjU3MTU5IDAuNDY2NjE2IDkuMTIzNjIgMC4yODEwNkM4LjY3NTY1IDAuMDk1NTA0MyA4LjE5NTUyIC03LjIyNTI5ZS0wOSA3LjcxMDY0IDBDNi43MzEzOCAxLjQ1OTIxZS0wOCA1Ljc5MjIyIDAuMzg5MDEgNS4wOTk3OCAxLjA4MTQ1QzQuNDA3MzQgMS43NzM4OSA0LjAxODMzIDIuNzEzMDUgNC4wMTgzMyAzLjY5MjMxQzQuMDE4MzMgNC42NzE1NyA0LjQwNzM0IDUuNjEwNzIgNS4wOTk3OCA2LjMwMzE2QzUuNzkyMjIgNi45OTU2MSA2LjczMTM4IDcuMzg0NjIgNy43MTA2NCA3LjM4NDYyWk0xOC43ODc2IDcuMzg0NjJDMTkuMjcyNCA3LjM4NDYyIDE5Ljc1MjYgNy4yODkxMSAyMC4yMDA1IDcuMTAzNTZDMjAuNjQ4NSA2LjkxOCAyMS4wNTU2IDYuNjQ2MDMgMjEuMzk4NCA2LjMwMzE2QzIxLjc0MTMgNS45NjAzIDIyLjAxMzMgNS41NTMyNiAyMi4xOTg4IDUuMTA1MjlDMjIuMzg0NCA0LjY1NzMyIDIyLjQ3OTkgNC4xNzcxOSAyMi40Nzk5IDMuNjkyMzFDMjIuNDc5OSAzLjIwNzQzIDIyLjM4NDQgMi43MjcyOSAyMi4xOTg4IDIuMjc5MzJDMjIuMDEzMyAxLjgzMTM1IDIxLjc0MTMgMS40MjQzMSAyMS4zOTg0IDEuMDgxNDVDMjEuMDU1NiAwLjczODU5IDIwLjY0ODUgMC40NjY2MTYgMjAuMjAwNSAwLjI4MTA2QzE5Ljc1MjYgMC4wOTU1MDQzIDE5LjI3MjQgLTcuMjI1MjllLTA5IDE4Ljc4NzYgMEMxNy44MDgzIDEuNDU5MjFlLTA4IDE2Ljg2OTEgMC4zODkwMSAxNi4xNzY3IDEuMDgxNDVDMTUuNDg0MyAxLjc3Mzg5IDE1LjA5NTMgMi43MTMwNSAxNS4wOTUzIDMuNjkyMzFDMTUuMDk1MyA0LjY3MTU3IDE1LjQ4NDMgNS42MTA3MiAxNi4xNzY3IDYuMzAzMTZDMTYuODY5MSA2Ljk5NTYxIDE3LjgwODMgNy4zODQ2MiAxOC43ODc2IDcuMzg0NjJaTTAuOTQxNDA2IDEwLjczNkMwLjk0MTQwNiAxMC40NTc1IDAuOTk2MjU4IDEwLjE4MTggMS4xMDI4MyA5LjkyNDQ4QzEuMjA5NCA5LjY2NzE5IDEuMzY1NiA5LjQzMzQyIDEuNTYyNTIgOS4yMzY1QzEuNzU5NDQgOS4wMzk1OCAxLjk5MzIxIDguODgzMzggMi4yNTA1IDguNzc2ODFDMi41MDc3OCA4LjY3MDI0IDIuNzgzNTQgOC42MTUzOSAzLjA2MjAyIDguNjE1MzlIOC45ODQ0OEM4LjU1MTY5IDkuMzYzNDUgOC4zMjQ1MiAxMC4yMTI3IDguMzI2MDIgMTEuMDc2OUM4LjMyNTE5IDExLjc3NTUgOC40NzM0MSAxMi40NjYyIDguNzYwNzkgMTMuMTAyOUM5LjA0ODE2IDEzLjczOTYgOS40NjgwNyAxNC4zMDc3IDkuOTkyNDggMTQuNzY5Mkg4LjYwMDQ4QzguMDE0MTggMTQuNzY4NyA3LjQzODAzIDE0LjkyMjIgNi45Mjk2OSAxNS4yMTQ0QzYuNDIxMzQgMTUuNTA2NSA1Ljk5ODY0IDE1LjkyNyA1LjcwMzg3IDE2LjQzMzhDMy43MjExIDE2LjA0NDkgMi41MTYxOCAxNS4wNzgyIDEuODE0NjQgMTMuOTkyQzAuOTQxNDA2IDEyLjY0IDAuOTQxNDA2IDExLjI0MzEgMC45NDE0MDYgMTEuMDAxMlYxMC43MzZaTTE3Ljg5NzcgMTQuNzY5MkMxOC40ODQgMTQuNzY4NyAxOS4wNjAyIDE0LjkyMjIgMTkuNTY4NSAxNS4yMTQ0QzIwLjA3NjkgMTUuNTA2NSAyMC40OTk2IDE1LjkyNyAyMC43OTQzIDE2LjQzMzhDMjIuNzc3MSAxNi4wNDQ5IDIzLjk4MiAxNS4wNzgyIDI0LjY4MzYgMTMuOTkyQzI1LjU1NjggMTIuNjQgMjUuNTU2OCAxMS4yNDMxIDI1LjU1NjggMTEuMDAxMlYxMC43MzY2QzI1LjU1NjkgMTAuNDU4MSAyNS41MDIxIDEwLjE4MjMgMjUuMzk1NSA5LjkyNDlDMjUuMjg5IDkuNjY3NTUgMjUuMTMyOCA5LjQzMzcgMjQuOTM1OSA5LjIzNjcyQzI0LjczOSA5LjAzOTczIDI0LjUwNTIgOC44ODM0OCAyNC4yNDc4IDguNzc2ODdDMjMuOTkwNSA4LjY3MDI2IDIzLjcxNDcgOC42MTUzOSAyMy40MzYyIDguNjE1MzlIMTcuNTEzN0MxNy45NDY1IDkuMzYzNDUgMTguMTczNyAxMC4yMTI3IDE4LjE3MjIgMTEuMDc2OUMxOC4xNzMgMTEuNzc1NSAxOC4wMjQ4IDEyLjQ2NjIgMTcuNzM3NCAxMy4xMDI5QzE3LjQ1IDEzLjczOTYgMTcuMDMwMSAxNC4zMDc3IDE2LjUwNTcgMTQuNzY5MkgxNy44OTc3Wk0xNi45NDE0IDExLjA3NjlDMTYuOTQxNCAxMi4wNTYyIDE2LjU1MjQgMTIuOTk1MyAxNS44NiAxMy42ODc4QzE1LjE2NzUgMTQuMzgwMiAxNC4yMjg0IDE0Ljc2OTIgMTMuMjQ5MSAxNC43NjkyQzEyLjI2OTggMTQuNzY5MiAxMS4zMzA3IDE0LjM4MDIgMTAuNjM4MiAxMy42ODc4QzkuOTQ1OCAxMi45OTUzIDkuNTU2NzkgMTIuMDU2MiA5LjU1Njc5IDExLjA3NjlDOS41NTY3OSAxMC4wOTc3IDkuOTQ1OCA5LjE1ODUxIDEwLjYzODIgOC40NjYwN0MxMS4zMzA3IDcuNzczNjMgMTIuMjY5OCA3LjM4NDYyIDEzLjI0OTEgNy4zODQ2MkMxNC4yMjg0IDcuMzg0NjIgMTUuMTY3NSA3Ljc3MzYzIDE1Ljg2IDguNDY2MDdDMTYuNTUyNCA5LjE1ODUxIDE2Ljk0MTQgMTAuMDk3NyAxNi45NDE0IDExLjA3NjlaTTYuNDc5ODcgMTguMTIwNkM2LjQ3OTg3IDE3LjU1ODIgNi43MDMyOSAxNy4wMTg4IDcuMTAwOTggMTYuNjIxMUM3LjQ5ODY3IDE2LjIyMzQgOC4wMzgwNiAxNiA4LjYwMDQ4IDE2SDE3Ljg5NzdDMTguNDYwMSAxNiAxOC45OTk1IDE2LjIyMzQgMTkuMzk3MiAxNi42MjExQzE5Ljc5NDkgMTcuMDE4OCAyMC4wMTgzIDE3LjU1ODIgMjAuMDE4MyAxOC4xMjA2VjE4LjM4NThDMjAuMDE4MyAxOC42MjgzIDIwLjAxODMgMjAuMDI0NiAxOS4xNDUxIDIxLjM3NjZDMTguMjMyNSAyMi43ODk1IDE2LjQ2OTQgMjQgMTMuMjQ5MSAyNEMxMC4wMjg4IDI0IDguMjY1NzEgMjIuNzg5NSA3LjM1MzEgMjEuMzc2NkM2LjQ3OTg3IDIwLjAyNDYgNi40Nzk4NyAxOC42Mjc3IDYuNDc5ODcgMTguMzg1OFYxOC4xMjA2WlwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hc2s+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk03LjcxMDY0IDcuMzg0NjJDOC4xOTU1MiA3LjM4NDYyIDguNjc1NjUgNy4yODkxMSA5LjEyMzYyIDcuMTAzNTZDOS41NzE1OSA2LjkxOCA5Ljk3ODYzIDYuNjQ2MDMgMTAuMzIxNSA2LjMwMzE2QzEwLjY2NDQgNS45NjAzIDEwLjkzNjMgNS41NTMyNiAxMS4xMjE5IDUuMTA1MjlDMTEuMzA3NCA0LjY1NzMyIDExLjQwMjkgNC4xNzcxOSAxMS40MDI5IDMuNjkyMzFDMTEuNDAyOSAzLjIwNzQzIDExLjMwNzQgMi43MjcyOSAxMS4xMjE5IDIuMjc5MzJDMTAuOTM2MyAxLjgzMTM1IDEwLjY2NDQgMS40MjQzMSAxMC4zMjE1IDEuMDgxNDVDOS45Nzg2MyAwLjczODU5IDkuNTcxNTkgMC40NjY2MTYgOS4xMjM2MiAwLjI4MTA2QzguNjc1NjUgMC4wOTU1MDQzIDguMTk1NTIgLTcuMjI1MjllLTA5IDcuNzEwNjQgMEM2LjczMTM4IDEuNDU5MjFlLTA4IDUuNzkyMjIgMC4zODkwMSA1LjA5OTc4IDEuMDgxNDVDNC40MDczNCAxLjc3Mzg5IDQuMDE4MzMgMi43MTMwNSA0LjAxODMzIDMuNjkyMzFDNC4wMTgzMyA0LjY3MTU3IDQuNDA3MzQgNS42MTA3MiA1LjA5OTc4IDYuMzAzMTZDNS43OTIyMiA2Ljk5NTYxIDYuNzMxMzggNy4zODQ2MiA3LjcxMDY0IDcuMzg0NjJaTTE4Ljc4NzYgNy4zODQ2MkMxOS4yNzI0IDcuMzg0NjIgMTkuNzUyNiA3LjI4OTExIDIwLjIwMDUgNy4xMDM1NkMyMC42NDg1IDYuOTE4IDIxLjA1NTYgNi42NDYwMyAyMS4zOTg0IDYuMzAzMTZDMjEuNzQxMyA1Ljk2MDMgMjIuMDEzMyA1LjU1MzI2IDIyLjE5ODggNS4xMDUyOUMyMi4zODQ0IDQuNjU3MzIgMjIuNDc5OSA0LjE3NzE5IDIyLjQ3OTkgMy42OTIzMUMyMi40Nzk5IDMuMjA3NDMgMjIuMzg0NCAyLjcyNzI5IDIyLjE5ODggMi4yNzkzMkMyMi4wMTMzIDEuODMxMzUgMjEuNzQxMyAxLjQyNDMxIDIxLjM5ODQgMS4wODE0NUMyMS4wNTU2IDAuNzM4NTkgMjAuNjQ4NSAwLjQ2NjYxNiAyMC4yMDA1IDAuMjgxMDZDMTkuNzUyNiAwLjA5NTUwNDMgMTkuMjcyNCAtNy4yMjUyOWUtMDkgMTguNzg3NiAwQzE3LjgwODMgMS40NTkyMWUtMDggMTYuODY5MSAwLjM4OTAxIDE2LjE3NjcgMS4wODE0NUMxNS40ODQzIDEuNzczODkgMTUuMDk1MyAyLjcxMzA1IDE1LjA5NTMgMy42OTIzMUMxNS4wOTUzIDQuNjcxNTcgMTUuNDg0MyA1LjYxMDcyIDE2LjE3NjcgNi4zMDMxNkMxNi44NjkxIDYuOTk1NjEgMTcuODA4MyA3LjM4NDYyIDE4Ljc4NzYgNy4zODQ2MlpNMC45NDE0MDYgMTAuNzM2QzAuOTQxNDA2IDEwLjQ1NzUgMC45OTYyNTggMTAuMTgxOCAxLjEwMjgzIDkuOTI0NDhDMS4yMDk0IDkuNjY3MTkgMS4zNjU2IDkuNDMzNDIgMS41NjI1MiA5LjIzNjVDMS43NTk0NCA5LjAzOTU4IDEuOTkzMjEgOC44ODMzOCAyLjI1MDUgOC43NzY4MUMyLjUwNzc4IDguNjcwMjQgMi43ODM1NCA4LjYxNTM5IDMuMDYyMDIgOC42MTUzOUg4Ljk4NDQ4QzguNTUxNjkgOS4zNjM0NSA4LjMyNDUyIDEwLjIxMjcgOC4zMjYwMiAxMS4wNzY5QzguMzI1MTkgMTEuNzc1NSA4LjQ3MzQxIDEyLjQ2NjIgOC43NjA3OSAxMy4xMDI5QzkuMDQ4MTYgMTMuNzM5NiA5LjQ2ODA3IDE0LjMwNzcgOS45OTI0OCAxNC43NjkySDguNjAwNDhDOC4wMTQxOCAxNC43Njg3IDcuNDM4MDMgMTQuOTIyMiA2LjkyOTY5IDE1LjIxNDRDNi40MjEzNCAxNS41MDY1IDUuOTk4NjQgMTUuOTI3IDUuNzAzODcgMTYuNDMzOEMzLjcyMTEgMTYuMDQ0OSAyLjUxNjE4IDE1LjA3ODIgMS44MTQ2NCAxMy45OTJDMC45NDE0MDYgMTIuNjQgMC45NDE0MDYgMTEuMjQzMSAwLjk0MTQwNiAxMS4wMDEyVjEwLjczNlpNMTcuODk3NyAxNC43NjkyQzE4LjQ4NCAxNC43Njg3IDE5LjA2MDIgMTQuOTIyMiAxOS41Njg1IDE1LjIxNDRDMjAuMDc2OSAxNS41MDY1IDIwLjQ5OTYgMTUuOTI3IDIwLjc5NDMgMTYuNDMzOEMyMi43NzcxIDE2LjA0NDkgMjMuOTgyIDE1LjA3ODIgMjQuNjgzNiAxMy45OTJDMjUuNTU2OCAxMi42NCAyNS41NTY4IDExLjI0MzEgMjUuNTU2OCAxMS4wMDEyVjEwLjczNjZDMjUuNTU2OSAxMC40NTgxIDI1LjUwMjEgMTAuMTgyMyAyNS4zOTU1IDkuOTI0OUMyNS4yODkgOS42Njc1NSAyNS4xMzI4IDkuNDMzNyAyNC45MzU5IDkuMjM2NzJDMjQuNzM5IDkuMDM5NzMgMjQuNTA1MiA4Ljg4MzQ4IDI0LjI0NzggOC43NzY4N0MyMy45OTA1IDguNjcwMjYgMjMuNzE0NyA4LjYxNTM5IDIzLjQzNjIgOC42MTUzOUgxNy41MTM3QzE3Ljk0NjUgOS4zNjM0NSAxOC4xNzM3IDEwLjIxMjcgMTguMTcyMiAxMS4wNzY5QzE4LjE3MyAxMS43NzU1IDE4LjAyNDggMTIuNDY2MiAxNy43Mzc0IDEzLjEwMjlDMTcuNDUgMTMuNzM5NiAxNy4wMzAxIDE0LjMwNzcgMTYuNTA1NyAxNC43NjkySDE3Ljg5NzdaTTE2Ljk0MTQgMTEuMDc2OUMxNi45NDE0IDEyLjA1NjIgMTYuNTUyNCAxMi45OTUzIDE1Ljg2IDEzLjY4NzhDMTUuMTY3NSAxNC4zODAyIDE0LjIyODQgMTQuNzY5MiAxMy4yNDkxIDE0Ljc2OTJDMTIuMjY5OCAxNC43NjkyIDExLjMzMDcgMTQuMzgwMiAxMC42MzgyIDEzLjY4NzhDOS45NDU4IDEyLjk5NTMgOS41NTY3OSAxMi4wNTYyIDkuNTU2NzkgMTEuMDc2OUM5LjU1Njc5IDEwLjA5NzcgOS45NDU4IDkuMTU4NTEgMTAuNjM4MiA4LjQ2NjA3QzExLjMzMDcgNy43NzM2MyAxMi4yNjk4IDcuMzg0NjIgMTMuMjQ5MSA3LjM4NDYyQzE0LjIyODQgNy4zODQ2MiAxNS4xNjc1IDcuNzczNjMgMTUuODYgOC40NjYwN0MxNi41NTI0IDkuMTU4NTEgMTYuOTQxNCAxMC4wOTc3IDE2Ljk0MTQgMTEuMDc2OVpNNi40Nzk4NyAxOC4xMjA2QzYuNDc5ODcgMTcuNTU4MiA2LjcwMzI5IDE3LjAxODggNy4xMDA5OCAxNi42MjExQzcuNDk4NjcgMTYuMjIzNCA4LjAzODA2IDE2IDguNjAwNDggMTZIMTcuODk3N0MxOC40NjAxIDE2IDE4Ljk5OTUgMTYuMjIzNCAxOS4zOTcyIDE2LjYyMTFDMTkuNzk0OSAxNy4wMTg4IDIwLjAxODMgMTcuNTU4MiAyMC4wMTgzIDE4LjEyMDZWMTguMzg1OEMyMC4wMTgzIDE4LjYyODMgMjAuMDE4MyAyMC4wMjQ2IDE5LjE0NTEgMjEuMzc2NkMxOC4yMzI1IDIyLjc4OTUgMTYuNDY5NCAyNCAxMy4yNDkxIDI0QzEwLjAyODggMjQgOC4yNjU3MSAyMi43ODk1IDcuMzUzMSAyMS4zNzY2QzYuNDc5ODcgMjAuMDI0NiA2LjQ3OTg3IDE4LjYyNzcgNi40Nzk4NyAxOC4zODU4VjE4LjEyMDZaXCIgc3Ryb2tlPVwiIzk4QTJCM1wiIHN0cm9rZS13aWR0aD1cIjNcIiBtYXNrPVwidXJsKCNwYXRoLTYtaW5zaWRlLTJfNzA3XzEzMTA2KVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+PHNwYW4gY2xhc3M9XCJsZWZ0LWNhcmQtY291bnQgbXMtMSBtdC0yXCI+e3tnZXRDYXJkRGF0YT8ucG90ZW50aWFsQnV5ZXJzPy5wb3RlbnRpYWxCdXllcnNHcm91cD8uY291bnQgPyBnZXRDYXJkRGF0YT8ucG90ZW50aWFsQnV5ZXJzPy5wb3RlbnRpYWxCdXllcnNHcm91cD8uY291bnQudG9Mb2NhbGVTdHJpbmcoJ2VuLUlOJyk6Jy0tJ319PC9zcGFuPiA8c3BhbiBjbGFzcz1cImxlZnQtY2FyZC1jb3VudC1oZWFkZXIgbXMtMVwiPkdyb3VwPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zdGFydCBtcy0xNSBtYi0zXCI+PHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0IHdlZWstZm9udFwiPnt7Z2V0Q2FyZERhdGE/LnBvdGVudGlhbEJ1eWVycz8ucG90ZW50aWFsQnV5ZXJzR3JvdXA/LmFnZUdyb3VwID8gZ2V0Q2FyZERhdGE/LnBvdGVudGlhbEJ1eWVycz8ucG90ZW50aWFsQnV5ZXJzR3JvdXA/LmFnZUdyb3VwOictLSd9fSBhZ2U8L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIG1zLTIgcC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIhZ2V0Q2FyZEdyYXBoRGF0YT8ucG90ZW50aWFsQnV5ZXJzPy5wb3RlbnRpYWxCdXllcnNHcm91cD8uUHJldmlvdXNWYXJpYXRpb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjMyOF80NjU0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS41IDlMNi43NSA0LjI1TDQuMjUgNi43NUwwLjUgM00xMS41IDlIOC41TTExLjUgOVY2XCIgc3Ryb2tlPVwiI0Q5MkQyMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIzMjhfNDY1NFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImdldENhcmRHcmFwaERhdGE/LnBvdGVudGlhbEJ1eWVycz8ucG90ZW50aWFsQnV5ZXJzR3JvdXA/LlByZXZpb3VzVmFyaWF0aW9uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzMyMTZfMTE4KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS41IDNMNi43NSA3Ljc1TDQuMjUgNS4yNUwwLjUgOU0xMS41IDNIOC41TTExLjUgM1Y2XCIgc3Ryb2tlPVwiIzAzOTg1NVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzMyMTZfMTE4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdC0yIG1zLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnZXRDYXJkR3JhcGhEYXRhPy5wb3RlbnRpYWxCdXllcnM/LnBvdGVudGlhbEJ1eWVyc0dyb3VwPy5QcmV2aW91c0RhdGEgPT09MFwiIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPjAlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdldENhcmRHcmFwaERhdGE/LnBvdGVudGlhbEJ1eWVycz8ucG90ZW50aWFsQnV5ZXJzR3JvdXA/LlByZXZpb3VzRGF0YSAhPT0wXCIgY2xhc3M9XCJwZXJjZW50LXZhbHVlXCI+e3tnZXRDYXJkR3JhcGhEYXRhPy5wb3RlbnRpYWxCdXllcnM/LnBvdGVudGlhbEJ1eWVyc0dyb3VwPy5QcmV2aW91c0RhdGEgPyBnZXRDYXJkR3JhcGhEYXRhPy5wb3RlbnRpYWxCdXllcnM/LnBvdGVudGlhbEJ1eWVyc0dyb3VwPy5QcmV2aW91c0RhdGE6Jy0tJ319JTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwid2Vlay1mb250XCI+IHZzIFByZXZpb3VzICA8c3BhbiAqbmdJZj1cImRhdGVUeXBlID09PSdkYWlseSdcIj5kYXk8L3NwYW4+PHNwYW4gKm5nSWY9XCJkYXRlVHlwZSA9PT0nd2Vla2x5J1wiPndlZWs8L3NwYW4+IDxzcGFuICpuZ0lmPVwiZGF0ZVR5cGUgPT09J21vbnRobHknXCI+bW9udGg8L3NwYW4+PC9zcGFuPlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgcHgtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgbXQtNyBtYi0zXCI+PHNwYW4gY2xhc3M9XCJsZWZ0LWNhcmQtY291bnQgbXQtMlwiPnt7Z2V0Q2FyZERhdGE/LnBvdGVudGlhbEJ1eWVycz8ucG90ZW50aWFsQnV5ZXJzUGVyc29ucz8uY291bnQgPyBnZXRDYXJkRGF0YT8ucG90ZW50aWFsQnV5ZXJzPy5wb3RlbnRpYWxCdXllcnNQZXJzb25zPy5jb3VudC50b0xvY2FsZVN0cmluZygnZW4tSU4nKTonLS0nfX08L3NwYW4+IDxzcGFuIGNsYXNzPVwibGVmdC1jYXJkLWNvdW50LWhlYWRlciBtcy0xXCI+UGVyc29uczwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtYi0zXCI+PHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0IHdlZWstZm9udFwiPnt7Z2V0Q2FyZERhdGE/LnBvdGVudGlhbEJ1eWVycz8ucG90ZW50aWFsQnV5ZXJzU2luZ2xlPy5hZ2VHcm91cCA/IGdldENhcmREYXRhLnBvdGVudGlhbEJ1eWVycz8ucG90ZW50aWFsQnV5ZXJzU2luZ2xlPy5hZ2VHcm91cDonLS0nfX0gYWdlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIHRleHQtY2VudGVyIHAtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdC0yIG1zLTJcIj48c3BhbiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIj48L3NwYW4+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1zLTIgd2Vlay1mb250XCI+IEF2Zy4gR3JvdXAgc2l6ZTwvc3Bhbj5cclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNiAxMkwxMCA4TDYgNFwiIHN0cm9rZT1cIiM5OEEyQjNcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgXHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBtYi0zXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwdC0zIHBzLTVcIj5cclxuICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlLXRleHRcIj5Db252ZXJzaW9uIEZ1bm5lbCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInRvcFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwiVG90YWwgb3Bwb3J0dW5pdHkgb2Ygc2FsZXMgY29udmVyc2lvbiB2ZXJzdXMgdG90YWwgd2Fsa2luc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzE0MzJfODAwMzUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOC4wMDA2NSAxMC42NjY2VjcuOTk5OTJNOC4wMDA2NSA1LjMzMzI1SDguMDA3MzJNMTQuNjY3MyA3Ljk5OTkyQzE0LjY2NzMgMTEuNjgxOCAxMS42ODI2IDE0LjY2NjYgOC4wMDA2NSAxNC42NjY2QzQuMzE4NzUgMTQuNjY2NiAxLjMzMzk4IDExLjY4MTggMS4zMzM5OCA3Ljk5OTkyQzEuMzMzOTggNC4zMTgwMiA0LjMxODc1IDEuMzMzMjUgOC4wMDA2NSAxLjMzMzI1QzExLjY4MjYgMS4zMzMyNSAxNC42NjczIDQuMzE4MDIgMTQuNjY3MyA3Ljk5OTkyWlwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8xNDMyXzgwMDM1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIGZpbGw9XCJ3aGl0ZVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXN1YiBtYi0yXCI+e3toZWFkZXJEYXRhPy5kYXRlPy5zdGFydERhdGUgfCBkYXRlOidkZCBNTU0sIHl5eXknfX0g4oCTIHt7aGVhZGVyRGF0YT8uZGF0ZT8uZW5kRGF0ZSB8IGRhdGU6J2RkIE1NTSwgeXl5eSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwLTBcIiA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaGVhdGxvYWRpbmdcIiBjbGFzcz1cInJvdyBsb2FkZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGgtMjc1cHhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lciBwdC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImhlYXRub0RhdGFcIiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1ub2RhdGFcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGExLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS10aXRsZVwiPk5vIGRhdGEgZm91bmQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGEtc3ViXCI+VGhlcmUgaXMgbm8gcmVzdWx0IGZvciB0aGlzIGNvbnZlcnNpb24gZnVubmVsPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWhlYXRsb2FkaW5nICYmICFoZWF0bm9EYXRhXCIgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtYi0zXCIgaWQ9XCJjaGFydGRpdlwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJtcGFsb2FkaW5nICYmIHN0b3JlSWRhcnJheT8ubGVuZ3RoID4gMSB8fCBtYXBub0RhdGEgJiYgc3RvcmVJZGFycmF5Py5sZW5ndGggPiAxIHx8ICFzdG9yZUlkYXJyYXk/Lmxlbmd0aFwiIGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIHB0LTMgcHMtNyBwZS0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlLXRleHRcIiA+RXhwbG9yZTwvc3Bhbj4gIFxyXG4gICAgICAgICAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm1wYWxvYWRpbmdcIiBjbGFzcz1cInJvdyBsb2FkZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGgtMjI1cHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyIHB0LTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibWFwbm9EYXRhXCIgIGNsYXNzPVwicm93IHB4LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLW1hcFwiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YTEuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGEtdGl0bGVcIj5ObyBkYXRhIGZvdW5kPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGEtc3ViXCI+VGhlcmUgaXMgbm8gcmVzdWx0IGZvciB0aGlzIFN0b3JlIG1hcDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFtcGFsb2FkaW5nICYmICFtYXBub0RhdGEgJiYgc3RvcmVJZGFycmF5Py5sZW5ndGggPiAxXCIgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIHB0LTMgcHMtNyBwZS0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlLXRleHRcIiA+RXhwbG9yZTwvc3Bhbj4gIFxyXG4gICAgICAgICAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhciBtdC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCIhbXBhbG9hZGluZyAmJiAhbWFwbm9EYXRhXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJleHBvcmVWaWV3KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBtZS04IGJ0bi1saWdodC1wcmltYXJ5MSByb3VuZGVkLTMgdGV4dC1ub3dyYXAgYm9yZGVyLXZhbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj5FeHBsb3JlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFtYXBub0RhdGFcIiBjbGFzcz1cImNhcmQtYm9keSBjb2wtbWQtMTIgcHQtMCBwYi01IHBzLTdcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cIm1hcFwiIGNsYXNzPVwidy0xMDBcIiA+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInN0b3JlSWRhcnJheT8ubGVuZ3RoID09PSAxXCIgY2xhc3M9XCJjYXJkIHBiLTJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwdC0zIHBzLTUgcGUtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZS10ZXh0XCI+UmVjYXAgVmlkZW8gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHBsYWNlbWVudD1cInJpZ2h0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJBIHF1aWNrIHJlY2FwIG9mIHRoZSBzdG9yZSBhY3Rpdml0eSBhbG9uZyB3aXRoIHRoZSBhdmcgdGVjaCBpbmZyYXN0cnVjdHVyZSBkb3dudGltZSBzdGF0dXNcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzE0MzJfODAwMzUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTguMDAwNjUgMTAuNjY2NlY3Ljk5OTkyTTguMDAwNjUgNS4zMzMyNUg4LjAwNzMyTTE0LjY2NzMgNy45OTk5MkMxNC42NjczIDExLjY4MTggMTEuNjgyNiAxNC42NjY2IDguMDAwNjUgMTQuNjY2NkM0LjMxODc1IDE0LjY2NjYgMS4zMzM5OCAxMS42ODE4IDEuMzMzOTggNy45OTk5MkMxLjMzMzk4IDQuMzE4MDIgNC4zMTg3NSAxLjMzMzI1IDguMDAwNjUgMS4zMzMyNUMxMS42ODI2IDEuMzMzMjUgMTQuNjY3MyA0LjMxODAyIDE0LjY2NzMgNy45OTk5MlpcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTQzMl84MDAzNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgZmlsbD1cIndoaXRlXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1zdWIgbWItMlwiPkRhdGVkOiB7e2hlYWRlckRhdGE/LmRhdGU/LmVuZERhdGUgfCBkYXRlOicgZGQgTU1NLHl5eXknfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyIG10LTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1vdXRsaW5lIGJ0bi1vdXRsaW5lLWRlZmF1bHQgcm91bmRlZC0zIHRleHQtbm93cmFwIGJvcmRlci12YWwgdGV4dC1zdGFydFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE2IDE0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPVwiR3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiVmVjdG9yXCIgZD1cIk05LjUxOTUzIDAuMzMzOTg0QzEwLjM5NTggMC4zMzM5ODQgMTEuMjMzMSAwLjUxMzQ3NyAxMS45OTc0IDAuODM4OTc0QzEyLjc5MDQgMS4xNzY1MyAxMy41MDM5IDEuNjcyMTQgMTQuMTAxNiAyLjI4Njk3QzE0LjY5NzkgMi45MDA0NiAxNS4xNzk3IDMuNjM0NSAxNS41MDc4IDQuNDUyOTNDMTUuODI0MiA1LjIzOTIyIDE1Ljk5ODcgNi4xMDA1MSAxNS45OTg3IDcuMDAwNjVDMTUuOTk4NyA3LjkwMjEzIDE1LjgyNDIgOC43NjM0MyAxNS41MDc4IDkuNTQ5NzFDMTUuMTc5NyAxMC4zNjU1IDE0LjY5NzkgMTEuMDk5NSAxNC4xMDAzIDExLjcxNDNDMTMuNTAzOSAxMi4zMjc4IDEyLjc5MDQgMTIuODIzNCAxMS45OTQ4IDEzLjE2MUMxMS4yMzA1IDEzLjQ4NjUgMTAuMzkzMiAxMy42NjYgOS41MTgyMyAxMy42NjZDOC42NDE5MyAxMy42NjYgNy44MDQ2OSAxMy40ODY1IDcuMDQwMzYgMTMuMTYxQzYuMjQ3NCAxMi44MjM0IDUuNTMzODUgMTIuMzI3OCA0LjkzNzUgMTEuNzE0M0w0LjkzNjIgMTEuNzEzQzQuMzM4NTQgMTEuMDk4MiAzLjg1ODA3IDEwLjM2NDEgMy41Mjk5NSA5LjU0OTcxQzMuNDI4MzkgOS4yOTY1NSAzLjM0MTE1IDkuMDM2NjggMy4yNjk1MyA4Ljc3MDEzQzMuNDA0OTUgOC43ODM1MiAzLjU0Mjk3IDguNzkwMjIgMy42ODIyOSA4Ljc5MDIyQzMuOTQ2NjEgOC43OTAyMiA0LjIwNDQzIDguNzY2MTEgNC40NTU3MyA4LjcxOTIyQzQuNDk3NCA4Ljg0NzgyIDQuNTQyOTcgOC45NzUwNyA0LjU5MjQ1IDkuMDk5NjRDNC44NjE5OCA5Ljc2OTM5IDUuMjU3ODEgMTAuMzcyMiA1Ljc1IDEwLjg3ODVDNi4yNDIxOSAxMS4zODQ4IDYuODI5NDMgMTEuNzkyIDcuNDc5MTcgMTIuMDY5M0M4LjEwNTQ3IDEyLjMzNTkgOC43OTQyNyAxMi40ODQ1IDkuNTE4MjMgMTIuNDg0NUMxMC4yNDIyIDEyLjQ4NDUgMTAuOTI5NyAxMi4zMzcyIDExLjU1NzMgMTIuMDY5M0MxMi4yMDgzIDExLjc5MiAxMi43OTQzIDExLjM4NDggMTMuMjg2NSAxMC44Nzg1QzEzLjc3ODYgMTAuMzcyMiAxNC4xNzQ1IDkuNzY4MDUgMTQuNDQ0IDkuMDk5NjRDMTQuNzAzMSA4LjQ1NTM0IDE0Ljg0NzcgNy43NDY3NSAxNC44NDc3IDcuMDAxOTlDMTQuODQ3NyA2LjI1NzIzIDE0LjcwNDQgNS41NDk5OCAxNC40NDQgNC45MDQzNEMxNC4xNzQ1IDQuMjM0NTkgMTMuNzc4NiAzLjYzMTgyIDEzLjI4NjUgMy4xMjU0OUMxMi43OTQzIDIuNjE5MTYgMTIuMjA3IDIuMjExOTYgMTEuNTU3MyAxLjkzNDY4QzEwLjkzMSAxLjY2ODEyIDEwLjI0MjIgMS41MTk0NCA5LjUxODIzIDEuNTE5NDRDOC43OTQyNyAxLjUxOTQ0IDguMTA2NzcgMS42NjY3OCA3LjQ3OTE3IDEuOTM0NjhDNy40MjMxOCAxLjk1ODc5IDcuMzY3MTkgMS45ODQyNCA3LjMxMjUgMi4wMDk2OUM3LjA5ODk2IDEuNjY0MSA2Ljg0MTE1IDEuMzUwNjYgNi41NDU1NyAxLjA3ODc0QzYuNzA3MDMgMC45OTMwMTYgNi44NzI0IDAuOTEzOTg2IDcuMDQwMzYgMC44NDE2NTNDNy44MDcyOSAwLjUxMzQ3NyA4LjY0MzIzIDAuMzMzOTg0IDkuNTE5NTMgMC4zMzM5ODRaTTguNzc2MDQgMy44MzE0MUM4Ljc3NjA0IDMuNjY3OTkgOC44NDExNSAzLjUyMDY0IDguOTQ0MDEgMy40MTM0OEM5LjA0ODE4IDMuMzA2MzIgOS4xOTE0MSAzLjI0MDY5IDkuMzUwMjYgMy4yNDA2OUM5LjUwOTExIDMuMjQwNjkgOS42NTIzNCAzLjMwNjMyIDkuNzU2NTEgMy40MTM0OEM5Ljg2MDY4IDMuNTIwNjQgOS45MjQ0OCAzLjY2Nzk5IDkuOTI0NDggMy44MzE0MVY2Ljk0MTcxTDEyLjE4MzYgOC4zMjAwNUMxMi4zMTkgOC40MDMxIDEyLjQxMDIgOC41MzU3MSAxMi40NDY2IDguNjgxNzJDMTIuNDgzMSA4LjgyNzcyIDEyLjQ2NjEgOC45ODg0NiAxMi4zODU0IDkuMTI3NzdWOS4xMjkxMUMxMi4zMDQ3IDkuMjY4NDIgMTIuMTc1OCA5LjM2MjE4IDEyLjAzMzkgOS4zOTk2OUMxMS44OTE5IDkuNDM3MTkgMTEuNzM1NyA5LjQxOTc4IDExLjYwMDMgOS4zMzY3M0gxMS41OTlMOS4wNzE2MSA3Ljc5NDk3QzguOTg0MzggNy43NDU0MSA4LjkxMjc2IDcuNjczMDggOC44NjA2OCA3LjU4NzM1QzguODA3MjkgNy40OTc2IDguNzc2MDQgNy4zOTE3OCA4Ljc3NjA0IDcuMjc5MjdWMy44MzE0MVpcIiBmaWxsPVwiIzY2NzA4NVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiVmVjdG9yXzJcIiBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNMy41MTMwMiAwLjY4NzYyMkM1LjQ1MzEyIDAuNjg3NjIyIDcuMDI2MDQgMi4zMDU3MyA3LjAyNjA0IDQuMzAxNThDNy4wMjYwNCA2LjI5NzQzIDUuNDUzMTIgNy45MTU1NCAzLjUxMzAyIDcuOTE1NTRDMS41NzI5MiA3LjkxNTU0IDAgNi4yOTc0MyAwIDQuMzAxNThDMCAyLjMwNTczIDEuNTcyOTIgMC42ODc2MjIgMy41MTMwMiAwLjY4NzYyMlpNMy41MTMwMiA2LjM3Mzc4TDUuMzk4NDQgMy45NzYwOEg0LjIyNzg2VjIuNzAwODhIMi43OTgxOFYzLjk3NjA4SDEuNjI3NkwzLjUxMzAyIDYuMzczNzhaXCIgZmlsbD1cIiNGMDQ0MzhcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+e3tnZXRSZWNhcFZpZGVvRGF0YT8uZG93blRpbWUgPz8gJy0tJ319IE1pbnM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IG14LTIgYnRuLW91dGxpbmUgYnRuLW91dGxpbmUtZGVmYXVsdCByb3VuZGVkLTMgdGV4dC1ub3dyYXAgYm9yZGVyLXZhbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiZ2V0UmVjYXBWaWRlb0RhdGE/LmhlYWx0aCA9PT0nR09PRCdcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD1cIkZyYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlZlY3RvclwiIGQ9XCJNMTMuNDM0OSAyLjVDMTQuODIzOCAyLjUgMTUuOTg3MSAzLjAxMzg5IDE2LjkyNDkgNC4wNDE2N0MxNy44NjI3IDUuMDY5NDQgMTguMzMxMyA2LjI5MTY3IDE4LjMzMDcgNy43MDgzM0MxOC4zMzA3IDcuOTU4MzMgMTguMzE2OCA4LjIwNSAxOC4yODkxIDguNDQ4MzNDMTguMjYxMyA4LjY5MTY3IDE4LjIxMjcgOC45MzExMSAxOC4xNDMyIDkuMTY2NjdIMTIuOTM0OUwxMS41MTgyIDcuMDQxNjdDMTEuNDQ4OCA2LjkzMDU2IDExLjM1MTYgNi44NDAyOCAxMS4yMjY2IDYuNzcwODNDMTEuMTAxNiA2LjcwMTM5IDEwLjk2OTYgNi42NjY2NyAxMC44MzA3IDYuNjY2NjdDMTAuNjUwMiA2LjY2NjY3IDEwLjQ4NjggNi43MjIyMiAxMC4zNDA3IDYuODMzMzNDMTAuMTk0NiA2Ljk0NDQ0IDEwLjA5NDEgNy4wODMzMyAxMC4wMzkxIDcuMjVMOC45MTQwNiAxMC42MjVMOC4xODQ5IDkuNTQxNjdDOC4xMTU0NSA5LjQzMDU2IDguMDE4MjMgOS4zNDAyOCA3Ljg5MzIzIDkuMjcwODNDNy43NjgyMyA5LjIwMTM5IDcuNjM2MjggOS4xNjY2NyA3LjQ5NzQgOS4xNjY2N0gxLjg1MTU2QzEuNzgyMTIgOC45MzA1NiAxLjczMzUxIDguNjkwODMgMS43MDU3MyA4LjQ0NzVDMS42Nzc5NSA4LjIwNDE3IDEuNjY0MDYgNy45NjQ3MiAxLjY2NDA2IDcuNzI5MTdDMS42NjQwNiA2LjI5ODYxIDIuMTI5MzQgNS4wNjk0NCAzLjA1OTkgNC4wNDE2N0MzLjk5MDQ1IDMuMDEzODkgNS4xNTAxNyAyLjUgNi41MzkwNiAyLjVDNy4yMDU3MyAyLjUgNy44MzQzNCAyLjYzMTk0IDguNDI0OSAyLjg5NTgzQzkuMDE1NDUgMy4xNTk3MiA5LjUzOTYyIDMuNTI3NzggOS45OTc0IDRDMTAuNDQxOCAzLjUyNzc4IDEwLjk1OTMgMy4xNTk3MiAxMS41NDk5IDIuODk1ODNDMTIuMTQwNSAyLjYzMTk0IDEyLjc2ODggMi41IDEzLjQzNDkgMi41Wk05Ljk5NzQgMTcuNUM5Ljc0NzQgMTcuNSA5LjUwNzY3IDE3LjQ1NDcgOS4yNzgyMyAxNy4zNjQyQzkuMDQ4NzggMTcuMjczNiA4Ljg0NDA2IDE3LjEzODMgOC42NjQwNiAxNi45NTgzTDMuMDgwNzMgMTEuMzU0MkMyLjk5NzQgMTEuMjcwOCAyLjkyMTAxIDExLjE4NzUgMi44NTE1NiAxMS4xMDQyQzIuNzgyMTIgMTEuMDIwOCAyLjcxMjY3IDEwLjkzMDYgMi42NDMyMyAxMC44MzMzSDcuMDM5MDZMOC40NTU3MyAxMi45NTgzQzguNTI1MTcgMTMuMDY5NCA4LjYyMjQgMTMuMTU5NyA4Ljc0NzQgMTMuMjI5MkM4Ljg3MjQgMTMuMjk4NiA5LjAwNDM0IDEzLjMzMzMgOS4xNDMyMyAxMy4zMzMzQzkuMzIzNzggMTMuMzMzMyA5LjQ5MDQ1IDEzLjI3NzggOS42NDMyMyAxMy4xNjY3QzkuNzk2MDEgMTMuMDU1NiA5LjkwMDE3IDEyLjkxNjcgOS45NTU3MyAxMi43NUwxMS4wODA3IDkuMzc1TDExLjc4OTEgMTAuNDU4M0MxMS44NzI0IDEwLjU2OTQgMTEuOTc2NiAxMC42NTk3IDEyLjEwMTYgMTAuNzI5MkMxMi4yMjY2IDEwLjc5ODYgMTIuMzU4NSAxMC44MzMzIDEyLjQ5NzQgMTAuODMzM0gxNy4zMzA3TDE3LjEyMjQgMTEuMDgzM0wxNi45MTQxIDExLjMzMzNMMTEuMzA5OSAxNi45NTgzQzExLjEyOTMgMTcuMTM4OSAxMC45MjggMTcuMjc0NCAxMC43MDU3IDE3LjM2NUMxMC40ODM1IDE3LjQ1NTYgMTAuMjQ3NCAxNy41MDA2IDkuOTk3NCAxNy41WlwiIGZpbGw9XCIjMTJCNzZBXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiZ2V0UmVjYXBWaWRlb0RhdGE/LmhlYWx0aCA9PT0nQVZFUkFHRSdcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9XCJGcmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiVmVjdG9yXCIgZD1cIk0xMy40MzQ5IDIuNUMxNC44MjM4IDIuNSAxNS45ODcxIDMuMDEzODkgMTYuOTI0OSA0LjA0MTY3QzE3Ljg2MjcgNS4wNjk0NCAxOC4zMzEzIDYuMjkxNjcgMTguMzMwNyA3LjcwODMzQzE4LjMzMDcgNy45NTgzMyAxOC4zMTY4IDguMjA1IDE4LjI4OTEgOC40NDgzM0MxOC4yNjEzIDguNjkxNjcgMTguMjEyNyA4LjkzMTExIDE4LjE0MzIgOS4xNjY2N0gxMi45MzQ5TDExLjUxODIgNy4wNDE2N0MxMS40NDg4IDYuOTMwNTYgMTEuMzUxNiA2Ljg0MDI4IDExLjIyNjYgNi43NzA4M0MxMS4xMDE2IDYuNzAxMzkgMTAuOTY5NiA2LjY2NjY3IDEwLjgzMDcgNi42NjY2N0MxMC42NTAyIDYuNjY2NjcgMTAuNDg2OCA2LjcyMjIyIDEwLjM0MDcgNi44MzMzM0MxMC4xOTQ2IDYuOTQ0NDQgMTAuMDk0MSA3LjA4MzMzIDEwLjAzOTEgNy4yNUw4LjkxNDA2IDEwLjYyNUw4LjE4NDkgOS41NDE2N0M4LjExNTQ1IDkuNDMwNTYgOC4wMTgyMyA5LjM0MDI4IDcuODkzMjMgOS4yNzA4M0M3Ljc2ODIzIDkuMjAxMzkgNy42MzYyOCA5LjE2NjY3IDcuNDk3NCA5LjE2NjY3SDEuODUxNTZDMS43ODIxMiA4LjkzMDU2IDEuNzMzNTEgOC42OTA4MyAxLjcwNTczIDguNDQ3NUMxLjY3Nzk1IDguMjA0MTcgMS42NjQwNiA3Ljk2NDcyIDEuNjY0MDYgNy43MjkxN0MxLjY2NDA2IDYuMjk4NjEgMi4xMjkzNCA1LjA2OTQ0IDMuMDU5OSA0LjA0MTY3QzMuOTkwNDUgMy4wMTM4OSA1LjE1MDE3IDIuNSA2LjUzOTA2IDIuNUM3LjIwNTczIDIuNSA3LjgzNDM0IDIuNjMxOTQgOC40MjQ5IDIuODk1ODNDOS4wMTU0NSAzLjE1OTcyIDkuNTM5NjIgMy41Mjc3OCA5Ljk5NzQgNEMxMC40NDE4IDMuNTI3NzggMTAuOTU5MyAzLjE1OTcyIDExLjU0OTkgMi44OTU4M0MxMi4xNDA1IDIuNjMxOTQgMTIuNzY4OCAyLjUgMTMuNDM0OSAyLjVaTTkuOTk3NCAxNy41QzkuNzQ3NCAxNy41IDkuNTA3NjcgMTcuNDU0NyA5LjI3ODIzIDE3LjM2NDJDOS4wNDg3OCAxNy4yNzM2IDguODQ0MDYgMTcuMTM4MyA4LjY2NDA2IDE2Ljk1ODNMMy4wODA3MyAxMS4zNTQyQzIuOTk3NCAxMS4yNzA4IDIuOTIxMDEgMTEuMTg3NSAyLjg1MTU2IDExLjEwNDJDMi43ODIxMiAxMS4wMjA4IDIuNzEyNjcgMTAuOTMwNiAyLjY0MzIzIDEwLjgzMzNINy4wMzkwNkw4LjQ1NTczIDEyLjk1ODNDOC41MjUxNyAxMy4wNjk0IDguNjIyNCAxMy4xNTk3IDguNzQ3NCAxMy4yMjkyQzguODcyNCAxMy4yOTg2IDkuMDA0MzQgMTMuMzMzMyA5LjE0MzIzIDEzLjMzMzNDOS4zMjM3OCAxMy4zMzMzIDkuNDkwNDUgMTMuMjc3OCA5LjY0MzIzIDEzLjE2NjdDOS43OTYwMSAxMy4wNTU2IDkuOTAwMTcgMTIuOTE2NyA5Ljk1NTczIDEyLjc1TDExLjA4MDcgOS4zNzVMMTEuNzg5MSAxMC40NTgzQzExLjg3MjQgMTAuNTY5NCAxMS45NzY2IDEwLjY1OTcgMTIuMTAxNiAxMC43MjkyQzEyLjIyNjYgMTAuNzk4NiAxMi4zNTg1IDEwLjgzMzMgMTIuNDk3NCAxMC44MzMzSDE3LjMzMDdMMTcuMTIyNCAxMS4wODMzTDE2LjkxNDEgMTEuMzMzM0wxMS4zMDk5IDE2Ljk1ODNDMTEuMTI5MyAxNy4xMzg5IDEwLjkyOCAxNy4yNzQ0IDEwLjcwNTcgMTcuMzY1QzEwLjQ4MzUgMTcuNDU1NiAxMC4yNDc0IDE3LjUwMDYgOS45OTc0IDE3LjVaXCIgZmlsbD1cIiNGQUNDMTVcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJnZXRSZWNhcFZpZGVvRGF0YT8uaGVhbHRoID09PSdCQUQnXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD1cIkZyYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiVmVjdG9yXCIgZD1cIk0xMy40MzQ5IDIuNUMxNC44MjM4IDIuNSAxNS45ODcxIDMuMDEzODkgMTYuOTI0OSA0LjA0MTY3QzE3Ljg2MjcgNS4wNjk0NCAxOC4zMzEzIDYuMjkxNjcgMTguMzMwNyA3LjcwODMzQzE4LjMzMDcgNy45NTgzMyAxOC4zMTY4IDguMjA1IDE4LjI4OTEgOC40NDgzM0MxOC4yNjEzIDguNjkxNjcgMTguMjEyNyA4LjkzMTExIDE4LjE0MzIgOS4xNjY2N0gxMi45MzQ5TDExLjUxODIgNy4wNDE2N0MxMS40NDg4IDYuOTMwNTYgMTEuMzUxNiA2Ljg0MDI4IDExLjIyNjYgNi43NzA4M0MxMS4xMDE2IDYuNzAxMzkgMTAuOTY5NiA2LjY2NjY3IDEwLjgzMDcgNi42NjY2N0MxMC42NTAyIDYuNjY2NjcgMTAuNDg2OCA2LjcyMjIyIDEwLjM0MDcgNi44MzMzM0MxMC4xOTQ2IDYuOTQ0NDQgMTAuMDk0MSA3LjA4MzMzIDEwLjAzOTEgNy4yNUw4LjkxNDA2IDEwLjYyNUw4LjE4NDkgOS41NDE2N0M4LjExNTQ1IDkuNDMwNTYgOC4wMTgyMyA5LjM0MDI4IDcuODkzMjMgOS4yNzA4M0M3Ljc2ODIzIDkuMjAxMzkgNy42MzYyOCA5LjE2NjY3IDcuNDk3NCA5LjE2NjY3SDEuODUxNTZDMS43ODIxMiA4LjkzMDU2IDEuNzMzNTEgOC42OTA4MyAxLjcwNTczIDguNDQ3NUMxLjY3Nzk1IDguMjA0MTcgMS42NjQwNiA3Ljk2NDcyIDEuNjY0MDYgNy43MjkxN0MxLjY2NDA2IDYuMjk4NjEgMi4xMjkzNCA1LjA2OTQ0IDMuMDU5OSA0LjA0MTY3QzMuOTkwNDUgMy4wMTM4OSA1LjE1MDE3IDIuNSA2LjUzOTA2IDIuNUM3LjIwNTczIDIuNSA3LjgzNDM0IDIuNjMxOTQgOC40MjQ5IDIuODk1ODNDOS4wMTU0NSAzLjE1OTcyIDkuNTM5NjIgMy41Mjc3OCA5Ljk5NzQgNEMxMC40NDE4IDMuNTI3NzggMTAuOTU5MyAzLjE1OTcyIDExLjU0OTkgMi44OTU4M0MxMi4xNDA1IDIuNjMxOTQgMTIuNzY4OCAyLjUgMTMuNDM0OSAyLjVaTTkuOTk3NCAxNy41QzkuNzQ3NCAxNy41IDkuNTA3NjcgMTcuNDU0NyA5LjI3ODIzIDE3LjM2NDJDOS4wNDg3OCAxNy4yNzM2IDguODQ0MDYgMTcuMTM4MyA4LjY2NDA2IDE2Ljk1ODNMMy4wODA3MyAxMS4zNTQyQzIuOTk3NCAxMS4yNzA4IDIuOTIxMDEgMTEuMTg3NSAyLjg1MTU2IDExLjEwNDJDMi43ODIxMiAxMS4wMjA4IDIuNzEyNjcgMTAuOTMwNiAyLjY0MzIzIDEwLjgzMzNINy4wMzkwNkw4LjQ1NTczIDEyLjk1ODNDOC41MjUxNyAxMy4wNjk0IDguNjIyNCAxMy4xNTk3IDguNzQ3NCAxMy4yMjkyQzguODcyNCAxMy4yOTg2IDkuMDA0MzQgMTMuMzMzMyA5LjE0MzIzIDEzLjMzMzNDOS4zMjM3OCAxMy4zMzMzIDkuNDkwNDUgMTMuMjc3OCA5LjY0MzIzIDEzLjE2NjdDOS43OTYwMSAxMy4wNTU2IDkuOTAwMTcgMTIuOTE2NyA5Ljk1NTczIDEyLjc1TDExLjA4MDcgOS4zNzVMMTEuNzg5MSAxMC40NTgzQzExLjg3MjQgMTAuNTY5NCAxMS45NzY2IDEwLjY1OTcgMTIuMTAxNiAxMC43MjkyQzEyLjIyNjYgMTAuNzk4NiAxMi4zNTg1IDEwLjgzMzMgMTIuNDk3NCAxMC44MzMzSDE3LjMzMDdMMTcuMTIyNCAxMS4wODMzTDE2LjkxNDEgMTEuMzMzM0wxMS4zMDk5IDE2Ljk1ODNDMTEuMTI5MyAxNy4xMzg5IDEwLjkyOCAxNy4yNzQ0IDEwLjcwNTcgMTcuMzY1QzEwLjQ4MzUgMTcuNDU1NiAxMC4yNDc0IDE3LjUwMDYgOS45OTc0IDE3LjVaXCIgZmlsbD1cIiNGMDQ0MzhcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPnt7Z2V0UmVjYXBWaWRlb0RhdGE/LmhlYWx0aCA/PyAnLS0nfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNhbWVyYVZpZXcoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIG14LTIgYnRuLWxpZ2h0LXByaW1hcnkxIHJvdW5kZWQtMyB0ZXh0LW5vd3JhcCBib3JkZXItdmFsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPkxpdmUgVmlldzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicmVjYXBsYW9kaW5nXCIgY2xhc3M9XCJyb3cgbG9hZGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBoLTIyNXB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXIgcHQtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJyZWNhcG5vRGF0YVwiICBjbGFzcz1cInJvdyBweC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1tYXAtcmVjYXBcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGExLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS10aXRsZVwiPk5vIGRhdGEgZm91bmQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGEtc3ViXCI+VGhlcmUgaXMgbm8gcmVzdWx0IGZvciB0aGlzIFJlY2FwIHZpZGVvPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXJlY2FwbGFvZGluZyAmJiAhcmVjYXBub0RhdGFcIiBjbGFzcz1cImNhcmQtYm9keSBwLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG14LTNcIj5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2Fyb3VzZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJvdXNlbC1pbm5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYXJvdXNlbC1pdGVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZ3JvdXAgb2YgcmVjYXBzR3JvdXBlZDsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJpID09PSBjdXJyZW50SW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcGFpciBvZiBncm91cFwiIFtuZ0NsYXNzXT1cImNvbFZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJwYWlyLnRodW1iSW1hZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ2aWRlb0NsaWNrKHBhaXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImltYWdlLXRodW1iIG1iLTggZC1ibG9jayB3LTEwMCBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiSW1hZ2Uge3sgaSArIDEgfX1cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIENvbmRpdGlvbmFsbHkgZGlzcGxheSBQcmV2aW91cyBidXR0b24gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2Fyb3VzZWwtY29udHJvbC1wcmV2XCIgKm5nSWY9XCJjdXJyZW50SW5kZXggPiAwXCIgKGNsaWNrKT1cInByZXZTbGlkZSgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2Fyb3VzZWwtY29udHJvbC1wcmV2LWljb25cIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQ29uZGl0aW9uYWxseSBkaXNwbGF5IE5leHQgYnV0dG9uIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNhcm91c2VsLWNvbnRyb2wtbmV4dFwiICpuZ0lmPVwiY3VycmVudEluZGV4IDwgcmVjYXBzR3JvdXBlZC5sZW5ndGggLSAxXCIgKGNsaWNrKT1cIm5leHRTbGlkZSgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2Fyb3VzZWwtY29udHJvbC1uZXh0LWljb25cIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gTmF2aWdhdGlvbiBEb3RzIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInJlY2Fwc0dyb3VwZWQubGVuZ3RoID4gMVwiIGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImNhcm91c2VsLWluZGljYXRvcnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGdyb3VwIG9mIHJlY2Fwc0dyb3VwZWQ7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImkgPT09IGN1cnJlbnRJbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJnb1RvU2xpZGUoaSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDx2aWRlbyBjb250cm9scyBhdXRvcGxheSBjbGFzcz1cInJlY2FwLWltZyBwLTNcIiBbc3JjXT1cImdldFJlY2FwRGF0YT8udmlkZW9VUkxcIj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxzb3VyY2UgIHR5cGU9XCJ2aWRlby9tcDRcIj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxzb3VyY2UgW3NyY109XCJnZXRSZWNhcERhdGE/LnZpZGVvVVJMXCIgdHlwZT1cInZpZGVvL29nZ1wiPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDwvdmlkZW8+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgI21hcENvbnRhaW5lciBzdHlsZT1cImhlaWdodDoyMzBweDtcIj48L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNvbC1tZC02IG1iLTNcIj48aW1nIHNyYz1cImFzc2V0cy90YW5nby9JbWFnZXMvcmVjYXAuc3ZnXCIgYWx0PVwiXCIgY2xhc3M9XCJyZWNhcC1pbWdcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IG1iLTNcIj48aW1nIHNyYz1cImFzc2V0cy90YW5nby9JbWFnZXMvcmVjYXAuc3ZnXCIgYWx0PVwiXCIgY2xhc3M9XCJyZWNhcC1pbWdcIj48L2Rpdj4gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgIFxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIG10LTNcIj5cclxuICAgICAgICA8bGliLXRyYWZmaWMtY2hhcnRzIGNsYXNzPVwibXktMlwiPjwvbGliLXRyYWZmaWMtY2hhcnRzPlxyXG4gICAgXHJcbiAgICAgICAgPGxpYi10cmFmZmljLWNhcmQtY2hhcnRzIGNsYXNzPVwibXktMlwiPjwvbGliLXRyYWZmaWMtY2FyZC1jaGFydHM+XHJcbiAgICAgICAgPGxpYi1pbWFnZS1kb2MgKm5nSWY9XCJzdG9yZUlkYXJyYXk/Lmxlbmd0aCA9PT0gMVwiIGNsYXNzPVwibXktMlwiPjwvbGliLWltYWdlLWRvYz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cInN0b3JlSWRhcnJheT8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY29sLW1kLTYgbXQtM1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIGgtMTAwXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwdC0zXCI+XHJcbiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZS10ZXh0IG1iLTJcIj5QZXJmb3JtYW5jZSBNYXRyaXhcclxuICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIiBwbGFjZW1lbnQ9XCJyaWdodFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwiU3RvcmUgcGVyZm9ybWFuY2UgYmFzZWQgb24gbWV0cmljcyBzZWxlY3RlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8xNDMyXzgwMDM1KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDA2NSAxMC42NjY2VjcuOTk5OTJNOC4wMDA2NSA1LjMzMzI1SDguMDA3MzJNMTQuNjY3MyA3Ljk5OTkyQzE0LjY2NzMgMTEuNjgxOCAxMS42ODI2IDE0LjY2NjYgOC4wMDA2NSAxNC42NjY2QzQuMzE4NzUgMTQuNjY2NiAxLjMzMzk4IDExLjY4MTggMS4zMzM5OCA3Ljk5OTkyQzEuMzMzOTggNC4zMTgwMiA0LjMxODc1IDEuMzMzMjUgOC4wMDA2NSAxLjMzMzI1QzExLjY4MjYgMS4zMzMyNSAxNC42NjczIDQuMzE4MDIgMTQuNjY3MyA3Ljk5OTkyWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzE0MzJfODAwMzVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXN1YiBtYi0yXCI+e3toZWFkZXJEYXRhPy5kYXRlPy5zdGFydERhdGUgfCBkYXRlOidkZCBNTU0sIHl5eXknfX0g4oCTIHt7aGVhZGVyRGF0YT8uZGF0ZT8uZW5kRGF0ZSB8IGRhdGU6J2RkIE1NTSwgeXl5eSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXgtMyBhbGlnbi1pdGVtcy1jZW50ZXIgdy03NVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbXMtM1wiPlxyXG4gICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1zZWxlY3Qtc20gZm9ybS1zZWxlY3QgbWUtMiBkcm9wc2VsZWN0XCIgWyhuZ01vZGVsKV09XCJmb290ZmFsbFZhbHVlXCIgKGNoYW5nZSk9XCJvblZhbHVlQ2hhbmdlKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBvYmogb2YgZ2V0RmlsdGVyZWRGb290ZmFsbERhdGFzZXRzKClcIiBbaWRdPVwib2JqLmxhYmVsXCIgW3ZhbHVlXT1cIm9iai52YWx1ZVwiPnt7b2JqLmxhYmVsfX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXgtMlwiPlZzPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1zZWxlY3Qtc20gZm9ybS1zZWxlY3QgbXMtMiBkcm9wc2VsZWN0XCIgWyhuZ01vZGVsKV09XCJib3VuY2VWYWx1ZVwiIChjaGFuZ2UpPVwib25Cb3VuY2VDaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG9iaiBvZiBnZXRGaWx0ZXJlZEJvdW5jZURhdGFzZXRzKClcIiBbaWRdPVwib2JqLmxhYmVsXCIgW3ZhbHVlXT1cIm9iai52YWx1ZVwiPnt7b2JqLmxhYmVsfX08L29wdGlvbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInBlcmZvcm1hbmNlTG9hZGluZ1wiIGNsYXNzPVwicm93IGxvYWRlciAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwZXJmb3JtYW5jZW5vRGF0YVwiIGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIG10LTIwIG1iLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiIG10LTIwIGNhcmQtYm9keSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1ub2RhdGEtdGFibGVcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGExLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhLXRpdGxlXCI+Tm8gZGF0YSBmb3VuZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhLXN1YlwiPlRoZXJlIGlzIG5vIHJlc3VsdCBmb3IgdGhpcyB7e2Zvb3RmYWxsTGFiZWwgfCB0aXRsZWNhc2V9fSB2cyB7e2JvdW5jZUxhYmVsIHwgdGl0bGVjYXNlfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFwZXJmb3JtYW5jZUxvYWRpbmcgJiYgIXBlcmZvcm1hbmNlbm9EYXRhXCIgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJxdWFkcmFudC1jaGFydCB6LTFcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheGlzLWxhYmVsc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gWCBBeGlzIExhYmVsIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ4LWF4aXMtbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7Ym91bmNlTGFiZWwgfCB0aXRsZWNhc2V9fSAtPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIFkgQXhpcyBMYWJlbCAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwieS1heGlzLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e2Zvb3RmYWxsTGFiZWwgfCB0aXRsZWNhc2V9fSAtPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8IS0tIFRvcCBMZWZ0IFF1YWRyYW50IC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInF1YWRyYW50XCIgaWQ9XCJxMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj5IaWdoIDxzcGFuICpuZ0lmPVwiZm9vdGZhbGxMYWJlbD09PSdCb3VuY2VkIEZvb3RmYWxsJ1wiPkJvdW5jZTwvc3Bhbj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmb290ZmFsbExhYmVsICE9PSdCb3VuY2VkIEZvb3RmYWxsJ1wiPnt7Zm9vdGZhbGxMYWJlbCB8IHRpdGxlY2FzZX19PC9zcGFuPiwgTG93IDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImJvdW5jZUxhYmVsPT09J0JvdW5jZWQgRm9vdGZhbGwnXCI+Qm91bmNlPC9zcGFuPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImJvdW5jZUxhYmVsICE9PSdCb3VuY2VkIEZvb3RmYWxsJ1wiPnt7Ym91bmNlTGFiZWwgfCB0aXRsZWNhc2V9fTwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPCEtLSBUb3AgUmlnaHQgUXVhZHJhbnQgLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicXVhZHJhbnRcIiBpZD1cInEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPkhpZ2ggPHNwYW4gKm5nSWY9XCJmb290ZmFsbExhYmVsPT09J0JvdW5jZWQgRm9vdGZhbGwnXCI+Qm91bmNlPC9zcGFuPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImZvb3RmYWxsTGFiZWwgIT09J0JvdW5jZWQgRm9vdGZhbGwnXCI+e3tmb290ZmFsbExhYmVsIHwgdGl0bGVjYXNlfX08L3NwYW4+LCBIaWdoIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImJvdW5jZUxhYmVsPT09J0JvdW5jZWQgRm9vdGZhbGwnXCI+Qm91bmNlPC9zcGFuPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImJvdW5jZUxhYmVsICE9PSdCb3VuY2VkIEZvb3RmYWxsJ1wiPnt7Ym91bmNlTGFiZWwgfCB0aXRsZWNhc2V9fTwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPCEtLSBCb3R0b20gTGVmdCBRdWFkcmFudCAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJxdWFkcmFudFwiIGlkPVwicTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+TG93IDxzcGFuICpuZ0lmPVwiZm9vdGZhbGxMYWJlbD09PSdCb3VuY2VkIEZvb3RmYWxsJ1wiPkJvdW5jZTwvc3Bhbj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmb290ZmFsbExhYmVsICE9PSdCb3VuY2VkIEZvb3RmYWxsJ1wiPnt7Zm9vdGZhbGxMYWJlbCB8IHRpdGxlY2FzZX19PC9zcGFuPiwgTG93IDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImJvdW5jZUxhYmVsPT09J0JvdW5jZWQgRm9vdGZhbGwnXCI+Qm91bmNlPC9zcGFuPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImJvdW5jZUxhYmVsICE9PSdCb3VuY2VkIEZvb3RmYWxsJ1wiPnt7Ym91bmNlTGFiZWwgfCB0aXRsZWNhc2V9fTwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPCEtLSBCb3R0b20gUmlnaHQgUXVhZHJhbnQgLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicXVhZHJhbnRcIiBpZD1cInE0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPkxvdyA8c3BhbiAqbmdJZj1cImZvb3RmYWxsTGFiZWw9PT0nQm91bmNlZCBGb290ZmFsbCdcIj5Cb3VuY2U8L3NwYW4+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZm9vdGZhbGxMYWJlbCAhPT0nQm91bmNlZCBGb290ZmFsbCdcIj57e2Zvb3RmYWxsTGFiZWwgfCB0aXRsZWNhc2V9fTwvc3Bhbj4sIEhpZ2ggPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYm91bmNlTGFiZWw9PT0nQm91bmNlZCBGb290ZmFsbCdcIj5Cb3VuY2U8L3NwYW4+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYm91bmNlTGFiZWwgIT09J0JvdW5jZWQgRm9vdGZhbGwnXCI+e3tib3VuY2VMYWJlbHwgdGl0bGVjYXNlfX08L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBwb2ludCBvZiBwb2ludHNcIiBjbGFzcz1cInBvaW50XCIgW25nU3R5bGVdPVwieyd0b3AnOiBwb2ludC50b3AgKyAnJScsICdsZWZ0JzogcG9pbnQubGVmdCArICclJ31cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIiAoY2xpY2spPVwidG9nZ2xlVG9vbHRpcChwb2ludC5uYW1lKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkb3RcIiA+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBDbGlja2FibGUgbGFiZWwgdGhhdCB0b2dnbGVzIHRoZSB0b29sdGlwIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbCB6LTEgbXQtNFwiICBzdHlsZT1cImZvbnQtc2l6ZTogMTBweCAhaW1wb3J0YW50O1wiID5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7IHBvaW50Lm5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gQ3VzdG9tIFRvb2x0aXAgUG9wdXAgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRvb2x0aXAtcG9wdXAgei01XCIgKm5nSWY9XCJhY3RpdmVUb29sdGlwID09PSBwb2ludC5uYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9vbHRpcC1jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cInRleHQtd2hpdGUgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic3RvcmVWaWV3KHBvaW50LnN0b3JlSWQpXCI+e3sgcG9pbnQubmFtZSB9fTwvaDM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwPkF2ZyB7e2Zvb3RmYWxsTGFiZWwgfCB0aXRsZWNhc2V9fToge3sgcG9pbnQuYXZnRm9vdGZhbGwgfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibXktMlwiPk9wZW4gVGltZTogPHN0cm9uZz57eyBwb2ludC5vcGVuVGltZSB9fTwvc3Ryb25nPjwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHA+Q2xvc2UgVGltZTogPHN0cm9uZz57eyBwb2ludC5jbG9zZVRpbWUgfX08L3N0cm9uZz48L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b29sdGlwLWFycm93XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPCEtLSBBZGQgbW9yZSBwb2ludHMgaGVyZSAtLT5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cInN0b3JlSWRhcnJheT8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY29sLW1kLTYgbXQtM1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBweC01IGJvcmRlci0wIHB0LTNcIj5cclxuICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlLXRleHQgbWItMlwiPlpvbmUgRHdlbGwgVGltZSBTcGxpdCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwiT3ZlcmFsbCB6b25lIGNvbmNlbnRyYXRpb24gYW5kIGF2ZXJhZ2UgZHdlbGwgdGltZSBhY3Jvc3Mgc2VsZWN0ZWQgc3RvcmVzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzE0MzJfODAwMzUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDY1IDEwLjY2NjZWNy45OTk5Mk04LjAwMDY1IDUuMzMzMjVIOC4wMDczMk0xNC42NjczIDcuOTk5OTJDMTQuNjY3MyAxMS42ODE4IDExLjY4MjYgMTQuNjY2NiA4LjAwMDY1IDE0LjY2NjZDNC4zMTg3NSAxNC42NjY2IDEuMzMzOTggMTEuNjgxOCAxLjMzMzk4IDcuOTk5OTJDMS4zMzM5OCA0LjMxODAyIDQuMzE4NzUgMS4zMzMyNSA4LjAwMDY1IDEuMzMzMjVDMTEuNjgyNiAxLjMzMzI1IDE0LjY2NzMgNC4zMTgwMiAxNC42NjczIDcuOTk5OTJaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTQzMl84MDAzNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc3ViIG1iLTJcIj57e2hlYWRlckRhdGE/LmRhdGU/LnN0YXJ0RGF0ZSB8IGRhdGU6J2RkIE1NTSwgeXl5eSd9fSDigJMge3toZWFkZXJEYXRhPy5kYXRlPy5lbmREYXRlIHwgZGF0ZTonZGQgTU1NLCB5eXl5J319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImdvVG9ab25lKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saWdodC1wcmltYXJ5MSByb3VuZGVkLTMgdGV4dC1ub3dyYXAgYm9yZGVyLXZhbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPkdvIHRvIFpvbmVzPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjYWxzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlLWNvbnRhaW5lciBwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbWcgIHNyYz1cImFzc2V0cy90YW5nby9JbWFnZXMvem9uZS1pbWcuc3ZnXCIgYWx0PVwiU3RvcmUgTGF5b3V0XCIgY2xhc3M9XCJweC01IGltZy1zcmMgbXktMyBiYWNrZ3JvdW5kLWltYWdlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxpbWcgKm5nSWY9XCJ6b25lRHdlbGxUaW1lU3BsaXREYXRhWzBdPy56b25lTmFtZSA9PT0nT3ZlcmFsbCBTdG9yZSdcIiBzcmM9XCJhc3NldHMvdGFuZ28vSW1hZ2VzL3pvbmUtaW1nMS5zdmdcIiBhbHQ9XCJTdG9yZSBMYXlvdXRcIiBjbGFzcz1cInB4LTUgaW1nLXNyYyBteS0zIGJhY2tncm91bmQtaW1hZ2VcIiAvPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjZW50ZXJlZFwiPkNlbnRlcmVkPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cIm92ZXJsYXktY29udGVudFwiICpuZ0Zvcj1cImxldCBwb2ludCBvZiB6b25lRHdlbGxUaW1lU3BsaXREYXRhXCI+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInpvbmVEd2VsbFRpbWVTcGxpdERhdGFbMF0/LnpvbmVOYW1lICE9PSdPdmVyYWxsIFN0b3JlJ1wiIGNsYXNzPVwidG9wLXpvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgdGV4dC16b25lXCI+e3t6b25lRHdlbGxUaW1lU3BsaXREYXRhWzBdPy56b25lTmFtZSA/IHpvbmVEd2VsbFRpbWVTcGxpdERhdGFbMF0/LnpvbmVOYW1lIDonRnJvbnQnfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtem9uZS12YWxcIj4gQ29uYzoge3sgem9uZUR3ZWxsVGltZVNwbGl0RGF0YVswXT8uY29uY2VudHJhdGlvblJhdGUgPyB6b25lRHdlbGxUaW1lU3BsaXREYXRhWzBdPy5jb25jZW50cmF0aW9uUmF0ZTonLS0nIH19JSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXpvbmUtdmFsXCI+RHdlbGwgdGltZToge3sgem9uZUR3ZWxsVGltZVNwbGl0RGF0YVswXT8uZHdlbGxUaW1lID8gem9uZUR3ZWxsVGltZVNwbGl0RGF0YVswXT8uZHdlbGxUaW1lIDonLS0nIH19IE1pbnM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ6b25lRHdlbGxUaW1lU3BsaXREYXRhWzBdPy56b25lTmFtZSA9PT0nT3ZlcmFsbCBTdG9yZSdcIiBjbGFzcz1cImNlbnRlcmVkLXpvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHRleHQtem9uZVwiPnt7em9uZUR3ZWxsVGltZVNwbGl0RGF0YVswXT8uem9uZU5hbWUgPyB6b25lRHdlbGxUaW1lU3BsaXREYXRhWzBdPy56b25lTmFtZSA6J0Zyb250J319PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC16b25lLXZhbFwiPiBDb25jOiB7eyB6b25lRHdlbGxUaW1lU3BsaXREYXRhWzBdPy5jb25jZW50cmF0aW9uUmF0ZSA/IHpvbmVEd2VsbFRpbWVTcGxpdERhdGFbMF0/LmNvbmNlbnRyYXRpb25SYXRlOictLScgfX0lIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXpvbmUtdmFsXCI+RHdlbGwgdGltZToge3sgem9uZUR3ZWxsVGltZVNwbGl0RGF0YVswXT8uZHdlbGxUaW1lID8gem9uZUR3ZWxsVGltZVNwbGl0RGF0YVswXT8uZHdlbGxUaW1lOictLScgfX0gTWluczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiem9uZUR3ZWxsVGltZVNwbGl0RGF0YVswXT8uem9uZU5hbWUgIT09J092ZXJhbGwgU3RvcmUnXCIgY2xhc3M9XCJib3R0b20tem9uZSBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHRleHQtem9uZVwiPnt7em9uZUR3ZWxsVGltZVNwbGl0RGF0YVsxXT8uem9uZU5hbWUgPyB6b25lRHdlbGxUaW1lU3BsaXREYXRhWzJdPy56b25lTmFtZSAgOiAnQmFjayd9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtem9uZS12YWxcIj4gQ29uYzoge3sgem9uZUR3ZWxsVGltZVNwbGl0RGF0YVsxXT8uY29uY2VudHJhdGlvblJhdGUgPyB6b25lRHdlbGxUaW1lU3BsaXREYXRhWzJdPy5jb25jZW50cmF0aW9uUmF0ZTonLS0nIH19JSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC16b25lLXZhbFwiPkR3ZWxsIHRpbWU6IHt7IHpvbmVEd2VsbFRpbWVTcGxpdERhdGFbMV0/LmR3ZWxsVGltZSA/IHpvbmVEd2VsbFRpbWVTcGxpdERhdGFbMl0/LmR3ZWxsVGltZTonLS0nfX0gTWluczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwhLS0gPGltZyBjbGFzcz1cInB4LTUgaW1nLXNyYyBtYi0zXCIgc3JjPVwiYXNzZXRzL3RhbmdvL0ltYWdlcy96b25lLWltZy5zdmdcIiBhbHQ9XCJcIj4gLS0+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBweC01IGJvcmRlci0wIHB0LTNcIj5cclxuICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0bGUtdGV4dCBtYi0yXCI+U3RvcmUgT3BlcmF0aW9uc1xyXG4gICAgICAgICAgICAgICAgPHNwYW4gPiBcclxuICAgICAgICAgICAgICAgIDxzdmcgbmdiVG9vbHRpcD1cIkF2ZyBzdG9yZSBvcGVuICYgY2xvc2UgdGltZSBhY3Jvc3MgdGhlIHNlbGVjdGVkIHN0b3Jlc1wiIHBsYWNlbWVudD1cInRvcFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiID5cclxuICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzE0MzJfODAwMzUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwNjUgMTAuNjY2NlY3Ljk5OTkyTTguMDAwNjUgNS4zMzMyNUg4LjAwNzMyTTE0LjY2NzMgNy45OTk5MkMxNC42NjczIDExLjY4MTggMTEuNjgyNiAxNC42NjY2IDguMDAwNjUgMTQuNjY2NkM0LjMxODc1IDE0LjY2NjYgMS4zMzM5OCAxMS42ODE4IDEuMzMzOTggNy45OTk5MkMxLjMzMzk4IDQuMzE4MDIgNC4zMTg3NSAxLjMzMzI1IDguMDAwNjUgMS4zMzMyNUMxMS42ODI2IDEuMzMzMjUgMTQuNjY3MyA0LjMxODAyIDE0LjY2NzMgNy45OTk5MlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTQzMl84MDAzNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc3ViIG1iLTJcIj57e2hlYWRlckRhdGE/LmRhdGU/LnN0YXJ0RGF0ZSB8IGRhdGU6J2RkIE1NTSwgeXl5eSd9fSDigJMge3toZWFkZXJEYXRhPy5kYXRlPy5lbmREYXRlIHwgZGF0ZTonZGQgTU1NLCB5eXl5J319PC9zcGFuPlxyXG4gICAgICAgIDwvaDM+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgICA8IS0tIDxidXR0b24gIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGlnaHQtcHJpbWFyeTEgcm91bmRlZC0zIHRleHQtbm93cmFwIGJvcmRlci12YWxcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+R28gdG8gVHJheDwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj4gLS0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyB0ZXh0LWNlbnRlciBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPjwhLS17e2dldENhcmREYXRhPy5yZXZlbnVlPy52YWx1ZSA/PyAnLS0nfX0gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS0yXCI+IDxzcGFuIGNsYXNzPVwibGVmdC1jYXJkLWNvdW50LXRpdGxlXCI+e3tzdG9yZU9wZXJhdGlvbkRhdGE/Lm92ZXJhbGw/LmF2Z09wZW5UaW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP3N0b3JlT3BlcmF0aW9uRGF0YT8ub3ZlcmFsbD8uYXZnT3BlblRpbWU6Jy0tJyB9fTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPjxzcGFuIGNsYXNzPVwic3ViLWhlYWRlclwiPkF2Zy4gT3BlbiBUaW1lPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBtdC01IG1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIzMjZcIiBoZWlnaHQ9XCIyXCIgdmlld0JveD1cIjAgMCAzMjYgMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaW5lIHkxPVwiMC43NVwiIHgyPVwiMzU2XCIgeTI9XCIwLjc1XCIgc3Ryb2tlPVwiI0QwRDVERFwiIC8+XHJcbiAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyB0ZXh0LWNlbnRlciBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPjwhLS17e2dldENhcmREYXRhPy5yZXZlbnVlPy52YWx1ZSA/PyAnLS0nfX0gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS0yXCI+IDxzcGFuIGNsYXNzPVwibGVmdC1jYXJkLWNvdW50LXRpdGxlXCI+e3tzdG9yZU9wZXJhdGlvbkRhdGE/Lm92ZXJhbGw/LmF2Z0Nsb3NlVGltZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID9zdG9yZU9wZXJhdGlvbkRhdGE/Lm92ZXJhbGw/LmF2Z0Nsb3NlVGltZTonLS0nIH19PC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+PHNwYW4gY2xhc3M9XCJzdWItaGVhZGVyXCI+QXZnLiBDbG9zZSBUaW1lPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBtdC0zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLWJvcmRlciBoLTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBlbGxpcHNlMSBib3JkZXItMCBweC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW4gXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxlZnQtY2FyZC1jb3VudC1oZWFkZXIxIHRleHQtZGVjb3JhdGlvbi11bmRlcmxpbmUgY3Vyc29yLXBvaW50ZXJcIiAgKGNsaWNrKT1cInN0b3JlVmlldyhzdG9yZU9wZXJhdGlvbkRhdGE/LnRvcExhdGVPcGVuPy5zdG9yZUlkKVwiPnt7c3RvcmVPcGVyYXRpb25EYXRhPy50b3BMYXRlT3Blbj8uc3RvcmVOYW1lID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZU9wZXJhdGlvbkRhdGE/LnRvcExhdGVPcGVuPy5zdG9yZU5hbWUgOictLSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ViLWhlYWRlciBtdC0yXCI+VG9wIExhdGUgT3Blbjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHAtMCBoLTc1cHggbXQtMyBteC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj48IS0te3tnZXRDYXJkRGF0YT8ucmV2ZW51ZT8udmFsdWUgPz8gJy0tJ319IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS0xXCI+IDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImxlZnQtY2FyZC1jb3VudC1oZWFkZXIxXCI+e3tzdG9yZU9wZXJhdGlvbkRhdGE/LnRvcExhdGVPcGVuPy5hdmdTdG9yZU9wZW5UaW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/c3RvcmVPcGVyYXRpb25EYXRhPy50b3BMYXRlT3Blbj8uYXZnU3RvcmVPcGVuVGltZTonLS0nIH19PC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ViLWhlYWRlclwiPkF2Zy4gU3RvcmUgT3BlbmluZyBUaW1lPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IG10LTNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtYm9yZGVyIGgtMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGVsbGlwc2UxIGJvcmRlci0wIHB4LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtbiBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGVmdC1jYXJkLWNvdW50LWhlYWRlcjEgdGV4dC1kZWNvcmF0aW9uLXVuZGVybGluZSBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzdG9yZVZpZXcoc3RvcmVPcGVyYXRpb25EYXRhPy50b3BFYXJseUNsb3NlPy5zdG9yZUlkKVwiPnt7c3RvcmVPcGVyYXRpb25EYXRhPy50b3BFYXJseUNsb3NlPy5zdG9yZU5hbWUgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlT3BlcmF0aW9uRGF0YT8udG9wRWFybHlDbG9zZT8uc3RvcmVOYW1lIDonLS0nfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1Yi1oZWFkZXIgbXQtMlwiPlRvcCBFYXJseSBDbG9zZTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHAtMCBoLTc1cHggbXQtMyBteC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj48IS0te3tnZXRDYXJkRGF0YT8ucmV2ZW51ZT8udmFsdWUgPz8gJy0tJ319IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS0xXCI+IDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImxlZnQtY2FyZC1jb3VudC1oZWFkZXIxXCI+e3tzdG9yZU9wZXJhdGlvbkRhdGE/LnRvcEVhcmx5Q2xvc2U/LmF2Z1N0b3JlQ2xvc2VUaW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/c3RvcmVPcGVyYXRpb25EYXRhPy50b3BFYXJseUNsb3NlPy5hdmdTdG9yZUNsb3NlVGltZTonLS0nIH19PC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ViLWhlYWRlclwiPkF2Zy4gU3RvcmUgQ2xvc2luZyBUaW1lPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBtdC0zXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgbWItNVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTAgcHQtM1wiPlxyXG4gICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0bGUtdGV4dCBtYi0yXCI+U3VtbWFyeSBUYWJsZTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc3ViIG1iLTJcIj57e2hlYWRlckRhdGE/LmRhdGU/LnN0YXJ0RGF0ZSB8IGRhdGU6J2RkIE1NTSwgeXl5eSd9fSDigJMge3toZWFkZXJEYXRhPy5kYXRlPy5lbmREYXRlIHwgZGF0ZTonZGQgTU1NLCB5eXl5J319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHBvc2l0aW9uLXJlbGF0aXZlIG15LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMSBwb3NpdGlvbi1hYnNvbHV0ZSBtcy0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IG9wYWNpdHk9XCIwLjVcIiB4PVwiMTcuMDM2NVwiIHk9XCIxNS4xMjIzXCIgd2lkdGg9XCI4LjE1NTQ2XCIgaGVpZ2h0PVwiMlwiIHJ4PVwiMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJyb3RhdGUoNDUgMTcuMDM2NSAxNS4xMjIzKVwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48L3JlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExIDE5QzYuNTU1NTYgMTkgMyAxNS40NDQ0IDMgMTFDMyA2LjU1NTU2IDYuNTU1NTYgMyAxMSAzQzE1LjQ0NDQgMyAxOSA2LjU1NTU2IDE5IDExQzE5IDE1LjQ0NDQgMTUuNDQ0NCAxOSAxMSAxOVpNMTEgNUM3LjUzMzMzIDUgNSA3LjUzMzMzIDUgMTFDNSAxNC40NjY3IDcuNTMzMzMgMTcgMTEgMTdDMTQuNDY2NyAxNyAxNyAxNC40NjY3IDE3IDExQzE3IDcuNTMzMzMgMTQuNDY2NyA1IDExIDVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKGNoYW5nZSk9XCJzZWFyY2hEYXRhKClcIiBbKG5nTW9kZWwpXT1cInNlYXJjaFZhbHVlXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbCBwcy0xNCBtZS0yXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgcGxhY2Vob2xkZXI9XCJTZWFyY2hcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBmaWx0ZXIgU3RhcnQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxsaWItZmlsdGVycyBbZGF0YU9iamVjdF09XCJkYXRhT2JqZWN0XCIgKGFwcGxpZWRGaWx0ZXJzKT1cImFwcGx5RmlsdGVycygkZXZlbnQpXCI+PC9saWItZmlsdGVycz4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIGZpbHRlciBFbmQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFN1bSBCdXR0b24gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiAqbmdJZj1cIihzdG9yZUlkYXJyYXk/Lmxlbmd0aCA+IDEgJiYgaGVhZGVyRGF0YT8uZGF0ZT8uc3RhcnREYXRlICE9IGhlYWRlckRhdGE/LmRhdGU/LmVuZERhdGUpICYmICFub0RhdGEgJiYgIWxvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvblZhbHVlVHlwZSgnc3VtJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBteC0yIGJ0bi1vdXRsaW5lIGJ0bi1vdXRsaW5lLWRlZmF1bHQgcm91bmRlZC0zIHRleHQtbm93cmFwIGJvcmRlci12YWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2J0bi1saWdodCBidG4tcHJpbWFyeSB0ZXh0LXdoaXRlJzogdHlwZVZhbHVlID09PSAnc3VtJ31cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7J3N0cm9rZSc6IHR5cGVWYWx1ZSA9PT0gJ3N1bScgPyAnI0ZGRkZGRicgOiAnIzM0NDA1NCd9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05Ljk5OTM1IDQuMTY2NzVWMTUuODMzNE00LjE2NjAyIDEwLjAwMDFIMTUuODMyN1wiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiIFtuZ0NsYXNzXT1cInsndGV4dC13aGl0ZSc6IHR5cGVWYWx1ZSA9PT0gJ3N1bSd9XCI+U3VtPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG48IS0tIEF2ZXJhZ2UgQnV0dG9uIC0tPlxyXG4gPHNlY3Rpb24gKm5nSWY9XCIoc3RvcmVJZGFycmF5Py5sZW5ndGggPiAxICYmIGhlYWRlckRhdGE/LmRhdGU/LnN0YXJ0RGF0ZSAhPSBoZWFkZXJEYXRhPy5kYXRlPy5lbmREYXRlKSAmJiAhbm9EYXRhICYmICFsb2FkaW5nXCI+XHJcbjxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvblZhbHVlVHlwZSgnYXZlcmFnZScpXCJcclxuY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgbXgtMiBidG4tb3V0bGluZSBidG4tb3V0bGluZS1kZWZhdWx0IHJvdW5kZWQtMyB0ZXh0LW5vd3JhcCBib3JkZXItdmFsXCJcclxuW25nQ2xhc3NdPVwieydidG4tbGlnaHQgYnRuLXByaW1hcnkgdGV4dC13aGl0ZSc6IHR5cGVWYWx1ZSA9PT0gJ2F2ZXJhZ2UnfVwiPlxyXG48c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gIFtuZ1N0eWxlXT1cInsnc3Ryb2tlJzogdHlwZVZhbHVlID09PSAnYXZlcmFnZScgPyAnI0ZGRkZGRicgOiAnIzEwMTgyOCd9XCI+XHJcbiAgPHBhdGggZD1cIk0xNy41IDE3LjVIOC4zMzMzM0M1LjU4MzMzIDE3LjUgNC4yMDgzMyAxNy41IDMuMzU0MTcgMTYuNjQ1OEMyLjUgMTUuNzkxNyAyLjUgMTQuNDE2NyAyLjUgMTEuNjY2N1YyLjVNNSAxMEg1LjAwNzVNNy40OTkxNyAxMEg3LjUwNTgzTTkuOTk3NSAxMEgxMC4wMDQyTTEyLjQ5NTggMTBIMTIuNTAzM00xNC45OTQyIDEwSDE1LjAwMTdNMTcuNDkyNSAxMEgxNy41XCJcclxuICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgPHBhdGhcclxuICAgIGQ9XCJNNSA1LjgzMzQxQzUuNTYwODMgNC44OTg0MSA2LjMyMjUgNC4xNjY3NSA3LjQ5NDE3IDQuMTY2NzVDMTIuNDQ2NyA0LjE2Njc1IDkuNjYyNSAxNC4xNjY3IDE0Ljk4NSAxNC4xNjY3QzE2LjE2NSAxNC4xNjY3IDE2LjkyMTcgMTMuNDMwMSAxNy41IDEyLjUwMDFcIlxyXG4gICAgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuPC9zdmc+XHJcbjxzcGFuIGNsYXNzPVwibXMtMlwiIFtuZ0NsYXNzXT1cInsndGV4dC13aGl0ZSc6IHR5cGVWYWx1ZSA9PT0gJ2F2ZXJhZ2UnfVwiPkF2ZXJhZ2U8L3NwYW4+XHJcbjwvYnV0dG9uPlxyXG48L3NlY3Rpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIW5vRGF0YSAmJiAhbG9hZGluZ1wiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiZXhwb3J0WExTWCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBteC0yIGJ0bi1vdXRsaW5lIGJ0bi1vdXRsaW5lLWRlZmF1bHQgcm91bmRlZC0zIHRleHQtbm93cmFwIGJvcmRlci12YWxcIj48c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTcuNSAxMi41VjE1LjgzMzNDMTcuNSAxNi4yNzU0IDE3LjMyNDQgMTYuNjk5MyAxNy4wMTE4IDE3LjAxMThDMTYuNjk5MyAxNy4zMjQ0IDE2LjI3NTQgMTcuNSAxNS44MzMzIDE3LjVINC4xNjY2N0MzLjcyNDY0IDE3LjUgMy4zMDA3MiAxNy4zMjQ0IDIuOTg4MTYgMTcuMDExOEMyLjY3NTU5IDE2LjY5OTMgMi41IDE2LjI3NTQgMi41IDE1LjgzMzNWMTIuNU0xNC4xNjY3IDYuNjY2NjdMMTAgMi41TTEwIDIuNUw1LjgzMzMzIDYuNjY2NjdNMTAgMi41VjEyLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48c3BhbiBjbGFzcz1cIm1zLTJcIj5FeHBvcnQ8L3NwYW4+IDwvYnV0dG9uPlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibG9hZGluZ1wiIGNsYXNzPVwicm93IGxvYWRlciAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJub0RhdGFcIiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMiBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1ub2RhdGEtdGFibGVcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGExLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhLXRpdGxlXCI+Tm8gZGF0YSBmb3VuZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhLXN1YlwiPlRoZXJlIGlzIG5vIHJlc3VsdCBmb3IgdGhpcyBzdW1tYXJ5IHRhYmxlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhbm9EYXRhICYmICFsb2FkaW5nXCIgY2Fsc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidy0xMDAgdGFibGUgYm90dG9tLWJvcmRlciB0ZXh0LW5vd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvblNvcnQoJ3N0b3JlTmFtZScpXCI+U3RvcmUgTmFtZSA8c3ZnIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydGVkQ29sdW1uID09PSAnc3RvcmVOYW1lJyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0ZWRDb2x1bW4gPT09ICdzdG9yZU5hbWUnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgnc3RvcmVJZCcpXCI+U3RvcmUgSUQgPHN2ZyAgW25nQ2xhc3NdPVwic29ydGVkQ29sdW1uID09PSAnc3RvcmVJZCcgJiYgc29ydERpcmVjdGlvbiA9PT0gMSA/ICdyb3RhdGUnIDogJydcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydGVkQ29sdW1uID09PSAnc3RvcmVJZCcgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cInN0b3JlSWRhcnJheT8ubGVuZ3RoID09PSAxXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgnZGF0ZScpXCI+RGF0ZSA8c3ZnIFtuZ0NsYXNzXT1cInNvcnRlZENvbHVtbiA9PT0gJ2RhdGUnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRlZENvbHVtbiA9PT0gJ2RhdGUnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgnZm9vdGZhbGxDb3VudCcpXCI+Rm9vdGZhbGwgPHN2ZyBbbmdDbGFzc109XCJzb3J0ZWRDb2x1bW4gPT09ICdmb290ZmFsbENvdW50JyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0ZWRDb2x1bW4gPT09ICdmb290ZmFsbENvdW50JyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvblNvcnQoJ2JvdW5jZWRDb3VudCcpXCI+Qm91bmNlZCBGb290ZmFsbDxzdmcgW25nQ2xhc3NdPVwic29ydGVkQ29sdW1uID09PSAnYm91bmNlZENvdW50JyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0ZWRDb2x1bW4gPT09ICdib3VuY2VkQ291bnQnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgnZW5nYWdlcnNDb3VudCcpXCI+RW5nYWdlcnMgPHN2ZyBbbmdDbGFzc109XCJzb3J0ZWRDb2x1bW4gPT09ICdlbmdhZ2Vyc0NvdW50JyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0ZWRDb2x1bW4gPT09ICdlbmdhZ2Vyc0NvdW50JyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvblNvcnQoJ21pc3NlZE9wcG9ydHVuaXR5Q291bnQnKVwiPk1pc3NlZCBPcHBvcnR1bml0eTxzdmcgW25nQ2xhc3NdPVwic29ydGVkQ29sdW1uID09PSAnbWlzc2VkT3Bwb3J0dW5pdHlDb3VudCcgJiYgc29ydERpcmVjdGlvbiA9PT0gMSA/ICdyb3RhdGUnIDogJydcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydGVkQ29sdW1uID09PSAnbWlzc2VkT3Bwb3J0dW5pdHlDb3VudCcgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25Tb3J0KCdwb3RlbnRpYWxCdXllcnNDb3VudCcpXCI+UG90ZW50aWFsIEJ1eWVycyA8c3ZnIFtuZ0NsYXNzXT1cInNvcnRlZENvbHVtbiA9PT0gJ3BvdGVudGlhbEJ1eWVyc0NvdW50JyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0ZWRDb2x1bW4gPT09ICdwb3RlbnRpYWxCdXllcnNDb3VudCcgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25Tb3J0KCdjb252ZXJzaW9uUmF0ZScpXCI+Q29udmVyc2lvbiBSYXRlIDxzdmcgW25nQ2xhc3NdPVwic29ydGVkQ29sdW1uID09PSAnY29udmVyc2lvblJhdGUnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRlZENvbHVtbiA9PT0gJ2NvbnZlcnNpb25SYXRlJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvblNvcnQoJ2F2Z0R3ZWxsVGltZScpXCI+QXZnLkR3ZWxsIFRpbWUgPHN2ZyBbbmdDbGFzc109XCJzb3J0ZWRDb2x1bW4gPT09ICdhdmdEd2VsbFRpbWUnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRlZENvbHVtbiA9PT0gJ2F2Z0R3ZWxsVGltZScgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25Tb3J0KCdhdmdJbmZyYURvd250aW1lJylcIj5BdmcuSW5mcmEgRG93blRpbWUgPHN2ZyBbbmdDbGFzc109XCJzb3J0ZWRDb2x1bW4gPT09ICdhdmdJbmZyYURvd250aW1lJyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0ZWRDb2x1bW4gPT09ICdhdmdJbmZyYURvd250aW1lJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvblNvcnQoJ2JlbG93MTInKVwiPkJlbG93MTIgPHN2ZyBbbmdDbGFzc109XCJzb3J0ZWRDb2x1bW4gPT09ICdiZWxvdzEyJyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0ZWRDb2x1bW4gPT09ICdiZWxvdzEyJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvblNvcnQoJzEzLTE5JylcIj4xMy0xOSA8c3ZnIFtuZ0NsYXNzXT1cInNvcnRlZENvbHVtbiA9PT0gJzEzLTE5JyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0ZWRDb2x1bW4gPT09ICcxMy0xOScgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25Tb3J0KCcyMC0zMCcpXCI+MjAtMzAgPHN2ZyBbbmdDbGFzc109XCJzb3J0ZWRDb2x1bW4gPT09ICcyMC0zMCcgJiYgc29ydERpcmVjdGlvbiA9PT0gMSA/ICdyb3RhdGUnIDogJydcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydGVkQ29sdW1uID09PSAnMjAtMzAnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgnMzEtNDUnKVwiPjMxLTQ1IDxzdmcgW25nQ2xhc3NdPVwic29ydGVkQ29sdW1uID09PSAnMzEtNDUnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRlZENvbHVtbiA9PT0gJzMxLTQ1JyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvblNvcnQoJzQ2LTU5JylcIj40Ni01OSA8c3ZnIFtuZ0NsYXNzXT1cInNvcnRlZENvbHVtbiA9PT0gJzQ2LTU5JyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0ZWRDb2x1bW4gPT09ICc0Ni01OScgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25Tb3J0KCc2MCBhYm92ZScpXCI+NjAgYWJvdmUgPHN2ZyBbbmdDbGFzc109XCJzb3J0ZWRDb2x1bW4gPT09ICc2MCBhYm92ZScgJiYgc29ydERpcmVjdGlvbiA9PT0gMSA/ICdyb3RhdGUnIDogJydcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydGVkQ29sdW1uID09PSAnNjAgYWJvdmUnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgnbWFsZScpXCI+TWFsZSA8c3ZnIFtuZ0NsYXNzXT1cInNvcnRlZENvbHVtbiA9PT0gJ21hbGUnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRlZENvbHVtbiA9PT0gJ21hbGUnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgnZmVtYWxlJylcIj5GZW1hbGUgPHN2ZyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRlZENvbHVtbiA9PT0gJ2ZlbWFsZScgJiYgc29ydERpcmVjdGlvbiA9PT0gMSA/ICdyb3RhdGUnIDogJydcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydGVkQ29sdW1uID09PSAnZmVtYWxlJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IG9iaiBvZiBnZXRTdW1tYXJ5VGFibGVEYXRhO2xldCBpPWluZGV4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gKGNsaWNrKT1cInN0b3JlVmlldyhvYmopXCIgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1wcmltYXJ5IHRleHQtY2FwaXRhbGl6ZSB0ZXh0LWRlY29yYXRpb24tdW5kZXJsaW5lIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInN0b3JlVmlldyhvYmouc3RvcmVJZClcIj57e29iai5zdG9yZU5hbWV9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7b2JqLnN0b3JlSWR9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwib2JqPy5kYXRlXCI+e3tvYmo/LmRhdGUgfCBkYXRlOidNTU0gZGQsIHl5eXknfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e29iai5mb290ZmFsbENvdW50fX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e29iai5ib3VuY2VkQ291bnR9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7b2JqLmVuZ2FnZXJzQ291bnR9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7b2JqLm1pc3NlZE9wcG9ydHVuaXR5Q291bnR9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7b2JqLnBvdGVudGlhbEJ1eWVyc0NvdW50fX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e29iai5jb252ZXJzaW9uUmF0ZX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tvYmouYXZnRHdlbGxUaW1lfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e29iai5hdmdJbmZyYURvd250aW1lfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e29iai5iZWxvdzEyfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e29ialsnMTMtMTknXX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tvYmpbJzIwLTMwJ119fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7b2JqWyczMS00NSddfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e29ialtcIjQ2LTU5XCJdfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e29ialtcIjYwIGFib3ZlXCJdfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e29iai5tYWxlfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e29iai5mZW1hbGV9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxsaWItcGFnaW5hdGlvbiBbaXRlbXNQZXJQYWdlXT1cInBhZ2VTaXplXCIgW2N1cnJlbnRQYWdlXT1cIm9mZnNldFwiIFt0b3RhbEl0ZW1zXT1cInRvdGFsSXRlbXNcIlxyXG4gICAgICAgICAgICAgICAgW3BhZ2luYXRpb25TaXplc109XCJwYWdpbmF0aW9uU2l6ZXNcIiBbcGFnZVNpemVdPVwicGFnZVNpemVcIiAocGFnZUNoYW5nZSk9XCJvblBhZ2VDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAocGFnZVNpemVDaGFuZ2UpPVwib25QYWdlU2l6ZUNoYW5nZSgkZXZlbnQpXCI+PC9saWItcGFnaW5hdGlvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbjwvZGl2PlxyXG4iXX0=
|
|
1331
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhZmZpYy1hbmFseXNpcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYWZmaWMvc3JjL2xpYi9jb21wb25lbnRzL3RyYWZmaWMtYW5hbHlzaXMvdHJhZmZpYy1hbmFseXNpcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYWZmaWMvc3JjL2xpYi9jb21wb25lbnRzL3RyYWZmaWMtYW5hbHlzaXMvdHJhZmZpYy1hbmFseXNpcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQU1ULFNBQVMsRUFFVCxZQUFZLEVBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxLQUFLLEdBQUcsTUFBTSxxQkFBcUIsQ0FBQztBQUMzQyxPQUFPLEtBQUssS0FBSyxNQUFNLHdCQUF3QixDQUFDO0FBQ2hELE9BQU8sa0JBQWtCLE1BQU0scUNBQXFDLENBQUM7QUFDckUsT0FBTyxvQkFBb0IsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6RSxPQUFPLEtBQUssVUFBVSxNQUFNLDZCQUE2QixDQUFDO0FBRTFELE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRzFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc5QyxPQUFPLEtBQUssUUFBUSxNQUFNLFdBQVcsQ0FBQztBQUV0QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEtBQUssU0FBUyxNQUFNLFdBQVcsQ0FBQzs7Ozs7Ozs7Ozs7OztBQU92QyxNQUFNLE9BQU8sd0JBQXdCO0lBK0Z6QjtJQUNBO0lBQ0E7SUFBNEI7SUFBc0I7SUFDbEQ7SUFBK0I7SUFDL0I7SUFBOEI7SUFBNEI7SUFsRzVELFFBQVEs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QyxhQUFhLENBQUMsTUFBTSxFQUFFO1lBQ25ELElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1NBQzNCO0lBQ0gsQ0FBQzt3R0F6MkNVLHdCQUF3Qjs0RkFBeEIsd0JBQXdCLG1PQ2pDckMsdzZuS0Fpc0RBOzs0RkRocURhLHdCQUF3QjtrQkFMcEMsU0FBUzsrQkFDRSxzQkFBc0I7NFRBK0RoQyxrQkFBa0I7c0JBRGpCLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBNkNQLE9BQU87c0JBQXpDLFNBQVM7dUJBQUMsR0FBRyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTs7QUE0d0NuQyxTQUFTLG1CQUFtQixDQUFDLFFBQWdCLEVBQUUsTUFBYztJQUMzRCwyQ0FBMkM7SUFDM0MsTUFBTSxLQUFLLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDakMsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFN0IsMkNBQTJDO0lBQzNDLE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7SUFFdkQsK0RBQStEO0lBQy9ELE1BQU0sa0JBQWtCLEdBQUcsUUFBUSxDQUFDO0lBQ3BDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEdBQUcsa0JBQWtCLENBQUMsQ0FBQztJQUV6RSxPQUFPLGdCQUFnQixDQUFDO0FBQzFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBPbkluaXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE5nWm9uZSxcclxuICBFbGVtZW50UmVmLFxyXG4gIFJlbmRlcmVyMixcclxuICBWaWV3Q2hpbGQsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgSG9zdExpc3RlbmVyLCBBZnRlclZpZXdJbml0XHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0ICogYXMgYW01IGZyb20gXCJAYW1jaGFydHMvYW1jaGFydHM1XCI7XHJcbmltcG9ydCAqIGFzIGFtNXh5IGZyb20gXCJAYW1jaGFydHMvYW1jaGFydHM1L3h5XCI7XHJcbmltcG9ydCBhbTV0aGVtZXNfQW5pbWF0ZWQgZnJvbSBcIkBhbWNoYXJ0cy9hbWNoYXJ0czUvdGhlbWVzL0FuaW1hdGVkXCI7XHJcbmltcG9ydCBhbTV0aGVtZXNfUmVzcG9uc2l2ZSBmcm9tIFwiQGFtY2hhcnRzL2FtY2hhcnRzNS90aGVtZXMvUmVzcG9uc2l2ZVwiO1xyXG5pbXBvcnQgKiBhcyBhbTVwZXJjZW50IGZyb20gXCJAYW1jaGFydHMvYW1jaGFydHM1L3BlcmNlbnRcIjtcclxuaW1wb3J0IHsgVHJhZmZpY1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvdHJhZmZpYy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IE5nYk1vZGFsLCBOZ2JUb29sdGlwIH0gZnJvbSBcIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwXCI7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSB9IGZyb20gXCJ0YW5nby1hcHAtdWktZ2xvYmFsXCI7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBFeGNlbFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvZXhjZWwuc2VydmljZVwiO1xyXG5pbXBvcnQgKiBhcyBtYXBib3hnbCBmcm9tICdtYXBib3gtZ2wnO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tIFwidGFuZ28tYXBwLXVpLXNoYXJlZFwiO1xyXG5pbXBvcnQgeyBWaWRlb1VybENvbXBvbmVudCB9IGZyb20gXCIuLi92aWRlby11cmwvdmlkZW8tdXJsLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgKiBhcyBib290c3RyYXAgZnJvbSBcImJvb3RzdHJhcFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwibGliLXRyYWZmaWMtYW5hbHlzaXNcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3RyYWZmaWMtYW5hbHlzaXMuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybDogXCIuL3RyYWZmaWMtYW5hbHlzaXMuY29tcG9uZW50LnNjc3NcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIFRyYWZmaWNBbmFseXNpc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcclxuICBwcml2YXRlIGxpbmVyb290OiBhbTUuUm9vdDtcclxuICBwcml2YXRlIGJvdW5jZWRsaW5lcm9vdDogYW01LlJvb3Q7XHJcbiAgcHJpdmF0ZSBwb3RlbnRpYWxCdXllcnNsaW5lcm9vdDogYW01LlJvb3Q7XHJcbiAgcHJpdmF0ZSBlbmdhZ2Vyc2xpbmVyb290OiBhbTUuUm9vdDtcclxuICBzb3J0ZWRDb2x1bW46IGFueTtcclxuICBzb3J0RGlyZWN0aW9uOiBhbnk7XHJcbiAgcHJpdmF0ZSBjaGFydDogYW55O1xyXG4gIHByaXZhdGUgdG9vbHRpcEVsZW1lbnQ6IEhUTUxFbGVtZW50O1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG4gIGdldENhcmREYXRhOiBhbnkgPSBbXTtcclxuICBoZWF0TWFwRGF0YTogYW55ID0gW107XHJcbiAgZ2V0Q2FyZEdyYXBoRGF0YTogYW55O1xyXG4gIGdldFN1bW1hcnlUYWJsZURhdGE6IGFueTtcclxuICBpdGVtc1BlclBhZ2UgPSAxMDtcclxuICBjdXJyZW50UGFnZSA9IDE7XHJcbiAgdG90YWxJdGVtcyA9IDE7XHJcbiAgcGFnaW5hdGlvblNpemVzOmFueVtdID0gW107XHJcbiAgcGFnZVNpemUgPSAxMDtcclxuICBvZmZzZXQ6IG51bWJlciA9IDA7XHJcbiAgbGltaXQ6IG51bWJlciA9IDEwO1xyXG4gIGdldFJlY2FwVmlkZW9EYXRhOiBhbnk7XHJcbiAgdGFibGVvYmo6IGFueTtcclxuICBoZWF0TWFwcm9vdDogYW01LlJvb3Q7XHJcbiAgdmFsdWVUeXBlPVwiYWN0dWFsXCJcclxuICBkYXRlVHlwZT1cImRhaWx5XCI7XHJcbiAgcG9pbnRzOmFueSA9IFtdO1xyXG4gIGhlYWRlckRhdGE6IGFueTtcclxuICB0eXBlVmFsdWU6IGFueSA9J3N1bSc7XHJcbiAgdmFsdWVDb252ZXJzaW9uUmF0ZTogYW55O1xyXG4gIGNvbnZlcnNpb25WYWx1ZTogYW55PScnO1xyXG4gIHNlYXJjaFZhbHVlOiBhbnk7XHJcbiAgbG9hZGluZzogYm9vbGVhbiA9dHJ1ZTtcclxuICBub0RhdGE6IGJvb2xlYW4gPWZhbHNlO1xyXG4gIGNhcmRsb2FkaW5nOiBib29sZWFuID10cnVlO1xyXG4gIGNhcmROb2RhdGE6IGJvb2xlYW4gPWZhbHNlO1xyXG4gIGhlYXRsb2FkaW5nID0gdHJ1ZVxyXG4gIGhlYXRub0RhdGEgPSBmYWxzZVxyXG4gIHN0b3JlSWRhcnJheTogYW55ID1bXTtcclxuICBnZXRSZWNhcERhdGE6IGFueT1bXTtcclxuICBmb3JtOiBhbnk7XHJcbiAgZm9vdGZhbGxWYWx1ZTogYW55O1xyXG4gIGRhdGVMZW5ndGg6IG51bWJlcjtcclxuICBwZXJmb3JtYW5jZW5vRGF0YTogYm9vbGVhbiA9ZmFsc2U7XHJcbiAgcGVyZm9ybWFuY2VMb2FkaW5nOiBib29sZWFuID10cnVlO1xyXG4gIHpvbmVEd2VsbFRpbWVTcGxpdERhdGE6IGFueT1bXTtcclxuICBzdG9yZU9wZXJhdGlvbkRhdGE6IGFueT1bXTtcclxuICBmb290ZmFsbE5hbWU6IHN0cmluZz0nRm9vdGZhbGwnO1xyXG4gIGJvdW5jZUxhYmVsOiBhbnk7XHJcbiAgZm9vdGZhbGxMYWJlbDogYW55O1xyXG4gIGNvbFZhbHVlOiBhbnk7XHJcbiAgcmVjYXBsYW9kaW5nOiBib29sZWFuO1xyXG4gIHJlY2Fwbm9EYXRhOiBib29sZWFuO1xyXG4gIHJlY2Fwc0dyb3VwZWQ6IGFueVtdPVtdO1xyXG4gIGlzQXZlcmFnZTogYm9vbGVhbiA9IGZhbHNlOyAvLyBUb2dnbGUgc3RhdGUgZm9yIHRoZSBzd2l0Y2hcclxuICBpc0Rpc2FibGVkOiBib29sZWFuID1mYWxzZTtcclxuXHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcclxuICBoYW5kbGVDbGlja091dHNpZGUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGNvbnN0IGNsaWNrZWRJbnNpZGUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5jbG9zZXN0KCcudG9vbHRpcC1wb3B1cCwgLmxhYmVsJyk7XHJcbiAgICBpZiAoIWNsaWNrZWRJbnNpZGUpIHtcclxuICAgICAgdGhpcy5hY3RpdmVUb29sdGlwID0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcbiAgYWN0aXZlVG9vbHRpcDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIGF1TG9jYXRpb25zOiBhbnlbXSA9IFtdO1xyXG4gIG1hcE9wdGlvbnM6IGdvb2dsZS5tYXBzLk1hcE9wdGlvbnMgPSB7XHJcbiAgICBtYXBJZDogXCJERU1PX01BUF9JRFwiLFxyXG4gICAgY2VudGVyOiB7IGxhdDogMCwgbG5nOiAwIH0sICAvLyBJbml0aWFsIGNlbnRlclxyXG4gICAgem9vbTogMSxcclxuICB9O1xyXG5cclxuICBwZXJmb3JtYW5jZURhdGE6YW55ID0gW107XHJcbiAgbXBhbG9hZGluZyA9dHJ1ZTtcclxuICBtYXBub0RhdGE9IGZhbHNlO1xyXG4gIGZvb3RmYWxsZGF0YXNldHMgPSBbXHJcbiAgICB7IHZhbHVlOiAnZm9vdGZhbGwnLCBsYWJlbDogJ0Zvb3RmYWxsJyB9LFxyXG4gICAgeyB2YWx1ZTogJ2JvdW5jZWQnLCBsYWJlbDogJ0JvdW5jZWQgRm9vdGZhbGwnIH0sXHJcbiAgICB7IHZhbHVlOiAnZW5nYWdlcicsIGxhYmVsOiAnRW5nYWdlcnMnIH0sXHJcbiAgICB7IHZhbHVlOiAnbWlzc2VkT3Bwb3J0dW5pdHknLCBsYWJlbDogJ01pc3NlZCBPcHBvcnR1bml0eScgfSxcclxuICAgIHsgdmFsdWU6ICdwb3RlbnRpYWxCdXllcicsIGxhYmVsOiAnUG90ZW50aWFsIEJ1eWVyJyB9LFxyXG4gICAgeyB2YWx1ZTogJ2NvbnZlcnNpb24nLCBsYWJlbDogJ0NvbnZlcnNpb24nIH1cclxuICBdO1xyXG4gIGJvdW5jZWRhdGFzZXRzID0gW1xyXG4gICAgeyB2YWx1ZTogJ2Zvb3RmYWxsJywgbGFiZWw6ICdGb290ZmFsbCcgfSxcclxuICAgIHsgdmFsdWU6ICdib3VuY2VkJywgbGFiZWw6ICdCb3VuY2VkIEZvb3RmYWxsJyB9LFxyXG4gICAgeyB2YWx1ZTogJ2VuZ2FnZXInLCBsYWJlbDogJ0VuZ2FnZXJzJyB9LFxyXG4gICAgeyB2YWx1ZTogJ21pc3NlZE9wcG9ydHVuaXR5JywgbGFiZWw6ICdNaXNzZWQgT3Bwb3J0dW5pdHknIH0sXHJcbiAgICB7IHZhbHVlOiAncG90ZW50aWFsQnV5ZXInLCBsYWJlbDogJ1BvdGVudGlhbCBCdXllcicgfSxcclxuICAgIHsgdmFsdWU6ICdjb252ZXJzaW9uJywgbGFiZWw6ICdDb252ZXJzaW9uJyB9XHJcbiAgXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHpvbmU6IE5nWm9uZSxcclxuICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsXHJcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIscHJpdmF0ZSByb3V0ZXI6Um91dGVyLHByaXZhdGUgZXhjZWxTZXJ2aWNlOiBFeGNlbFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNlcnZpY2U6IFRyYWZmaWNTZXJ2aWNlLHB1YmxpYyBnczogR2xvYmFsU3RhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYscHJpdmF0ZSB0b2FzdDpUb2FzdFNlcnZpY2UsIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCxcclxuICApIHtcclxuICAgXHJcbiAgfVxyXG4gIEBWaWV3Q2hpbGQoXCJ0XCIsIHsgc3RhdGljOiBmYWxzZSB9KSB0b29sdGlwOiBOZ2JUb29sdGlwO1xyXG4gIHRvb2x0aXBWYWx1ZTogc3RyaW5nO1xyXG4gIGJvdW5jZVZhbHVlOmFueTtcclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIFxyXG4gICAgKG1hcGJveGdsIGFzIGFueSkuYWNjZXNzVG9rZW4gPSAncGsuZXlKMUlqb2lZbUZzWVdwcGRHRnVaMjhpTENKaElqb2lZMjB3WjJ4aWVtNTVNREZ4WVRKM2IyMXpiM0ZqTkhkd2F5Sjkubm5JSXp0N09lWWxZSHVmR0U4bEZXUSc7XHJcbiAgICB0aGlzLm9mZnNldCA9IDA7XHJcbiAgICB0aGlzLmxpbWl0PTEwO1xyXG4gICAgdGhpcy5ncy5kYXRhUmFuZ2VWYWx1ZVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCksIGRlYm91bmNlVGltZSgzMDApKVxyXG4gICAgICAuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZihkYXRhICE9PW51bGwgfHwgZGF0YT8uY2xpZW50ICE9PSBudWxsIHx8ICFkYXRhPy5zdG9yZXMubGVuZ3RoKXtcclxuICAgICAgICAvLyBPbmx5IHByb2Nlc3MgdGhlIGxhdGVzdCBkYXRhIGFmdGVyIGRlYm91bmNlIHRpbWVcclxuICAgICAgICB0aGlzLmhlYWRlckRhdGEgPSBkYXRhO1xyXG4gICAgICAgIHRoaXMudmFsdWVDb252ZXJzaW9uUmF0ZT0nJztcclxuICAgICAgICB0aGlzLmRhdGVMZW5ndGggPSBnZXREYXlzQmV0d2VlbkRhdGVzKGRhdGE/LmRhdGUuc3RhcnREYXRlLCBkYXRhPy5kYXRlLmVuZERhdGUpO1xyXG4gICAgICAgIGlmICh0aGlzLmRhdGVMZW5ndGggPiAyOClcclxuICAgICAgICAgIHRoaXMuZGF0ZVR5cGUgPSBcIm1vbnRobHlcIjtcclxuICAgICAgICBlbHNlIGlmICh0aGlzLmRhdGVMZW5ndGggPiA1KVxyXG4gICAgICAgICAgdGhpcy5kYXRlVHlwZSA9IFwid2Vla2x5XCI7XHJcbiAgICAgICAgZWxzZSBpZih0aGlzLmRhdGVMZW5ndGggPT09IDApXHJcbiAgICAgICAgICB0aGlzLmRhdGVUeXBlID0gXCJkYWlseVwiO1xyXG4gICAgICAgIHRoaXMudmFsdWVUeXBlPVwiYWN0dWFsXCI7XHJcbiAgICAgICAgdGhpcy50eXBlVmFsdWU9XCJzdW1cIlxyXG4gICAgICAgIHRoaXMuaXNBdmVyYWdlID0gZmFsc2VcclxuICAgICAgICB0aGlzLnN0b3JlSWRhcnJheSA9IHRoaXMuaGVhZGVyRGF0YT8uc3RvcmVzLmZpbHRlcigoc3RvcmU6IGFueSkgPT4gc3RvcmUuY2hlY2tlZCkubWFwKChzdG9yZTogYW55KSA9PiBzdG9yZS5zdG9yZUlkKVxyXG4gICAgICAgIHRoaXMudGFibGVvYmogPSB7XHJcbiAgICAgICAgICBmcm9tRGF0ZTogZGF0YT8uZGF0ZS5zdGFydERhdGUsXHJcbiAgICAgICAgICB0b0RhdGU6IGRhdGE/LmRhdGUuZW5kRGF0ZSxcclxuICAgICAgICAgIHN0b3JlSWQ6IGRhdGE/LnN0b3Jlcy5maWx0ZXIoKHN0b3JlOiBhbnkpID0+IHN0b3JlLmNoZWNrZWQpLm1hcCgoc3RvcmU6IGFueSkgPT4gc3RvcmUuc3RvcmVJZCksXHJcbiAgICAgICAgICBjbGllbnRJZDogZGF0YT8uY2xpZW50ID8gZGF0YT8uY2xpZW50IDonJyxcclxuICAgICAgICAgIHZhbHVlVHlwZTogdGhpcy52YWx1ZVR5cGUsXHJcbiAgICAgICAgICBkYXRlVHlwZTogdGhpcy5kYXRlVHlwZSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIFxyXG4gICAgICAgIHRoaXMuc2VydmljZS50b2dnbGVBdmVyYWdlKGZhbHNlKTtcclxuICAgICAgICAvLyBDYWxsIG1ldGhvZHMgdG8gdXBkYXRlIHRoZSB2aWV3XHJcbiAgICAgICAgdGhpcy5nZXRDYXJkKCk7XHJcbiAgICAgICAgdGhpcy5nZXRDYXJkR3JhcGgoKTtcclxuICAgICAgICB0aGlzLmdldFRhYmxlKCk7XHJcbiAgICAgICAgdGhpcy5wZXJmb3JtYW5jZSgpO1xyXG4gICAgICAgIHRoaXMuZ2V0Wm9uZSgpO1xyXG4gICAgICAgIHRoaXMuZ2V0Wm9uZVZhbHVlKCk7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5nZXRNYXAoKTtcclxuICAgICAgICB9LDEwMDApXHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKHRoaXMuc3RvcmVJZGFycmF5Py5sZW5ndGggPT09IDEpXHJcbiAgICAgICAgICB0aGlzLmdldFJlY2FwKCk7XHJcbiAgICAgICAgLy8gdGhpcy5pbml0TWFwKCk7XHJcbiAgICAgICAgdGhpcy50b29sdGlwVmFsdWUgPSBcIkRlZmF1bHQgVG9vbHRpcCBUZXh0XCI7XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMuc3RvcmVJZGFycmF5Py5sZW5ndGggPT09IDEgJiYgdGhpcy5oZWFkZXJEYXRhPy5kYXRlPy5zdGFydERhdGUgPT09IHRoaXMuaGVhZGVyRGF0YT8uZGF0ZT8uZW5kRGF0ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmlzRGlzYWJsZWQgPSB0cnVlXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmlzRGlzYWJsZWQgPSBmYWxzZVxyXG4gICAgICAgICAgfVxyXG59XHJcblxyXG4gICAgICB9KTtcclxuICAgIHRoaXMuZm9vdGZhbGxWYWx1ZSA9IHRoaXMuZm9vdGZhbGxkYXRhc2V0c1swXS52YWx1ZTtcclxuICAgIHRoaXMuYm91bmNlVmFsdWUgPSB0aGlzLmJvdW5jZWRhdGFzZXRzWzFdLnZhbHVlO1xyXG4gICAgdGhpcy5mb290ZmFsbExhYmVsID0gdGhpcy5mb290ZmFsbGRhdGFzZXRzWzBdLmxhYmVsO1xyXG4gICAgdGhpcy5ib3VuY2VMYWJlbCA9IHRoaXMuYm91bmNlZGF0YXNldHNbMV0ubGFiZWw7XHJcbiAgIFxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgLy8gSW5pdGlhbGl6ZSB0b29sdGlwcyBhZnRlciB0aGUgdmlldyBpcyBpbml0aWFsaXplZFxyXG4gICAgY29uc3QgdG9vbHRpcFRyaWdnZXJMaXN0ID0gW10uc2xpY2UuY2FsbChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1icy10b2dnbGU9XCJ0b29sdGlwXCJdJykpO1xyXG4gICAgdG9vbHRpcFRyaWdnZXJMaXN0LmZvckVhY2goZnVuY3Rpb24gKHRvb2x0aXBUcmlnZ2VyRWwpIHtcclxuICAgICAgbmV3IGJvb3RzdHJhcC5Ub29sdGlwKHRvb2x0aXBUcmlnZ2VyRWwpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGdldEZpbHRlcmVkQm91bmNlRGF0YXNldHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5ib3VuY2VkYXRhc2V0cy5maWx0ZXIoZGF0YXNldCA9PiBkYXRhc2V0LnZhbHVlICE9PSB0aGlzLmZvb3RmYWxsVmFsdWUpO1xyXG4gIH1cclxuICBcclxuICAvLyBGaWx0ZXIgdGhlIGZvb3RmYWxsIG9wdGlvbnMgd2hlbiB0aGUgYm91bmNlVmFsdWUgY2hhbmdlc1xyXG4gIGdldEZpbHRlcmVkRm9vdGZhbGxEYXRhc2V0cygpIHtcclxuICAgIHJldHVybiB0aGlzLmZvb3RmYWxsZGF0YXNldHMuZmlsdGVyKGRhdGFzZXQgPT4gZGF0YXNldC52YWx1ZSAhPT0gdGhpcy5ib3VuY2VWYWx1ZSk7XHJcbiAgfVxyXG4gIG9uVmFsdWVDaGFuZ2UoZXZ0OiBhbnkpIHtcclxuICAgIHRoaXMuZm9vdGZhbGxWYWx1ZSA9IGV2dC50YXJnZXQudmFsdWU7XHJcbmlmKGV2dC50YXJnZXQudmFsdWUgPT0gJ2Zvb3RmYWxsJylcclxuICB0aGlzLmZvb3RmYWxsTGFiZWwgPSAnRm9vdGZhbGwnXHJcbmVsc2UgaWYoZXZ0LnRhcmdldC52YWx1ZSA9PSAnYm91bmNlZCcpXHJcbiAgdGhpcy5mb290ZmFsbExhYmVsID0gJ0JvdW5jZWQgRm9vdGZhbGwnXHJcbmVsc2UgaWYoZXZ0LnRhcmdldC52YWx1ZSA9PSAnZW5nYWdlcicpXHJcbiAgdGhpcy5mb290ZmFsbExhYmVsID0gJ0VuZ2FnZXJzJ1xyXG5lbHNlIGlmKGV2dC50YXJnZXQudmFsdWUgPT0gJ21pc3NlZE9wcG9ydHVuaXR5JylcclxuICB0aGlzLmZvb3RmYWxsTGFiZWwgPSAnTWlzc2VkIE9wcG9ydHVuaXR5J1xyXG5lbHNlIGlmKGV2dC50YXJnZXQudmFsdWUgPT0gJ3BvdGVudGlhbEJ1eWVyJylcclxuICB0aGlzLmZvb3RmYWxsTGFiZWwgPSAnUG90ZW50aWFsIEJ1eWVyJ1xyXG5lbHNlIGlmKGV2dC50YXJnZXQudmFsdWUgPT0gJ2NvbnZlcnNpb24nKVxyXG4gIHRoaXMuZm9vdGZhbGxMYWJlbCA9ICdjb252ZXJzaW9uJ1xyXG4gICAgaWYodGhpcy5mb290ZmFsbFZhbHVlICE9PSB0aGlzLmJvdW5jZVZhbHVlKVxyXG4gICAgICB0aGlzLnBlcmZvcm1hbmNlKCk7XHJcbiAgICBlbHNlIFxyXG4gICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KCdTYW1lIHZhbHVlIG5vdCBmaWx0ZXJlZCcpXHJcbiAgfVxyXG4gIG9uQm91bmNlQ2hhbmdlKGV2dDogYW55KSB7XHJcbiAgICB0aGlzLmJvdW5jZVZhbHVlID0gZXZ0LnRhcmdldC52YWx1ZTtcclxuICAgIGlmKGV2dC50YXJnZXQudmFsdWUgPT0gJ2Zvb3RmYWxsJylcclxuICAgICAgdGhpcy5ib3VuY2VMYWJlbCA9ICdGb290ZmFsbCdcclxuICAgIGVsc2UgaWYoZXZ0LnRhcmdldC52YWx1ZSA9PSAnYm91bmNlZCcpXHJcbiAgICAgIHRoaXMuYm91bmNlTGFiZWwgPSAnQm91bmNlZCBGb290ZmFsbCdcclxuICAgIGVsc2UgaWYoZXZ0LnRhcmdldC52YWx1ZSA9PSAnZW5nYWdlcicpXHJcbiAgICAgIHRoaXMuYm91bmNlTGFiZWwgPSAnRW5nYWdlcnMnXHJcbiAgICBlbHNlIGlmKGV2dC50YXJnZXQudmFsdWUgPT0gJ21pc3NlZE9wcG9ydHVuaXR5JylcclxuICAgICAgdGhpcy5ib3VuY2VMYWJlbCA9ICdNaXNzZWQgT3Bwb3J0dW5pdHknXHJcbiAgICBlbHNlIGlmKGV2dC50YXJnZXQudmFsdWUgPT0gJ3BvdGVudGlhbEJ1eWVyJylcclxuICAgICAgdGhpcy5ib3VuY2VMYWJlbCA9ICdQb3RlbnRpYWwgQnV5ZXInXHJcbiAgICBlbHNlIGlmKGV2dC50YXJnZXQudmFsdWUgPT0gJ2NvbnZlcnNpb24nKVxyXG4gICAgICB0aGlzLmJvdW5jZUxhYmVsID0gJ2NvbnZlcnNpb24nXHJcbiAgICBpZih0aGlzLmZvb3RmYWxsVmFsdWUgIT09IHRoaXMuYm91bmNlVmFsdWUpXHJcbiAgICB0aGlzLnBlcmZvcm1hbmNlKCk7XHJcbiAgZWxzZSBcclxuICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoJ1NhbWUgdmFsdWUgbm90IGZpbHRlcmVkJylcclxuICB9XHJcbiAgY29udmVydFBlcmNlbnRUb1BpeGVscyhwZXJjZW50OiBzdHJpbmcsIG1heFBlcmNlbnQ6IG51bWJlciwgYmFzZURpbWVuc2lvbjogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIC8vIFJlbW92ZSB0aGUgJyUnIHNpZ24gYW5kIHBhcnNlIHRoZSB2YWx1ZVxyXG4gICAgY29uc3QgdmFsdWUgPSBwYXJzZUZsb2F0KHBlcmNlbnQucmVwbGFjZSgnJScsICcnKSk7XHJcbiAgICBpZiAoaXNOYU4odmFsdWUpKSByZXR1cm4gMDtcclxuICBcclxuICAgIC8vIENhbGN1bGF0ZSBwaXhlbCB2YWx1ZSBiYXNlZCBvbiB0aGUgbWF4aW11bSBwZXJjZW50YWdlIGFuZCBiYXNlIGRpbWVuc2lvblxyXG4gICAgcmV0dXJuICh2YWx1ZSAvIG1heFBlcmNlbnQpICogYmFzZURpbWVuc2lvbjtcclxuICB9XHJcbiAgXHJcblxyXG4gIGdldE1heFBlcmNlbnRhZ2UoZGF0YTogYW55W10sIGZpZWxkOiBzdHJpbmcpOiBudW1iZXIge1xyXG4gICAgLy8gRXh0cmFjdCBhbmQgcmV0dXJuIHRoZSBtYXhpbXVtIHBlcmNlbnRhZ2UgdmFsdWUgZnJvbSB0aGUgZmllbGRcclxuICAgIHJldHVybiBNYXRoLm1heCguLi5kYXRhLm1hcChpdGVtID0+IHBhcnNlRmxvYXQoaXRlbVtmaWVsZF0pIHx8IDApKTtcclxuICB9XHJcbiAgXHJcblxyXG5cclxuICAvLyBub3JtYWxpemVEYXRhKGRhdGE6IGFueVtdKTogYW55W10ge1xyXG4gIC8vICAgY29uc3QgbWF4VG9wUGVyY2VudCA9IE1hdGgubWF4KC4uLmRhdGEubWFwKGl0ZW0gPT4gcGFyc2VGbG9hdChpdGVtLnRvcC5yZXBsYWNlKCclJywgJycpKSkpO1xyXG4gIC8vICAgY29uc3QgbWF4TGVmdFBlcmNlbnQgPSBNYXRoLm1heCguLi5kYXRhLm1hcChpdGVtID0+IHBhcnNlRmxvYXQoaXRlbS5sZWZ0LnJlcGxhY2UoJyUnLCAnJykpKSk7XHJcbiAgXHJcbiAgLy8gICByZXR1cm4gZGF0YS5tYXAoaXRlbSA9PiAoe1xyXG4gIC8vICAgICAuLi5pdGVtLFxyXG4gIC8vICAgICB0b3A6IHRoaXMuc2NhbGVQZXJjZW50KGl0ZW0udG9wLCBtYXhUb3BQZXJjZW50KSArICclJyxcclxuICAvLyAgICAgbGVmdDogdGhpcy5zY2FsZVBlcmNlbnQoaXRlbS5sZWZ0LCBtYXhMZWZ0UGVyY2VudCkgKyAnJSdcclxuICAvLyAgIH0pKTtcclxuICAvLyB9XHJcbiAgXHJcbiAgc2NhbGVQZXJjZW50KHBlcmNlbnQ6IHN0cmluZywgbWF4UGVyY2VudDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHBlcmNlbnRWYWx1ZSA9IHBhcnNlRmxvYXQocGVyY2VudC5yZXBsYWNlKCclJywgJycpKTtcclxuICAgIHJldHVybiAoKHBlcmNlbnRWYWx1ZSAvIG1heFBlcmNlbnQpICogMTAwKS50b0ZpeGVkKDIpO1xyXG4gIH1cclxuLy8gVG9nZ2xlIHRoZSB0b29sdGlwIGRpc3BsYXlcclxudG9nZ2xlVG9vbHRpcChwb2ludE5hbWU6IHN0cmluZykge1xyXG4gIHRoaXMuYWN0aXZlVG9vbHRpcCA9IHRoaXMuYWN0aXZlVG9vbHRpcCA9PT0gcG9pbnROYW1lID8gbnVsbCA6IHBvaW50TmFtZTtcclxufVxyXG5cclxucGVyZm9ybWFuY2UoKXtcclxuICB0aGlzLnBlcmZvcm1hbmNlTG9hZGluZyA9IHRydWU7XHJcbiAgdGhpcy5wZXJmb3JtYW5jZW5vRGF0YSA9IGZhbHNlO1xyXG4gIGxldCBvYmogPSB7XHJcbiAgICBjbGllbnRJZDp0aGlzLmhlYWRlckRhdGE/LmNsaWVudCxcclxuICAgIGZyb21EYXRlOiB0aGlzLmhlYWRlckRhdGE/LmRhdGUuc3RhcnREYXRlLFxyXG4gICAgdG9EYXRlOiB0aGlzLmhlYWRlckRhdGE/LmRhdGUuZW5kRGF0ZSxcclxuICAgIHN0b3JlSWQ6IHRoaXMuaGVhZGVyRGF0YT8uc3RvcmVzLmZpbHRlcigoc3RvcmU6YW55KSA9PiBzdG9yZS5jaGVja2VkKS5tYXAoKHN0b3JlOmFueSkgPT4gc3RvcmUuc3RvcmVJZCksXHJcbiAgIHByb2Nlc3N0eXBlMTogdGhpcy5mb290ZmFsbFZhbHVlLFxyXG4gICBwcm9jZXNzdHlwZTIgOiB0aGlzLmJvdW5jZVZhbHVlXHJcbiAgfTtcclxuICB0aGlzLnNlcnZpY2UucGVyZm9ybWFuY2VNYXRyaXgob2JqKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICA/LnN1YnNjcmliZSh7XHJcbiAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgdGhpcy5wZXJmb3JtYW5jZURhdGEgPSByZXM/LmRhdGE/LnBlcmZvcm1hbmNlRGF0YVxyXG4gICAgICAgIC8vIHRoaXMucGVyZm9ybWFuY2VEYXRhID0gdGhpcy5ub3JtYWxpemVEYXRhKHRoaXMucGVyZm9ybWFuY2VEYXRhKTtcclxuICAgICAgICAvLyBDYWxjdWxhdGUgbWF4aW11bSBwZXJjZW50YWdlc1xyXG4gICAgICAgIC8vIGNvbnN0IG1heFRvcCA9IE1hdGgubWF4KC4uLnRoaXMucGVyZm9ybWFuY2VEYXRhLm1hcCgoaXRlbTphbnkpID0+IHBhcnNlRmxvYXQoaXRlbS50b3AucmVwbGFjZSgnJScsICcnKSkpKTtcclxuICAgICAgICAvLyBjb25zdCBtYXhMZWZ0ID0gTWF0aC5tYXgoLi4udGhpcy5wZXJmb3JtYW5jZURhdGEubWFwKChpdGVtOmFueSkgPT4gcGFyc2VGbG9hdChpdGVtLmxlZnQucmVwbGFjZSgnJScsICcnKSkpKTtcclxuICAgICAgICBcclxuICAgICAgICAvLyBDb252ZXJ0IHBlcmZvcm1hbmNlIGRhdGEgdG8gcGl4ZWwgdmFsdWVzXHJcbiAgICAgICAgdGhpcy5wb2ludHMgPSB0aGlzLnBlcmZvcm1hbmNlRGF0YS5tYXAoKGRhdGE6IGFueSkgPT4gKHtcclxuICAgICAgICAgIG5hbWU6IGRhdGEuc3RvcmVOYW1lLFxyXG4gICAgICAgICAgc3RvcmVJZDogZGF0YS5zdG9yZUlkLFxyXG4gICAgICAgICAgYXZnRm9vdGZhbGw6IGRhdGEuYXZnLFxyXG4gICAgICAgICAgb3BlblRpbWU6IGRhdGEuYXZnT3BlblRpbWUsXHJcbiAgICAgICAgICBjbG9zZVRpbWU6IGRhdGEuYXZnQ2xvc2VUaW1lLFxyXG4gICAgICAgICAgdG9wOiBkYXRhLnRvcCwgLy8gQXNzdW1pbmcgNTAwcHggYXMgdGhlIGJhc2UgaGVpZ2h0XHJcbiAgICAgICAgICBsZWZ0OiBkYXRhLmxlZnQgIC8vIEFzc3VtaW5nIDEwMDBweCBhcyB0aGUgYmFzZSB3aWR0aFxyXG4gICAgICAgIH0pKTsgXHJcbiAgICAgICAgdGhpcy5wZXJmb3JtYW5jZUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnBlcmZvcm1hbmNlbm9EYXRhID0gZmFsc2U7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5wZXJmb3JtYW5jZUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnBlcmZvcm1hbmNlbm9EYXRhID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0VG9vbHRpcFRleHQoKTogc3RyaW5nIHtcclxuICAgIC8vIExvZ2ljIHRvIGRldGVybWluZSB0aGUgdG9vbHRpcCB0ZXh0XHJcbiAgICByZXR1cm4gXCJEeW5hbWljIFRvb2x0aXAgVGV4dCBcIiArIG5ldyBEYXRlKCkudG9Mb2NhbGVUaW1lU3RyaW5nKCk7XHJcbiAgfVxyXG4gIGdldENhcmQoKSB7XHJcbiAgICB0aGlzLmhlYXRsb2FkaW5nID0gdHJ1ZVxyXG4gICAgdGhpcy5oZWF0bm9EYXRhID0gZmFsc2VcclxuICAgZGVsZXRlIHRoaXMudGFibGVvYmouZGF0ZVR5cGVcclxuICAgIHRoaXMuc2VydmljZVxyXG4gICAgICAuZ2V0Q2FyZExpc3QodGhpcy50YWJsZW9iailcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICA/LnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy5nZXRDYXJkRGF0YSA9IHJlcz8uZGF0YT8uY2FyZDtcclxuICAgICAgICAgICAgdGhpcy5oZWF0TWFwRGF0YSA9IHJlcz8uZGF0YT8uZnVubmVsQ2hhcnQ7XHJcbiAgICAgICAgICB0aGlzLmNvbnZlcnNpb25WYWx1ZSA9ICcnO1xyXG4gICAgICAgICAgICB0aGlzLnZhbHVlQ29udmVyc2lvblJhdGUgPSB0aGlzLmdldENhcmREYXRhPy5jb252ZXJzaW9uPy5yYXRlXHJcbiAgICAgICAgICAgIHRoaXMuaGVhdE1hcCgpO1xyXG4gICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0Q2FyZERhdGEgPVtdO1xyXG4gICAgICAgICAgICB0aGlzLmhlYXRNYXBEYXRhID1bXTtcclxuICAgICAgICAgIHRoaXMuaGVhdGxvYWRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgdGhpcy5oZWF0bm9EYXRhID0gdHJ1ZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5nZXRDYXJkRGF0YSA9W107XHJcbiAgICAgICAgICB0aGlzLmhlYXRNYXBEYXRhID1bXTtcclxuICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHt9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgZ2V0UmVjYXAoKSB7XHJcbiAgICB0aGlzLnJlY2FwbGFvZGluZyA9dHJ1ZTtcclxuICAgIHRoaXMucmVjYXBub0RhdGEgPWZhbHNlO1xyXG4gICAgZGVsZXRlIHRoaXMudGFibGVvYmoucHJvY2Vzc1R5cGU7IGRlbGV0ZSB0aGlzLnRhYmxlb2JqLm5vcm1hbGl6ZWREYXRhO1xyXG4gICAgIGRlbGV0ZSB0aGlzLnRhYmxlb2JqLmRhdGVUeXBlOyBkZWxldGUgdGhpcy50YWJsZW9iai5mcm9tRGF0ZTtcclxuICAgICBkZWxldGUgdGhpcy50YWJsZW9iai50b0RhdGU7IGRlbGV0ZSB0aGlzLnRhYmxlb2JqLnZhbHVlVHlwZTsgZGVsZXRlIHRoaXMudGFibGVvYmoucHJvY2Vzc1R5cGU7XHJcbiAgICAgZGVsZXRlIHRoaXMudGFibGVvYmouc2VhcmNoOyBkZWxldGUgdGhpcy50YWJsZW9iai5vZmZzZXQ7XHJcbiAgICAgZGVsZXRlIHRoaXMudGFibGVvYmoubGltaXQ7IGRlbGV0ZSB0aGlzLnRhYmxlb2JqLnNvcnRCeTsgZGVsZXRlIHRoaXMudGFibGVvYmouc29ydDtcclxuICAgICBkZWxldGUgdGhpcy50YWJsZW9iai5leHBvcnQ7XHJcbiAgICAgdGhpcy50YWJsZW9iai5yZWNhcFZpZGVvRGF0ZSA9IHRoaXMuaGVhZGVyRGF0YS5kYXRlLmVuZERhdGU7XHJcbiAgICB0aGlzLnNlcnZpY2VcclxuICAgICAgLmdldFJlY2FwVmlkZW8odGhpcy50YWJsZW9iailcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICA/LnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy5nZXRSZWNhcFZpZGVvRGF0YSA9IHJlcz8uZGF0YTtcclxuICAgICAgICAgICAgdGhpcy5nZXRSZWNhcERhdGEgPSByZXM/LmRhdGE/LnJlY2FwVmlkZW9EYXRhO1xyXG4gICAgICAgICAgICB0aGlzLmdyb3VwUmVjYXBzKCk7XHJcbiAgICAgICAgICAgIGlmKCF0aGlzLmdldFJlY2FwRGF0YS5sZW5ndGgpe1xyXG4gICAgICAgICAgICAgIHRoaXMucmVjYXBsYW9kaW5nID1mYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5yZWNhcG5vRGF0YSA9dHJ1ZTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnJlY2FwbGFvZGluZyA9ZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMucmVjYXBub0RhdGEgPWZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpOyAgICBcclxuICAgICAgICAgIH0gZWxzZXtcclxuICAgICAgICAgICAgdGhpcy5nZXRSZWNhcFZpZGVvRGF0YSA9W11cclxuICAgICAgICAgICAgdGhpcy5yZWNhcGxhb2RpbmcgPWZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnJlY2Fwbm9EYXRhID10cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB0aGlzLnJlY2FwbGFvZGluZyA9ZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnJlY2Fwbm9EYXRhID10cnVlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHt9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgZ3JvdXBSZWNhcHMoKSB7XHJcbiAgICB0aGlzLnJlY2Fwc0dyb3VwZWQgPSBbXTtcclxuICAgIGxldCBncm91cFNpemUgPSB0aGlzLmdldFJlY2FwRGF0YS5sZW5ndGggPT09IDEgPyAxIDogMjtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5nZXRSZWNhcERhdGEubGVuZ3RoOyBpICs9IGdyb3VwU2l6ZSkge1xyXG4gICAgICB0aGlzLnJlY2Fwc0dyb3VwZWQucHVzaCh0aGlzLmdldFJlY2FwRGF0YS5zbGljZShpLCBpICsgZ3JvdXBTaXplKSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNvbFZhbHVlID0gdGhpcy5nZXRSZWNhcERhdGEubGVuZ3RoID09PSAxID8gJ2NvbC1tZC0xMicgOiAnY29sLW1kLTYnO1xyXG4gIH1cclxuICB2aWRlb0NsaWNrKG9iajphbnkpe1xyXG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKFZpZGVvVXJsQ29tcG9uZW50LCB7XHJcbiAgICAgIGNlbnRlcmVkOiB0cnVlLFxyXG4gICAgICBzaXplOiBcImxnXCIsXHJcbiAgICAgIHNjcm9sbGFibGU6IHRydWUsXHJcbiAgICB9KTtcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnZpZGVvVXJsID0gb2JqO1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuZGF0ZT0gdGhpcy5oZWFkZXJEYXRhPy5kYXRlPy5lbmREYXRlXHJcbiAgICBtb2RhbFJlZi5yZXN1bHQudGhlbigocmVzdWx0OiBhbnkpID0+IHt9KTtcclxuICB9XHJcbiAgcHJldmlvdXNWYWx1ZTogYW55ID0gbnVsbDtcclxuICBjaGFuZ2VWYWx1ZShtZXRob2Q6IGFueSkge1xyXG4gICAgLy8gaWYgKHRoaXMucHJldmlvdXNWYWx1ZSA9PT0gbWV0aG9kKSB7XHJcbiAgICAvLyAgIC8vIElmIHRoZSBzYW1lIHZhbHVlIGlzIGNsaWNrZWQgYWdhaW4sIHJlc2V0IHRoZSB2YWx1ZXNcclxuICAgIC8vICAgdGhpcy5jb252ZXJzaW9uVmFsdWUgPSAnJztcclxuICAgIC8vICAgdGhpcy52YWx1ZUNvbnZlcnNpb25SYXRlID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy5wcmV2aW91c1ZhbHVlID0gbnVsbDsgLy8gUmVzZXQgcHJldmlvdXNWYWx1ZVxyXG4gICAgLy8gfSBlbHNlIHtcclxuICAgIC8vICAgLy8gT3RoZXJ3aXNlLCBzZXQgdGhlIG5ldyB2YWx1ZSBhbmQgdXBkYXRlIGNvbnZlcnNpb24gcmF0ZVxyXG4gICAgICB0aGlzLnByZXZpb3VzVmFsdWUgPSBtZXRob2Q7XHJcbiAgICAgIGlmICh0aGlzLnByZXZpb3VzVmFsdWUgPT09ICdwb3RlbnRpYWxCdXllcnMnKSB7XHJcbiAgICAgICAgdGhpcy5jb252ZXJzaW9uVmFsdWUgPSAnUG90ZW50aWFsIEJ1eWVycyc7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jb252ZXJzaW9uVmFsdWUgPSBtZXRob2Q7XHJcbiAgICAgIH1cclxuICBcclxuICAgICAgLy8gVXBkYXRlIGNvbnZlcnNpb24gcmF0ZXMgYmFzZWQgb24gdGhlIHNlbGVjdGVkIG1ldGhvZFxyXG4gICAgICBpZiAodGhpcy5wcmV2aW91c1ZhbHVlID09PSAnZm9vdGZhbGwnKSB7XHJcbiAgICAgICAgdGhpcy52YWx1ZUNvbnZlcnNpb25SYXRlID0gdGhpcy5nZXRDYXJkR3JhcGhEYXRhPy5jb252ZXJzaW9uPy5mb290ZmFsbC5yYXRlO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMucHJldmlvdXNWYWx1ZSA9PT0gJ2VuZ2FnZXJzJykge1xyXG4gICAgICAgIHRoaXMudmFsdWVDb252ZXJzaW9uUmF0ZSA9IHRoaXMuZ2V0Q2FyZEdyYXBoRGF0YT8uY29udmVyc2lvbj8uZW5nYWdlcnMucmF0ZTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnByZXZpb3VzVmFsdWUgPT09ICdwb3RlbnRpYWxCdXllcnMnKSB7XHJcbiAgICAgICAgdGhpcy52YWx1ZUNvbnZlcnNpb25SYXRlID0gdGhpcy5nZXRDYXJkR3JhcGhEYXRhPy5jb252ZXJzaW9uPy5wb3RlbnRpYWxCdXllcnMucmF0ZTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnByZXZpb3VzVmFsdWUgPT09ICdOb0IgRGVyaXZlZCcpIHtcclxuICAgICAgICB0aGlzLnZhbHVlQ29udmVyc2lvblJhdGUgPSB0aGlzLmdldENhcmRHcmFwaERhdGE/LmNvbnZlcnNpb24/Lm5vYi5ub2I7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy52YWx1ZUNvbnZlcnNpb25SYXRlID0gdGhpcy5nZXRDYXJkRGF0YT8uY29udmVyc2lvbj8ucmF0ZTtcclxuICAgICAgfVxyXG4gICAgLy8gfVxyXG4gIH1cclxuICBnZXRDYXJkR3JhcGgoKSB7XHJcbiAgICB0aGlzLmNhcmRsb2FkaW5nID10cnVlO1xyXG4gICAgdGhpcy5jYXJkTm9kYXRhID1mYWxzZTtcclxuICAgIGRlbGV0ZSB0aGlzLnRhYmxlb2JqLm5vcm1hbGl6ZWREYXRhO1xyXG4gICAgZGVsZXRlIHRoaXMudGFibGVvYmoucHJvY2Vzc1R5cGU7XHJcbiAgICB0aGlzLnRhYmxlb2JqLmRhdGVUeXBlID0gdGhpcy5kYXRlVHlwZTtcclxuICAgIHRoaXMuc2VydmljZVxyXG4gICAgICAuZ2V0Q2FyZEdyYXBoTGlzdCh0aGlzLnRhYmxlb2JqKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgID8uc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICB0aGlzLmdldENhcmRHcmFwaERhdGEgPSByZXM/LmRhdGE7XHJcbiAgICAgICAgICAgIHRoaXMuY2FyZGxvYWRpbmcgPWZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNhcmROb2RhdGEgPWZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmZvb3RmYWxsbGluZUNoYXJ0cygpO1xyXG4gICAgICAgICAgICB0aGlzLmJvdW5jZWRsaW5lQ2hhcnRzKCk7XHJcbiAgICAgICAgICAgIHRoaXMucG90ZW50aWFsbGluZUNoYXJ0cygpO1xyXG4gICAgICAgICAgICB0aGlzLmVuZ2FnZXJzbGluZUNoYXJ0cygpO1xyXG4gICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIH0gZWxzZSBpZighcmVzIHx8IHJlcy5jb2RlID09PSAyMDQpe1xyXG4gICAgICAgICAgICB0aGlzLmdldENhcmRHcmFwaERhdGE9W107XHJcbiAgICAgICAgICAgIHRoaXMuY2FyZGxvYWRpbmcgPWZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNhcmROb2RhdGEgPXRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7fSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRUYWJsZSgpIHtcclxuICAgIHRoaXMudGFibGVvYmoub2Zmc2V0ID0gdGhpcy5vZmZzZXQgPSB0aGlzLmN1cnJlbnRQYWdlIC0xO1xyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMubm9EYXRhID0gZmFsc2U7XHJcbiAgICBkZWxldGUgdGhpcy50YWJsZW9iai5wcm9jZXNzVHlwZTtcclxuICAgIGRlbGV0ZSB0aGlzLnRhYmxlb2JqLm5vcm1hbGl6ZWREYXRhO1xyXG4gICAgZGVsZXRlIHRoaXMudGFibGVvYmouZGF0ZVR5cGU7XHJcbiAgICAodGhpcy50YWJsZW9iai5saW1pdCA9IHRoaXMubGltaXQpO1xyXG4gICAgKHRoaXMudGFibGVvYmouc2VhcmNoID0gdGhpcy5zZWFyY2hWYWx1ZSksIFxyXG4gICAgICh0aGlzLnRhYmxlb2JqLnZhbHVlVHlwZSA9IHRoaXMudHlwZVZhbHVlKTtcclxuICAgICB0aGlzLnRhYmxlb2JqLmV4cG9ydCA9IGZhbHNlO1xyXG4gICAgdGhpcy5zZXJ2aWNlXHJcbiAgICAgIC5nZXRTdW1tYXJ5VGFibGVMaXN0KHRoaXMudGFibGVvYmopXHJcbiAgICAgID8ucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgID8uc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICB0aGlzLmdldFN1bW1hcnlUYWJsZURhdGEgPSByZXM/LmRhdGEuc3VtbWFyeURhdGE7XHJcbiAgICAgICAgICAgIHRoaXMudG90YWxJdGVtcyA9IHJlcy5kYXRhPy50b3RhbENvdW50O1xyXG4gICAgICAgICAgICB0aGlzLnNldFBhZ2luYXRpb25TaXplcygpO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5ub0RhdGEgPSBmYWxzZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0U3VtbWFyeVRhYmxlRGF0YSA9W11cclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMubm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gMDsgXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHt9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgc2VhcmNoRGF0YSgpIHtcclxuICAgIHRoaXMudGFibGVvYmouZnJvbURhdGU9IHRoaXMuaGVhZGVyRGF0YS5kYXRlLnN0YXJ0RGF0ZSxcclxuICAgIHRoaXMudGFibGVvYmoudG9EYXRlPSB0aGlzLmhlYWRlckRhdGEuZGF0ZS5lbmREYXRlLFxyXG4gICAgdGhpcy50YWJsZW9iai5zZWFyY2ggPSB0aGlzLnNlYXJjaFZhbHVlO1xyXG4gICAgZGVsZXRlIHRoaXMudGFibGVvYmoucmVjYXBWaWRlb0RhdGU7XHJcbiAgICB0aGlzLnRhYmxlb2JqLmV4cG9ydCA9IGZhbHNlO1xyXG4gICAgdGhpcy5vZmZzZXQgPSAxO1xyXG4gICAgdGhpcy50YWJsZW9iai5vZmZzZXQgPSB0aGlzLm9mZnNldCAtMTtcclxuICAgIHRoaXMubGltaXQ9MTA7XHJcbiAgICB0aGlzLmdldFRhYmxlKCk7XHJcbiAgfVxyXG5cclxuICBzZXRQYWdpbmF0aW9uU2l6ZXMoKSB7XHJcbiAgICBpZiAodGhpcy50b3RhbEl0ZW1zID4gMTApIHtcclxuICAgICAgdGhpcy5wYWdpbmF0aW9uU2l6ZXMgPSBbMTAsIDIwLCAzMF07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnBhZ2luYXRpb25TaXplcyA9IFt0aGlzLnRvdGFsSXRlbXNdOyAvLyBKdXN0IG9uZSBvcHRpb24gaWYgbGVzcyB0aGFuIDEwXHJcbiAgICB9XHJcbiAgICB0aGlzLnBhZ2VTaXplID0gdGhpcy5wYWdpbmF0aW9uU2l6ZXNbMF07XHJcbiAgfVxyXG4gIG9uUGFnZUNoYW5nZShwYWdlT2Zmc2V0OiBudW1iZXIpIHtcclxuICAgIHRoaXMub2Zmc2V0ID0gTnVtYmVyKHBhZ2VPZmZzZXQpO1xyXG4gICAgdGhpcy50YWJsZW9iai5vZmZzZXQgPSB0aGlzLm9mZnNldCAtMTtcclxuICAgICh0aGlzLnRhYmxlb2JqLmxpbWl0ID0gdGhpcy5saW1pdCksXHJcbiAgICAodGhpcy50YWJsZW9iai5zZWFyY2ggPSB0aGlzLnNlYXJjaFZhbHVlKSwgXHJcbiAgICAgKHRoaXMudGFibGVvYmoudmFsdWVUeXBlID0gdGhpcy50eXBlVmFsdWUpO1xyXG4gICAgdGhpcy50YWJsZW9iai5mcm9tRGF0ZT0gdGhpcy5oZWFkZXJEYXRhLmRhdGUuc3RhcnREYXRlLFxyXG4gICAgdGhpcy50YWJsZW9iai50b0RhdGU9IHRoaXMuaGVhZGVyRGF0YS5kYXRlLmVuZERhdGUsXHJcbiAgICB0aGlzLnRhYmxlb2JqLnNlYXJjaCA9IHRoaXMuc2VhcmNoVmFsdWU7XHJcbiAgICBkZWxldGUgdGhpcy50YWJsZW9iai5yZWNhcFZpZGVvRGF0ZTtcclxuICAgIHRoaXMudGFibGVvYmouZXhwb3J0ID0gZmFsc2U7XHJcbiAgICB0aGlzLnNlcnZpY2VcclxuICAgIC5nZXRTdW1tYXJ5VGFibGVMaXN0KHRoaXMudGFibGVvYmopXHJcbiAgICA/LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgPy5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMuZ2V0U3VtbWFyeVRhYmxlRGF0YSA9IHJlcz8uZGF0YS5zdW1tYXJ5RGF0YTtcclxuICAgICAgICAgIHRoaXMudG90YWxJdGVtcyA9IHJlcy5kYXRhPy50b3RhbENvdW50O1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7YGBcclxuICAgICAgICAgIHRoaXMubm9EYXRhID0gZmFsc2U7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZ2V0U3VtbWFyeVRhYmxlRGF0YSA9W11cclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5ub0RhdGEgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gMDsgXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGNvbXBsZXRlOiAoKSA9PiB7fSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25QYWdlU2l6ZUNoYW5nZShwYWdlU2l6ZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnBhZ2VTaXplID0gTnVtYmVyKHBhZ2VTaXplKTtcclxuICAgIHRoaXMubGltaXQgPSBOdW1iZXIocGFnZVNpemUpO1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XHJcbiAgICB0aGlzLm9mZnNldCA9IDA7XHJcbiAgICB0aGlzLnRhYmxlb2JqLmZyb21EYXRlPSB0aGlzLmhlYWRlckRhdGEuZGF0ZS5zdGFydERhdGUsXHJcbiAgICB0aGlzLnRhYmxlb2JqLnRvRGF0ZT0gdGhpcy5oZWFkZXJEYXRhLmRhdGUuZW5kRGF0ZSxcclxuICAgIHRoaXMudGFibGVvYmouc2VhcmNoID0gdGhpcy5zZWFyY2hWYWx1ZTtcclxuICAgIGRlbGV0ZSB0aGlzLnRhYmxlb2JqLnJlY2FwVmlkZW9EYXRlO1xyXG4gICAgdGhpcy50YWJsZW9iai5leHBvcnQgPSBmYWxzZTtcclxuICAgIHRoaXMuZ2V0VGFibGUoKTtcclxuICB9XHJcblxyXG4gIG9uVmFsdWVUeXBlKHR5cGU6YW55KXtcclxuICAgIHRoaXMudGFibGVvYmouZnJvbURhdGU9IHRoaXMuaGVhZGVyRGF0YS5kYXRlLnN0YXJ0RGF0ZSxcclxuICAgIHRoaXMudGFibGVvYmoudG9EYXRlPSB0aGlzLmhlYWRlckRhdGEuZGF0ZS5lbmREYXRlLFxyXG4gICAgZGVsZXRlIHRoaXMudGFibGVvYmoucmVjYXBWaWRlb0RhdGU7XHJcbiAgICB0aGlzLnRhYmxlb2JqLmV4cG9ydCA9IGZhbHNlO1xyXG4gICAgIHRoaXMudHlwZVZhbHVlID10eXBlO1xyXG4gICAgdGhpcy50YWJsZW9iai52YWx1ZVR5cGUgPXR5cGU7XHJcbiAgICB0aGlzLmdldFRhYmxlKCk7XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMubGluZXJvb3QpIHtcclxuICAgICAgICB0aGlzLmxpbmVyb290LmRpc3Bvc2UoKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5ib3VuY2VkbGluZXJvb3QpIHtcclxuICAgICAgICB0aGlzLmJvdW5jZWRsaW5lcm9vdC5kaXNwb3NlKCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMucG90ZW50aWFsQnV5ZXJzbGluZXJvb3QpIHtcclxuICAgICAgICB0aGlzLnBvdGVudGlhbEJ1eWVyc2xpbmVyb290LmRpc3Bvc2UoKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5lbmdhZ2Vyc2xpbmVyb290KSB7XHJcbiAgICAgICAgdGhpcy5lbmdhZ2Vyc2xpbmVyb290LmRpc3Bvc2UoKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5oZWF0TWFwcm9vdCkge1xyXG4gICAgICAgIHRoaXMuaGVhdE1hcHJvb3QuZGlzcG9zZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmludGVydmFsSWQpIHtcclxuICAgICAgICBjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWxJZCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICAvLyBjYXJkIGxpbmUgQ2hhcnRzIFN0YXJ0XHJcblxyXG4gIGZvb3RmYWxsbGluZUNoYXJ0cygpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjb25zdCBjaGFydERpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiRm9vdGZhbGxcIik7XHJcbiAgICAgIGlmICghY2hhcnREaXYpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMubGluZXJvb3QpIHtcclxuICAgICAgICB0aGlzLmxpbmVyb290LmRpc3Bvc2UoKTtcclxuICAgICAgfVxyXG4gICAgbGV0IHJvb3Q6IGFueTtcclxuICAgIHJvb3QgPSBhbTUuUm9vdC5uZXcoXCJGb290ZmFsbFwiKTtcclxuICAgIHJvb3Quc2V0VGhlbWVzKFtcclxuICAgICAgYW01dGhlbWVzX0FuaW1hdGVkLm5ldyhyb290KSxcclxuICAgICAgYW01dGhlbWVzX1Jlc3BvbnNpdmUubmV3KHJvb3QpLFxyXG4gICAgXSk7XHJcbiAgICBsZXQgY2hhcnQgPSByb290LmNvbnRhaW5lci5jaGlsZHJlbi5wdXNoKFxyXG4gICAgICBhbTV4eS5YWUNoYXJ0Lm5ldyhyb290LCB7XHJcbiAgICAgICAgcGFuWDogdHJ1ZSxcclxuICAgICAgICBwYW5ZOiB0cnVlLFxyXG4gICAgICAgIHdoZWVsWDogXCJwYW5YXCIsXHJcbiAgICAgICAgd2hlZWxZOiBcInpvb21YXCIsXHJcbiAgICAgICAgcGluY2hab29tWDogdHJ1ZSxcclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgLy8gQWRkIGRhdGFcclxuICAgIGxldCBkYXRhID0gdGhpcy5nZXRDYXJkR3JhcGhEYXRhPy5mb290ZmFsbD8uZGF0YS5tYXAoKGl0ZW06IGFueSkgPT4gKHtcclxuICAgICAgZGF0ZTogbmV3IERhdGUoaXRlbS5kYXRlKS5nZXRUaW1lKCksIC8vIENvbnZlcnQgZGF0ZSBzdHJpbmcgdG8gdGltZXN0YW1wXHJcbiAgICAgIHZhbHVlOiBOdW1iZXIoaXRlbS52YWx1ZSksXHJcbiAgICB9KSk7XHJcbiAgICAgLy8gRW5zdXJlIHRoYXQgZGF0YSBoYXMgYXQgbGVhc3QgMiBwb2ludHMgZm9yIGxpbmUgY2hhcnRcclxuICAgICBpZiAoZGF0YS5sZW5ndGggPT09IDEpIHtcclxuICAgICAgY29uc3QgZHVwbGljYXRlUG9pbnQgPSB7IC4uLmRhdGFbMF0gfTsgLy8gQ2xvbmUgdGhlIGV4aXN0aW5nIHBvaW50XHJcbiAgICAgIGR1cGxpY2F0ZVBvaW50LmRhdGUgKz0gMTsgLy8gQWRkIGEgc21hbGwgb2Zmc2V0IHRvIHRoZSBkYXRlXHJcbiAgICAgIGRhdGEucHVzaChkdXBsaWNhdGVQb2ludCk7IC8vIEFkZCB0aGUgZHVwbGljYXRlIHBvaW50IHRvIGRhdGFcclxuICAgIH1cclxuICAgIGxldCBjdXJzb3IgPSBjaGFydC5zZXQoXHJcbiAgICAgIFwiY3Vyc29yXCIsXHJcbiAgICAgIGFtNXh5LlhZQ3Vyc29yLm5ldyhyb290LCB7XHJcbiAgICAgICAgYmVoYXZpb3I6IFwibm9uZVwiLFxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIGN1cnNvci5saW5lWS5zZXQoXCJ2aXNpYmxlXCIsIGZhbHNlKTtcclxuICAgIC8vIENyZWF0ZSBheGVzXHJcbiAgICBsZXQgeEF4aXMgPSBjaGFydC54QXhlcy5wdXNoKFxyXG4gICAgICBhbTV4eS5EYXRlQXhpcy5uZXcocm9vdCwge1xyXG4gICAgICAgIG1heERldmlhdGlvbjogMC41LFxyXG4gICAgICAgIGJhc2VJbnRlcnZhbDogeyB0aW1lVW5pdDogXCJkYXlcIiwgY291bnQ6IDEgfSxcclxuICAgICAgICByZW5kZXJlcjogYW01eHkuQXhpc1JlbmRlcmVyWC5uZXcocm9vdCwgeyB9KSxcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICB4QXhpcy5nZXQoXCJyZW5kZXJlclwiKS5ncmlkLnRlbXBsYXRlLnNldChcImZvcmNlSGlkZGVuXCIsIHRydWUpO1xyXG4gICAgeEF4aXMuZ2V0KFwicmVuZGVyZXJcIikubGFiZWxzLnRlbXBsYXRlLnNldChcImZvcmNlSGlkZGVuXCIsIHRydWUpO1xyXG5cclxuICAgIGxldCB5QXhpcyA9IGNoYXJ0LnlBeGVzLnB1c2goXHJcbiAgICAgIGFtNXh5LlZhbHVlQXhpcy5uZXcocm9vdCwge1xyXG4gICAgICAgIHJlbmRlcmVyOiBhbTV4eS5BeGlzUmVuZGVyZXJZLm5ldyhyb290LCB7IH0pLFxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHlBeGlzLmdldChcInJlbmRlcmVyXCIpLmdyaWQudGVtcGxhdGUuc2V0KFwiZm9yY2VIaWRkZW5cIiwgdHJ1ZSk7XHJcbiAgICB5QXhpcy5nZXQoXCJyZW5kZXJlclwiKS5sYWJlbHMudGVtcGxhdGUuc2V0KFwiZm9yY2VIaWRkZW5cIiwgdHJ1ZSk7XHJcblxyXG4gICAgLy8gQ3JlYXRlIHNlcmllc1xyXG4gICAgbGV0IHNlcmllcyA9IGNoYXJ0LnNlcmllcy5wdXNoKFxyXG4gICAgICBhbTV4eS5MaW5lU2VyaWVzLm5ldyhyb290LCB7XHJcbiAgICAgICAgbmFtZTogXCJTZXJpZXNcIixcclxuICAgICAgICB4QXhpczogeEF4aXMsXHJcbiAgICAgICAgeUF4aXM6IHlBeGlzLFxyXG4gICAgICAgIHZhbHVlWUZpZWxkOiBcInZhbHVlXCIsXHJcbiAgICAgICAgdmFsdWVYRmllbGQ6IFwiZGF0ZVwiLFxyXG4gICAgICAgIHN0cm9rZTogYW01LmNvbG9yKDB4MDBhM2ZmKSwgLy8gU2V0IHRoZSBsaW5lIGNvbG9yIGhlcmUgKHJlZCBpbiB0aGlzIGNhc2UpXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgc2VyaWVzLmJ1bGxldHMucHVzaChmdW5jdGlvbiAoKSB7XHJcbiAgICAgIGxldCBidWxsZXRDaXJjbGUgPSBhbTUuQ2lyY2xlLm5ldyhyb290LCB7XHJcbiAgICAgICAgcmFkaXVzOiAwLFxyXG4gICAgICAgIGZpbGw6IHNlcmllcy5nZXQoXCJmaWxsXCIpXHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gYW01LkJ1bGxldC5uZXcocm9vdCwge1xyXG4gICAgICAgIHNwcml0ZTogYnVsbGV0Q2lyY2xlXHJcbiAgICAgIH0pXHJcbiAgICB9KVxyXG4gICAgc2VyaWVzLmRhdGEuc2V0QWxsKGRhdGEpO1xyXG4gICAgc2VyaWVzLnNldChcclxuICAgICAgXCJ0b29sdGlwXCIsXHJcbiAgICAgIGFtNS5Ub29sdGlwLm5ldyhyb290LCB7XHJcbiAgICAgICAgbGFiZWxUZXh0OiBcInt2YWx1ZVl9XCIsXHJcbiAgICAgICAgZ2V0RmlsbEZyb21TcHJpdGU6IGZhbHNlLCAvLyBQcmV2ZW50cyB0aGUgdG9vbHRpcCBmcm9tIGluaGVyaXRpbmcgY29sb3IgZnJvbSB0aGUgc3ByaXRlXHJcbiAgICAgICAgYmFja2dyb3VuZDogYW01LlJlY3RhbmdsZS5uZXcocm9vdCwge1xyXG4gICAgICAgICAgZmlsbDogYW01LmNvbG9yKDB4ZGFmMWZmKSwgLy8gU2V0IHRoZSB0b29sdGlwIGJhY2tncm91bmQgY29sb3IgaGVyZSAoYmx1ZSBpbiB0aGlzIGNhc2UpXHJcbiAgICAgICAgfSksXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgdGhpcy5saW5lcm9vdCA9IHJvb3Q7XHJcbiAgfSwwKVxyXG4gIH1cclxuICBib3VuY2VkbGluZUNoYXJ0cygpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjb25zdCBjaGFydERpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiQm91bmNlZFJhdGVcIik7XHJcbiAgICAgIGlmICghY2hhcnREaXYpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuYm91bmNlZGxpbmVyb290KSB7XHJcbiAgICAgICAgdGhpcy5ib3VuY2VkbGluZXJvb3QuZGlzcG9zZSgpO1xyXG4gICAgICB9XHJcbiAgICBsZXQgcm9vdDogYW55O1xyXG4gICAgcm9vdCA9IGFtNS5Sb290Lm5ldyhcIkJvdW5jZWRSYXRlXCIpO1xyXG4gICAgcm9vdC5zZXRUaGVtZXMoW1xyXG4gICAgICBhbTV0aGVtZXNfQW5pbWF0ZWQubmV3KHJvb3QpLFxyXG4gICAgICBhbTV0aGVtZXNfUmVzcG9uc2l2ZS5uZXcocm9vdCksXHJcbiAgICBdKTtcclxuICAgIGxldCBjaGFydCA9IHJvb3QuY29udGFpbmVyLmNoaWxkcmVuLnB1c2goXHJcbiAgICAgIGFtNXh5LlhZQ2hhcnQubmV3KHJvb3QsIHtcclxuICAgICAgICBwYW5YOiB0cnVlLFxyXG4gICAgICAgIHBhblk6IHRydWUsXHJcbiAgICAgICAgd2hlZWxYOiBcInBhblhcIixcclxuICAgICAgICB3aGVlbFk6IFwiem9vbVhcIixcclxuICAgICAgICBwaW5jaFpvb21YOiB0cnVlLFxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgICAvLyBBZGQgZGF0YVxyXG4gICAgbGV0IGRhdGEgPSB0aGlzLmdldENhcmRHcmFwaERhdGE/LmJvdW5jZWQ/LmRhdGEubWFwKChpdGVtOiBhbnkpID0+ICh7XHJcbiAgICAgIGRhdGU6IG5ldyBEYXRlKGl0ZW0uZGF0ZSkuZ2V0VGltZSgpLCAvLyBDb252ZXJ0IGRhdGUgc3RyaW5nIHRvIHRpbWVzdGFtcFxyXG4gICAgICB2YWx1ZTogTnVtYmVyKGl0ZW0udmFsdWUpLFxyXG4gICAgfSkpO1xyXG4gICAgbGV0IGN1cnNvciA9IGNoYXJ0LnNldChcclxuICAgICAgXCJjdXJzb3JcIixcclxuICAgICAgYW01eHkuWFlDdXJzb3IubmV3KHJvb3QsIHtcclxuICAgICAgICBiZWhhdmlvcjogXCJub25lXCIsXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgY3Vyc29yLmxpbmVZLnNldChcInZpc2libGVcIiwgZmFsc2UpO1xyXG4gICAgLy8gQ3JlYXRlIGF4ZXNcclxuICAgIGxldCB4QXhpcyA9IGNoYXJ0LnhBeGVzLnB1c2goXHJcbiAgICAgIGFtNXh5LkRhdGVBeGlzLm5ldyhyb290LCB7XHJcbiAgICAgICAgbWF4RGV2aWF0aW9uOiAwLjIsXHJcbiAgICAgICAgYmFzZUludGVydmFsOiB7IHRpbWVVbml0OiBcImRheVwiLCBjb3VudDogMSB9LFxyXG4gICAgICAgIHJlbmRlcmVyOiBhbTV4eS5BeGlzUmVuZGVyZXJYLm5ldyhyb290LCB7IG1pbm9yR3JpZEVuYWJsZWQ6IHRydWUgfSksXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgeEF4aXMuZ2V0KFwicmVuZGVyZXJcIikuZ3JpZC50ZW1wbGF0ZS5zZXQoXCJmb3JjZUhpZGRlblwiLCB0cnVlKTtcclxuICAgIHhBeGlzLmdldChcInJlbmRlcmVyXCIpLmxhYmVscy50ZW1wbGF0ZS5zZXQoXCJmb3JjZUhpZGRlblwiLCB0cnVlKTtcclxuXHJcbiAgICBsZXQgeUF4aXMgPSBjaGFydC55QXhlcy5wdXNoKFxyXG4gICAgICBhbTV4eS5WYWx1ZUF4aXMubmV3KHJvb3QsIHtcclxuICAgICAgICByZW5kZXJlcjogYW01eHkuQXhpc1JlbmRlcmVyWS5uZXcocm9vdCwgeyBwYW46IFwiem9vbVwiIH0pLFxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHlBeGlzLmdldChcInJlbmRlcmVyXCIpLmdyaWQudGVtcGxhdGUuc2V0KFwiZm9yY2VIaWRkZW5cIiwgdHJ1ZSk7XHJcbiAgICB5QXhpcy5nZXQoXCJyZW5kZXJlclwiKS5sYWJlbHMudGVtcGxhdGUuc2V0KFwiZm9yY2VIaWRkZW5cIiwgdHJ1ZSk7XHJcblxyXG4gICAgLy8gQ3JlYXRlIHNlcmllc1xyXG4gICAgbGV0IHNlcmllcyA9IGNoYXJ0LnNlcmllcy5wdXNoKFxyXG4gICAgICBhbTV4eS5MaW5lU2VyaWVzLm5ldyhyb290LCB7XHJcbiAgICAgICAgbmFtZTogXCJTZXJpZXNcIixcclxuICAgICAgICB4QXhpczogeEF4aXMsXHJcbiAgICAgICAgeUF4aXM6IHlBeGlzLFxyXG4gICAgICAgIHZhbHVlWUZpZWxkOiBcInZhbHVlXCIsXHJcbiAgICAgICAgdmFsdWVYRmllbGQ6IFwiZGF0ZVwiLFxyXG4gICAgICAgIHN0cm9rZTogYW01LmNvbG9yKDB4MDBhM2ZmKSwgLy8gU2V0IHRoZSBsaW5lIGNvbG9yIGhlcmUgKHJlZCBpbiB0aGlzIGNhc2UpXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgc2VyaWVzLmJ1bGxldHMucHVzaChmdW5jdGlvbiAoKSB7XHJcbiAgICAgIGxldCBidWxsZXRDaXJjbGUgPSBhbTUuQ2lyY2xlLm5ldyhyb290LCB7XHJcbiAgICAgICAgcmFkaXVzOiAwLFxyXG4gICAgICAgIGZpbGw6IHNlcmllcy5nZXQoXCJmaWxsXCIpXHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gYW01LkJ1bGxldC5uZXcocm9vdCwge1xyXG4gICAgICAgIHNwcml0ZTogYnVsbGV0Q2lyY2xlXHJcbiAgICAgIH0pXHJcbiAgICB9KVxyXG4gICAgc2VyaWVzLmRhdGEuc2V0QWxsKGRhdGEpO1xyXG4gICAgc2VyaWVzLnNldChcclxuICAgICAgXCJ0b29sdGlwXCIsXHJcbiAgICAgIGFtNS5Ub29sdGlwLm5ldyhyb290LCB7XHJcbiAgICAgICAgbGFiZWxUZXh0OiBcInt2YWx1ZVl9XCIsXHJcbiAgICAgICAgZ2V0RmlsbEZyb21TcHJpdGU6IGZhbHNlLCAvLyBQcmV2ZW50cyB0aGUgdG9vbHRpcCBmcm9tIGluaGVyaXRpbmcgY29sb3IgZnJvbSB0aGUgc3ByaXRlXHJcbiAgICAgICAgYmFja2dyb3VuZDogYW01LlJlY3RhbmdsZS5uZXcocm9vdCwge1xyXG4gICAgICAgICAgZmlsbDogYW01LmNvbG9yKDB4ZGFmMWZmKSwgLy8gU2V0IHRoZSB0b29sdGlwIGJhY2tncm91bmQgY29sb3IgaGVyZSAoYmx1ZSBpbiB0aGlzIGNhc2UpXHJcbiAgICAgICAgfSksXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgdGhpcy5ib3VuY2VkbGluZXJvb3QgPSByb290O1xyXG4gIH0sMClcclxuICB9XHJcblxyXG4gIHBvdGVudGlhbGxpbmVDaGFydHMoKSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgY2hhcnREaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIlBvdGVudGlhbEJ1eWVyc1wiKTtcclxuICAgICAgaWYgKCFjaGFydERpdikge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5wb3RlbnRpYWxCdXllcnNsaW5lcm9vdCkge1xyXG4gICAgICAgIHRoaXMucG90ZW50aWFsQnV5ZXJzbGluZXJvb3QuZGlzcG9zZSgpO1xyXG4gICAgICB9XHJcbiAgICBsZXQgcm9vdDogYW55O1xyXG4gICAgcm9vdCA9IGFtNS5Sb290Lm5ldyhcIlBvdGVudGlhbEJ1eWVyc1wiKTtcclxuICAgIHJvb3Quc2V0VGhlbWVzKFtcclxuICAgICAgYW01dGhlbWVzX0FuaW1hdGVkLm5ldyhyb290KSxcclxuICAgICAgYW01dGhlbWVzX1Jlc3BvbnNpdmUubmV3KHJvb3QpLFxyXG4gICAgXSk7XHJcbiAgICBsZXQgY2hhcnQgPSByb290LmNvbnRhaW5lci5jaGlsZHJlbi5wdXNoKFxyXG4gICAgICBhbTV4eS5YWUNoYXJ0Lm5ldyhyb290LCB7XHJcbiAgICAgICAgcGFuWDogdHJ1ZSxcclxuICAgICAgICBwYW5ZOiB0cnVlLFxyXG4gICAgICAgIHdoZWVsWDogXCJwYW5YXCIsXHJcbiAgICAgICAgd2hlZWxZOiBcInpvb21YXCIsXHJcbiAgICAgICAgcGluY2hab29tWDogdHJ1ZSxcclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgLy8gQWRkIGRhdGFcclxuICAgIGxldCBkYXRhID0gdGhpcy5nZXRDYXJkR3JhcGhEYXRhPy5wb3RlbnRpYWxCdXllcnM/LmRhdGEubWFwKFxyXG4gICAgICAoaXRlbTogYW55KSA9PiAoe1xyXG4gICAgICAgIGRhdGU6IG5ldyBEYXRlKGl0ZW0uZGF0ZSkuZ2V0VGltZSgpLCAvLyBDb252ZXJ0IGRhdGUgc3RyaW5nIHRvIHRpbWVzdGFtcFxyXG4gICAgICAgIHZhbHVlOiBOdW1iZXIoaXRlbS52YWx1ZSksXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgbGV0IGN1cnNvciA9IGNoYXJ0LnNldChcclxuICAgICAgXCJjdXJzb3JcIixcclxuICAgICAgYW01eHkuWFlDdXJzb3IubmV3KHJvb3QsIHtcclxuICAgICAgICBiZWhhdmlvcjogXCJub25lXCIsXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgY3Vyc29yLmxpbmVZLnNldChcInZpc2libGVcIiwgZmFsc2UpO1xyXG4gICAgLy8gQ3JlYXRlIGF4ZXNcclxuICAgIGxldCB4QXhpcyA9IGNoYXJ0LnhBeGVzLnB1c2goXHJcbiAgICAgIGFtNXh5LkRhdGVBeGlzLm5ldyhyb290LCB7XHJcbiAgICAgICAgbWF4RGV2aWF0aW9uOiAwLjIsXHJcbiAgICAgICAgYmFzZUludGVydmFsOiB7IHRpbWVVbml0OiBcImRheVwiLCBjb3VudDogMSB9LFxyXG4gICAgICAgIHJlbmRlcmVyOiBhbTV4eS5BeGlzUmVuZGVyZXJYLm5ldyhyb290LCB7IG1pbm9yR3JpZEVuYWJsZWQ6IHRydWUgfSksXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgeEF4aXMuZ2V0KFwicmVuZGVyZXJcIikuZ3JpZC50ZW1wbGF0ZS5zZXQoXCJmb3JjZUhpZGRlblwiLCB0cnVlKTtcclxuICAgIHhBeGlzLmdldChcInJlbmRlcmVyXCIpLmxhYmVscy50ZW1wbGF0ZS5zZXQoXCJmb3JjZUhpZGRlblwiLCB0cnVlKTtcclxuXHJcbiAgICBsZXQgeUF4aXMgPSBjaGFydC55QXhlcy5wdXNoKFxyXG4gICAgICBhbTV4eS5WYWx1ZUF4aXMubmV3KHJvb3QsIHtcclxuICAgICAgICByZW5kZXJlcjogYW01eHkuQXhpc1JlbmRlcmVyWS5uZXcocm9vdCwgeyBwYW46IFwiem9vbVwiIH0pLFxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHlBeGlzLmdldChcInJlbmRlcmVyXCIpLmdyaWQudGVtcGxhdGUuc2V0KFwiZm9yY2VIaWRkZW5cIiwgdHJ1ZSk7XHJcbiAgICB5QXhpcy5nZXQoXCJyZW5kZXJlclwiKS5sYWJlbHMudGVtcGxhdGUuc2V0KFwiZm9yY2VIaWRkZW5cIiwgdHJ1ZSk7XHJcblxyXG4gICAgLy8gQ3JlYXRlIHNlcmllc1xyXG4gICAgbGV0IHNlcmllcyA9IGNoYXJ0LnNlcmllcy5wdXNoKFxyXG4gICAgICBhbTV4eS5MaW5lU2VyaWVzLm5ldyhyb290LCB7XHJcbiAgICAgICAgbmFtZTogXCJTZXJpZXNcIixcclxuICAgICAgICB4QXhpczogeEF4aXMsXHJcbiAgICAgICAgeUF4aXM6IHlBeGlzLFxyXG4gICAgICAgIHZhbHVlWUZpZWxkOiBcInZhbHVlXCIsXHJcbiAgICAgICAgdmFsdWVYRmllbGQ6IFwiZGF0ZVwiLFxyXG4gICAgICAgIHN0cm9rZTogYW01LmNvbG9yKDB4MDBhM2ZmKSwgLy8gU2V0IHRoZSBsaW5lIGNvbG9yIGhlcmUgKHJlZCBpbiB0aGlzIGNhc2UpXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgc2VyaWVzLmJ1bGxldHMucHVzaChmdW5jdGlvbiAoKSB7XHJcbiAgICAgIGxldCBidWxsZXRDaXJjbGUgPSBhbTUuQ2lyY2xlLm5ldyhyb290LCB7XHJcbiAgICAgICAgcmFkaXVzOiAwLFxyXG4gICAgICAgIGZpbGw6IHNlcmllcy5nZXQoXCJmaWxsXCIpXHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gYW01LkJ1bGxldC5uZXcocm9vdCwge1xyXG4gICAgICAgIHNwcml0ZTogYnVsbGV0Q2lyY2xlXHJcbiAgICAgIH0pXHJcbiAgICB9KVxyXG4gICAgc2VyaWVzLmRhdGEuc2V0QWxsKGRhdGEpO1xyXG4gICAgc2VyaWVzLnNldChcclxuICAgICAgXCJ0b29sdGlwXCIsXHJcbiAgICAgIGFtNS5Ub29sdGlwLm5ldyhyb290LCB7XHJcbiAgICAgICAgbGFiZWxUZXh0OiBcInt2YWx1ZVl9XCIsXHJcbiAgICAgICAgZ2V0RmlsbEZyb21TcHJpdGU6IGZhbHNlLCAvLyBQcmV2ZW50cyB0aGUgdG9vbHRpcCBmcm9tIGluaGVyaXRpbmcgY29sb3IgZnJvbSB0aGUgc3ByaXRlXHJcbiAgICAgICAgYmFja2dyb3VuZDogYW01LlJlY3RhbmdsZS5uZXcocm9vdCwge1xyXG4gICAgICAgICAgZmlsbDogYW01LmNvbG9yKDB4ZGFmMWZmKSwgLy8gU2V0IHRoZSB0b29sdGlwIGJhY2tncm91bmQgY29sb3IgaGVyZSAoYmx1ZSBpbiB0aGlzIGNhc2UpXHJcbiAgICAgICAgfSksXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgdGhpcy5wb3RlbnRpYWxCdXllcnNsaW5lcm9vdCA9IHJvb3Q7XHJcbiAgfSwwKVxyXG4gIH1cclxuXHJcbiAgZW5nYWdlcnNsaW5lQ2hhcnRzKCkge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGNoYXJ0RGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJlbmdhZ2Vyc1wiKTtcclxuICAgICAgaWYgKCFjaGFydERpdikge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5lbmdhZ2Vyc2xpbmVyb290KSB7XHJcbiAgICAgICAgdGhpcy5lbmdhZ2Vyc2xpbmVyb290LmRpc3Bvc2UoKTtcclxuICAgICAgfVxyXG4gICAgbGV0IHJvb3Q6IGFueTtcclxuICAgIHJvb3QgPSBhbTUuUm9vdC5uZXcoXCJlbmdhZ2Vyc1wiKTtcclxuICAgIHJvb3Quc2V0VGhlbWVzKFtcclxuICAgICAgYW01dGhlbWVzX0FuaW1hdGVkLm5ldyhyb290KSxcclxuICAgICAgYW01dGhlbWVzX1Jlc3BvbnNpdmUubmV3KHJvb3QpLFxyXG4gICAgXSk7XHJcbiAgICBsZXQgY2hhcnQgPSByb290LmNvbnRhaW5lci5jaGlsZHJlbi5wdXNoKFxyXG4gICAgICBhbTV4eS5YWUNoYXJ0Lm5ldyhyb290LCB7XHJcbiAgICAgICAgcGFuWDogdHJ1ZSxcclxuICAgICAgICBwYW5ZOiB0cnVlLFxyXG4gICAgICAgIHdoZWVsWDogXCJwYW5YXCIsXHJcbiAgICAgICAgd2hlZWxZOiBcInpvb21YXCIsXHJcbiAgICAgICAgcGluY2hab29tWDogdHJ1ZSxcclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgLy8gQWRkIGRhdGFcclxuICAgIGxldCBkYXRhID0gdGhpcy5nZXRDYXJkR3JhcGhEYXRhPy5lbmdhZ2Vycz8uZGF0YS5tYXAoKGl0ZW06IGFueSkgPT4gKHtcclxuICAgICAgZGF0ZTogbmV3IERhdGUoaXRlbS5kYXRlKS5nZXRUaW1lKCksIC8vIENvbnZlcnQgZGF0ZSBzdHJpbmcgdG8gdGltZXN0YW1wXHJcbiAgICAgIHZhbHVlOiBOdW1iZXIoaXRlbS52YWx1ZSksXHJcbiAgICB9KSk7XHJcbiAgICBsZXQgY3Vyc29yID0gY2hhcnQuc2V0KFxyXG4gICAgICBcImN1cnNvclwiLFxyXG4gICAgICBhbTV4eS5YWUN1cnNvci5uZXcocm9vdCwge1xyXG4gICAgICAgIGJlaGF2aW9yOiBcIm5vbmVcIixcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICBjdXJzb3IubGluZVkuc2V0KFwidmlzaWJsZVwiLCBmYWxzZSk7XHJcbiAgICAvLyBDcmVhdGUgYXhlc1xyXG4gICAgbGV0IHhBeGlzID0gY2hhcnQueEF4ZXMucHVzaChcclxuICAgICAgYW01eHkuRGF0ZUF4aXMubmV3KHJvb3QsIHtcclxuICAgICAgICBtYXhEZXZpYXRpb246IDAuMixcclxuICAgICAgICBiYXNlSW50ZXJ2YWw6IHsgdGltZVVuaXQ6IFwiZGF5XCIsIGNvdW50OiAxIH0sXHJcbiAgICAgICAgcmVuZGVyZXI6IGFtNXh5LkF4aXNSZW5kZXJlclgubmV3KHJvb3QsIHsgbWlub3JHcmlkRW5hYmxlZDogdHJ1ZSB9KSxcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICB4QXhpcy5nZXQoXCJyZW5kZXJlclwiKS5ncmlkLnRlbXBsYXRlLnNldChcImZvcmNlSGlkZGVuXCIsIHRydWUpO1xyXG4gICAgeEF4aXMuZ2V0KFwicmVuZGVyZXJcIikubGFiZWxzLnRlbXBsYXRlLnNldChcImZvcmNlSGlkZGVuXCIsIHRydWUpO1xyXG5cclxuICAgIGxldCB5QXhpcyA9IGNoYXJ0LnlBeGVzLnB1c2goXHJcbiAgICAgIGFtNXh5LlZhbHVlQXhpcy5uZXcocm9vdCwge1xyXG4gICAgICAgIHJlbmRlcmVyOiBhbTV4eS5BeGlzUmVuZGVyZXJZLm5ldyhyb290LCB7IHBhbjogXCJ6b29tXCIgfSksXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgeUF4aXMuZ2V0KFwicmVuZGVyZXJcIikuZ3JpZC50ZW1wbGF0ZS5zZXQoXCJmb3JjZUhpZGRlblwiLCB0cnVlKTtcclxuICAgIHlBeGlzLmdldChcInJlbmRlcmVyXCIpLmxhYmVscy50ZW1wbGF0ZS5zZXQoXCJmb3JjZUhpZGRlblwiLCB0cnVlKTtcclxuXHJcbiAgICAvLyBDcmVhdGUgc2VyaWVzXHJcbiAgICBsZXQgc2VyaWVzID0gY2hhcnQuc2VyaWVzLnB1c2goXHJcbiAgICAgIGFtNXh5LkxpbmVTZXJpZXMubmV3KHJvb3QsIHtcclxuICAgICAgICBuYW1lOiBcIlNlcmllc1wiLFxyXG4gICAgICAgIHhBeGlzOiB4QXhpcyxcclxuICAgICAgICB5QXhpczogeUF4aXMsXHJcbiAgICAgICAgdmFsdWVZRmllbGQ6IFwidmFsdWVcIixcclxuICAgICAgICB2YWx1ZVhGaWVsZDogXCJkYXRlXCIsXHJcbiAgICAgICAgc3Ryb2tlOiBhbTUuY29sb3IoMHgwMGEzZmYpLCAvLyBTZXQgdGhlIGxpbmUgY29sb3IgaGVyZSAocmVkIGluIHRoaXMgY2FzZSlcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICBzZXJpZXMuYnVsbGV0cy5wdXNoKGZ1bmN0aW9uICgpIHtcclxuICAgICAgbGV0IGJ1bGxldENpcmNsZSA9IGFtNS5DaXJjbGUubmV3KHJvb3QsIHtcclxuICAgICAgICByYWRpdXM6IDAsXHJcbiAgICAgICAgZmlsbDogc2VyaWVzLmdldChcImZpbGxcIilcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBhbTUuQnVsbGV0Lm5ldyhyb290LCB7XHJcbiAgICAgICAgc3ByaXRlOiBidWxsZXRDaXJjbGVcclxuICAgICAgfSlcclxuICAgIH0pXHJcbiAgICBzZXJpZXMuZGF0YS5zZXRBbGwoZGF0YSk7XHJcbiAgICBzZXJpZXMuc2V0KFxyXG4gICAgICBcInRvb2x0aXBcIixcclxuICAgICAgYW01LlRvb2x0aXAubmV3KHJvb3QsIHtcclxuICAgICAgICBsYWJlbFRleHQ6IFwie3ZhbHVlWX1cIixcclxuICAgICAgICBnZXRGaWxsRnJvbVNwcml0ZTogZmFsc2UsIC8vIFByZXZlbnRzIHRoZSB0b29sdGlwIGZyb20gaW5oZXJpdGluZyBjb2xvciBmcm9tIHRoZSBzcHJpdGVcclxuICAgICAgICBiYWNrZ3JvdW5kOiBhbTUuUmVjdGFuZ2xlLm5ldyhyb290LCB7XHJcbiAgICAgICAgICBmaWxsOiBhbTUuY29sb3IoMHhkYWYxZmYpLCAvLyBTZXQgdGhlIHRvb2x0aXAgYmFja2dyb3VuZCBjb2xvciBoZXJlIChibHVlIGluIHRoaXMgY2FzZSlcclxuICAgICAgICB9KSxcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICB0aGlzLmVuZ2FnZXJzbGluZXJvb3QgPSByb290O1xyXG4gIH0sMClcclxuICB9XHJcbiAgLy8gY2FyZCBsaW5lIENoYXJ0cyBFbmRcclxuXHJcbiAgaGVhdE1hcCgpIHtcclxuICAgIHRoaXMuaGVhdGxvYWRpbmcgPSBmYWxzZVxyXG4gICAgdGhpcy5oZWF0bm9EYXRhID0gZmFsc2VcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjb25zdCBjaGFydERpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY2hhcnRkaXZcIik7XHJcbiAgICAgIGlmICghY2hhcnREaXYpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuaGVhdE1hcHJvb3QpIHtcclxuICAgICAgICB0aGlzLmhlYXRNYXByb290LmRpc3Bvc2UoKTtcclxuICAgICAgfVxyXG4gICAgbGV0IHJvb3QgPSBhbTUuUm9vdC5uZXcoXCJjaGFydGRpdlwiKTtcclxuICAgIHJvb3Quc2V0VGhlbWVzKFthbTV0aGVtZXNfQW5pbWF0ZWQubmV3KHJvb3QpXSk7XHJcblxyXG4gICAgbGV0IGNoYXJ0ID0gcm9vdC5jb250YWluZXIuY2hpbGRyZW4ucHVzaChcclxuICAgICAgYW01cGVyY2VudC5TbGljZWRDaGFydC5uZXcocm9vdCwge1xyXG4gICAgICAgIGxheW91dDogcm9vdC52ZXJ0aWNhbExheW91dCxcclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgbGV0IGRhdGEgPSB0aGlzLmhlYXRNYXBEYXRhO1xyXG4gIFxyXG4gICAgZGF0YS5zb3J0KChhOmFueSwgYjphbnkpID0+IGIudmFsdWUgLSBhLnZhbHVlKTtcclxuICAgIGxldCBzZXJpZXMgPSBjaGFydC5zZXJpZXMucHVzaChcclxuICAgICAgYW01cGVyY2VudC5GdW5uZWxTZXJpZXMubmV3KHJvb3QsIHtcclxuICAgICAgICBhbGlnbkxhYmVsczogZmFsc2UsXHJcbiAgICAgICAgb3JpZW50YXRpb246IFwiaG9yaXpvbnRhbFwiLFxyXG4gICAgICAgIHZhbHVlRmllbGQ6IFwidmFsdWVcIixcclxuICAgICAgICBjYXRlZ29yeUZpZWxkOiBcImNhdGVnb3J5XCIsXHJcbiAgICAgICAgYm90dG9tUmF0aW86IDEsXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG5cclxuICAgIHNlcmllcy5kYXRhLnNldEFsbChkYXRhKTtcclxuICAgIHNlcmllcy5hcHBlYXIoKTtcclxuICAgIC8vIFVwZGF0ZSB0aGUgbGFiZWwgdGVtcGxhdGUgdG8gaW5jbHVkZSB0aGUgcGVyY2VudGFnZVxyXG4gICAgc2VyaWVzLmxhYmVscy50ZW1wbGF0ZS5zZXRBbGwoe1xyXG4gICAgICBwb3B1bGF0ZVRleHQ6IHRydWUsXHJcbiAgICAgIHRleHQ6IFwie2NhdGVnb3J5fSAoe2NvdW50fSUpXFxuXFxue3ZhbHVlfVwiLFxyXG4gICAgICBmb250U2l6ZTpcIjEzcHhcIixcclxuICAgICAgZm9udFdlaWdodDpcIjQwMFwiLFxyXG4gICAgICB0ZXh0QWxpZ246XCJjZW50ZXJcIlxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmhlYXRNYXByb290ID0gcm9vdDtcclxuICAgIGNoYXJ0LmFwcGVhcigxMDAwLCAxMDApO1xyXG4gIH0sMCk7XHJcblxyXG4gIH1cclxuXHJcbiAgdHlwZTogYW55ID0gXCJkYWlseVwiO1xyXG4gIHNlbGVjdFBsYW4odHlwZTogYW55KSB7XHJcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xyXG4gIH1cclxuXHJcbiAgLy8gVG9nZ2xlIGZ1bmN0aW9uIGZvciB0aGUgc3dpdGNoXHJcbiAgdG9nZ2xlQXZlcmFnZShldnQ6YW55KSB7XHJcbiAgICB0aGlzLmlzQXZlcmFnZSA9IGV2dC50YXJnZXQuY2hlY2tlZDtcclxuICAgIHRoaXMuc2VydmljZS50b2dnbGVBdmVyYWdlKHRoaXMuaXNBdmVyYWdlKTtcclxuICAgIGNvbnNvbGUubG9nKCdUb2dnbGluZyBBdmVyYWdlOicsIHRoaXMuaXNBdmVyYWdlKTtcclxuICAgIHRoaXMudGFibGVvYmouZnJvbURhdGU9IHRoaXMuaGVhZGVyRGF0YS5kYXRlLnN0YXJ0RGF0ZSxcclxuICAgIHRoaXMudGFibGVvYmoudG9EYXRlPSB0aGlzLmhlYWRlckRhdGEuZGF0ZS5lbmREYXRlLFxyXG4gICAgZGVsZXRlIHRoaXMudGFibGVvYmoucmVjYXBWaWRlb0RhdGU7XHJcbiAgICBkZWxldGUgdGhpcy50YWJsZW9iai5saW1pdDsgZGVsZXRlIHRoaXMudGFibGVvYmouZXhwb3J0O1xyXG4gICAgZGVsZXRlIHRoaXMudGFibGVvYmoub2Zmc2V0O1xyXG4gICAgaWYodGhpcy5pc0F2ZXJhZ2UgPT09IHRydWUpe1xyXG4gICAgdGhpcy52YWx1ZVR5cGUgPSAnYXZlcmFnZSc7XHJcbiAgICAgdGhpcy5mb290ZmFsbE5hbWUgPSAnQXZnLiBGb290ZmFsbCdcclxuICAgdGhpcy50YWJsZW9iai52YWx1ZVR5cGUgPXRoaXMudmFsdWVUeXBlO1xyXG4gICB0aGlzLmNvbnZlcnNpb25WYWx1ZSA9ICcnO1xyXG4gICB0aGlzLnR5cGVWYWx1ZT0nYXZlcmFnZSc7XHJcbiAgIHRoaXMudmFsdWVDb252ZXJzaW9uUmF0ZSA9IHRoaXMuZ2V0Q2FyZERhdGE/LmNvbnZlcnNpb24/LnJhdGU7XHJcbiAgfSAgZWxzZSB7XHJcbiAgICAgdGhpcy5mb290ZmFsbE5hbWUgPSAnRm9vdGZhbGwnXHJcbiAgICB0aGlzLnRhYmxlb2JqLnZhbHVlVHlwZSA9J2FjdHVhbCc7XHJcbiAgICB0aGlzLnR5cGVWYWx1ZT0nc3VtJztcclxuICAgIHRoaXMuY29udmVyc2lvblZhbHVlID0gJyc7XHJcbiAgICB0aGlzLnZhbHVlQ29udmVyc2lvblJhdGUgPSB0aGlzLmdldENhcmREYXRhPy5jb252ZXJzaW9uPy5yYXRlO1xyXG4gIH1cclxuICB0aGlzLnByZXZpb3VzVmFsdWUgPSAnZm9vdGZhbGwnOyBcclxuIFxyXG4gICAgdGhpcy5nZXRDYXJkKCk7XHJcbiAgICB0aGlzLmdldENhcmRHcmFwaCgpO1xyXG4gICAgdGhpcy5nZXRUYWJsZSgpO1xyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgY2FtZXJhVmlldygpe1xyXG4gICAgdGhpcy5zdG9yZUlkYXJyYXkgPSB0aGlzLmhlYWRlckRhdGE/LnN0b3Jlcy5maWx0ZXIoKHN0b3JlOmFueSkgPT4gc3RvcmUuY2hlY2tlZCkubWFwKChzdG9yZTphbnkpID0+IHN0b3JlLnN0b3JlSWQpXHJcbiAgICBsZXQgZGF0YTogYW55ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImhlYWRlci1maWx0ZXJzXCIpIHx8IFwiXCIpO1xyXG4gICAgZGF0YS5zdG9yZSA9IHRoaXMuc3RvcmVJZGFycmF5WzBdO1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJoZWFkZXItZmlsdGVyc1wiLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7XHJcbiAgICB0aGlzLmdzLmRhdGFSYW5nZVZhbHVlLm5leHQoZGF0YSk7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCIvbWFuYWdlL3N0b3Jlcy9jYW1lcmFzXCJdLCB7XHJcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7IHN0b3JlSWQ6IHRoaXMuc3RvcmVJZGFycmF5WzBdfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0WExTWCgpIHtcclxuICAgIHRoaXMudGFibGVvYmoub2Zmc2V0ID0gMDtcclxuICAgIHRoaXMudGFibGVvYmoubGltaXQgPSAxMDAwMDtcclxuICAgICh0aGlzLnRhYmxlb2JqLnZhbHVlVHlwZSA9IHRoaXMudHlwZVZhbHVlKTtcclxuICAgIHRoaXMudGFibGVvYmouZnJvbURhdGU9IHRoaXMuaGVhZGVyRGF0YS5kYXRlLnN0YXJ0RGF0ZSxcclxuICAgIHRoaXMudGFibGVvYmoudG9EYXRlPSB0aGlzLmhlYWRlckRhdGEuZGF0ZS5lbmREYXRlLFxyXG4gICAgdGhpcy50YWJsZW9iai5zZWFyY2ggPSB0aGlzLnNlYXJjaFZhbHVlO1xyXG4gICAgdGhpcy50YWJsZW9iai5leHBvcnQgPSB0cnVlO1xyXG4gICAgZGVsZXRlIHRoaXMudGFibGVvYmoucmVjYXBWaWRlb0RhdGU7XHJcbiAgICB0aGlzLnNlcnZpY2VcclxuICAgIC5nZXRTdW1tYXJ5VGFibGVMaXN0RXhwb3J0KHRoaXMudGFibGVvYmopXHJcbiAgICA/LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgPy5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgICB0aGlzLmV4Y2VsU2VydmljZS5zYXZlQXNFeGNlbEZpbGUocmVzLCBcIlRyYWZmaWMgU3VtbWFyeSBUYWJsZSBMaXN0XCIpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKCkgPT4ge30sXHJcbiAgICB9KTtcclxuICAgIHRoaXMudGFibGVvYmoubGltaXQgPSB0aGlzLmxpbWl0O1xyXG4gICAgdGhpcy50YWJsZW9iai5leHBvcnQgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIG9uU29ydChjb2x1bW46IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuc29ydGVkQ29sdW1uID09PSBjb2x1bW4pIHtcclxuICAgICAgdGhpcy5zb3J0RGlyZWN0aW9uID0gdGhpcy5zb3J0RGlyZWN0aW9uID09PSAxID8gLTEgOiAxO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zb3J0ZWRDb2x1bW4gPSBjb2x1bW47XHJcbiAgICAgIHRoaXMuc29ydERpcmVjdGlvbiA9IDE7XHJcbiAgICB9XHJcbiAgICB0aGlzLnRhYmxlb2JqLmZyb21EYXRlPSB0aGlzLmhlYWRlckRhdGEuZGF0ZS5zdGFydERhdGUsXHJcbiAgICB0aGlzLnRhYmxlb2JqLnRvRGF0ZT0gdGhpcy5oZWFkZXJEYXRhLmRhdGUuZW5kRGF0ZSxcclxuICAgIGRlbGV0ZSB0aGlzLnRhYmxlb2JqLnJlY2FwVmlkZW9EYXRlO1xyXG4gICAgdGhpcy50YWJsZW9iai5zb3J0QnkgPSB0aGlzLnNvcnREaXJlY3Rpb24sIC8vWzEtPmFzYywgLTEtPkRFc2NdXHJcbiAgICB0aGlzLnRhYmxlb2JqLnNvcnQgPSB0aGlzLnNvcnRlZENvbHVtbiwgLy8gQ29sdW1uIE5hbWVcclxuICAgIHRoaXMuZ2V0VGFibGUoKTtcclxuICB9XHJcblxyXG4gIGdldE1hcCgpIHtcclxuICAgIHRoaXMubXBhbG9hZGluZyA9dHJ1ZTtcclxuICAgIHRoaXMubWFwbm9EYXRhPSBmYWxzZTtcclxuICAgIGNvbnN0IG9iaiA9IHtcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuaGVhZGVyRGF0YT8uY2xpZW50LFxyXG4gICAgICBzdG9yZURhdGU6IHRoaXMuaGVhZGVyRGF0YT8uZGF0ZT8uZW5kRGF0ZSxcclxuICAgICAgc3RvcmVJZDogdGhpcy5zdG9yZUlkYXJyYXlcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5zZXJ2aWNlLmdlTWFwcyhvYmopPy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZihyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCl7XHJcbiAgICAgICAgICAvLyBpZiAocmVzICYmIHJlcy5kYXRhICYmIHJlcy5kYXRhLnN0b3JlRGF0YSkge1xyXG4gICAgICAgICAgICB0aGlzLmF1TG9jYXRpb25zID0gcmVzLmRhdGEuc3RvcmVEYXRhO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIFVwZGF0ZSBtYXBPcHRpb25zIGNlbnRlciBpZiBuZWVkZWRcclxuICAgICAgICAgICAgaWYgKHRoaXMuYXVMb2NhdGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGZpcnN0TG9jYXRpb24gPSB0aGlzLmF1TG9jYXRpb25zWzBdO1xyXG4gICAgICAgICAgICAgIGlmIChmaXJzdExvY2F0aW9uICYmIHR5cGVvZiBmaXJzdExvY2F0aW9uLmxhdCA9PT0gJ251bWJlcicgJiYgdHlwZW9mIGZpcnN0TG9jYXRpb24ubG5nID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tYXBPcHRpb25zID0ge1xyXG4gICAgICAgICAgICAgICAgICAuLi50aGlzLm1hcE9wdGlvbnMsXHJcbiAgICAgICAgICAgICAgICAgIGNlbnRlcjogeyBsYXQ6IGZpcnN0TG9jYXRpb24ubGF0LCBsbmc6IGZpcnN0TG9jYXRpb24ubG5nIH1cclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsgIHRoaXMuZ2V0RGF0YSgpOyB9LDEwMClcclxuICAgICAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7fVxyXG4gICAgICAgICAgICB9IGVsc2Uge31cclxuICAgICAgICAgIC8vIH1cclxuICAgICAgICAgIHRoaXMubXBhbG9hZGluZyA9ZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLm1hcG5vRGF0YT0gZmFsc2U7XHJcbiAgICAgICAgICB9IGVsc2UgaWYocmVzID09PSBudWxsKXtcclxuICAgICAgICAgICAgdGhpcy5tYXBub0RhdGE9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMubXBhbG9hZGluZyA9ZmFsc2U7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmF1TG9jYXRpb25zID1bXTtcclxuICAgICAgICAgICAgdGhpcy5tcGFsb2FkaW5nID1mYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5tYXBub0RhdGE9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5hdUxvY2F0aW9ucyA9W107XHJcbiAgICAgICAgICB0aGlzLm1wYWxvYWRpbmcgPWZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm1hcG5vRGF0YT0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICBtYXA6IG1hcGJveGdsLk1hcDtcclxuICBwcml2YXRlIGNoZWNrTWFwQ29udGFpbmVySW50ZXJ2YWw6IGFueTtcclxuICBnZXREYXRhKCkge1xyXG4gICAgdGhpcy5jaGVja01hcENvbnRhaW5lckludGVydmFsID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IG1hcENvbnRhaW5lciA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcjbWFwJyk7XHJcbiAgICAgIGlmIChtYXBDb250YWluZXIpIHtcclxuICAgICAgICBjbGVhckludGVydmFsKHRoaXMuY2hlY2tNYXBDb250YWluZXJJbnRlcnZhbCk7XHJcbiAgICAgICAgdGhpcy5pbml0aWFsaXplTWFwKG1hcENvbnRhaW5lcik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmNoZWNrTWFwQ29udGFpbmVySW50ZXJ2YWwpO1xyXG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZU1hcChtYXBDb250YWluZXIpO1xyXG4gICAgICB9XHJcbiAgICB9LCAxMDApO1xyXG5cclxuICB9XHJcbiAgaW5pdGlhbGl6ZU1hcChtYXBDb250YWluZXI6IEhUTUxFbGVtZW50KXtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4geyAgXHJcbiAgICAgIGNvbnN0IG1hcENvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYXAnKTtcclxuICAgICAgaWYgKCFtYXBDb250YWluZXIpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIC8vIENoZWNrIHRoYXQgbG9jYXRpb25zIGV4aXN0IGJlZm9yZSBwcm9jZWVkaW5nXHJcbiAgICBpZiAodGhpcy5hdUxvY2F0aW9ucz8ubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICBcclxuICAgIGNvbnN0IGdlb2pzb24gPSB7XHJcbiAgICAgICd0eXBlJzogJ0ZlYXR1cmVDb2xsZWN0aW9uJyxcclxuICAgICAgJ2ZlYXR1cmVzJzogdGhpcy5hdUxvY2F0aW9ucy5tYXAoKHN0b3JlLCBpbmRleCkgPT4gKHtcclxuICAgICAgICAndHlwZSc6ICdGZWF0dXJlJyxcclxuICAgICAgICAncHJvcGVydGllcyc6IHtcclxuICAgICAgICAgICdzdG9yZU5hbWUnOiBzdG9yZS5zdG9yZU5hbWUsICAgICAgICAgLy8gU3RvcmUgbmFtZVxyXG4gICAgICAgICAgJ2ltYWdlSWQnOiAxMDExICsgaW5kZXgsICAgICAgICAgICAgICAvLyBEeW5hbWljIGltYWdlIElEXHJcbiAgICAgICAgICAnaWNvblNpemUnOiBbNjAsIDYwXSwgICAgICAgICAgICAgICAgIC8vIEFkanVzdCBpY29uIHNpemUgYXMgbmVlZGVkXHJcbiAgICAgICAgICAnZm9vdGZhbGwnOiBzdG9yZS5hdmdGb290ZmFsbCwgICAgICAgIC8vIEZvb3RmYWxsIGRhdGFcclxuICAgICAgICAgICdvcGVuVGltZSc6IHN0b3JlLm9wZW5UaW1lLCAgICAgICAgICAgLy8gT3BlbiB0aW1lXHJcbiAgICAgICAgICAnY2xvc2VUaW1lJzogc3RvcmUuY2xvc2VUaW1lLCAgICAgICAgIC8vIENsb3NlIHRpbWVcclxuICAgICAgICB9LFxyXG4gICAgICAgICdnZW9tZXRyeSc6IHtcclxuICAgICAgICAgICd0eXBlJzogJ1BvaW50JyxcclxuICAgICAgICAgICdjb29yZGluYXRlcyc6IFtzdG9yZS5sbmcsIHN0b3JlLmxhdF0gIC8vIENvb3JkaW5hdGVzIGZyb20gc3RvcmUgZGF0YVxyXG4gICAgICAgIH1cclxuICAgICAgfSkpXHJcbiAgICB9O1xyXG4gIFxyXG4gICAgLy8gRHluYW1pY2FsbHkgc2V0IG1hcCBjZW50ZXIgYmFzZWQgb24gdGhlIGZpcnN0IGxvY2F0aW9uXHJcbiAgICBjb25zdCBmaXJzdExvY2F0aW9uID0gdGhpcy5hdUxvY2F0aW9uc1swXTtcclxuIFxyXG4gICAgdGhpcy5tYXAgPSBuZXcgbWFwYm94Z2wuTWFwKHtcclxuICAgICAgY29udGFpbmVyOiAnbWFwJyxcclxuICAgICAgc3R5bGU6ICdtYXBib3g6Ly9zdHlsZXMvbWFwYm94L3N0cmVldHMtdjEyJyxcclxuICAgICAgY2VudGVyOiBbZmlyc3RMb2NhdGlvbi5sbmcsIGZpcnN0TG9jYXRpb24ubGF0XSwgLy8gQ2VudGVyIG1hcCBvbiB0aGUgZmlyc3QgbG9jYXRpb25cclxuICAgICAgem9vbTogMTAsIC8vIEFkanVzdCB0aGlzIHZhbHVlICgxID0gd29ybGQgdmlldywgMjAgPSBidWlsZGluZyB2aWV3KVxyXG4gICAgICBtYXhab29tOiAyMCwgLy8gT3B0aW9uYWw6IExpbWl0IG1heCB6b29tIGxldmVsXHJcbiAgICAgIG1pblpvb206IDEgICAvLyBPcHRpb25hbDogTGltaXQgbWluIHpvb20gbGV2ZWxcclxuICAgIH0pO1xyXG4gIFxyXG4gICAgLy8gQWRkIG1hcmtlcnMgdG8gdGhlIG1hcFxyXG4gICAgZ2VvanNvbi5mZWF0dXJlcy5mb3JFYWNoKChmZWF0dXJlLCBmZWF0dXJlSW5kZXgpID0+IHtcclxuICAgICAgY29uc3QgeyBwcm9wZXJ0aWVzLCBnZW9tZXRyeSB9ID0gZmVhdHVyZTtcclxuICAgICAgY29uc3Qgc3RvcmUgPSB0aGlzLmF1TG9jYXRpb25zW2ZlYXR1cmVJbmRleF07XHJcbiAgICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgIGNvbnN0IHdpZHRoID0gcHJvcGVydGllcy5pY29uU2l6ZVswXTtcclxuICAgICAgY29uc3QgaGVpZ2h0ID0gcHJvcGVydGllcy5pY29uU2l6ZVsxXTtcclxuICAgICAgZWwuY2xhc3NOYW1lID0gJ21hcmtlcic7XHJcbiAgICAgIGVsLmlubmVySFRNTCA9IGBcclxuICAgICAgPGRpdiBjbGFzcz1cIm1hcmtlci1pY29uXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsgd2lkdGg6ICR7d2lkdGh9cHg7IGhlaWdodDogJHtoZWlnaHR9cHg7IGRpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVudDogY2VudGVyOyBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBjb2xvcjogdmFyKC0tR3JheS03MDAsICMzNDQwNTQpO1xyXG50ZXh0LWFsaWduOiBjZW50ZXI7XHJcbmZvbnQtZmFtaWx5OiBJbnRlcjtcclxuZm9udC1zaXplOiA5LjAwN3B4O1xyXG5mb250LXN0eWxlOiBub3JtYWw7XHJcbmZvbnQtd2VpZ2h0OiA2MDA7XHJcbmxpbmUtaGVpZ2h0OiAxM3B4O1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYXJrZXItY29udGVudFwiIHN0eWxlPVwiZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgYWxpZ24taXRlbXM6IGNlbnRlcjtcIj5cclxuICAgICAgICAgIDxzdmcgY2xhc3M9XCJtYi0xXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTNcIiBoZWlnaHQ9XCIxM1wiIHZpZXdCb3g9XCIwIDAgMTMgMTNcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICA8cGF0aCBkPVwiTTEuMzM2NTQgMy4zNjM3TDEuMjk2NTggMy40MjYxMUMwLjg3NzY5OCA0LjE2NzAxIDEuMzI0OTMgNS4xMDMzNSAyLjEyOTMxIDUuMjEwNzZDMi4yMDIxOCA1LjIxOTY3IDIuMjY5OTkgNS4yMjQzOCAyLjMzNjI1IDUuMjI0MzhDMi43NzAyMSA1LjIyNDM4IDMuMTUzOSA1LjAzODIxIDMuNDIxMzIgNC43NDc5M0wzLjgzNjY2IDQuMjk3MUw0LjI1MDU5IDQuNzQ5MjNDNC41MTQ3NiA1LjAzNzc4IDQuODk3NTggNS4yMjQzOCA1LjMzNDQ4IDUuMjI0MzhDNS43Njk0MSA1LjIyNDM4IDYuMTU0NDMgNS4wMzc1MiA2LjQxODM3IDQuNzQ5MjNMNi44MzM1OSA0LjI5NTY4TDcuMjQ4ODIgNC43NDkyM0M3LjUxMjc1IDUuMDM3NTIgNy44OTc3NyA1LjIyNDM4IDguMzMyNzEgNS4yMjQzOEM4Ljc2NzY0IDUuMjI0MzggOS4xNTI2NiA1LjAzNzUyIDkuNDE2NiA0Ljc0OTIzTDkuODMxODIgNC4yOTU2OEwxMC4yNDcgNC43NDkyM0MxMC41MTEgNS4wMzc1MiAxMC44OTYgNS4yMjQzOCAxMS4zMzA5IDUuMjI0MzhDMTEuMzk1IDUuMjI0MzggMTEuNDY0OSA1LjIxOTY2IDExLjUzNzIgNS4yMTA4M0MxMi4zNTkzIDUuMDk4NzUgMTIuODA4IDQuMTEyMjUgMTIuMzI4NiAzLjM2NDA4QzEyLjMyODYgMy4zNjQwMyAxMi4zMjg1IDMuMzYzOTkgMTIuMzI4NSAzLjM2Mzk1TDExLjAwODggMS4zMDYyMUwxMS4wMDgxIDEuMzA1MTFDMTAuOTk2NyAxLjI4NzIyIDEwLjk2ODYgMS4yNjgwNCAxMC45MzMyIDEuMjY4MDRIMi43Mjk0MkMyLjY5NDAzIDEuMjY4MDQgMi42NjU4OSAxLjI4NzIyIDIuNjU0NDggMS4zMDUxMUwyLjY1NDAxIDEuMzA1ODRMMS4zMzY1NCAzLjM2MzdaTTExLjA3MzEgNy4wNjY2N1Y5LjQxNzUzVjkuOTgwNDlIMTAuNTEwMUgzLjE1MjQ4SDIuNTg5NTJWOS40MTc1M1Y3LjA2NzAyQzIuNTA2NzggNy4wNzMxOCAyLjQyMzA4IDcuMDc2MzQgMi4zMzg1NSA3LjA3NjM0QzIuMzA2NzkgNy4wNzYzNCAyLjI3NTI1IDcuMDc1ODcgMi4yNDM5MiA3LjA3NDk1VjkuNDE3NTNWMTAuODY5NkMyLjI0MzkyIDExLjM1MjYgMi42NDQ2NyAxMS43NTg3IDMuMTUyNDggMTEuNzU4N0gxMC41MTAxQzExLjAxNzkgMTEuNzU4NyAxMS40MTg3IDExLjM1MjYgMTEuNDE4NyAxMC44Njk2VjkuNDE3NTNWNy4wNzUwOUMxMS4zODg4IDcuMDc1OTEgMTEuMzU4NyA3LjA3NjM0IDExLjMyODYgNy4wNzYzNEMxMS4yNDI4IDcuMDc2MzQgMTEuMTU3NSA3LjA3MzA4IDExLjA3MzEgNy4wNjY2N1pcIiBzdHJva2U9XCIjMTAxODI4XCIgc3Ryb2tlLXdpZHRoPVwiMS4xMjU5MlwiLz5cclxuICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1hcmtlci1sYWJlbFwiIHN0eWxlPVwiZm9udC1zaXplOiAxMHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7XCI+XHJcbiAgICAgICAgICAgICR7cHJvcGVydGllcy5zdG9yZU5hbWV9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICBgO1xyXG4gICAgICAvLyBlbC5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2UgPSBgdXJsKGh0dHBzOi8vcGljc3VtLnBob3Rvcy9pZC8ke3Byb3BlcnRpZXMuaW1hZ2VJZH0vJHt3aWR0aH0vJHtoZWlnaHR9KWA7XHJcbiAgICAgIGVsLnN0eWxlLndpZHRoID0gYCR7d2lkdGh9cHhgO1xyXG4gICAgICBlbC5zdHlsZS5oZWlnaHQgPSBgJHtoZWlnaHR9cHhgO1xyXG4gICAgICBlbC5zdHlsZS5iYWNrZ3JvdW5kU2l6ZSA9ICcxMDAlJztcclxuICBcclxuICAgICAgLy8gQ3JlYXRlIGEgcG9wdXAgaW5zdGFuY2Ugd2l0aCB0aGUgZmVhdHVyZSBwcm9wZXJ0aWVzXHJcbiAgICAgIGNvbnN0IHBvcHVwID0gbmV3IG1hcGJveGdsLlBvcHVwKHsgb2Zmc2V0OiAyNSB9KSAgXHJcbiAgICAgIC8vIFVzZSB0aGUgY29vcmRpbmF0ZXMgZnJvbSB0aGUgZmVhdHVyZVxyXG4gICAgICBjb25zdCBjb29yZGluYXRlczogW251bWJlciwgbnVtYmVyXSA9IGdlb21ldHJ5LmNvb3JkaW5hdGVzIGFzIFtudW1iZXIsIG51bWJlcl07XHJcbiAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuYWRqdXN0TGF5b3V0KHN0b3JlKTtcclxuICAgICAgfSk7XHJcbiAgICAgIC8vIEFkZCBtYXJrZXJzIHRvIHRoZSBtYXBcclxuICAgICAgbmV3IG1hcGJveGdsLk1hcmtlcihlbClcclxuICAgICAgICAuc2V0TG5nTGF0KGNvb3JkaW5hdGVzKVxyXG4gICAgICAgIC5zZXRQb3B1cChwb3B1cCkgIC8vIEF0dGFjaCB0aGUgcG9wdXAgdG8gdGhlIG1hcmtlclxyXG4gICAgICAgIC5hZGRUbyh0aGlzLm1hcCk7XHJcbiAgICB9KTtcclxuICAgIFxyXG4gIH0sMTAwKVxyXG4gIH1cclxuICBhZGp1c3RMYXlvdXQoZGF0YTogYW55KSB7XHJcbiAgICBjb25zdCBkYXRhdmFsdWU6IGFueSA9IEpTT04ucGFyc2UoXHJcbiAgICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiaGVhZGVyLWZpbHRlcnNcIikgfHwgXCJ7fVwiXHJcbiAgICApO1xyXG4gICAgY29uc3QgbWF0Y2hlZFN0b3JlcyA9IGRhdGF2YWx1ZS5zdG9yZXMuZmlsdGVyKChzdG9yZTogYW55KSA9PiBzdG9yZS5jaGVja2VkICYmIHN0b3JlLnN0b3JlSWQgPT09IGRhdGEuc3RvcmVJZCk7XHJcbiAgICAvLyBVcGRhdGUgdGhlIGJhbGFuY2Ugc3RvcmVzICh0aG9zZSBub3QgaW4gdGhlIG1hdGNoZWQgc3RvcmVzKSB0byBzZXQgdGhlaXIgY2hlY2tlZCBwcm9wZXJ0eSB0byBmYWxzZVxyXG4gICAgZGF0YXZhbHVlLnN0b3Jlcy5mb3JFYWNoKChzdG9yZTogYW55KSA9PiB7XHJcbiAgICAgIGlmICghbWF0Y2hlZFN0b3Jlcy5zb21lKChtYXRjaGVkU3RvcmU6YW55KSA9PiBtYXRjaGVkU3RvcmUuc3RvcmVJZCA9PT0gc3RvcmUuc3RvcmVJZCkpIHtcclxuICAgICAgICBzdG9yZS5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pOyBcclxuICAgIGRhdGF2YWx1ZS5zdG9yZSA9IGRhdGEuc3RvcmVJZDtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiaGVhZGVyLWZpbHRlcnNcIiwgSlNPTi5zdHJpbmdpZnkoZGF0YXZhbHVlKSk7XHJcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKVxyXG4gICAgdGhpcy5ncy5kYXRhUmFuZ2VWYWx1ZS5uZXh0KGRhdGF2YWx1ZSlcclxuICAgIHRoaXMuZ3MubWFuYWdlUmVmcmVzaFRyaWdnZXIubmV4dCh0cnVlKTtcclxuICAgXHJcbiAgfVxyXG4gIGV4cG9yZVZpZXcoKXtcclxudGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvbWFuYWdlL3RyYWZmaWMvZXhwbG9yZSddKVxyXG4gIH1cclxuICBkYXRlVmFsdWUodHlwZTphbnkpe1xyXG4gICAgZGVsZXRlIHRoaXMudGFibGVvYmoubGltaXQ7IGRlbGV0ZSB0aGlzLnRhYmxlb2JqLmV4cG9ydDtcclxuICAgIGRlbGV0ZSB0aGlzLnRhYmxlb2JqLm9mZnNldDtcclxuICAgIHRoaXMudGFibGVvYmouZnJvbURhdGU9IHRoaXMuaGVhZGVyRGF0YS5kYXRlLnN0YXJ0RGF0ZSxcclxuICAgIHRoaXMudGFibGVvYmoudG9EYXRlPSB0aGlzLmhlYWRlckRhdGEuZGF0ZS5lbmREYXRlLFxyXG4gICAgZGVsZXRlIHRoaXMudGFibGVvYmoucmVjYXBWaWRlb0RhdGU7XHJcbiAgICB0aGlzLmRhdGVUeXBlID0gdHlwZTtcclxuICAgIGNvbnNvbGUubG9nKHR5cGUpXHJcbiAgICB0aGlzLnRhYmxlb2JqLmRhdGVUeXBlPSB0aGlzLmRhdGVUeXBlO1xyXG4gICAgdGhpcy5nZXRDYXJkR3JhcGgoKTtcclxuICB9XHJcblxyXG5cclxuICBnZXRab25lKCl7XHJcbiAgICBjb25zdCBvYmogPSB7XHJcbiAgICAgIGNsaWVudElkOiB0aGlzLmhlYWRlckRhdGE/LmNsaWVudCxcclxuICAgICAgZnJvbURhdGU6IHRoaXMuaGVhZGVyRGF0YT8uZGF0ZT8uc3RhcnREYXRlLFxyXG4gICAgdG9EYXRlOiB0aGlzLmhlYWRlckRhdGE/LmRhdGU/LmVuZERhdGUsXHJcbiAgICAgIHN0b3JlSWQ6IHRoaXMuc3RvcmVJZGFycmF5XHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuc2VydmljZS56b25lRHdlbGxUaW1lKG9iaik/LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmKHJlcyAmJiByZXMuY29kZSA9PT0gMjAwKXtcclxuICAgICAgICAgICAgdGhpcy56b25lRHdlbGxUaW1lU3BsaXREYXRhID0gcmVzLmRhdGEuem9uZUR3ZWxsVGltZVNwbGl0RGF0YTtcclxuICAgICAgICAgIH0gZWxzZXtcclxuICAgICAgICAgICAgdGhpcy56b25lRHdlbGxUaW1lU3BsaXREYXRhID1bXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnpvbmVEd2VsbFRpbWVTcGxpdERhdGE9W107XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfSlcclxuICAgIFxyXG4gIH1cclxuICBnZXRab25lVmFsdWUoKXtcclxuICAgIGNvbnN0IG9iaiA9IHtcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuaGVhZGVyRGF0YT8uY2xpZW50LFxyXG4gICAgICBmcm9tRGF0ZTogdGhpcy5oZWFkZXJEYXRhPy5kYXRlPy5zdGFydERhdGUsXHJcbiAgICB0b0RhdGU6IHRoaXMuaGVhZGVyRGF0YT8uZGF0ZT8uZW5kRGF0ZSxcclxuICAgICAgc3RvcmVJZDogdGhpcy5zdG9yZUlkYXJyYXlcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5zZXJ2aWNlLnN0b3JlT3BlcmF0aW9uKG9iaik/LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmKHJlcyAmJiByZXMuY29kZSA9PT0gMjAwKXtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZU9wZXJhdGlvbkRhdGEgPSByZXMuZGF0YS5zdG9yZU9wZXJhdGlvbkRhdGFbMF07XHJcbiAgICAgICAgICB9IGVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmVPcGVyYXRpb25EYXRhID1bXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnN0b3JlT3BlcmF0aW9uRGF0YT1bXTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICB9KVxyXG4gICAgXHJcbiAgfVxyXG5cclxuICBzdG9yZVZpZXcoZGF0YTphbnkpe1xyXG4gICAgY29uc3QgZGF0YXZhbHVlOiBhbnkgPSBKU09OLnBhcnNlKFxyXG4gICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImhlYWRlci1maWx0ZXJzXCIpIHx8IFwie31cIlxyXG4gICAgKTtcclxuICAgIGNvbnN0IG1hdGNoZWRTdG9yZXMgPSBkYXRhdmFsdWUuc3RvcmVzLmZpbHRlcigoc3RvcmU6IGFueSkgPT4gc3RvcmUuY2hlY2tlZCAmJiBzdG9yZS5zdG9yZUlkID09PSBkYXRhKTtcclxuICAgIC8vIFVwZGF0ZSB0aGUgYmFsYW5jZSBzdG9yZXMgKHRob3NlIG5vdCBpbiB0aGUgbWF0Y2hlZCBzdG9yZXMpIHRvIHNldCB0aGVpciBjaGVja2VkIHByb3BlcnR5IHRvIGZhbHNlXHJcbiAgICBkYXRhdmFsdWUuc3RvcmVzLmZvckVhY2goKHN0b3JlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKCFtYXRjaGVkU3RvcmVzLnNvbWUoKG1hdGNoZWRTdG9yZTphbnkpID0+IG1hdGNoZWRTdG9yZS5zdG9yZUlkID09PSBzdG9yZS5zdG9yZUlkKSkge1xyXG4gICAgICAgIHN0b3JlLmNoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSk7IFxyXG4gICAgZGF0YXZhbHVlLnN0b3JlID0gZGF0YTtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiaGVhZGVyLWZpbHRlcnNcIiwgSlNPTi5zdHJpbmdpZnkoZGF0YXZhbHVlKSk7XHJcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKVxyXG4gICAgdGhpcy5ncy5kYXRhUmFuZ2VWYWx1ZS5uZXh0KGRhdGF2YWx1ZSlcclxuICAgIHRoaXMuZ3MubWFuYWdlUmVmcmVzaFRyaWdnZXIubmV4dCh0cnVlKTtcclxuICB9XHJcbiAgZ29Ub1pvbmUoKXtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9tYW5hZ2Uvem9uZXNcIl0pOyBcclxuXHJcbiAgfVxyXG5cclxuICBjdXJyZW50SW5kZXg6IG51bWJlciA9IDA7XHJcbiAgaW50ZXJ2YWxJZDogYW55O1xyXG5cclxuXHJcbiAgcHJldlNsaWRlKCkge1xyXG4gICAgaWYgKHRoaXMuY3VycmVudEluZGV4ID4gMCkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRJbmRleC0tO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmV4dFNsaWRlKCkge1xyXG4gICAgaWYgKHRoaXMuY3VycmVudEluZGV4IDwgdGhpcy5yZWNhcHNHcm91cGVkLmxlbmd0aCAtIDEpIHtcclxuICAgICAgdGhpcy5jdXJyZW50SW5kZXgrKztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdvVG9TbGlkZShpbmRleDogbnVtYmVyKSB7XHJcbiAgICBpZiAoaW5kZXggPj0gMCAmJiBpbmRleCA8IHRoaXMucmVjYXBzR3JvdXBlZC5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5jdXJyZW50SW5kZXggPSBpbmRleDtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxufVxyXG5cclxuaW50ZXJmYWNlIERhdGFDb250ZXh0IHtcclxuICBjYXRlZ29yeTogc3RyaW5nO1xyXG4gIHZhbHVlOiBudW1iZXI7XHJcbiAgY291bnQ6IG51bWJlcjtcclxufVxyXG5mdW5jdGlvbiBnZXREYXlzQmV0d2VlbkRhdGVzKGZyb21EYXRlOiBzdHJpbmcsIHRvRGF0ZTogc3RyaW5nKTogbnVtYmVyIHtcclxuICAvLyBQYXJzZSB0aGUgZGF0ZSBzdHJpbmdzIGludG8gRGF0ZSBvYmplY3RzXHJcbiAgY29uc3Qgc3RhcnQgPSBuZXcgRGF0ZShmcm9tRGF0ZSk7XHJcbiAgY29uc3QgZW5kID0gbmV3IERhdGUodG9EYXRlKTtcclxuXHJcbiAgLy8gQ2FsY3VsYXRlIHRoZSBkaWZmZXJlbmNlIGluIG1pbGxpc2Vjb25kc1xyXG4gIGNvbnN0IGRpZmZlcmVuY2VJbk1zID0gZW5kLmdldFRpbWUoKSAtIHN0YXJ0LmdldFRpbWUoKTtcclxuXHJcbiAgLy8gQ29udmVydCBtaWxsaXNlY29uZHMgdG8gZGF5cyAoMSBkYXkgPSA4NjQwMDAwMCBtaWxsaXNlY29uZHMpXHJcbiAgY29uc3QgbWlsbGlzZWNvbmRzUGVyRGF5ID0gODY0MDAwMDA7XHJcbiAgY29uc3QgZGlmZmVyZW5jZUluRGF5cyA9IE1hdGguZmxvb3IoZGlmZmVyZW5jZUluTXMgLyBtaWxsaXNlY29uZHNQZXJEYXkpO1xyXG5cclxuICByZXR1cm4gZGlmZmVyZW5jZUluRGF5cztcclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOCBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtYm9yZGVyIGgtMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGVsbGlwc2UxIGJvcmRlci0wIHB4LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBbbmdiVG9vbHRpcF09XCJmb290ZmFsbFRvb2x0aXBcIiBwbGFjZW1lbnQ9XCJyaWdodFwiIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBEaXNwbGF5IGZvb3RmYWxsIGNvdW50IG9yICctLScgaWYgbm90IGF2YWlsYWJsZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmQtbGFiZWwgaGVhZGVyXCI+e3sgZ2V0Q2FyZERhdGE/LmZvb3RmYWxsPy5jb3VudCA/IGdldENhcmREYXRhLmZvb3RmYWxsLmNvdW50LnRvTG9jYWxlU3RyaW5nKCdlbi1JTicpIDogJy0tJyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1Yi1oZWFkZXJcIj57e2Zvb3RmYWxsTmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBTd2l0Y2ggdG9nZ2xlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIHRleHQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1zd2l0Y2ggdGV4dC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgbXQtMVwiIHR5cGU9XCJjaGVja2JveFwiIGlkPVwiZmxleFN3aXRjaENoZWNrRGVmYXVsdFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpc0F2ZXJhZ2VcIiAoY2hhbmdlKT1cInRvZ2dsZUF2ZXJhZ2UoJGV2ZW50KVwiIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgbXQtNVwiPkF2ZXJhZ2U8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPG5nLXRlbXBsYXRlICNmb290ZmFsbFRvb2x0aXA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b29sdGlwLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJ0b29sdGlwLXRpdGxlIHRleHQtc3RhcnRcIj5Gb290ZmFsbDwvaDU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LXN0YXJ0XCI+VG90YWwgdW5pcXVlIHdhbGstaW5zIGludG8gdGhlIHNlbGVjdGVkIHN0b3Jlcy48L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPVwidGV4dC1zdGFydFwiPnt7Z2V0Q2FyZERhdGE/LmZvb3RmYWxsPy5jb3VudH19PC9oND5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9vdGVyIGNsYXNzPVwidG9vbHRpcC1mb290ZXIgdGV4dC1zdGFydFwiPiA8c3BhbiBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIhZ2V0Q2FyZEdyYXBoRGF0YT8uZm9vdGZhbGw/LlByZXZpb3VzVmFyaWF0aW9uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDE4IDE4XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjMyOF80NjU0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSA5TDYuNzUgNC4yNUw0LjI1IDYuNzVMMC41IDNNMTEuNSA5SDguNU0xMS41IDlWNlwiIHN0cm9rZT1cIiNEOTJEMjBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjMyOF80NjU0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJnZXRDYXJkR3JhcGhEYXRhPy5mb290ZmFsbD8uUHJldmlvdXNWYXJpYXRpb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8zMjE2XzExOClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgM0w2Ljc1IDcuNzVMNC4yNSA1LjI1TDAuNSA5TTExLjUgM0g4LjVNMTEuNSAzVjZcIiBzdHJva2U9XCIjMDM5ODU1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzMyMTZfMTE4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiAgY2xhc3M9XCJtdC0yIG1zLTJcIj48c3BhbiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIiAqbmdJZj1cImdldENhcmRHcmFwaERhdGE/LmZvb3RmYWxsPy5QcmV2aW91c0RhdGEgIT09MFwiPnt7Z2V0Q2FyZEdyYXBoRGF0YT8uZm9vdGZhbGw/LlByZXZpb3VzRGF0YSA/IGdldENhcmRHcmFwaERhdGE/LmZvb3RmYWxsPy5QcmV2aW91c0RhdGE6Jy0tJ319JTwvc3Bhbj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3ZWVrLWZvbnRcIj4gKDEyMykgdnMgUHJldmlvdXMgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImRhdGVUeXBlID09PSdkYWlseSdcIj5kYXk8L3NwYW4+PHNwYW4gKm5nSWY9XCJkYXRlVHlwZSA9PT0nd2Vla2x5J1wiPndlZWs8L3NwYW4+IDxzcGFuICpuZ0lmPVwiZGF0ZVR5cGUgPT09J21vbnRobHknXCI+bW9udGg8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48L2Zvb3Rlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHAtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTAgcGUtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY2FyZGxvYWRpbmdcIiBjbGFzcz1cInRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwibG9hZGVyLWltZ1wiIHNyYz1cImFzc2V0cy90YW5nby9sYXlvdXQvTG9hZGVyLmdpZlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNhcmROb2RhdGFcIiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHBiLTAgcHgtMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImZvb3RpbWctbm9kYXRhMVwiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YTEuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGEtdGl0bGUxXCI+Tm8gZGF0YSBmb3VuZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJub2RhdGEtc3ViXCI+VGhlcmUgaXMgbm8gcmVzdWx0IGZvciB0aGlzIGNvbnZlcnNpb24gZnVubmVsPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhY2FyZE5vZGF0YVwiIGNsYXNzPVwidGV4dC1jZW50ZXJcIiBpZD1cIkZvb3RmYWxsXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTIgbXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAgY2xhc3M9XCJtdC0xIGN1cnNvci1wb2ludGVyIGZzLTVcIiBbbmdDbGFzc109XCJkYXRlVHlwZSA9PT0nZGFpbHknID8gJ3RleHQtcHJpbWFyeScgOicnXCIgKGNsaWNrKT1cImRhdGVWYWx1ZSgnZGFpbHknKVwiPjFEPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICBjbGFzcz1cIm10LTEgY3Vyc29yLXBvaW50ZXIgZnMtNVwiICBbbmdDbGFzc109XCJkYXRlVHlwZSA9PT0nd2Vla2x5JyA/ICd0ZXh0LXByaW1hcnknIDonJ1wiICAoY2xpY2spPVwiZGF0ZVZhbHVlKCd3ZWVrbHknKVwiPjFXPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICBjbGFzcz1cIm10LTEgY3Vyc29yLXBvaW50ZXIgZnMtNVwiICBbbmdDbGFzc109XCJkYXRlVHlwZSA9PT0nbW9udGhseScgPyAndGV4dC1wcmltYXJ5JyA6JydcIiAgKGNsaWNrKT1cImRhdGVWYWx1ZSgnbW9udGhseScpXCI+MU08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIG1zLTIgcC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIhZ2V0Q2FyZEdyYXBoRGF0YT8uZm9vdGZhbGw/LlByZXZpb3VzVmFyaWF0aW9uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMzI4XzQ2NTQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSA5TDYuNzUgNC4yNUw0LjI1IDYuNzVMMC41IDNNMTEuNSA5SDguNU0xMS41IDlWNlwiIHN0cm9rZT1cIiNEOTJEMjBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIzMjhfNDY1NFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJnZXRDYXJkR3JhcGhEYXRhPy5mb290ZmFsbD8uUHJldmlvdXNWYXJpYXRpb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzMyMTZfMTE4KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgM0w2Ljc1IDcuNzVMNC4yNSA1LjI1TDAuNSA5TTExLjUgM0g4LjVNMTEuNSAzVjZcIiBzdHJva2U9XCIjMDM5ODU1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8zMjE2XzExOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2V0Q2FyZEdyYXBoRGF0YT8uZm9vdGZhbGw/LlByZXZpb3VzRGF0YSA9PT0wXCIgY2xhc3M9XCJwZXJjZW50LXZhbHVlIG1zLTJcIj4wJTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICBjbGFzcz1cIm10LTIgbXMtMlwiPjxzcGFuIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiICpuZ0lmPVwiZ2V0Q2FyZEdyYXBoRGF0YT8uZm9vdGZhbGw/LlByZXZpb3VzRGF0YSAhPT0wXCI+e3tnZXRDYXJkR3JhcGhEYXRhPy5mb290ZmFsbD8uUHJldmlvdXNEYXRhID8gZ2V0Q2FyZEdyYXBoRGF0YT8uZm9vdGZhbGw/LlByZXZpb3VzRGF0YTonLS0nfX0lPC9zcGFuPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwid2Vlay1mb250XCI+IHZzIFByZXZpb3VzIDxzcGFuICpuZ0lmPVwiZGF0ZVR5cGUgPT09J2RhaWx5J1wiPmRheTwvc3Bhbj48c3BhbiAqbmdJZj1cImRhdGVUeXBlID09PSd3ZWVrbHknXCI+d2Vlazwvc3Bhbj4gPHNwYW4gKm5nSWY9XCJkYXRlVHlwZSA9PT0nbW9udGhseSdcIj5tb250aDwvc3Bhbj4gPC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02IDEyTDEwIDhMNiA0XCIgc3Ryb2tlPVwiIzk4QTJCM1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgbGVmdC01MFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02IDEyTDEwIDhMNiA0XCIgc3Ryb2tlPVwiIzk4QTJCM1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGVsbGlwc2UxIGJvcmRlci0wIHB4LTNcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gW25nYlRvb2x0aXBdPVwiY29udmVyc2lvblRvb2x0aXBcIiBwbGFjZW1lbnQ9XCJsZWZ0XCIgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZC1sYWJlbCBoZWFkZXJcIj57e3ZhbHVlQ29udmVyc2lvblJhdGUgID8gdmFsdWVDb252ZXJzaW9uUmF0ZSA6ICctLSd9fSU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1Yi1oZWFkZXJcIj5Db252ZXJzaW9uIDxzcGFuICpuZ0lmPVwiY29udmVyc2lvblZhbHVlID09PSdmb290ZmFsbCcgfHwgY29udmVyc2lvblZhbHVlID09PSdlbmdhZ2VycycgfHwgY29udmVyc2lvblZhbHVlID09PSdQb3RlbnRpYWwgQnV5ZXJzJyB8fCBjb252ZXJzaW9uVmFsdWUgPT09J05vQiBEZXJpdmVkJyBcIj4gLSB7e2NvbnZlcnNpb25WYWx1ZSB8IHRpdGxlY2FzZX19PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxuZy10ZW1wbGF0ZSAjY29udmVyc2lvblRvb2x0aXA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b29sdGlwLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJ0b29sdGlwLXRpdGxlIHRleHQtc3RhcnRcIj5Db252ZXJzaW9uIFJhdGU8L2g1PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1zdGFydFwiPlRvdGFsICUgb2YgJmx0O2VuZ2FnZXJzJmd0OyB3aG8gc3BlbnQgbW9yZSB0aGFuICZsdDsxMG1pbnMmZ3Q7IGluIHRoZSBzdG9yZS4uPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz1cInRleHQtc3RhcnRcIj57e3ZhbHVlQ29udmVyc2lvblJhdGV9fTwvaDQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvb3RlciBjbGFzcz1cInRvb2x0aXAtZm9vdGVyIHRleHQtc3RhcnRcIj4gPHNwYW4gY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIWdldENhcmRHcmFwaERhdGE/LmNvbnZlcnNpb24/LlByZXZpb3VzVmFyaWF0aW9uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDE4IDE4XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjMyOF80NjU0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSA5TDYuNzUgNC4yNUw0LjI1IDYuNzVMMC41IDNNMTEuNSA5SDguNU0xMS41IDlWNlwiIHN0cm9rZT1cIiNEOTJEMjBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjMyOF80NjU0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJnZXRDYXJkR3JhcGhEYXRhPy5jb252ZXJzaW9uPy5QcmV2aW91c1ZhcmlhdGlvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzMyMTZfMTE4KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSAzTDYuNzUgNy43NUw0LjI1IDUuMjVMMC41IDlNMTEuNSAzSDguNU0xMS41IDNWNlwiIHN0cm9rZT1cIiMwMzk4NTVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMzIxNl8xMThcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm10LTIgbXMtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb252ZXJzaW9uVmFsdWUgPT09J2Zvb3RmYWxsJyAmJiBnZXRDYXJkR3JhcGhEYXRhPy5jb252ZXJzaW9uPy5mb290ZmFsbC5QcmV2aW91c0RhdGEgPT09MFwiIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPjAlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb252ZXJzaW9uVmFsdWUgPT09J2Zvb3RmYWxsJyAmJiBnZXRDYXJkR3JhcGhEYXRhPy5jb252ZXJzaW9uPy5mb290ZmFsbC5QcmV2aW91c0RhdGEgIT09MFwiIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPnt7Z2V0Q2FyZEdyYXBoRGF0YT8uY29udmVyc2lvbj8uZm9vdGZhbGwuUHJldmlvdXNEYXRhID8gZ2V0Q2FyZEdyYXBoRGF0YT8uY29udmVyc2lvbj8uZm9vdGZhbGwuUHJldmlvdXNEYXRhOictLSd9fSU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbnZlcnNpb25WYWx1ZSA9PT0nZW5nYWdlcnMnICYmIGdldENhcmRHcmFwaERhdGE/LmNvbnZlcnNpb24/LmVuZ2FnZXJzLlByZXZpb3VzRGF0YSA9PT0wXCIgY2xhc3M9XCJwZXJjZW50LXZhbHVlXCI+MCU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbnZlcnNpb25WYWx1ZSA9PT0nZW5nYWdlcnMnICYmIGdldENhcmRHcmFwaERhdGE/LmNvbnZlcnNpb24/LmVuZ2FnZXJzLlByZXZpb3VzRGF0YSAhPT0wXCIgY2xhc3M9XCJwZXJjZW50LXZhbHVlXCI+e3tnZXRDYXJkR3JhcGhEYXRhPy5jb252ZXJzaW9uPy5lbmdhZ2Vycy5QcmV2aW91c0RhdGEgPyBnZXRDYXJkR3JhcGhEYXRhPy5jb252ZXJzaW9uPy5lbmdhZ2Vycy5QcmV2aW91c0RhdGE6Jy0tJ319JTwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbnZlcnNpb25WYWx1ZSA9PT0nUG90ZW50aWFsIEJ1eWVycycgJiYgZ2V0Q2FyZEdyYXBoRGF0YT8uY29udmVyc2lvbj8ucG90ZW50aWFsQnV5ZXJzLlByZXZpb3VzRGF0YSA9PT0wXCIgY2xhc3M9XCJwZXJjZW50LXZhbHVlXCI+MCU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbnZlcnNpb25WYWx1ZSA9PT0nUG90ZW50aWFsIEJ1eWVycycgJiYgZ2V0Q2FyZEdyYXBoRGF0YT8uY29udmVyc2lvbj8ucG90ZW50aWFsQnV5ZXJzLlByZXZpb3VzRGF0YSAhPT0wXCIgY2xhc3M9XCJwZXJjZW50LXZhbHVlXCI+e3tnZXRDYXJkR3JhcGhEYXRhPy5jb252ZXJzaW9uPy5wb3RlbnRpYWxCdXllcnMuUHJldmlvdXNEYXRhID8gZ2V0Q2FyZEdyYXBoRGF0YT8uY29udmVyc2lvbj8ucG90ZW50aWFsQnV5ZXJzLlByZXZpb3VzRGF0YTonLS0nfX0lPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb252ZXJzaW9uVmFsdWUgPT09J05vQiBEZXJpdmVkJ1wiIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPi0tJTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29udmVyc2lvblZhbHVlID09PScnICYmIGdldENhcmRHcmFwaERhdGE/LmNvbnZlcnNpb24/LlByZXZpb3VzRGF0YSA9PT0wXCIgY2xhc3M9XCJwZXJjZW50LXZhbHVlXCI+MCU8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29udmVyc2lvblZhbHVlID09PScnICYmIGdldENhcmRHcmFwaERhdGE/LmNvbnZlcnNpb24/LlByZXZpb3VzRGF0YSAhPT0wXCIgIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPnt7Z2V0Q2FyZEdyYXBoRGF0YT8uY29udmVyc2lvbj8uUHJldmlvdXNEYXRhID8gZ2V0Q2FyZEdyYXBoRGF0YT8uY29udmVyc2lvbj8uUHJldmlvdXNEYXRhOictLSd9fSU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwid2Vlay1mb250XCI+IHZzIFByZXZpb3VzICA8c3BhbiAqbmdJZj1cImRhdGVUeXBlID09PSdkYWlseSdcIj5kYXk8L3NwYW4+PHNwYW4gKm5nSWY9XCJkYXRlVHlwZSA9PT0nd2Vla2x5J1wiPndlZWs8L3NwYW4+IDxzcGFuICpuZ0lmPVwiZGF0ZVR5cGUgPT09J21vbnRobHknXCI+bW9udGg8L3NwYW4+PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb290ZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLTEwMHB4IHB0LTEwIHB4LTMgcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoLTc1cHggY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKm5nSWY9XCJjb252ZXJzaW9uVmFsdWUgIT09J2Zvb3RmYWxsJ1wiIHBsYWNlbWVudD1cInRvcFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwiRm9vdGZhbGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlVmFsdWUoJ2Zvb3RmYWxsJylcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNCAxOEg5LjVWMTkuMjVDOS41IDE5Ljk3OTMgOS4yMTAyNyAyMC42Nzg4IDguNjk0NTQgMjEuMTk0NUM4LjE3ODgyIDIxLjcxMDMgNy40NzkzNSAyMiA2Ljc1IDIyQzYuMDIwNjUgMjIgNS4zMjExOCAyMS43MTAzIDQuODA1NDYgMjEuMTk0NUM0LjI4OTczIDIwLjY3ODggNCAxOS45NzkzIDQgMTkuMjVWMThaTTggNi4xMTk5OUMxMCA2LjExOTk5IDExIDguOTk5OTkgMTEgMTFDMTEgMTIgMTAuNSAxMyAxMCAxNC41TDkuNSAxNkg0QzQgMTUgMy41IDEzLjUgMy41IDExQzMuNSA4LjQ5OTk5IDUuNDk4IDYuMTE5OTkgOCA2LjExOTk5Wk0yMC4wNTQgMTQuMDk4TDE5LjgzNyAxNS4zMjlDMTkuNzAyMyAxNi4wMzk2IDE5LjI5MzEgMTYuNjY4NiAxOC42OTggMTcuMDc5NkMxOC4xMDI5IDE3LjQ5MDcgMTcuMzY5OCAxNy42NTA4IDE2LjY1NzYgMTcuNTI1MkMxNS45NDUzIDE3LjM5OTYgMTUuMzExMSAxNi45OTg0IDE0Ljg5MjUgMTYuNDA4NkMxNC40NzM5IDE1LjgxODggMTQuMzA0NSAxNS4wODc4IDE0LjQyMSAxNC4zNzRMMTQuNjM3IDEzLjE0NEwyMC4wNTQgMTQuMDk4Wk0xOC4xNzggMS43MDQ5OUMyMC42NDIgMi4xMzg5OSAyMi4xOTYgNC44Mjk5OSAyMS43NjIgNy4yOTE5OUMyMS4zMjggOS43NTM5OSAyMC41NzUgMTEuMTQ0IDIwLjQwMiAxMi4xMjlMMTQuOTg1IDExLjE3NEwxNC43NTMgOS42MDk5OUMxNC41MjEgOC4wNDU5OSAxNC4yMDMgNi45NzM5OSAxNC4zNzYgNS45ODk5OUMxNC43MjMgNC4wMTk5OSAxNi4yMDggMS4zNTc5OSAxOC4xNzggMS43MDQ5OVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjOThBMkIzXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgcGxhY2VtZW50PVwidG9wXCIgbmdiVG9vbHRpcD1cIkZvb3RmYWxsXCIgKm5nSWY9XCJjb252ZXJzaW9uVmFsdWUgPT09J2Zvb3RmYWxsJ1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNCAxOEg5LjVWMTkuMjVDOS41IDE5Ljk3OTMgOS4yMTAyNyAyMC42Nzg4IDguNjk0NTQgMjEuMTk0NUM4LjE3ODgyIDIxLjcxMDMgNy40NzkzNSAyMiA2Ljc1IDIyQzYuMDIwNjUgMjIgNS4zMjExOCAyMS43MTAzIDQuODA1NDYgMjEuMTk0NUM0LjI4OTczIDIwLjY3ODggNCAxOS45NzkzIDQgMTkuMjVWMThaTTggNi4xMTk5OUMxMCA2LjExOTk5IDExIDguOTk5OTkgMTEgMTFDMTEgMTIgMTAuNSAxMyAxMCAxNC41TDkuNSAxNkg0QzQgMTUgMy41IDEzLjUgMy41IDExQzMuNSA4LjQ5OTk5IDUuNDk4IDYuMTE5OTkgOCA2LjExOTk5Wk0yMC4wNTQgMTQuMDk4TDE5LjgzNyAxNS4zMjlDMTkuNzAyMyAxNi4wMzk2IDE5LjI5MzEgMTYuNjY4NiAxOC42OTggMTcuMDc5NkMxOC4xMDI5IDE3LjQ5MDcgMTcuMzY5OCAxNy42NTA4IDE2LjY1NzYgMTcuNTI1MkMxNS45NDUzIDE3LjM5OTYgMTUuMzExMSAxNi45OTg0IDE0Ljg5MjUgMTYuNDA4NkMxNC40NzM5IDE1LjgxODggMTQuMzA0NSAxNS4wODc4IDE0LjQyMSAxNC4zNzRMMTQuNjM3IDEzLjE0NEwyMC4wNTQgMTQuMDk4Wk0xOC4xNzggMS43MDQ5OUMyMC42NDIgMi4xMzg5OSAyMi4xOTYgNC44Mjk5OSAyMS43NjIgNy4yOTE5OUMyMS4zMjggOS43NTM5OSAyMC41NzUgMTEuMTQ0IDIwLjQwMiAxMi4xMjlMMTQuOTg1IDExLjE3NEwxNC43NTMgOS42MDk5OUMxNC41MjEgOC4wNDU5OSAxNC4yMDMgNi45NzM5OSAxNC4zNzYgNS45ODk5OUMxNC43MjMgNC4wMTk5OSAxNi4yMDggMS4zNTc5OSAxOC4xNzggMS43MDQ5OVpcIiBmaWxsPVwiIzAwQTNGRlwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoLTc1cHggY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBwbGFjZW1lbnQ9XCJ0b3BcIiBuZ2JUb29sdGlwPVwiRW5nYWdlcnNcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKm5nSWY9XCJjb252ZXJzaW9uVmFsdWUgIT09J2VuZ2FnZXJzJ1wiIChjbGljayk9XCJjaGFuZ2VWYWx1ZSgnZW5nYWdlcnMnKVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTcgMjFWMTlDMTcgMTcuOTM5MSAxNi41Nzg2IDE2LjkyMTcgMTUuODI4NCAxNi4xNzE2QzE1LjA3ODMgMTUuNDIxNCAxNC4wNjA5IDE1IDEzIDE1SDVDMy45MzkxMyAxNSAyLjkyMTcyIDE1LjQyMTQgMi4xNzE1NyAxNi4xNzE2QzEuNDIxNDMgMTYuOTIxNyAxIDE3LjkzOTEgMSAxOVYyMU0yMyAyMVYxOUMyMi45OTkzIDE4LjExMzcgMjIuNzA0NCAxNy4yNTI4IDIyLjE2MTQgMTYuNTUyM0MyMS42MTg0IDE1Ljg1MTkgMjAuODU4MSAxNS4zNTE2IDIwIDE1LjEzTTE2IDMuMTNDMTYuODYwNCAzLjM1MDMgMTcuNjIzIDMuODUwNyAxOC4xNjc2IDQuNTUyMzFDMTguNzEyMiA1LjI1MzkyIDE5LjAwNzggNi4xMTY4MyAxOS4wMDc4IDcuMDA1QzE5LjAwNzggNy44OTMxNyAxOC43MTIyIDguNzU2MDggMTguMTY3NiA5LjQ1NzY5QzE3LjYyMyAxMC4xNTkzIDE2Ljg2MDQgMTAuNjU5NyAxNiAxMC44OE0xMyA3QzEzIDkuMjA5MTQgMTEuMjA5MSAxMSA5IDExQzYuNzkwODYgMTEgNSA5LjIwOTE0IDUgN0M1IDQuNzkwODYgNi43OTA4NiAzIDkgM0MxMS4yMDkxIDMgMTMgNC43OTA4NiAxMyA3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzk4QTJCM1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBwbGFjZW1lbnQ9XCJ0b3BcIiBuZ2JUb29sdGlwPVwiRW5nYWdlcnNcIiAqbmdJZj1cImNvbnZlcnNpb25WYWx1ZSA9PT0nZW5nYWdlcnMnXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNyAyMVYxOUMxNyAxNy45MzkxIDE2LjU3ODYgMTYuOTIxNyAxNS44Mjg0IDE2LjE3MTZDMTUuMDc4MyAxNS40MjE0IDE0LjA2MDkgMTUgMTMgMTVINUMzLjkzOTEzIDE1IDIuOTIxNzIgMTUuNDIxNCAyLjE3MTU3IDE2LjE3MTZDMS40MjE0MyAxNi45MjE3IDEgMTcuOTM5MSAxIDE5VjIxTTIzIDIxVjE5QzIyLjk5OTMgMTguMTEzNyAyMi43MDQ0IDE3LjI1MjggMjIuMTYxNCAxNi41NTIzQzIxLjYxODQgMTUuODUxOSAyMC44NTgxIDE1LjM1MTYgMjAgMTUuMTNNMTYgMy4xM0MxNi44NjA0IDMuMzUwMyAxNy42MjMgMy44NTA3IDE4LjE2NzYgNC41NTIzMUMxOC43MTIyIDUuMjUzOTIgMTkuMDA3OCA2LjExNjgzIDE5LjAwNzggNy4wMDVDMTkuMDA3OCA3Ljg5MzE3IDE4LjcxMjIgOC43NTYwOCAxOC4xNjc2IDkuNDU3NjlDMTcuNjIzIDEwLjE1OTMgMTYuODYwNCAxMC42NTk3IDE2IDEwLjg4TTEzIDdDMTMgOS4yMDkxNCAxMS4yMDkxIDExIDkgMTFDNi43OTA4NiAxMSA1IDkuMjA5MTQgNSA3QzUgNC43OTA4NiA2Ljc5MDg2IDMgOSAzQzExLjIwOTEgMyAxMyA0Ljc5MDg2IDEzIDdaXCIgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoLTc1cHggY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBwbGFjZW1lbnQ9XCJ0b3BcIiBuZ2JUb29sdGlwPVwiUG90ZW50aWFsIEJ1eWVyc1wiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAqbmdJZj1cImNvbnZlcnNpb25WYWx1ZSAhPT0nUG90ZW50aWFsIEJ1eWVycydcIiAoY2xpY2spPVwiY2hhbmdlVmFsdWUoJ3BvdGVudGlhbEJ1eWVycycpXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggb3BhY2l0eT1cIjAuM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yMC4wMDM5IDE4LjAwMkg0LjAwMzkxQzMuNDAzOTEgMTguMDAyIDMuMDAzOTEgMTcuNjAyIDMuMDAzOTEgMTcuMDAyVjcuMDAxOTVDMy4wMDM5MSA2LjQwMTk1IDMuNDAzOTEgNi4wMDE5NSA0LjAwMzkxIDYuMDAxOTVIMjAuMDAzOUMyMC42MDM5IDYuMDAxOTUgMjEuMDAzOSA2LjQwMTk1IDIxLjAwMzkgNy4wMDE5NVYxNy4wMDJDMjEuMDAzOSAxNy42MDIgMjAuNjAzOSAxOC4wMDIgMjAuMDAzOSAxOC4wMDJaTTEyLjAwMzkgOC4wMDE5NUMxMC4zMDM5IDguMDAxOTUgOS4wMDM5MSA5LjgwMTk1IDkuMDAzOTEgMTIuMDAyQzkuMDAzOTEgMTQuMjAyIDEwLjMwMzkgMTYuMDAyIDEyLjAwMzkgMTYuMDAyQzEzLjcwMzkgMTYuMDAyIDE1LjAwMzkgMTQuMjAyIDE1LjAwMzkgMTIuMDAyQzE1LjAwMzkgOS44MDE5NSAxMy43MDM5IDguMDAxOTUgMTIuMDAzOSA4LjAwMTk1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM5OEEyQjNcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE4LjAwMzkgNi4wMDE5NUgyMC4wMDM5QzIwLjYwMzkgNi4wMDE5NSAyMS4wMDM5IDYuNDAxOTUgMjEuMDAzOSA3LjAwMTk1VjkuMDAxOTVDMTkuMzAzOSA5LjAwMTk1IDE4LjAwMzkgNy43MDE5NSAxOC4wMDM5IDYuMDAxOTVaTTYuMDAzOTEgNi4wMDE5NUg0LjAwMzkxQzMuNDAzOTEgNi4wMDE5NSAzLjAwMzkxIDYuNDAxOTUgMy4wMDM5MSA3LjAwMTk1VjkuMDAxOTVDNC43MDM5MSA5LjAwMTk1IDYuMDAzOTEgNy43MDE5NSA2LjAwMzkxIDYuMDAxOTVaTTIxLjAwMzkgMTcuMDAyVjE1LjAwMkMxOS4zMDM5IDE1LjAwMiAxOC4wMDM5IDE2LjMwMiAxOC4wMDM5IDE4LjAwMkgyMC4wMDM5QzIwLjYwMzkgMTguMDAyIDIxLjAwMzkgMTcuNjAyIDIxLjAwMzkgMTcuMDAyWk0zLjAwMzkxIDE1LjAwMlYxNy4wMDJDMy4wMDM5MSAxNy42MDIgMy40MDM5MSAxOC4wMDIgNC4wMDM5MSAxOC4wMDJINi4wMDM5MUM2LjAwMzkxIDE2LjMwMiA0LjcwMzkxIDE1LjAwMiAzLjAwMzkxIDE1LjAwMlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjOThBMkIzXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgcGxhY2VtZW50PVwidG9wXCIgbmdiVG9vbHRpcD1cIlBvdGVudGlhbCBCdXllcnNcIiAqbmdJZj1cImNvbnZlcnNpb25WYWx1ZSA9PT0nUG90ZW50aWFsIEJ1eWVycydcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBvcGFjaXR5PVwiMC4zXCIgZD1cIk0yMC4wMDM5IDE4LjAwMkg0LjAwMzkxQzMuNDAzOTEgMTguMDAyIDMuMDAzOTEgMTcuNjAyIDMuMDAzOTEgMTcuMDAyVjcuMDAxOTVDMy4wMDM5MSA2LjQwMTk1IDMuNDAzOTEgNi4wMDE5NSA0LjAwMzkxIDYuMDAxOTVIMjAuMDAzOUMyMC42MDM5IDYuMDAxOTUgMjEuMDAzOSA2LjQwMTk1IDIxLjAwMzkgNy4wMDE5NVYxNy4wMDJDMjEuMDAzOSAxNy42MDIgMjAuNjAzOSAxOC4wMDIgMjAuMDAzOSAxOC4wMDJaTTEyLjAwMzkgOC4wMDE5NUMxMC4zMDM5IDguMDAxOTUgOS4wMDM5MSA5LjgwMTk1IDkuMDAzOTEgMTIuMDAyQzkuMDAzOTEgMTQuMjAyIDEwLjMwMzkgMTYuMDAyIDEyLjAwMzkgMTYuMDAyQzEzLjcwMzkgMTYuMDAyIDE1LjAwMzkgMTQuMjAyIDE1LjAwMzkgMTIuMDAyQzE1LjAwMzkgOS44MDE5NSAxMy43MDM5IDguMDAxOTUgMTIuMDAzOSA4LjAwMTk1WlwiIGZpbGw9XCIjMDBBM0ZGXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xOC4wMDM5IDYuMDAxOTVIMjAuMDAzOUMyMC42MDM5IDYuMDAxOTUgMjEuMDAzOSA2LjQwMTk1IDIxLjAwMzkgNy4wMDE5NVY5LjAwMTk1QzE5LjMwMzkgOS4wMDE5NSAxOC4wMDM5IDcuNzAxOTUgMTguMDAzOSA2LjAwMTk1Wk02LjAwMzkxIDYuMDAxOTVINC4wMDM5MUMzLjQwMzkxIDYuMDAxOTUgMy4wMDM5MSA2LjQwMTk1IDMuMDAzOTEgNy4wMDE5NVY5LjAwMTk1QzQuNzAzOTEgOS4wMDE5NSA2LjAwMzkxIDcuNzAxOTUgNi4wMDM5MSA2LjAwMTk1Wk0yMS4wMDM5IDE3LjAwMlYxNS4wMDJDMTkuMzAzOSAxNS4wMDIgMTguMDAzOSAxNi4zMDIgMTguMDAzOSAxOC4wMDJIMjAuMDAzOUMyMC42MDM5IDE4LjAwMiAyMS4wMDM5IDE3LjYwMiAyMS4wMDM5IDE3LjAwMlpNMy4wMDM5MSAxNS4wMDJWMTcuMDAyQzMuMDAzOTEgMTcuNjAyIDMuNDAzOTEgMTguMDAyIDQuMDAzOTEgMTguMDAySDYuMDAzOTFDNi4wMDM5MSAxNi4zMDIgNC43MDM5MSAxNS4wMDIgMy4wMDM5MSAxNS4wMDJaXCIgZmlsbD1cIiMwMEEzRkZcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoLTc1cHggY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBwbGFjZW1lbnQ9XCJ0b3BcIiBuZ2JUb29sdGlwPVwiTm9CIERlcml2ZWRcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKm5nSWY9XCJjb252ZXJzaW9uVmFsdWUgIT09J05vQiBEZXJpdmVkJ1wiIChjbGljayk9XCJjaGFuZ2VWYWx1ZSgnTm9CIERlcml2ZWQnKVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIG9wYWNpdHk9XCIwLjNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTguMDAzOSAyMS42MDA1QzE2LjMwMzkgMjEuNjAwNSAxNS4wMDM5IDIwLjMwMDUgMTUuMDAzOSAxOC42MDA1VjIuNTAwNUMxNS4wMDM5IDIuMjAwNSAxNC42MDM5IDIuMDAwNDUgMTQuMzAzOSAyLjIwMDQ1TDEzLjAwMzkgMy42MDA0OEwxMS43MDM5IDIuMzAwNDlDMTEuMzAzOSAxLjkwMDQ5IDEwLjcwMzkgMS45MDA0OSAxMC4zMDM5IDIuMzAwNDlMOS4wMDM5MSAzLjYwMDQ4TDcuNzAzOTIgMi4zMDA0OUM3LjMwMzkyIDEuOTAwNDkgNi43MDM5IDEuOTAwNDkgNi4zMDM5IDIuMzAwNDlMNS4wMDM5MSAzLjYwMDQ4TDMuNzAzOTIgMi4zMDA0OUMzLjUwMzkyIDIuMTAwNDkgMy4wMDM5MSAyLjIwMDUgMy4wMDM5MSAzLjUwMDVWMTguNjAwNUMzLjAwMzkxIDIwLjMwMDUgNC4zMDM5MSAyMS42MDA1IDYuMDAzOTEgMjEuNjAwNUgxOC4wMDM5WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM5OEEyQjNcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEyLjAwNTkgMTIuNTk3MkgxMS4wMDU5QzEwLjQwNTkgMTIuNTk3MiAxMC4wMDU5IDEyLjE5NzIgMTAuMDA1OSAxMS41OTcyQzEwLjAwNTkgMTAuOTk3MiAxMC40MDU5IDEwLjU5NzIgMTEuMDA1OSAxMC41OTcySDEyLjAwNTlDMTIuNjA1OSAxMC41OTcyIDEzLjAwNTkgMTAuOTk3MiAxMy4wMDU5IDExLjU5NzJDMTMuMDA1OSAxMi4xOTcyIDEyLjYwNTkgMTIuNTk3MiAxMi4wMDU5IDEyLjU5NzJaTTkuMDA1ODYgMTEuNTk3MkM5LjAwNTg2IDEwLjk5NzIgOC42MDU4NiAxMC41OTcyIDguMDA1ODYgMTAuNTk3Mkg2LjAwNTg2QzUuNDA1ODYgMTAuNTk3MiA1LjAwNTg2IDEwLjk5NzIgNS4wMDU4NiAxMS41OTcyQzUuMDA1ODYgMTIuMTk3MiA1LjQwNTg2IDEyLjU5NzIgNi4wMDU4NiAxMi41OTcySDguMDA1ODZDOC42MDU4NiAxMi41OTcyIDkuMDA1ODYgMTIuMTk3MiA5LjAwNTg2IDExLjU5NzJaTTkuMDA1ODYgNy41OTcxN0M5LjAwNTg2IDYuOTk3MTcgOC42MDU4NiA2LjU5NzE3IDguMDA1ODYgNi41OTcxN0g2LjAwNTg2QzUuNDA1ODYgNi41OTcxNyA1LjAwNTg2IDYuOTk3MTcgNS4wMDU4NiA3LjU5NzE3QzUuMDA1ODYgOC4xOTcxNyA1LjQwNTg2IDguNTk3MTcgNi4wMDU4NiA4LjU5NzE3SDguMDA1ODZDOC42MDU4NiA4LjU5NzE3IDkuMDA1ODYgOC4xOTcxNyA5LjAwNTg2IDcuNTk3MTdaTTEzLjAwNTkgNy41OTcxN0MxMy4wMDU5IDYuOTk3MTcgMTIuNjA1OSA2LjU5NzE3IDEyLjAwNTkgNi41OTcxN0gxMS4wMDU5QzEwLjQwNTkgNi41OTcxNyAxMC4wMDU5IDYuOTk3MTcgMTAuMDA1OSA3LjU5NzE3QzEwLjAwNTkgOC4xOTcxNyAxMC40MDU5IDguNTk3MTcgMTEuMDA1OSA4LjU5NzE3SDEyLjAwNTlDMTIuNjA1OSA4LjU5NzE3IDEzLjAwNTkgOC4xOTcxNyAxMy4wMDU5IDcuNTk3MTdaTTEzLjAwNTkgMTUuNTk3MkMxMy4wMDU5IDE0Ljk5NzIgMTIuNjA1OSAxNC41OTcyIDEyLjAwNTkgMTQuNTk3MkgxMC4wMDU5QzkuNDA1ODYgMTQuNTk3MiA5LjAwNTg2IDE0Ljk5NzIgOS4wMDU4NiAxNS41OTcyQzkuMDA1ODYgMTYuMTk3MiA5LjQwNTg2IDE2LjU5NzIgMTAuMDA1OSAxNi41OTcySDEyLjAwNTlDMTIuNjA1OSAxNi41OTcyIDEzLjAwNTkgMTYuMTk3MiAxMy4wMDU5IDE1LjU5NzJaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzk4QTJCM1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTUuMDAyIDE4LjU5NzFDMTUuMDAyIDIwLjI5NzEgMTYuMzAyIDIxLjU5NzEgMTguMDAyIDIxLjU5NzFDMTkuNzAyIDIxLjU5NzEgMjEuMDAyIDIwLjI5NzEgMjEuMDAyIDE4LjU5NzFWMTIuNDk3MUMyMS4wMDIgMTIuMTk3MSAyMC42MDIgMTEuOTk3MSAyMC4zMDIgMTIuMTk3MUwxOS4wMDIgMTMuNTk3MUwxNy43MDIgMTIuMjk3MUMxNy4zMDIgMTEuODk3MSAxNi43MDIgMTEuODk3MSAxNi4zMDIgMTIuMjk3MUwxNS4wMDIgMTMuNTk3MVYxOC41OTcxWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM5OEEyQjNcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBwbGFjZW1lbnQ9XCJ0b3BcIiBuZ2JUb29sdGlwPVwiTm9CIERlcml2ZWRcIiAqbmdJZj1cImNvbnZlcnNpb25WYWx1ZSA9PT0nTm9CIERlcml2ZWQnXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggb3BhY2l0eT1cIjAuM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xOC4wMDM5IDIxLjYwMDVDMTYuMzAzOSAyMS42MDA1IDE1LjAwMzkgMjAuMzAwNSAxNS4wMDM5IDE4LjYwMDVWMi41MDA1QzE1LjAwMzkgMi4yMDA1IDE0LjYwMzkgMi4wMDA0NSAxNC4zMDM5IDIuMjAwNDVMMTMuMDAzOSAzLjYwMDQ4TDExLjcwMzkgMi4zMDA0OUMxMS4zMDM5IDEuOTAwNDkgMTAuNzAzOSAxLjkwMDQ5IDEwLjMwMzkgMi4zMDA0OUw5LjAwMzkxIDMuNjAwNDhMNy43MDM5MiAyLjMwMDQ5QzcuMzAzOTIgMS45MDA0OSA2LjcwMzkgMS45MDA0OSA2LjMwMzkgMi4zMDA0OUw1LjAwMzkxIDMuNjAwNDhMMy43MDM5MiAyLjMwMDQ5QzMuNTAzOTIgMi4xMDA0OSAzLjAwMzkxIDIuMjAwNSAzLjAwMzkxIDMuNTAwNVYxOC42MDA1QzMuMDAzOTEgMjAuMzAwNSA0LjMwMzkxIDIxLjYwMDUgNi4wMDM5MSAyMS42MDA1SDE4LjAwMzlaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzAwQTNGRlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTIuMDA1OSAxMi41OTcySDExLjAwNTlDMTAuNDA1OSAxMi41OTcyIDEwLjAwNTkgMTIuMTk3MiAxMC4wMDU5IDExLjU5NzJDMTAuMDA1OSAxMC45OTcyIDEwLjQwNTkgMTAuNTk3MiAxMS4wMDU5IDEwLjU5NzJIMTIuMDA1OUMxMi42MDU5IDEwLjU5NzIgMTMuMDA1OSAxMC45OTcyIDEzLjAwNTkgMTEuNTk3MkMxMy4wMDU5IDEyLjE5NzIgMTIuNjA1OSAxMi41OTcyIDEyLjAwNTkgMTIuNTk3MlpNOS4wMDU4NiAxMS41OTcyQzkuMDA1ODYgMTAuOTk3MiA4LjYwNTg2IDEwLjU5NzIgOC4wMDU4NiAxMC41OTcySDYuMDA1ODZDNS40MDU4NiAxMC41OTcyIDUuMDA1ODYgMTAuOTk3MiA1LjAwNTg2IDExLjU5NzJDNS4wMDU4NiAxMi4xOTcyIDUuNDA1ODYgMTIuNTk3MiA2LjAwNTg2IDEyLjU5NzJIOC4wMDU4NkM4LjYwNTg2IDEyLjU5NzIgOS4wMDU4NiAxMi4xOTcyIDkuMDA1ODYgMTEuNTk3MlpNOS4wMDU4NiA3LjU5NzE3QzkuMDA1ODYgNi45OTcxNyA4LjYwNTg2IDYuNTk3MTcgOC4wMDU4NiA2LjU5NzE3SDYuMDA1ODZDNS40MDU4NiA2LjU5NzE3IDUuMDA1ODYgNi45OTcxNyA1LjAwNTg2IDcuNTk3MTdDNS4wMDU4NiA4LjE5NzE3IDUuNDA1ODYgOC41OTcxNyA2LjAwNTg2IDguNTk3MTdIOC4wMDU4NkM4LjYwNTg2IDguNTk3MTcgOS4wMDU4NiA4LjE5NzE3IDkuMDA1ODYgNy41OTcxN1pNMTMuMDA1OSA3LjU5NzE3QzEzLjAwNTkgNi45OTcxNyAxMi42MDU5IDYuNTk3MTcgMTIuMDA1OSA2LjU5NzE3SDExLjAwNTlDMTAuNDA1OSA2LjU5NzE3IDEwLjAwNTkgNi45OTcxNyAxMC4wMDU5IDcuNTk3MTdDMTAuMDA1OSA4LjE5NzE3IDEwLjQwNTkgOC41OTcxNyAxMS4wMDU5IDguNTk3MTdIMTIuMDA1OUMxMi42MDU5IDguNTk3MTcgMTMuMDA1OSA4LjE5NzE3IDEzLjAwNTkgNy41OTcxN1pNMTMuMDA1OSAxNS41OTcyQzEzLjAwNTkgMTQuOTk3MiAxMi42MDU5IDE0LjU5NzIgMTIuMDA1OSAxNC41OTcySDEwLjAwNTlDOS40MDU4NiAxNC41OTcyIDkuMDA1ODYgMTQuOTk3MiA5LjAwNTg2IDE1LjU5NzJDOS4wMDU4NiAxNi4xOTcyIDkuNDA1ODYgMTYuNTk3MiAxMC4wMDU5IDE2LjU5NzJIMTIuMDA1OUMxMi42MDU5IDE2LjU5NzIgMTMuMDA1OSAxNi4xOTcyIDEzLjAwNTkgMTUuNTk3MlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMDBBM0ZGXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNS4wMDIgMTguNTk3MUMxNS4wMDIgMjAuMjk3MSAxNi4zMDIgMjEuNTk3MSAxOC4wMDIgMjEuNTk3MUMxOS43MDIgMjEuNTk3MSAyMS4wMDIgMjAuMjk3MSAyMS4wMDIgMTguNTk3MVYxMi40OTcxQzIxLjAwMiAxMi4xOTcxIDIwLjYwMiAxMS45OTcxIDIwLjMwMiAxMi4xOTcxTDE5LjAwMiAxMy41OTcxTDE3LjcwMiAxMi4yOTcxQzE3LjMwMiAxMS44OTcxIDE2LjcwMiAxMS44OTcxIDE2LjMwMiAxMi4yOTcxTDE1LjAwMiAxMy41OTcxVjE4LjU5NzFaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzAwQTNGRlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXIgbXMtMyBwLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFnZXRDYXJkR3JhcGhEYXRhPy5jb252ZXJzaW9uPy5mb290ZmFsbC5QcmV2aW91c1ZhcmlhdGlvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjMyOF80NjU0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgOUw2Ljc1IDQuMjVMNC4yNSA2Ljc1TDAuNSAzTTExLjUgOUg4LjVNMTEuNSA5VjZcIiBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMzI4XzQ2NTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiZ2V0Q2FyZEdyYXBoRGF0YT8uY29udmVyc2lvbj8uZm9vdGZhbGwuUHJldmlvdXNWYXJpYXRpb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzMyMTZfMTE4KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgM0w2Ljc1IDcuNzVMNC4yNSA1LjI1TDAuNSA5TTExLjUgM0g4LjVNMTEuNSAzVjZcIiBzdHJva2U9XCIjMDM5ODU1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8zMjE2XzExOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXQtMiBtcy0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb252ZXJzaW9uVmFsdWUgPT09J2Zvb3RmYWxsJyAmJiBnZXRDYXJkR3JhcGhEYXRhPy5jb252ZXJzaW9uPy5mb290ZmFsbC5QcmV2aW91c0RhdGEgPT09MFwiIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPjAlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29udmVyc2lvblZhbHVlID09PSdmb290ZmFsbCcgJiYgZ2V0Q2FyZEdyYXBoRGF0YT8uY29udmVyc2lvbj8uZm9vdGZhbGwuUHJldmlvdXNEYXRhICE9PTBcIiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIj57e2dldENhcmRHcmFwaERhdGE/LmNvbnZlcnNpb24/LmZvb3RmYWxsLlByZXZpb3VzRGF0YSA/IGdldENhcmRHcmFwaERhdGE/LmNvbnZlcnNpb24/LmZvb3RmYWxsLlByZXZpb3VzRGF0YTonLS0nfX0lPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29udmVyc2lvblZhbHVlID09PSdlbmdhZ2VycycgJiYgZ2V0Q2FyZEdyYXBoRGF0YT8uY29udmVyc2lvbj8uZW5nYWdlcnMuUHJldmlvdXNEYXRhID09PTBcIiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIj4wJTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb252ZXJzaW9uVmFsdWUgPT09J2VuZ2FnZXJzJyAmJiBnZXRDYXJkR3JhcGhEYXRhPy5jb252ZXJzaW9uPy5lbmdhZ2Vycy5QcmV2aW91c0RhdGEgIT09MFwiIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPnt7Z2V0Q2FyZEdyYXBoRGF0YT8uY29udmVyc2lvbj8uZW5nYWdlcnMuUHJldmlvdXNEYXRhID8gZ2V0Q2FyZEdyYXBoRGF0YT8uY29udmVyc2lvbj8uZW5nYWdlcnMuUHJldmlvdXNEYXRhOictLSd9fSU8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29udmVyc2lvblZhbHVlID09PSdQb3RlbnRpYWwgQnV5ZXJzJyAmJiBnZXRDYXJkR3JhcGhEYXRhPy5jb252ZXJzaW9uPy5wb3RlbnRpYWxCdXllcnMuUHJldmlvdXNEYXRhID09PTBcIiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIj4wJTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbnZlcnNpb25WYWx1ZSA9PT0nUG90ZW50aWFsIEJ1eWVycycgJiYgZ2V0Q2FyZEdyYXBoRGF0YT8uY29udmVyc2lvbj8ucG90ZW50aWFsQnV5ZXJzLlByZXZpb3VzRGF0YSAhPT0wXCIgY2xhc3M9XCJwZXJjZW50LXZhbHVlXCI+e3tnZXRDYXJkR3JhcGhEYXRhPy5jb252ZXJzaW9uPy5wb3RlbnRpYWxCdXllcnMuUHJldmlvdXNEYXRhID8gZ2V0Q2FyZEdyYXBoRGF0YT8uY29udmVyc2lvbj8ucG90ZW50aWFsQnV5ZXJzLlByZXZpb3VzRGF0YTonLS0nfX0lPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29udmVyc2lvblZhbHVlID09PSdOb0IgRGVyaXZlZCdcIiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIj4tLSU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb252ZXJzaW9uVmFsdWUgPT09JycgJiYgZ2V0Q2FyZEdyYXBoRGF0YT8uY29udmVyc2lvbj8uUHJldmlvdXNEYXRhID09PTBcIiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIj4wJTwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29udmVyc2lvblZhbHVlID09PScnICYmIGdldENhcmRHcmFwaERhdGE/LmNvbnZlcnNpb24/LlByZXZpb3VzRGF0YSAhPT0wXCIgIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPnt7Z2V0Q2FyZEdyYXBoRGF0YT8uY29udmVyc2lvbj8uUHJldmlvdXNEYXRhID8gZ2V0Q2FyZEdyYXBoRGF0YT8uY29udmVyc2lvbj8uUHJldmlvdXNEYXRhOictLSd9fSU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwid2Vlay1mb250XCI+IHZzIFByZXZpb3VzIDxzcGFuICpuZ0lmPVwiZGF0ZVR5cGUgPT09J2RhaWx5J1wiPmRheTwvc3Bhbj48c3BhbiAqbmdJZj1cImRhdGVUeXBlID09PSd3ZWVrbHknXCI+d2Vlazwvc3Bhbj4gPHNwYW4gKm5nSWY9XCJkYXRlVHlwZSA9PT0nbW9udGhseSdcIj5tb250aDwvc3Bhbj48L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1ib3JkZXIgaC0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgZWxsaXBzZTEgYm9yZGVyLTAgcHgtM1wiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBbbmdiVG9vbHRpcF09XCJib3VuY2VkVG9vbHRpcFwiIHBsYWNlbWVudD1cImxlZnRcIiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtbiBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZC1sYWJlbCBoZWFkZXJcIj57e2dldENhcmREYXRhPy5ib3VuY2VkPy5yYXRlID8gZ2V0Q2FyZERhdGE/LmJvdW5jZWQ/LnJhdGUgOictLSd9fSU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1Yi1oZWFkZXJcIj5Cb3VuY2VkIFJhdGU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8bmctdGVtcGxhdGUgI2JvdW5jZWRUb29sdGlwPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9vbHRpcC1jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwidG9vbHRpcC10aXRsZSB0ZXh0LXN0YXJ0XCI+Qm91bmNlZCBSYXRlPC9oNT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtc3RhcnRcIj5Ub3RhbCB3YWxrLWlucyB3aG8gc3BlbnQgbGVzcyB0aGFuICZsdDtOJmd0O21pbi9zLjwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJ0ZXh0LXN0YXJ0XCI+e3tnZXRDYXJkRGF0YT8uYm91bmNlZD8ucmF0ZX19PC9oND5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9vdGVyIGNsYXNzPVwidG9vbHRpcC1mb290ZXIgdGV4dC1zdGFydFwiPiA8c3BhbiBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIhZ2V0Q2FyZEdyYXBoRGF0YT8uYm91bmNlZD8uUHJldmlvdXNWYXJpYXRpb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMzI4XzQ2NTQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS41IDlMNi43NSA0LjI1TDQuMjUgNi43NUwwLjUgM00xMS41IDlIOC41TTExLjUgOVY2XCIgc3Ryb2tlPVwiI0Q5MkQyMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMzI4XzQ2NTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImdldENhcmRHcmFwaERhdGE/LmJvdW5jZWQ/LlByZXZpb3VzVmFyaWF0aW9uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMzIxNl8xMTgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS41IDNMNi43NSA3Ljc1TDQuMjUgNS4yNUwwLjUgOU0xMS41IDNIOC41TTExLjUgM1Y2XCIgc3Ryb2tlPVwiIzAzOTg1NVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8zMjE2XzExOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+IDxzcGFuIGNsYXNzPVwibXQtMiBtcy0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdldENhcmRHcmFwaERhdGE/LmJvdW5jZWQ/LlByZXZpb3VzRGF0YSA9PT0wXCIgY2xhc3M9XCJwZXJjZW50LXZhbHVlXCI+MCU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdldENhcmRHcmFwaERhdGE/LmJvdW5jZWQ/LlByZXZpb3VzRGF0YSAhPT0wXCIgY2xhc3M9XCJwZXJjZW50LXZhbHVlXCI+e3tnZXRDYXJkR3JhcGhEYXRhPy5ib3VuY2VkPy5QcmV2aW91c0RhdGEgPyBnZXRDYXJkR3JhcGhEYXRhPy5ib3VuY2VkPy5QcmV2aW91c0RhdGE6Jy0tJ319JTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwid2Vlay1mb250XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnMgUHJldmlvdXMgIDxzcGFuICpuZ0lmPVwiZGF0ZVR5cGUgPT09J2RhaWx5J1wiPmRheTwvc3Bhbj48c3BhbiAqbmdJZj1cImRhdGVUeXBlID09PSd3ZWVrbHknXCI+d2Vlazwvc3Bhbj4gPHNwYW4gKm5nSWY9XCJkYXRlVHlwZSA9PT0nbW9udGhseSdcIj5tb250aDwvc3Bhbj48L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PC9mb290ZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNhcmROb2RhdGFcIiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMiBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwYi0wIHB4LTAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctbm9kYXRhMVwiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YTEuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGEtdGl0bGUxXCI+Tm8gZGF0YSBmb3VuZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJub2RhdGEtc3ViXCI+VGhlcmUgaXMgbm8gcmVzdWx0IGZvciB0aGlzIGNvbnZlcnNpb24gZnVubmVsPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWNhcmROb2RhdGFcIiBjbGFzcz1cInRleHQtY2VudGVyXCIgaWQ9XCJCb3VuY2VkUmF0ZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBtcy0yIHAtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIWdldENhcmRHcmFwaERhdGE/LmJvdW5jZWQ/LlByZXZpb3VzVmFyaWF0aW9uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMzI4XzQ2NTQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSA5TDYuNzUgNC4yNUw0LjI1IDYuNzVMMC41IDNNMTEuNSA5SDguNU0xMS41IDlWNlwiIHN0cm9rZT1cIiNEOTJEMjBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIzMjhfNDY1NFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJnZXRDYXJkR3JhcGhEYXRhPy5ib3VuY2VkPy5QcmV2aW91c1ZhcmlhdGlvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMzIxNl8xMTgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSAzTDYuNzUgNy43NUw0LjI1IDUuMjVMMC41IDlNMTEuNSAzSDguNU0xMS41IDNWNlwiIHN0cm9rZT1cIiMwMzk4NTVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzMyMTZfMTE4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdC0yIG1zLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdldENhcmRHcmFwaERhdGE/LmJvdW5jZWQ/LlByZXZpb3VzRGF0YSA9PT0wXCIgY2xhc3M9XCJwZXJjZW50LXZhbHVlXCI+MCU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnZXRDYXJkR3JhcGhEYXRhPy5ib3VuY2VkPy5QcmV2aW91c0RhdGEgIT09MFwiIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPnt7Z2V0Q2FyZEdyYXBoRGF0YT8uYm91bmNlZD8uUHJldmlvdXNEYXRhID8gZ2V0Q2FyZEdyYXBoRGF0YT8uYm91bmNlZD8uUHJldmlvdXNEYXRhOictLSd9fSU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ3ZWVrLWZvbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnMgUHJldmlvdXMgIDxzcGFuICpuZ0lmPVwiZGF0ZVR5cGUgPT09J2RhaWx5J1wiPmRheTwvc3Bhbj48c3BhbiAqbmdJZj1cImRhdGVUeXBlID09PSd3ZWVrbHknXCI+d2Vlazwvc3Bhbj4gPHNwYW4gKm5nSWY9XCJkYXRlVHlwZSA9PT0nbW9udGhseSdcIj5tb250aDwvc3Bhbj48L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IG10LTNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtYm9yZGVyIGgtMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGVsbGlwc2UxIGJvcmRlci0wIHB4LTNcIiAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFtuZ2JUb29sdGlwXT1cImVuZ2FnZXJzVG9vbHRpcFwiIHBsYWNlbWVudD1cInJpZ2h0XCIgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW4gXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmQtbGFiZWwgaGVhZGVyXCI+e3tnZXRDYXJkRGF0YT8uZW5nYWdlcnM/LnJhdGUgPyBnZXRDYXJkRGF0YT8uZW5nYWdlcnM/LnJhdGUgOictLSd9fSU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1Yi1oZWFkZXJcIj5FbmdhZ2VycyBSYXRlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPG5nLXRlbXBsYXRlICNlbmdhZ2Vyc1Rvb2x0aXA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b29sdGlwLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJ0b29sdGlwLXRpdGxlIHRleHQtc3RhcnRcIj5FbmdhZ2VycyBSYXRlPC9oNT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtc3RhcnRcIj5Ub3RhbCB3YWxrLWlucyB3aG8gc3BlbnQgbW9yZSB0aGFuICZsdDtYbWlucyZndDsgaW50byB0aGUgc2VsZWN0ZWQgc3RvcmVzLjwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJ0ZXh0LXN0YXJ0XCI+e3tnZXRDYXJkRGF0YT8uZW5nYWdlcnM/LnJhdGV9fTwvaDQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvb3RlciBjbGFzcz1cInRvb2x0aXAtZm9vdGVyIHRleHQtc3RhcnRcIj4gPHNwYW4gY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIWdldENhcmRHcmFwaERhdGE/LmVuZ2FnZXJzPy5QcmV2aW91c1ZhcmlhdGlvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIzMjhfNDY1NClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgOUw2Ljc1IDQuMjVMNC4yNSA2Ljc1TDAuNSAzTTExLjUgOUg4LjVNMTEuNSA5VjZcIiBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIzMjhfNDY1NFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiZ2V0Q2FyZEdyYXBoRGF0YT8uZW5nYWdlcnM/LlByZXZpb3VzVmFyaWF0aW9uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMzIxNl8xMTgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS41IDNMNi43NSA3Ljc1TDQuMjUgNS4yNUwwLjUgOU0xMS41IDNIOC41TTExLjUgM1Y2XCIgc3Ryb2tlPVwiIzAzOTg1NVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8zMjE2XzExOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+IDxzcGFuIGNsYXNzPVwibXQtMiBtcy0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdldENhcmRHcmFwaERhdGE/LmVuZ2FnZXJzPy5QcmV2aW91c0RhdGEgPT09MFwiIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPjAlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnZXRDYXJkR3JhcGhEYXRhPy5lbmdhZ2Vycz8uUHJldmlvdXNEYXRhICE9PTBcIiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIj57e2dldENhcmRHcmFwaERhdGE/LmVuZ2FnZXJzPy5QcmV2aW91c0RhdGEgPyBnZXRDYXJkR3JhcGhEYXRhPy5lbmdhZ2Vycz8uUHJldmlvdXNEYXRhOictLSd9fSU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIndlZWstZm9udFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZzIFByZXZpb3VzICA8c3BhbiAqbmdJZj1cImRhdGVUeXBlID09PSdkYWlseSdcIj5kYXk8L3NwYW4+PHNwYW4gKm5nSWY9XCJkYXRlVHlwZSA9PT0nd2Vla2x5J1wiPndlZWs8L3NwYW4+IDxzcGFuICpuZ0lmPVwiZGF0ZVR5cGUgPT09J21vbnRobHknXCI+bW9udGg8L3NwYW4+PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjwvZm9vdGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjYXJkTm9kYXRhXCIgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcGItMCBweC0wIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLW5vZGF0YTFcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGExLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhLXRpdGxlMVwiPk5vIGRhdGEgZm91bmQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwibm9kYXRhLXN1YlwiPlRoZXJlIGlzIG5vIHJlc3VsdCBmb3IgdGhpcyBjb252ZXJzaW9uIGZ1bm5lbDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFjYXJkTm9kYXRhXCIgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiIGlkPVwiZW5nYWdlcnNcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXIgbXMtMiBwLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFnZXRDYXJkR3JhcGhEYXRhPy5lbmdhZ2Vycz8uUHJldmlvdXNWYXJpYXRpb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjMyOF80NjU0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS41IDlMNi43NSA0LjI1TDQuMjUgNi43NUwwLjUgM00xMS41IDlIOC41TTExLjUgOVY2XCIgc3Ryb2tlPVwiI0Q5MkQyMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIzMjhfNDY1NFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImdldENhcmRHcmFwaERhdGE/LmVuZ2FnZXJzPy5QcmV2aW91c1ZhcmlhdGlvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8zMjE2XzExOClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSAzTDYuNzUgNy43NUw0LjI1IDUuMjVMMC41IDlNMTEuNSAzSDguNU0xMS41IDNWNlwiIHN0cm9rZT1cIiMwMzk4NTVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8zMjE2XzExOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm10LTIgbXMtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2V0Q2FyZEdyYXBoRGF0YT8uZW5nYWdlcnM/LlByZXZpb3VzRGF0YSA9PT0wXCIgY2xhc3M9XCJwZXJjZW50LXZhbHVlXCI+MCU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnZXRDYXJkR3JhcGhEYXRhPy5lbmdhZ2Vycz8uUHJldmlvdXNEYXRhICE9PTBcIiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIj57e2dldENhcmRHcmFwaERhdGE/LmVuZ2FnZXJzPy5QcmV2aW91c0RhdGEgPyBnZXRDYXJkR3JhcGhEYXRhPy5lbmdhZ2Vycz8uUHJldmlvdXNEYXRhOictLSd9fSU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ3ZWVrLWZvbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnMgUHJldmlvdXMgIDxzcGFuICpuZ0lmPVwiZGF0ZVR5cGUgPT09J2RhaWx5J1wiPmRheTwvc3Bhbj48c3BhbiAqbmdJZj1cImRhdGVUeXBlID09PSd3ZWVrbHknXCI+d2Vlazwvc3Bhbj4gPHNwYW4gKm5nSWY9XCJkYXRlVHlwZSA9PT0nbW9udGhseSdcIj5tb250aDwvc3Bhbj48L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IG10LTNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtYm9yZGVyIGgtMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGVsbGlwc2UxIGJvcmRlci0wIHB4LTNcIiA+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFtuZ2JUb29sdGlwXT1cIm1pc3NlZFRvb2x0aXBcIiBwbGFjZW1lbnQ9XCJyaWdodFwiIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJkLWxhYmVsIGhlYWRlclwiPnt7Z2V0Q2FyZERhdGE/Lm1pc3NlZG9wcG9ydHVuaXRpZXM/LnJhdGUgPyBnZXRDYXJkRGF0YT8ubWlzc2Vkb3Bwb3J0dW5pdGllcz8ucmF0ZSA6Jy0tJ319JTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ViLWhlYWRlclwiPk1pc3NlZCBPcHBvcnR1bml0aWVzPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxuZy10ZW1wbGF0ZSAjbWlzc2VkVG9vbHRpcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRvb2x0aXAtY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cInRvb2x0aXAtdGl0bGUgdGV4dC1zdGFydFwiPk1pc3NlZCBPcHBvcnR1bml0aWVzPC9oNT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtc3RhcnRcIj5UaGUgZGlmZmVyZW5jZSBiZXR3ZWVuICZsdDtlbmdhZ2VycyZndDsgYW5kICZsdDtjb252ZXJzaW9ucyZndDssIHNob3dpbmcgcG90ZW50aWFsIGxvc3MuPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz1cInRleHQtc3RhcnRcIj57e2dldENhcmREYXRhPy5taXNzZWRvcHBvcnR1bml0aWVzPy5yYXRlfX08L2g0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxmb290ZXIgY2xhc3M9XCJ0b29sdGlwLWZvb3RlciB0ZXh0LXN0YXJ0XCI+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFnZXRDYXJkR3JhcGhEYXRhPy5taXNzZWRvcHBvcnR1bml0aWVzPy5QcmV2aW91c1ZhcmlhdGlvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjMyOF80NjU0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgOUw2Ljc1IDQuMjVMNC4yNSA2Ljc1TDAuNSAzTTExLjUgOUg4LjVNMTEuNSA5VjZcIiBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMzI4XzQ2NTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiZ2V0Q2FyZEdyYXBoRGF0YT8ubWlzc2Vkb3Bwb3J0dW5pdGllcz8uUHJldmlvdXNWYXJpYXRpb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzMyMTZfMTE4KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgM0w2Ljc1IDcuNzVMNC4yNSA1LjI1TDAuNSA5TTExLjUgM0g4LjVNMTEuNSAzVjZcIiBzdHJva2U9XCIjMDM5ODU1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8zMjE2XzExOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMiBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnZXRDYXJkR3JhcGhEYXRhPy5taXNzZWRvcHBvcnR1bml0aWVzPy5QcmV2aW91c0RhdGEgPT09MFwiIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPjAlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2V0Q2FyZEdyYXBoRGF0YT8ubWlzc2Vkb3Bwb3J0dW5pdGllcz8uUHJldmlvdXNEYXRhICE9PTBcIiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIj57e2dldENhcmRHcmFwaERhdGE/Lm1pc3NlZG9wcG9ydHVuaXRpZXM/LlByZXZpb3VzRGF0YSA/IGdldENhcmRHcmFwaERhdGE/Lm1pc3NlZG9wcG9ydHVuaXRpZXM/LlByZXZpb3VzRGF0YTonLS0nfX0lPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ3ZWVrLWZvbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnMgUHJldmlvdXMgIDxzcGFuICpuZ0lmPVwiZGF0ZVR5cGUgPT09J2RhaWx5J1wiPmRheTwvc3Bhbj48c3BhbiAqbmdJZj1cImRhdGVUeXBlID09PSd3ZWVrbHknXCI+d2Vlazwvc3Bhbj4gPHNwYW4gKm5nSWY9XCJkYXRlVHlwZSA9PT0nbW9udGhseSdcIj5tb250aDwvc3Bhbj48L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Zvb3Rlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHAtMCBoLTkwcHggbXQtMyBteC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOVwiPjwhLS17e2dldENhcmREYXRhPy5yZXZlbnVlPy52YWx1ZSA/PyAnLS0nfX0gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS0yXCIgKm5nSWY9XCJnZXRDYXJkRGF0YT8ucmV2ZW51ZT8uY3VycmVuY3kgIT09J2lucidcIj4gPHNwYW4gY2xhc3M9XCJjYXJkLWxhYmVsIGhlYWRlclwiPjxzcGFuIGNsYXNzPVwibWUtMVwiPiQ8L3NwYW4+IHt7Z2V0Q2FyZERhdGE/LnJldmVudWU/LnZhbHVlLnRvTG9jYWxlU3RyaW5nKCdlbi1JTicpID8/ICctLSd9fTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTJcIiAqbmdJZj1cImdldENhcmREYXRhPy5yZXZlbnVlPy5jdXJyZW5jeSA9PT0naW5yJ1wiPiA8c3BhbiBjbGFzcz1cImNhcmQtbGFiZWwgaGVhZGVyXCI+PHNwYW4gY2xhc3M9XCJtZS0xXCI+4oK5PC9zcGFuPiB7e2dldENhcmREYXRhPy5yZXZlbnVlPy52YWx1ZS50b0xvY2FsZVN0cmluZygnZW4tSU4nKSA/PyAnLS0nfX08L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS0xXCI+PHNwYW4gY2xhc3M9XCJzdWItaGVhZGVyXCI+QXZnLiBSZXZlbnVlIExvc3M8L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgbXQtNVwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiIHZpZXdCb3g9XCIwIDAgNDAgNDBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgZmlsdGVyPVwidXJsKCNmaWx0ZXIwX2RfMzg4NV8yNTMxKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjJcIiB5PVwiMVwiIHdpZHRoPVwiMzZcIiBoZWlnaHQ9XCIzNlwiIHJ4PVwiOFwiIGZpbGw9XCIjRUFGOEZGXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjIuNVwiIHk9XCIxLjVcIiB3aWR0aD1cIjM1XCIgaGVpZ2h0PVwiMzVcIiByeD1cIjcuNVwiIHN0cm9rZT1cIiNFQUY4RkZcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzM4ODVfMjUzMSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMjcuNDU4NSAxNy4yMjUxQzI3LjgxMzMgMTguODU1NiAyNy42NzA3IDIwLjU2MTQgMjcuMDUwNSAyMi4xMDI3TDI1Ljg1OTMgMjEuMzgzOEwyNi4wMTcgMjYuMDk3TDMwIDIzLjg4MzRMMjguNzE3IDIzLjEwODZDMzAuNzE3MSAxOC40ODIzIDI5LjA3MjYgMTIuOTMzMyAyNC43Nzk5IDEwLjM0MDdDMjMuMzMyOCA5LjQ2NjMzIDIxLjY5MTggOS4wMDQwNiAyMC4wMjA2IDkuMDAwMDNDMTguMzQ5NCA4Ljk5NTk5IDE2LjcwNjQgOS40NTAzMyAxNS4yNTU1IDEwLjMxNzdMMTYuMjA0OSAxMi4wNTQ0QzE3LjU5MzMgMTEuMjI0OSAxOS4xOTUzIDEwLjg3MTIgMjAuNzg1OCAxMS4wNDNDMjIuMzc2NCAxMS4yMTQ5IDIzLjg3NTQgMTEuOTAzNiAyNS4wNzIzIDEzLjAxMjVDMjYuMjY5MiAxNC4xMjE0IDI3LjEwMzcgMTUuNTk0NiAyNy40NTg1IDE3LjIyNTFaXCIgZmlsbD1cIiMwMEEzRkZcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEyLjU0MDIgMjAuNzc1OUMxMi4xODU0IDE5LjE0NTIgMTIuMzI4MiAxNy40MzkyIDEyLjk0ODUgMTUuODk3OEwxNC4xMzk4IDE2LjYxNjdMMTMuOTgyIDExLjkwMzVMMTAgMTQuMTE4MUwxMS4yODMgMTQuODkwOUM5LjI4MTk5IDE5LjUxODIgMTAuOTI2NCAyNS4wNjYyIDE1LjIxOTIgMjcuNjU4OEMxNi42NjYxIDI4LjUzMzMgMTguMzA3MSAyOC45OTU4IDE5Ljk3ODMgMjlDMjEuNjQ5NSAyOS4wMDQyIDIzLjI5MjYgMjguNTUgMjQuNzQzNSAyNy42ODI4TDIzLjc5NTEgMjUuOTQ2MUMyMi40MDY3IDI2Ljc3NiAyMC44MDQ1IDI3LjEzIDE5LjIxMzggMjYuOTU4M0MxNy42MjMgMjYuNzg2NyAxNi4xMjM3IDI2LjA5NzkgMTQuOTI2NyAyNC45ODlDMTMuNzI5NiAyMy44OCAxMi44OTUgMjIuNDA2NiAxMi41NDAyIDIwLjc3NTlaXCIgZmlsbD1cIiMwMEEzRkZcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNMjEuMDM3MiAxMy4wMDNDMjEuMDM3MiAxMi41NTE0IDIwLjY4NzEgMTIuMTg1MiAyMC4yNTUyIDEyLjE4NTJDMTkuODIzNCAxMi4xODUyIDE5LjQ3MzMgMTIuNTUxNCAxOS40NzMzIDEzLjAwM1YxNC4zNjU5SDE4Ljk1MkMxOC4yNjA3IDE0LjM2NTkgMTcuNTk3OCAxNC42NTMgMTcuMTA5IDE1LjE2NDJDMTYuNjIwMSAxNS42NzU0IDE2LjM0NTUgMTYuMzY4NyAxNi4zNDU1IDE3LjA5MTZDMTYuMzQ1NSAxNy44MTQ2IDE2LjYyMDEgMTguNTA3OSAxNy4xMDkgMTkuMDE5MUMxNy41OTc4IDE5LjUzMDIgMTguMjYwNyAxOS44MTc0IDE4Ljk1MiAxOS44MTc0SDE5LjQ3MzNWMjEuOTk4SDE3LjEyNzVDMTYuNjk1NiAyMS45OTggMTYuMzQ1NSAyMi4zNjQxIDE2LjM0NTUgMjIuODE1OEMxNi4zNDU1IDIzLjI2NzQgMTYuNjk1NiAyMy42MzM1IDE3LjEyNzUgMjMuNjMzNUgxOS40NzMzVjI0Ljk5NjRDMTkuNDczMyAyNS40NDggMTkuODIzNCAyNS44MTQxIDIwLjI1NTIgMjUuODE0MUMyMC42ODcxIDI1LjgxNDEgMjEuMDM3MiAyNS40NDggMjEuMDM3MiAyNC45OTY0VjIzLjYzMzVIMjEuNTU4NUMyMi4yNDk4IDIzLjYzMzUgMjIuOTEyNyAyMy4zNDYzIDIzLjQwMTUgMjIuODM1MUMyMy44OTAzIDIyLjMyNCAyNC4xNjQ5IDIxLjYzMDYgMjQuMTY0OSAyMC45MDc3QzI0LjE2NDkgMjAuMTg0OCAyMy44OTAzIDE5LjQ5MTUgMjMuNDAxNSAxOC45ODAzQzIyLjkxMjcgMTguNDY5MSAyMi4yNDk4IDE4LjE4MiAyMS41NTg1IDE4LjE4MkgyMS4wMzcyVjE2LjAwMTNIMjIuODYxN0MyMy4yOTM2IDE2LjAwMTMgMjMuNjQzNyAxNS42MzUyIDIzLjY0MzcgMTUuMTgzNkMyMy42NDM3IDE0LjczMiAyMy4yOTM2IDE0LjM2NTkgMjIuODYxNyAxNC4zNjU5SDIxLjAzNzJWMTMuMDAzWk0xOC45NTIgMTYuMDAxM0gxOS40NzMzVjE4LjE4MkgxOC45NTJDMTguNjc1NSAxOC4xODIgMTguNDEwMyAxOC4wNjcxIDE4LjIxNDggMTcuODYyNkMxOC4wMTkzIDE3LjY1ODEgMTcuOTA5NCAxNy4zODA4IDE3LjkwOTQgMTcuMDkxNkMxNy45MDk0IDE2LjgwMjUgMTguMDE5MyAxNi41MjUyIDE4LjIxNDggMTYuMzIwN0MxOC40MTAzIDE2LjExNjIgMTguNjc1NSAxNi4wMDEzIDE4Ljk1MiAxNi4wMDEzWk0yMS4wMzcyIDIxLjk5OFYxOS44MTc0SDIxLjU1ODVDMjEuODM1IDE5LjgxNzQgMjIuMTAwMiAxOS45MzIzIDIyLjI5NTcgMjAuMTM2OEMyMi40OTEyIDIwLjM0MTIgMjIuNjAxMSAyMC42MTg2IDIyLjYwMTEgMjAuOTA3N0MyMi42MDExIDIxLjE5NjkgMjIuNDkxMiAyMS40NzQyIDIyLjI5NTcgMjEuNjc4N0MyMi4xMDAyIDIxLjg4MzIgMjEuODM1IDIxLjk5OCAyMS41NTg1IDIxLjk5OEgyMS4wMzcyWlwiIGZpbGw9XCIjMDBBM0ZGXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsdGVyIGlkPVwiZmlsdGVyMF9kXzM4ODVfMjUzMVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiBmaWx0ZXJVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPVwic1JHQlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT1cIjBcIiByZXN1bHQ9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlT2Zmc2V0IGR5PVwiMVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIxXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMC4wNjI3NDUxIDAgMCAwIDAgMC4wOTQxMTc2IDAgMCAwIDAgMC4xNTY4NjMgMCAwIDAgMC4wNSAwXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cIkJhY2tncm91bmRJbWFnZUZpeFwiIHJlc3VsdD1cImVmZmVjdDFfZHJvcFNoYWRvd18zODg1XzI1MzFcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW49XCJTb3VyY2VHcmFwaGljXCIgaW4yPVwiZWZmZWN0MV9kcm9wU2hhZG93XzM4ODVfMjUzMVwiIHJlc3VsdD1cInNoYXBlXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9maWx0ZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8zODg1XzI1MzFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgxMCA5KVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBtcy0yIHAtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIWdldENhcmRHcmFwaERhdGE/Lm1pc3NlZG9wcG9ydHVuaXRpZXM/LlByZXZpb3VzVmFyaWF0aW9uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMzI4XzQ2NTQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSA5TDYuNzUgNC4yNUw0LjI1IDYuNzVMMC41IDNNMTEuNSA5SDguNU0xMS41IDlWNlwiIHN0cm9rZT1cIiNEOTJEMjBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIzMjhfNDY1NFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJnZXRDYXJkR3JhcGhEYXRhPy5taXNzZWRvcHBvcnR1bml0aWVzPy5QcmV2aW91c1ZhcmlhdGlvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMzIxNl8xMTgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSAzTDYuNzUgNy43NUw0LjI1IDUuMjVMMC41IDlNMTEuNSAzSDguNU0xMS41IDNWNlwiIHN0cm9rZT1cIiMwMzk4NTVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzMyMTZfMTE4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdldENhcmRHcmFwaERhdGE/Lm1pc3NlZG9wcG9ydHVuaXRpZXM/LlByZXZpb3VzRGF0YSA9PT0wXCIgY2xhc3M9XCJwZXJjZW50LXZhbHVlXCI+MCU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnZXRDYXJkR3JhcGhEYXRhPy5taXNzZWRvcHBvcnR1bml0aWVzPy5QcmV2aW91c0RhdGEgIT09MFwiIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPnt7Z2V0Q2FyZEdyYXBoRGF0YT8ubWlzc2Vkb3Bwb3J0dW5pdGllcz8uUHJldmlvdXNEYXRhID8gZ2V0Q2FyZEdyYXBoRGF0YT8ubWlzc2Vkb3Bwb3J0dW5pdGllcz8uUHJldmlvdXNEYXRhOictLSd9fSU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIndlZWstZm9udFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2cyBQcmV2aW91cyAgPHNwYW4gKm5nSWY9XCJkYXRlVHlwZSA9PT0nZGFpbHknXCI+ZGF5PC9zcGFuPjxzcGFuICpuZ0lmPVwiZGF0ZVR5cGUgPT09J3dlZWtseSdcIj53ZWVrPC9zcGFuPiA8c3BhbiAqbmdJZj1cImRhdGVUeXBlID09PSdtb250aGx5J1wiPm1vbnRoPC9zcGFuPjwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgbXQtMyBoLTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1ib3JkZXIgbWItNSBweS0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwLTAgaC05MHB4IG10LTMgbXgtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMyBmbGV4LXNocmluay0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQxXCIgdmlld0JveD1cIjAgMCA0MCA0MVwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeT1cIjAuNVwiIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiIHJ4PVwiMjBcIiBmaWxsPVwiI0RBRjFGRlwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTcuNjM4MiAxMi44OTIyQzE3LjYzODIgMTIuNjgzNSAxNy43MjEyIDEyLjQ4MzMgMTcuODY4OCAxMi4zMzU3QzE4LjAxNjQgMTIuMTg4MSAxOC4yMTY1IDEyLjEwNTIgMTguNDI1MyAxMi4xMDUySDIxLjU3MzRDMjEuNzgyMiAxMi4xMDUyIDIxLjk4MjMgMTIuMTg4MSAyMi4xMjk5IDEyLjMzNTdDMjIuMjc3NSAxMi40ODMzIDIyLjM2MDUgMTIuNjgzNSAyMi4zNjA1IDEyLjg5MjJDMjIuMzYwNSAxMy4xMDA5IDIyLjI3NzUgMTMuMzAxMSAyMi4xMjk5IDEzLjQ0ODdDMjEuOTgyMyAxMy41OTYzIDIxLjc4MjIgMTMuNjc5MiAyMS41NzM0IDEzLjY3OTJIMjAuNzg2NFYxNC43Mjg2TDIwLjc4NTMgMTQuNzcxNkMyMi4xMTU2IDE0LjkxNzQgMjMuMzc2NyAxNS40Mzk4IDI0LjQyMDQgMTYuMjc3NUwyNC40Mjc3IDE2LjI3MTJMMjUuMjE0OCAxNS40ODQyQzI1LjMxMSAxNS4zODA2IDI1LjQzMzMgMTUuMzA0OCAyNS41NjkgMTUuMjY0OUMyNS43MDQ2IDE1LjIyNTEgMjUuODQ4NSAxNS4yMjI1IDI1Ljk4NTUgMTUuMjU3NUMyNi4xMjI0IDE1LjI5MjUgMjYuMjQ3NCAxNS4zNjM4IDI2LjM0NzIgMTUuNDYzOUMyNi40NDcxIDE1LjU2NCAyNi41MTgxIDE1LjY4OTIgMjYuNTUyNyAxNS44MjYzQzI2LjU4NzcgMTUuOTYzMSAyNi41ODUyIDE2LjEwNjggMjYuNTQ1NSAxNi4yNDIzQzI2LjUwNTggMTYuMzc3OCAyNi40MzA0IDE2LjUwMDIgMjYuMzI3MSAxNi41OTY1TDI1LjU0MDEgMTcuMzgzNkwyNS41MzM4IDE3LjM5MDlDMjYuMzY2MiAxOC40MzMxIDI2Ljg4NzUgMTkuNjg5MSAyNy4wMzc3IDIxLjAxNDRDMjcuMTg3OCAyMi4zMzk3IDI2Ljk2MDcgMjMuNjgwNSAyNi4zODI0IDI0Ljg4MjVDMjUuODA0MiAyNi4wODQ1IDI0Ljg5ODMgMjcuMDk4NyAyMy43NjkxIDI3LjgwODZDMjIuNjM5OSAyOC41MTg0IDIxLjMzMzIgMjguODk1IDE5Ljk5OTMgMjguODk1QzE4LjY2NTUgMjguODk1IDE3LjM1ODggMjguNTE4NCAxNi4yMjk2IDI3LjgwODZDMTUuMTAwNCAyNy4wOTg3IDE0LjE5NDUgMjYuMDg0NSAxMy42MTYzIDI0Ljg4MjVDMTMuMDM4IDIzLjY4MDUgMTIuODEwOSAyMi4zMzk3IDEyLjk2MSAyMS4wMTQ0QzEzLjExMTIgMTkuNjg5MSAxMy42MzI1IDE4LjQzMzEgMTQuNDY0OSAxNy4zOTA5TDE0LjQ1ODYgMTcuMzgzNkwxMy42NzE2IDE2LjU5NjVDMTMuNTMyNCAxNi40NDc0IDEzLjQ1NjYgMTYuMjUgMTMuNDYwMSAxNi4wNDZDMTMuNDYzNiAxNS44NDIgMTMuNTQ2MiAxNS42NDczIDEzLjY5MDUgMTUuNTAzMUMxMy44MzQ3IDE1LjM1ODggMTQuMDI5NCAxNS4yNzYyIDE0LjIzMzQgMTUuMjcyN0MxNC40Mzc0IDE1LjI2OTIgMTQuNjM0OCAxNS4zNDUgMTQuNzgzOSAxNS40ODQyTDE1LjU3MSAxNi4yNzEyTDE1LjU3ODMgMTYuMjc3NUMxNi42MjE3IDE1LjQ0IDE3Ljg4MjQgMTQuOTE3NiAxOS4yMTIzIDE0Ljc3MTZWMTMuNjc5MkgxOC40MjUzQzE4LjIxNjUgMTMuNjc5MiAxOC4wMTY0IDEzLjU5NjMgMTcuODY4OCAxMy40NDg3QzE3LjcyMTIgMTMuMzAxMSAxNy42MzgyIDEzLjEwMDkgMTcuNjM4MiAxMi44OTIyWk0xOS45OTkzIDI3LjMyMTJDMjEuNDYwNiAyNy4zMjExIDIyLjg2MiAyNi43NDA0IDIzLjg5NTIgMjUuNzA3MUMyNC45Mjg0IDI0LjY3MzcgMjUuNTA4NyAyMy4yNzIyIDI1LjUwODYgMjEuODEwOUMyNS41MDg1IDIwLjM0OTYgMjQuOTI3OCAxOC45NDgyIDIzLjg5NDUgMTcuOTE1QzIyLjg2MTEgMTYuODgxOSAyMS40NTk2IDE2LjMwMTUgMTkuOTk4MyAxNi4zMDE2QzE4LjUzNyAxNi4zMDE4IDE3LjEzNTYgMTYuODgyNCAxNi4xMDI1IDE3LjkxNThDMTUuMDY5MyAxOC45NDkyIDE0LjQ4ODkgMjAuMzUwNyAxNC40ODkgMjEuODExOUMxNC40ODkyIDIzLjI3MzIgMTUuMDY5OCAyNC42NzQ2IDE2LjEwMzIgMjUuNzA3OEMxNy4xMzY2IDI2Ljc0MSAxOC41MzgxIDI3LjMyMTMgMTkuOTk5MyAyNy4zMjEyWk0yMC40MDc2IDIwLjI5MDNMMjEuODAzMiAxOC44OTQ3QzIxLjg3NTggMTguODE5NSAyMS45NjI2IDE4Ljc1OTUgMjIuMDU4NiAxOC43MTgyQzIyLjE1NDYgMTguNjc2OSAyMi4yNTc5IDE4LjY1NTEgMjIuMzYyNCAxOC42NTQyQzIyLjQ2NjkgMTguNjUzMiAyMi41NzA1IDE4LjY3MzEgMjIuNjY3MyAxOC43MTI2QzIyLjc2NCAxOC43NTIxIDIyLjg1MTkgMTguODEwNSAyMi45MjU5IDE4Ljg4NDRDMjIuOTk5OCAxOC45NTgyIDIzLjA1ODMgMTkuMDQ2MSAyMy4wOTc5IDE5LjE0MjhDMjMuMTM3NSAxOS4yMzk1IDIzLjE1NzUgMTkuMzQzMSAyMy4xNTY2IDE5LjQ0NzZDMjMuMTU1NyAxOS41NTIxIDIzLjEzNDEgMTkuNjU1NCAyMy4wOTI5IDE5Ljc1MTVDMjMuMDUxNyAxOS44NDc1IDIyLjk5MTggMTkuOTM0NCAyMi45MTY2IDIwLjAwN0wyMS41MjEgMjEuNDAzN0MyMS41ODMgMjEuNjM3MSAyMS41OTA2IDIxLjg4MTUgMjEuNTQzMiAyMi4xMTgyQzIxLjQ5NTggMjIuMzU1IDIxLjM5NDggMjIuNTc3NyAyMS4yNDc4IDIyLjc2OTJDMjEuMTAwOCAyMi45NjA3IDIwLjkxMTggMjMuMTE1OSAyMC42OTUzIDIzLjIyMjhDMjAuNDc4OSAyMy4zMjk4IDIwLjI0MDggMjMuMzg1NiAxOS45OTkzIDIzLjM4NkMxOS43NzY2IDIzLjM4NDEgMTkuNTU2NyAyMy4zMzQ5IDE5LjM1NDQgMjMuMjQxNkMxOS4xNTIxIDIzLjE0ODMgMTguOTcxOCAyMy4wMTMxIDE4LjgyNTcgMjIuODQ1QzE4LjY3OTUgMjIuNjc2OCAxOC41NzA3IDIyLjQ3OTYgMTguNTA2NiAyMi4yNjYyQzE4LjQ0MjQgMjIuMDUyOCAxOC40MjQzIDIxLjgyODMgMTguNDUzNCAyMS42MDc0QzE4LjQ4MjUgMjEuMzg2NSAxOC41NTgyIDIxLjE3NDMgMTguNjc1NSAyMC45ODQ5QzE4Ljc5MjggMjAuNzk1NSAxOC45NDkgMjAuNjMzMiAxOS4xMzM4IDIwLjUwODZDMTkuMzE4NSAyMC4zODQxIDE5LjUyNzYgMjAuMzAwMyAxOS43NDcyIDIwLjI2MjZDMTkuOTY2OCAyMC4yMjUgMjAuMTkxOSAyMC4yMzQ0IDIwLjQwNzYgMjAuMjkwM1pcIiBmaWxsPVwiIzY2NzA4NVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMyBtdC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTEgY2FyZC1sYWJlbCBoZWFkZXJcIiAqbmdJZj1cImdldENhcmREYXRhPy5hdmdEd2VsbFRpbWUgPT09IDBcIj4wIG1pbnM8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktMSBjYXJkLWxhYmVsIGhlYWRlclwiICAqbmdJZj1cImdldENhcmREYXRhPy5hdmdEd2VsbFRpbWUgIT09IDBcIj57e2dldENhcmREYXRhPy5hdmdEd2VsbFRpbWUgPyBnZXRDYXJkRGF0YT8uYXZnRHdlbGxUaW1lIDonLS0nfX0gbWluczwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItaGVhZGVyXCI+QXZnIER3ZWxsIFRpbWU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1ib3JkZXIgcHktMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHAtMCBoLTkwcHggbXQtMyBteC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtc2hyaW5rLTAgbXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MVwiIHZpZXdCb3g9XCIwIDAgNDAgNDFcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHk9XCIwLjVcIiB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiByeD1cIjIwXCIgZmlsbD1cIiNEQUYxRkZcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTIxLjkwMDQgMTIuMTY3NUMyMi45OTU4IDEyLjE2NzUgMjQuMDQyMyAxMi4zOTE4IDI0Ljk5NzcgMTIuNzk4N0MyNS45ODg5IDEzLjIyMDcgMjYuODgwOSAxMy44NDAyIDI3LjYyNzkgMTQuNjA4N0MyOC4zNzM0IDE1LjM3NTYgMjguOTc1NiAxNi4yOTMxIDI5LjM4NTcgMTcuMzE2MkMyOS43ODEzIDE4LjI5OSAyOS45OTkzIDE5LjM3NTYgMjkuOTk5MyAyMC41MDA4QzI5Ljk5OTMgMjEuNjI3NyAyOS43ODEzIDIyLjcwNDMgMjkuMzg1NyAyMy42ODcxQzI4Ljk3NTYgMjQuNzA2OCAyOC4zNzM0IDI1LjYyNDQgMjcuNjI2MyAyNi4zOTI5QzI2Ljg4MDkgMjcuMTU5OCAyNS45ODg5IDI3Ljc3OTMgMjQuOTk0NSAyOC4yMDEyQzI0LjAzOTEgMjguNjA4MSAyMi45OTI1IDI4LjgzMjUgMjEuODk4OCAyOC44MzI1QzIwLjgwMzQgMjguODMyNSAxOS43NTY4IDI4LjYwODEgMTguODAxNCAyOC4yMDEyQzE3LjgxMDIgMjcuNzc5MyAxNi45MTgzIDI3LjE1OTggMTYuMTcyOSAyNi4zOTI5TDE2LjE3MTIgMjYuMzkxMkMxNS40MjQyIDI1LjYyMjcgMTQuODIzNiAyNC43MDUyIDE0LjQxMzQgMjMuNjg3MUMxNC4yODY1IDIzLjM3MDcgMTQuMTc3NCAyMy4wNDU5IDE0LjA4NzkgMjIuNzEyN0MxNC4yNTcyIDIyLjcyOTQgMTQuNDI5NyAyMi43Mzc4IDE0LjYwMzggMjIuNzM3OEMxNC45MzQyIDIyLjczNzggMTUuMjU2NSAyMi43MDc2IDE1LjU3MDYgMjIuNjQ5QzE1LjYyMjcgMjIuODA5OCAxNS42Nzk3IDIyLjk2ODggMTUuNzQxNSAyMy4xMjQ2QzE2LjA3ODUgMjMuOTYxNyAxNi41NzMyIDI0LjcxNTIgMTcuMTg4NSAyNS4zNDgxQzE3LjgwMzcgMjUuOTgxIDE4LjUzNzggMjYuNDkgMTkuMzQ5OSAyNi44MzY2QzIwLjEzMjggMjcuMTY5OCAyMC45OTM4IDI3LjM1NTcgMjEuODk4OCAyNy4zNTU3QzIyLjgwMzcgMjcuMzU1NyAyMy42NjMxIDI3LjE3MTUgMjQuNDQ3NiAyNi44MzY2QzI1LjI2MTQgMjYuNDkgMjUuOTkzOCAyNS45ODEgMjYuNjA5MSAyNS4zNDgxQzI3LjIyNDMgMjQuNzE1MiAyNy43MTkxIDIzLjk2MDEgMjguMDU2IDIzLjEyNDZDMjguMzc5OSAyMi4zMTkyIDI4LjU2MDUgMjEuNDMzNCAyOC41NjA1IDIwLjUwMjVDMjguNTYwNSAxOS41NzE1IDI4LjM4MTUgMTguNjg3NSAyOC4wNTYgMTcuODgwNEMyNy43MTkxIDE3LjA0MzIgMjcuMjI0MyAxNi4yODk4IDI2LjYwOTEgMTUuNjU2OUMyNS45OTM4IDE1LjAyNCAyNS4yNTk4IDE0LjUxNDkgMjQuNDQ3NiAxNC4xNjg0QzIzLjY2NDcgMTMuODM1MiAyMi44MDM3IDEzLjY0OTMgMjEuODk4OCAxMy42NDkzQzIwLjk5MzggMTMuNjQ5MyAyMC4xMzQ0IDEzLjgzMzUgMTkuMzQ5OSAxNC4xNjg0QzE5LjI3OTkgMTQuMTk4NSAxOS4yMSAxNC4yMzAzIDE5LjE0MTYgMTQuMjYyMUMxOC44NzQ3IDEzLjgzMDEgMTguNTUyNCAxMy40MzgzIDE4LjE4MjkgMTMuMDk4NEMxOC4zODQ4IDEyLjk5MTMgMTguNTkxNSAxMi44OTI1IDE4LjgwMTQgMTIuODAyMUMxOS43NjAxIDEyLjM5MTggMjAuODA1IDEyLjE2NzUgMjEuOTAwNCAxMi4xNjc1Wk0yMC45NzEgMTYuNTM5M0MyMC45NzEgMTYuMzM1IDIxLjA1MjQgMTYuMTUwOCAyMS4xODEgMTYuMDE2OUMyMS4zMTEyIDE1Ljg4MjkgMjEuNDkwMiAxNS44MDA5IDIxLjY4ODggMTUuODAwOUMyMS44ODc0IDE1LjgwMDkgMjIuMDY2NCAxNS44ODI5IDIyLjE5NjYgMTYuMDE2OUMyMi4zMjY4IDE2LjE1MDggMjIuNDA2NiAxNi4zMzUgMjIuNDA2NiAxNi41MzkzVjIwLjQyNzFMMjUuMjMwNSAyMi4xNTAxQzI1LjM5OTcgMjIuMjUzOSAyNS41MTM3IDIyLjQxOTYgMjUuNTU5MiAyMi42MDIxQzI1LjYwNDggMjIuNzg0NyAyNS41ODM3IDIyLjk4NTYgMjUuNDgyNyAyMy4xNTk3VjIzLjE2MTRDMjUuMzgxOCAyMy4zMzU1IDI1LjIyMDcgMjMuNDUyNyAyNS4wNDMzIDIzLjQ5OTZDMjQuODY1OSAyMy41NDY1IDI0LjY3MDYgMjMuNTI0NyAyNC41MDEzIDIzLjQyMDlIMjQuNDk5N0wyMS4zNDA1IDIxLjQ5MzdDMjEuMjMxNCAyMS40MzE4IDIxLjE0MTkgMjEuMzQxMyAyMS4wNzY4IDIxLjIzNDJDMjEuMDEwMSAyMS4xMjIgMjAuOTcxIDIwLjk4OTcgMjAuOTcxIDIwLjg0OTFWMTYuNTM5M1pcIiBmaWxsPVwiIzY2NzA4NVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgZD1cIk0xNC4zOTEzIDEyLjYwOTVDMTYuODE2NCAxMi42MDk1IDE4Ljc4MjYgMTQuNjMyMSAxOC43ODI2IDE3LjEyNjlDMTguNzgyNiAxOS42MjE4IDE2LjgxNjQgMjEuNjQ0NCAxNC4zOTEzIDIxLjY0NDRDMTEuOTY2MSAyMS42NDQ0IDEwIDE5LjYyMTggMTAgMTcuMTI2OUMxMCAxNC42MzIxIDExLjk2NjEgMTIuNjA5NSAxNC4zOTEzIDEyLjYwOTVaTTE0LjM5MTMgMTkuNzE3MkwxNi43NDggMTYuNzIwMUgxNS4yODQ4VjE1LjEyNjFIMTMuNDk3N1YxNi43MjAxSDEyLjAzNDVMMTQuMzkxMyAxOS43MTcyWlwiIGZpbGw9XCIjRjA0NDM4XCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LTMgbXQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktMSBjYXJkLWxhYmVsIGhlYWRlclwiICpuZ0lmPVwiZ2V0Q2FyZERhdGE/LmF2Z0Rvd25UaW1lID09PSAwXCI+MCBtaW5zPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS0xIGNhcmQtbGFiZWwgaGVhZGVyXCIgICpuZ0lmPVwiZ2V0Q2FyZERhdGE/LmF2Z0Rvd25UaW1lICE9PSAwXCI+e3tnZXRDYXJkRGF0YT8uYXZnRG93blRpbWUgPyBnZXRDYXJkRGF0YT8uYXZnRG93blRpbWUgOictLSd9fSBtaW5zPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItaGVhZGVyXCI+QXZnIERvd24gVGltZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IG10LTMgcG9zaXRpb24tcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtYm9yZGVyIGgtMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGVsbGlwc2UxIGJvcmRlci0wIHB4LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtbiBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZC1sYWJlbCBoZWFkZXJcIj57e2dldENhcmREYXRhPy5wb3RlbnRpYWxCdXllcnM/LnJhdGUgPyBnZXRDYXJkRGF0YT8ucG90ZW50aWFsQnV5ZXJzPy5yYXRlIDonLS0nfX0lPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdWItaGVhZGVyIFwiPlBvdGVudGlhbCBCdXllcnM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNhcmROb2RhdGFcIiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMiBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwYi0wIHB4LTAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctbm9kYXRhMVwiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YTEuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGEtdGl0bGUxXCI+Tm8gZGF0YSBmb3VuZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJub2RhdGEtc3ViXCI+VGhlcmUgaXMgbm8gcmVzdWx0IGZvciB0aGlzIGNvbnZlcnNpb24gZnVubmVsPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWNhcmROb2RhdGFcIiBjbGFzcz1cInRleHQtY2VudGVyXCIgaWQ9XCJQb3RlbnRpYWxCdXllcnNcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXIgbXMtMiBwLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFnZXRDYXJkR3JhcGhEYXRhPy5wb3RlbnRpYWxCdXllcnM/LlByZXZpb3VzVmFyaWF0aW9uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMzI4XzQ2NTQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSA5TDYuNzUgNC4yNUw0LjI1IDYuNzVMMC41IDNNMTEuNSA5SDguNU0xMS41IDlWNlwiIHN0cm9rZT1cIiNEOTJEMjBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIzMjhfNDY1NFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJnZXRDYXJkR3JhcGhEYXRhPy5wb3RlbnRpYWxCdXllcnM/LlByZXZpb3VzVmFyaWF0aW9uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8zMjE2XzExOClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS41IDNMNi43NSA3Ljc1TDQuMjUgNS4yNUwwLjUgOU0xMS41IDNIOC41TTExLjUgM1Y2XCIgc3Ryb2tlPVwiIzAzOTg1NVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMzIxNl8xMThcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm10LTIgbXMtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2V0Q2FyZEdyYXBoRGF0YT8ucG90ZW50aWFsQnV5ZXJzPy5QcmV2aW91c0RhdGEgPT09MFwiIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPjAlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2V0Q2FyZEdyYXBoRGF0YT8ucG90ZW50aWFsQnV5ZXJzPy5QcmV2aW91c0RhdGEgIT09MFwiIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPnt7Z2V0Q2FyZEdyYXBoRGF0YT8ucG90ZW50aWFsQnV5ZXJzPy5QcmV2aW91c0RhdGEgPyBnZXRDYXJkR3JhcGhEYXRhPy5wb3RlbnRpYWxCdXllcnM/LlByZXZpb3VzRGF0YTonLS0nfX0lPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwid2Vlay1mb250XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZzIFByZXZpb3VzICA8c3BhbiAqbmdJZj1cImRhdGVUeXBlID09PSdkYWlseSdcIj5kYXk8L3NwYW4+PHNwYW4gKm5nSWY9XCJkYXRlVHlwZSA9PT0nd2Vla2x5J1wiPndlZWs8L3NwYW4+IDxzcGFuICpuZ0lmPVwiZGF0ZVR5cGUgPT09J21vbnRobHknXCI+bW9udGg8L3NwYW4+PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSBlbmQtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYgMTJMMTAgOEw2IDRcIiBzdHJva2U9XCIjOThBMkIzXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC04IG10LTNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtYm9yZGVyIGgtMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBlbGxpcHNlMSBib3JkZXItMCBweC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW4gXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmQtbGFiZWwgaGVhZGVyXCI+UG90ZW50aWFsIEJ1eWVyIERpc3RyaWJ1dGlvbjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ViLWhlYWRlclwiPkNhdGVnb3J5LXdpc2U8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaDM+ICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgcHgtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc3RhcnQgbXMtMTAgIG10LTcgbWItM1wiPjxzcGFuPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjVcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjUgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTIwLjI1IDIxVjE5QzIwLjI1IDE3LjkzOTEgMTkuODI4NiAxNi45MjE3IDE5LjA3ODQgMTYuMTcxNkMxOC4zMjgzIDE1LjQyMTQgMTcuMzEwOSAxNSAxNi4yNSAxNUg4LjI1QzcuMTg5MTMgMTUgNi4xNzE3MiAxNS40MjE0IDUuNDIxNTcgMTYuMTcxNkM0LjY3MTQzIDE2LjkyMTcgNC4yNSAxNy45MzkxIDQuMjUgMTlWMjFNMTYuMjUgN0MxNi4yNSA5LjIwOTE0IDE0LjQ1OTEgMTEgMTIuMjUgMTFDMTAuMDQwOSAxMSA4LjI1IDkuMjA5MTQgOC4yNSA3QzguMjUgNC43OTA4NiAxMC4wNDA5IDMgMTIuMjUgM0MxNC40NTkxIDMgMTYuMjUgNC43OTA4NiAxNi4yNSA3WlwiIHN0cm9rZT1cIiM5OEEyQjNcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPjxzcGFuIGNsYXNzPVwibGVmdC1jYXJkLWNvdW50IG10LTIgbXMtMVwiPnt7Z2V0Q2FyZERhdGE/LnBvdGVudGlhbEJ1eWVycz8ucG90ZW50aWFsQnV5ZXJzU2luZ2xlPy5jb3VudCA/IGdldENhcmREYXRhPy5wb3RlbnRpYWxCdXllcnM/LnBvdGVudGlhbEJ1eWVyc1NpbmdsZT8uY291bnQudG9Mb2NhbGVTdHJpbmcoJ2VuLUlOJyk6Jy0tJ319PC9zcGFuPiA8c3BhbiBjbGFzcz1cImxlZnQtY2FyZC1jb3VudC1oZWFkZXIgbXMtMVwiPlNpbmdsZTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXN0YXJ0IG1zLTE1IG1iLTNcIj48c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHQgd2Vlay1mb250XCI+e3tnZXRDYXJkRGF0YT8ucG90ZW50aWFsQnV5ZXJzPy5wb3RlbnRpYWxCdXllcnNTaW5nbGU/LmFnZUdyb3VwID8gZ2V0Q2FyZERhdGE/LnBvdGVudGlhbEJ1eWVycz8ucG90ZW50aWFsQnV5ZXJzU2luZ2xlPy5hZ2VHcm91cDonLS0nfX0gYWdlPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBtcy0yIHAtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIWdldENhcmRHcmFwaERhdGE/LnBvdGVudGlhbEJ1eWVycz8ucG90ZW50aWFsQnV5ZXJzU2luZ2xlPy5QcmV2aW91c1ZhcmlhdGlvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjMyOF80NjU0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgOUw2Ljc1IDQuMjVMNC4yNSA2Ljc1TDAuNSAzTTExLjUgOUg4LjVNMTEuNSA5VjZcIiBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMzI4XzQ2NTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiZ2V0Q2FyZEdyYXBoRGF0YT8ucG90ZW50aWFsQnV5ZXJzPy5wb3RlbnRpYWxCdXllcnNTaW5nbGU/LlByZXZpb3VzVmFyaWF0aW9uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8zMjE2XzExOClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS41IDNMNi43NSA3Ljc1TDQuMjUgNS4yNUwwLjUgOU0xMS41IDNIOC41TTExLjUgM1Y2XCIgc3Ryb2tlPVwiIzAzOTg1NVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMzIxNl8xMThcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm10LTIgbXMtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2V0Q2FyZEdyYXBoRGF0YT8ucG90ZW50aWFsQnV5ZXJzPy5wb3RlbnRpYWxCdXllcnNTaW5nbGU/LlByZXZpb3VzRGF0YSA9PT0wXCIgY2xhc3M9XCJwZXJjZW50LXZhbHVlXCI+MCU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnZXRDYXJkR3JhcGhEYXRhPy5wb3RlbnRpYWxCdXllcnM/LnBvdGVudGlhbEJ1eWVyc1NpbmdsZT8uUHJldmlvdXNEYXRhICE9PTBcIiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIj57e2dldENhcmRHcmFwaERhdGE/LnBvdGVudGlhbEJ1eWVycz8ucG90ZW50aWFsQnV5ZXJzU2luZ2xlPy5QcmV2aW91c0RhdGEgPyBnZXRDYXJkR3JhcGhEYXRhPy5wb3RlbnRpYWxCdXllcnM/LnBvdGVudGlhbEJ1eWVyc1NpbmdsZT8uUHJldmlvdXNEYXRhOictLSd9fSU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3ZWVrLWZvbnRcIj4gdnMgUHJldmlvdXMgIDxzcGFuICpuZ0lmPVwiZGF0ZVR5cGUgPT09J2RhaWx5J1wiPmRheTwvc3Bhbj48c3BhbiAqbmdJZj1cImRhdGVUeXBlID09PSd3ZWVrbHknXCI+d2Vlazwvc3Bhbj4gPHNwYW4gKm5nSWY9XCJkYXRlVHlwZSA9PT0nbW9udGhseSdcIj5tb250aDwvc3Bhbj48L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgcHgtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHAtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc3RhcnQgbXMtMTAgbXQtNyBtYi0zXCI+PHNwYW4+IDxzdmcgd2lkdGg9XCIyNlwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNiAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjZcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjRENEQ0RDXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCItNDYwLjVcIiB5PVwiLTM0MC41XCIgd2lkdGg9XCI3ODNcIiBoZWlnaHQ9XCIxOTQ3XCIgcng9XCI0LjVcIiBzdHJva2U9XCIjOTc0N0ZGXCIgc3Ryb2tlLWRhc2hhcnJheT1cIjEwIDVcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hc2sgaWQ9XCJwYXRoLTItaW5zaWRlLTFfNzA3XzEzMTA2XCIgZmlsbD1cIndoaXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0tMTg5IC04OUMtMTg5IC05NS42Mjc0IC0xODMuNjI3IC0xMDEgLTE3NyAtMTAxSDI5NUMzMDEuNjI3IC0xMDEgMzA3IC05NS42Mjc0IDMwNyAtODlWODVDMzA3IDkxLjYyNzQgMzAxLjYyNyA5NyAyOTUgOTdILTE3N0MtMTgzLjYyNyA5NyAtMTg5IDkxLjYyNzQgLTE4OSA4NVYtODlaXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWFzaz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTS0xODkgLTg5Qy0xODkgLTk1LjYyNzQgLTE4My42MjcgLTEwMSAtMTc3IC0xMDFIMjk1QzMwMS42MjcgLTEwMSAzMDcgLTk1LjYyNzQgMzA3IC04OVY4NUMzMDcgOTEuNjI3NCAzMDEuNjI3IDk3IDI5NSA5N0gtMTc3Qy0xODMuNjI3IDk3IC0xODkgOTEuNjI3NCAtMTg5IDg1Vi04OVpcIiBmaWxsPVwid2hpdGVcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0tMTkwIC04OUMtMTkwIC05Ni4xNzk3IC0xODQuMTggLTEwMiAtMTc3IC0xMDJIMjk0QzMwMS4xOCAtMTAyIDMwNyAtOTYuMTc5NyAzMDcgLTg5QzMwNyAtOTUuMDc1MSAzMDEuNjI3IC0xMDAgMjk1IC0xMDBILTE3N0MtMTgzLjA3NSAtMTAwIC0xODggLTk1LjA3NTEgLTE4OCAtODlILTE5MFpNMzA3IDg1QzMwNyA5Mi4xNzk3IDMwMS4xOCA5OCAyOTQgOThILTE3N0MtMTg0LjE4IDk4IC0xOTAgOTIuMTc5NyAtMTkwIDg1SC0xODhDLTE4OCA5MS4wNzUxIC0xODMuMDc1IDk2IC0xNzcgOTZIMjk1QzMwMS42MjcgOTYgMzA3IDkxLjA3NTEgMzA3IDg1Wk0tMTc3IDk4Qy0xODQuMTggOTggLTE5MCA5Mi4xNzk3IC0xOTAgODVWLTg5Qy0xOTAgLTk2LjE3OTcgLTE4NC4xOCAtMTAyIC0xNzcgLTEwMlYtMTAwQy0xODMuMDc1IC0xMDAgLTE4OCAtOTUuMDc1MSAtMTg4IC04OVY4NUMtMTg4IDkxLjA3NTEgLTE4My4wNzUgOTYgLTE3NyA5NlY5OFpNMzA3IC0xMDFWOTdWLTEwMVpcIiBmaWxsPVwiI0QwRDVERFwiIG1hc2s9XCJ1cmwoI3BhdGgtMi1pbnNpZGUtMV83MDdfMTMxMDYpXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXNrIGlkPVwicGF0aC02LWluc2lkZS0yXzcwN18xMzEwNlwiIGZpbGw9XCJ3aGl0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNy43MTA2NCA3LjM4NDYyQzguMTk1NTIgNy4zODQ2MiA4LjY3NTY1IDcuMjg5MTEgOS4xMjM2MiA3LjEwMzU2QzkuNTcxNTkgNi45MTggOS45Nzg2MyA2LjY0NjAzIDEwLjMyMTUgNi4zMDMxNkMxMC42NjQ0IDUuOTYwMyAxMC45MzYzIDUuNTUzMjYgMTEuMTIxOSA1LjEwNTI5QzExLjMwNzQgNC42NTczMiAxMS40MDI5IDQuMTc3MTkgMTEuNDAyOSAzLjY5MjMxQzExLjQwMjkgMy4yMDc0MyAxMS4zMDc0IDIuNzI3MjkgMTEuMTIxOSAyLjI3OTMyQzEwLjkzNjMgMS44MzEzNSAxMC42NjQ0IDEuNDI0MzEgMTAuMzIxNSAxLjA4MTQ1QzkuOTc4NjMgMC43Mzg1OSA5LjU3MTU5IDAuNDY2NjE2IDkuMTIzNjIgMC4yODEwNkM4LjY3NTY1IDAuMDk1NTA0MyA4LjE5NTUyIC03LjIyNTI5ZS0wOSA3LjcxMDY0IDBDNi43MzEzOCAxLjQ1OTIxZS0wOCA1Ljc5MjIyIDAuMzg5MDEgNS4wOTk3OCAxLjA4MTQ1QzQuNDA3MzQgMS43NzM4OSA0LjAxODMzIDIuNzEzMDUgNC4wMTgzMyAzLjY5MjMxQzQuMDE4MzMgNC42NzE1NyA0LjQwNzM0IDUuNjEwNzIgNS4wOTk3OCA2LjMwMzE2QzUuNzkyMjIgNi45OTU2MSA2LjczMTM4IDcuMzg0NjIgNy43MTA2NCA3LjM4NDYyWk0xOC43ODc2IDcuMzg0NjJDMTkuMjcyNCA3LjM4NDYyIDE5Ljc1MjYgNy4yODkxMSAyMC4yMDA1IDcuMTAzNTZDMjAuNjQ4NSA2LjkxOCAyMS4wNTU2IDYuNjQ2MDMgMjEuMzk4NCA2LjMwMzE2QzIxLjc0MTMgNS45NjAzIDIyLjAxMzMgNS41NTMyNiAyMi4xOTg4IDUuMTA1MjlDMjIuMzg0NCA0LjY1NzMyIDIyLjQ3OTkgNC4xNzcxOSAyMi40Nzk5IDMuNjkyMzFDMjIuNDc5OSAzLjIwNzQzIDIyLjM4NDQgMi43MjcyOSAyMi4xOTg4IDIuMjc5MzJDMjIuMDEzMyAxLjgzMTM1IDIxLjc0MTMgMS40MjQzMSAyMS4zOTg0IDEuMDgxNDVDMjEuMDU1NiAwLjczODU5IDIwLjY0ODUgMC40NjY2MTYgMjAuMjAwNSAwLjI4MTA2QzE5Ljc1MjYgMC4wOTU1MDQzIDE5LjI3MjQgLTcuMjI1MjllLTA5IDE4Ljc4NzYgMEMxNy44MDgzIDEuNDU5MjFlLTA4IDE2Ljg2OTEgMC4zODkwMSAxNi4xNzY3IDEuMDgxNDVDMTUuNDg0MyAxLjc3Mzg5IDE1LjA5NTMgMi43MTMwNSAxNS4wOTUzIDMuNjkyMzFDMTUuMDk1MyA0LjY3MTU3IDE1LjQ4NDMgNS42MTA3MiAxNi4xNzY3IDYuMzAzMTZDMTYuODY5MSA2Ljk5NTYxIDE3LjgwODMgNy4zODQ2MiAxOC43ODc2IDcuMzg0NjJaTTAuOTQxNDA2IDEwLjczNkMwLjk0MTQwNiAxMC40NTc1IDAuOTk2MjU4IDEwLjE4MTggMS4xMDI4MyA5LjkyNDQ4QzEuMjA5NCA5LjY2NzE5IDEuMzY1NiA5LjQzMzQyIDEuNTYyNTIgOS4yMzY1QzEuNzU5NDQgOS4wMzk1OCAxLjk5MzIxIDguODgzMzggMi4yNTA1IDguNzc2ODFDMi41MDc3OCA4LjY3MDI0IDIuNzgzNTQgOC42MTUzOSAzLjA2MjAyIDguNjE1MzlIOC45ODQ0OEM4LjU1MTY5IDkuMzYzNDUgOC4zMjQ1MiAxMC4yMTI3IDguMzI2MDIgMTEuMDc2OUM4LjMyNTE5IDExLjc3NTUgOC40NzM0MSAxMi40NjYyIDguNzYwNzkgMTMuMTAyOUM5LjA0ODE2IDEzLjczOTYgOS40NjgwNyAxNC4zMDc3IDkuOTkyNDggMTQuNzY5Mkg4LjYwMDQ4QzguMDE0MTggMTQuNzY4NyA3LjQzODAzIDE0LjkyMjIgNi45Mjk2OSAxNS4yMTQ0QzYuNDIxMzQgMTUuNTA2NSA1Ljk5ODY0IDE1LjkyNyA1LjcwMzg3IDE2LjQzMzhDMy43MjExIDE2LjA0NDkgMi41MTYxOCAxNS4wNzgyIDEuODE0NjQgMTMuOTkyQzAuOTQxNDA2IDEyLjY0IDAuOTQxNDA2IDExLjI0MzEgMC45NDE0MDYgMTEuMDAxMlYxMC43MzZaTTE3Ljg5NzcgMTQuNzY5MkMxOC40ODQgMTQuNzY4NyAxOS4wNjAyIDE0LjkyMjIgMTkuNTY4NSAxNS4yMTQ0QzIwLjA3NjkgMTUuNTA2NSAyMC40OTk2IDE1LjkyNyAyMC43OTQzIDE2LjQzMzhDMjIuNzc3MSAxNi4wNDQ5IDIzLjk4MiAxNS4wNzgyIDI0LjY4MzYgMTMuOTkyQzI1LjU1NjggMTIuNjQgMjUuNTU2OCAxMS4yNDMxIDI1LjU1NjggMTEuMDAxMlYxMC43MzY2QzI1LjU1NjkgMTAuNDU4MSAyNS41MDIxIDEwLjE4MjMgMjUuMzk1NSA5LjkyNDlDMjUuMjg5IDkuNjY3NTUgMjUuMTMyOCA5LjQzMzcgMjQuOTM1OSA5LjIzNjcyQzI0LjczOSA5LjAzOTczIDI0LjUwNTIgOC44ODM0OCAyNC4yNDc4IDguNzc2ODdDMjMuOTkwNSA4LjY3MDI2IDIzLjcxNDcgOC42MTUzOSAyMy40MzYyIDguNjE1MzlIMTcuNTEzN0MxNy45NDY1IDkuMzYzNDUgMTguMTczNyAxMC4yMTI3IDE4LjE3MjIgMTEuMDc2OUMxOC4xNzMgMTEuNzc1NSAxOC4wMjQ4IDEyLjQ2NjIgMTcuNzM3NCAxMy4xMDI5QzE3LjQ1IDEzLjczOTYgMTcuMDMwMSAxNC4zMDc3IDE2LjUwNTcgMTQuNzY5MkgxNy44OTc3Wk0xNi45NDE0IDExLjA3NjlDMTYuOTQxNCAxMi4wNTYyIDE2LjU1MjQgMTIuOTk1MyAxNS44NiAxMy42ODc4QzE1LjE2NzUgMTQuMzgwMiAxNC4yMjg0IDE0Ljc2OTIgMTMuMjQ5MSAxNC43NjkyQzEyLjI2OTggMTQuNzY5MiAxMS4zMzA3IDE0LjM4MDIgMTAuNjM4MiAxMy42ODc4QzkuOTQ1OCAxMi45OTUzIDkuNTU2NzkgMTIuMDU2MiA5LjU1Njc5IDExLjA3NjlDOS41NTY3OSAxMC4wOTc3IDkuOTQ1OCA5LjE1ODUxIDEwLjYzODIgOC40NjYwN0MxMS4zMzA3IDcuNzczNjMgMTIuMjY5OCA3LjM4NDYyIDEzLjI0OTEgNy4zODQ2MkMxNC4yMjg0IDcuMzg0NjIgMTUuMTY3NSA3Ljc3MzYzIDE1Ljg2IDguNDY2MDdDMTYuNTUyNCA5LjE1ODUxIDE2Ljk0MTQgMTAuMDk3NyAxNi45NDE0IDExLjA3NjlaTTYuNDc5ODcgMTguMTIwNkM2LjQ3OTg3IDE3LjU1ODIgNi43MDMyOSAxNy4wMTg4IDcuMTAwOTggMTYuNjIxMUM3LjQ5ODY3IDE2LjIyMzQgOC4wMzgwNiAxNiA4LjYwMDQ4IDE2SDE3Ljg5NzdDMTguNDYwMSAxNiAxOC45OTk1IDE2LjIyMzQgMTkuMzk3MiAxNi42MjExQzE5Ljc5NDkgMTcuMDE4OCAyMC4wMTgzIDE3LjU1ODIgMjAuMDE4MyAxOC4xMjA2VjE4LjM4NThDMjAuMDE4MyAxOC42MjgzIDIwLjAxODMgMjAuMDI0NiAxOS4xNDUxIDIxLjM3NjZDMTguMjMyNSAyMi43ODk1IDE2LjQ2OTQgMjQgMTMuMjQ5MSAyNEMxMC4wMjg4IDI0IDguMjY1NzEgMjIuNzg5NSA3LjM1MzEgMjEuMzc2NkM2LjQ3OTg3IDIwLjAyNDYgNi40Nzk4NyAxOC42Mjc3IDYuNDc5ODcgMTguMzg1OFYxOC4xMjA2WlwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hc2s+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk03LjcxMDY0IDcuMzg0NjJDOC4xOTU1MiA3LjM4NDYyIDguNjc1NjUgNy4yODkxMSA5LjEyMzYyIDcuMTAzNTZDOS41NzE1OSA2LjkxOCA5Ljk3ODYzIDYuNjQ2MDMgMTAuMzIxNSA2LjMwMzE2QzEwLjY2NDQgNS45NjAzIDEwLjkzNjMgNS41NTMyNiAxMS4xMjE5IDUuMTA1MjlDMTEuMzA3NCA0LjY1NzMyIDExLjQwMjkgNC4xNzcxOSAxMS40MDI5IDMuNjkyMzFDMTEuNDAyOSAzLjIwNzQzIDExLjMwNzQgMi43MjcyOSAxMS4xMjE5IDIuMjc5MzJDMTAuOTM2MyAxLjgzMTM1IDEwLjY2NDQgMS40MjQzMSAxMC4zMjE1IDEuMDgxNDVDOS45Nzg2MyAwLjczODU5IDkuNTcxNTkgMC40NjY2MTYgOS4xMjM2MiAwLjI4MTA2QzguNjc1NjUgMC4wOTU1MDQzIDguMTk1NTIgLTcuMjI1MjllLTA5IDcuNzEwNjQgMEM2LjczMTM4IDEuNDU5MjFlLTA4IDUuNzkyMjIgMC4zODkwMSA1LjA5OTc4IDEuMDgxNDVDNC40MDczNCAxLjc3Mzg5IDQuMDE4MzMgMi43MTMwNSA0LjAxODMzIDMuNjkyMzFDNC4wMTgzMyA0LjY3MTU3IDQuNDA3MzQgNS42MTA3MiA1LjA5OTc4IDYuMzAzMTZDNS43OTIyMiA2Ljk5NTYxIDYuNzMxMzggNy4zODQ2MiA3LjcxMDY0IDcuMzg0NjJaTTE4Ljc4NzYgNy4zODQ2MkMxOS4yNzI0IDcuMzg0NjIgMTkuNzUyNiA3LjI4OTExIDIwLjIwMDUgNy4xMDM1NkMyMC42NDg1IDYuOTE4IDIxLjA1NTYgNi42NDYwMyAyMS4zOTg0IDYuMzAzMTZDMjEuNzQxMyA1Ljk2MDMgMjIuMDEzMyA1LjU1MzI2IDIyLjE5ODggNS4xMDUyOUMyMi4zODQ0IDQuNjU3MzIgMjIuNDc5OSA0LjE3NzE5IDIyLjQ3OTkgMy42OTIzMUMyMi40Nzk5IDMuMjA3NDMgMjIuMzg0NCAyLjcyNzI5IDIyLjE5ODggMi4yNzkzMkMyMi4wMTMzIDEuODMxMzUgMjEuNzQxMyAxLjQyNDMxIDIxLjM5ODQgMS4wODE0NUMyMS4wNTU2IDAuNzM4NTkgMjAuNjQ4NSAwLjQ2NjYxNiAyMC4yMDA1IDAuMjgxMDZDMTkuNzUyNiAwLjA5NTUwNDMgMTkuMjcyNCAtNy4yMjUyOWUtMDkgMTguNzg3NiAwQzE3LjgwODMgMS40NTkyMWUtMDggMTYuODY5MSAwLjM4OTAxIDE2LjE3NjcgMS4wODE0NUMxNS40ODQzIDEuNzczODkgMTUuMDk1MyAyLjcxMzA1IDE1LjA5NTMgMy42OTIzMUMxNS4wOTUzIDQuNjcxNTcgMTUuNDg0MyA1LjYxMDcyIDE2LjE3NjcgNi4zMDMxNkMxNi44NjkxIDYuOTk1NjEgMTcuODA4MyA3LjM4NDYyIDE4Ljc4NzYgNy4zODQ2MlpNMC45NDE0MDYgMTAuNzM2QzAuOTQxNDA2IDEwLjQ1NzUgMC45OTYyNTggMTAuMTgxOCAxLjEwMjgzIDkuOTI0NDhDMS4yMDk0IDkuNjY3MTkgMS4zNjU2IDkuNDMzNDIgMS41NjI1MiA5LjIzNjVDMS43NTk0NCA5LjAzOTU4IDEuOTkzMjEgOC44ODMzOCAyLjI1MDUgOC43NzY4MUMyLjUwNzc4IDguNjcwMjQgMi43ODM1NCA4LjYxNTM5IDMuMDYyMDIgOC42MTUzOUg4Ljk4NDQ4QzguNTUxNjkgOS4zNjM0NSA4LjMyNDUyIDEwLjIxMjcgOC4zMjYwMiAxMS4wNzY5QzguMzI1MTkgMTEuNzc1NSA4LjQ3MzQxIDEyLjQ2NjIgOC43NjA3OSAxMy4xMDI5QzkuMDQ4MTYgMTMuNzM5NiA5LjQ2ODA3IDE0LjMwNzcgOS45OTI0OCAxNC43NjkySDguNjAwNDhDOC4wMTQxOCAxNC43Njg3IDcuNDM4MDMgMTQuOTIyMiA2LjkyOTY5IDE1LjIxNDRDNi40MjEzNCAxNS41MDY1IDUuOTk4NjQgMTUuOTI3IDUuNzAzODcgMTYuNDMzOEMzLjcyMTEgMTYuMDQ0OSAyLjUxNjE4IDE1LjA3ODIgMS44MTQ2NCAxMy45OTJDMC45NDE0MDYgMTIuNjQgMC45NDE0MDYgMTEuMjQzMSAwLjk0MTQwNiAxMS4wMDEyVjEwLjczNlpNMTcuODk3NyAxNC43NjkyQzE4LjQ4NCAxNC43Njg3IDE5LjA2MDIgMTQuOTIyMiAxOS41Njg1IDE1LjIxNDRDMjAuMDc2OSAxNS41MDY1IDIwLjQ5OTYgMTUuOTI3IDIwLjc5NDMgMTYuNDMzOEMyMi43NzcxIDE2LjA0NDkgMjMuOTgyIDE1LjA3ODIgMjQuNjgzNiAxMy45OTJDMjUuNTU2OCAxMi42NCAyNS41NTY4IDExLjI0MzEgMjUuNTU2OCAxMS4wMDEyVjEwLjczNjZDMjUuNTU2OSAxMC40NTgxIDI1LjUwMjEgMTAuMTgyMyAyNS4zOTU1IDkuOTI0OUMyNS4yODkgOS42Njc1NSAyNS4xMzI4IDkuNDMzNyAyNC45MzU5IDkuMjM2NzJDMjQuNzM5IDkuMDM5NzMgMjQuNTA1MiA4Ljg4MzQ4IDI0LjI0NzggOC43NzY4N0MyMy45OTA1IDguNjcwMjYgMjMuNzE0NyA4LjYxNTM5IDIzLjQzNjIgOC42MTUzOUgxNy41MTM3QzE3Ljk0NjUgOS4zNjM0NSAxOC4xNzM3IDEwLjIxMjcgMTguMTcyMiAxMS4wNzY5QzE4LjE3MyAxMS43NzU1IDE4LjAyNDggMTIuNDY2MiAxNy43Mzc0IDEzLjEwMjlDMTcuNDUgMTMuNzM5NiAxNy4wMzAxIDE0LjMwNzcgMTYuNTA1NyAxNC43NjkySDE3Ljg5NzdaTTE2Ljk0MTQgMTEuMDc2OUMxNi45NDE0IDEyLjA1NjIgMTYuNTUyNCAxMi45OTUzIDE1Ljg2IDEzLjY4NzhDMTUuMTY3NSAxNC4zODAyIDE0LjIyODQgMTQuNzY5MiAxMy4yNDkxIDE0Ljc2OTJDMTIuMjY5OCAxNC43NjkyIDExLjMzMDcgMTQuMzgwMiAxMC42MzgyIDEzLjY4NzhDOS45NDU4IDEyLjk5NTMgOS41NTY3OSAxMi4wNTYyIDkuNTU2NzkgMTEuMDc2OUM5LjU1Njc5IDEwLjA5NzcgOS45NDU4IDkuMTU4NTEgMTAuNjM4MiA4LjQ2NjA3QzExLjMzMDcgNy43NzM2MyAxMi4yNjk4IDcuMzg0NjIgMTMuMjQ5MSA3LjM4NDYyQzE0LjIyODQgNy4zODQ2MiAxNS4xNjc1IDcuNzczNjMgMTUuODYgOC40NjYwN0MxNi41NTI0IDkuMTU4NTEgMTYuOTQxNCAxMC4wOTc3IDE2Ljk0MTQgMTEuMDc2OVpNNi40Nzk4NyAxOC4xMjA2QzYuNDc5ODcgMTcuNTU4MiA2LjcwMzI5IDE3LjAxODggNy4xMDA5OCAxNi42MjExQzcuNDk4NjcgMTYuMjIzNCA4LjAzODA2IDE2IDguNjAwNDggMTZIMTcuODk3N0MxOC40NjAxIDE2IDE4Ljk5OTUgMTYuMjIzNCAxOS4zOTcyIDE2LjYyMTFDMTkuNzk0OSAxNy4wMTg4IDIwLjAxODMgMTcuNTU4MiAyMC4wMTgzIDE4LjEyMDZWMTguMzg1OEMyMC4wMTgzIDE4LjYyODMgMjAuMDE4MyAyMC4wMjQ2IDE5LjE0NTEgMjEuMzc2NkMxOC4yMzI1IDIyLjc4OTUgMTYuNDY5NCAyNCAxMy4yNDkxIDI0QzEwLjAyODggMjQgOC4yNjU3MSAyMi43ODk1IDcuMzUzMSAyMS4zNzY2QzYuNDc5ODcgMjAuMDI0NiA2LjQ3OTg3IDE4LjYyNzcgNi40Nzk4NyAxOC4zODU4VjE4LjEyMDZaXCIgc3Ryb2tlPVwiIzk4QTJCM1wiIHN0cm9rZS13aWR0aD1cIjNcIiBtYXNrPVwidXJsKCNwYXRoLTYtaW5zaWRlLTJfNzA3XzEzMTA2KVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+PHNwYW4gY2xhc3M9XCJsZWZ0LWNhcmQtY291bnQgbXMtMSBtdC0yXCI+e3tnZXRDYXJkRGF0YT8ucG90ZW50aWFsQnV5ZXJzPy5wb3RlbnRpYWxCdXllcnNHcm91cD8uY291bnQgPyBnZXRDYXJkRGF0YT8ucG90ZW50aWFsQnV5ZXJzPy5wb3RlbnRpYWxCdXllcnNHcm91cD8uY291bnQudG9Mb2NhbGVTdHJpbmcoJ2VuLUlOJyk6Jy0tJ319PC9zcGFuPiA8c3BhbiBjbGFzcz1cImxlZnQtY2FyZC1jb3VudC1oZWFkZXIgbXMtMVwiPkdyb3VwPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zdGFydCBtcy0xNSBtYi0zXCI+PHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0IHdlZWstZm9udFwiPnt7Z2V0Q2FyZERhdGE/LnBvdGVudGlhbEJ1eWVycz8ucG90ZW50aWFsQnV5ZXJzR3JvdXA/LmFnZUdyb3VwID8gZ2V0Q2FyZERhdGE/LnBvdGVudGlhbEJ1eWVycz8ucG90ZW50aWFsQnV5ZXJzR3JvdXA/LmFnZUdyb3VwOictLSd9fSBhZ2U8L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIG1zLTIgcC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIhZ2V0Q2FyZEdyYXBoRGF0YT8ucG90ZW50aWFsQnV5ZXJzPy5wb3RlbnRpYWxCdXllcnNHcm91cD8uUHJldmlvdXNWYXJpYXRpb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjMyOF80NjU0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS41IDlMNi43NSA0LjI1TDQuMjUgNi43NUwwLjUgM00xMS41IDlIOC41TTExLjUgOVY2XCIgc3Ryb2tlPVwiI0Q5MkQyMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIzMjhfNDY1NFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImdldENhcmRHcmFwaERhdGE/LnBvdGVudGlhbEJ1eWVycz8ucG90ZW50aWFsQnV5ZXJzR3JvdXA/LlByZXZpb3VzVmFyaWF0aW9uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzMyMTZfMTE4KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS41IDNMNi43NSA3Ljc1TDQuMjUgNS4yNUwwLjUgOU0xMS41IDNIOC41TTExLjUgM1Y2XCIgc3Ryb2tlPVwiIzAzOTg1NVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzMyMTZfMTE4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdC0yIG1zLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnZXRDYXJkR3JhcGhEYXRhPy5wb3RlbnRpYWxCdXllcnM/LnBvdGVudGlhbEJ1eWVyc0dyb3VwPy5QcmV2aW91c0RhdGEgPT09MFwiIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPjAlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdldENhcmRHcmFwaERhdGE/LnBvdGVudGlhbEJ1eWVycz8ucG90ZW50aWFsQnV5ZXJzR3JvdXA/LlByZXZpb3VzRGF0YSAhPT0wXCIgY2xhc3M9XCJwZXJjZW50LXZhbHVlXCI+e3tnZXRDYXJkR3JhcGhEYXRhPy5wb3RlbnRpYWxCdXllcnM/LnBvdGVudGlhbEJ1eWVyc0dyb3VwPy5QcmV2aW91c0RhdGEgPyBnZXRDYXJkR3JhcGhEYXRhPy5wb3RlbnRpYWxCdXllcnM/LnBvdGVudGlhbEJ1eWVyc0dyb3VwPy5QcmV2aW91c0RhdGE6Jy0tJ319JTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwid2Vlay1mb250XCI+IHZzIFByZXZpb3VzICA8c3BhbiAqbmdJZj1cImRhdGVUeXBlID09PSdkYWlseSdcIj5kYXk8L3NwYW4+PHNwYW4gKm5nSWY9XCJkYXRlVHlwZSA9PT0nd2Vla2x5J1wiPndlZWs8L3NwYW4+IDxzcGFuICpuZ0lmPVwiZGF0ZVR5cGUgPT09J21vbnRobHknXCI+bW9udGg8L3NwYW4+PC9zcGFuPlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgcHgtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgbXQtNyBtYi0zXCI+PHNwYW4gY2xhc3M9XCJsZWZ0LWNhcmQtY291bnQgbXQtMlwiPnt7Z2V0Q2FyZERhdGE/LnBvdGVudGlhbEJ1eWVycz8ucG90ZW50aWFsQnV5ZXJzUGVyc29ucz8uY291bnQgPyBnZXRDYXJkRGF0YT8ucG90ZW50aWFsQnV5ZXJzPy5wb3RlbnRpYWxCdXllcnNQZXJzb25zPy5jb3VudC50b0xvY2FsZVN0cmluZygnZW4tSU4nKTonLS0nfX08L3NwYW4+IDxzcGFuIGNsYXNzPVwibGVmdC1jYXJkLWNvdW50LWhlYWRlciBtcy0xXCI+UGVyc29uczwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtYi0zXCI+PHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0IHdlZWstZm9udFwiPnt7Z2V0Q2FyZERhdGE/LnBvdGVudGlhbEJ1eWVycz8ucG90ZW50aWFsQnV5ZXJzU2luZ2xlPy5hZ2VHcm91cCA/IGdldENhcmREYXRhLnBvdGVudGlhbEJ1eWVycz8ucG90ZW50aWFsQnV5ZXJzU2luZ2xlPy5hZ2VHcm91cDonLS0nfX0gYWdlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIHRleHQtY2VudGVyIHAtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdC0yIG1zLTJcIj48c3BhbiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIj48L3NwYW4+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1zLTIgd2Vlay1mb250XCI+IEF2Zy4gR3JvdXAgc2l6ZTwvc3Bhbj5cclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNiAxMkwxMCA4TDYgNFwiIHN0cm9rZT1cIiM5OEEyQjNcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgXHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBtYi0zXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwdC0zIHBzLTVcIj5cclxuICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlLXRleHRcIj5Db252ZXJzaW9uIEZ1bm5lbCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInRvcFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwiVG90YWwgb3Bwb3J0dW5pdHkgb2Ygc2FsZXMgY29udmVyc2lvbiB2ZXJzdXMgdG90YWwgd2Fsa2luc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzE0MzJfODAwMzUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOC4wMDA2NSAxMC42NjY2VjcuOTk5OTJNOC4wMDA2NSA1LjMzMzI1SDguMDA3MzJNMTQuNjY3MyA3Ljk5OTkyQzE0LjY2NzMgMTEuNjgxOCAxMS42ODI2IDE0LjY2NjYgOC4wMDA2NSAxNC42NjY2QzQuMzE4NzUgMTQuNjY2NiAxLjMzMzk4IDExLjY4MTggMS4zMzM5OCA3Ljk5OTkyQzEuMzMzOTggNC4zMTgwMiA0LjMxODc1IDEuMzMzMjUgOC4wMDA2NSAxLjMzMzI1QzExLjY4MjYgMS4zMzMyNSAxNC42NjczIDQuMzE4MDIgMTQuNjY3MyA3Ljk5OTkyWlwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8xNDMyXzgwMDM1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIGZpbGw9XCJ3aGl0ZVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXN1YiBtYi0yXCI+e3toZWFkZXJEYXRhPy5kYXRlPy5zdGFydERhdGUgfCBkYXRlOidkZCBNTU0sIHl5eXknfX0g4oCTIHt7aGVhZGVyRGF0YT8uZGF0ZT8uZW5kRGF0ZSB8IGRhdGU6J2RkIE1NTSwgeXl5eSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwLTBcIiA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaGVhdGxvYWRpbmdcIiBjbGFzcz1cInJvdyBsb2FkZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGgtMjc1cHhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lciBwdC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImhlYXRub0RhdGFcIiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1ub2RhdGFcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGExLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS10aXRsZVwiPk5vIGRhdGEgZm91bmQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGEtc3ViXCI+VGhlcmUgaXMgbm8gcmVzdWx0IGZvciB0aGlzIGNvbnZlcnNpb24gZnVubmVsPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWhlYXRsb2FkaW5nICYmICFoZWF0bm9EYXRhXCIgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtYi0zXCIgaWQ9XCJjaGFydGRpdlwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJtcGFsb2FkaW5nICYmIHN0b3JlSWRhcnJheT8ubGVuZ3RoID4gMSB8fCBtYXBub0RhdGEgJiYgc3RvcmVJZGFycmF5Py5sZW5ndGggPiAxIHx8ICFzdG9yZUlkYXJyYXk/Lmxlbmd0aFwiIGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIHB0LTMgcHMtNyBwZS0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlLXRleHRcIiA+RXhwbG9yZTwvc3Bhbj4gIFxyXG4gICAgICAgICAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm1wYWxvYWRpbmdcIiBjbGFzcz1cInJvdyBsb2FkZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGgtMjI1cHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyIHB0LTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibWFwbm9EYXRhXCIgIGNsYXNzPVwicm93IHB4LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLW1hcFwiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YTEuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGEtdGl0bGVcIj5ObyBkYXRhIGZvdW5kPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGEtc3ViXCI+VGhlcmUgaXMgbm8gcmVzdWx0IGZvciB0aGlzIFN0b3JlIG1hcDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFtcGFsb2FkaW5nICYmICFtYXBub0RhdGEgJiYgc3RvcmVJZGFycmF5Py5sZW5ndGggPiAxXCIgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIHB0LTMgcHMtNyBwZS0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlLXRleHRcIiA+RXhwbG9yZTwvc3Bhbj4gIFxyXG4gICAgICAgICAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhciBtdC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCIhbXBhbG9hZGluZyAmJiAhbWFwbm9EYXRhXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJleHBvcmVWaWV3KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBtZS04IGJ0bi1saWdodC1wcmltYXJ5MSByb3VuZGVkLTMgdGV4dC1ub3dyYXAgYm9yZGVyLXZhbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj5FeHBsb3JlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFtYXBub0RhdGFcIiBjbGFzcz1cImNhcmQtYm9keSBjb2wtbWQtMTIgcHQtMCBwYi01IHBzLTdcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cIm1hcFwiIGNsYXNzPVwidy0xMDBcIiA+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInN0b3JlSWRhcnJheT8ubGVuZ3RoID09PSAxXCIgY2xhc3M9XCJjYXJkIHBiLTJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwdC0zIHBzLTUgcGUtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZS10ZXh0XCI+UmVjYXAgVmlkZW8gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHBsYWNlbWVudD1cInJpZ2h0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJBIHF1aWNrIHJlY2FwIG9mIHRoZSBzdG9yZSBhY3Rpdml0eSBhbG9uZyB3aXRoIHRoZSBhdmcgdGVjaCBpbmZyYXN0cnVjdHVyZSBkb3dudGltZSBzdGF0dXNcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzE0MzJfODAwMzUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTguMDAwNjUgMTAuNjY2NlY3Ljk5OTkyTTguMDAwNjUgNS4zMzMyNUg4LjAwNzMyTTE0LjY2NzMgNy45OTk5MkMxNC42NjczIDExLjY4MTggMTEuNjgyNiAxNC42NjY2IDguMDAwNjUgMTQuNjY2NkM0LjMxODc1IDE0LjY2NjYgMS4zMzM5OCAxMS42ODE4IDEuMzMzOTggNy45OTk5MkMxLjMzMzk4IDQuMzE4MDIgNC4zMTg3NSAxLjMzMzI1IDguMDAwNjUgMS4zMzMyNUMxMS42ODI2IDEuMzMzMjUgMTQuNjY3MyA0LjMxODAyIDE0LjY2NzMgNy45OTk5MlpcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTQzMl84MDAzNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgZmlsbD1cIndoaXRlXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1zdWIgbWItMlwiPkRhdGVkOiB7e2hlYWRlckRhdGE/LmRhdGU/LmVuZERhdGUgfCBkYXRlOicgZGQgTU1NLHl5eXknfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyIG10LTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1vdXRsaW5lIGJ0bi1vdXRsaW5lLWRlZmF1bHQgcm91bmRlZC0zIHRleHQtbm93cmFwIGJvcmRlci12YWwgdGV4dC1zdGFydFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE2IDE0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPVwiR3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiVmVjdG9yXCIgZD1cIk05LjUxOTUzIDAuMzMzOTg0QzEwLjM5NTggMC4zMzM5ODQgMTEuMjMzMSAwLjUxMzQ3NyAxMS45OTc0IDAuODM4OTc0QzEyLjc5MDQgMS4xNzY1MyAxMy41MDM5IDEuNjcyMTQgMTQuMTAxNiAyLjI4Njk3QzE0LjY5NzkgMi45MDA0NiAxNS4xNzk3IDMuNjM0NSAxNS41MDc4IDQuNDUyOTNDMTUuODI0MiA1LjIzOTIyIDE1Ljk5ODcgNi4xMDA1MSAxNS45OTg3IDcuMDAwNjVDMTUuOTk4NyA3LjkwMjEzIDE1LjgyNDIgOC43NjM0MyAxNS41MDc4IDkuNTQ5NzFDMTUuMTc5NyAxMC4zNjU1IDE0LjY5NzkgMTEuMDk5NSAxNC4xMDAzIDExLjcxNDNDMTMuNTAzOSAxMi4zMjc4IDEyLjc5MDQgMTIuODIzNCAxMS45OTQ4IDEzLjE2MUMxMS4yMzA1IDEzLjQ4NjUgMTAuMzkzMiAxMy42NjYgOS41MTgyMyAxMy42NjZDOC42NDE5MyAxMy42NjYgNy44MDQ2OSAxMy40ODY1IDcuMDQwMzYgMTMuMTYxQzYuMjQ3NCAxMi44MjM0IDUuNTMzODUgMTIuMzI3OCA0LjkzNzUgMTEuNzE0M0w0LjkzNjIgMTEuNzEzQzQuMzM4NTQgMTEuMDk4MiAzLjg1ODA3IDEwLjM2NDEgMy41Mjk5NSA5LjU0OTcxQzMuNDI4MzkgOS4yOTY1NSAzLjM0MTE1IDkuMDM2NjggMy4yNjk1MyA4Ljc3MDEzQzMuNDA0OTUgOC43ODM1MiAzLjU0Mjk3IDguNzkwMjIgMy42ODIyOSA4Ljc5MDIyQzMuOTQ2NjEgOC43OTAyMiA0LjIwNDQzIDguNzY2MTEgNC40NTU3MyA4LjcxOTIyQzQuNDk3NCA4Ljg0NzgyIDQuNTQyOTcgOC45NzUwNyA0LjU5MjQ1IDkuMDk5NjRDNC44NjE5OCA5Ljc2OTM5IDUuMjU3ODEgMTAuMzcyMiA1Ljc1IDEwLjg3ODVDNi4yNDIxOSAxMS4zODQ4IDYuODI5NDMgMTEuNzkyIDcuNDc5MTcgMTIuMDY5M0M4LjEwNTQ3IDEyLjMzNTkgOC43OTQyNyAxMi40ODQ1IDkuNTE4MjMgMTIuNDg0NUMxMC4yNDIyIDEyLjQ4NDUgMTAuOTI5NyAxMi4zMzcyIDExLjU1NzMgMTIuMDY5M0MxMi4yMDgzIDExLjc5MiAxMi43OTQzIDExLjM4NDggMTMuMjg2NSAxMC44Nzg1QzEzLjc3ODYgMTAuMzcyMiAxNC4xNzQ1IDkuNzY4MDUgMTQuNDQ0IDkuMDk5NjRDMTQuNzAzMSA4LjQ1NTM0IDE0Ljg0NzcgNy43NDY3NSAxNC44NDc3IDcuMDAxOTlDMTQuODQ3NyA2LjI1NzIzIDE0LjcwNDQgNS41NDk5OCAxNC40NDQgNC45MDQzNEMxNC4xNzQ1IDQuMjM0NTkgMTMuNzc4NiAzLjYzMTgyIDEzLjI4NjUgMy4xMjU0OUMxMi43OTQzIDIuNjE5MTYgMTIuMjA3IDIuMjExOTYgMTEuNTU3MyAxLjkzNDY4QzEwLjkzMSAxLjY2ODEyIDEwLjI0MjIgMS41MTk0NCA5LjUxODIzIDEuNTE5NDRDOC43OTQyNyAxLjUxOTQ0IDguMTA2NzcgMS42NjY3OCA3LjQ3OTE3IDEuOTM0NjhDNy40MjMxOCAxLjk1ODc5IDcuMzY3MTkgMS45ODQyNCA3LjMxMjUgMi4wMDk2OUM3LjA5ODk2IDEuNjY0MSA2Ljg0MTE1IDEuMzUwNjYgNi41NDU1NyAxLjA3ODc0QzYuNzA3MDMgMC45OTMwMTYgNi44NzI0IDAuOTEzOTg2IDcuMDQwMzYgMC44NDE2NTNDNy44MDcyOSAwLjUxMzQ3NyA4LjY0MzIzIDAuMzMzOTg0IDkuNTE5NTMgMC4zMzM5ODRaTTguNzc2MDQgMy44MzE0MUM4Ljc3NjA0IDMuNjY3OTkgOC44NDExNSAzLjUyMDY0IDguOTQ0MDEgMy40MTM0OEM5LjA0ODE4IDMuMzA2MzIgOS4xOTE0MSAzLjI0MDY5IDkuMzUwMjYgMy4yNDA2OUM5LjUwOTExIDMuMjQwNjkgOS42NTIzNCAzLjMwNjMyIDkuNzU2NTEgMy40MTM0OEM5Ljg2MDY4IDMuNTIwNjQgOS45MjQ0OCAzLjY2Nzk5IDkuOTI0NDggMy44MzE0MVY2Ljk0MTcxTDEyLjE4MzYgOC4zMjAwNUMxMi4zMTkgOC40MDMxIDEyLjQxMDIgOC41MzU3MSAxMi40NDY2IDguNjgxNzJDMTIuNDgzMSA4LjgyNzcyIDEyLjQ2NjEgOC45ODg0NiAxMi4zODU0IDkuMTI3NzdWOS4xMjkxMUMxMi4zMDQ3IDkuMjY4NDIgMTIuMTc1OCA5LjM2MjE4IDEyLjAzMzkgOS4zOTk2OUMxMS44OTE5IDkuNDM3MTkgMTEuNzM1NyA5LjQxOTc4IDExLjYwMDMgOS4zMzY3M0gxMS41OTlMOS4wNzE2MSA3Ljc5NDk3QzguOTg0MzggNy43NDU0MSA4LjkxMjc2IDcuNjczMDggOC44NjA2OCA3LjU4NzM1QzguODA3MjkgNy40OTc2IDguNzc2MDQgNy4zOTE3OCA4Ljc3NjA0IDcuMjc5MjdWMy44MzE0MVpcIiBmaWxsPVwiIzY2NzA4NVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiVmVjdG9yXzJcIiBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNMy41MTMwMiAwLjY4NzYyMkM1LjQ1MzEyIDAuNjg3NjIyIDcuMDI2MDQgMi4zMDU3MyA3LjAyNjA0IDQuMzAxNThDNy4wMjYwNCA2LjI5NzQzIDUuNDUzMTIgNy45MTU1NCAzLjUxMzAyIDcuOTE1NTRDMS41NzI5MiA3LjkxNTU0IDAgNi4yOTc0MyAwIDQuMzAxNThDMCAyLjMwNTczIDEuNTcyOTIgMC42ODc2MjIgMy41MTMwMiAwLjY4NzYyMlpNMy41MTMwMiA2LjM3Mzc4TDUuMzk4NDQgMy45NzYwOEg0LjIyNzg2VjIuNzAwODhIMi43OTgxOFYzLjk3NjA4SDEuNjI3NkwzLjUxMzAyIDYuMzczNzhaXCIgZmlsbD1cIiNGMDQ0MzhcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+e3tnZXRSZWNhcFZpZGVvRGF0YT8uZG93blRpbWUgPz8gJy0tJ319IE1pbnM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IG14LTIgYnRuLW91dGxpbmUgYnRuLW91dGxpbmUtZGVmYXVsdCByb3VuZGVkLTMgdGV4dC1ub3dyYXAgYm9yZGVyLXZhbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiZ2V0UmVjYXBWaWRlb0RhdGE/LmhlYWx0aCA9PT0nR09PRCdcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD1cIkZyYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlZlY3RvclwiIGQ9XCJNMTMuNDM0OSAyLjVDMTQuODIzOCAyLjUgMTUuOTg3MSAzLjAxMzg5IDE2LjkyNDkgNC4wNDE2N0MxNy44NjI3IDUuMDY5NDQgMTguMzMxMyA2LjI5MTY3IDE4LjMzMDcgNy43MDgzM0MxOC4zMzA3IDcuOTU4MzMgMTguMzE2OCA4LjIwNSAxOC4yODkxIDguNDQ4MzNDMTguMjYxMyA4LjY5MTY3IDE4LjIxMjcgOC45MzExMSAxOC4xNDMyIDkuMTY2NjdIMTIuOTM0OUwxMS41MTgyIDcuMDQxNjdDMTEuNDQ4OCA2LjkzMDU2IDExLjM1MTYgNi44NDAyOCAxMS4yMjY2IDYuNzcwODNDMTEuMTAxNiA2LjcwMTM5IDEwLjk2OTYgNi42NjY2NyAxMC44MzA3IDYuNjY2NjdDMTAuNjUwMiA2LjY2NjY3IDEwLjQ4NjggNi43MjIyMiAxMC4zNDA3IDYuODMzMzNDMTAuMTk0NiA2Ljk0NDQ0IDEwLjA5NDEgNy4wODMzMyAxMC4wMzkxIDcuMjVMOC45MTQwNiAxMC42MjVMOC4xODQ5IDkuNTQxNjdDOC4xMTU0NSA5LjQzMDU2IDguMDE4MjMgOS4zNDAyOCA3Ljg5MzIzIDkuMjcwODNDNy43NjgyMyA5LjIwMTM5IDcuNjM2MjggOS4xNjY2NyA3LjQ5NzQgOS4xNjY2N0gxLjg1MTU2QzEuNzgyMTIgOC45MzA1NiAxLjczMzUxIDguNjkwODMgMS43MDU3MyA4LjQ0NzVDMS42Nzc5NSA4LjIwNDE3IDEuNjY0MDYgNy45NjQ3MiAxLjY2NDA2IDcuNzI5MTdDMS42NjQwNiA2LjI5ODYxIDIuMTI5MzQgNS4wNjk0NCAzLjA1OTkgNC4wNDE2N0MzLjk5MDQ1IDMuMDEzODkgNS4xNTAxNyAyLjUgNi41MzkwNiAyLjVDNy4yMDU3MyAyLjUgNy44MzQzNCAyLjYzMTk0IDguNDI0OSAyLjg5NTgzQzkuMDE1NDUgMy4xNTk3MiA5LjUzOTYyIDMuNTI3NzggOS45OTc0IDRDMTAuNDQxOCAzLjUyNzc4IDEwLjk1OTMgMy4xNTk3MiAxMS41NDk5IDIuODk1ODNDMTIuMTQwNSAyLjYzMTk0IDEyLjc2ODggMi41IDEzLjQzNDkgMi41Wk05Ljk5NzQgMTcuNUM5Ljc0NzQgMTcuNSA5LjUwNzY3IDE3LjQ1NDcgOS4yNzgyMyAxNy4zNjQyQzkuMDQ4NzggMTcuMjczNiA4Ljg0NDA2IDE3LjEzODMgOC42NjQwNiAxNi45NTgzTDMuMDgwNzMgMTEuMzU0MkMyLjk5NzQgMTEuMjcwOCAyLjkyMTAxIDExLjE4NzUgMi44NTE1NiAxMS4xMDQyQzIuNzgyMTIgMTEuMDIwOCAyLjcxMjY3IDEwLjkzMDYgMi42NDMyMyAxMC44MzMzSDcuMDM5MDZMOC40NTU3MyAxMi45NTgzQzguNTI1MTcgMTMuMDY5NCA4LjYyMjQgMTMuMTU5NyA4Ljc0NzQgMTMuMjI5MkM4Ljg3MjQgMTMuMjk4NiA5LjAwNDM0IDEzLjMzMzMgOS4xNDMyMyAxMy4zMzMzQzkuMzIzNzggMTMuMzMzMyA5LjQ5MDQ1IDEzLjI3NzggOS42NDMyMyAxMy4xNjY3QzkuNzk2MDEgMTMuMDU1NiA5LjkwMDE3IDEyLjkxNjcgOS45NTU3MyAxMi43NUwxMS4wODA3IDkuMzc1TDExLjc4OTEgMTAuNDU4M0MxMS44NzI0IDEwLjU2OTQgMTEuOTc2NiAxMC42NTk3IDEyLjEwMTYgMTAuNzI5MkMxMi4yMjY2IDEwLjc5ODYgMTIuMzU4NSAxMC44MzMzIDEyLjQ5NzQgMTAuODMzM0gxNy4zMzA3TDE3LjEyMjQgMTEuMDgzM0wxNi45MTQxIDExLjMzMzNMMTEuMzA5OSAxNi45NTgzQzExLjEyOTMgMTcuMTM4OSAxMC45MjggMTcuMjc0NCAxMC43MDU3IDE3LjM2NUMxMC40ODM1IDE3LjQ1NTYgMTAuMjQ3NCAxNy41MDA2IDkuOTk3NCAxNy41WlwiIGZpbGw9XCIjMTJCNzZBXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiZ2V0UmVjYXBWaWRlb0RhdGE/LmhlYWx0aCA9PT0nQVZFUkFHRSdcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9XCJGcmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiVmVjdG9yXCIgZD1cIk0xMy40MzQ5IDIuNUMxNC44MjM4IDIuNSAxNS45ODcxIDMuMDEzODkgMTYuOTI0OSA0LjA0MTY3QzE3Ljg2MjcgNS4wNjk0NCAxOC4zMzEzIDYuMjkxNjcgMTguMzMwNyA3LjcwODMzQzE4LjMzMDcgNy45NTgzMyAxOC4zMTY4IDguMjA1IDE4LjI4OTEgOC40NDgzM0MxOC4yNjEzIDguNjkxNjcgMTguMjEyNyA4LjkzMTExIDE4LjE0MzIgOS4xNjY2N0gxMi45MzQ5TDExLjUxODIgNy4wNDE2N0MxMS40NDg4IDYuOTMwNTYgMTEuMzUxNiA2Ljg0MDI4IDExLjIyNjYgNi43NzA4M0MxMS4xMDE2IDYuNzAxMzkgMTAuOTY5NiA2LjY2NjY3IDEwLjgzMDcgNi42NjY2N0MxMC42NTAyIDYuNjY2NjcgMTAuNDg2OCA2LjcyMjIyIDEwLjM0MDcgNi44MzMzM0MxMC4xOTQ2IDYuOTQ0NDQgMTAuMDk0MSA3LjA4MzMzIDEwLjAzOTEgNy4yNUw4LjkxNDA2IDEwLjYyNUw4LjE4NDkgOS41NDE2N0M4LjExNTQ1IDkuNDMwNTYgOC4wMTgyMyA5LjM0MDI4IDcuODkzMjMgOS4yNzA4M0M3Ljc2ODIzIDkuMjAxMzkgNy42MzYyOCA5LjE2NjY3IDcuNDk3NCA5LjE2NjY3SDEuODUxNTZDMS43ODIxMiA4LjkzMDU2IDEuNzMzNTEgOC42OTA4MyAxLjcwNTczIDguNDQ3NUMxLjY3Nzk1IDguMjA0MTcgMS42NjQwNiA3Ljk2NDcyIDEuNjY0MDYgNy43MjkxN0MxLjY2NDA2IDYuMjk4NjEgMi4xMjkzNCA1LjA2OTQ0IDMuMDU5OSA0LjA0MTY3QzMuOTkwNDUgMy4wMTM4OSA1LjE1MDE3IDIuNSA2LjUzOTA2IDIuNUM3LjIwNTczIDIuNSA3LjgzNDM0IDIuNjMxOTQgOC40MjQ5IDIuODk1ODNDOS4wMTU0NSAzLjE1OTcyIDkuNTM5NjIgMy41Mjc3OCA5Ljk5NzQgNEMxMC40NDE4IDMuNTI3NzggMTAuOTU5MyAzLjE1OTcyIDExLjU0OTkgMi44OTU4M0MxMi4xNDA1IDIuNjMxOTQgMTIuNzY4OCAyLjUgMTMuNDM0OSAyLjVaTTkuOTk3NCAxNy41QzkuNzQ3NCAxNy41IDkuNTA3NjcgMTcuNDU0NyA5LjI3ODIzIDE3LjM2NDJDOS4wNDg3OCAxNy4yNzM2IDguODQ0MDYgMTcuMTM4MyA4LjY2NDA2IDE2Ljk1ODNMMy4wODA3MyAxMS4zNTQyQzIuOTk3NCAxMS4yNzA4IDIuOTIxMDEgMTEuMTg3NSAyLjg1MTU2IDExLjEwNDJDMi43ODIxMiAxMS4wMjA4IDIuNzEyNjcgMTAuOTMwNiAyLjY0MzIzIDEwLjgzMzNINy4wMzkwNkw4LjQ1NTczIDEyLjk1ODNDOC41MjUxNyAxMy4wNjk0IDguNjIyNCAxMy4xNTk3IDguNzQ3NCAxMy4yMjkyQzguODcyNCAxMy4yOTg2IDkuMDA0MzQgMTMuMzMzMyA5LjE0MzIzIDEzLjMzMzNDOS4zMjM3OCAxMy4zMzMzIDkuNDkwNDUgMTMuMjc3OCA5LjY0MzIzIDEzLjE2NjdDOS43OTYwMSAxMy4wNTU2IDkuOTAwMTcgMTIuOTE2NyA5Ljk1NTczIDEyLjc1TDExLjA4MDcgOS4zNzVMMTEuNzg5MSAxMC40NTgzQzExLjg3MjQgMTAuNTY5NCAxMS45NzY2IDEwLjY1OTcgMTIuMTAxNiAxMC43MjkyQzEyLjIyNjYgMTAuNzk4NiAxMi4zNTg1IDEwLjgzMzMgMTIuNDk3NCAxMC44MzMzSDE3LjMzMDdMMTcuMTIyNCAxMS4wODMzTDE2LjkxNDEgMTEuMzMzM0wxMS4zMDk5IDE2Ljk1ODNDMTEuMTI5MyAxNy4xMzg5IDEwLjkyOCAxNy4yNzQ0IDEwLjcwNTcgMTcuMzY1QzEwLjQ4MzUgMTcuNDU1NiAxMC4yNDc0IDE3LjUwMDYgOS45OTc0IDE3LjVaXCIgZmlsbD1cIiNGQUNDMTVcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJnZXRSZWNhcFZpZGVvRGF0YT8uaGVhbHRoID09PSdCQUQnXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD1cIkZyYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiVmVjdG9yXCIgZD1cIk0xMy40MzQ5IDIuNUMxNC44MjM4IDIuNSAxNS45ODcxIDMuMDEzODkgMTYuOTI0OSA0LjA0MTY3QzE3Ljg2MjcgNS4wNjk0NCAxOC4zMzEzIDYuMjkxNjcgMTguMzMwNyA3LjcwODMzQzE4LjMzMDcgNy45NTgzMyAxOC4zMTY4IDguMjA1IDE4LjI4OTEgOC40NDgzM0MxOC4yNjEzIDguNjkxNjcgMTguMjEyNyA4LjkzMTExIDE4LjE0MzIgOS4xNjY2N0gxMi45MzQ5TDExLjUxODIgNy4wNDE2N0MxMS40NDg4IDYuOTMwNTYgMTEuMzUxNiA2Ljg0MDI4IDExLjIyNjYgNi43NzA4M0MxMS4xMDE2IDYuNzAxMzkgMTAuOTY5NiA2LjY2NjY3IDEwLjgzMDcgNi42NjY2N0MxMC42NTAyIDYuNjY2NjcgMTAuNDg2OCA2LjcyMjIyIDEwLjM0MDcgNi44MzMzM0MxMC4xOTQ2IDYuOTQ0NDQgMTAuMDk0MSA3LjA4MzMzIDEwLjAzOTEgNy4yNUw4LjkxNDA2IDEwLjYyNUw4LjE4NDkgOS41NDE2N0M4LjExNTQ1IDkuNDMwNTYgOC4wMTgyMyA5LjM0MDI4IDcuODkzMjMgOS4yNzA4M0M3Ljc2ODIzIDkuMjAxMzkgNy42MzYyOCA5LjE2NjY3IDcuNDk3NCA5LjE2NjY3SDEuODUxNTZDMS43ODIxMiA4LjkzMDU2IDEuNzMzNTEgOC42OTA4MyAxLjcwNTczIDguNDQ3NUMxLjY3Nzk1IDguMjA0MTcgMS42NjQwNiA3Ljk2NDcyIDEuNjY0MDYgNy43MjkxN0MxLjY2NDA2IDYuMjk4NjEgMi4xMjkzNCA1LjA2OTQ0IDMuMDU5OSA0LjA0MTY3QzMuOTkwNDUgMy4wMTM4OSA1LjE1MDE3IDIuNSA2LjUzOTA2IDIuNUM3LjIwNTczIDIuNSA3LjgzNDM0IDIuNjMxOTQgOC40MjQ5IDIuODk1ODNDOS4wMTU0NSAzLjE1OTcyIDkuNTM5NjIgMy41Mjc3OCA5Ljk5NzQgNEMxMC40NDE4IDMuNTI3NzggMTAuOTU5MyAzLjE1OTcyIDExLjU0OTkgMi44OTU4M0MxMi4xNDA1IDIuNjMxOTQgMTIuNzY4OCAyLjUgMTMuNDM0OSAyLjVaTTkuOTk3NCAxNy41QzkuNzQ3NCAxNy41IDkuNTA3NjcgMTcuNDU0NyA5LjI3ODIzIDE3LjM2NDJDOS4wNDg3OCAxNy4yNzM2IDguODQ0MDYgMTcuMTM4MyA4LjY2NDA2IDE2Ljk1ODNMMy4wODA3MyAxMS4zNTQyQzIuOTk3NCAxMS4yNzA4IDIuOTIxMDEgMTEuMTg3NSAyLjg1MTU2IDExLjEwNDJDMi43ODIxMiAxMS4wMjA4IDIuNzEyNjcgMTAuOTMwNiAyLjY0MzIzIDEwLjgzMzNINy4wMzkwNkw4LjQ1NTczIDEyLjk1ODNDOC41MjUxNyAxMy4wNjk0IDguNjIyNCAxMy4xNTk3IDguNzQ3NCAxMy4yMjkyQzguODcyNCAxMy4yOTg2IDkuMDA0MzQgMTMuMzMzMyA5LjE0MzIzIDEzLjMzMzNDOS4zMjM3OCAxMy4zMzMzIDkuNDkwNDUgMTMuMjc3OCA5LjY0MzIzIDEzLjE2NjdDOS43OTYwMSAxMy4wNTU2IDkuOTAwMTcgMTIuOTE2NyA5Ljk1NTczIDEyLjc1TDExLjA4MDcgOS4zNzVMMTEuNzg5MSAxMC40NTgzQzExLjg3MjQgMTAuNTY5NCAxMS45NzY2IDEwLjY1OTcgMTIuMTAxNiAxMC43MjkyQzEyLjIyNjYgMTAuNzk4NiAxMi4zNTg1IDEwLjgzMzMgMTIuNDk3NCAxMC44MzMzSDE3LjMzMDdMMTcuMTIyNCAxMS4wODMzTDE2LjkxNDEgMTEuMzMzM0wxMS4zMDk5IDE2Ljk1ODNDMTEuMTI5MyAxNy4xMzg5IDEwLjkyOCAxNy4yNzQ0IDEwLjcwNTcgMTcuMzY1QzEwLjQ4MzUgMTcuNDU1NiAxMC4yNDc0IDE3LjUwMDYgOS45OTc0IDE3LjVaXCIgZmlsbD1cIiNGMDQ0MzhcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPnt7Z2V0UmVjYXBWaWRlb0RhdGE/LmhlYWx0aCA/PyAnLS0nfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNhbWVyYVZpZXcoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIG14LTIgYnRuLWxpZ2h0LXByaW1hcnkxIHJvdW5kZWQtMyB0ZXh0LW5vd3JhcCBib3JkZXItdmFsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPkxpdmUgVmlldzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicmVjYXBsYW9kaW5nXCIgY2xhc3M9XCJyb3cgbG9hZGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBoLTIyNXB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXIgcHQtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJyZWNhcG5vRGF0YVwiICBjbGFzcz1cInJvdyBweC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1tYXAtcmVjYXBcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGExLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS10aXRsZVwiPk5vIGRhdGEgZm91bmQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGEtc3ViXCI+VGhlcmUgaXMgbm8gcmVzdWx0IGZvciB0aGlzIFJlY2FwIHZpZGVvPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXJlY2FwbGFvZGluZyAmJiAhcmVjYXBub0RhdGFcIiBjbGFzcz1cImNhcmQtYm9keSBwLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG14LTNcIj5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2Fyb3VzZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJvdXNlbC1pbm5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYXJvdXNlbC1pdGVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZ3JvdXAgb2YgcmVjYXBzR3JvdXBlZDsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJpID09PSBjdXJyZW50SW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcGFpciBvZiBncm91cFwiIFtuZ0NsYXNzXT1cImNvbFZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJwYWlyLnRodW1iSW1hZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ2aWRlb0NsaWNrKHBhaXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImltYWdlLXRodW1iIG1iLTggZC1ibG9jayB3LTEwMCBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiSW1hZ2Uge3sgaSArIDEgfX1cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIENvbmRpdGlvbmFsbHkgZGlzcGxheSBQcmV2aW91cyBidXR0b24gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2Fyb3VzZWwtY29udHJvbC1wcmV2XCIgKm5nSWY9XCJjdXJyZW50SW5kZXggPiAwXCIgKGNsaWNrKT1cInByZXZTbGlkZSgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2Fyb3VzZWwtY29udHJvbC1wcmV2LWljb25cIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQ29uZGl0aW9uYWxseSBkaXNwbGF5IE5leHQgYnV0dG9uIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNhcm91c2VsLWNvbnRyb2wtbmV4dFwiICpuZ0lmPVwiY3VycmVudEluZGV4IDwgcmVjYXBzR3JvdXBlZC5sZW5ndGggLSAxXCIgKGNsaWNrKT1cIm5leHRTbGlkZSgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2Fyb3VzZWwtY29udHJvbC1uZXh0LWljb25cIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gTmF2aWdhdGlvbiBEb3RzIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInJlY2Fwc0dyb3VwZWQubGVuZ3RoID4gMVwiIGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImNhcm91c2VsLWluZGljYXRvcnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGdyb3VwIG9mIHJlY2Fwc0dyb3VwZWQ7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImkgPT09IGN1cnJlbnRJbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJnb1RvU2xpZGUoaSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDx2aWRlbyBjb250cm9scyBhdXRvcGxheSBjbGFzcz1cInJlY2FwLWltZyBwLTNcIiBbc3JjXT1cImdldFJlY2FwRGF0YT8udmlkZW9VUkxcIj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxzb3VyY2UgIHR5cGU9XCJ2aWRlby9tcDRcIj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxzb3VyY2UgW3NyY109XCJnZXRSZWNhcERhdGE/LnZpZGVvVVJMXCIgdHlwZT1cInZpZGVvL29nZ1wiPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDwvdmlkZW8+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgI21hcENvbnRhaW5lciBzdHlsZT1cImhlaWdodDoyMzBweDtcIj48L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNvbC1tZC02IG1iLTNcIj48aW1nIHNyYz1cImFzc2V0cy90YW5nby9JbWFnZXMvcmVjYXAuc3ZnXCIgYWx0PVwiXCIgY2xhc3M9XCJyZWNhcC1pbWdcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IG1iLTNcIj48aW1nIHNyYz1cImFzc2V0cy90YW5nby9JbWFnZXMvcmVjYXAuc3ZnXCIgYWx0PVwiXCIgY2xhc3M9XCJyZWNhcC1pbWdcIj48L2Rpdj4gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgIFxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIG10LTNcIj5cclxuICAgICAgICA8bGliLXRyYWZmaWMtY2hhcnRzIGNsYXNzPVwibXktMlwiPjwvbGliLXRyYWZmaWMtY2hhcnRzPlxyXG4gICAgXHJcbiAgICAgICAgPGxpYi10cmFmZmljLWNhcmQtY2hhcnRzICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnVzZXJUeXBlID09PSAndGFuZ28nXCIgY2xhc3M9XCJteS0yXCI+PC9saWItdHJhZmZpYy1jYXJkLWNoYXJ0cz5cclxuICAgICAgICA8bGliLWltYWdlLWRvYyAqbmdJZj1cInN0b3JlSWRhcnJheT8ubGVuZ3RoID09PSAxXCIgY2xhc3M9XCJteS0yXCI+PC9saWItaW1hZ2UtZG9jPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwic3RvcmVJZGFycmF5Py5sZW5ndGggPiAxXCIgY2xhc3M9XCJjb2wtbWQtNiBtdC0zXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgaC0xMDBcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIHB0LTNcIj5cclxuICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlLXRleHQgbWItMlwiPlBlcmZvcm1hbmNlIE1hdHJpeFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIHBsYWNlbWVudD1cInJpZ2h0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJTdG9yZSBwZXJmb3JtYW5jZSBiYXNlZCBvbiBtZXRyaWNzIHNlbGVjdGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzE0MzJfODAwMzUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDY1IDEwLjY2NjZWNy45OTk5Mk04LjAwMDY1IDUuMzMzMjVIOC4wMDczMk0xNC42NjczIDcuOTk5OTJDMTQuNjY3MyAxMS42ODE4IDExLjY4MjYgMTQuNjY2NiA4LjAwMDY1IDE0LjY2NjZDNC4zMTg3NSAxNC42NjY2IDEuMzMzOTggMTEuNjgxOCAxLjMzMzk4IDcuOTk5OTJDMS4zMzM5OCA0LjMxODAyIDQuMzE4NzUgMS4zMzMyNSA4LjAwMDY1IDEuMzMzMjVDMTEuNjgyNiAxLjMzMzI1IDE0LjY2NzMgNC4zMTgwMiAxNC42NjczIDcuOTk5OTJaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTQzMl84MDAzNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc3ViIG1iLTJcIj57e2hlYWRlckRhdGE/LmRhdGU/LnN0YXJ0RGF0ZSB8IGRhdGU6J2RkIE1NTSwgeXl5eSd9fSDigJMge3toZWFkZXJEYXRhPy5kYXRlPy5lbmREYXRlIHwgZGF0ZTonZGQgTU1NLCB5eXl5J319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBteC0zIGFsaWduLWl0ZW1zLWNlbnRlciB3LTc1XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtcy0zXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdC1zbSBmb3JtLXNlbGVjdCBtZS0yIGRyb3BzZWxlY3RcIiBbKG5nTW9kZWwpXT1cImZvb3RmYWxsVmFsdWVcIiAoY2hhbmdlKT1cIm9uVmFsdWVDaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG9iaiBvZiBnZXRGaWx0ZXJlZEZvb3RmYWxsRGF0YXNldHMoKVwiIFtpZF09XCJvYmoubGFiZWxcIiBbdmFsdWVdPVwib2JqLnZhbHVlXCI+e3tvYmoubGFiZWx9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJteC0yXCI+VnM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdC1zbSBmb3JtLXNlbGVjdCBtcy0yIGRyb3BzZWxlY3RcIiBbKG5nTW9kZWwpXT1cImJvdW5jZVZhbHVlXCIgKGNoYW5nZSk9XCJvbkJvdW5jZUNoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgb2JqIG9mIGdldEZpbHRlcmVkQm91bmNlRGF0YXNldHMoKVwiIFtpZF09XCJvYmoubGFiZWxcIiBbdmFsdWVdPVwib2JqLnZhbHVlXCI+e3tvYmoubGFiZWx9fTwvb3B0aW9uPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicGVyZm9ybWFuY2VMb2FkaW5nXCIgY2xhc3M9XCJyb3cgbG9hZGVyICBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInBlcmZvcm1hbmNlbm9EYXRhXCIgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgbXQtMjAgbWItNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgbXQtMjAgY2FyZC1ib2R5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLW5vZGF0YS10YWJsZVwiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YTEuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGEtdGl0bGVcIj5ObyBkYXRhIGZvdW5kPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGEtc3ViXCI+VGhlcmUgaXMgbm8gcmVzdWx0IGZvciB0aGlzIHt7Zm9vdGZhbGxMYWJlbCB8IHRpdGxlY2FzZX19IHZzIHt7Ym91bmNlTGFiZWwgfCB0aXRsZWNhc2V9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXBlcmZvcm1hbmNlTG9hZGluZyAmJiAhcGVyZm9ybWFuY2Vub0RhdGFcIiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInF1YWRyYW50LWNoYXJ0IHotMVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4aXMtbGFiZWxzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBYIEF4aXMgTGFiZWwgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIngtYXhpcy1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tib3VuY2VMYWJlbCB8IHRpdGxlY2FzZX19IC0+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gWSBBeGlzIExhYmVsIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ5LWF4aXMtbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7Zm9vdGZhbGxMYWJlbCB8IHRpdGxlY2FzZX19IC0+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwhLS0gVG9wIExlZnQgUXVhZHJhbnQgLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicXVhZHJhbnRcIiBpZD1cInExXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPkhpZ2ggPHNwYW4gKm5nSWY9XCJmb290ZmFsbExhYmVsPT09J0JvdW5jZWQgRm9vdGZhbGwnXCI+Qm91bmNlPC9zcGFuPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImZvb3RmYWxsTGFiZWwgIT09J0JvdW5jZWQgRm9vdGZhbGwnXCI+e3tmb290ZmFsbExhYmVsIHwgdGl0bGVjYXNlfX08L3NwYW4+LCBMb3cgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYm91bmNlTGFiZWw9PT0nQm91bmNlZCBGb290ZmFsbCdcIj5Cb3VuY2U8L3NwYW4+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYm91bmNlTGFiZWwgIT09J0JvdW5jZWQgRm9vdGZhbGwnXCI+e3tib3VuY2VMYWJlbCB8IHRpdGxlY2FzZX19PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8IS0tIFRvcCBSaWdodCBRdWFkcmFudCAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJxdWFkcmFudFwiIGlkPVwicTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+SGlnaCA8c3BhbiAqbmdJZj1cImZvb3RmYWxsTGFiZWw9PT0nQm91bmNlZCBGb290ZmFsbCdcIj5Cb3VuY2U8L3NwYW4+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZm9vdGZhbGxMYWJlbCAhPT0nQm91bmNlZCBGb290ZmFsbCdcIj57e2Zvb3RmYWxsTGFiZWwgfCB0aXRsZWNhc2V9fTwvc3Bhbj4sIEhpZ2ggPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYm91bmNlTGFiZWw9PT0nQm91bmNlZCBGb290ZmFsbCdcIj5Cb3VuY2U8L3NwYW4+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYm91bmNlTGFiZWwgIT09J0JvdW5jZWQgRm9vdGZhbGwnXCI+e3tib3VuY2VMYWJlbCB8IHRpdGxlY2FzZX19PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8IS0tIEJvdHRvbSBMZWZ0IFF1YWRyYW50IC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInF1YWRyYW50XCIgaWQ9XCJxM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj5Mb3cgPHNwYW4gKm5nSWY9XCJmb290ZmFsbExhYmVsPT09J0JvdW5jZWQgRm9vdGZhbGwnXCI+Qm91bmNlPC9zcGFuPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImZvb3RmYWxsTGFiZWwgIT09J0JvdW5jZWQgRm9vdGZhbGwnXCI+e3tmb290ZmFsbExhYmVsIHwgdGl0bGVjYXNlfX08L3NwYW4+LCBMb3cgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYm91bmNlTGFiZWw9PT0nQm91bmNlZCBGb290ZmFsbCdcIj5Cb3VuY2U8L3NwYW4+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYm91bmNlTGFiZWwgIT09J0JvdW5jZWQgRm9vdGZhbGwnXCI+e3tib3VuY2VMYWJlbCB8IHRpdGxlY2FzZX19PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8IS0tIEJvdHRvbSBSaWdodCBRdWFkcmFudCAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJxdWFkcmFudFwiIGlkPVwicTRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+TG93IDxzcGFuICpuZ0lmPVwiZm9vdGZhbGxMYWJlbD09PSdCb3VuY2VkIEZvb3RmYWxsJ1wiPkJvdW5jZTwvc3Bhbj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmb290ZmFsbExhYmVsICE9PSdCb3VuY2VkIEZvb3RmYWxsJ1wiPnt7Zm9vdGZhbGxMYWJlbCB8IHRpdGxlY2FzZX19PC9zcGFuPiwgSGlnaCA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJib3VuY2VMYWJlbD09PSdCb3VuY2VkIEZvb3RmYWxsJ1wiPkJvdW5jZTwvc3Bhbj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJib3VuY2VMYWJlbCAhPT0nQm91bmNlZCBGb290ZmFsbCdcIj57e2JvdW5jZUxhYmVsfCB0aXRsZWNhc2V9fTwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHBvaW50IG9mIHBvaW50c1wiIGNsYXNzPVwicG9pbnRcIiBbbmdTdHlsZV09XCJ7J3RvcCc6IHBvaW50LnRvcCArICclJywgJ2xlZnQnOiBwb2ludC5sZWZ0ICsgJyUnfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiIChjbGljayk9XCJ0b2dnbGVUb29sdGlwKHBvaW50Lm5hbWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRvdFwiID48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIENsaWNrYWJsZSBsYWJlbCB0aGF0IHRvZ2dsZXMgdGhlIHRvb2x0aXAgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsIHotMSBtdC00XCIgIHN0eWxlPVwiZm9udC1zaXplOiAxMHB4ICFpbXBvcnRhbnQ7XCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgcG9pbnQubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBDdXN0b20gVG9vbHRpcCBQb3B1cCAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9vbHRpcC1wb3B1cCB6LTVcIiAqbmdJZj1cImFjdGl2ZVRvb2x0aXAgPT09IHBvaW50Lm5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b29sdGlwLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwidGV4dC13aGl0ZSBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzdG9yZVZpZXcocG9pbnQuc3RvcmVJZClcIj57eyBwb2ludC5uYW1lIH19PC9oMz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHA+QXZnIHt7Zm9vdGZhbGxMYWJlbCB8IHRpdGxlY2FzZX19OiB7eyBwb2ludC5hdmdGb290ZmFsbCB9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJteS0yXCI+T3BlbiBUaW1lOiA8c3Ryb25nPnt7IHBvaW50Lm9wZW5UaW1lIH19PC9zdHJvbmc+PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cD5DbG9zZSBUaW1lOiA8c3Ryb25nPnt7IHBvaW50LmNsb3NlVGltZSB9fTwvc3Ryb25nPjwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRvb2x0aXAtYXJyb3dcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8IS0tIEFkZCBtb3JlIHBvaW50cyBoZXJlIC0tPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwic3RvcmVJZGFycmF5Py5sZW5ndGggPiAxXCIgY2xhc3M9XCJjb2wtbWQtNiBtdC0zXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHB4LTUgYm9yZGVyLTAgcHQtM1wiPlxyXG4gICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0bGUtdGV4dCBtYi0yXCI+Wm9uZSBEd2VsbCBUaW1lIFNwbGl0IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJPdmVyYWxsIHpvbmUgY29uY2VudHJhdGlvbiBhbmQgYXZlcmFnZSBkd2VsbCB0aW1lIGFjcm9zcyBzZWxlY3RlZCBzdG9yZXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMTQzMl84MDAzNSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwNjUgMTAuNjY2NlY3Ljk5OTkyTTguMDAwNjUgNS4zMzMyNUg4LjAwNzMyTTE0LjY2NzMgNy45OTk5MkMxNC42NjczIDExLjY4MTggMTEuNjgyNiAxNC42NjY2IDguMDAwNjUgMTQuNjY2NkM0LjMxODc1IDE0LjY2NjYgMS4zMzM5OCAxMS42ODE4IDEuMzMzOTggNy45OTk5MkMxLjMzMzk4IDQuMzE4MDIgNC4zMTg3NSAxLjMzMzI1IDguMDAwNjUgMS4zMzMyNUMxMS42ODI2IDEuMzMzMjUgMTQuNjY3MyA0LjMxODAyIDE0LjY2NzMgNy45OTk5MlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8xNDMyXzgwMDM1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1zdWIgbWItMlwiPnt7aGVhZGVyRGF0YT8uZGF0ZT8uc3RhcnREYXRlIHwgZGF0ZTonZGQgTU1NLCB5eXl5J319IOKAkyB7e2hlYWRlckRhdGE/LmRhdGU/LmVuZERhdGUgfCBkYXRlOidkZCBNTU0sIHl5eXknfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiZ29Ub1pvbmUoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpZ2h0LXByaW1hcnkxIHJvdW5kZWQtMyB0ZXh0LW5vd3JhcCBib3JkZXItdmFsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+R28gdG8gWm9uZXM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNhbHNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2UtY29udGFpbmVyIHBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGltZyAgc3JjPVwiYXNzZXRzL3RhbmdvL0ltYWdlcy96b25lLWltZy5zdmdcIiBhbHQ9XCJTdG9yZSBMYXlvdXRcIiBjbGFzcz1cInB4LTUgaW1nLXNyYyBteS0zIGJhY2tncm91bmQtaW1hZ2VcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGltZyAqbmdJZj1cInpvbmVEd2VsbFRpbWVTcGxpdERhdGFbMF0/LnpvbmVOYW1lID09PSdPdmVyYWxsIFN0b3JlJ1wiIHNyYz1cImFzc2V0cy90YW5nby9JbWFnZXMvem9uZS1pbWcxLnN2Z1wiIGFsdD1cIlN0b3JlIExheW91dFwiIGNsYXNzPVwicHgtNSBpbWctc3JjIG15LTMgYmFja2dyb3VuZC1pbWFnZVwiIC8+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNlbnRlcmVkXCI+Q2VudGVyZWQ8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwib3ZlcmxheS1jb250ZW50XCIgKm5nRm9yPVwibGV0IHBvaW50IG9mIHpvbmVEd2VsbFRpbWVTcGxpdERhdGFcIj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiem9uZUR3ZWxsVGltZVNwbGl0RGF0YVswXT8uem9uZU5hbWUgIT09J092ZXJhbGwgU3RvcmUnXCIgY2xhc3M9XCJ0b3Atem9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciB0ZXh0LXpvbmVcIj57e3pvbmVEd2VsbFRpbWVTcGxpdERhdGFbMF0/LnpvbmVOYW1lID8gem9uZUR3ZWxsVGltZVNwbGl0RGF0YVswXT8uem9uZU5hbWUgOidGcm9udCd9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC16b25lLXZhbFwiPiBDb25jOiB7eyB6b25lRHdlbGxUaW1lU3BsaXREYXRhWzBdPy5jb25jZW50cmF0aW9uUmF0ZSA/IHpvbmVEd2VsbFRpbWVTcGxpdERhdGFbMF0/LmNvbmNlbnRyYXRpb25SYXRlOictLScgfX0lIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtem9uZS12YWxcIj5Ed2VsbCB0aW1lOiB7eyB6b25lRHdlbGxUaW1lU3BsaXREYXRhWzBdPy5kd2VsbFRpbWUgPyB6b25lRHdlbGxUaW1lU3BsaXREYXRhWzBdPy5kd2VsbFRpbWUgOictLScgfX0gTWluczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInpvbmVEd2VsbFRpbWVTcGxpdERhdGFbMF0/LnpvbmVOYW1lID09PSdPdmVyYWxsIFN0b3JlJ1wiIGNsYXNzPVwiY2VudGVyZWQtem9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgdGV4dC16b25lXCI+e3t6b25lRHdlbGxUaW1lU3BsaXREYXRhWzBdPy56b25lTmFtZSA/IHpvbmVEd2VsbFRpbWVTcGxpdERhdGFbMF0/LnpvbmVOYW1lIDonRnJvbnQnfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXpvbmUtdmFsXCI+IENvbmM6IHt7IHpvbmVEd2VsbFRpbWVTcGxpdERhdGFbMF0/LmNvbmNlbnRyYXRpb25SYXRlID8gem9uZUR3ZWxsVGltZVNwbGl0RGF0YVswXT8uY29uY2VudHJhdGlvblJhdGU6Jy0tJyB9fSUgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtem9uZS12YWxcIj5Ed2VsbCB0aW1lOiB7eyB6b25lRHdlbGxUaW1lU3BsaXREYXRhWzBdPy5kd2VsbFRpbWUgPyB6b25lRHdlbGxUaW1lU3BsaXREYXRhWzBdPy5kd2VsbFRpbWU6Jy0tJyB9fSBNaW5zPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ6b25lRHdlbGxUaW1lU3BsaXREYXRhWzBdPy56b25lTmFtZSAhPT0nT3ZlcmFsbCBTdG9yZSdcIiBjbGFzcz1cImJvdHRvbS16b25lIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgdGV4dC16b25lXCI+e3t6b25lRHdlbGxUaW1lU3BsaXREYXRhWzFdPy56b25lTmFtZSA/IHpvbmVEd2VsbFRpbWVTcGxpdERhdGFbMl0/LnpvbmVOYW1lICA6ICdCYWNrJ319PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC16b25lLXZhbFwiPiBDb25jOiB7eyB6b25lRHdlbGxUaW1lU3BsaXREYXRhWzFdPy5jb25jZW50cmF0aW9uUmF0ZSA/IHpvbmVEd2VsbFRpbWVTcGxpdERhdGFbMl0/LmNvbmNlbnRyYXRpb25SYXRlOictLScgfX0lIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXpvbmUtdmFsXCI+RHdlbGwgdGltZToge3sgem9uZUR3ZWxsVGltZVNwbGl0RGF0YVsxXT8uZHdlbGxUaW1lID8gem9uZUR3ZWxsVGltZVNwbGl0RGF0YVsyXT8uZHdlbGxUaW1lOictLSd9fSBNaW5zPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPCEtLSA8aW1nIGNsYXNzPVwicHgtNSBpbWctc3JjIG1iLTNcIiBzcmM9XCJhc3NldHMvdGFuZ28vSW1hZ2VzL3pvbmUtaW1nLnN2Z1wiIGFsdD1cIlwiPiAtLT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHB4LTUgYm9yZGVyLTAgcHQtM1wiPlxyXG4gICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZS10ZXh0IG1iLTJcIj5TdG9yZSBPcGVyYXRpb25zXHJcbiAgICAgICAgICAgICAgICA8c3BhbiA+IFxyXG4gICAgICAgICAgICAgICAgPHN2ZyBuZ2JUb29sdGlwPVwiQXZnIHN0b3JlIG9wZW4gJiBjbG9zZSB0aW1lIGFjcm9zcyB0aGUgc2VsZWN0ZWQgc3RvcmVzXCIgcGxhY2VtZW50PVwidG9wXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMTQzMl84MDAzNSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDA2NSAxMC42NjY2VjcuOTk5OTJNOC4wMDA2NSA1LjMzMzI1SDguMDA3MzJNMTQuNjY3MyA3Ljk5OTkyQzE0LjY2NzMgMTEuNjgxOCAxMS42ODI2IDE0LjY2NjYgOC4wMDA2NSAxNC42NjY2QzQuMzE4NzUgMTQuNjY2NiAxLjMzMzk4IDExLjY4MTggMS4zMzM5OCA3Ljk5OTkyQzEuMzMzOTggNC4zMTgwMiA0LjMxODc1IDEuMzMzMjUgOC4wMDA2NSAxLjMzMzI1QzExLjY4MjYgMS4zMzMyNSAxNC42NjczIDQuMzE4MDIgMTQuNjY3MyA3Ljk5OTkyWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8xNDMyXzgwMDM1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1zdWIgbWItMlwiPnt7aGVhZGVyRGF0YT8uZGF0ZT8uc3RhcnREYXRlIHwgZGF0ZTonZGQgTU1NLCB5eXl5J319IOKAkyB7e2hlYWRlckRhdGE/LmRhdGU/LmVuZERhdGUgfCBkYXRlOidkZCBNTU0sIHl5eXknfX08L3NwYW4+XHJcbiAgICAgICAgPC9oMz5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgICAgIDwhLS0gPGJ1dHRvbiAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saWdodC1wcmltYXJ5MSByb3VuZGVkLTMgdGV4dC1ub3dyYXAgYm9yZGVyLXZhbFwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj5HbyB0byBUcmF4PC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPiAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zIHRleHQtY2VudGVyIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+PCEtLXt7Z2V0Q2FyZERhdGE/LnJldmVudWU/LnZhbHVlID8/ICctLSd9fSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTJcIj4gPHNwYW4gY2xhc3M9XCJsZWZ0LWNhcmQtY291bnQtdGl0bGVcIj57e3N0b3JlT3BlcmF0aW9uRGF0YT8ub3ZlcmFsbD8uYXZnT3BlblRpbWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/c3RvcmVPcGVyYXRpb25EYXRhPy5vdmVyYWxsPy5hdmdPcGVuVGltZTonLS0nIH19PC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+PHNwYW4gY2xhc3M9XCJzdWItaGVhZGVyXCI+QXZnLiBPcGVuIFRpbWU8L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IG10LTUgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjMyNlwiIGhlaWdodD1cIjJcIiB2aWV3Qm94PVwiMCAwIDMyNiAyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpbmUgeTE9XCIwLjc1XCIgeDI9XCIzNTZcIiB5Mj1cIjAuNzVcIiBzdHJva2U9XCIjRDBENUREXCIgLz5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zIHRleHQtY2VudGVyIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+PCEtLXt7Z2V0Q2FyZERhdGE/LnJldmVudWU/LnZhbHVlID8/ICctLSd9fSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTJcIj4gPHNwYW4gY2xhc3M9XCJsZWZ0LWNhcmQtY291bnQtdGl0bGVcIj57e3N0b3JlT3BlcmF0aW9uRGF0YT8ub3ZlcmFsbD8uYXZnQ2xvc2VUaW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP3N0b3JlT3BlcmF0aW9uRGF0YT8ub3ZlcmFsbD8uYXZnQ2xvc2VUaW1lOictLScgfX08L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj48c3BhbiBjbGFzcz1cInN1Yi1oZWFkZXJcIj5BdmcuIENsb3NlIFRpbWU8L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IG10LTNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtYm9yZGVyIGgtMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGVsbGlwc2UxIGJvcmRlci0wIHB4LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtbiBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGVmdC1jYXJkLWNvdW50LWhlYWRlcjEgdGV4dC1kZWNvcmF0aW9uLXVuZGVybGluZSBjdXJzb3ItcG9pbnRlclwiICAoY2xpY2spPVwic3RvcmVWaWV3KHN0b3JlT3BlcmF0aW9uRGF0YT8udG9wTGF0ZU9wZW4/LnN0b3JlSWQpXCI+e3tzdG9yZU9wZXJhdGlvbkRhdGE/LnRvcExhdGVPcGVuPy5zdG9yZU5hbWUgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlT3BlcmF0aW9uRGF0YT8udG9wTGF0ZU9wZW4/LnN0b3JlTmFtZSA6Jy0tJ319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdWItaGVhZGVyIG10LTJcIj5Ub3AgTGF0ZSBPcGVuPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcC0wIGgtNzVweCBtdC0zIG14LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPjwhLS17e2dldENhcmREYXRhPy5yZXZlbnVlPy52YWx1ZSA/PyAnLS0nfX0gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTFcIj4gPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibGVmdC1jYXJkLWNvdW50LWhlYWRlcjFcIj57e3N0b3JlT3BlcmF0aW9uRGF0YT8udG9wTGF0ZU9wZW4/LmF2Z1N0b3JlT3BlblRpbWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID9zdG9yZU9wZXJhdGlvbkRhdGE/LnRvcExhdGVPcGVuPy5hdmdTdG9yZU9wZW5UaW1lOictLScgfX08L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdWItaGVhZGVyXCI+QXZnLiBTdG9yZSBPcGVuaW5nIFRpbWU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgbXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1ib3JkZXIgaC0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgZWxsaXBzZTEgYm9yZGVyLTAgcHgtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsZWZ0LWNhcmQtY291bnQtaGVhZGVyMSB0ZXh0LWRlY29yYXRpb24tdW5kZXJsaW5lIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInN0b3JlVmlldyhzdG9yZU9wZXJhdGlvbkRhdGE/LnRvcEVhcmx5Q2xvc2U/LnN0b3JlSWQpXCI+e3tzdG9yZU9wZXJhdGlvbkRhdGE/LnRvcEVhcmx5Q2xvc2U/LnN0b3JlTmFtZSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVPcGVyYXRpb25EYXRhPy50b3BFYXJseUNsb3NlPy5zdG9yZU5hbWUgOictLSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ViLWhlYWRlciBtdC0yXCI+VG9wIEVhcmx5IENsb3NlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcC0wIGgtNzVweCBtdC0zIG14LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPjwhLS17e2dldENhcmREYXRhPy5yZXZlbnVlPy52YWx1ZSA/PyAnLS0nfX0gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTFcIj4gPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibGVmdC1jYXJkLWNvdW50LWhlYWRlcjFcIj57e3N0b3JlT3BlcmF0aW9uRGF0YT8udG9wRWFybHlDbG9zZT8uYXZnU3RvcmVDbG9zZVRpbWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID9zdG9yZU9wZXJhdGlvbkRhdGE/LnRvcEVhcmx5Q2xvc2U/LmF2Z1N0b3JlQ2xvc2VUaW1lOictLScgfX08L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdWItaGVhZGVyXCI+QXZnLiBTdG9yZSBDbG9zaW5nIFRpbWU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIG10LTNcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBtYi01XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwdC0zXCI+XHJcbiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZS10ZXh0IG1iLTJcIj5TdW1tYXJ5IFRhYmxlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1zdWIgbWItMlwiPnt7aGVhZGVyRGF0YT8uZGF0ZT8uc3RhcnREYXRlIHwgZGF0ZTonZGQgTU1NLCB5eXl5J319IOKAkyB7e2hlYWRlckRhdGE/LmRhdGU/LmVuZERhdGUgfCBkYXRlOidkZCBNTU0sIHl5eXknfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcG9zaXRpb24tcmVsYXRpdmUgbXktMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xIHBvc2l0aW9uLWFic29sdXRlIG1zLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgb3BhY2l0eT1cIjAuNVwiIHg9XCIxNy4wMzY1XCIgeT1cIjE1LjEyMjNcIiB3aWR0aD1cIjguMTU1NDZcIiBoZWlnaHQ9XCIyXCIgcng9XCIxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInJvdGF0ZSg0NSAxNy4wMzY1IDE1LjEyMjMpXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiPjwvcmVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTEgMTlDNi41NTU1NiAxOSAzIDE1LjQ0NDQgMyAxMUMzIDYuNTU1NTYgNi41NTU1NiAzIDExIDNDMTUuNDQ0NCAzIDE5IDYuNTU1NTYgMTkgMTFDMTkgMTUuNDQ0NCAxNS40NDQ0IDE5IDExIDE5Wk0xMSA1QzcuNTMzMzMgNSA1IDcuNTMzMzMgNSAxMUM1IDE0LjQ2NjcgNy41MzMzMyAxNyAxMSAxN0MxNC40NjY3IDE3IDE3IDE0LjQ2NjcgMTcgMTFDMTcgNy41MzMzMyAxNC40NjY3IDUgMTEgNVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAoY2hhbmdlKT1cInNlYXJjaERhdGEoKVwiIFsobmdNb2RlbCldPVwic2VhcmNoVmFsdWVcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHBzLTE0IG1lLTJcIiBhdXRvY29tcGxldGU9XCJvZmZcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIGZpbHRlciBTdGFydCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGxpYi1maWx0ZXJzIFtkYXRhT2JqZWN0XT1cImRhdGFPYmplY3RcIiAoYXBwbGllZEZpbHRlcnMpPVwiYXBwbHlGaWx0ZXJzKCRldmVudClcIj48L2xpYi1maWx0ZXJzPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gZmlsdGVyIEVuZCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gU3VtIEJ1dHRvbiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uICpuZ0lmPVwiKHN0b3JlSWRhcnJheT8ubGVuZ3RoID4gMSAmJiBoZWFkZXJEYXRhPy5kYXRlPy5zdGFydERhdGUgIT0gaGVhZGVyRGF0YT8uZGF0ZT8uZW5kRGF0ZSkgJiYgIW5vRGF0YSAmJiAhbG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9uVmFsdWVUeXBlKCdzdW0nKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IG14LTIgYnRuLW91dGxpbmUgYnRuLW91dGxpbmUtZGVmYXVsdCByb3VuZGVkLTMgdGV4dC1ub3dyYXAgYm9yZGVyLXZhbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnYnRuLWxpZ2h0IGJ0bi1wcmltYXJ5IHRleHQtd2hpdGUnOiB0eXBlVmFsdWUgPT09ICdzdW0nfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnc3Ryb2tlJzogdHlwZVZhbHVlID09PSAnc3VtJyA/ICcjRkZGRkZGJyA6ICcjMzQ0MDU0J31cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkuOTk5MzUgNC4xNjY3NVYxNS44MzM0TTQuMTY2MDIgMTAuMDAwMUgxNS44MzI3XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCIgW25nQ2xhc3NdPVwieyd0ZXh0LXdoaXRlJzogdHlwZVZhbHVlID09PSAnc3VtJ31cIj5TdW08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbjwhLS0gQXZlcmFnZSBCdXR0b24gLS0+XHJcbiA8c2VjdGlvbiAqbmdJZj1cIihzdG9yZUlkYXJyYXk/Lmxlbmd0aCA+IDEgJiYgaGVhZGVyRGF0YT8uZGF0ZT8uc3RhcnREYXRlICE9IGhlYWRlckRhdGE/LmRhdGU/LmVuZERhdGUpICYmICFub0RhdGEgJiYgIWxvYWRpbmdcIj5cclxuPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9uVmFsdWVUeXBlKCdhdmVyYWdlJylcIlxyXG5jbGFzcz1cImJ0biBidG4tZGVmYXVsdCBteC0yIGJ0bi1vdXRsaW5lIGJ0bi1vdXRsaW5lLWRlZmF1bHQgcm91bmRlZC0zIHRleHQtbm93cmFwIGJvcmRlci12YWxcIlxyXG5bbmdDbGFzc109XCJ7J2J0bi1saWdodCBidG4tcHJpbWFyeSB0ZXh0LXdoaXRlJzogdHlwZVZhbHVlID09PSAnYXZlcmFnZSd9XCI+XHJcbjxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgW25nU3R5bGVdPVwieydzdHJva2UnOiB0eXBlVmFsdWUgPT09ICdhdmVyYWdlJyA/ICcjRkZGRkZGJyA6ICcjMTAxODI4J31cIj5cclxuICA8cGF0aCBkPVwiTTE3LjUgMTcuNUg4LjMzMzMzQzUuNTgzMzMgMTcuNSA0LjIwODMzIDE3LjUgMy4zNTQxNyAxNi42NDU4QzIuNSAxNS43OTE3IDIuNSAxNC40MTY3IDIuNSAxMS42NjY3VjIuNU01IDEwSDUuMDA3NU03LjQ5OTE3IDEwSDcuNTA1ODNNOS45OTc1IDEwSDEwLjAwNDJNMTIuNDk1OCAxMEgxMi41MDMzTTE0Ljk5NDIgMTBIMTUuMDAxN00xNy40OTI1IDEwSDE3LjVcIlxyXG4gICAgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICA8cGF0aFxyXG4gICAgZD1cIk01IDUuODMzNDFDNS41NjA4MyA0Ljg5ODQxIDYuMzIyNSA0LjE2Njc1IDcuNDk0MTcgNC4xNjY3NUMxMi40NDY3IDQuMTY2NzUgOS42NjI1IDE0LjE2NjcgMTQuOTg1IDE0LjE2NjdDMTYuMTY1IDE0LjE2NjcgMTYuOTIxNyAxMy40MzAxIDE3LjUgMTIuNTAwMVwiXHJcbiAgICBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG48L3N2Zz5cclxuPHNwYW4gY2xhc3M9XCJtcy0yXCIgW25nQ2xhc3NdPVwieyd0ZXh0LXdoaXRlJzogdHlwZVZhbHVlID09PSAnYXZlcmFnZSd9XCI+QXZlcmFnZTwvc3Bhbj5cclxuPC9idXR0b24+XHJcbjwvc2VjdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCIhbm9EYXRhICYmICFsb2FkaW5nXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJleHBvcnRYTFNYKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IG14LTIgYnRuLW91dGxpbmUgYnRuLW91dGxpbmUtZGVmYXVsdCByb3VuZGVkLTMgdGV4dC1ub3dyYXAgYm9yZGVyLXZhbFwiPjxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNy41IDEyLjVWMTUuODMzM0MxNy41IDE2LjI3NTQgMTcuMzI0NCAxNi42OTkzIDE3LjAxMTggMTcuMDExOEMxNi42OTkzIDE3LjMyNDQgMTYuMjc1NCAxNy41IDE1LjgzMzMgMTcuNUg0LjE2NjY3QzMuNzI0NjQgMTcuNSAzLjMwMDcyIDE3LjMyNDQgMi45ODgxNiAxNy4wMTE4QzIuNjc1NTkgMTYuNjk5MyAyLjUgMTYuMjc1NCAyLjUgMTUuODMzM1YxMi41TTE0LjE2NjcgNi42NjY2N0wxMCAyLjVNMTAgMi41TDUuODMzMzMgNi42NjY2N00xMCAyLjVWMTIuNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjxzcGFuIGNsYXNzPVwibXMtMlwiPkV4cG9ydDwvc3Bhbj4gPC9idXR0b24+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJsb2FkaW5nXCIgY2xhc3M9XCJyb3cgbG9hZGVyICBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm5vRGF0YVwiIGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLW5vZGF0YS10YWJsZVwiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YTEuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGEtdGl0bGVcIj5ObyBkYXRhIGZvdW5kPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGEtc3ViXCI+VGhlcmUgaXMgbm8gcmVzdWx0IGZvciB0aGlzIHN1bW1hcnkgdGFibGU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFub0RhdGEgJiYgIWxvYWRpbmdcIiBjYWxzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ3LTEwMCB0YWJsZSBib3R0b20tYm9yZGVyIHRleHQtbm93cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgnc3RvcmVOYW1lJylcIj5TdG9yZSBOYW1lIDxzdmcgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzb3J0ZWRDb2x1bW4gPT09ICdzdG9yZU5hbWUnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRlZENvbHVtbiA9PT0gJ3N0b3JlTmFtZScgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25Tb3J0KCdzdG9yZUlkJylcIj5TdG9yZSBJRCA8c3ZnICBbbmdDbGFzc109XCJzb3J0ZWRDb2x1bW4gPT09ICdzdG9yZUlkJyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0ZWRDb2x1bW4gPT09ICdzdG9yZUlkJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoICpuZ0lmPVwic3RvcmVJZGFycmF5Py5sZW5ndGggPT09IDFcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25Tb3J0KCdkYXRlJylcIj5EYXRlIDxzdmcgW25nQ2xhc3NdPVwic29ydGVkQ29sdW1uID09PSAnZGF0ZScgJiYgc29ydERpcmVjdGlvbiA9PT0gMSA/ICdyb3RhdGUnIDogJydcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydGVkQ29sdW1uID09PSAnZGF0ZScgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25Tb3J0KCdmb290ZmFsbENvdW50JylcIj5Gb290ZmFsbCA8c3ZnIFtuZ0NsYXNzXT1cInNvcnRlZENvbHVtbiA9PT0gJ2Zvb3RmYWxsQ291bnQnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRlZENvbHVtbiA9PT0gJ2Zvb3RmYWxsQ291bnQnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgnYm91bmNlZENvdW50JylcIj5Cb3VuY2VkIEZvb3RmYWxsPHN2ZyBbbmdDbGFzc109XCJzb3J0ZWRDb2x1bW4gPT09ICdib3VuY2VkQ291bnQnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRlZENvbHVtbiA9PT0gJ2JvdW5jZWRDb3VudCcgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25Tb3J0KCdlbmdhZ2Vyc0NvdW50JylcIj5FbmdhZ2VycyA8c3ZnIFtuZ0NsYXNzXT1cInNvcnRlZENvbHVtbiA9PT0gJ2VuZ2FnZXJzQ291bnQnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRlZENvbHVtbiA9PT0gJ2VuZ2FnZXJzQ291bnQnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgnbWlzc2VkT3Bwb3J0dW5pdHlDb3VudCcpXCI+TWlzc2VkIE9wcG9ydHVuaXR5PHN2ZyBbbmdDbGFzc109XCJzb3J0ZWRDb2x1bW4gPT09ICdtaXNzZWRPcHBvcnR1bml0eUNvdW50JyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0ZWRDb2x1bW4gPT09ICdtaXNzZWRPcHBvcnR1bml0eUNvdW50JyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvblNvcnQoJ3BvdGVudGlhbEJ1eWVyc0NvdW50JylcIj5Qb3RlbnRpYWwgQnV5ZXJzIDxzdmcgW25nQ2xhc3NdPVwic29ydGVkQ29sdW1uID09PSAncG90ZW50aWFsQnV5ZXJzQ291bnQnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRlZENvbHVtbiA9PT0gJ3BvdGVudGlhbEJ1eWVyc0NvdW50JyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvblNvcnQoJ2NvbnZlcnNpb25SYXRlJylcIj5Db252ZXJzaW9uIFJhdGUgPHN2ZyBbbmdDbGFzc109XCJzb3J0ZWRDb2x1bW4gPT09ICdjb252ZXJzaW9uUmF0ZScgJiYgc29ydERpcmVjdGlvbiA9PT0gMSA/ICdyb3RhdGUnIDogJydcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydGVkQ29sdW1uID09PSAnY29udmVyc2lvblJhdGUnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgnYXZnRHdlbGxUaW1lJylcIj5BdmcuRHdlbGwgVGltZSA8c3ZnIFtuZ0NsYXNzXT1cInNvcnRlZENvbHVtbiA9PT0gJ2F2Z0R3ZWxsVGltZScgJiYgc29ydERpcmVjdGlvbiA9PT0gMSA/ICdyb3RhdGUnIDogJydcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydGVkQ29sdW1uID09PSAnYXZnRHdlbGxUaW1lJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvblNvcnQoJ2F2Z0luZnJhRG93bnRpbWUnKVwiPkF2Zy5JbmZyYSBEb3duVGltZSA8c3ZnIFtuZ0NsYXNzXT1cInNvcnRlZENvbHVtbiA9PT0gJ2F2Z0luZnJhRG93bnRpbWUnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRlZENvbHVtbiA9PT0gJ2F2Z0luZnJhRG93bnRpbWUnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgnYmVsb3cxMicpXCI+QmVsb3cxMiA8c3ZnIFtuZ0NsYXNzXT1cInNvcnRlZENvbHVtbiA9PT0gJ2JlbG93MTInICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRlZENvbHVtbiA9PT0gJ2JlbG93MTInID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgnMTMtMTknKVwiPjEzLTE5IDxzdmcgW25nQ2xhc3NdPVwic29ydGVkQ29sdW1uID09PSAnMTMtMTknICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRlZENvbHVtbiA9PT0gJzEzLTE5JyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvblNvcnQoJzIwLTMwJylcIj4yMC0zMCA8c3ZnIFtuZ0NsYXNzXT1cInNvcnRlZENvbHVtbiA9PT0gJzIwLTMwJyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0ZWRDb2x1bW4gPT09ICcyMC0zMCcgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25Tb3J0KCczMS00NScpXCI+MzEtNDUgPHN2ZyBbbmdDbGFzc109XCJzb3J0ZWRDb2x1bW4gPT09ICczMS00NScgJiYgc29ydERpcmVjdGlvbiA9PT0gMSA/ICdyb3RhdGUnIDogJydcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydGVkQ29sdW1uID09PSAnMzEtNDUnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgnNDYtNTknKVwiPjQ2LTU5IDxzdmcgW25nQ2xhc3NdPVwic29ydGVkQ29sdW1uID09PSAnNDYtNTknICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRlZENvbHVtbiA9PT0gJzQ2LTU5JyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvblNvcnQoJzYwIGFib3ZlJylcIj42MCBhYm92ZSA8c3ZnIFtuZ0NsYXNzXT1cInNvcnRlZENvbHVtbiA9PT0gJzYwIGFib3ZlJyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0ZWRDb2x1bW4gPT09ICc2MCBhYm92ZScgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25Tb3J0KCdtYWxlJylcIj5NYWxlIDxzdmcgW25nQ2xhc3NdPVwic29ydGVkQ29sdW1uID09PSAnbWFsZScgJiYgc29ydERpcmVjdGlvbiA9PT0gMSA/ICdyb3RhdGUnIDogJydcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydGVkQ29sdW1uID09PSAnbWFsZScgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25Tb3J0KCdmZW1hbGUnKVwiPkZlbWFsZSA8c3ZnIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydGVkQ29sdW1uID09PSAnZmVtYWxlJyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0ZWRDb2x1bW4gPT09ICdmZW1hbGUnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgb2JqIG9mIGdldFN1bW1hcnlUYWJsZURhdGE7bGV0IGk9aW5kZXg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAoY2xpY2spPVwic3RvcmVWaWV3KG9iailcIiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LXByaW1hcnkgdGV4dC1jYXBpdGFsaXplIHRleHQtZGVjb3JhdGlvbi11bmRlcmxpbmUgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic3RvcmVWaWV3KG9iai5zdG9yZUlkKVwiPnt7b2JqLnN0b3JlTmFtZX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tvYmouc3RvcmVJZH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJvYmo/LmRhdGVcIj57e29iaj8uZGF0ZSB8IGRhdGU6J01NTSBkZCwgeXl5eSd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7b2JqLmZvb3RmYWxsQ291bnR9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7b2JqLmJvdW5jZWRDb3VudH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tvYmouZW5nYWdlcnNDb3VudH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tvYmoubWlzc2VkT3Bwb3J0dW5pdHlDb3VudH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tvYmoucG90ZW50aWFsQnV5ZXJzQ291bnR9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7b2JqLmNvbnZlcnNpb25SYXRlfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e29iai5hdmdEd2VsbFRpbWV9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7b2JqLmF2Z0luZnJhRG93bnRpbWV9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7b2JqLmJlbG93MTJ9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7b2JqWycxMy0xOSddfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e29ialsnMjAtMzAnXX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tvYmpbJzMxLTQ1J119fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7b2JqW1wiNDYtNTlcIl19fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7b2JqW1wiNjAgYWJvdmVcIl19fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7b2JqLm1hbGV9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7b2JqLmZlbWFsZX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGxpYi1wYWdpbmF0aW9uIFtpdGVtc1BlclBhZ2VdPVwicGFnZVNpemVcIiBbY3VycmVudFBhZ2VdPVwib2Zmc2V0XCIgW3RvdGFsSXRlbXNdPVwidG90YWxJdGVtc1wiXHJcbiAgICAgICAgICAgICAgICBbcGFnaW5hdGlvblNpemVzXT1cInBhZ2luYXRpb25TaXplc1wiIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiIChwYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIChwYWdlU2l6ZUNoYW5nZSk9XCJvblBhZ2VTaXplQ2hhbmdlKCRldmVudClcIj48L2xpYi1wYWdpbmF0aW9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuPC9kaXY+XHJcbiJdfQ==
|