simpo-component-library 3.0.0 → 3.0.2

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.
Files changed (66) hide show
  1. package/esm2022/lib/elements/index.mjs +6 -7
  2. package/esm2022/lib/elements/my-documents/my-documents.component.mjs +11 -0
  3. package/esm2022/lib/elements/my-orders/my-orders.component.mjs +64 -0
  4. package/esm2022/lib/elements/my-statement/my-statement.component.mjs +26 -0
  5. package/esm2022/lib/elements/need-help/need-help.component.mjs +11 -0
  6. package/esm2022/lib/elements/payment-confirmation/payment-confirmation.component.mjs +90 -0
  7. package/esm2022/lib/elements/portfolio/portfolio.component.mjs +27 -45
  8. package/esm2022/lib/elements/properties/properties.component.mjs +35 -0
  9. package/esm2022/lib/elements/property-view/property-view.component.mjs +79 -0
  10. package/esm2022/lib/sections/kyc-details/kyc-details.component.mjs +163 -0
  11. package/esm2022/lib/sections/navbar-section/navbar-section.component.mjs +41 -12
  12. package/esm2022/lib/sections/profile-section/profile-section.component.mjs +52 -0
  13. package/esm2022/lib/sections/profile-section/profile-section.modal.mjs +2 -0
  14. package/esm2022/lib/sections/property-component/property-component.component.mjs +84 -7
  15. package/esm2022/lib/sections/property-component/property-component.modal.mjs +1 -1
  16. package/esm2022/lib/sections/property-detail/property-detail.component.mjs +149 -0
  17. package/esm2022/lib/sections/property-detail/property-detail.model.mjs +2 -0
  18. package/esm2022/lib/sections/property-list/property-list.component.mjs +29 -57
  19. package/esm2022/lib/sections/signup-signin/signup-signin.component.mjs +278 -0
  20. package/esm2022/lib/sections/signup-signin/signup-signin.model.mjs +2 -0
  21. package/esm2022/lib/sections/verify-property-payment/verify-property-payment.component.mjs +55 -0
  22. package/esm2022/lib/services/events.service.mjs +2 -1
  23. package/esm2022/lib/services/rest.service.mjs +100 -5
  24. package/esm2022/lib/styles/index.mjs +6 -1
  25. package/esm2022/public-api.mjs +5 -1
  26. package/fesm2022/simpo-component-library.mjs +3080 -2096
  27. package/fesm2022/simpo-component-library.mjs.map +1 -1
  28. package/lib/directive/background-directive.d.ts +1 -1
  29. package/lib/directive/button-directive.directive.d.ts +1 -1
  30. package/lib/directive/color.directive.d.ts +1 -1
  31. package/lib/ecommerce/sections/authentication-required/authentication-required.component.d.ts +1 -1
  32. package/lib/elements/index.d.ts +2 -3
  33. package/lib/elements/my-documents/my-documents.component.d.ts +5 -0
  34. package/lib/elements/my-orders/my-orders.component.d.ts +10 -0
  35. package/lib/elements/my-statement/my-statement.component.d.ts +8 -0
  36. package/lib/elements/need-help/need-help.component.d.ts +5 -0
  37. package/lib/elements/payment-confirmation/payment-confirmation.component.d.ts +25 -0
  38. package/lib/elements/portfolio/portfolio.component.d.ts +10 -12
  39. package/lib/elements/properties/properties.component.d.ts +15 -0
  40. package/lib/elements/property-view/property-view.component.d.ts +15 -0
  41. package/lib/sections/banner-carousel/banner-carousel.component.d.ts +2 -2
  42. package/lib/sections/carousel-banner/carousel-banner.component.d.ts +1 -1
  43. package/lib/sections/image-section/image-section.component.d.ts +2 -2
  44. package/lib/sections/kyc-details/kyc-details.component.d.ts +38 -0
  45. package/lib/sections/logo-showcase/logo-showcase.component.d.ts +1 -1
  46. package/lib/sections/navbar-section/navbar-section.component.d.ts +9 -1
  47. package/lib/sections/pricing-section/pricing-section.component.d.ts +1 -1
  48. package/lib/sections/profile-section/profile-section.component.d.ts +16 -0
  49. package/lib/sections/profile-section/profile-section.modal.d.ts +5 -0
  50. package/lib/sections/property-component/property-component.component.d.ts +25 -4
  51. package/lib/sections/property-component/property-component.modal.d.ts +11 -18
  52. package/lib/sections/property-detail/property-detail.component.d.ts +38 -0
  53. package/lib/sections/property-detail/property-detail.model.d.ts +5 -0
  54. package/lib/sections/property-list/property-list.component.d.ts +9 -2
  55. package/lib/sections/signup-signin/signup-signin.component.d.ts +49 -0
  56. package/lib/sections/signup-signin/signup-signin.model.d.ts +10 -0
  57. package/lib/sections/verify-property-payment/verify-property-payment.component.d.ts +16 -0
  58. package/lib/services/events.service.d.ts +1 -0
  59. package/lib/services/rest.service.d.ts +24 -0
  60. package/lib/styles/index.d.ts +4 -0
  61. package/package.json +1 -1
  62. package/public-api.d.ts +4 -0
  63. package/simpo-component-library-3.0.2.tgz +0 -0
  64. package/esm2022/lib/elements/property/property.component.mjs +0 -41
  65. package/lib/elements/property/property.component.d.ts +0 -8
  66. package/simpo-component-library-3.0.0.tgz +0 -0
@@ -0,0 +1,149 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { CommonModule, NgFor, NgIf } from '@angular/common';
3
+ import { MatIcon } from '@angular/material/icon';
4
+ import { FormsModule } from '@angular/forms';
5
+ import { StorageKeys } from '../../styles/index';
6
+ import { MatDialogModule } from '@angular/material/dialog';
7
+ import { PaymentConfirmationComponent } from '../../elements/payment-confirmation/payment-confirmation.component';
8
+ import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';
9
+ import { KycDetailsComponent } from '../kyc-details/kyc-details.component';
10
+ import { MessageService } from 'primeng/api';
11
+ import { ToastModule } from 'primeng/toast';
12
+ import * as i0 from "@angular/core";
13
+ import * as i1 from "../../services/rest.service";
14
+ import * as i2 from "@angular/router";
15
+ import * as i3 from "@angular/material/dialog";
16
+ import * as i4 from "primeng/api";
17
+ import * as i5 from "@angular/forms";
18
+ import * as i6 from "ngx-skeleton-loader";
19
+ import * as i7 from "@angular/common";
20
+ import * as i8 from "primeng/toast";
21
+ export class PropertyDetailComponent {
22
+ constructor(restService, activatedRoute, router, matDialog, messageService) {
23
+ this.restService = restService;
24
+ this.activatedRoute = activatedRoute;
25
+ this.router = router;
26
+ this.matDialog = matDialog;
27
+ this.messageService = messageService;
28
+ this.propertyId = '';
29
+ this.propertyDetails = {
30
+ "propertyId": 10,
31
+ "name": "Ananta One",
32
+ "minimumInvestment": 100,
33
+ "propertyType": "Coliving",
34
+ "description": null,
35
+ "location": "samta colony Chhattisgarh",
36
+ "documents": [],
37
+ "financeDetails": {
38
+ "id": 11,
39
+ "propertyId": 10,
40
+ "guaranteedROI": 10,
41
+ "pricePerSqFeet": 10,
42
+ "indicativeMarketValue": 10,
43
+ "annualReturn": 10,
44
+ "guaranteedAnnualCapitalGrowth": 10,
45
+ "createdTimeStamp": "2025-02-15T05:30:00",
46
+ "irr": 10
47
+ },
48
+ "year": 2020,
49
+ "totalAreaSqFeet": 10,
50
+ "soldOutArea": 0,
51
+ "blockingPrice": 0,
52
+ "blockingDuration": 0,
53
+ "benefits": [],
54
+ "imgUrl": [
55
+ "https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/815921c1739254843186image%20%285%29.png",
56
+ "https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/815921c1739254843186image%20%285%29.png"
57
+ ],
58
+ "createdTimeStamp": "2025-02-15T05:30:00",
59
+ "createdById": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
60
+ "createdByName": "string",
61
+ "active": true,
62
+ "updatedTimeStamp": "2025-02-15T05:30:00",
63
+ "deleted": false
64
+ };
65
+ this.skelLoader = false;
66
+ this.skelArray = Array(5);
67
+ this.index = 0;
68
+ this.propertyNumbers = [
69
+ { icon: "", number: "₹3230", text: "Price/Sq.ft" },
70
+ { icon: "", number: "₹4830", text: "Indicative Market Value" },
71
+ { icon: "", number: "18%", text: "Internal Returns Rate" },
72
+ { icon: "", number: "12%", text: "Annual Returns" },
73
+ { icon: "https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/273918c1739173355725checked%201.png", number: "5%", text: "Guaranteed annual capital growth" },
74
+ ];
75
+ this.aboutText = "Ananta one Apartments is a premium residential development located in the bustling heart of hyderabad. It offers modern amenities and a luxurious lifestyle designed to meet the needs of urban families and professionals.";
76
+ this.keyValue = [
77
+ { key: "Property Type:", value: "Rental" },
78
+ { key: "Property Size:", value: "12 Acre" },
79
+ { key: "Year:", value: "2023" }
80
+ ];
81
+ this.investmentCards = [
82
+ { img: "https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/697943c1739176853348fi_12875395.png", head: "Reduce risk", text: " Zero Risk with High Returns" },
83
+ { img: "https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/718819c1739177134935shield%201.png", head: "Gurantee Growth", text: "Guaranteed Annual Capital Appreciation" },
84
+ { img: "https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/421883c1739177144880fi_12875395%20%281%29.png", head: "Free Holiday stay", text: "Get 3 days 2 nights free holiday stay" }
85
+ ];
86
+ this.pdfCards = ["Title deed", "Property Registration Certificate"];
87
+ this.sqft = 3230;
88
+ this.noOfSqft = 1;
89
+ }
90
+ ngOnInit() {
91
+ this.activatedRoute.queryParams.subscribe((param) => {
92
+ this.propertyId = param['id'];
93
+ if (this.propertyId)
94
+ this.getPropertyDetails();
95
+ });
96
+ }
97
+ ngOnDestroy() {
98
+ this.kycDetailsSubscription?.unsubscribe();
99
+ }
100
+ getPropertyDetails() {
101
+ this.skelLoader = true;
102
+ this.restService.getPropertyDetails(this.propertyId).subscribe((res) => {
103
+ this.propertyDetails = res;
104
+ this.skelLoader = false;
105
+ });
106
+ }
107
+ purchaseProperty() {
108
+ if (!localStorage.getItem(StorageKeys.INVESTOR_ID)) {
109
+ this.router.navigate(['login-signup'], { queryParams: { id: this.propertyDetails.propertyId } });
110
+ return;
111
+ }
112
+ this.getKycDetails();
113
+ }
114
+ checkMinInvestment() {
115
+ if (this.noOfSqft * this.propertyDetails.financeDetails.pricePerSqFeet < this.propertyDetails.minimumInvestment) {
116
+ this.messageService.add({
117
+ severity: 'error',
118
+ summary: 'Min Investment',
119
+ detail: `Min investment is ${this.propertyDetails.minimumInvestment}`
120
+ });
121
+ return false;
122
+ }
123
+ return true;
124
+ }
125
+ getKycDetails() {
126
+ this.kycDetailsSubscription = this.restService.getKycDetails().subscribe((res) => {
127
+ if (res?.message?.panVerified === 'VALID' && res?.message?.aadhaarVerified === 'VALID') {
128
+ if (!this.checkMinInvestment())
129
+ return;
130
+ this.matDialog.open(PaymentConfirmationComponent, { panelClass: 'payment-confirmation', data: { details: this.propertyDetails, totalArea: this.noOfSqft } });
131
+ }
132
+ else {
133
+ this.matDialog.open(KycDetailsComponent, { panelClass: "login-signup" });
134
+ }
135
+ });
136
+ }
137
+ get isMobile() {
138
+ return window.innerWidth <= 475;
139
+ }
140
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: PropertyDetailComponent, deps: [{ token: i1.RestService }, { token: i2.ActivatedRoute }, { token: i2.Router }, { token: i3.MatDialog }, { token: i4.MessageService }], target: i0.ɵɵFactoryTarget.Component }); }
141
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: PropertyDetailComponent, isStandalone: true, selector: "simpo-property-detail", inputs: { data: "data" }, providers: [MessageService], ngImport: i0, template: "<p-toast position=\"bottom-right\" [baseZIndex]=\"10000000000\" [autoZIndex]=\"true\"\n [showTransformOptions]=\"isMobile ? 'translateY(-100%)' : ''\"></p-toast>\n\n<section class=\"main-container\">\n <div id=\"carouselExampleInterval\" *ngIf=\"!skelLoader\" class=\"carousel slide p-relative\" data-bs-ride=\"carousel\">\n <div class=\"carousel-inner\" >\n <div class=\"carousel-item active\" data-bs-interval=\"2000\" *ngFor=\"let img of propertyDetails.imgUrl\">\n <img [src]=\"img\" class=\"d-block w-100 height-30 h-50\" alt=\"property-image\">\n </div>\n <!-- <div class=\"carousel-item\" data-bs-interval=\"3000\">\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/815921c1739254843186image%20%285%29.png\"\n class=\"d-block w-100 height-30\" alt=\"property-image\">\n </div>\n <div class=\"carousel-item\" data-bs-interval=\"3000\">\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/815921c1739254843186image%20%285%29.png\"\n class=\"d-block w-100 height-30\" alt=\"property-image\">\n </div> -->\n </div>\n <div class=\"propertyName d-flex justify-content-between\">\n <div class=\"property-details\">\n <p class=\"pname\">{{propertyDetails.name}}</p>\n <span class=\"plocation d-flex align-items-center gap-5\"><img\n src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/384275c1737629729545location_on.png\"\n alt=\"location image\"> {{propertyDetails.location}}</span>\n </div>\n <div class=\"carousel d-flex justify-content-end align-items-end\">\n <!-- d-flex justify-content-end align-items-end -->\n <div class=\"carousel-indicators additional-properties-1\">\n <!-- additional-properties-1 -->\n <button type=\"button\" data-bs-target=\"#carouselExampleInterval\" [attr.data-bs-slide-to]=\"i\"\n class=\"active additional-properties\" aria-current=\"true\" aria-label=\"Slide 1\"\n *ngFor=\"let slide of propertyDetails.imgUrl;let i = index\"></button>\n <!-- class=\"additional-properties\" -->\n <!-- <button type=\"button\" data-bs-target=\"#carouselExampleInterval\" data-bs-slide-to=\"1\" aria-label=\"Slide 2\" class=\"additional-properties\"></button>\n <button type=\"button\" data-bs-target=\"#carouselExampleInterval\" data-bs-slide-to=\"2\" aria-label=\"Slide 3\" class=\"additional-properties\"></button> -->\n </div>\n </div>\n </div>\n </div>\n <div class=\"row\" *ngIf=\"skelLoader\">\n <div class=\"col-12\" >\n <ng-container *ngTemplateOutlet=\"skeleton\"></ng-container>\n </div>\n </div>\n <div class=\"property-numbers d-flex justify-content-between\" *ngIf=\"!skelLoader\">\n <ng-container>\n <div class=\"icon-text w-18\">\n <div class=\"text text-center d-flex align-items-center justify-content-center gap-10\">\n <!-- <ng-container *ngIf=\"ele.icon.length > 1\">\n <img [src]=\"ele.icon\" alt=\"Icon\" class=\"tick-img\">\n </ng-container> -->\n <p class=\"number-text mb-0\">\u20B9{{ propertyDetails?.financeDetails?.pricePerSqFeet || 0 }}</p>\n </div>\n <div class=\"text-1 text-center\">\n <p class=\"property-text\">Price/Sq.ft</p>\n </div>\n </div>\n <div class=\"icon-text w-18\">\n <div class=\"text text-center d-flex align-items-center justify-content-center gap-10\">\n <!-- <ng-container *ngIf=\"ele.icon.length > 1\">\n <img [src]=\"ele.icon\" alt=\"Icon\" class=\"tick-img\">\n </ng-container> -->\n <p class=\"number-text mb-0\">\u20B9{{ propertyDetails?.financeDetails?.indicativeMarketValue || 0 }}</p>\n </div>\n <div class=\"text-1 text-center\">\n <p class=\"property-text\">Indicative Market Value</p>\n </div>\n </div>\n <div class=\"icon-text w-18\">\n <div class=\"text text-center d-flex align-items-center justify-content-center gap-10\">\n <!-- <ng-container *ngIf=\"ele.icon.length > 1\">\n <img [src]=\"ele.icon\" alt=\"Icon\" class=\"tick-img\">\n </ng-container> -->\n <p class=\"number-text mb-0\">{{ propertyDetails?.financeDetails?.irr || 0 }}%</p>\n </div>\n <div class=\"text-1 text-center\">\n <p class=\"property-text\">Internal Returns Rate</p>\n </div>\n </div>\n <div class=\"icon-text w-18\">\n <div class=\"text text-center d-flex align-items-center justify-content-center gap-10\">\n <!-- <ng-container *ngIf=\"ele.icon.length > 1\">\n <img [src]=\"ele.icon\" alt=\"Icon\" class=\"tick-img\">\n </ng-container> -->\n <p class=\"number-text mb-0\">{{ propertyDetails?.financeDetails?.annualReturn || 0 }}%</p>\n </div>\n <div class=\"text-1 text-center\">\n <p class=\"property-text\">Annual Returns</p>\n </div>\n </div>\n <div class=\"icon-text w-18\">\n <div class=\"text text-center d-flex align-items-center justify-content-center gap-10\">\n <ng-container>\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/273918c1739173355725checked%201.png\" alt=\"Icon\" class=\"tick-img\">\n </ng-container>\n <p class=\"number-text mb-0\">{{ propertyDetails?.financeDetails?.annualReturn || 0}}%</p>\n </div>\n <div class=\"text-1 text-center\">\n <p class=\"property-text\">Guaranteed annual capital growth</p>\n </div>\n </div>\n </ng-container>\n </div>\n <div class=\"about-section w-70 d-flex g-40\" *ngIf=\"!skelLoader\">\n <div class=\"right w-60 \">\n <div class=\"about-property\">\n <div class=\"head-about-property\">About Property</div>\n <div class=\"about-property-text\">{{propertyDetails.description}}</div>\n <div class=\"about-property-details d-flex gap-10\">\n <ng-container>\n <div class=\"gap-10 d-flex\">\n <div class=\"right-text\">Property Type: </div>\n <div class=\"left-text\">{{propertyDetails.propertyType}}</div>\n </div>\n <div class=\"gap-10 d-flex\">\n <div class=\"right-text\">Property Size:</div>\n <div class=\"left-text\">{{propertyDetails.totalAreaSqFeet}}</div>\n </div>\n <div class=\"gap-10 d-flex\">\n <div class=\"right-text\">year:</div>\n <div class=\"left-text\">{{propertyDetails.year}}</div>\n </div>\n </ng-container>\n </div>\n </div>\n <div class=\"about-property\" *ngIf=\"(propertyDetails?.benefits?.length || 0) > 0\">\n <div class=\"head-about-property\">Investment Benefit</div>\n <div class=\"card-container d-flex gap-10\">\n <ng-container *ngFor=\"let benefits of propertyDetails.benefits\">\n <div class=\"cards\">\n <div class=\"image-container w-100 d-flex justify-content-center\">\n <img [src]=\"benefits.imgUrl\" alt=\"\">\n </div>\n <div class=\"card-head\">{{benefits.title}}</div>\n <div class=\"card-text\">{{benefits.description}}</div>\n </div>\n </ng-container>\n </div>\n </div>\n <div class=\"about-property\">\n <div class=\"head-about-property\">Documents & Reports</div>\n <div class=\"file-container d-flex justify-content-between gap-10\">\n <div class=\"file d-flex justify-content-between\" *ngFor=\"let ele of pdfCards\">\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/678394c1739183726107image%209.png\"\n alt=\"pdf\">\n <div class=\"doc-text w-75 d-flex align-items-center\"> {{ele.length > 15 ?\n ele.substring(0,15)+'...' : ele }}</div>\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/195414c1739183779845fi_3502477.png\"\n alt=\"download\" class=\"download-img\">\n </div>\n </div>\n </div>\n </div>\n <div class=\"left w-40\">\n <div class=\"sqft\">\n <div class=\"head-about-property\">Buy SQFT</div>\n <div class=\"price justify-content-between d-flex\">\n <div class=\"left-price\">Price/Sq.ft</div>\n <div class=\"right-price\">\u20B9{{propertyDetails.financeDetails.pricePerSqFeet}}</div>\n </div>\n <div class=\"sqft-quantity d-flex justify-content-between w-100 align-items-center\">\n <div class=\"left-sqft\">SQFT Quantity</div>\n <div class=\"right-sqft d-flex align-items-center\">\n <mat-icon (click)=\"noOfSqft > 0 ? noOfSqft = noOfSqft - 1 : noOfSqft = 0\"\n class=\"d-flex align-items-center justify-content-center icon\">remove</mat-icon>\n <div class=\"sqft-number d-flex justify-content-center\"><input type=\"number\" [(ngModel)]=\"noOfSqft\"\n class=\"sqft-number additional-properties-2 text-center p-0 \"></div>\n <mat-icon (click)=\"noOfSqft = noOfSqft + 1\"\n class=\"d-flex align-items-center justify-content-center icon\">add</mat-icon>\n </div>\n </div>\n <div class=\"payable d-flex justify-content-between align-items-center w-100\">\n <div class=\"payable-left\">\n <p class=\"pay-text\">Payable Amount</p><span class=\"pay-subtext\">(Incl. Fees & Other\n Levies)</span>\n </div>\n <div class=\"payable-right\">\n \u20B9{{ noOfSqft * propertyDetails.financeDetails.pricePerSqFeet}}\n </div>\n </div>\n <div class=\"buy\" (click)=\"purchaseProperty()\">\n Buy SQFT\n </div>\n </div>\n </div>\n </div>\n</section>\n<ng-template #skeleton>\n <ngx-skeleton-loader appearance=\"circle\" [theme]=\"{\n width: '100%',\n height: '72vh',\n 'border-radius': '10px',\n 'position': 'relative',\n 'right': '5px'\n }\">\n </ngx-skeleton-loader>\n <div class=\"second-section-wrapper\">\n <div class=\"wrapper\" *ngFor=\"let item of skelArray\">\n <ngx-skeleton-loader [theme]=\"{\n width: '98%',\n 'border-radius': '5px',\n height: '23vh',\n 'margin-bottom': '10px'\n }\"></ngx-skeleton-loader>\n </div>\n </div>\n</ng-template>\n", styles: ["*{font-family:DM Sans!important}.main-container{overflow-x:hidden}mat-icon{font-family:Material Icons!important}.property-numbers{padding:40px 60px 10px;background:#f2910b}.number-text{font-weight:700;font-size:35px;line-height:40px;color:#102031;font-family:DM Sans}.property-text{font-size:20px;font-weight:600;line-height:28px;color:#ffffffe6}.w-18{width:18%}.last-card{width:21%}.w-70{width:70%}.about-section{margin:30px auto}.about-property{background:#fff;border:1px solid rgba(0,0,0,.03);border-radius:10px;padding:10px;margin-bottom:15px}.head-about-property{font-weight:600;font-size:16px;line-height:26px;margin-bottom:10px}.about-property-text{font-weight:400;font-size:16px;line-height:29px;color:#01161eb3}.gap-10{gap:10px}.w-60{width:60%}.about-property-details{width:100%;justify-content:space-between;padding:13px 10px;background:#f6f5f5;border-radius:7px;margin-top:15px;margin-bottom:5px}.right-text{font-weight:500;font-size:16px;line-height:20px;color:#01161ecc}.left-text{font-weight:600;font-size:16px;line-height:20px;color:#01161e}.cards{width:30%;background:#f9fbff;border-radius:10px;padding:15px}.card-head{font-weight:600;font-size:16px;line-height:25px;text-align:center;overflow:hidden;text-overflow:ellipsis}.card-text{font-size:14px;font-weight:500;line-height:25px;text-align:center;overflow:hidden;text-overflow:ellipsis}.image-container img{height:8vh}.file{background:#f7f7f7;border-radius:5px;padding:12px;width:50%}.w-75{width:75%}.doc-text{font-size:16px;font-weight:500;line-height:26px;color:#000}.download-image{width:28px}.g-40{gap:40px}.w-40{width:40%}.sqft{background:linear-gradient(180deg,#0d1b2a,#172b40);color:#fff;width:85%;border-radius:8px;padding:15px}.right-price{width:50%;color:#fc9a11;font-size:28px;font-weight:700;line-height:32px;text-align:end}.left-price{width:50%;font-size:18px;font-weight:600;line-height:32px}.price{display:flex;background:#263f5a;border-radius:8px;padding:15px 10px}.buy{background:#36b37e;color:#fff;padding:15px;border-radius:8px;font-size:15px;font-weight:700;line-height:20px;text-align:center;cursor:pointer}.payable{padding:10px;background:#ffffffb3;border-radius:8px;margin-bottom:10px}.pay-text{font-size:14px;line-height:20px;font-weight:600;color:#000;margin-bottom:unset;border-radius:8px}.pay-subtext{font-size:10px;font-weight:500;color:#0006}.payable-right{font-weight:700;font-size:22px;line-height:32px;color:#fff}.card-container{overflow-x:scroll}.sqft-quantity{padding:15px 2px}.left-sqft{font-weight:600;font-size:16px;line-height:32px;color:#fff}.right-sqft{padding:4px;background:#f8a938;border-radius:4px;width:50%}.icon{font-size:16px;font-weight:700;color:#000;line-height:19px;width:30%;margin:0 2px}.sqft-number{background:#fff;width:70%;border-radius:4px;font-weight:700;font-size:20px;line-height:19px;color:#000;padding:10px;outline:unset}.tick-img{width:30px}.p-relative{position:relative}.propertyName{position:absolute;bottom:0;width:100%;padding:30px}.pname{font-weight:600;font-size:34px;line-height:44px;color:#fff}.plocation{font-size:16px;font-weight:500;line-height:12px;color:#fff9}.additional-properties{border-radius:50%;height:1vh;width:8px!important}.additional-properties-1{position:unset!important;padding:unset!important;margin:unset!important;width:100%}.additional-properties-2{border:unset}.gap-5{gap:5px!important}.second-section-wrapper{display:flex;width:100%}.wrapper{width:30vw}.h-50{height:70vh!important}@media screen and (max-width : 475px){.property-numbers{flex-wrap:wrap;width:100%;padding:15px!important;margin-bottom:15px}.icon-text{width:50%}.last-card{width:100%!important}.right-text,.left-text{white-space:nowrap}.card-container{flex-direction:column;gap:10px;align-items:center}.cards{width:70%}.about-section{flex-direction:column;width:100%!important;margin:unset!important}.right{width:100%!important}.about-property{width:100%;border:none!important}.left{width:100%;margin:10px}.file-container{flex-direction:column}.file{width:100%!important}.sqft{width:95%}.height-30{height:30vh}.about-property-details{display:grid!important;width:100%}.propertyName{padding:10px!important}.pname{font-size:21px;line-height:10px}.additional-properties{height:1vh;width:8px!important}.number-text{font-size:26px}.property-text{font-size:18px}.head-about-property{text-align:center}}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}\n"], dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.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: i5.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: NgxSkeletonLoaderModule }, { kind: "component", type: i6.NgxSkeletonLoaderComponent, selector: "ngx-skeleton-loader", inputs: ["count", "loadingText", "appearance", "animation", "ariaLabel", "theme"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ToastModule }, { kind: "component", type: i8.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "life", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }] }); }
142
+ }
143
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: PropertyDetailComponent, decorators: [{
144
+ type: Component,
145
+ args: [{ selector: 'simpo-property-detail', standalone: true, imports: [NgFor, MatIcon, NgIf, FormsModule, MatDialogModule, NgxSkeletonLoaderModule, CommonModule, ToastModule], providers: [MessageService], template: "<p-toast position=\"bottom-right\" [baseZIndex]=\"10000000000\" [autoZIndex]=\"true\"\n [showTransformOptions]=\"isMobile ? 'translateY(-100%)' : ''\"></p-toast>\n\n<section class=\"main-container\">\n <div id=\"carouselExampleInterval\" *ngIf=\"!skelLoader\" class=\"carousel slide p-relative\" data-bs-ride=\"carousel\">\n <div class=\"carousel-inner\" >\n <div class=\"carousel-item active\" data-bs-interval=\"2000\" *ngFor=\"let img of propertyDetails.imgUrl\">\n <img [src]=\"img\" class=\"d-block w-100 height-30 h-50\" alt=\"property-image\">\n </div>\n <!-- <div class=\"carousel-item\" data-bs-interval=\"3000\">\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/815921c1739254843186image%20%285%29.png\"\n class=\"d-block w-100 height-30\" alt=\"property-image\">\n </div>\n <div class=\"carousel-item\" data-bs-interval=\"3000\">\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/815921c1739254843186image%20%285%29.png\"\n class=\"d-block w-100 height-30\" alt=\"property-image\">\n </div> -->\n </div>\n <div class=\"propertyName d-flex justify-content-between\">\n <div class=\"property-details\">\n <p class=\"pname\">{{propertyDetails.name}}</p>\n <span class=\"plocation d-flex align-items-center gap-5\"><img\n src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/384275c1737629729545location_on.png\"\n alt=\"location image\"> {{propertyDetails.location}}</span>\n </div>\n <div class=\"carousel d-flex justify-content-end align-items-end\">\n <!-- d-flex justify-content-end align-items-end -->\n <div class=\"carousel-indicators additional-properties-1\">\n <!-- additional-properties-1 -->\n <button type=\"button\" data-bs-target=\"#carouselExampleInterval\" [attr.data-bs-slide-to]=\"i\"\n class=\"active additional-properties\" aria-current=\"true\" aria-label=\"Slide 1\"\n *ngFor=\"let slide of propertyDetails.imgUrl;let i = index\"></button>\n <!-- class=\"additional-properties\" -->\n <!-- <button type=\"button\" data-bs-target=\"#carouselExampleInterval\" data-bs-slide-to=\"1\" aria-label=\"Slide 2\" class=\"additional-properties\"></button>\n <button type=\"button\" data-bs-target=\"#carouselExampleInterval\" data-bs-slide-to=\"2\" aria-label=\"Slide 3\" class=\"additional-properties\"></button> -->\n </div>\n </div>\n </div>\n </div>\n <div class=\"row\" *ngIf=\"skelLoader\">\n <div class=\"col-12\" >\n <ng-container *ngTemplateOutlet=\"skeleton\"></ng-container>\n </div>\n </div>\n <div class=\"property-numbers d-flex justify-content-between\" *ngIf=\"!skelLoader\">\n <ng-container>\n <div class=\"icon-text w-18\">\n <div class=\"text text-center d-flex align-items-center justify-content-center gap-10\">\n <!-- <ng-container *ngIf=\"ele.icon.length > 1\">\n <img [src]=\"ele.icon\" alt=\"Icon\" class=\"tick-img\">\n </ng-container> -->\n <p class=\"number-text mb-0\">\u20B9{{ propertyDetails?.financeDetails?.pricePerSqFeet || 0 }}</p>\n </div>\n <div class=\"text-1 text-center\">\n <p class=\"property-text\">Price/Sq.ft</p>\n </div>\n </div>\n <div class=\"icon-text w-18\">\n <div class=\"text text-center d-flex align-items-center justify-content-center gap-10\">\n <!-- <ng-container *ngIf=\"ele.icon.length > 1\">\n <img [src]=\"ele.icon\" alt=\"Icon\" class=\"tick-img\">\n </ng-container> -->\n <p class=\"number-text mb-0\">\u20B9{{ propertyDetails?.financeDetails?.indicativeMarketValue || 0 }}</p>\n </div>\n <div class=\"text-1 text-center\">\n <p class=\"property-text\">Indicative Market Value</p>\n </div>\n </div>\n <div class=\"icon-text w-18\">\n <div class=\"text text-center d-flex align-items-center justify-content-center gap-10\">\n <!-- <ng-container *ngIf=\"ele.icon.length > 1\">\n <img [src]=\"ele.icon\" alt=\"Icon\" class=\"tick-img\">\n </ng-container> -->\n <p class=\"number-text mb-0\">{{ propertyDetails?.financeDetails?.irr || 0 }}%</p>\n </div>\n <div class=\"text-1 text-center\">\n <p class=\"property-text\">Internal Returns Rate</p>\n </div>\n </div>\n <div class=\"icon-text w-18\">\n <div class=\"text text-center d-flex align-items-center justify-content-center gap-10\">\n <!-- <ng-container *ngIf=\"ele.icon.length > 1\">\n <img [src]=\"ele.icon\" alt=\"Icon\" class=\"tick-img\">\n </ng-container> -->\n <p class=\"number-text mb-0\">{{ propertyDetails?.financeDetails?.annualReturn || 0 }}%</p>\n </div>\n <div class=\"text-1 text-center\">\n <p class=\"property-text\">Annual Returns</p>\n </div>\n </div>\n <div class=\"icon-text w-18\">\n <div class=\"text text-center d-flex align-items-center justify-content-center gap-10\">\n <ng-container>\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/273918c1739173355725checked%201.png\" alt=\"Icon\" class=\"tick-img\">\n </ng-container>\n <p class=\"number-text mb-0\">{{ propertyDetails?.financeDetails?.annualReturn || 0}}%</p>\n </div>\n <div class=\"text-1 text-center\">\n <p class=\"property-text\">Guaranteed annual capital growth</p>\n </div>\n </div>\n </ng-container>\n </div>\n <div class=\"about-section w-70 d-flex g-40\" *ngIf=\"!skelLoader\">\n <div class=\"right w-60 \">\n <div class=\"about-property\">\n <div class=\"head-about-property\">About Property</div>\n <div class=\"about-property-text\">{{propertyDetails.description}}</div>\n <div class=\"about-property-details d-flex gap-10\">\n <ng-container>\n <div class=\"gap-10 d-flex\">\n <div class=\"right-text\">Property Type: </div>\n <div class=\"left-text\">{{propertyDetails.propertyType}}</div>\n </div>\n <div class=\"gap-10 d-flex\">\n <div class=\"right-text\">Property Size:</div>\n <div class=\"left-text\">{{propertyDetails.totalAreaSqFeet}}</div>\n </div>\n <div class=\"gap-10 d-flex\">\n <div class=\"right-text\">year:</div>\n <div class=\"left-text\">{{propertyDetails.year}}</div>\n </div>\n </ng-container>\n </div>\n </div>\n <div class=\"about-property\" *ngIf=\"(propertyDetails?.benefits?.length || 0) > 0\">\n <div class=\"head-about-property\">Investment Benefit</div>\n <div class=\"card-container d-flex gap-10\">\n <ng-container *ngFor=\"let benefits of propertyDetails.benefits\">\n <div class=\"cards\">\n <div class=\"image-container w-100 d-flex justify-content-center\">\n <img [src]=\"benefits.imgUrl\" alt=\"\">\n </div>\n <div class=\"card-head\">{{benefits.title}}</div>\n <div class=\"card-text\">{{benefits.description}}</div>\n </div>\n </ng-container>\n </div>\n </div>\n <div class=\"about-property\">\n <div class=\"head-about-property\">Documents & Reports</div>\n <div class=\"file-container d-flex justify-content-between gap-10\">\n <div class=\"file d-flex justify-content-between\" *ngFor=\"let ele of pdfCards\">\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/678394c1739183726107image%209.png\"\n alt=\"pdf\">\n <div class=\"doc-text w-75 d-flex align-items-center\"> {{ele.length > 15 ?\n ele.substring(0,15)+'...' : ele }}</div>\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/195414c1739183779845fi_3502477.png\"\n alt=\"download\" class=\"download-img\">\n </div>\n </div>\n </div>\n </div>\n <div class=\"left w-40\">\n <div class=\"sqft\">\n <div class=\"head-about-property\">Buy SQFT</div>\n <div class=\"price justify-content-between d-flex\">\n <div class=\"left-price\">Price/Sq.ft</div>\n <div class=\"right-price\">\u20B9{{propertyDetails.financeDetails.pricePerSqFeet}}</div>\n </div>\n <div class=\"sqft-quantity d-flex justify-content-between w-100 align-items-center\">\n <div class=\"left-sqft\">SQFT Quantity</div>\n <div class=\"right-sqft d-flex align-items-center\">\n <mat-icon (click)=\"noOfSqft > 0 ? noOfSqft = noOfSqft - 1 : noOfSqft = 0\"\n class=\"d-flex align-items-center justify-content-center icon\">remove</mat-icon>\n <div class=\"sqft-number d-flex justify-content-center\"><input type=\"number\" [(ngModel)]=\"noOfSqft\"\n class=\"sqft-number additional-properties-2 text-center p-0 \"></div>\n <mat-icon (click)=\"noOfSqft = noOfSqft + 1\"\n class=\"d-flex align-items-center justify-content-center icon\">add</mat-icon>\n </div>\n </div>\n <div class=\"payable d-flex justify-content-between align-items-center w-100\">\n <div class=\"payable-left\">\n <p class=\"pay-text\">Payable Amount</p><span class=\"pay-subtext\">(Incl. Fees & Other\n Levies)</span>\n </div>\n <div class=\"payable-right\">\n \u20B9{{ noOfSqft * propertyDetails.financeDetails.pricePerSqFeet}}\n </div>\n </div>\n <div class=\"buy\" (click)=\"purchaseProperty()\">\n Buy SQFT\n </div>\n </div>\n </div>\n </div>\n</section>\n<ng-template #skeleton>\n <ngx-skeleton-loader appearance=\"circle\" [theme]=\"{\n width: '100%',\n height: '72vh',\n 'border-radius': '10px',\n 'position': 'relative',\n 'right': '5px'\n }\">\n </ngx-skeleton-loader>\n <div class=\"second-section-wrapper\">\n <div class=\"wrapper\" *ngFor=\"let item of skelArray\">\n <ngx-skeleton-loader [theme]=\"{\n width: '98%',\n 'border-radius': '5px',\n height: '23vh',\n 'margin-bottom': '10px'\n }\"></ngx-skeleton-loader>\n </div>\n </div>\n</ng-template>\n", styles: ["*{font-family:DM Sans!important}.main-container{overflow-x:hidden}mat-icon{font-family:Material Icons!important}.property-numbers{padding:40px 60px 10px;background:#f2910b}.number-text{font-weight:700;font-size:35px;line-height:40px;color:#102031;font-family:DM Sans}.property-text{font-size:20px;font-weight:600;line-height:28px;color:#ffffffe6}.w-18{width:18%}.last-card{width:21%}.w-70{width:70%}.about-section{margin:30px auto}.about-property{background:#fff;border:1px solid rgba(0,0,0,.03);border-radius:10px;padding:10px;margin-bottom:15px}.head-about-property{font-weight:600;font-size:16px;line-height:26px;margin-bottom:10px}.about-property-text{font-weight:400;font-size:16px;line-height:29px;color:#01161eb3}.gap-10{gap:10px}.w-60{width:60%}.about-property-details{width:100%;justify-content:space-between;padding:13px 10px;background:#f6f5f5;border-radius:7px;margin-top:15px;margin-bottom:5px}.right-text{font-weight:500;font-size:16px;line-height:20px;color:#01161ecc}.left-text{font-weight:600;font-size:16px;line-height:20px;color:#01161e}.cards{width:30%;background:#f9fbff;border-radius:10px;padding:15px}.card-head{font-weight:600;font-size:16px;line-height:25px;text-align:center;overflow:hidden;text-overflow:ellipsis}.card-text{font-size:14px;font-weight:500;line-height:25px;text-align:center;overflow:hidden;text-overflow:ellipsis}.image-container img{height:8vh}.file{background:#f7f7f7;border-radius:5px;padding:12px;width:50%}.w-75{width:75%}.doc-text{font-size:16px;font-weight:500;line-height:26px;color:#000}.download-image{width:28px}.g-40{gap:40px}.w-40{width:40%}.sqft{background:linear-gradient(180deg,#0d1b2a,#172b40);color:#fff;width:85%;border-radius:8px;padding:15px}.right-price{width:50%;color:#fc9a11;font-size:28px;font-weight:700;line-height:32px;text-align:end}.left-price{width:50%;font-size:18px;font-weight:600;line-height:32px}.price{display:flex;background:#263f5a;border-radius:8px;padding:15px 10px}.buy{background:#36b37e;color:#fff;padding:15px;border-radius:8px;font-size:15px;font-weight:700;line-height:20px;text-align:center;cursor:pointer}.payable{padding:10px;background:#ffffffb3;border-radius:8px;margin-bottom:10px}.pay-text{font-size:14px;line-height:20px;font-weight:600;color:#000;margin-bottom:unset;border-radius:8px}.pay-subtext{font-size:10px;font-weight:500;color:#0006}.payable-right{font-weight:700;font-size:22px;line-height:32px;color:#fff}.card-container{overflow-x:scroll}.sqft-quantity{padding:15px 2px}.left-sqft{font-weight:600;font-size:16px;line-height:32px;color:#fff}.right-sqft{padding:4px;background:#f8a938;border-radius:4px;width:50%}.icon{font-size:16px;font-weight:700;color:#000;line-height:19px;width:30%;margin:0 2px}.sqft-number{background:#fff;width:70%;border-radius:4px;font-weight:700;font-size:20px;line-height:19px;color:#000;padding:10px;outline:unset}.tick-img{width:30px}.p-relative{position:relative}.propertyName{position:absolute;bottom:0;width:100%;padding:30px}.pname{font-weight:600;font-size:34px;line-height:44px;color:#fff}.plocation{font-size:16px;font-weight:500;line-height:12px;color:#fff9}.additional-properties{border-radius:50%;height:1vh;width:8px!important}.additional-properties-1{position:unset!important;padding:unset!important;margin:unset!important;width:100%}.additional-properties-2{border:unset}.gap-5{gap:5px!important}.second-section-wrapper{display:flex;width:100%}.wrapper{width:30vw}.h-50{height:70vh!important}@media screen and (max-width : 475px){.property-numbers{flex-wrap:wrap;width:100%;padding:15px!important;margin-bottom:15px}.icon-text{width:50%}.last-card{width:100%!important}.right-text,.left-text{white-space:nowrap}.card-container{flex-direction:column;gap:10px;align-items:center}.cards{width:70%}.about-section{flex-direction:column;width:100%!important;margin:unset!important}.right{width:100%!important}.about-property{width:100%;border:none!important}.left{width:100%;margin:10px}.file-container{flex-direction:column}.file{width:100%!important}.sqft{width:95%}.height-30{height:30vh}.about-property-details{display:grid!important;width:100%}.propertyName{padding:10px!important}.pname{font-size:21px;line-height:10px}.additional-properties{height:1vh;width:8px!important}.number-text{font-size:26px}.property-text{font-size:18px}.head-about-property{text-align:center}}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}\n"] }]
146
+ }], ctorParameters: () => [{ type: i1.RestService }, { type: i2.ActivatedRoute }, { type: i2.Router }, { type: i3.MatDialog }, { type: i4.MessageService }], propDecorators: { data: [{
147
+ type: Input
148
+ }] } });
149
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktZGV0YWlsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvc2VjdGlvbnMvcHJvcGVydHktZGV0YWlsL3Byb3BlcnR5LWRldGFpbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL3Byb3BlcnR5LWRldGFpbC9wcm9wZXJ0eS1kZXRhaWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakQsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxXQUFXLEVBQVcsTUFBTSxnQkFBZ0IsQ0FBQztBQUd0RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDakQsT0FBTyxFQUFhLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG9FQUFvRSxDQUFDO0FBQ2xILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTlELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7OztBQVU1QyxNQUFNLE9BQU8sdUJBQXVCO0lBSWxDLFlBQW9CLFdBQXdCLEVBQ2xDLGNBQThCLEVBQzlCLE1BQWMsRUFDTCxTQUFvQixFQUNwQixjQUE4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O1FBQ0gsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxNQUFNLENBQUMsVUFBVSxJQUFJLEdBQUcsQ0FBQztJQUNsQyxDQUFDOzhHQTFJVSx1QkFBdUI7a0dBQXZCLHVCQUF1Qiw4RkFKdkIsQ0FBQyxjQUFjLENBQUMsMEJDcEI3Qiw4NVVBK01BLGc3SUQ1TFksS0FBSyxtSEFBQyxPQUFPLDJJQUFDLElBQUksNEZBQUMsV0FBVyxneEJBQUUsZUFBZSw4QkFBRSx1QkFBdUIsOE1BQUMsWUFBWSxxTUFBRSxXQUFXOzsyRkFLakcsdUJBQXVCO2tCQVJuQyxTQUFTOytCQUNFLHVCQUF1QixjQUNyQixJQUFJLFdBQ1AsQ0FBQyxLQUFLLEVBQUMsT0FBTyxFQUFDLElBQUksRUFBQyxXQUFXLEVBQUUsZUFBZSxFQUFFLHVCQUF1QixFQUFDLFlBQVksRUFBRSxXQUFXLENBQUMsYUFDbEcsQ0FBQyxjQUFjLENBQUM7dUxBTWxCLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFByb3BlcnR5RGV0YWlsTW9kZWwgfSBmcm9tICcuL3Byb3BlcnR5LWRldGFpbC5tb2RlbCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUsIE5nRm9yLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBOZ01vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUmVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdG9yYWdlS2V5cyB9IGZyb20gJy4uLy4uL3N0eWxlcy9pbmRleCc7XG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBQYXltZW50Q29uZmlybWF0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZWxlbWVudHMvcGF5bWVudC1jb25maXJtYXRpb24vcGF5bWVudC1jb25maXJtYXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IE5neFNrZWxldG9uTG9hZGVyTW9kdWxlIH0gZnJvbSAnbmd4LXNrZWxldG9uLWxvYWRlcic7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEt5Y0RldGFpbHNDb21wb25lbnQgfSBmcm9tICcuLi9reWMtZGV0YWlscy9reWMtZGV0YWlscy5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBUb2FzdE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdG9hc3QnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzaW1wby1wcm9wZXJ0eS1kZXRhaWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTmdGb3IsTWF0SWNvbixOZ0lmLEZvcm1zTW9kdWxlLCBNYXREaWFsb2dNb2R1bGUsIE5neFNrZWxldG9uTG9hZGVyTW9kdWxlLENvbW1vbk1vZHVsZSwgVG9hc3RNb2R1bGVdLFxuICBwcm92aWRlcnM6IFtNZXNzYWdlU2VydmljZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9wZXJ0eS1kZXRhaWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vcHJvcGVydHktZGV0YWlsLmNvbXBvbmVudC5jc3MnXG59KVxuZXhwb3J0IGNsYXNzIFByb3BlcnR5RGV0YWlsQ29tcG9uZW50IHtcblxuICBASW5wdXQoKSBkYXRhPzogUHJvcGVydHlEZXRhaWxNb2RlbDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlc3RTZXJ2aWNlOiBSZXN0U2VydmljZSxcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbWF0RGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHJpdmF0ZSByZWFkb25seSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2VcbiAgKSB7fVxuXG4gIHByb3BlcnR5SWQ6IHN0cmluZyA9ICcnO1xuICBwcm9wZXJ0eURldGFpbHM6IGFueSA9IHtcbiAgICBcInByb3BlcnR5SWRcIjogMTAsXG4gICAgXCJuYW1lXCI6IFwiQW5hbnRhIE9uZVwiLFxuICAgIFwibWluaW11bUludmVzdG1lbnRcIjogMTAwLFxuICAgIFwicHJvcGVydHlUeXBlXCI6IFwiQ29saXZpbmdcIixcbiAgICBcImRlc2NyaXB0aW9uXCI6IG51bGwsXG4gICAgXCJsb2NhdGlvblwiOiBcInNhbXRhIGNvbG9ueSBDaGhhdHRpc2dhcmhcIixcbiAgICBcImRvY3VtZW50c1wiOiBbXSxcbiAgICBcImZpbmFuY2VEZXRhaWxzXCI6IHtcbiAgICAgIFwiaWRcIjogMTEsXG4gICAgICBcInByb3BlcnR5SWRcIjogMTAsXG4gICAgICBcImd1YXJhbnRlZWRST0lcIjogMTAsXG4gICAgICBcInByaWNlUGVyU3FGZWV0XCI6IDEwLFxuICAgICAgXCJpbmRpY2F0aXZlTWFya2V0VmFsdWVcIjogMTAsXG4gICAgICBcImFubnVhbFJldHVyblwiOiAxMCxcbiAgICAgIFwiZ3VhcmFudGVlZEFubnVhbENhcGl0YWxHcm93dGhcIjogMTAsXG4gICAgICBcImNyZWF0ZWRUaW1lU3RhbXBcIjogXCIyMDI1LTAyLTE1VDA1OjMwOjAwXCIsXG4gICAgICBcImlyclwiOiAxMFxuICAgIH0sXG4gICAgXCJ5ZWFyXCI6IDIwMjAsXG4gICAgXCJ0b3RhbEFyZWFTcUZlZXRcIjogMTAsXG4gICAgXCJzb2xkT3V0QXJlYVwiOiAwLFxuICAgIFwiYmxvY2tpbmdQcmljZVwiOiAwLFxuICAgIFwiYmxvY2tpbmdEdXJhdGlvblwiOiAwLFxuICAgIFwiYmVuZWZpdHNcIjogW10sXG4gICAgXCJpbWdVcmxcIjogW1xuICAgICAgXCJodHRwczovL3Byb2Qtc2ltcG8uczMuYXAtc291dGgtMS5hbWF6b25hd3MuY29tL3Byb2QtaW1hZ2VzLzgxNTkyMWMxNzM5MjU0ODQzMTg2aW1hZ2UlMjAlMjg1JTI5LnBuZ1wiLFxuICAgICAgXCJodHRwczovL3Byb2Qtc2ltcG8uczMuYXAtc291dGgtMS5hbWF6b25hd3MuY29tL3Byb2QtaW1hZ2VzLzgxNTkyMWMxNzM5MjU0ODQzMTg2aW1hZ2UlMjAlMjg1JTI5LnBuZ1wiXG4gICAgXSxcbiAgICBcImNyZWF0ZWRUaW1lU3RhbXBcIjogXCIyMDI1LTAyLTE1VDA1OjMwOjAwXCIsXG4gICAgXCJjcmVhdGVkQnlJZFwiOiBcIjNmYTg1ZjY0LTU3MTctNDU2Mi1iM2ZjLTJjOTYzZjY2YWZhNlwiLFxuICAgIFwiY3JlYXRlZEJ5TmFtZVwiOiBcInN0cmluZ1wiLFxuICAgIFwiYWN0aXZlXCI6IHRydWUsXG4gICAgXCJ1cGRhdGVkVGltZVN0YW1wXCI6IFwiMjAyNS0wMi0xNVQwNTozMDowMFwiLFxuICAgIFwiZGVsZXRlZFwiOiBmYWxzZVxuXG4gIH07XG4gIGt5Y0RldGFpbHNTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUoKHBhcmFtOiBhbnkpID0+IHtcbiAgICAgIHRoaXMucHJvcGVydHlJZCA9IHBhcmFtWydpZCddO1xuICAgICAgaWYodGhpcy5wcm9wZXJ0eUlkKVxuICAgICAgICB0aGlzLmdldFByb3BlcnR5RGV0YWlscygpO1xuICAgIH0pXG4gIH1cblxuICBza2VsTG9hZGVyOmJvb2xlYW49ZmFsc2U7XG4gIHNrZWxBcnJheSA9IEFycmF5KDUpO1xuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmt5Y0RldGFpbHNTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBnZXRQcm9wZXJ0eURldGFpbHMoKSB7XG4gICAgdGhpcy5za2VsTG9hZGVyPXRydWU7XG4gICAgdGhpcy5yZXN0U2VydmljZS5nZXRQcm9wZXJ0eURldGFpbHModGhpcy5wcm9wZXJ0eUlkKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICB0aGlzLnByb3BlcnR5RGV0YWlscyA9IHJlcztcbiAgICAgIHRoaXMuc2tlbExvYWRlcj1mYWxzZTtcbiAgICB9KVxuICB9XG5cbiAgaW5kZXggPSAwXG5cbiAgcHJvcGVydHlOdW1iZXJzOiBhbnkgPSBbXG4gICAgeyBpY29uOiBcIlwiLCBudW1iZXI6IFwi4oK5MzIzMFwiLCB0ZXh0OiBcIlByaWNlL1NxLmZ0XCIgfSxcbiAgICB7IGljb246IFwiXCIsIG51bWJlcjogXCLigrk0ODMwXCIsIHRleHQ6IFwiSW5kaWNhdGl2ZSBNYXJrZXQgVmFsdWVcIiB9LFxuICAgIHsgaWNvbjogXCJcIiwgbnVtYmVyOiBcIjE4JVwiLCB0ZXh0OiBcIkludGVybmFsIFJldHVybnMgUmF0ZVwiIH0sXG4gICAgeyBpY29uOiBcIlwiLCBudW1iZXI6IFwiMTIlXCIsIHRleHQ6IFwiQW5udWFsIFJldHVybnNcIiB9LFxuICAgIHsgaWNvbjogXCJodHRwczovL3Byb2Qtc2ltcG8uczMuYXAtc291dGgtMS5hbWF6b25hd3MuY29tL3Byb2QtaW1hZ2VzLzI3MzkxOGMxNzM5MTczMzU1NzI1Y2hlY2tlZCUyMDEucG5nXCIsIG51bWJlcjogXCI1JVwiLCB0ZXh0OiBcIkd1YXJhbnRlZWQgYW5udWFsIGNhcGl0YWwgZ3Jvd3RoXCIgfSxcbiAgXVxuXG4gIGFib3V0VGV4dDogc3RyaW5nID0gXCJBbmFudGEgb25lIEFwYXJ0bWVudHMgaXMgYSBwcmVtaXVtIHJlc2lkZW50aWFsIGRldmVsb3BtZW50IGxvY2F0ZWQgaW4gdGhlIGJ1c3RsaW5nIGhlYXJ0IG9mIGh5ZGVyYWJhZC4gSXQgb2ZmZXJzIG1vZGVybiBhbWVuaXRpZXMgYW5kIGEgbHV4dXJpb3VzIGxpZmVzdHlsZSBkZXNpZ25lZCB0byBtZWV0IHRoZSBuZWVkcyBvZiB1cmJhbiBmYW1pbGllcyBhbmQgcHJvZmVzc2lvbmFscy5cIlxuXG4gIGtleVZhbHVlIDogYW55ID0gW1xuICAgIHtrZXkgIDogXCJQcm9wZXJ0eSBUeXBlOlwiICwgdmFsdWUgOiBcIlJlbnRhbFwifSxcbiAgICB7a2V5ICA6IFwiUHJvcGVydHkgU2l6ZTpcIiAsIHZhbHVlIDogXCIxMiBBY3JlXCJ9LFxuICAgIHtrZXkgIDogXCJZZWFyOlwiICwgdmFsdWUgOiBcIjIwMjNcIn1cbiAgXVxuXG4gIGludmVzdG1lbnRDYXJkcyA6IGFueSA9IFtcbiAgICB7IGltZyA6IFwiaHR0cHM6Ly9wcm9kLXNpbXBvLnMzLmFwLXNvdXRoLTEuYW1hem9uYXdzLmNvbS9wcm9kLWltYWdlcy82OTc5NDNjMTczOTE3Njg1MzM0OGZpXzEyODc1Mzk1LnBuZ1wiICwgaGVhZCA6IFwiUmVkdWNlIHJpc2tcIiAsIHRleHQgOiBcIsKgWmVybyBSaXNrIHdpdGggSGlnaCBSZXR1cm5zXCJ9LFxuICAgIHsgaW1nIDogXCJodHRwczovL3Byb2Qtc2ltcG8uczMuYXAtc291dGgtMS5hbWF6b25hd3MuY29tL3Byb2QtaW1hZ2VzLzcxODgxOWMxNzM5MTc3MTM0OTM1c2hpZWxkJTIwMS5wbmdcIiAsIGhlYWQgOiBcIkd1cmFudGVlIEdyb3d0aFwiICwgdGV4dCA6IFwiR3VhcmFudGVlZCBBbm51YWwgQ2FwaXRhbCBBcHByZWNpYXRpb25cIn0sXG4gICAgeyBpbWcgOiBcImh0dHBzOi8vcHJvZC1zaW1wby5zMy5hcC1zb3V0aC0xLmFtYXpvbmF3cy5jb20vcHJvZC1pbWFnZXMvNDIxODgzYzE3MzkxNzcxNDQ4ODBmaV8xMjg3NTM5NSUyMCUyODElMjkucG5nXCIgLCBoZWFkIDogXCJGcmVlIEhvbGlkYXkgc3RheVwiICwgdGV4dCA6IFwiR2V0IDMgZGF5cyAyIG5pZ2h0cyBmcmVlIGhvbGlkYXkgc3RheVwifVxuICBdXG5cbiAgcGRmQ2FyZHMgOiBhbnkgPSBbXCJUaXRsZSBkZWVkXCIsXCJQcm9wZXJ0eSBSZWdpc3RyYXRpb24gQ2VydGlmaWNhdGVcIl1cblxuICBzcWZ0IDogbnVtYmVyID0gMzIzMDtcbiAgbm9PZlNxZnQgOiBudW1iZXIgPSAxXG5cbiAgcHVyY2hhc2VQcm9wZXJ0eSgpIHtcbiAgICBpZighbG9jYWxTdG9yYWdlLmdldEl0ZW0oU3RvcmFnZUtleXMuSU5WRVNUT1JfSUQpKXtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnbG9naW4tc2lnbnVwJ10sIHtxdWVyeVBhcmFtczoge2lkOiB0aGlzLnByb3BlcnR5RGV0YWlscy5wcm9wZXJ0eUlkfX0pXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZ2V0S3ljRGV0YWlscygpO1xuICB9XG5cbiAgY2hlY2tNaW5JbnZlc3RtZW50KCkge1xuICAgIGlmKHRoaXMubm9PZlNxZnQgKiB0aGlzLnByb3BlcnR5RGV0YWlscy5maW5hbmNlRGV0YWlscy5wcmljZVBlclNxRmVldCA8IHRoaXMucHJvcGVydHlEZXRhaWxzLm1pbmltdW1JbnZlc3RtZW50KSB7XG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XG4gICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxuICAgICAgICBzdW1tYXJ5OiAnTWluIEludmVzdG1lbnQnLFxuICAgICAgICBkZXRhaWw6IGBNaW4gaW52ZXN0bWVudCBpcyAke3RoaXMucHJvcGVydHlEZXRhaWxzLm1pbmltdW1JbnZlc3RtZW50fWBcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGdldEt5Y0RldGFpbHMoKSB7XG4gICAgdGhpcy5reWNEZXRhaWxzU3Vic2NyaXB0aW9uID0gdGhpcy5yZXN0U2VydmljZS5nZXRLeWNEZXRhaWxzKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgaWYocmVzPy5tZXNzYWdlPy5wYW5WZXJpZmllZCA9PT0gJ1ZBTElEJyAmJiByZXM/Lm1lc3NhZ2U/LmFhZGhhYXJWZXJpZmllZCA9PT0gJ1ZBTElEJykge1xuXG4gICAgICAgIGlmKCF0aGlzLmNoZWNrTWluSW52ZXN0bWVudCgpKVxuICAgICAgICAgIHJldHVybjtcblxuICAgICAgICB0aGlzLm1hdERpYWxvZy5vcGVuKFBheW1lbnRDb25maXJtYXRpb25Db21wb25lbnQsIHtwYW5lbENsYXNzOiAncGF5bWVudC1jb25maXJtYXRpb24nLCBkYXRhOiB7ZGV0YWlsczogdGhpcy5wcm9wZXJ0eURldGFpbHMsIHRvdGFsQXJlYTogdGhpcy5ub09mU3FmdH19KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubWF0RGlhbG9nLm9wZW4oS3ljRGV0YWlsc0NvbXBvbmVudCwgeyBwYW5lbENsYXNzOiBcImxvZ2luLXNpZ251cFwiIH0pO1xuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBnZXQgaXNNb2JpbGUoKSB7XG4gICAgcmV0dXJuIHdpbmRvdy5pbm5lcldpZHRoIDw9IDQ3NTtcbiAgfVxufVxuIiwiPHAtdG9hc3QgcG9zaXRpb249XCJib3R0b20tcmlnaHRcIiBbYmFzZVpJbmRleF09XCIxMDAwMDAwMDAwMFwiIFthdXRvWkluZGV4XT1cInRydWVcIlxuICAgIFtzaG93VHJhbnNmb3JtT3B0aW9uc109XCJpc01vYmlsZSA/ICd0cmFuc2xhdGVZKC0xMDAlKScgOiAnJ1wiPjwvcC10b2FzdD5cblxuPHNlY3Rpb24gY2xhc3M9XCJtYWluLWNvbnRhaW5lclwiPlxuICA8ZGl2IGlkPVwiY2Fyb3VzZWxFeGFtcGxlSW50ZXJ2YWxcIiAqbmdJZj1cIiFza2VsTG9hZGVyXCIgY2xhc3M9XCJjYXJvdXNlbCBzbGlkZSBwLXJlbGF0aXZlXCIgZGF0YS1icy1yaWRlPVwiY2Fyb3VzZWxcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2Fyb3VzZWwtaW5uZXJcIiA+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2Fyb3VzZWwtaXRlbSBhY3RpdmVcIiBkYXRhLWJzLWludGVydmFsPVwiMjAwMFwiICpuZ0Zvcj1cImxldCBpbWcgb2YgcHJvcGVydHlEZXRhaWxzLmltZ1VybFwiPlxuICAgICAgICA8aW1nIFtzcmNdPVwiaW1nXCIgY2xhc3M9XCJkLWJsb2NrIHctMTAwIGhlaWdodC0zMCBoLTUwXCIgYWx0PVwicHJvcGVydHktaW1hZ2VcIj5cbiAgICAgIDwvZGl2PlxuICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2Fyb3VzZWwtaXRlbVwiIGRhdGEtYnMtaW50ZXJ2YWw9XCIzMDAwXCI+XG4gICAgICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL3Byb2Qtc2ltcG8uczMuYXAtc291dGgtMS5hbWF6b25hd3MuY29tL3Byb2QtaW1hZ2VzLzgxNTkyMWMxNzM5MjU0ODQzMTg2aW1hZ2UlMjAlMjg1JTI5LnBuZ1wiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1ibG9jayB3LTEwMCBoZWlnaHQtMzBcIiBhbHQ9XCJwcm9wZXJ0eS1pbWFnZVwiPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2Fyb3VzZWwtaXRlbVwiIGRhdGEtYnMtaW50ZXJ2YWw9XCIzMDAwXCI+XG4gICAgICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL3Byb2Qtc2ltcG8uczMuYXAtc291dGgtMS5hbWF6b25hd3MuY29tL3Byb2QtaW1hZ2VzLzgxNTkyMWMxNzM5MjU0ODQzMTg2aW1hZ2UlMjAlMjg1JTI5LnBuZ1wiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1ibG9jayB3LTEwMCBoZWlnaHQtMzBcIiBhbHQ9XCJwcm9wZXJ0eS1pbWFnZVwiPlxuICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJwcm9wZXJ0eU5hbWUgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicHJvcGVydHktZGV0YWlsc1wiPlxuICAgICAgICA8cCBjbGFzcz1cInBuYW1lXCI+e3twcm9wZXJ0eURldGFpbHMubmFtZX19PC9wPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInBsb2NhdGlvbiBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC01XCI+PGltZ1xuICAgICAgICAgICAgc3JjPVwiaHR0cHM6Ly9wcm9kLXNpbXBvLnMzLmFwLXNvdXRoLTEuYW1hem9uYXdzLmNvbS9wcm9kLWltYWdlcy8zODQyNzVjMTczNzYyOTcyOTU0NWxvY2F0aW9uX29uLnBuZ1wiXG4gICAgICAgICAgICBhbHQ9XCJsb2NhdGlvbiBpbWFnZVwiPiB7e3Byb3BlcnR5RGV0YWlscy5sb2NhdGlvbn19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2Fyb3VzZWwgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgYWxpZ24taXRlbXMtZW5kXCI+XG4gICAgICAgIDwhLS0gZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgYWxpZ24taXRlbXMtZW5kIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2Fyb3VzZWwtaW5kaWNhdG9ycyBhZGRpdGlvbmFsLXByb3BlcnRpZXMtMVwiPlxuICAgICAgICAgIDwhLS0gYWRkaXRpb25hbC1wcm9wZXJ0aWVzLTEgLS0+XG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1icy10YXJnZXQ9XCIjY2Fyb3VzZWxFeGFtcGxlSW50ZXJ2YWxcIiBbYXR0ci5kYXRhLWJzLXNsaWRlLXRvXT1cImlcIlxuICAgICAgICAgICAgY2xhc3M9XCJhY3RpdmUgYWRkaXRpb25hbC1wcm9wZXJ0aWVzXCIgYXJpYS1jdXJyZW50PVwidHJ1ZVwiIGFyaWEtbGFiZWw9XCJTbGlkZSAxXCJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzbGlkZSBvZiBwcm9wZXJ0eURldGFpbHMuaW1nVXJsO2xldCBpID0gaW5kZXhcIj48L2J1dHRvbj5cbiAgICAgICAgICA8IS0tIGNsYXNzPVwiYWRkaXRpb25hbC1wcm9wZXJ0aWVzXCIgLS0+XG4gICAgICAgICAgPCEtLSA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWJzLXRhcmdldD1cIiNjYXJvdXNlbEV4YW1wbGVJbnRlcnZhbFwiIGRhdGEtYnMtc2xpZGUtdG89XCIxXCIgYXJpYS1sYWJlbD1cIlNsaWRlIDJcIiBjbGFzcz1cImFkZGl0aW9uYWwtcHJvcGVydGllc1wiPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWJzLXRhcmdldD1cIiNjYXJvdXNlbEV4YW1wbGVJbnRlcnZhbFwiIGRhdGEtYnMtc2xpZGUtdG89XCIyXCIgYXJpYS1sYWJlbD1cIlNsaWRlIDNcIiBjbGFzcz1cImFkZGl0aW9uYWwtcHJvcGVydGllc1wiPjwvYnV0dG9uPiAtLT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cInNrZWxMb2FkZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCIgPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNrZWxldG9uXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwicHJvcGVydHktbnVtYmVycyBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIiAqbmdJZj1cIiFza2VsTG9hZGVyXCI+XG4gICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpY29uLXRleHQgdy0xOFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dCB0ZXh0LWNlbnRlciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgZ2FwLTEwXCI+XG4gICAgICAgICAgPCEtLSA8bmctY29udGFpbmVyICpuZ0lmPVwiZWxlLmljb24ubGVuZ3RoID4gMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImVsZS5pY29uXCIgYWx0PVwiSWNvblwiIGNsYXNzPVwidGljay1pbWdcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+IC0tPlxuICAgICAgICAgIDxwIGNsYXNzPVwibnVtYmVyLXRleHQgbWItMFwiPuKCuXt7IHByb3BlcnR5RGV0YWlscz8uZmluYW5jZURldGFpbHM/LnByaWNlUGVyU3FGZWV0IHx8IDAgfX08L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC0xIHRleHQtY2VudGVyXCI+XG4gICAgICAgICAgPHAgY2xhc3M9XCJwcm9wZXJ0eS10ZXh0XCI+UHJpY2UvU3EuZnQ8L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiaWNvbi10ZXh0IHctMThcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQgdGV4dC1jZW50ZXIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGdhcC0xMFwiPlxuICAgICAgICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdJZj1cImVsZS5pY29uLmxlbmd0aCA+IDFcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiZWxlLmljb25cIiBhbHQ9XCJJY29uXCIgY2xhc3M9XCJ0aWNrLWltZ1wiPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+IC0tPlxuICAgICAgICAgIDxwIGNsYXNzPVwibnVtYmVyLXRleHQgbWItMFwiPuKCuXt7IHByb3BlcnR5RGV0YWlscz8uZmluYW5jZURldGFpbHM/LmluZGljYXRpdmVNYXJrZXRWYWx1ZSB8fCAwIH19PC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtMSB0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgIDxwIGNsYXNzPVwicHJvcGVydHktdGV4dFwiPkluZGljYXRpdmUgTWFya2V0IFZhbHVlPC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImljb24tdGV4dCB3LTE4XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0IHRleHQtY2VudGVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBnYXAtMTBcIj5cbiAgICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgKm5nSWY9XCJlbGUuaWNvbi5sZW5ndGggPiAxXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJlbGUuaWNvblwiIGFsdD1cIkljb25cIiBjbGFzcz1cInRpY2staW1nXCI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+IC0tPlxuICAgICAgICAgIDxwIGNsYXNzPVwibnVtYmVyLXRleHQgbWItMFwiPnt7IHByb3BlcnR5RGV0YWlscz8uZmluYW5jZURldGFpbHM/LmlyciB8fCAwIH19JTwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LTEgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICA8cCBjbGFzcz1cInByb3BlcnR5LXRleHRcIj5JbnRlcm5hbCBSZXR1cm5zIFJhdGU8L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiaWNvbi10ZXh0IHctMThcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQgdGV4dC1jZW50ZXIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGdhcC0xMFwiPlxuICAgICAgICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdJZj1cImVsZS5pY29uLmxlbmd0aCA+IDFcIj5cbiAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImVsZS5pY29uXCIgYWx0PVwiSWNvblwiIGNsYXNzPVwidGljay1pbWdcIj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj4gLS0+XG4gICAgICAgICAgPHAgY2xhc3M9XCJudW1iZXItdGV4dCBtYi0wXCI+e3sgcHJvcGVydHlEZXRhaWxzPy5maW5hbmNlRGV0YWlscz8uYW5udWFsUmV0dXJuIHx8IDAgfX0lPC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtMSB0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgIDxwIGNsYXNzPVwicHJvcGVydHktdGV4dFwiPkFubnVhbCBSZXR1cm5zPC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImljb24tdGV4dCB3LTE4XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0IHRleHQtY2VudGVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBnYXAtMTBcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL3Byb2Qtc2ltcG8uczMuYXAtc291dGgtMS5hbWF6b25hd3MuY29tL3Byb2QtaW1hZ2VzLzI3MzkxOGMxNzM5MTczMzU1NzI1Y2hlY2tlZCUyMDEucG5nXCIgYWx0PVwiSWNvblwiIGNsYXNzPVwidGljay1pbWdcIj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8cCBjbGFzcz1cIm51bWJlci10ZXh0IG1iLTBcIj57eyBwcm9wZXJ0eURldGFpbHM/LmZpbmFuY2VEZXRhaWxzPy5hbm51YWxSZXR1cm4gfHwgMH19JTwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LTEgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICA8cCBjbGFzcz1cInByb3BlcnR5LXRleHRcIj5HdWFyYW50ZWVkIGFubnVhbCBjYXBpdGFsIGdyb3d0aDwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJhYm91dC1zZWN0aW9uIHctNzAgZC1mbGV4IGctNDBcIiAqbmdJZj1cIiFza2VsTG9hZGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0IHctNjAgXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiYWJvdXQtcHJvcGVydHlcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWQtYWJvdXQtcHJvcGVydHlcIj5BYm91dCBQcm9wZXJ0eTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWJvdXQtcHJvcGVydHktdGV4dFwiPnt7cHJvcGVydHlEZXRhaWxzLmRlc2NyaXB0aW9ufX08L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFib3V0LXByb3BlcnR5LWRldGFpbHMgZC1mbGV4IGdhcC0xMFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ2FwLTEwIGQtZmxleFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmlnaHQtdGV4dFwiPlByb3BlcnR5IFR5cGU6IDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdC10ZXh0XCI+e3twcm9wZXJ0eURldGFpbHMucHJvcGVydHlUeXBlfX08L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdhcC0xMCBkLWZsZXhcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0LXRleHRcIj5Qcm9wZXJ0eSBTaXplOjwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdC10ZXh0XCI+e3twcm9wZXJ0eURldGFpbHMudG90YWxBcmVhU3FGZWV0fX08L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdhcC0xMCBkLWZsZXhcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0LXRleHRcIj55ZWFyOjwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdC10ZXh0XCI+e3twcm9wZXJ0eURldGFpbHMueWVhcn19PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJhYm91dC1wcm9wZXJ0eVwiICpuZ0lmPVwiKHByb3BlcnR5RGV0YWlscz8uYmVuZWZpdHM/Lmxlbmd0aCB8fCAwKSA+IDBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWQtYWJvdXQtcHJvcGVydHlcIj5JbnZlc3RtZW50IEJlbmVmaXQ8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtY29udGFpbmVyIGQtZmxleCBnYXAtMTBcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBiZW5lZml0cyBvZiBwcm9wZXJ0eURldGFpbHMuYmVuZWZpdHNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkc1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2UtY29udGFpbmVyIHctMTAwIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImJlbmVmaXRzLmltZ1VybFwiIGFsdD1cIlwiPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZFwiPnt7YmVuZWZpdHMudGl0bGV9fTwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10ZXh0XCI+e3tiZW5lZml0cy5kZXNjcmlwdGlvbn19PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJhYm91dC1wcm9wZXJ0eVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZC1hYm91dC1wcm9wZXJ0eVwiPkRvY3VtZW50cyAmIFJlcG9ydHM8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZpbGUtY29udGFpbmVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBnYXAtMTBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZSBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIiAqbmdGb3I9XCJsZXQgZWxlIG9mIHBkZkNhcmRzXCI+XG4gICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vcHJvZC1zaW1wby5zMy5hcC1zb3V0aC0xLmFtYXpvbmF3cy5jb20vcHJvZC1pbWFnZXMvNjc4Mzk0YzE3MzkxODM3MjYxMDdpbWFnZSUyMDkucG5nXCJcbiAgICAgICAgICAgICAgYWx0PVwicGRmXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZG9jLXRleHQgdy03NSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+IHt7ZWxlLmxlbmd0aCA+IDE1ID9cbiAgICAgICAgICAgICAgZWxlLnN1YnN0cmluZygwLDE1KSsnLi4uJyA6IGVsZSB9fTwvZGl2PlxuICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL3Byb2Qtc2ltcG8uczMuYXAtc291dGgtMS5hbWF6b25hd3MuY29tL3Byb2QtaW1hZ2VzLzE5NTQxNGMxNzM5MTgzNzc5ODQ1ZmlfMzUwMjQ3Ny5wbmdcIlxuICAgICAgICAgICAgICBhbHQ9XCJkb3dubG9hZFwiIGNsYXNzPVwiZG93bmxvYWQtaW1nXCI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImxlZnQgdy00MFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInNxZnRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWQtYWJvdXQtcHJvcGVydHlcIj5CdXkgU1FGVDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJpY2UganVzdGlmeS1jb250ZW50LWJldHdlZW4gZC1mbGV4XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxlZnQtcHJpY2VcIj5QcmljZS9TcS5mdDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodC1wcmljZVwiPuKCuXt7cHJvcGVydHlEZXRhaWxzLmZpbmFuY2VEZXRhaWxzLnByaWNlUGVyU3FGZWV0fX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzcWZ0LXF1YW50aXR5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiB3LTEwMCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdC1zcWZ0XCI+U1FGVCBRdWFudGl0eTwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodC1zcWZ0IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiAoY2xpY2spPVwibm9PZlNxZnQgPiAwID8gbm9PZlNxZnQgPSBub09mU3FmdCAtIDEgOiBub09mU3FmdCA9IDBcIlxuICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBpY29uXCI+cmVtb3ZlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcWZ0LW51bWJlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlclwiPjxpbnB1dCB0eXBlPVwibnVtYmVyXCIgWyhuZ01vZGVsKV09XCJub09mU3FmdFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzcWZ0LW51bWJlciBhZGRpdGlvbmFsLXByb3BlcnRpZXMtMiB0ZXh0LWNlbnRlciBwLTAgXCI+PC9kaXY+XG4gICAgICAgICAgICA8bWF0LWljb24gKGNsaWNrKT1cIm5vT2ZTcWZ0ID0gbm9PZlNxZnQgKyAxXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgaWNvblwiPmFkZDwvbWF0LWljb24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicGF5YWJsZSBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIHctMTAwXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBheWFibGUtbGVmdFwiPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJwYXktdGV4dFwiPlBheWFibGUgQW1vdW50PC9wPjxzcGFuIGNsYXNzPVwicGF5LXN1YnRleHRcIj4oSW5jbC4gRmVlcyAmIE90aGVyXG4gICAgICAgICAgICAgIExldmllcyk8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBheWFibGUtcmlnaHRcIj5cbiAgICAgICAgICAgIOKCuXt7IG5vT2ZTcWZ0ICogcHJvcGVydHlEZXRhaWxzLmZpbmFuY2VEZXRhaWxzLnByaWNlUGVyU3FGZWV0fX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJidXlcIiAoY2xpY2spPVwicHVyY2hhc2VQcm9wZXJ0eSgpXCI+XG4gICAgICAgICAgQnV5IFNRRlRcbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3NlY3Rpb24+XG48bmctdGVtcGxhdGUgI3NrZWxldG9uPlxuICA8bmd4LXNrZWxldG9uLWxvYWRlciAgYXBwZWFyYW5jZT1cImNpcmNsZVwiIFt0aGVtZV09XCJ7XG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgICBoZWlnaHQ6ICc3MnZoJyxcbiAgICAnYm9yZGVyLXJhZGl1cyc6ICcxMHB4JyxcbiAgICAncG9zaXRpb24nOiAncmVsYXRpdmUnLFxuICAgICdyaWdodCc6ICc1cHgnXG4gIH1cIj5cbiAgPC9uZ3gtc2tlbGV0b24tbG9hZGVyPlxuICA8ZGl2IGNsYXNzPVwic2Vjb25kLXNlY3Rpb24td3JhcHBlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc2tlbEFycmF5XCI+XG4gICAgICA8bmd4LXNrZWxldG9uLWxvYWRlciBbdGhlbWVdPVwie1xuICAgICAgd2lkdGg6ICc5OCUnLFxuICAgICAgJ2JvcmRlci1yYWRpdXMnOiAnNXB4JyxcbiAgICAgIGhlaWdodDogJzIzdmgnLFxuICAgICAgJ21hcmdpbi1ib3R0b20nOiAnMTBweCdcbiAgICB9XCI+PC9uZ3gtc2tlbGV0b24tbG9hZGVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktZGV0YWlsLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9zZWN0aW9ucy9wcm9wZXJ0eS1kZXRhaWwvcHJvcGVydHktZGV0YWlsLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFByb3BlcnR5RGV0YWlsTW9kZWwge1xuICAgIGlkOiBzdHJpbmcsXG4gICAgc2VjdGlvblR5cGU6IHN0cmluZyxcbiAgICBzZWN0aW9uTmFtZTogc3RyaW5nXG59XG4iXX0=
@@ -15,64 +15,32 @@ import { ButtonDirectiveDirective } from '../../directive/button-directive.direc
15
15
  import { MatIconModule } from '@angular/material/icon';
16
16
  import { ContentTitleDirective } from '../../directive/content-title-spacing.directive';
17
17
  import { SpacingHorizontalDirective } from '../../directive/spacing-horizontal.directive';
18
+ import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';
18
19
  import * as i0 from "@angular/core";
19
- import * as i1 from "@angular/common";
20
- import * as i2 from "../../components/hover-elements/hover-elements.component";
21
- import * as i3 from "../../components/delete-hover-element/delete-hover-element.component";
22
- import * as i4 from "@angular/material/icon";
20
+ import * as i1 from "../../services/rest.service";
21
+ import * as i2 from "@angular/router";
22
+ import * as i3 from "@angular/common";
23
+ import * as i4 from "../../components/hover-elements/hover-elements.component";
24
+ import * as i5 from "../../components/delete-hover-element/delete-hover-element.component";
25
+ import * as i6 from "ngx-skeleton-loader";
23
26
  export class PropertyListComponent extends BaseSection {
24
- constructor() {
27
+ constructor(restService, router) {
25
28
  super();
26
- this.propertyList = [
27
- {
28
- imgUrl: 'https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/607923c1737627077005image%20%284%29.png',
29
- name: 'Ananta One',
30
- icon: 'https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/950344c1738051599772icon2.png',
31
- location: 'RRR Hyderabad, Telanghana',
32
- underConstruction: true,
33
- return: 10,
34
- IRR: 18,
35
- growth: 5,
36
- minInvestment: 5
37
- },
38
- {
39
- imgUrl: 'https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/978309c1738051330108property2.png',
40
- name: 'Ananta Hills - 50 Acre Property',
41
- icon: 'https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/950344c1738051599772icon2.png',
42
- location: 'Chikkamguru, Karnataka',
43
- underConstruction: false,
44
- return: 10,
45
- IRR: 18,
46
- growth: 5,
47
- minInvestment: 2.5
48
- },
49
- {
50
- imgUrl: 'https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/978309c1738051330108property2.png',
51
- name: 'Ananta Hills - 50 Acre Property',
52
- icon: 'https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/950344c1738051599772icon2.png',
53
- location: 'Chikkamguru, Karnataka',
54
- underConstruction: false,
55
- return: 10,
56
- IRR: 18,
57
- growth: 5,
58
- minInvestment: 2.5
59
- },
60
- {
61
- imgUrl: 'https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/607923c1737627077005image%20%284%29.png',
62
- name: 'Ananta One',
63
- icon: 'https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/950344c1738051599772icon2.png',
64
- location: 'RRR Hyderabad, Telanghana',
65
- underConstruction: true,
66
- return: 10,
67
- IRR: 18,
68
- growth: 5,
69
- minInvestment: 5
70
- }
71
- ];
29
+ this.restService = restService;
30
+ this.router = router;
31
+ this.skelLoader = false;
72
32
  }
73
33
  ngOnInit() {
74
34
  this.styles = this.data?.styles;
75
35
  this.content = this.data?.content;
36
+ this.getPropertyList();
37
+ }
38
+ getPropertyList() {
39
+ this.skelLoader = true;
40
+ this.restService.getPropertyList().subscribe((res) => {
41
+ this.propertyList = res.content;
42
+ this.skelLoader = false;
43
+ });
76
44
  }
77
45
  get stylesLayout() {
78
46
  return { ...this.styles?.layout };
@@ -80,8 +48,11 @@ export class PropertyListComponent extends BaseSection {
80
48
  get headingSpace() {
81
49
  return this.styles?.layout.headingSpacing;
82
50
  }
83
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: PropertyListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
84
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: PropertyListComponent, isStandalone: true, selector: "simpo-property-list", inputs: { data: "data", index: "index", edit: "edit", delete: "delete", customClass: "customClass" }, usesInheritance: true, ngImport: i0, template: "<section class=\"total-container\" simpoHover (hovering)=\"showEditTabs($event)\" [id]=\"data?.id\">\n <div [id]=\"data?.id\">\n <div [simpoBackground]=\"styles?.background\" [id]=\"data?.id\">\n <div [id]=\"data?.id\" [simpoOverlay]=\"styles?.background\" [spacingHorizontal]=\"stylesLayout\" [simpoAnimation]=\"styles?.animation\"\n [simpoLayout]=\"styles?.layout\">\n <div [simpoContentTitleSpace]=\"headingSpace\" [id]=\"data?.id\" class=\"content-side\">\n <div *ngFor=\"let input of content?.inputText\">\n <div *ngFor=\"let text of data?.content?.inputText\" class=\"heading-large\"\n [innerHTML]=\"input.value | sanitizeHtml\"></div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 col-md-6\" *ngFor=\"let property of propertyList\">\n <ng-container *ngTemplateOutlet=\"propertyCards; context: {data: property}\"></ng-container>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\n </div>\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\n </div>\n\n</section>\n\n\n<ng-template #propertyCards let-property=\"data\">\n <div class=\"card\">\n <img [src]=\"property.imgUrl\" alt=\"\">\n <div class=\"p-15\">\n <div class=\"property-name\">\n <div class=\"left-side\">\n <img [src]=\"property.icon\" alt=\"\">\n <div class=\"text-left\">\n <div class=\"property-name-text\">{{property.name}}</div>\n <div class=\"location\">{{property.location}}</div>\n </div>\n </div>\n <div class=\"right-side\" *ngIf=\"property.underConstruction\">\n <mat-icon>build</mat-icon>\n <div>Under Construction</div>\n </div>\n </div>\n <div class=\"stats-area\">\n <div class=\"single-stat\">\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/600863c1738056517087return.png\" alt=\"\">\n <div class=\"stat-number\">{{property.return}}% <span>Annual Returns</span></div>\n </div>\n <div class=\"single-stat justify-center\">\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/600863c1738056517087return.png\" alt=\"\">\n <div class=\"stat-number\">{{property.IRR}}% <span>IRR</span></div>\n </div>\n </div>\n <div class=\"single-stat mt-15 w-100\">\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/600863c1738056517087return.png\" alt=\"\">\n <div class=\"stat-number\">{{property.growth}}% <span>Guaranteed annual growth</span></div>\n </div>\n <hr>\n <div class=\"bottom-area\">\n <div class=\"min-investment\">\n <p>{{property.minInvestment}} Lac</p>\n <div>Min.Investment</div>\n </div>\n <button class=\"button\" simpoButtonDirective [id]=\"(data?.id || '')+(data?.action?.buttons?.[0]?.id || '')\"\n [buttonStyle]=\"data?.action?.buttons?.[0]?.styles\" [color]=\"styles?.background?.accentColor\">Know\n More</button>\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [".hover_effect{position:absolute;width:100%;top:0;left:0;height:100%}.total-container{position:relative;height:auto}.card{padding:5px;border:2px solid rgba(0,0,0,.1)}.card img{height:37vh}.property-name{display:flex;align-items:center;justify-content:space-between}.p-15{padding:15px}.left-side{align-items:center;display:flex;gap:15px}.left-side img{height:65px;width:60px}.right-side{display:flex;gap:5px;color:#19a6c6;align-items:center}.stats-area{display:flex;margin-top:30px;justify-content:space-between}.single-stat{width:50%;display:flex;align-items:center;gap:20px}.single-stat img{height:20px;width:16px}.mt-15{margin-top:15px}hr{border-top:1px solid rgba(0,0,0,.7)}.stat-number{font-size:25px;color:#000000b3;font-weight:900;display:flex;align-items:center;gap:13px}.stat-number span{color:#000000b3;font-size:12px}.bottom-area{display:flex;justify-content:space-between;align-items:center}.min-investment{background:#f8a9381a;text-align:center;padding:.5rem 2rem;border-radius:5px}.min-investment p{margin-bottom:0;font-size:22px;font-weight:900}.min-investment div{color:#0006;font-size:14px;font-weight:600}.button{font-size:14px!important;padding:8px 20px;display:inline-flex;align-items:center;justify-content:center;width:max-content!important;font-weight:600}.property-name-text{font-size:22px;font-weight:700}.location{font-size:11px;color:gray}.justify-center{justify-content:center}.row{row-gap:20px}.text-left{text-align:left}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: SimpoComponentModule }, { kind: "component", type: i2.HoverElementsComponent, selector: "simpo-hover-elements", inputs: ["data", "index", "editOptions", "isMerged", "isEcommerce"], outputs: ["edit"] }, { kind: "component", type: i3.DeleteHoverElementComponent, selector: "simpo-delete-hover-element", inputs: ["index", "data"], outputs: ["edit"] }, { kind: "directive", type: AnimationDirective, selector: "[simpoAnimation]", inputs: ["simpoAnimation"] }, { kind: "directive", type: BackgroundDirective, selector: "[simpoBackground]", inputs: ["simpoBackground", "scrollValue"] }, { kind: "directive", type: HoverDirective, selector: "[simpoHover]", outputs: ["hovering"] }, { kind: "pipe", type: SanitizeHtmlPipe, name: "sanitizeHtml" }, { kind: "directive", type: ContentFitDirective, selector: "[simpoLayout]", inputs: ["simpoLayout"] }, { kind: "directive", type: OverlayDirective, selector: "[simpoOverlay]", inputs: ["simpoOverlay"] }, { kind: "directive", type: ButtonDirectiveDirective, selector: "[simpoButtonDirective]", inputs: ["buttonStyle", "color", "scrollValue"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: ContentTitleDirective, selector: "[simpoContentTitleSpace]", inputs: ["simpoContentTitleSpace"] }, { kind: "directive", type: SpacingHorizontalDirective, selector: "[spacingHorizontal]", inputs: ["spacingHorizontal", "isHeader"] }] }); }
51
+ redirectToPropertyDetails(propertyId) {
52
+ this.router.navigate([`details`], { queryParams: { id: propertyId } });
53
+ }
54
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: PropertyListComponent, deps: [{ token: i1.RestService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component }); }
55
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: PropertyListComponent, isStandalone: true, selector: "simpo-property-list", inputs: { data: "data", index: "index", edit: "edit", delete: "delete", customClass: "customClass" }, usesInheritance: true, ngImport: i0, template: "<section class=\"total-container\" simpoHover (hovering)=\"showEditTabs($event)\" [id]=\"data?.id\">\n <div [id]=\"data?.id\">\n <div [simpoBackground]=\"styles?.background\" [id]=\"data?.id\">\n <div [id]=\"data?.id\" [simpoOverlay]=\"styles?.background\" [spacingHorizontal]=\"stylesLayout\" [simpoAnimation]=\"styles?.animation\"\n [simpoLayout]=\"styles?.layout\">\n <div [simpoContentTitleSpace]=\"headingSpace\" [id]=\"data?.id\" class=\"content-side\">\n <div *ngFor=\"let input of content?.inputText\">\n <div *ngFor=\"let text of data?.content?.inputText\" class=\"heading-large\"\n [innerHTML]=\"input.value | sanitizeHtml\"></div>\n </div>\n </div>\n <div class=\"row\" *ngIf=\"!skelLoader\">\n <div class=\"col-12 col-md-6\" *ngFor=\"let property of propertyList\">\n <ng-container *ngTemplateOutlet=\"propertyCards; context: {data: property}\"></ng-container>\n </div>\n </div>\n <div class=\"row\" *ngIf=\"skelLoader\">\n <div class=\"col-md-4\" *ngFor=\"let skel of [1,2,3]\">\n <ng-container *ngTemplateOutlet=\"skeleton\"></ng-container>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\n </div>\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\n </div>\n\n</section>\n\n\n<ng-template #propertyCards let-property=\"data\">\n <div class=\"card\" (click)=\"redirectToPropertyDetails(property[0].propertyId)\">\n <img [src]=\"property[0]?.imgUrl[0]\" alt=\"\">\n <div class=\"p-15\">\n <div class=\"property-name\">\n <div class=\"left-side\">\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/950344c1738051599772icon2.png\" alt=\"\">\n <div class=\"text-left\">\n <div class=\"property-name-text\">{{property[0].name}}</div>\n <div class=\"location\">{{property[0].location}}</div>\n </div>\n </div>\n <!-- <div class=\"right-side\" *ngIf=\"property.underConstruction\">\n <mat-icon>build</mat-icon>\n <div>Under Construction</div>\n </div> -->\n </div>\n <div class=\"stats-area\">\n <div class=\"single-stat\">\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/600863c1738056517087return.png\" alt=\"\">\n <div class=\"stat-number\">{{property[1]?.annualReturn ?? '0'}} <span>Annual Returns</span></div>\n </div>\n <div class=\"single-stat justify-center\">\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/600863c1738056517087return.png\" alt=\"\">\n <div class=\"stat-number\">{{property[1]?.irr ?? '0'}} <span>IRR</span></div>\n </div>\n </div>\n <div class=\"single-stat mt-15 w-100\">\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/600863c1738056517087return.png\" alt=\"\">\n <div class=\"stat-number\"> {{property[1]?.guaranteedAnnualCapitalGrowth ?? '0'}}<span>Guaranteed annual growth</span></div>\n </div>\n <hr>\n <div class=\"bottom-area\">\n <div class=\"min-investment\">\n <p>{{property[0]?.minimumInvestment ?? '0'}}</p>\n <div>Min.Investment (Sq.ft)</div>\n </div>\n <button class=\"button\" simpoButtonDirective [id]=\"(data?.id || '')+(data?.action?.buttons?.[0]?.id || '')\"\n [buttonStyle]=\"data?.action?.buttons?.[0]?.styles\" [color]=\"styles?.background?.accentColor\">Know\n More</button>\n </div>\n </div>\n </div>\n</ng-template>\n\n<ng-template #skeleton>\n <ngx-skeleton-loader count=\"1\" appearance=\"circle\" [theme]=\"{\n width: '100%',\n height: '40vh',\n 'border-radius': '10px',\n 'position': 'relative',\n 'right': '5px'\n }\">\n </ngx-skeleton-loader>\n <div class=\"second-section-wrapper\">\n <div class=\"wrapper\">\n <ngx-skeleton-loader [theme]=\"{\n width: '100%',\n 'border-radius': '0',\n height: '15px',\n 'margin-bottom': '10px'\n }\"></ngx-skeleton-loader>\n </div>\n <div class=\"wrapper\">\n <ngx-skeleton-loader [theme]=\"{\n width: '90%',\n 'border-radius': '0',\n height: '15px',\n 'margin-bottom': '10px',\n 'display' : 'flex'\n }\"></ngx-skeleton-loader>\n </div>\n <div class=\"wrapper\">\n <ngx-skeleton-loader [theme]=\"{\n width: '60%',\n 'border-radius': '0',\n height: '15px',\n 'margin-bottom': '10px',\n 'display' : 'flex'\n }\"></ngx-skeleton-loader>\n </div>\n </div>\n\n</ng-template>\n", styles: [".hover_effect{position:absolute;width:100%;top:0;left:0;height:100%}.total-container{position:relative;height:auto}.card{padding:5px;border:2px solid rgba(0,0,0,.1)}.card img{height:37vh}.property-name{display:flex;align-items:center;justify-content:space-between}.p-15{padding:15px}.left-side{align-items:center;display:flex;gap:15px}.left-side img{height:65px;width:60px}.right-side{display:flex;gap:5px;color:#19a6c6;align-items:center}.stats-area{display:flex;margin-top:30px;justify-content:space-between}.single-stat{width:50%;display:flex;align-items:center;gap:20px}.single-stat img{height:20px;width:16px}.mt-15{margin-top:15px}hr{border-top:1px solid rgba(0,0,0,.7)}.stat-number{font-size:25px;color:#000000b3;font-weight:900;display:flex;align-items:center;gap:13px}.stat-number span{color:#000000b3;font-size:12px}.bottom-area{display:flex;justify-content:space-between;align-items:center}.min-investment{background:#f8a9381a;text-align:center;padding:.5rem 2rem;border-radius:5px}.min-investment p{margin-bottom:0;font-size:22px;font-weight:900;text-align:left}.min-investment div{color:#0006;font-size:14px;font-weight:600}.button{font-size:14px!important;padding:8px 20px;display:inline-flex;align-items:center;justify-content:center;width:max-content!important;font-weight:600}.property-name-text{font-size:22px;font-weight:700}.location{font-size:11px;color:gray}.justify-center{justify-content:center}.row{row-gap:20px}.text-left{text-align:left}.second-section-wrapper{width:100%;height:auto;flex:1}.wrapper{width:100%;flex:1}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: SimpoComponentModule }, { kind: "component", type: i4.HoverElementsComponent, selector: "simpo-hover-elements", inputs: ["data", "index", "editOptions", "isMerged", "isEcommerce"], outputs: ["edit"] }, { kind: "component", type: i5.DeleteHoverElementComponent, selector: "simpo-delete-hover-element", inputs: ["index", "data"], outputs: ["edit"] }, { kind: "component", type: i6.NgxSkeletonLoaderComponent, selector: "ngx-skeleton-loader", inputs: ["count", "loadingText", "appearance", "animation", "ariaLabel", "theme"] }, { kind: "directive", type: AnimationDirective, selector: "[simpoAnimation]", inputs: ["simpoAnimation"] }, { kind: "directive", type: BackgroundDirective, selector: "[simpoBackground]", inputs: ["simpoBackground", "scrollValue"] }, { kind: "directive", type: HoverDirective, selector: "[simpoHover]", outputs: ["hovering"] }, { kind: "pipe", type: SanitizeHtmlPipe, name: "sanitizeHtml" }, { kind: "directive", type: ContentFitDirective, selector: "[simpoLayout]", inputs: ["simpoLayout"] }, { kind: "directive", type: OverlayDirective, selector: "[simpoOverlay]", inputs: ["simpoOverlay"] }, { kind: "directive", type: ButtonDirectiveDirective, selector: "[simpoButtonDirective]", inputs: ["buttonStyle", "color", "scrollValue"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "directive", type: ContentTitleDirective, selector: "[simpoContentTitleSpace]", inputs: ["simpoContentTitleSpace"] }, { kind: "directive", type: SpacingHorizontalDirective, selector: "[spacingHorizontal]", inputs: ["spacingHorizontal", "isHeader"] }, { kind: "ngmodule", type: NgxSkeletonLoaderModule }] }); }
85
56
  }
86
57
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: PropertyListComponent, decorators: [{
87
58
  type: Component,
@@ -100,9 +71,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
100
71
  ButtonDirectiveDirective,
101
72
  MatIconModule,
102
73
  ContentTitleDirective,
103
- SpacingHorizontalDirective
104
- ], template: "<section class=\"total-container\" simpoHover (hovering)=\"showEditTabs($event)\" [id]=\"data?.id\">\n <div [id]=\"data?.id\">\n <div [simpoBackground]=\"styles?.background\" [id]=\"data?.id\">\n <div [id]=\"data?.id\" [simpoOverlay]=\"styles?.background\" [spacingHorizontal]=\"stylesLayout\" [simpoAnimation]=\"styles?.animation\"\n [simpoLayout]=\"styles?.layout\">\n <div [simpoContentTitleSpace]=\"headingSpace\" [id]=\"data?.id\" class=\"content-side\">\n <div *ngFor=\"let input of content?.inputText\">\n <div *ngFor=\"let text of data?.content?.inputText\" class=\"heading-large\"\n [innerHTML]=\"input.value | sanitizeHtml\"></div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 col-md-6\" *ngFor=\"let property of propertyList\">\n <ng-container *ngTemplateOutlet=\"propertyCards; context: {data: property}\"></ng-container>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\n </div>\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\n </div>\n\n</section>\n\n\n<ng-template #propertyCards let-property=\"data\">\n <div class=\"card\">\n <img [src]=\"property.imgUrl\" alt=\"\">\n <div class=\"p-15\">\n <div class=\"property-name\">\n <div class=\"left-side\">\n <img [src]=\"property.icon\" alt=\"\">\n <div class=\"text-left\">\n <div class=\"property-name-text\">{{property.name}}</div>\n <div class=\"location\">{{property.location}}</div>\n </div>\n </div>\n <div class=\"right-side\" *ngIf=\"property.underConstruction\">\n <mat-icon>build</mat-icon>\n <div>Under Construction</div>\n </div>\n </div>\n <div class=\"stats-area\">\n <div class=\"single-stat\">\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/600863c1738056517087return.png\" alt=\"\">\n <div class=\"stat-number\">{{property.return}}% <span>Annual Returns</span></div>\n </div>\n <div class=\"single-stat justify-center\">\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/600863c1738056517087return.png\" alt=\"\">\n <div class=\"stat-number\">{{property.IRR}}% <span>IRR</span></div>\n </div>\n </div>\n <div class=\"single-stat mt-15 w-100\">\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/600863c1738056517087return.png\" alt=\"\">\n <div class=\"stat-number\">{{property.growth}}% <span>Guaranteed annual growth</span></div>\n </div>\n <hr>\n <div class=\"bottom-area\">\n <div class=\"min-investment\">\n <p>{{property.minInvestment}} Lac</p>\n <div>Min.Investment</div>\n </div>\n <button class=\"button\" simpoButtonDirective [id]=\"(data?.id || '')+(data?.action?.buttons?.[0]?.id || '')\"\n [buttonStyle]=\"data?.action?.buttons?.[0]?.styles\" [color]=\"styles?.background?.accentColor\">Know\n More</button>\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [".hover_effect{position:absolute;width:100%;top:0;left:0;height:100%}.total-container{position:relative;height:auto}.card{padding:5px;border:2px solid rgba(0,0,0,.1)}.card img{height:37vh}.property-name{display:flex;align-items:center;justify-content:space-between}.p-15{padding:15px}.left-side{align-items:center;display:flex;gap:15px}.left-side img{height:65px;width:60px}.right-side{display:flex;gap:5px;color:#19a6c6;align-items:center}.stats-area{display:flex;margin-top:30px;justify-content:space-between}.single-stat{width:50%;display:flex;align-items:center;gap:20px}.single-stat img{height:20px;width:16px}.mt-15{margin-top:15px}hr{border-top:1px solid rgba(0,0,0,.7)}.stat-number{font-size:25px;color:#000000b3;font-weight:900;display:flex;align-items:center;gap:13px}.stat-number span{color:#000000b3;font-size:12px}.bottom-area{display:flex;justify-content:space-between;align-items:center}.min-investment{background:#f8a9381a;text-align:center;padding:.5rem 2rem;border-radius:5px}.min-investment p{margin-bottom:0;font-size:22px;font-weight:900}.min-investment div{color:#0006;font-size:14px;font-weight:600}.button{font-size:14px!important;padding:8px 20px;display:inline-flex;align-items:center;justify-content:center;width:max-content!important;font-weight:600}.property-name-text{font-size:22px;font-weight:700}.location{font-size:11px;color:gray}.justify-center{justify-content:center}.row{row-gap:20px}.text-left{text-align:left}\n"] }]
105
- }], ctorParameters: () => [], propDecorators: { data: [{
74
+ SpacingHorizontalDirective,
75
+ NgxSkeletonLoaderModule
76
+ ], template: "<section class=\"total-container\" simpoHover (hovering)=\"showEditTabs($event)\" [id]=\"data?.id\">\n <div [id]=\"data?.id\">\n <div [simpoBackground]=\"styles?.background\" [id]=\"data?.id\">\n <div [id]=\"data?.id\" [simpoOverlay]=\"styles?.background\" [spacingHorizontal]=\"stylesLayout\" [simpoAnimation]=\"styles?.animation\"\n [simpoLayout]=\"styles?.layout\">\n <div [simpoContentTitleSpace]=\"headingSpace\" [id]=\"data?.id\" class=\"content-side\">\n <div *ngFor=\"let input of content?.inputText\">\n <div *ngFor=\"let text of data?.content?.inputText\" class=\"heading-large\"\n [innerHTML]=\"input.value | sanitizeHtml\"></div>\n </div>\n </div>\n <div class=\"row\" *ngIf=\"!skelLoader\">\n <div class=\"col-12 col-md-6\" *ngFor=\"let property of propertyList\">\n <ng-container *ngTemplateOutlet=\"propertyCards; context: {data: property}\"></ng-container>\n </div>\n </div>\n <div class=\"row\" *ngIf=\"skelLoader\">\n <div class=\"col-md-4\" *ngFor=\"let skel of [1,2,3]\">\n <ng-container *ngTemplateOutlet=\"skeleton\"></ng-container>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\n </div>\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\n </div>\n\n</section>\n\n\n<ng-template #propertyCards let-property=\"data\">\n <div class=\"card\" (click)=\"redirectToPropertyDetails(property[0].propertyId)\">\n <img [src]=\"property[0]?.imgUrl[0]\" alt=\"\">\n <div class=\"p-15\">\n <div class=\"property-name\">\n <div class=\"left-side\">\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/950344c1738051599772icon2.png\" alt=\"\">\n <div class=\"text-left\">\n <div class=\"property-name-text\">{{property[0].name}}</div>\n <div class=\"location\">{{property[0].location}}</div>\n </div>\n </div>\n <!-- <div class=\"right-side\" *ngIf=\"property.underConstruction\">\n <mat-icon>build</mat-icon>\n <div>Under Construction</div>\n </div> -->\n </div>\n <div class=\"stats-area\">\n <div class=\"single-stat\">\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/600863c1738056517087return.png\" alt=\"\">\n <div class=\"stat-number\">{{property[1]?.annualReturn ?? '0'}} <span>Annual Returns</span></div>\n </div>\n <div class=\"single-stat justify-center\">\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/600863c1738056517087return.png\" alt=\"\">\n <div class=\"stat-number\">{{property[1]?.irr ?? '0'}} <span>IRR</span></div>\n </div>\n </div>\n <div class=\"single-stat mt-15 w-100\">\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/600863c1738056517087return.png\" alt=\"\">\n <div class=\"stat-number\"> {{property[1]?.guaranteedAnnualCapitalGrowth ?? '0'}}<span>Guaranteed annual growth</span></div>\n </div>\n <hr>\n <div class=\"bottom-area\">\n <div class=\"min-investment\">\n <p>{{property[0]?.minimumInvestment ?? '0'}}</p>\n <div>Min.Investment (Sq.ft)</div>\n </div>\n <button class=\"button\" simpoButtonDirective [id]=\"(data?.id || '')+(data?.action?.buttons?.[0]?.id || '')\"\n [buttonStyle]=\"data?.action?.buttons?.[0]?.styles\" [color]=\"styles?.background?.accentColor\">Know\n More</button>\n </div>\n </div>\n </div>\n</ng-template>\n\n<ng-template #skeleton>\n <ngx-skeleton-loader count=\"1\" appearance=\"circle\" [theme]=\"{\n width: '100%',\n height: '40vh',\n 'border-radius': '10px',\n 'position': 'relative',\n 'right': '5px'\n }\">\n </ngx-skeleton-loader>\n <div class=\"second-section-wrapper\">\n <div class=\"wrapper\">\n <ngx-skeleton-loader [theme]=\"{\n width: '100%',\n 'border-radius': '0',\n height: '15px',\n 'margin-bottom': '10px'\n }\"></ngx-skeleton-loader>\n </div>\n <div class=\"wrapper\">\n <ngx-skeleton-loader [theme]=\"{\n width: '90%',\n 'border-radius': '0',\n height: '15px',\n 'margin-bottom': '10px',\n 'display' : 'flex'\n }\"></ngx-skeleton-loader>\n </div>\n <div class=\"wrapper\">\n <ngx-skeleton-loader [theme]=\"{\n width: '60%',\n 'border-radius': '0',\n height: '15px',\n 'margin-bottom': '10px',\n 'display' : 'flex'\n }\"></ngx-skeleton-loader>\n </div>\n </div>\n\n</ng-template>\n", styles: [".hover_effect{position:absolute;width:100%;top:0;left:0;height:100%}.total-container{position:relative;height:auto}.card{padding:5px;border:2px solid rgba(0,0,0,.1)}.card img{height:37vh}.property-name{display:flex;align-items:center;justify-content:space-between}.p-15{padding:15px}.left-side{align-items:center;display:flex;gap:15px}.left-side img{height:65px;width:60px}.right-side{display:flex;gap:5px;color:#19a6c6;align-items:center}.stats-area{display:flex;margin-top:30px;justify-content:space-between}.single-stat{width:50%;display:flex;align-items:center;gap:20px}.single-stat img{height:20px;width:16px}.mt-15{margin-top:15px}hr{border-top:1px solid rgba(0,0,0,.7)}.stat-number{font-size:25px;color:#000000b3;font-weight:900;display:flex;align-items:center;gap:13px}.stat-number span{color:#000000b3;font-size:12px}.bottom-area{display:flex;justify-content:space-between;align-items:center}.min-investment{background:#f8a9381a;text-align:center;padding:.5rem 2rem;border-radius:5px}.min-investment p{margin-bottom:0;font-size:22px;font-weight:900;text-align:left}.min-investment div{color:#0006;font-size:14px;font-weight:600}.button{font-size:14px!important;padding:8px 20px;display:inline-flex;align-items:center;justify-content:center;width:max-content!important;font-weight:600}.property-name-text{font-size:22px;font-weight:700}.location{font-size:11px;color:gray}.justify-center{justify-content:center}.row{row-gap:20px}.text-left{text-align:left}.second-section-wrapper{width:100%;height:auto;flex:1}.wrapper{width:100%;flex:1}\n"] }]
77
+ }], ctorParameters: () => [{ type: i1.RestService }, { type: i2.Router }], propDecorators: { data: [{
106
78
  type: Input
107
79
  }], index: [{
108
80
  type: Input
@@ -113,4 +85,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
113
85
  }], customClass: [{
114
86
  type: Input
115
87
  }] } });
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL3Byb3BlcnR5LWxpc3QvcHJvcGVydHktbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL3Byb3BlcnR5LWxpc3QvcHJvcGVydHktbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUV6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQTtBQUN4RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUE7QUFFaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDckUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDbEYsT0FBTyxXQUFXLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNENB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c0JBQXNCO3dCQUN0Qix3QkFBd0I7d0JBQ3hCLGFBQWE7d0JBQ2IscUJBQXFCO3dCQUNyQiwwQkFBMEI7cUJBQzNCO3dEQU1RLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQcm9wZXJ0eUxpc3RDb250ZW50TW9kYWwsIFByb3BlcnR5TGlzdE1vZGFsLCBQcm9wZXJ0eUxpc3RTdHlsZXNNb2RhbCB9IGZyb20gJy4vcHJvcGVydHktbGlzdC5tb2RhbCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTaW1wb0NvbXBvbmVudE1vZHVsZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvaW5kZXgnO1xuaW1wb3J0IHsgQW5pbWF0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2FuaW1hdGlvbi1kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSG92ZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvaG92ZXItZWxlbWVudC1kaXJlY3RpdmUnXG5pbXBvcnQgeyBCYWNrZ3JvdW5kRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2JhY2tncm91bmQtZGlyZWN0aXZlJztcbmltcG9ydCB7IENvbG9yRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2NvbG9yLmRpcmVjdGl2ZSdcbmltcG9ydCB7IExheU91dE1vZGVsIH0gZnJvbSAnLi4vLi4vc3R5bGVzL3N0eWxlLm1vZGVsJztcbmltcG9ydCB7IFNhbml0aXplSHRtbFBpcGUgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zYW5pdGl6ZUh0bWwnO1xuaW1wb3J0IHsgQ29udGVudEZpdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9jb250ZW50LWZpdC1kaXJlY3RpdmUnO1xuaW1wb3J0IHsgT3ZlcmxheURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9vdmVybGF5LWRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBTcGFjaW5nQXJvdW5kRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL3NwYWNpbmctYXJvdW5kLmRpcmVjdGl2ZSc7XG5pbXBvcnQgQmFzZVNlY3Rpb24gZnJvbSAnLi4vQmFzZVNlY3Rpb24nO1xuaW1wb3J0IHsgQnV0dG9uRGlyZWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2J1dHRvbi1kaXJlY3RpdmUuZGlyZWN0aXZlJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IFNQQUNJTkcgfSBmcm9tICcuLi8uLi9zdHlsZXMvaW5kZXgnO1xuaW1wb3J0IHsgQ29udGVudFRpdGxlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2NvbnRlbnQtdGl0bGUtc3BhY2luZy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgU3BhY2luZ0hvcml6b250YWxEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvc3BhY2luZy1ob3Jpem9udGFsLmRpcmVjdGl2ZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NpbXBvLXByb3BlcnR5LWxpc3QnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFNpbXBvQ29tcG9uZW50TW9kdWxlLFxuICAgIEFuaW1hdGlvbkRpcmVjdGl2ZSxcbiAgICBCYWNrZ3JvdW5kRGlyZWN0aXZlLFxuICAgIEhvdmVyRGlyZWN0aXZlLFxuICAgIENvbG9yRGlyZWN0aXZlLFxuICAgIFNhbml0aXplSHRtbFBpcGUsXG4gICAgQ29udGVudEZpdERpcmVjdGl2ZSxcbiAgICBPdmVybGF5RGlyZWN0aXZlLFxuICAgIFNwYWNpbmdBcm91bmREaXJlY3RpdmUsXG4gICAgQnV0dG9uRGlyZWN0aXZlRGlyZWN0aXZlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgQ29udGVudFRpdGxlRGlyZWN0aXZlLFxuICAgIFNwYWNpbmdIb3Jpem9udGFsRGlyZWN0aXZlXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9wZXJ0eS1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3Byb3BlcnR5LWxpc3QuY29tcG9uZW50LmNzcydcbn0pXG5leHBvcnQgY2xhc3MgUHJvcGVydHlMaXN0Q29tcG9uZW50IGV4dGVuZHMgQmFzZVNlY3Rpb24gaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBJbnB1dCgpIGRhdGE/OiBQcm9wZXJ0eUxpc3RNb2RhbDtcbiAgQElucHV0KCkgaW5kZXg/OiBudW1iZXI7XG4gIEBJbnB1dCgpIGVkaXQ/OiBib29sZWFuO1xuICBASW5wdXQoKSBkZWxldGU/OiBib29sZWFuO1xuICBASW5wdXQoKSBjdXN0b21DbGFzcz86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgc3R5bGVzPzogUHJvcGVydHlMaXN0U3R5bGVzTW9kYWw7XG4gIGNvbnRlbnQ/OiBQcm9wZXJ0eUxpc3RDb250ZW50TW9kYWw7XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zdHlsZXMgPSB0aGlzLmRhdGE/LnN0eWxlcztcbiAgICB0aGlzLmNvbnRlbnQgPSB0aGlzLmRhdGE/LmNvbnRlbnQ7XG4gIH1cblxuICBwcm9wZXJ0eUxpc3Q6IGFueVtdID0gW1xuICAgIHtcbiAgICAgIGltZ1VybDogJ2h0dHBzOi8vcHJvZC1zaW1wby5zMy5hcC1zb3V0aC0xLmFtYXpvbmF3cy5jb20vcHJvZC1pbWFnZXMvNjA3OTIzYzE3Mzc2MjcwNzcwMDVpbWFnZSUyMCUyODQlMjkucG5nJyxcbiAgICAgIG5hbWU6ICdBbmFudGEgT25lJyxcbiAgICAgIGljb246ICdodHRwczovL3Byb2Qtc2ltcG8uczMuYXAtc291dGgtMS5hbWF6b25hd3MuY29tL3Byb2QtaW1hZ2VzLzk1MDM0NGMxNzM4MDUxNTk5NzcyaWNvbjIucG5nJyxcbiAgICAgIGxvY2F0aW9uOiAnUlJSIEh5ZGVyYWJhZCwgVGVsYW5naGFuYScsXG4gICAgICB1bmRlckNvbnN0cnVjdGlvbjogdHJ1ZSxcbiAgICAgIHJldHVybjogMTAsXG4gICAgICBJUlI6IDE4LFxuICAgICAgZ3Jvd3RoOiA1LFxuICAgICAgbWluSW52ZXN0bWVudDogNVxuICAgIH0sXG4gICAge1xuICAgICAgaW1nVXJsOiAnaHR0cHM6Ly9wcm9kLXNpbXBvLnMzLmFwLXNvdXRoLTEuYW1hem9uYXdzLmNvbS9wcm9kLWltYWdlcy85NzgzMDljMTczODA1MTMzMDEwOHByb3BlcnR5Mi5wbmcnLFxuICAgICAgbmFtZTogJ0FuYW50YSBIaWxscyAtIDUwIEFjcmUgUHJvcGVydHknLFxuICAgICAgaWNvbjogJ2h0dHBzOi8vcHJvZC1zaW1wby5zMy5hcC1zb3V0aC0xLmFtYXpvbmF3cy5jb20vcHJvZC1pbWFnZXMvOTUwMzQ0YzE3MzgwNTE1OTk3NzJpY29uMi5wbmcnLFxuICAgICAgbG9jYXRpb246ICdDaGlra2FtZ3VydSwgS2FybmF0YWthJyxcbiAgICAgIHVuZGVyQ29uc3RydWN0aW9uOiBmYWxzZSxcbiAgICAgIHJldHVybjogMTAsXG4gICAgICBJUlI6IDE4LFxuICAgICAgZ3Jvd3RoOiA1LFxuICAgICAgbWluSW52ZXN0bWVudDogMi41XG4gICAgfSxcbiAgICB7XG4gICAgICBpbWdVcmw6ICdodHRwczovL3Byb2Qtc2ltcG8uczMuYXAtc291dGgtMS5hbWF6b25hd3MuY29tL3Byb2QtaW1hZ2VzLzk3ODMwOWMxNzM4MDUxMzMwMTA4cHJvcGVydHkyLnBuZycsXG4gICAgICBuYW1lOiAnQW5hbnRhIEhpbGxzIC0gNTAgQWNyZSBQcm9wZXJ0eScsXG4gICAgICBpY29uOiAnaHR0cHM6Ly9wcm9kLXNpbXBvLnMzLmFwLXNvdXRoLTEuYW1hem9uYXdzLmNvbS9wcm9kLWltYWdlcy85NTAzNDRjMTczODA1MTU5OTc3Mmljb24yLnBuZycsXG4gICAgICBsb2NhdGlvbjogJ0NoaWtrYW1ndXJ1LCBLYXJuYXRha2EnLFxuICAgICAgdW5kZXJDb25zdHJ1Y3Rpb246IGZhbHNlLFxuICAgICAgcmV0dXJuOiAxMCxcbiAgICAgIElSUjogMTgsXG4gICAgICBncm93dGg6IDUsXG4gICAgICBtaW5JbnZlc3RtZW50OiAyLjVcbiAgICB9LFxuICAgIHtcbiAgICAgIGltZ1VybDogJ2h0dHBzOi8vcHJvZC1zaW1wby5zMy5hcC1zb3V0aC0xLmFtYXpvbmF3cy5jb20vcHJvZC1pbWFnZXMvNjA3OTIzYzE3Mzc2MjcwNzcwMDVpbWFnZSUyMCUyODQlMjkucG5nJyxcbiAgICAgIG5hbWU6ICdBbmFudGEgT25lJyxcbiAgICAgIGljb246ICdodHRwczovL3Byb2Qtc2ltcG8uczMuYXAtc291dGgtMS5hbWF6b25hd3MuY29tL3Byb2QtaW1hZ2VzLzk1MDM0NGMxNzM4MDUxNTk5NzcyaWNvbjIucG5nJyxcbiAgICAgIGxvY2F0aW9uOiAnUlJSIEh5ZGVyYWJhZCwgVGVsYW5naGFuYScsXG4gICAgICB1bmRlckNvbnN0cnVjdGlvbjogdHJ1ZSxcbiAgICAgIHJldHVybjogMTAsXG4gICAgICBJUlI6IDE4LFxuICAgICAgZ3Jvd3RoOiA1LFxuICAgICAgbWluSW52ZXN0bWVudDogNVxuICAgIH1cbiAgXVxuXG4gIGdldCBzdHlsZXNMYXlvdXQoKSB7XG4gICAgcmV0dXJuIHsgLi4udGhpcy5zdHlsZXM/LmxheW91dCB9IGFzIExheU91dE1vZGVsO1xuICB9XG5cbiAgICBnZXQgaGVhZGluZ1NwYWNlKCkge1xuICAgICAgcmV0dXJuIHRoaXMuc3R5bGVzPy5sYXlvdXQuaGVhZGluZ1NwYWNpbmcgYXMgU1BBQ0lORztcbiAgICB9XG59XG4iLCI8c2VjdGlvbiBjbGFzcz1cInRvdGFsLWNvbnRhaW5lclwiIHNpbXBvSG92ZXIgKGhvdmVyaW5nKT1cInNob3dFZGl0VGFicygkZXZlbnQpXCIgW2lkXT1cImRhdGE/LmlkXCI+XG4gIDxkaXYgW2lkXT1cImRhdGE/LmlkXCI+XG4gICAgPGRpdiBbc2ltcG9CYWNrZ3JvdW5kXT1cInN0eWxlcz8uYmFja2dyb3VuZFwiIFtpZF09XCJkYXRhPy5pZFwiPlxuICAgICAgPGRpdiBbaWRdPVwiZGF0YT8uaWRcIiBbc2ltcG9PdmVybGF5XT1cInN0eWxlcz8uYmFja2dyb3VuZFwiIFtzcGFjaW5nSG9yaXpvbnRhbF09XCJzdHlsZXNMYXlvdXRcIiBbc2ltcG9BbmltYXRpb25dPVwic3R5bGVzPy5hbmltYXRpb25cIlxuICAgICAgICBbc2ltcG9MYXlvdXRdPVwic3R5bGVzPy5sYXlvdXRcIj5cbiAgICAgICAgPGRpdiBbc2ltcG9Db250ZW50VGl0bGVTcGFjZV09XCJoZWFkaW5nU3BhY2VcIiBbaWRdPVwiZGF0YT8uaWRcIiBjbGFzcz1cImNvbnRlbnQtc2lkZVwiPlxuICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGlucHV0IG9mIGNvbnRlbnQ/LmlucHV0VGV4dFwiPlxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgdGV4dCBvZiBkYXRhPy5jb250ZW50Py5pbnB1dFRleHRcIiBjbGFzcz1cImhlYWRpbmctbGFyZ2VcIlxuICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cImlucHV0LnZhbHVlIHwgc2FuaXRpemVIdG1sXCI+PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtbWQtNlwiICpuZ0Zvcj1cImxldCBwcm9wZXJ0eSBvZiBwcm9wZXJ0eUxpc3RcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwcm9wZXJ0eUNhcmRzOyBjb250ZXh0OiB7ZGF0YTogcHJvcGVydHl9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBlZGl0fVwiICpuZ0lmPVwic2hvd0VkaXRvcnNcIj5cbiAgICA8c2ltcG8taG92ZXItZWxlbWVudHMgW2RhdGFdPVwiZGF0YVwiIFtpbmRleF09XCJpbmRleFwiIFtlZGl0T3B0aW9uc109XCJlZGl0XCI+PC9zaW1wby1ob3Zlci1lbGVtZW50cz5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCJzaG93RGVsZXRlXCIgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBkZWxldGV9XCI+XG4gICAgPHNpbXBvLWRlbGV0ZS1ob3Zlci1lbGVtZW50IFtkYXRhXT1cImRhdGFcIiBbaW5kZXhdPVwiaW5kZXhcIj48L3NpbXBvLWRlbGV0ZS1ob3Zlci1lbGVtZW50PlxuICA8L2Rpdj5cblxuPC9zZWN0aW9uPlxuXG5cbjxuZy10ZW1wbGF0ZSAjcHJvcGVydHlDYXJkcyBsZXQtcHJvcGVydHk9XCJkYXRhXCI+XG4gIDxkaXYgY2xhc3M9XCJjYXJkXCI+XG4gICAgPGltZyBbc3JjXT1cInByb3BlcnR5LmltZ1VybFwiIGFsdD1cIlwiPlxuICAgIDxkaXYgY2xhc3M9XCJwLTE1XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicHJvcGVydHktbmFtZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdC1zaWRlXCI+XG4gICAgICAgICAgPGltZyBbc3JjXT1cInByb3BlcnR5Lmljb25cIiBhbHQ9XCJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1sZWZ0XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvcGVydHktbmFtZS10ZXh0XCI+e3twcm9wZXJ0eS5uYW1lfX08L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsb2NhdGlvblwiPnt7cHJvcGVydHkubG9jYXRpb259fTwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0LXNpZGVcIiAqbmdJZj1cInByb3BlcnR5LnVuZGVyQ29uc3RydWN0aW9uXCI+XG4gICAgICAgICAgPG1hdC1pY29uPmJ1aWxkPC9tYXQtaWNvbj5cbiAgICAgICAgICA8ZGl2PlVuZGVyIENvbnN0cnVjdGlvbjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInN0YXRzLWFyZWFcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNpbmdsZS1zdGF0XCI+XG4gICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL3Byb2Qtc2ltcG8uczMuYXAtc291dGgtMS5hbWF6b25hd3MuY29tL3Byb2QtaW1hZ2VzLzYwMDg2M2MxNzM4MDU2NTE3MDg3cmV0dXJuLnBuZ1wiIGFsdD1cIlwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0LW51bWJlclwiPnt7cHJvcGVydHkucmV0dXJufX0lIDxzcGFuPkFubnVhbCBSZXR1cm5zPC9zcGFuPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNpbmdsZS1zdGF0IGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL3Byb2Qtc2ltcG8uczMuYXAtc291dGgtMS5hbWF6b25hd3MuY29tL3Byb2QtaW1hZ2VzLzYwMDg2M2MxNzM4MDU2NTE3MDg3cmV0dXJuLnBuZ1wiIGFsdD1cIlwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0LW51bWJlclwiPnt7cHJvcGVydHkuSVJSfX0lIDxzcGFuPklSUjwvc3Bhbj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzaW5nbGUtc3RhdCBtdC0xNSB3LTEwMFwiPlxuICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vcHJvZC1zaW1wby5zMy5hcC1zb3V0aC0xLmFtYXpvbmF3cy5jb20vcHJvZC1pbWFnZXMvNjAwODYzYzE3MzgwNTY1MTcwODdyZXR1cm4ucG5nXCIgYWx0PVwiXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0LW51bWJlclwiPnt7cHJvcGVydHkuZ3Jvd3RofX0lIDxzcGFuPkd1YXJhbnRlZWQgYW5udWFsIGdyb3d0aDwvc3Bhbj48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGhyPlxuICAgICAgPGRpdiBjbGFzcz1cImJvdHRvbS1hcmVhXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaW4taW52ZXN0bWVudFwiPlxuICAgICAgICAgIDxwPnt7cHJvcGVydHkubWluSW52ZXN0bWVudH19IExhYzwvcD5cbiAgICAgICAgICA8ZGl2Pk1pbi5JbnZlc3RtZW50PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uXCIgc2ltcG9CdXR0b25EaXJlY3RpdmUgW2lkXT1cIihkYXRhPy5pZCB8fCAnJykrKGRhdGE/LmFjdGlvbj8uYnV0dG9ucz8uWzBdPy5pZCB8fCAnJylcIlxuICAgICAgICAgIFtidXR0b25TdHlsZV09XCJkYXRhPy5hY3Rpb24/LmJ1dHRvbnM/LlswXT8uc3R5bGVzXCIgW2NvbG9yXT1cInN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj5Lbm93XG4gICAgICAgICAgTW9yZTwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL3Byb3BlcnR5LWxpc3QvcHJvcGVydHktbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL3Byb3BlcnR5LWxpc3QvcHJvcGVydHktbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUV6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQTtBQUN4RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUE7QUFFaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDckUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDbEYsT0FBTyxXQUFXLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDdEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXZELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBRzFGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7OztBQTBCOUQsTUFBTSxPQUFPLHFCQUFzQixTQUFRLFdBQVc7SUFRcEQsWUFBb0IsV0FBd0IsRUFDbEMsTUFBYztRQUV0QixLQUFLLEVBQUUsQ0FBQztRQUhVLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ2xDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFjeEIsZUFBVSxHQUFTLEtBQUssQ0FBQztJQVh6QixDQUFDO0lBS0QsUUFBUTtRQUNOLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7UUFDaEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQztRQUNsQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUlELGVBQWU7UUFDYixJQUFJLENBQUMsVUFBVSxHQUFDLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ3hELElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQTtZQUMvQixJQUFJLENBQUMsVUFBVSxHQUFDLEtBQUssQ0FBQztRQUV4QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFJRCxJQUFJLFlBQVk7UUFDZCxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBaUIsQ0FBQztJQUNuRCxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxjQUF5QixDQUFDO0lBQ3ZELENBQUM7SUFFRCx5QkFBeUIsQ0FBQyxVQUFrQjtRQUMxQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUMsV0FBVyxFQUFFLEVBQUMsRUFBRSxFQUFFLFVBQVUsRUFBQyxFQUFDLENBQUMsQ0FBQztJQUNyRSxDQUFDOzhHQTlDVSxxQkFBcUI7a0dBQXJCLHFCQUFxQiw0TUNoRGxDLDIySkF1SEEsb2tERDNGSSxZQUFZLG9nQkFDWixXQUFXLDhCQUNYLG9CQUFvQixvaEJBQ3BCLGtCQUFrQix5RkFDbEIsbUJBQW1CLDBHQUNuQixjQUFjLDJFQUVkLGdCQUFnQixxREFDaEIsbUJBQW1CLG1GQUNuQixnQkFBZ0IscUZBRWhCLHdCQUF3QixtSEFDeEIsYUFBYSwrQkFDYixxQkFBcUIseUdBQ3JCLDBCQUEwQiwwR0FDMUIsdUJBQXVCOzsyRkFLZCxxQkFBcUI7a0JBeEJqQyxTQUFTOytCQUNFLHFCQUFxQixjQUNuQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLG9CQUFvQjt3QkFDcEIsa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLGNBQWM7d0JBQ2QsY0FBYzt3QkFDZCxnQkFBZ0I7d0JBQ2hCLG1CQUFtQjt3QkFDbkIsZ0JBQWdCO3dCQUNoQixzQkFBc0I7d0JBQ3RCLHdCQUF3Qjt3QkFDeEIsYUFBYTt3QkFDYixxQkFBcUI7d0JBQ3JCLDBCQUEwQjt3QkFDMUIsdUJBQXVCO3FCQUN4QjtxR0FNUSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUHJvcGVydHlMaXN0Q29udGVudE1vZGFsLCBQcm9wZXJ0eUxpc3RNb2RhbCwgUHJvcGVydHlMaXN0U3R5bGVzTW9kYWwgfSBmcm9tICcuL3Byb3BlcnR5LWxpc3QubW9kYWwnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU2ltcG9Db21wb25lbnRNb2R1bGUgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2luZGV4JztcbmltcG9ydCB7IEFuaW1hdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9hbmltYXRpb24tZGlyZWN0aXZlJztcbmltcG9ydCB7IEhvdmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2hvdmVyLWVsZW1lbnQtZGlyZWN0aXZlJ1xuaW1wb3J0IHsgQmFja2dyb3VuZERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9iYWNrZ3JvdW5kLWRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBDb2xvckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9jb2xvci5kaXJlY3RpdmUnXG5pbXBvcnQgeyBMYXlPdXRNb2RlbCB9IGZyb20gJy4uLy4uL3N0eWxlcy9zdHlsZS5tb2RlbCc7XG5pbXBvcnQgeyBTYW5pdGl6ZUh0bWxQaXBlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc2FuaXRpemVIdG1sJztcbmltcG9ydCB7IENvbnRlbnRGaXREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvY29udGVudC1maXQtZGlyZWN0aXZlJztcbmltcG9ydCB7IE92ZXJsYXlEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvb3ZlcmxheS1kaXJlY3RpdmUnO1xuaW1wb3J0IHsgU3BhY2luZ0Fyb3VuZERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9zcGFjaW5nLWFyb3VuZC5kaXJlY3RpdmUnO1xuaW1wb3J0IEJhc2VTZWN0aW9uIGZyb20gJy4uL0Jhc2VTZWN0aW9uJztcbmltcG9ydCB7IEJ1dHRvbkRpcmVjdGl2ZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9idXR0b24tZGlyZWN0aXZlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBTUEFDSU5HIH0gZnJvbSAnLi4vLi4vc3R5bGVzL2luZGV4JztcbmltcG9ydCB7IENvbnRlbnRUaXRsZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9jb250ZW50LXRpdGxlLXNwYWNpbmcuZGlyZWN0aXZlJztcbmltcG9ydCB7IFNwYWNpbmdIb3Jpem9udGFsRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL3NwYWNpbmctaG9yaXpvbnRhbC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUmVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE5neFNrZWxldG9uTG9hZGVyTW9kdWxlIH0gZnJvbSAnbmd4LXNrZWxldG9uLWxvYWRlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NpbXBvLXByb3BlcnR5LWxpc3QnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFNpbXBvQ29tcG9uZW50TW9kdWxlLFxuICAgIEFuaW1hdGlvbkRpcmVjdGl2ZSxcbiAgICBCYWNrZ3JvdW5kRGlyZWN0aXZlLFxuICAgIEhvdmVyRGlyZWN0aXZlLFxuICAgIENvbG9yRGlyZWN0aXZlLFxuICAgIFNhbml0aXplSHRtbFBpcGUsXG4gICAgQ29udGVudEZpdERpcmVjdGl2ZSxcbiAgICBPdmVybGF5RGlyZWN0aXZlLFxuICAgIFNwYWNpbmdBcm91bmREaXJlY3RpdmUsXG4gICAgQnV0dG9uRGlyZWN0aXZlRGlyZWN0aXZlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgQ29udGVudFRpdGxlRGlyZWN0aXZlLFxuICAgIFNwYWNpbmdIb3Jpem9udGFsRGlyZWN0aXZlLFxuICAgIE5neFNrZWxldG9uTG9hZGVyTW9kdWxlXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9wZXJ0eS1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3Byb3BlcnR5LWxpc3QuY29tcG9uZW50LmNzcydcbn0pXG5leHBvcnQgY2xhc3MgUHJvcGVydHlMaXN0Q29tcG9uZW50IGV4dGVuZHMgQmFzZVNlY3Rpb24gaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBJbnB1dCgpIGRhdGE/OiBQcm9wZXJ0eUxpc3RNb2RhbDtcbiAgQElucHV0KCkgaW5kZXg/OiBudW1iZXI7XG4gIEBJbnB1dCgpIGVkaXQ/OiBib29sZWFuO1xuICBASW5wdXQoKSBkZWxldGU/OiBib29sZWFuO1xuICBASW5wdXQoKSBjdXN0b21DbGFzcz86IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlc3RTZXJ2aWNlOiBSZXN0U2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBzdHlsZXM/OiBQcm9wZXJ0eUxpc3RTdHlsZXNNb2RhbDtcbiAgY29udGVudD86IFByb3BlcnR5TGlzdENvbnRlbnRNb2RhbDtcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnN0eWxlcyA9IHRoaXMuZGF0YT8uc3R5bGVzO1xuICAgIHRoaXMuY29udGVudCA9IHRoaXMuZGF0YT8uY29udGVudDtcbiAgICB0aGlzLmdldFByb3BlcnR5TGlzdCgpO1xuICB9XG5cbiAgc2tlbExvYWRlcjpib29sZWFuPWZhbHNlO1xuXG4gIGdldFByb3BlcnR5TGlzdCgpIHtcbiAgICB0aGlzLnNrZWxMb2FkZXI9dHJ1ZTtcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldFByb3BlcnR5TGlzdCgpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMucHJvcGVydHlMaXN0ID0gcmVzLmNvbnRlbnRcbiAgICAgIHRoaXMuc2tlbExvYWRlcj1mYWxzZTtcblxuICAgIH0pO1xuICB9XG5cbiAgcHJvcGVydHlMaXN0OiBhbnk7XG5cbiAgZ2V0IHN0eWxlc0xheW91dCgpIHtcbiAgICByZXR1cm4geyAuLi50aGlzLnN0eWxlcz8ubGF5b3V0IH0gYXMgTGF5T3V0TW9kZWw7XG4gIH1cblxuICBnZXQgaGVhZGluZ1NwYWNlKCkge1xuICAgIHJldHVybiB0aGlzLnN0eWxlcz8ubGF5b3V0LmhlYWRpbmdTcGFjaW5nIGFzIFNQQUNJTkc7XG4gIH1cblxuICByZWRpcmVjdFRvUHJvcGVydHlEZXRhaWxzKHByb3BlcnR5SWQ6IHN0cmluZykge1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtgZGV0YWlsc2BdLCB7cXVlcnlQYXJhbXM6IHtpZDogcHJvcGVydHlJZH19KTtcbiAgfVxuXG59XG4iLCI8c2VjdGlvbiBjbGFzcz1cInRvdGFsLWNvbnRhaW5lclwiIHNpbXBvSG92ZXIgKGhvdmVyaW5nKT1cInNob3dFZGl0VGFicygkZXZlbnQpXCIgW2lkXT1cImRhdGE/LmlkXCI+XG4gIDxkaXYgW2lkXT1cImRhdGE/LmlkXCI+XG4gICAgPGRpdiBbc2ltcG9CYWNrZ3JvdW5kXT1cInN0eWxlcz8uYmFja2dyb3VuZFwiIFtpZF09XCJkYXRhPy5pZFwiPlxuICAgICAgPGRpdiBbaWRdPVwiZGF0YT8uaWRcIiBbc2ltcG9PdmVybGF5XT1cInN0eWxlcz8uYmFja2dyb3VuZFwiIFtzcGFjaW5nSG9yaXpvbnRhbF09XCJzdHlsZXNMYXlvdXRcIiBbc2ltcG9BbmltYXRpb25dPVwic3R5bGVzPy5hbmltYXRpb25cIlxuICAgICAgICBbc2ltcG9MYXlvdXRdPVwic3R5bGVzPy5sYXlvdXRcIj5cbiAgICAgICAgPGRpdiBbc2ltcG9Db250ZW50VGl0bGVTcGFjZV09XCJoZWFkaW5nU3BhY2VcIiBbaWRdPVwiZGF0YT8uaWRcIiBjbGFzcz1cImNvbnRlbnQtc2lkZVwiPlxuICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGlucHV0IG9mIGNvbnRlbnQ/LmlucHV0VGV4dFwiPlxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgdGV4dCBvZiBkYXRhPy5jb250ZW50Py5pbnB1dFRleHRcIiBjbGFzcz1cImhlYWRpbmctbGFyZ2VcIlxuICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cImlucHV0LnZhbHVlIHwgc2FuaXRpemVIdG1sXCI+PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCIhc2tlbExvYWRlclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLW1kLTZcIiAqbmdGb3I9XCJsZXQgcHJvcGVydHkgb2YgcHJvcGVydHlMaXN0XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicHJvcGVydHlDYXJkczsgY29udGV4dDoge2RhdGE6IHByb3BlcnR5fVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwic2tlbExvYWRlclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiICpuZ0Zvcj1cImxldCBza2VsIG9mIFsxLDIsM11cIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJza2VsZXRvblwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZWRpdH1cIiAqbmdJZj1cInNob3dFZGl0b3JzXCI+XG4gICAgPHNpbXBvLWhvdmVyLWVsZW1lbnRzIFtkYXRhXT1cImRhdGFcIiBbaW5kZXhdPVwiaW5kZXhcIiBbZWRpdE9wdGlvbnNdPVwiZWRpdFwiPjwvc2ltcG8taG92ZXItZWxlbWVudHM+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwic2hvd0RlbGV0ZVwiIFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZGVsZXRlfVwiPlxuICAgIDxzaW1wby1kZWxldGUtaG92ZXItZWxlbWVudCBbZGF0YV09XCJkYXRhXCIgW2luZGV4XT1cImluZGV4XCI+PC9zaW1wby1kZWxldGUtaG92ZXItZWxlbWVudD5cbiAgPC9kaXY+XG5cbjwvc2VjdGlvbj5cblxuXG48bmctdGVtcGxhdGUgI3Byb3BlcnR5Q2FyZHMgbGV0LXByb3BlcnR5PVwiZGF0YVwiPlxuICA8ZGl2IGNsYXNzPVwiY2FyZFwiIChjbGljayk9XCJyZWRpcmVjdFRvUHJvcGVydHlEZXRhaWxzKHByb3BlcnR5WzBdLnByb3BlcnR5SWQpXCI+XG4gICAgPGltZyBbc3JjXT1cInByb3BlcnR5WzBdPy5pbWdVcmxbMF1cIiBhbHQ9XCJcIj5cbiAgICA8ZGl2IGNsYXNzPVwicC0xNVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInByb3BlcnR5LW5hbWVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxlZnQtc2lkZVwiPlxuICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9wcm9kLXNpbXBvLnMzLmFwLXNvdXRoLTEuYW1hem9uYXdzLmNvbS9wcm9kLWltYWdlcy85NTAzNDRjMTczODA1MTU5OTc3Mmljb24yLnBuZ1wiIGFsdD1cIlwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWxlZnRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9wZXJ0eS1uYW1lLXRleHRcIj57e3Byb3BlcnR5WzBdLm5hbWV9fTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxvY2F0aW9uXCI+e3twcm9wZXJ0eVswXS5sb2NhdGlvbn19PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJyaWdodC1zaWRlXCIgKm5nSWY9XCJwcm9wZXJ0eS51bmRlckNvbnN0cnVjdGlvblwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5idWlsZDwvbWF0LWljb24+XG4gICAgICAgICAgPGRpdj5VbmRlciBDb25zdHJ1Y3Rpb248L2Rpdj5cbiAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwic3RhdHMtYXJlYVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2luZ2xlLXN0YXRcIj5cbiAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vcHJvZC1zaW1wby5zMy5hcC1zb3V0aC0xLmFtYXpvbmF3cy5jb20vcHJvZC1pbWFnZXMvNjAwODYzYzE3MzgwNTY1MTcwODdyZXR1cm4ucG5nXCIgYWx0PVwiXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN0YXQtbnVtYmVyXCI+e3twcm9wZXJ0eVsxXT8uYW5udWFsUmV0dXJuID8/ICcwJ319IDxzcGFuPkFubnVhbCBSZXR1cm5zPC9zcGFuPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNpbmdsZS1zdGF0IGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL3Byb2Qtc2ltcG8uczMuYXAtc291dGgtMS5hbWF6b25hd3MuY29tL3Byb2QtaW1hZ2VzLzYwMDg2M2MxNzM4MDU2NTE3MDg3cmV0dXJuLnBuZ1wiIGFsdD1cIlwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0LW51bWJlclwiPnt7cHJvcGVydHlbMV0/LmlyciAgPz8gJzAnfX0gPHNwYW4+SVJSPC9zcGFuPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInNpbmdsZS1zdGF0IG10LTE1IHctMTAwXCI+XG4gICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9wcm9kLXNpbXBvLnMzLmFwLXNvdXRoLTEuYW1hem9uYXdzLmNvbS9wcm9kLWltYWdlcy82MDA4NjNjMTczODA1NjUxNzA4N3JldHVybi5wbmdcIiBhbHQ9XCJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInN0YXQtbnVtYmVyXCI+IHt7cHJvcGVydHlbMV0/Lmd1YXJhbnRlZWRBbm51YWxDYXBpdGFsR3Jvd3RoID8/ICcwJ319PHNwYW4+R3VhcmFudGVlZCBhbm51YWwgZ3Jvd3RoPC9zcGFuPjwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8aHI+XG4gICAgICA8ZGl2IGNsYXNzPVwiYm90dG9tLWFyZWFcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pbi1pbnZlc3RtZW50XCI+XG4gICAgICAgICAgPHA+e3twcm9wZXJ0eVswXT8ubWluaW11bUludmVzdG1lbnQgID8/ICcwJ319PC9wPlxuICAgICAgICAgIDxkaXY+TWluLkludmVzdG1lbnQgKFNxLmZ0KTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvblwiIHNpbXBvQnV0dG9uRGlyZWN0aXZlIFtpZF09XCIoZGF0YT8uaWQgfHwgJycpKyhkYXRhPy5hY3Rpb24/LmJ1dHRvbnM/LlswXT8uaWQgfHwgJycpXCJcbiAgICAgICAgICBbYnV0dG9uU3R5bGVdPVwiZGF0YT8uYWN0aW9uPy5idXR0b25zPy5bMF0/LnN0eWxlc1wiIFtjb2xvcl09XCJzdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+S25vd1xuICAgICAgICAgIE1vcmU8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc2tlbGV0b24+XG4gIDxuZ3gtc2tlbGV0b24tbG9hZGVyIGNvdW50PVwiMVwiIGFwcGVhcmFuY2U9XCJjaXJjbGVcIiBbdGhlbWVdPVwie1xuICAgIHdpZHRoOiAnMTAwJScsXG4gICAgaGVpZ2h0OiAnNDB2aCcsXG4gICAgJ2JvcmRlci1yYWRpdXMnOiAnMTBweCcsXG4gICAgJ3Bvc2l0aW9uJzogJ3JlbGF0aXZlJyxcbiAgICAncmlnaHQnOiAnNXB4J1xuICB9XCI+XG4gIDwvbmd4LXNrZWxldG9uLWxvYWRlcj5cbiAgPGRpdiBjbGFzcz1cInNlY29uZC1zZWN0aW9uLXdyYXBwZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxuICAgICAgPG5neC1za2VsZXRvbi1sb2FkZXIgW3RoZW1lXT1cIntcbiAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAnYm9yZGVyLXJhZGl1cyc6ICcwJyxcbiAgICAgIGhlaWdodDogJzE1cHgnLFxuICAgICAgJ21hcmdpbi1ib3R0b20nOiAnMTBweCdcbiAgICB9XCI+PC9uZ3gtc2tlbGV0b24tbG9hZGVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XG4gICAgICA8bmd4LXNrZWxldG9uLWxvYWRlciBbdGhlbWVdPVwie1xuICAgICAgICB3aWR0aDogJzkwJScsXG4gICAgICAgICdib3JkZXItcmFkaXVzJzogJzAnLFxuICAgICAgICBoZWlnaHQ6ICcxNXB4JyxcbiAgICAgICAgJ21hcmdpbi1ib3R0b20nOiAnMTBweCcsXG4gICAgICAgICdkaXNwbGF5JyA6ICdmbGV4J1xuICAgICAgfVwiPjwvbmd4LXNrZWxldG9uLWxvYWRlcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxuICAgICAgPG5neC1za2VsZXRvbi1sb2FkZXIgW3RoZW1lXT1cIntcbiAgICAgICAgd2lkdGg6ICc2MCUnLFxuICAgICAgICAnYm9yZGVyLXJhZGl1cyc6ICcwJyxcbiAgICAgICAgaGVpZ2h0OiAnMTVweCcsXG4gICAgICAgICdtYXJnaW4tYm90dG9tJzogJzEwcHgnLFxuICAgICAgICAnZGlzcGxheScgOiAnZmxleCdcbiAgICAgIH1cIj48L25neC1za2VsZXRvbi1sb2FkZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG48L25nLXRlbXBsYXRlPlxuIl19