simpo-component-library 3.6.254 → 3.6.255

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 (24) hide show
  1. package/esm2022/lib/ecommerce/sections/authentication-required/authentication-required.component.mjs +2 -1
  2. package/esm2022/lib/ecommerce/sections/returns-calculator/returns-calculator.component.mjs +163 -19
  3. package/esm2022/lib/ecommerce/sections/scheme-details/scheme-details.component.mjs +124 -11
  4. package/esm2022/lib/ecommerce/sections/user-profile/user-profile.component.mjs +42 -15
  5. package/esm2022/lib/ecommerce/sections/verify-payment/verify-payment.component.mjs +43 -2
  6. package/esm2022/lib/sections/header-section/header-section.component.mjs +3 -3
  7. package/esm2022/lib/services/rest.service.mjs +47 -3
  8. package/esm2022/lib/services/storage.service.mjs +4 -1
  9. package/fesm2022/simpo-component-library.mjs +406 -41
  10. package/fesm2022/simpo-component-library.mjs.map +1 -1
  11. package/lib/ecommerce/sections/returns-calculator/returns-calculator.component.d.ts +28 -3
  12. package/lib/ecommerce/sections/scheme-details/scheme-details.component.d.ts +21 -2
  13. package/lib/ecommerce/sections/user-profile/user-profile.component.d.ts +6 -1
  14. package/lib/ecommerce/sections/verify-payment/verify-payment.component.d.ts +3 -0
  15. package/lib/sections/banner-carousel/banner-carousel.component.d.ts +2 -2
  16. package/lib/sections/carousel-banner/carousel-banner.component.d.ts +1 -1
  17. package/lib/sections/image-section/image-section.component.d.ts +2 -2
  18. package/lib/sections/logo-showcase/logo-showcase.component.d.ts +1 -1
  19. package/lib/sections/new-testimonials/new-testimonials.component.d.ts +1 -1
  20. package/lib/services/rest.service.d.ts +9 -1
  21. package/lib/services/storage.service.d.ts +1 -0
  22. package/package.json +1 -1
  23. package/simpo-component-library-3.6.255.tgz +0 -0
  24. package/simpo-component-library-3.6.254.tgz +0 -0
@@ -1,5 +1,5 @@
1
1
  import { CommonModule } from '@angular/common';
2
- import { Component, Input } from '@angular/core';
2
+ import { Component, Input, ViewChild } from '@angular/core';
3
3
  import { FormsModule, ReactiveFormsModule } from '@angular/forms';
4
4
  import { MatIcon } from '@angular/material/icon';
5
5
  import { SpacingHorizontalDirective } from '../../../directive/spacing-horizontal.directive';
@@ -15,25 +15,82 @@ import { TextEditorComponent } from '../../../elements/text-editor/text-editor.c
15
15
  import { ButtonEditorDirective } from '../../../directive/button-editor.directive';
16
16
  import * as i0 from "@angular/core";
17
17
  import * as i1 from ".././../../services/events.service";
18
- import * as i2 from "@angular/common";
19
- import * as i3 from "@angular/forms";
20
- import * as i4 from "../../../components/hover-elements/hover-elements.component";
21
- import * as i5 from "../../../components/delete-hover-element/delete-hover-element.component";
18
+ import * as i2 from "../../../services/rest.service";
19
+ import * as i3 from "@angular/material/dialog";
20
+ import * as i4 from "../../../services/storage.service";
21
+ import * as i5 from "@angular/common";
22
+ import * as i6 from "@angular/forms";
23
+ import * as i7 from "../../../components/hover-elements/hover-elements.component";
24
+ import * as i8 from "../../../components/delete-hover-element/delete-hover-element.component";
22
25
  export class ReturnsCalculatorComponent extends BaseSection {
23
- constructor(_eventService) {
26
+ constructor(_eventService, restService, matDialog, storageService) {
24
27
  super();
25
28
  this._eventService = _eventService;
29
+ this.restService = restService;
30
+ this.matDialog = matDialog;
31
+ this.storageService = storageService;
26
32
  this.selectedScheme = 'individual';
27
- this.monthlyAmount = 42000;
28
- this.maxAmount = 100000;
29
- this.minAmount = 3000;
33
+ this.monthlyAmount = 0;
34
+ this.maxAmount = 0;
35
+ this.minAmount = 0;
36
+ this.maturityCount = 10;
37
+ this.selectedStore = '';
38
+ this.selectedStaff = '';
39
+ this.stores = [];
40
+ this.staffMembers = [];
41
+ this.benefitAmount = 0;
42
+ this.allSchemes = [];
43
+ this.installmentOptions = [];
30
44
  }
31
45
  ngOnInit() {
32
46
  this.styles = this.data?.styles;
47
+ this.getEnrolledSchemes();
33
48
  }
34
- onSchemeChange() {
49
+ onSchemeChange(scheme) {
50
+ if (this.enrolledScheme) {
51
+ this.enrolledScheme.selected = false;
52
+ }
53
+ scheme.selected = !scheme.selected;
54
+ this.minAmount = scheme?.minInstallmentValue ? scheme.minInstallmentValue : this.minAmount;
55
+ this.maxAmount = scheme?.maxInstallmentValue ? scheme.maxInstallmentValue : this.maxAmount;
56
+ this.maturityCount = scheme?.maturityCount ? scheme.maturityCount : this.maturityCount;
57
+ this.monthlyAmount = this.minAmount;
58
+ this.installmentOptions = scheme?.suggestedValues;
59
+ this.stores = scheme?.storeList ? scheme.storeList : [];
60
+ // console.log(scheme);
61
+ this.enrolledScheme = scheme;
62
+ this.benefitAmount = 0;
63
+ this.onAmountChange();
64
+ this.getStaffList();
35
65
  }
36
66
  onAmountChange() {
67
+ if (Object.keys(this.enrolledScheme.jewellerBenefit).length > 0) {
68
+ const values = Object.values(this.enrolledScheme.jewellerBenefit);
69
+ const highestValue = Math.max(...Object.values(values));
70
+ if (this.enrolledScheme.benefitType === "PERCENT_ON_MONTH") {
71
+ this.benefitAmount = (this.monthlyAmount * highestValue) / 100;
72
+ }
73
+ else if (this.enrolledScheme.benefitType === "SCHEME") {
74
+ this.benefitAmount = ((this.monthlyAmount * this.maturityCount) * highestValue) / 100;
75
+ }
76
+ else if (this.enrolledScheme.benefitType === "DISCOUNT") {
77
+ this.benefitAmount = ((this.monthlyAmount * this.maturityCount) * highestValue) / 100;
78
+ }
79
+ }
80
+ }
81
+ getStaffList() {
82
+ this.restService.getAllStaffList().subscribe({
83
+ next: (res) => {
84
+ this.staffMembers = res?.data?.data ? res?.data?.data : [];
85
+ },
86
+ error: (err) => {
87
+ console.log(err);
88
+ }
89
+ });
90
+ }
91
+ setMonthlyAmount(amount) {
92
+ this.monthlyAmount = amount;
93
+ this.onAmountChange();
37
94
  }
38
95
  get individualContribution() {
39
96
  return this.monthlyAmount * 10;
@@ -62,13 +119,97 @@ export class ReturnsCalculatorComponent extends BaseSection {
62
119
  getButtonData(index) {
63
120
  return this.data?.action?.buttons[index]?.content;
64
121
  }
65
- redirectTo(data) {
66
- if (!data?.pageId && data?.redirectionUrl)
67
- return;
68
- this._eventService.buttonRedirection.emit({ data: data });
122
+ redirectTo(scheme) {
123
+ // if (!data?.pageId && data?.redirectionUrl)
124
+ // return;
125
+ // this._eventService.buttonRedirection.emit({ data: data });
126
+ }
127
+ closeDialog() {
128
+ this.matDialog.closeAll();
129
+ }
130
+ enrollScheme(scheme) {
131
+ const userDetails = this.storageService.getUser();
132
+ console.log(userDetails);
133
+ let payload = {
134
+ userBasicDetails: {
135
+ customer_id: userDetails?.userId,
136
+ customer_name: userDetails?.contact?.name,
137
+ customer_phone: userDetails?.contact?.mobile,
138
+ customer_email: userDetails?.contact?.email,
139
+ },
140
+ schemeId: scheme?.id,
141
+ schemeName: scheme?.schemeName,
142
+ earlyRedemptionCharge: scheme?.enrollmentFees,
143
+ installmentAmount: this.monthlyAmount,
144
+ storeRefId: scheme?.schemeRepresentativeId,
145
+ storeId: scheme?.storeId,
146
+ storeName: scheme?.storeName,
147
+ maturityCount: scheme?.maturityCount,
148
+ jewellerBenefit: scheme?.jewellerBenefit,
149
+ dueMonths: scheme?.maturityCount,
150
+ businessId: scheme?.businessId,
151
+ businessName: scheme?.businessName,
152
+ enableEarlyRedemption: scheme?.enableEarlyRedemption,
153
+ redemptionSlabList: scheme?.redemptionSlabList,
154
+ schemeType: scheme?.schemeType,
155
+ metalType: scheme?.metalType,
156
+ karatType: scheme?.karatType,
157
+ customerAccount: ""
158
+ };
159
+ this.restService.enrollScheme(payload, true).subscribe({
160
+ next: (response) => {
161
+ if (response.data.cashfreeResponse != null) {
162
+ this.continuePayment(payload);
163
+ }
164
+ else {
165
+ this.storeCharges = response.data.cart;
166
+ let dialog = this.matDialog.open(this.showChargesTemplate, {
167
+ panelClass: 'show-charges-class'
168
+ });
169
+ dialog.afterClosed().subscribe(() => {
170
+ this.continuePayment(payload);
171
+ });
172
+ }
173
+ },
174
+ error: (err) => {
175
+ console.log(err);
176
+ }
177
+ });
178
+ }
179
+ continuePayment(payload) {
180
+ this.restService.enrollScheme(payload, false).subscribe({
181
+ next: (response) => {
182
+ localStorage.setItem('passbookOrderId', response.data.orderId);
183
+ this.openCashfreeSdk(response.data.sessionId);
184
+ },
185
+ error: (error) => { }
186
+ });
187
+ }
188
+ getEnrolledSchemes() {
189
+ const payload = {
190
+ businessIds: [
191
+ localStorage.getItem('businessId')
192
+ ]
193
+ };
194
+ this.restService.getAllEnrolledSchemes(payload).subscribe({
195
+ next: (res) => {
196
+ this.allSchemes = res.data?.data;
197
+ this.allSchemes = this.allSchemes.map(item => ({
198
+ ...item,
199
+ selected: false
200
+ }));
201
+ // console.log(this.allSchemes)
202
+ },
203
+ error: (err) => {
204
+ console.log(err);
205
+ }
206
+ });
207
+ }
208
+ openCashfreeSdk(sessionId) {
209
+ this._eventService.cashFreeEvent.emit({ data: { orderSignature: sessionId } });
69
210
  }
70
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ReturnsCalculatorComponent, deps: [{ token: i1.EventsService }], target: i0.ɵɵFactoryTarget.Component }); }
71
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ReturnsCalculatorComponent, isStandalone: true, selector: "simpo-returns-calculator", inputs: { data: "data", edit: "edit", customClass: "customClass", delete: "delete", index: "index" }, usesInheritance: true, ngImport: i0, template: "<div class=\"total-container position-relative\" simpoHover (hovering)=\"showEditTabs($event)\" [id]=\"data?.id\">\r\n <div class=\"main-section\" [id]=\"data?.id\" [simpoBackground]=\"styles?.background\" [spacingHorizontal]=\"stylesLayout\"\r\n [simpoLayout]=\"stylesLayout\">\r\n <div class=\"headers w-100\" [simpoAnimation]=\"styles?.animation\" [id]=\"data?.id\">\r\n <ng-container *ngFor=\"let item of data?.content?.inputText\">\r\n <simpo-text-editor [(value)]=\"item.value\" [editable]=\"edit || false\"></simpo-text-editor>\r\n </ng-container>\r\n </div>\r\n <div class=\"main-container\" [simpoAnimation]=\"styles?.animation\" [id]=\"data?.id\">\r\n <div class=\"calculator bx-shd w-75 mx-auto my-3\">\r\n <div class=\"calculator-header text-center mb-4 w-100\">\r\n <h3 class=\"mb-0 calculator-title\">Interactive Returns Calculator</h3>\r\n </div>\r\n <div class=\"sub-header mb-3 p-3\">\r\n <h6 class=\"mb-0 sub-header-text\">Select Your Preferred Scheme</h6>\r\n </div>\r\n <div class=\"calculator-body-top d-flex justify-content-between mb-4 px-3\">\r\n <div class=\"form-check scheme-option w-48 p-3 border rounded\"\r\n [ngClass]=\"{'border-primary ind-border': selectedScheme === 'individual'}\">\r\n <input class=\"form-check-input\" type=\"radio\" name=\"scheme\" id=\"individual\" value=\"individual\"\r\n [(ngModel)]=\"selectedScheme\" (change)=\"onSchemeChange()\">\r\n <label class=\"form-check-label ms-2\" for=\"individual\">\r\n <div class=\"d-flex align-items-center mb-2\">\r\n \uD83D\uDC64\r\n <div class=\"scheme-header fw-bold\">Individual Investment Scheme</div>\r\n </div>\r\n <div class=\"scheme-description text-muted small\">Pay 10 months, get 11th month FREE from\r\n ORRA</div>\r\n </label>\r\n </div>\r\n\r\n <div class=\"form-check scheme-option w-48 p-3 border rounded\"\r\n [ngClass]=\"{'border-primary grp-border': selectedScheme === 'group'}\">\r\n <input class=\"form-check-input\" type=\"radio\" name=\"scheme\" id=\"group\" value=\"group\"\r\n [(ngModel)]=\"selectedScheme\" (change)=\"onSchemeChange()\">\r\n <label class=\"form-check-label ms-2\" for=\"group\">\r\n <div class=\"d-flex align-items-center mb-2\">\r\n \uD83D\uDC65\r\n <div class=\"scheme-header fw-bold\">Group Investment Scheme</div>\r\n </div>\r\n <div class=\"scheme-description text-muted small\">11 members, monthly lucky draw for full\r\n amount</div>\r\n </label>\r\n </div>\r\n </div>\r\n\r\n <div class=\"sub-header mb-3 px-3\">\r\n <h6 class=\"mb-0 sub-header-text\">Select Your Monthly Investment Amount</h6>\r\n </div>\r\n\r\n <div class=\"calculate-slider mb-4 px-3\">\r\n <div class=\"slider-container position-relative\">\r\n <input type=\"range\" class=\"form-range custom-range\" min=\"3000\" max=\"100000\" step=\"1000\"\r\n [(ngModel)]=\"monthlyAmount\" (input)=\"onAmountChange()\">\r\n <div class=\"slider-labels d-flex justify-content-between mt-2\">\r\n <span class=\"text-muted\">\u20B93,000</span>\r\n <span class=\"text-center fw-bold fs-4 monthly-amount\">\u20B9{{monthlyAmount | number}}</span>\r\n <span class=\"text-muted\">\u20B9{{maxAmount | number}}</span>\r\n </div>\r\n <div class=\"text-center text-muted small mt-1\">Monthly Investment</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"calculator-bottom px-3 mb-5\">\r\n <div *ngIf=\"selectedScheme === 'individual'\" class=\"scheme-results\">\r\n <div class=\"d-flex align-items-center mb-3\">\r\n \u2B50 <h6 class=\"mb-0 individual-results-title\">Individual Scheme Results</h6>\r\n </div>\r\n\r\n <div class=\"row mb-3\">\r\n <div class=\"col-4\">\r\n <div class=\"result-card text-center p-3 border rounded\">\r\n <div class=\"result-amount fw-bold fs-5\">\u20B9{{(monthlyAmount * 10) | number}}</div>\r\n <div class=\"result-label text-muted small\">Your 10-Month Contribution</div>\r\n </div>\r\n </div>\r\n <div class=\"col-4\">\r\n <div class=\"result-card text-center p-3 border rounded\">\r\n <div class=\"result-amount fw-bold fs-5\">\u20B9{{monthlyAmount | number}}</div>\r\n <div class=\"result-label text-muted small\">ORRA's FREE Bonus</div>\r\n </div>\r\n </div>\r\n <div class=\"col-4\">\r\n <div class=\"result-card result-card-highlight text-center p-3 border rounded\">\r\n <div class=\"result-amount fw-bold fs-5\">\u20B9{{(monthlyAmount * 11) | number}}</div>\r\n <div class=\"result-label small opacity-75\">Total Redemption Value</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"bonus-message text-center mb-3\">\r\n \u2B50 <span class=\"bonus-text\">You save 10% with ORRA's bonus!</span>\r\n </div>\r\n\r\n\r\n <button class=\"enroll-btn w-100 py-3 fw-bold mb-2\" [appButtonEditor]=\"edit ?? false\"\r\n simpoButtonDirective [buttonStyle]=\"getButtonStyle(0)\" [buttonId]=\"getButtonId(0)\"\r\n [sectionId]=\"data?.id\" [id]=\"data?.id+getButtonId(0)\" [buttonData]=\"getButtonData(0)\"\r\n (click)=\"redirectTo(getButtonData(0))\">\r\n Enroll in Scheme\r\n </button>\r\n </div>\r\n <div *ngIf=\"selectedScheme === 'group'\" class=\"scheme-results\">\r\n <div class=\"d-flex align-items-center mb-3\">\r\n \u2B50 <h6 class=\"mb-0 group-results-title\">Group Scheme Results</h6>\r\n </div>\r\n\r\n <div class=\"row mb-3\">\r\n <div class=\"col-6\">\r\n <div class=\"result-card text-center p-3 border rounded\">\r\n <div class=\"result-amount fw-bold fs-5\">\u20B9{{(monthlyAmount * 11) | number}}</div>\r\n <div class=\"result-label text-muted small\">Your Total 11-Month Contribution</div>\r\n </div>\r\n </div>\r\n <div class=\"col-6\">\r\n <div class=\"result-card result-card-group text-center p-3 border rounded\">\r\n <div class=\"result-amount fw-bold fs-5\">\u20B9{{(monthlyAmount * 11) | number}}</div>\r\n <div class=\"result-label small opacity-75\">Monthly Lucky Draw Amount</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <button class=\"enroll-btn w-100 py-3 fw-bold mb-2\" [appButtonEditor]=\"edit ?? false\"\r\n simpoButtonDirective [buttonStyle]=\"getButtonStyle(0)\" [buttonId]=\"getButtonId(0)\"\r\n [sectionId]=\"data?.id\" [id]=\"data?.id+getButtonId(0)\" [buttonData]=\"getButtonData(0)\">\r\n Enroll in Scheme\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n </div>\r\n\r\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n </div>\r\n</div>\r\n", styles: [".hover_effect{position:unset;width:100%;top:0;left:0;height:100%}.bx-shd{box-shadow:#ffffff1a 0 1px 1px inset,#32325d40 0 50px 100px -20px,#0000004d 0 30px 60px -30px}*{font-family:var(--website-font-family)}mat-icon{font-family:Material Icons!important}.calculator{border-radius:12px;box-shadow:0 4px 6px #0000001a}.calculator-header{background:linear-gradient(145deg,#f2e8cb,#d1c29e);color:#fff;padding:15px;border-radius:8px 8px 0 0}.calculator-title{color:#000;font-weight:600}.sub-header-text{color:#666;font-weight:500}.w-48{width:48%!important}.scheme-option{cursor:pointer;transition:all .3s ease}.scheme-option:hover{transform:translateY(-2px);box-shadow:0 2px 8px #0000001a}.form-check-input:checked{background-color:#d63384;border-color:#d63384}.form-check-input:focus{box-shadow:0 0 0 .25rem #d6338440}.scheme-header{font-size:16px;margin-bottom:5px;color:#333}.scheme-description{font-size:13px;line-height:1.4}.custom-range{height:8px;border-radius:5px;outline:none}.custom-range::-webkit-slider-thumb{appearance:none;width:24px;height:24px;background:#d63384;border-radius:50%;cursor:pointer;box-shadow:0 2px 6px #0003}.custom-range::-moz-range-thumb{width:24px;height:24px;background:#d63384;border-radius:50%;cursor:pointer;border:none;box-shadow:0 2px 6px #0003}.slider-container{padding:0 12px}.slider-labels{margin-top:10px;font-size:14px}.monthly-amount{color:#d4a574}.result-card{background:#fff;transition:all .3s ease;border:1px solid #e9ecef!important}.result-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001a}.result-card-highlight{background:#d4a574;color:#fff}.result-card-group{background:#d63384;color:#fff}.ind-border{border:2px solid rgb(201,176,130)!important}.grp-border{border:2px solid rgb(214,51,132)!important}.result-amount{color:#333;font-size:18px;margin-bottom:8px}.result-card-highlight .result-amount,.result-card-group .result-amount{color:#fff}.result-label{font-size:12px;font-weight:500}.bonus-message{background:#fff3cd;border:1px solid #ffeaa7;border-radius:8px;padding:12px;margin:15px 0}.bonus-text{color:#d4a574;font-weight:500}.scheme-results{background:#fff;border-radius:8px;padding:20px}.individual-results-title{color:#d4a574;font-weight:600}.group-results-title{color:#d63384;font-weight:600}.enroll-btn{font-size:16px}@media (max-width: 768px){.calculator{width:95%!important}.scheme-results .row{flex-direction:column}.scheme-results :is(.col-4,.col-6){width:100%!important}.calculator-body-top{flex-direction:column!important}.w-48{width:100%!important;margin-bottom:15px}.row .col-4,.row .col-6,.scheme-option{margin-bottom:15px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.DecimalPipe, name: "number" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.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: i3.RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]" }, { kind: "directive", type: i3.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { 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: "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: "directive", type: ButtonDirectiveDirective, selector: "[simpoButtonDirective]", inputs: ["buttonStyle", "color", "scrollValue", "backgroundInfo"] }, { kind: "directive", type: ContentFitDirective, selector: "[simpoLayout]", inputs: ["simpoLayout"] }, { kind: "directive", type: SpacingHorizontalDirective, selector: "[spacingHorizontal]", inputs: ["spacingHorizontal", "isHeader"] }, { kind: "component", type: TextEditorComponent, selector: "simpo-text-editor", inputs: ["value", "editable", "sectionId", "label"], outputs: ["valueChange"] }, { kind: "directive", type: ButtonEditorDirective, selector: "button[appButtonEditor]", inputs: ["appButtonEditor", "buttonData", "buttonStyle", "backgroundInfo", "sectionId", "buttonId"] }] }); }
211
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ReturnsCalculatorComponent, deps: [{ token: i1.EventsService }, { token: i2.RestService }, { token: i3.MatDialog }, { token: i4.StorageServiceService }], target: i0.ɵɵFactoryTarget.Component }); }
212
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ReturnsCalculatorComponent, isStandalone: true, selector: "simpo-returns-calculator", inputs: { data: "data", edit: "edit", customClass: "customClass", delete: "delete", index: "index" }, viewQueries: [{ propertyName: "showChargesTemplate", first: true, predicate: ["showCharges"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"total-container position-relative\" simpoHover (hovering)=\"showEditTabs($event)\" [id]=\"data?.id\">\r\n <div class=\"main-section\" [id]=\"data?.id\" [simpoBackground]=\"styles?.background\" [spacingHorizontal]=\"stylesLayout\"\r\n [simpoLayout]=\"stylesLayout\">\r\n <div class=\"headers w-100\" [simpoAnimation]=\"styles?.animation\" [id]=\"data?.id\">\r\n <ng-container *ngFor=\"let item of data?.content?.inputText\">\r\n <simpo-text-editor [(value)]=\"item.value\" [editable]=\"edit || false\"></simpo-text-editor>\r\n </ng-container>\r\n </div>\r\n <div class=\"main-container\" [simpoAnimation]=\"styles?.animation\" [id]=\"data?.id\">\r\n <div class=\"calculator bx-shd w-75 mx-auto my-3\">\r\n <div class=\"calculator-header text-center mb-4 w-100\">\r\n <h3 class=\"mb-0 calculator-title\">Interactive Returns Calculator</h3>\r\n </div>\r\n <div class=\"sub-header mb-3 p-3\">\r\n <h6 class=\"mb-0 sub-header-text\">Select Your Preferred Scheme</h6>\r\n </div>\r\n <div class=\"calculator-body-top d-flex mb-4 px-3\">\r\n <ng-container *ngFor=\"let scheme of allSchemes\">\r\n <div class=\"form-check scheme-option p-3 border rounded border-primary ind-border\"\r\n (click)=\"onSchemeChange(scheme)\">\r\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"scheme\" id=\"individual\"\r\n (change)=\"onSchemeChange(scheme)\" [checked]=\"scheme.selected\">\r\n <div class=\"form-check-label ms-2\">\r\n <div class=\"d-flex align-items-center mb-2\">\r\n \uD83D\uDC64\r\n <div class=\"scheme-header fw-bold\">{{scheme?.schemeName ? scheme.schemeName :\r\n 'N/A'}}</div>\r\n </div>\r\n <div class=\"scheme-description text-muted small\">Pay 10 months, get 11th month FREE\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"sub-header mb-3 px-3\" *ngIf=\"minAmount && maxAmount\">\r\n <h6 class=\"mb-0 sub-header-text\">Select Your Monthly Investment Amount</h6>\r\n </div>\r\n\r\n <div class=\"calculate-slider mb-4 px-3\" *ngIf=\"minAmount && maxAmount\">\r\n <div class=\"slider-container position-relative\">\r\n <input type=\"range\" class=\"form-range custom-range\" [min]=\"minAmount\" [max]=\"maxAmount\"\r\n step=\"1000\" [(ngModel)]=\"monthlyAmount\" (ngModelChange)=\"onAmountChange()\">\r\n <div class=\"slider-labels d-flex justify-content-between mt-2\">\r\n <span class=\"text-muted\">\u20B9{{minAmount | number}}</span>\r\n <span class=\"text-center fw-bold fs-4 monthly-amount\">\u20B9{{monthlyAmount | number}}</span>\r\n <span class=\"text-muted\">\u20B9{{maxAmount | number}}</span>\r\n </div>\r\n <div class=\"text-center text-muted small mt-1\">Monthly Investment</div>\r\n </div>\r\n <div class=\"random_opitons d-flex justify-content-center gap-3 align-items-center\"\r\n *ngIf=\"installmentOptions && installmentOptions.length > 0\">\r\n <div class=\"option cursor-pointer\" *ngFor=\"let option of installmentOptions\"\r\n (click)=\"setMonthlyAmount(option)\">\r\n {{option}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"calculator-bottom px-3 mb-5\">\r\n <div *ngIf=\"selectedScheme === 'individual'\" class=\"scheme-results\">\r\n <div class=\"d-flex align-items-center mb-3\">\r\n \u2B50 <h6 class=\"mb-0 individual-results-title\">Individual Scheme Results</h6>\r\n </div>\r\n\r\n <div class=\"row mb-3\">\r\n <div class=\"col-4\">\r\n <div class=\"result-card text-center p-3 border rounded\">\r\n <div class=\"result-amount fw-bold fs-5\">\u20B9{{(monthlyAmount * maturityCount) |\r\n number}}</div>\r\n <div class=\"result-label text-muted small\">Your {{maturityCount}}-Month Contribution\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-4\">\r\n <div class=\"result-card text-center p-3 border rounded\">\r\n <div class=\"result-amount fw-bold fs-5\">\u20B9{{benefitAmount | number}}</div>\r\n <div class=\"result-label text-muted small\">Scheme Benefit</div>\r\n </div>\r\n </div>\r\n <div class=\"col-4\">\r\n <div class=\"result-card result-card-highlight text-center p-3 border rounded\">\r\n <div class=\"result-amount fw-bold fs-5\"\r\n *ngIf=\"enrolledScheme?.benefitType != 'DISCOUNT'\">\u20B9{{((monthlyAmount *\r\n maturityCount)+benefitAmount) | number}}</div>\r\n <div class=\"result-amount fw-bold fs-5\"\r\n *ngIf=\"enrolledScheme?.benefitType === 'DISCOUNT'\">\u20B9{{((monthlyAmount *\r\n maturityCount)) | number}}</div>\r\n <div class=\"result-label small opacity-75\">Total Redemption Value</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"bonus-message text-center mb-3 d-flex justify-content-between align-items-center\" *ngIf=\"enrolledScheme \">\r\n <div class=\"store_selection align-items-center gap-1\">\r\n <span>Select Store : </span>\r\n <div class=\"store-selector\">\r\n <select id=\"storeDropdown\" [(ngModel)]=\"selectedStore\" class=\"form-select\">\r\n <option value=\"\" disabled>Choose a store...</option>\r\n <option *ngFor=\"let store of stores;\" [value]=\"store.id\">\r\n {{store.name}} - {{store.storeRefId}}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n <div class=\"staff-selector align-items-center gap-1\">\r\n <label for=\"staffDropdown\">Select Staff Member : </label>\r\n <select id=\"staffDropdown\" [(ngModel)]=\"selectedStaff\" class=\"form-select\">\r\n <option value=\"\" disabled>Choose a staff member...</option>\r\n <option *ngFor=\"let staff of staffMembers;\" [value]=\"staff.id\">\r\n {{staff.name}} - {{staff.role ? staff.role : 'staff' }}\r\n </option>\r\n </select>\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <button class=\"enroll-btn w-100 py-3 fw-bold mb-2\" [appButtonEditor]=\"edit ?? false\"\r\n simpoButtonDirective [buttonStyle]=\"getButtonStyle(0)\" [buttonId]=\"getButtonId(0)\"\r\n [sectionId]=\"data?.id\" [id]=\"data?.id+getButtonId(0)\" [buttonData]=\"getButtonData(0)\"\r\n (click)=\"enrollScheme(enrolledScheme)\">\r\n Enroll in Scheme\r\n </button>\r\n </div>\r\n <div *ngIf=\"selectedScheme === 'group'\" class=\"scheme-results\">\r\n <div class=\"d-flex align-items-center mb-3\">\r\n \u2B50 <h6 class=\"mb-0 group-results-title\">Group Scheme Results</h6>\r\n </div>\r\n\r\n <div class=\"row mb-3\">\r\n <div class=\"col-6\">\r\n <div class=\"result-card text-center p-3 border rounded\">\r\n <div class=\"result-amount fw-bold fs-5\">\u20B9{{(monthlyAmount * 11) | number}}</div>\r\n <div class=\"result-label text-muted small\">Your Total 11-Month Contribution</div>\r\n </div>\r\n </div>\r\n <div class=\"col-6\">\r\n <div class=\"result-card result-card-group text-center p-3 border rounded\">\r\n <div class=\"result-amount fw-bold fs-5\">\u20B9{{(monthlyAmount * 11) | number}}</div>\r\n <div class=\"result-label small opacity-75\">Monthly Lucky Draw Amount</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <button class=\"enroll-btn w-100 py-3 fw-bold mb-2\" [appButtonEditor]=\"edit ?? false\"\r\n simpoButtonDirective [buttonStyle]=\"getButtonStyle(0)\" [buttonId]=\"getButtonId(0)\"\r\n [sectionId]=\"data?.id\" [id]=\"data?.id+getButtonId(0)\" [buttonData]=\"getButtonData(0)\">\r\n Enroll in Scheme\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-template #showCharges>\r\n <div class=\"payment-dialog\">\r\n <div class=\"dialog-header\">\r\n <h2>Payment Details</h2>\r\n <button class=\"close-btn\" mat-icon-button>\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n\r\n <div class=\"payment-content\">\r\n <div class=\"payment-row\">\r\n <span class=\"label\">Installment Amount:</span>\r\n <span class=\"amount\">\u20B9{{storeCharges?.breakdown?.installmentAmount ?\r\n (storeCharges?.breakdown?.installmentAmount | number) : 0 }}</span>\r\n </div>\r\n\r\n <div class=\"payment-row\">\r\n <span class=\"label\">Convenience Fee:</span>\r\n <span class=\"amount\">\u20B9{{storeCharges?.breakdown?.convenienceFee?.value ?\r\n (storeCharges?.breakdown?.convenienceFee?.value | number) : 0 }}</span>\r\n </div>\r\n\r\n <div class=\"payment-row\">\r\n <span class=\"label\">Payment Service Charges:</span>\r\n <span class=\"amount\">\u20B9{{storeCharges?.breakdown?.paymentServiceCharges?.value ?\r\n (storeCharges?.breakdown?.paymentServiceCharges?.value | number) : 0 }}</span>\r\n </div>\r\n\r\n <div class=\"payment-row total-row\">\r\n <span class=\"label total-label\">Total Amount:</span>\r\n <span class=\"amount total-amount\">\u20B9{{storeCharges?.breakdown?.totalAmount ?\r\n (storeCharges?.breakdown?.totalAmount | number) : 0 }}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"dialog-actions\">\r\n <button class=\"continue-btn\" (click)=\"closeDialog()\">Continue</button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n </div>\r\n\r\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n </div>\r\n</div>", styles: [".hover_effect{position:unset;width:100%;top:0;left:0;height:100%}.bx-shd{box-shadow:#ffffff1a 0 1px 1px inset,#32325d40 0 50px 100px -20px,#0000004d 0 30px 60px -30px}*{font-family:var(--website-font-family)}mat-icon{font-family:Material Icons!important}.calculator{border-radius:12px;box-shadow:0 4px 6px #0000001a}.calculator-header{background:linear-gradient(145deg,#f2e8cb,#d1c29e);color:#fff;padding:15px;border-radius:8px 8px 0 0}.calculator-title{color:#000;font-weight:600}.sub-header-text{color:#666;font-weight:500}.w-48{width:48%!important}.payment-dialog{background:#fff;border-radius:12px;padding:0;max-width:400px;width:25vw;box-shadow:0 8px 32px #0000001a}.dialog-header{display:flex;justify-content:space-between;align-items:center;padding:20px 24px 16px;border-bottom:1px solid #f0f0f0}.dialog-header h2{margin:0;font-size:20px;font-weight:500;color:#333;white-space:nowrap}.close-btn{background:none;border:none;padding:4px;cursor:pointer;color:#666;display:flex;align-items:center;width:fit-content!important;justify-content:center}.close-btn:hover{background-color:#f5f5f5;border-radius:50%}.payment-content{padding:24px}.payment-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.random_opitons{padding:1%}.option{padding:1% 2%;border:1px solid lightgrey;border-radius:50px}.payment-row:last-child{margin-bottom:0}.label{color:#666;font-size:14px;font-weight:400}.amount{color:#333;font-size:14px;font-weight:500}.total-row{border-top:1px solid #f0f0f0;padding-top:16px;margin-top:8px}.total-label,.total-amount{color:#333;font-weight:600;font-size:16px}.dialog-actions{padding:0 24px 24px}.continue-btn{width:100%;background-color:#dc3545;color:#fff;border:none;border-radius:8px;padding:12px 24px;font-size:16px;font-weight:500;cursor:pointer;transition:background-color .2s ease}.continue-btn:hover{background-color:#c82333}.continue-btn:active{background-color:#bd2130}.mat-dialog-container{padding:0!important;border-radius:12px!important}.scheme-option{cursor:pointer;transition:all .3s ease;min-width:22vw}.form-check-input:checked{background-color:#d63384;border-color:#d63384}.form-check-input:focus{box-shadow:0 0 0 .25rem #d6338440}.scheme-header{font-size:16px;margin-bottom:5px;color:#333}.scheme-description{font-size:13px;line-height:1.4}.custom-range{height:8px;border-radius:5px;outline:none}.custom-range::-webkit-slider-thumb{appearance:none;width:24px;height:24px;background:#d63384;border-radius:50%;cursor:pointer;box-shadow:0 2px 6px #0003}.custom-range::-moz-range-thumb{width:24px;height:24px;background:#d63384;border-radius:50%;cursor:pointer;border:none;box-shadow:0 2px 6px #0003}.slider-container{padding:0 12px}.slider-labels{margin-top:10px;font-size:14px}.monthly-amount{color:#d4a574}.result-card{background:#fff;transition:all .3s ease;border:1px solid #e9ecef!important}.result-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001a}.result-card-highlight{background:#d4a574;color:#fff}.result-card-group{background:#d63384;color:#fff}.ind-border{border:2px solid rgb(201,176,130)!important}.grp-border{border:2px solid rgb(214,51,132)!important}.result-amount{color:#333;font-size:18px;margin-bottom:8px}.result-card-highlight .result-amount,.result-card-group .result-amount{color:#fff}.result-label{font-size:12px;font-weight:500}.bonus-message{border:1px solid #ffeaa7;border-radius:8px;padding:12px;margin:15px 0}.store_selection span{color:#d4a574;font-weight:700}.store-selector{max-width:400px;margin:20px 0}.store-selector label{display:block;font-weight:600;margin-bottom:8px}.store-selector .form-select{width:100%;padding:10px 12px;border:2px solid #ddd;border-radius:6px;font-size:14px;background-color:#fff;cursor:pointer;transition:border-color .3s ease;min-width:315px}.store-selector .form-select:focus{outline:none;border-color:#007bff;box-shadow:0 0 0 3px #007bff1a}.store-selector .form-select:hover{border-color:#bbb}.store-selector .selected-info{padding:10px;background-color:#f8f9fa;border-radius:4px;border-left:4px solid #007bff}.store-selector .selected-info p{margin:0;font-size:14px;color:#495057}.staff-selector label{display:block;color:#333;white-space:nowrap;color:#d4a574;font-weight:700}.staff-selector .form-select{max-width:400px;margin:20px 0;width:100%;padding:10px 12px;border:2px solid #ddd;border-radius:6px;font-size:14px;background-color:#fff;cursor:pointer;transition:border-color .3s ease}.staff-selector .form-select:focus{outline:none;border-color:#28a745;box-shadow:0 0 0 3px #28a7451a}.staff-selector .form-select:hover{border-color:#bbb}.staff-selector .selected-info{padding:10px;background-color:#f8f9fa;border-radius:4px;border-left:4px solid #28a745}.staff-selector .selected-info p{margin:0;font-size:14px;color:#495057}.bonus-text{color:#d4a574;font-weight:500}.scheme-results{background:#fff;border-radius:8px;padding:20px}.individual-results-title{color:#d4a574;font-weight:600}.group-results-title{color:#d63384;font-weight:600}.enroll-btn{font-size:16px}.calculator-body-top{overflow-y:scroll;gap:2rem}@media (max-width: 768px){.calculator{width:95%!important}.scheme-results .row{flex-direction:column}.scheme-results :is(.col-4,.col-6){width:100%!important}.calculator-body-top{flex-direction:column!important}.w-48{width:100%!important;margin-bottom:15px}.row .col-4,.row .col-6,.scheme-option{margin-bottom:15px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i5.DecimalPipe, name: "number" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i6.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i6.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i6.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: i6.RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]" }, { kind: "directive", type: i6.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: SimpoComponentModule }, { kind: "component", type: i7.HoverElementsComponent, selector: "simpo-hover-elements", inputs: ["data", "index", "editOptions", "isMerged", "isEcommerce"], outputs: ["edit"] }, { kind: "component", type: i8.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: "directive", type: ButtonDirectiveDirective, selector: "[simpoButtonDirective]", inputs: ["buttonStyle", "color", "scrollValue", "backgroundInfo"] }, { kind: "directive", type: ContentFitDirective, selector: "[simpoLayout]", inputs: ["simpoLayout"] }, { kind: "directive", type: SpacingHorizontalDirective, selector: "[spacingHorizontal]", inputs: ["spacingHorizontal", "isHeader"] }, { kind: "component", type: TextEditorComponent, selector: "simpo-text-editor", inputs: ["value", "editable", "sectionId", "label"], outputs: ["valueChange"] }, { kind: "directive", type: ButtonEditorDirective, selector: "button[appButtonEditor]", inputs: ["appButtonEditor", "buttonData", "buttonStyle", "backgroundInfo", "sectionId", "buttonId"] }] }); }
72
213
  }
73
214
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ReturnsCalculatorComponent, decorators: [{
74
215
  type: Component,
@@ -87,8 +228,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
87
228
  SpacingHorizontalDirective,
88
229
  TextEditorComponent,
89
230
  ButtonEditorDirective,
90
- ], template: "<div class=\"total-container position-relative\" simpoHover (hovering)=\"showEditTabs($event)\" [id]=\"data?.id\">\r\n <div class=\"main-section\" [id]=\"data?.id\" [simpoBackground]=\"styles?.background\" [spacingHorizontal]=\"stylesLayout\"\r\n [simpoLayout]=\"stylesLayout\">\r\n <div class=\"headers w-100\" [simpoAnimation]=\"styles?.animation\" [id]=\"data?.id\">\r\n <ng-container *ngFor=\"let item of data?.content?.inputText\">\r\n <simpo-text-editor [(value)]=\"item.value\" [editable]=\"edit || false\"></simpo-text-editor>\r\n </ng-container>\r\n </div>\r\n <div class=\"main-container\" [simpoAnimation]=\"styles?.animation\" [id]=\"data?.id\">\r\n <div class=\"calculator bx-shd w-75 mx-auto my-3\">\r\n <div class=\"calculator-header text-center mb-4 w-100\">\r\n <h3 class=\"mb-0 calculator-title\">Interactive Returns Calculator</h3>\r\n </div>\r\n <div class=\"sub-header mb-3 p-3\">\r\n <h6 class=\"mb-0 sub-header-text\">Select Your Preferred Scheme</h6>\r\n </div>\r\n <div class=\"calculator-body-top d-flex justify-content-between mb-4 px-3\">\r\n <div class=\"form-check scheme-option w-48 p-3 border rounded\"\r\n [ngClass]=\"{'border-primary ind-border': selectedScheme === 'individual'}\">\r\n <input class=\"form-check-input\" type=\"radio\" name=\"scheme\" id=\"individual\" value=\"individual\"\r\n [(ngModel)]=\"selectedScheme\" (change)=\"onSchemeChange()\">\r\n <label class=\"form-check-label ms-2\" for=\"individual\">\r\n <div class=\"d-flex align-items-center mb-2\">\r\n \uD83D\uDC64\r\n <div class=\"scheme-header fw-bold\">Individual Investment Scheme</div>\r\n </div>\r\n <div class=\"scheme-description text-muted small\">Pay 10 months, get 11th month FREE from\r\n ORRA</div>\r\n </label>\r\n </div>\r\n\r\n <div class=\"form-check scheme-option w-48 p-3 border rounded\"\r\n [ngClass]=\"{'border-primary grp-border': selectedScheme === 'group'}\">\r\n <input class=\"form-check-input\" type=\"radio\" name=\"scheme\" id=\"group\" value=\"group\"\r\n [(ngModel)]=\"selectedScheme\" (change)=\"onSchemeChange()\">\r\n <label class=\"form-check-label ms-2\" for=\"group\">\r\n <div class=\"d-flex align-items-center mb-2\">\r\n \uD83D\uDC65\r\n <div class=\"scheme-header fw-bold\">Group Investment Scheme</div>\r\n </div>\r\n <div class=\"scheme-description text-muted small\">11 members, monthly lucky draw for full\r\n amount</div>\r\n </label>\r\n </div>\r\n </div>\r\n\r\n <div class=\"sub-header mb-3 px-3\">\r\n <h6 class=\"mb-0 sub-header-text\">Select Your Monthly Investment Amount</h6>\r\n </div>\r\n\r\n <div class=\"calculate-slider mb-4 px-3\">\r\n <div class=\"slider-container position-relative\">\r\n <input type=\"range\" class=\"form-range custom-range\" min=\"3000\" max=\"100000\" step=\"1000\"\r\n [(ngModel)]=\"monthlyAmount\" (input)=\"onAmountChange()\">\r\n <div class=\"slider-labels d-flex justify-content-between mt-2\">\r\n <span class=\"text-muted\">\u20B93,000</span>\r\n <span class=\"text-center fw-bold fs-4 monthly-amount\">\u20B9{{monthlyAmount | number}}</span>\r\n <span class=\"text-muted\">\u20B9{{maxAmount | number}}</span>\r\n </div>\r\n <div class=\"text-center text-muted small mt-1\">Monthly Investment</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"calculator-bottom px-3 mb-5\">\r\n <div *ngIf=\"selectedScheme === 'individual'\" class=\"scheme-results\">\r\n <div class=\"d-flex align-items-center mb-3\">\r\n \u2B50 <h6 class=\"mb-0 individual-results-title\">Individual Scheme Results</h6>\r\n </div>\r\n\r\n <div class=\"row mb-3\">\r\n <div class=\"col-4\">\r\n <div class=\"result-card text-center p-3 border rounded\">\r\n <div class=\"result-amount fw-bold fs-5\">\u20B9{{(monthlyAmount * 10) | number}}</div>\r\n <div class=\"result-label text-muted small\">Your 10-Month Contribution</div>\r\n </div>\r\n </div>\r\n <div class=\"col-4\">\r\n <div class=\"result-card text-center p-3 border rounded\">\r\n <div class=\"result-amount fw-bold fs-5\">\u20B9{{monthlyAmount | number}}</div>\r\n <div class=\"result-label text-muted small\">ORRA's FREE Bonus</div>\r\n </div>\r\n </div>\r\n <div class=\"col-4\">\r\n <div class=\"result-card result-card-highlight text-center p-3 border rounded\">\r\n <div class=\"result-amount fw-bold fs-5\">\u20B9{{(monthlyAmount * 11) | number}}</div>\r\n <div class=\"result-label small opacity-75\">Total Redemption Value</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"bonus-message text-center mb-3\">\r\n \u2B50 <span class=\"bonus-text\">You save 10% with ORRA's bonus!</span>\r\n </div>\r\n\r\n\r\n <button class=\"enroll-btn w-100 py-3 fw-bold mb-2\" [appButtonEditor]=\"edit ?? false\"\r\n simpoButtonDirective [buttonStyle]=\"getButtonStyle(0)\" [buttonId]=\"getButtonId(0)\"\r\n [sectionId]=\"data?.id\" [id]=\"data?.id+getButtonId(0)\" [buttonData]=\"getButtonData(0)\"\r\n (click)=\"redirectTo(getButtonData(0))\">\r\n Enroll in Scheme\r\n </button>\r\n </div>\r\n <div *ngIf=\"selectedScheme === 'group'\" class=\"scheme-results\">\r\n <div class=\"d-flex align-items-center mb-3\">\r\n \u2B50 <h6 class=\"mb-0 group-results-title\">Group Scheme Results</h6>\r\n </div>\r\n\r\n <div class=\"row mb-3\">\r\n <div class=\"col-6\">\r\n <div class=\"result-card text-center p-3 border rounded\">\r\n <div class=\"result-amount fw-bold fs-5\">\u20B9{{(monthlyAmount * 11) | number}}</div>\r\n <div class=\"result-label text-muted small\">Your Total 11-Month Contribution</div>\r\n </div>\r\n </div>\r\n <div class=\"col-6\">\r\n <div class=\"result-card result-card-group text-center p-3 border rounded\">\r\n <div class=\"result-amount fw-bold fs-5\">\u20B9{{(monthlyAmount * 11) | number}}</div>\r\n <div class=\"result-label small opacity-75\">Monthly Lucky Draw Amount</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <button class=\"enroll-btn w-100 py-3 fw-bold mb-2\" [appButtonEditor]=\"edit ?? false\"\r\n simpoButtonDirective [buttonStyle]=\"getButtonStyle(0)\" [buttonId]=\"getButtonId(0)\"\r\n [sectionId]=\"data?.id\" [id]=\"data?.id+getButtonId(0)\" [buttonData]=\"getButtonData(0)\">\r\n Enroll in Scheme\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n </div>\r\n\r\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n </div>\r\n</div>\r\n", styles: [".hover_effect{position:unset;width:100%;top:0;left:0;height:100%}.bx-shd{box-shadow:#ffffff1a 0 1px 1px inset,#32325d40 0 50px 100px -20px,#0000004d 0 30px 60px -30px}*{font-family:var(--website-font-family)}mat-icon{font-family:Material Icons!important}.calculator{border-radius:12px;box-shadow:0 4px 6px #0000001a}.calculator-header{background:linear-gradient(145deg,#f2e8cb,#d1c29e);color:#fff;padding:15px;border-radius:8px 8px 0 0}.calculator-title{color:#000;font-weight:600}.sub-header-text{color:#666;font-weight:500}.w-48{width:48%!important}.scheme-option{cursor:pointer;transition:all .3s ease}.scheme-option:hover{transform:translateY(-2px);box-shadow:0 2px 8px #0000001a}.form-check-input:checked{background-color:#d63384;border-color:#d63384}.form-check-input:focus{box-shadow:0 0 0 .25rem #d6338440}.scheme-header{font-size:16px;margin-bottom:5px;color:#333}.scheme-description{font-size:13px;line-height:1.4}.custom-range{height:8px;border-radius:5px;outline:none}.custom-range::-webkit-slider-thumb{appearance:none;width:24px;height:24px;background:#d63384;border-radius:50%;cursor:pointer;box-shadow:0 2px 6px #0003}.custom-range::-moz-range-thumb{width:24px;height:24px;background:#d63384;border-radius:50%;cursor:pointer;border:none;box-shadow:0 2px 6px #0003}.slider-container{padding:0 12px}.slider-labels{margin-top:10px;font-size:14px}.monthly-amount{color:#d4a574}.result-card{background:#fff;transition:all .3s ease;border:1px solid #e9ecef!important}.result-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001a}.result-card-highlight{background:#d4a574;color:#fff}.result-card-group{background:#d63384;color:#fff}.ind-border{border:2px solid rgb(201,176,130)!important}.grp-border{border:2px solid rgb(214,51,132)!important}.result-amount{color:#333;font-size:18px;margin-bottom:8px}.result-card-highlight .result-amount,.result-card-group .result-amount{color:#fff}.result-label{font-size:12px;font-weight:500}.bonus-message{background:#fff3cd;border:1px solid #ffeaa7;border-radius:8px;padding:12px;margin:15px 0}.bonus-text{color:#d4a574;font-weight:500}.scheme-results{background:#fff;border-radius:8px;padding:20px}.individual-results-title{color:#d4a574;font-weight:600}.group-results-title{color:#d63384;font-weight:600}.enroll-btn{font-size:16px}@media (max-width: 768px){.calculator{width:95%!important}.scheme-results .row{flex-direction:column}.scheme-results :is(.col-4,.col-6){width:100%!important}.calculator-body-top{flex-direction:column!important}.w-48{width:100%!important;margin-bottom:15px}.row .col-4,.row .col-6,.scheme-option{margin-bottom:15px}}\n"] }]
91
- }], ctorParameters: () => [{ type: i1.EventsService }], propDecorators: { data: [{
231
+ ], template: "<div class=\"total-container position-relative\" simpoHover (hovering)=\"showEditTabs($event)\" [id]=\"data?.id\">\r\n <div class=\"main-section\" [id]=\"data?.id\" [simpoBackground]=\"styles?.background\" [spacingHorizontal]=\"stylesLayout\"\r\n [simpoLayout]=\"stylesLayout\">\r\n <div class=\"headers w-100\" [simpoAnimation]=\"styles?.animation\" [id]=\"data?.id\">\r\n <ng-container *ngFor=\"let item of data?.content?.inputText\">\r\n <simpo-text-editor [(value)]=\"item.value\" [editable]=\"edit || false\"></simpo-text-editor>\r\n </ng-container>\r\n </div>\r\n <div class=\"main-container\" [simpoAnimation]=\"styles?.animation\" [id]=\"data?.id\">\r\n <div class=\"calculator bx-shd w-75 mx-auto my-3\">\r\n <div class=\"calculator-header text-center mb-4 w-100\">\r\n <h3 class=\"mb-0 calculator-title\">Interactive Returns Calculator</h3>\r\n </div>\r\n <div class=\"sub-header mb-3 p-3\">\r\n <h6 class=\"mb-0 sub-header-text\">Select Your Preferred Scheme</h6>\r\n </div>\r\n <div class=\"calculator-body-top d-flex mb-4 px-3\">\r\n <ng-container *ngFor=\"let scheme of allSchemes\">\r\n <div class=\"form-check scheme-option p-3 border rounded border-primary ind-border\"\r\n (click)=\"onSchemeChange(scheme)\">\r\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"scheme\" id=\"individual\"\r\n (change)=\"onSchemeChange(scheme)\" [checked]=\"scheme.selected\">\r\n <div class=\"form-check-label ms-2\">\r\n <div class=\"d-flex align-items-center mb-2\">\r\n \uD83D\uDC64\r\n <div class=\"scheme-header fw-bold\">{{scheme?.schemeName ? scheme.schemeName :\r\n 'N/A'}}</div>\r\n </div>\r\n <div class=\"scheme-description text-muted small\">Pay 10 months, get 11th month FREE\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"sub-header mb-3 px-3\" *ngIf=\"minAmount && maxAmount\">\r\n <h6 class=\"mb-0 sub-header-text\">Select Your Monthly Investment Amount</h6>\r\n </div>\r\n\r\n <div class=\"calculate-slider mb-4 px-3\" *ngIf=\"minAmount && maxAmount\">\r\n <div class=\"slider-container position-relative\">\r\n <input type=\"range\" class=\"form-range custom-range\" [min]=\"minAmount\" [max]=\"maxAmount\"\r\n step=\"1000\" [(ngModel)]=\"monthlyAmount\" (ngModelChange)=\"onAmountChange()\">\r\n <div class=\"slider-labels d-flex justify-content-between mt-2\">\r\n <span class=\"text-muted\">\u20B9{{minAmount | number}}</span>\r\n <span class=\"text-center fw-bold fs-4 monthly-amount\">\u20B9{{monthlyAmount | number}}</span>\r\n <span class=\"text-muted\">\u20B9{{maxAmount | number}}</span>\r\n </div>\r\n <div class=\"text-center text-muted small mt-1\">Monthly Investment</div>\r\n </div>\r\n <div class=\"random_opitons d-flex justify-content-center gap-3 align-items-center\"\r\n *ngIf=\"installmentOptions && installmentOptions.length > 0\">\r\n <div class=\"option cursor-pointer\" *ngFor=\"let option of installmentOptions\"\r\n (click)=\"setMonthlyAmount(option)\">\r\n {{option}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"calculator-bottom px-3 mb-5\">\r\n <div *ngIf=\"selectedScheme === 'individual'\" class=\"scheme-results\">\r\n <div class=\"d-flex align-items-center mb-3\">\r\n \u2B50 <h6 class=\"mb-0 individual-results-title\">Individual Scheme Results</h6>\r\n </div>\r\n\r\n <div class=\"row mb-3\">\r\n <div class=\"col-4\">\r\n <div class=\"result-card text-center p-3 border rounded\">\r\n <div class=\"result-amount fw-bold fs-5\">\u20B9{{(monthlyAmount * maturityCount) |\r\n number}}</div>\r\n <div class=\"result-label text-muted small\">Your {{maturityCount}}-Month Contribution\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-4\">\r\n <div class=\"result-card text-center p-3 border rounded\">\r\n <div class=\"result-amount fw-bold fs-5\">\u20B9{{benefitAmount | number}}</div>\r\n <div class=\"result-label text-muted small\">Scheme Benefit</div>\r\n </div>\r\n </div>\r\n <div class=\"col-4\">\r\n <div class=\"result-card result-card-highlight text-center p-3 border rounded\">\r\n <div class=\"result-amount fw-bold fs-5\"\r\n *ngIf=\"enrolledScheme?.benefitType != 'DISCOUNT'\">\u20B9{{((monthlyAmount *\r\n maturityCount)+benefitAmount) | number}}</div>\r\n <div class=\"result-amount fw-bold fs-5\"\r\n *ngIf=\"enrolledScheme?.benefitType === 'DISCOUNT'\">\u20B9{{((monthlyAmount *\r\n maturityCount)) | number}}</div>\r\n <div class=\"result-label small opacity-75\">Total Redemption Value</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"bonus-message text-center mb-3 d-flex justify-content-between align-items-center\" *ngIf=\"enrolledScheme \">\r\n <div class=\"store_selection align-items-center gap-1\">\r\n <span>Select Store : </span>\r\n <div class=\"store-selector\">\r\n <select id=\"storeDropdown\" [(ngModel)]=\"selectedStore\" class=\"form-select\">\r\n <option value=\"\" disabled>Choose a store...</option>\r\n <option *ngFor=\"let store of stores;\" [value]=\"store.id\">\r\n {{store.name}} - {{store.storeRefId}}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n <div class=\"staff-selector align-items-center gap-1\">\r\n <label for=\"staffDropdown\">Select Staff Member : </label>\r\n <select id=\"staffDropdown\" [(ngModel)]=\"selectedStaff\" class=\"form-select\">\r\n <option value=\"\" disabled>Choose a staff member...</option>\r\n <option *ngFor=\"let staff of staffMembers;\" [value]=\"staff.id\">\r\n {{staff.name}} - {{staff.role ? staff.role : 'staff' }}\r\n </option>\r\n </select>\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <button class=\"enroll-btn w-100 py-3 fw-bold mb-2\" [appButtonEditor]=\"edit ?? false\"\r\n simpoButtonDirective [buttonStyle]=\"getButtonStyle(0)\" [buttonId]=\"getButtonId(0)\"\r\n [sectionId]=\"data?.id\" [id]=\"data?.id+getButtonId(0)\" [buttonData]=\"getButtonData(0)\"\r\n (click)=\"enrollScheme(enrolledScheme)\">\r\n Enroll in Scheme\r\n </button>\r\n </div>\r\n <div *ngIf=\"selectedScheme === 'group'\" class=\"scheme-results\">\r\n <div class=\"d-flex align-items-center mb-3\">\r\n \u2B50 <h6 class=\"mb-0 group-results-title\">Group Scheme Results</h6>\r\n </div>\r\n\r\n <div class=\"row mb-3\">\r\n <div class=\"col-6\">\r\n <div class=\"result-card text-center p-3 border rounded\">\r\n <div class=\"result-amount fw-bold fs-5\">\u20B9{{(monthlyAmount * 11) | number}}</div>\r\n <div class=\"result-label text-muted small\">Your Total 11-Month Contribution</div>\r\n </div>\r\n </div>\r\n <div class=\"col-6\">\r\n <div class=\"result-card result-card-group text-center p-3 border rounded\">\r\n <div class=\"result-amount fw-bold fs-5\">\u20B9{{(monthlyAmount * 11) | number}}</div>\r\n <div class=\"result-label small opacity-75\">Monthly Lucky Draw Amount</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <button class=\"enroll-btn w-100 py-3 fw-bold mb-2\" [appButtonEditor]=\"edit ?? false\"\r\n simpoButtonDirective [buttonStyle]=\"getButtonStyle(0)\" [buttonId]=\"getButtonId(0)\"\r\n [sectionId]=\"data?.id\" [id]=\"data?.id+getButtonId(0)\" [buttonData]=\"getButtonData(0)\">\r\n Enroll in Scheme\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-template #showCharges>\r\n <div class=\"payment-dialog\">\r\n <div class=\"dialog-header\">\r\n <h2>Payment Details</h2>\r\n <button class=\"close-btn\" mat-icon-button>\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n\r\n <div class=\"payment-content\">\r\n <div class=\"payment-row\">\r\n <span class=\"label\">Installment Amount:</span>\r\n <span class=\"amount\">\u20B9{{storeCharges?.breakdown?.installmentAmount ?\r\n (storeCharges?.breakdown?.installmentAmount | number) : 0 }}</span>\r\n </div>\r\n\r\n <div class=\"payment-row\">\r\n <span class=\"label\">Convenience Fee:</span>\r\n <span class=\"amount\">\u20B9{{storeCharges?.breakdown?.convenienceFee?.value ?\r\n (storeCharges?.breakdown?.convenienceFee?.value | number) : 0 }}</span>\r\n </div>\r\n\r\n <div class=\"payment-row\">\r\n <span class=\"label\">Payment Service Charges:</span>\r\n <span class=\"amount\">\u20B9{{storeCharges?.breakdown?.paymentServiceCharges?.value ?\r\n (storeCharges?.breakdown?.paymentServiceCharges?.value | number) : 0 }}</span>\r\n </div>\r\n\r\n <div class=\"payment-row total-row\">\r\n <span class=\"label total-label\">Total Amount:</span>\r\n <span class=\"amount total-amount\">\u20B9{{storeCharges?.breakdown?.totalAmount ?\r\n (storeCharges?.breakdown?.totalAmount | number) : 0 }}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"dialog-actions\">\r\n <button class=\"continue-btn\" (click)=\"closeDialog()\">Continue</button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n </div>\r\n\r\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n </div>\r\n</div>", styles: [".hover_effect{position:unset;width:100%;top:0;left:0;height:100%}.bx-shd{box-shadow:#ffffff1a 0 1px 1px inset,#32325d40 0 50px 100px -20px,#0000004d 0 30px 60px -30px}*{font-family:var(--website-font-family)}mat-icon{font-family:Material Icons!important}.calculator{border-radius:12px;box-shadow:0 4px 6px #0000001a}.calculator-header{background:linear-gradient(145deg,#f2e8cb,#d1c29e);color:#fff;padding:15px;border-radius:8px 8px 0 0}.calculator-title{color:#000;font-weight:600}.sub-header-text{color:#666;font-weight:500}.w-48{width:48%!important}.payment-dialog{background:#fff;border-radius:12px;padding:0;max-width:400px;width:25vw;box-shadow:0 8px 32px #0000001a}.dialog-header{display:flex;justify-content:space-between;align-items:center;padding:20px 24px 16px;border-bottom:1px solid #f0f0f0}.dialog-header h2{margin:0;font-size:20px;font-weight:500;color:#333;white-space:nowrap}.close-btn{background:none;border:none;padding:4px;cursor:pointer;color:#666;display:flex;align-items:center;width:fit-content!important;justify-content:center}.close-btn:hover{background-color:#f5f5f5;border-radius:50%}.payment-content{padding:24px}.payment-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.random_opitons{padding:1%}.option{padding:1% 2%;border:1px solid lightgrey;border-radius:50px}.payment-row:last-child{margin-bottom:0}.label{color:#666;font-size:14px;font-weight:400}.amount{color:#333;font-size:14px;font-weight:500}.total-row{border-top:1px solid #f0f0f0;padding-top:16px;margin-top:8px}.total-label,.total-amount{color:#333;font-weight:600;font-size:16px}.dialog-actions{padding:0 24px 24px}.continue-btn{width:100%;background-color:#dc3545;color:#fff;border:none;border-radius:8px;padding:12px 24px;font-size:16px;font-weight:500;cursor:pointer;transition:background-color .2s ease}.continue-btn:hover{background-color:#c82333}.continue-btn:active{background-color:#bd2130}.mat-dialog-container{padding:0!important;border-radius:12px!important}.scheme-option{cursor:pointer;transition:all .3s ease;min-width:22vw}.form-check-input:checked{background-color:#d63384;border-color:#d63384}.form-check-input:focus{box-shadow:0 0 0 .25rem #d6338440}.scheme-header{font-size:16px;margin-bottom:5px;color:#333}.scheme-description{font-size:13px;line-height:1.4}.custom-range{height:8px;border-radius:5px;outline:none}.custom-range::-webkit-slider-thumb{appearance:none;width:24px;height:24px;background:#d63384;border-radius:50%;cursor:pointer;box-shadow:0 2px 6px #0003}.custom-range::-moz-range-thumb{width:24px;height:24px;background:#d63384;border-radius:50%;cursor:pointer;border:none;box-shadow:0 2px 6px #0003}.slider-container{padding:0 12px}.slider-labels{margin-top:10px;font-size:14px}.monthly-amount{color:#d4a574}.result-card{background:#fff;transition:all .3s ease;border:1px solid #e9ecef!important}.result-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001a}.result-card-highlight{background:#d4a574;color:#fff}.result-card-group{background:#d63384;color:#fff}.ind-border{border:2px solid rgb(201,176,130)!important}.grp-border{border:2px solid rgb(214,51,132)!important}.result-amount{color:#333;font-size:18px;margin-bottom:8px}.result-card-highlight .result-amount,.result-card-group .result-amount{color:#fff}.result-label{font-size:12px;font-weight:500}.bonus-message{border:1px solid #ffeaa7;border-radius:8px;padding:12px;margin:15px 0}.store_selection span{color:#d4a574;font-weight:700}.store-selector{max-width:400px;margin:20px 0}.store-selector label{display:block;font-weight:600;margin-bottom:8px}.store-selector .form-select{width:100%;padding:10px 12px;border:2px solid #ddd;border-radius:6px;font-size:14px;background-color:#fff;cursor:pointer;transition:border-color .3s ease;min-width:315px}.store-selector .form-select:focus{outline:none;border-color:#007bff;box-shadow:0 0 0 3px #007bff1a}.store-selector .form-select:hover{border-color:#bbb}.store-selector .selected-info{padding:10px;background-color:#f8f9fa;border-radius:4px;border-left:4px solid #007bff}.store-selector .selected-info p{margin:0;font-size:14px;color:#495057}.staff-selector label{display:block;color:#333;white-space:nowrap;color:#d4a574;font-weight:700}.staff-selector .form-select{max-width:400px;margin:20px 0;width:100%;padding:10px 12px;border:2px solid #ddd;border-radius:6px;font-size:14px;background-color:#fff;cursor:pointer;transition:border-color .3s ease}.staff-selector .form-select:focus{outline:none;border-color:#28a745;box-shadow:0 0 0 3px #28a7451a}.staff-selector .form-select:hover{border-color:#bbb}.staff-selector .selected-info{padding:10px;background-color:#f8f9fa;border-radius:4px;border-left:4px solid #28a745}.staff-selector .selected-info p{margin:0;font-size:14px;color:#495057}.bonus-text{color:#d4a574;font-weight:500}.scheme-results{background:#fff;border-radius:8px;padding:20px}.individual-results-title{color:#d4a574;font-weight:600}.group-results-title{color:#d63384;font-weight:600}.enroll-btn{font-size:16px}.calculator-body-top{overflow-y:scroll;gap:2rem}@media (max-width: 768px){.calculator{width:95%!important}.scheme-results .row{flex-direction:column}.scheme-results :is(.col-4,.col-6){width:100%!important}.calculator-body-top{flex-direction:column!important}.w-48{width:100%!important;margin-bottom:15px}.row .col-4,.row .col-6,.scheme-option{margin-bottom:15px}}\n"] }]
232
+ }], ctorParameters: () => [{ type: i1.EventsService }, { type: i2.RestService }, { type: i3.MatDialog }, { type: i4.StorageServiceService }], propDecorators: { showChargesTemplate: [{
233
+ type: ViewChild,
234
+ args: ['showCharges', { static: true }]
235
+ }], data: [{
92
236
  type: Input
93
237
  }], edit: [{
94
238
  type: Input
@@ -99,4 +243,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
99
243
  }], index: [{
100
244
  type: Input
101
245
  }] } });
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0dXJucy1jYWxjdWxhdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvZWNvbW1lcmNlL3NlY3Rpb25zL3JldHVybnMtY2FsY3VsYXRvci9yZXR1cm5zLWNhbGN1bGF0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvcmV0dXJucy1jYWxjdWxhdG9yL3JldHVybnMtY2FsY3VsYXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUM3RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQy9FLE9B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QkFDbkIscUJBQXFCO3FCQUN0QjtrRkFNUSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuXHJcbmltcG9ydCB7IFNwYWNpbmdIb3Jpem9udGFsRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL3NwYWNpbmctaG9yaXpvbnRhbC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBBbmltYXRpb25EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvYW5pbWF0aW9uLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEJhY2tncm91bmREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvYmFja2dyb3VuZC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb3JuZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvY29ybmVyLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNpbXBvQ29tcG9uZW50TW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9pbmRleCc7XHJcbmltcG9ydCB7IEhvdmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2hvdmVyLWVsZW1lbnQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQnV0dG9uRGlyZWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2J1dHRvbi1kaXJlY3RpdmUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ29udGVudEZpdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9jb250ZW50LWZpdC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgQmFzZVNlY3Rpb24gZnJvbSAnLi4vLi4vLi4vc2VjdGlvbnMvQmFzZVNlY3Rpb24nO1xyXG5pbXBvcnQgeyBSZXR1cm5zQ2FsY3VsYXRvck1vZGVsLCBSZXR1cm5zQ2FsY3VsYXRvclN0eWxlTW9kZWwgfSBmcm9tICcuL3JldHVybnMtY2FsY3VsYXRvci5tb2RlbCc7XHJcbmltcG9ydCB7IFRleHRFZGl0b3JDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9lbGVtZW50cy90ZXh0LWVkaXRvci90ZXh0LWVkaXRvci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBMYXlPdXRNb2RlbCB9IGZyb20gJy4uLy4uLy4uL3N0eWxlcy9zdHlsZS5tb2RlbCc7XHJcbmltcG9ydCB7IEJ1dHRvbkVkaXRvckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9idXR0b24tZWRpdG9yLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEV2ZW50c1NlcnZpY2UgfSBmcm9tICcuLi8uLy4uLy4uL3NlcnZpY2VzL2V2ZW50cy5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2ltcG8tcmV0dXJucy1jYWxjdWxhdG9yJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIE1hdEljb24sXHJcbiAgICBTaW1wb0NvbXBvbmVudE1vZHVsZSxcclxuICAgIEFuaW1hdGlvbkRpcmVjdGl2ZSxcclxuICAgIEJhY2tncm91bmREaXJlY3RpdmUsXHJcbiAgICBDb3JuZXJEaXJlY3RpdmUsXHJcbiAgICBIb3ZlckRpcmVjdGl2ZSxcclxuICAgIEJ1dHRvbkRpcmVjdGl2ZURpcmVjdGl2ZSxcclxuICAgIENvbnRlbnRGaXREaXJlY3RpdmUsXHJcbiAgICBTcGFjaW5nSG9yaXpvbnRhbERpcmVjdGl2ZSxcclxuICAgIFRleHRFZGl0b3JDb21wb25lbnQsXHJcbiAgICBCdXR0b25FZGl0b3JEaXJlY3RpdmUsXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vcmV0dXJucy1jYWxjdWxhdG9yLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vcmV0dXJucy1jYWxjdWxhdG9yLmNvbXBvbmVudC5jc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZXR1cm5zQ2FsY3VsYXRvckNvbXBvbmVudCBleHRlbmRzIEJhc2VTZWN0aW9uIHtcclxuXHJcbiAgQElucHV0KCkgZGF0YT86IFJldHVybnNDYWxjdWxhdG9yTW9kZWw7XHJcbiAgQElucHV0KCkgZWRpdD86IGJvb2xlYW47XHJcbiAgQElucHV0KCkgY3VzdG9tQ2xhc3M/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgZGVsZXRlPzogYm9vbGVhbjtcclxuICBASW5wdXQoKSBpbmRleD86IG51bWJlcjtcclxuICBzdHlsZXM/OiBSZXR1cm5zQ2FsY3VsYXRvclN0eWxlTW9kZWxcclxuXHJcbiAgc2VsZWN0ZWRTY2hlbWU6IHN0cmluZyA9ICdpbmRpdmlkdWFsJztcclxuICBtb250aGx5QW1vdW50OiBudW1iZXIgPSA0MjAwMDtcclxuICBtYXhBbW91bnQ6IG51bWJlciA9IDEwMDAwMDtcclxuICBtaW5BbW91bnQ6IG51bWJlciA9IDMwMDA7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgX2V2ZW50U2VydmljZTogRXZlbnRzU2VydmljZSkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5zdHlsZXMgPSB0aGlzLmRhdGE/LnN0eWxlcztcclxuICB9XHJcblxyXG4gIG9uU2NoZW1lQ2hhbmdlKCkge1xyXG4gIH1cclxuXHJcbiAgb25BbW91bnRDaGFuZ2UoKSB7XHJcbiAgfVxyXG5cclxuICBnZXQgaW5kaXZpZHVhbENvbnRyaWJ1dGlvbigpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMubW9udGhseUFtb3VudCAqIDEwO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG9ycmFCb251cygpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMubW9udGhseUFtb3VudDtcclxuICB9XHJcblxyXG4gIGdldCB0b3RhbFJlZGVtcHRpb25WYWx1ZSgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMubW9udGhseUFtb3VudCAqIDExO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGdyb3VwQ29udHJpYnV0aW9uKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5tb250aGx5QW1vdW50ICogMTE7XHJcbiAgfVxyXG5cclxuICBnZXQgbHVja3lEcmF3QW1vdW50KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5tb250aGx5QW1vdW50ICogMTE7XHJcbiAgfVxyXG5cclxuICBnZXQgc3R5bGVzTGF5b3V0KCkge1xyXG4gICAgcmV0dXJuIHsgLi4udGhpcy5zdHlsZXM/LmxheW91dCB9IGFzIExheU91dE1vZGVsO1xyXG4gIH1cclxuXHJcbiAgZ2V0QnV0dG9uSWQoaW5kZXg6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YT8uYWN0aW9uPy5idXR0b25zW2luZGV4XT8uaWQgPz8gXCJcIjtcclxuICB9XHJcbiAgZ2V0QnV0dG9uU3R5bGUoaW5kZXg6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YT8uYWN0aW9uPy5idXR0b25zW2luZGV4XT8uc3R5bGVzO1xyXG4gIH1cclxuICBnZXRCdXR0b25EYXRhKGluZGV4OiBudW1iZXIpIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGE/LmFjdGlvbj8uYnV0dG9uc1tpbmRleF0/LmNvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICByZWRpcmVjdFRvKGRhdGEgOiBhbnkpe1xyXG4gICAgaWYoIWRhdGE/LnBhZ2VJZCAmJiBkYXRhPy5yZWRpcmVjdGlvblVybClcclxuICAgICAgcmV0dXJuO1xyXG4gICAgdGhpcy5fZXZlbnRTZXJ2aWNlLmJ1dHRvblJlZGlyZWN0aW9uLmVtaXQoe2RhdGE6IGRhdGF9KTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJ0b3RhbC1jb250YWluZXIgcG9zaXRpb24tcmVsYXRpdmVcIiBzaW1wb0hvdmVyIChob3ZlcmluZyk9XCJzaG93RWRpdFRhYnMoJGV2ZW50KVwiIFtpZF09XCJkYXRhPy5pZFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1haW4tc2VjdGlvblwiIFtpZF09XCJkYXRhPy5pZFwiIFtzaW1wb0JhY2tncm91bmRdPVwic3R5bGVzPy5iYWNrZ3JvdW5kXCIgW3NwYWNpbmdIb3Jpem9udGFsXT1cInN0eWxlc0xheW91dFwiXHJcbiAgICAgICAgW3NpbXBvTGF5b3V0XT1cInN0eWxlc0xheW91dFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJzIHctMTAwXCIgW3NpbXBvQW5pbWF0aW9uXT1cInN0eWxlcz8uYW5pbWF0aW9uXCIgW2lkXT1cImRhdGE/LmlkXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZGF0YT8uY29udGVudD8uaW5wdXRUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICA8c2ltcG8tdGV4dC1lZGl0b3IgWyh2YWx1ZSldPVwiaXRlbS52YWx1ZVwiIFtlZGl0YWJsZV09XCJlZGl0IHx8IGZhbHNlXCI+PC9zaW1wby10ZXh0LWVkaXRvcj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1haW4tY29udGFpbmVyXCIgW3NpbXBvQW5pbWF0aW9uXT1cInN0eWxlcz8uYW5pbWF0aW9uXCIgW2lkXT1cImRhdGE/LmlkXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxjdWxhdG9yIGJ4LXNoZCB3LTc1IG14LWF1dG8gbXktM1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGN1bGF0b3ItaGVhZGVyIHRleHQtY2VudGVyIG1iLTQgIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwibWItMCBjYWxjdWxhdG9yLXRpdGxlXCI+SW50ZXJhY3RpdmUgUmV0dXJucyBDYWxjdWxhdG9yPC9oMz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi1oZWFkZXIgbWItMyBwLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aDYgY2xhc3M9XCJtYi0wIHN1Yi1oZWFkZXItdGV4dFwiPlNlbGVjdCBZb3VyIFByZWZlcnJlZCBTY2hlbWU8L2g2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsY3VsYXRvci1ib2R5LXRvcCBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbWItNCBweC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgc2NoZW1lLW9wdGlvbiB3LTQ4IHAtMyBib3JkZXIgcm91bmRlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnYm9yZGVyLXByaW1hcnkgaW5kLWJvcmRlcic6IHNlbGVjdGVkU2NoZW1lID09PSAnaW5kaXZpZHVhbCd9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwicmFkaW9cIiBuYW1lPVwic2NoZW1lXCIgaWQ9XCJpbmRpdmlkdWFsXCIgdmFsdWU9XCJpbmRpdmlkdWFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRTY2hlbWVcIiAoY2hhbmdlKT1cIm9uU2NoZW1lQ2hhbmdlKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBtcy0yXCIgZm9yPVwiaW5kaXZpZHVhbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIPCfkaRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2NoZW1lLWhlYWRlciBmdy1ib2xkXCI+SW5kaXZpZHVhbCBJbnZlc3RtZW50IFNjaGVtZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2NoZW1lLWRlc2NyaXB0aW9uIHRleHQtbXV0ZWQgc21hbGxcIj5QYXkgMTAgbW9udGhzLCBnZXQgMTF0aCBtb250aCBGUkVFIGZyb21cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUlJBPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIHNjaGVtZS1vcHRpb24gdy00OCBwLTMgYm9yZGVyIHJvdW5kZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2JvcmRlci1wcmltYXJ5IGdycC1ib3JkZXInOiBzZWxlY3RlZFNjaGVtZSA9PT0gJ2dyb3VwJ31cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJyYWRpb1wiIG5hbWU9XCJzY2hlbWVcIiBpZD1cImdyb3VwXCIgdmFsdWU9XCJncm91cFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkU2NoZW1lXCIgKGNoYW5nZSk9XCJvblNjaGVtZUNoYW5nZSgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgbXMtMlwiIGZvcj1cImdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg8J+RpVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzY2hlbWUtaGVhZGVyIGZ3LWJvbGRcIj5Hcm91cCBJbnZlc3RtZW50IFNjaGVtZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2NoZW1lLWRlc2NyaXB0aW9uIHRleHQtbXV0ZWQgc21hbGxcIj4xMSBtZW1iZXJzLCBtb250aGx5IGx1Y2t5IGRyYXcgZm9yIGZ1bGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbW91bnQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItaGVhZGVyIG1iLTMgcHgtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxoNiBjbGFzcz1cIm1iLTAgc3ViLWhlYWRlci10ZXh0XCI+U2VsZWN0IFlvdXIgTW9udGhseSBJbnZlc3RtZW50IEFtb3VudDwvaDY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsY3VsYXRlLXNsaWRlciBtYi00IHB4LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2xpZGVyLWNvbnRhaW5lciBwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInJhbmdlXCIgY2xhc3M9XCJmb3JtLXJhbmdlIGN1c3RvbS1yYW5nZVwiIG1pbj1cIjMwMDBcIiBtYXg9XCIxMDAwMDBcIiBzdGVwPVwiMTAwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIm1vbnRobHlBbW91bnRcIiAoaW5wdXQpPVwib25BbW91bnRDaGFuZ2UoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2xpZGVyLWxhYmVscyBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LW11dGVkXCI+4oK5MywwMDA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtY2VudGVyIGZ3LWJvbGQgZnMtNCBtb250aGx5LWFtb3VudFwiPuKCuXt7bW9udGhseUFtb3VudCB8IG51bWJlcn19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LW11dGVkXCI+4oK5e3ttYXhBbW91bnQgfCBudW1iZXJ9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciB0ZXh0LW11dGVkIHNtYWxsIG10LTFcIj5Nb250aGx5IEludmVzdG1lbnQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxjdWxhdG9yLWJvdHRvbSBweC0zIG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWRTY2hlbWUgPT09ICdpbmRpdmlkdWFsJ1wiIGNsYXNzPVwic2NoZW1lLXJlc3VsdHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAg4q2QIDxoNiBjbGFzcz1cIm1iLTAgaW5kaXZpZHVhbC1yZXN1bHRzLXRpdGxlXCI+SW5kaXZpZHVhbCBTY2hlbWUgUmVzdWx0czwvaDY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVzdWx0LWNhcmQgdGV4dC1jZW50ZXIgcC0zIGJvcmRlciByb3VuZGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXN1bHQtYW1vdW50IGZ3LWJvbGQgZnMtNVwiPuKCuXt7KG1vbnRobHlBbW91bnQgKiAxMCkgfCBudW1iZXJ9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVzdWx0LWxhYmVsIHRleHQtbXV0ZWQgc21hbGxcIj5Zb3VyIDEwLU1vbnRoIENvbnRyaWJ1dGlvbjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVzdWx0LWNhcmQgdGV4dC1jZW50ZXIgcC0zIGJvcmRlciByb3VuZGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXN1bHQtYW1vdW50IGZ3LWJvbGQgZnMtNVwiPuKCuXt7bW9udGhseUFtb3VudCB8IG51bWJlcn19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXN1bHQtbGFiZWwgdGV4dC1tdXRlZCBzbWFsbFwiPk9SUkEncyBGUkVFIEJvbnVzPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXN1bHQtY2FyZCByZXN1bHQtY2FyZC1oaWdobGlnaHQgdGV4dC1jZW50ZXIgcC0zIGJvcmRlciByb3VuZGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXN1bHQtYW1vdW50IGZ3LWJvbGQgZnMtNVwiPuKCuXt7KG1vbnRobHlBbW91bnQgKiAxMSkgfCBudW1iZXJ9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVzdWx0LWxhYmVsIHNtYWxsIG9wYWNpdHktNzVcIj5Ub3RhbCBSZWRlbXB0aW9uIFZhbHVlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9udXMtbWVzc2FnZSB0ZXh0LWNlbnRlciBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICDirZAgPHNwYW4gY2xhc3M9XCJib251cy10ZXh0XCI+WW91IHNhdmUgMTAlIHdpdGggT1JSQSdzIGJvbnVzITwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImVucm9sbC1idG4gdy0xMDAgcHktMyBmdy1ib2xkIG1iLTJcIiBbYXBwQnV0dG9uRWRpdG9yXT1cImVkaXQgPz8gZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2ltcG9CdXR0b25EaXJlY3RpdmUgW2J1dHRvblN0eWxlXT1cImdldEJ1dHRvblN0eWxlKDApXCIgW2J1dHRvbklkXT1cImdldEJ1dHRvbklkKDApXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWN0aW9uSWRdPVwiZGF0YT8uaWRcIiBbaWRdPVwiZGF0YT8uaWQrZ2V0QnV0dG9uSWQoMClcIiBbYnV0dG9uRGF0YV09XCJnZXRCdXR0b25EYXRhKDApXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZWRpcmVjdFRvKGdldEJ1dHRvbkRhdGEoMCkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnJvbGwgaW4gU2NoZW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzZWxlY3RlZFNjaGVtZSA9PT0gJ2dyb3VwJ1wiIGNsYXNzPVwic2NoZW1lLXJlc3VsdHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAg4q2QIDxoNiBjbGFzcz1cIm1iLTAgZ3JvdXAtcmVzdWx0cy10aXRsZVwiPkdyb3VwIFNjaGVtZSBSZXN1bHRzPC9oNj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXN1bHQtY2FyZCB0ZXh0LWNlbnRlciBwLTMgYm9yZGVyIHJvdW5kZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlc3VsdC1hbW91bnQgZnctYm9sZCBmcy01XCI+4oK5e3sobW9udGhseUFtb3VudCAqIDExKSB8IG51bWJlcn19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXN1bHQtbGFiZWwgdGV4dC1tdXRlZCBzbWFsbFwiPllvdXIgVG90YWwgMTEtTW9udGggQ29udHJpYnV0aW9uPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXN1bHQtY2FyZCByZXN1bHQtY2FyZC1ncm91cCB0ZXh0LWNlbnRlciBwLTMgYm9yZGVyIHJvdW5kZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlc3VsdC1hbW91bnQgZnctYm9sZCBmcy01XCI+4oK5e3sobW9udGhseUFtb3VudCAqIDExKSB8IG51bWJlcn19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXN1bHQtbGFiZWwgc21hbGwgb3BhY2l0eS03NVwiPk1vbnRobHkgTHVja3kgRHJhdyBBbW91bnQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJlbnJvbGwtYnRuIHctMTAwIHB5LTMgZnctYm9sZCBtYi0yXCIgW2FwcEJ1dHRvbkVkaXRvcl09XCJlZGl0ID8/IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbXBvQnV0dG9uRGlyZWN0aXZlIFtidXR0b25TdHlsZV09XCJnZXRCdXR0b25TdHlsZSgwKVwiIFtidXR0b25JZF09XCJnZXRCdXR0b25JZCgwKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VjdGlvbklkXT1cImRhdGE/LmlkXCIgW2lkXT1cImRhdGE/LmlkK2dldEJ1dHRvbklkKDApXCIgW2J1dHRvbkRhdGFdPVwiZ2V0QnV0dG9uRGF0YSgwKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5yb2xsIGluIFNjaGVtZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBlZGl0fVwiICpuZ0lmPVwic2hvd0VkaXRvcnNcIj5cclxuICAgICAgICA8c2ltcG8taG92ZXItZWxlbWVudHMgW2RhdGFdPVwiZGF0YVwiIFtpbmRleF09XCJpbmRleFwiIFtlZGl0T3B0aW9uc109XCJlZGl0XCI+PC9zaW1wby1ob3Zlci1lbGVtZW50cz5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgKm5nSWY9XCJzaG93RGVsZXRlXCIgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBkZWxldGV9XCI+XHJcbiAgICAgICAgPHNpbXBvLWRlbGV0ZS1ob3Zlci1lbGVtZW50IFtkYXRhXT1cImRhdGFcIiBbaW5kZXhdPVwiaW5kZXhcIj48L3NpbXBvLWRlbGV0ZS1ob3Zlci1lbGVtZW50PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
246
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0dXJucy1jYWxjdWxhdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvZWNvbW1lcmNlL3NlY3Rpb25zL3JldHVybnMtY2FsY3VsYXRvci9yZXR1cm5zLWNhbGN1bGF0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvcmV0dXJucy1jYWxjdWxhdG9yL3JldHVybnMtY2FsY3VsYXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFakQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDN0YsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDNUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN6RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FB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QzVDdkMsNjZaQTBNTSxvMEtEaExGLFlBQVkscVpBQ1osV0FBVyx1cUNBQ1gsbUJBQW1CLCtCQUNuQixPQUFPLDBJQUNQLG9CQUFvQixvV0FDcEIsa0JBQWtCLHlGQUNsQixtQkFBbUIsMEdBRW5CLGNBQWMsZ0ZBQ2Qsd0JBQXdCLHNJQUN4QixtQkFBbUIsbUZBQ25CLDBCQUEwQiwyR0FDMUIsbUJBQW1CLDZJQUNuQixxQkFBcUI7OzRGQUtaLDBCQUEwQjtrQkF0QnRDLFNBQVM7K0JBQ0UsMEJBQTBCLGNBQ3hCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixPQUFPO3dCQUNQLG9CQUFvQjt3QkFDcEIsa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLGVBQWU7d0JBQ2YsY0FBYzt3QkFDZCx3QkFBd0I7d0JBQ3hCLG1CQUFtQjt3QkFDbkIsMEJBQTBCO3dCQUMxQixtQkFBbUI7d0JBQ25CLHFCQUFxQjtxQkFDdEI7d0tBSzJDLG1CQUFtQjtzQkFBOUQsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNqQyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuXHJcbmltcG9ydCB7IFNwYWNpbmdIb3Jpem9udGFsRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL3NwYWNpbmctaG9yaXpvbnRhbC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBBbmltYXRpb25EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvYW5pbWF0aW9uLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEJhY2tncm91bmREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvYmFja2dyb3VuZC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb3JuZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvY29ybmVyLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNpbXBvQ29tcG9uZW50TW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9pbmRleCc7XHJcbmltcG9ydCB7IEhvdmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2hvdmVyLWVsZW1lbnQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQnV0dG9uRGlyZWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2J1dHRvbi1kaXJlY3RpdmUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ29udGVudEZpdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9jb250ZW50LWZpdC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgQmFzZVNlY3Rpb24gZnJvbSAnLi4vLi4vLi4vc2VjdGlvbnMvQmFzZVNlY3Rpb24nO1xyXG5pbXBvcnQgeyBSZXR1cm5zQ2FsY3VsYXRvck1vZGVsLCBSZXR1cm5zQ2FsY3VsYXRvclN0eWxlTW9kZWwgfSBmcm9tICcuL3JldHVybnMtY2FsY3VsYXRvci5tb2RlbCc7XHJcbmltcG9ydCB7IFRleHRFZGl0b3JDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9lbGVtZW50cy90ZXh0LWVkaXRvci90ZXh0LWVkaXRvci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBMYXlPdXRNb2RlbCB9IGZyb20gJy4uLy4uLy4uL3N0eWxlcy9zdHlsZS5tb2RlbCc7XHJcbmltcG9ydCB7IEJ1dHRvbkVkaXRvckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9idXR0b24tZWRpdG9yLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEV2ZW50c1NlcnZpY2UgfSBmcm9tICcuLi8uLy4uLy4uL3NlcnZpY2VzL2V2ZW50cy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9yZXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9zdG9yYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NpbXBvLXJldHVybnMtY2FsY3VsYXRvcicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBNYXRJY29uLFxyXG4gICAgU2ltcG9Db21wb25lbnRNb2R1bGUsXHJcbiAgICBBbmltYXRpb25EaXJlY3RpdmUsXHJcbiAgICBCYWNrZ3JvdW5kRGlyZWN0aXZlLFxyXG4gICAgQ29ybmVyRGlyZWN0aXZlLFxyXG4gICAgSG92ZXJEaXJlY3RpdmUsXHJcbiAgICBCdXR0b25EaXJlY3RpdmVEaXJlY3RpdmUsXHJcbiAgICBDb250ZW50Rml0RGlyZWN0aXZlLFxyXG4gICAgU3BhY2luZ0hvcml6b250YWxEaXJlY3RpdmUsXHJcbiAgICBUZXh0RWRpdG9yQ29tcG9uZW50LFxyXG4gICAgQnV0dG9uRWRpdG9yRGlyZWN0aXZlLFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3JldHVybnMtY2FsY3VsYXRvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3JldHVybnMtY2FsY3VsYXRvci5jb21wb25lbnQuY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUmV0dXJuc0NhbGN1bGF0b3JDb21wb25lbnQgZXh0ZW5kcyBCYXNlU2VjdGlvbiB7XHJcbiAgQFZpZXdDaGlsZCgnc2hvd0NoYXJnZXMnLCB7IHN0YXRpYzogdHJ1ZSB9KSBzaG93Q2hhcmdlc1RlbXBsYXRlITogVGVtcGxhdGVSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIEBJbnB1dCgpIGRhdGE/OiBSZXR1cm5zQ2FsY3VsYXRvck1vZGVsO1xyXG4gIEBJbnB1dCgpIGVkaXQ/OiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGN1c3RvbUNsYXNzPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGRlbGV0ZT86IGJvb2xlYW47XHJcbiAgQElucHV0KCkgaW5kZXg/OiBudW1iZXI7XHJcbiAgc3R5bGVzPzogUmV0dXJuc0NhbGN1bGF0b3JTdHlsZU1vZGVsXHJcblxyXG4gIHNlbGVjdGVkU2NoZW1lOiBzdHJpbmcgPSAnaW5kaXZpZHVhbCc7XHJcbiAgbW9udGhseUFtb3VudDogbnVtYmVyID0gMDtcclxuICBtYXhBbW91bnQ6IG51bWJlciA9IDA7XHJcbiAgbWluQW1vdW50OiBudW1iZXIgPSAwO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IF9ldmVudFNlcnZpY2U6IEV2ZW50c1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlc3RTZXJ2aWNlOiBSZXN0U2VydmljZSxcclxuICAgIHByaXZhdGUgbWF0RGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlU2VydmljZVNlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuc3R5bGVzID0gdGhpcy5kYXRhPy5zdHlsZXM7XHJcbiAgICB0aGlzLmdldEVucm9sbGVkU2NoZW1lcygpO1xyXG4gIH1cclxuICBtYXR1cml0eUNvdW50OiBudW1iZXIgPSAxMDtcclxuICBlbnJvbGxlZFNjaGVtZTogYW55O1xyXG4gIHNlbGVjdGVkU3RvcmU6IHN0cmluZyA9ICcnO1xyXG4gIHNlbGVjdGVkU3RhZmY6IHN0cmluZyA9ICcnO1xyXG4gIHN0b3JlczogYW55W10gPSBbXTtcclxuICBzdGFmZk1lbWJlcnM6IGFueVtdID0gW107XHJcbiAgb25TY2hlbWVDaGFuZ2Uoc2NoZW1lOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLmVucm9sbGVkU2NoZW1lKSB7XHJcbiAgICAgIHRoaXMuZW5yb2xsZWRTY2hlbWUuc2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIHNjaGVtZS5zZWxlY3RlZCA9ICFzY2hlbWUuc2VsZWN0ZWQ7XHJcbiAgICB0aGlzLm1pbkFtb3VudCA9IHNjaGVtZT8ubWluSW5zdGFsbG1lbnRWYWx1ZSA/IHNjaGVtZS5taW5JbnN0YWxsbWVudFZhbHVlIDogdGhpcy5taW5BbW91bnQ7XHJcbiAgICB0aGlzLm1heEFtb3VudCA9IHNjaGVtZT8ubWF4SW5zdGFsbG1lbnRWYWx1ZSA/IHNjaGVtZS5tYXhJbnN0YWxsbWVudFZhbHVlIDogdGhpcy5tYXhBbW91bnQ7XHJcbiAgICB0aGlzLm1hdHVyaXR5Q291bnQgPSBzY2hlbWU/Lm1hdHVyaXR5Q291bnQgPyBzY2hlbWUubWF0dXJpdHlDb3VudCA6IHRoaXMubWF0dXJpdHlDb3VudDtcclxuICAgIHRoaXMubW9udGhseUFtb3VudCA9IHRoaXMubWluQW1vdW50O1xyXG4gICAgdGhpcy5pbnN0YWxsbWVudE9wdGlvbnMgPSBzY2hlbWU/LnN1Z2dlc3RlZFZhbHVlcztcclxuICAgIHRoaXMuc3RvcmVzID0gc2NoZW1lPy5zdG9yZUxpc3QgPyBzY2hlbWUuc3RvcmVMaXN0IDogW107XHJcbiAgICAvLyBjb25zb2xlLmxvZyhzY2hlbWUpO1xyXG4gICAgdGhpcy5lbnJvbGxlZFNjaGVtZSA9IHNjaGVtZTtcclxuICAgIHRoaXMuYmVuZWZpdEFtb3VudCA9IDA7XHJcbiAgICB0aGlzLm9uQW1vdW50Q2hhbmdlKCk7XHJcbiAgICB0aGlzLmdldFN0YWZmTGlzdCgpO1xyXG4gIH1cclxuICBiZW5lZml0QW1vdW50OiBudW1iZXIgPSAwO1xyXG4gIG9uQW1vdW50Q2hhbmdlKCkge1xyXG4gICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuZW5yb2xsZWRTY2hlbWUuamV3ZWxsZXJCZW5lZml0KS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IHZhbHVlczogUmVjb3JkPHN0cmluZywgYW55PiA9IE9iamVjdC52YWx1ZXModGhpcy5lbnJvbGxlZFNjaGVtZS5qZXdlbGxlckJlbmVmaXQpO1xyXG4gICAgICBjb25zdCBoaWdoZXN0VmFsdWUgPSBNYXRoLm1heCguLi5PYmplY3QudmFsdWVzKHZhbHVlcykpO1xyXG4gICAgICBpZiAodGhpcy5lbnJvbGxlZFNjaGVtZS5iZW5lZml0VHlwZSA9PT0gXCJQRVJDRU5UX09OX01PTlRIXCIpIHtcclxuICAgICAgICB0aGlzLmJlbmVmaXRBbW91bnQgPSAodGhpcy5tb250aGx5QW1vdW50ICogaGlnaGVzdFZhbHVlKSAvIDEwMDtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLmVucm9sbGVkU2NoZW1lLmJlbmVmaXRUeXBlID09PSBcIlNDSEVNRVwiKSB7XHJcbiAgICAgICAgdGhpcy5iZW5lZml0QW1vdW50ID0gKCh0aGlzLm1vbnRobHlBbW91bnQgKiB0aGlzLm1hdHVyaXR5Q291bnQpICogaGlnaGVzdFZhbHVlKSAvIDEwMDtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLmVucm9sbGVkU2NoZW1lLmJlbmVmaXRUeXBlID09PSBcIkRJU0NPVU5UXCIpIHtcclxuICAgICAgICB0aGlzLmJlbmVmaXRBbW91bnQgPSAoKHRoaXMubW9udGhseUFtb3VudCAqIHRoaXMubWF0dXJpdHlDb3VudCkgKiBoaWdoZXN0VmFsdWUpIC8gMTAwO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldFN0YWZmTGlzdCgpXHJcbiAge1xyXG4gICAgdGhpcy5yZXN0U2VydmljZS5nZXRBbGxTdGFmZkxpc3QoKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBcclxuICAgICAgIHRoaXMuc3RhZmZNZW1iZXJzID0gcmVzPy5kYXRhPy5kYXRhID8gcmVzPy5kYXRhPy5kYXRhIDogW11cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycik7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG4gIHNldE1vbnRobHlBbW91bnQoYW1vdW50OiBudW1iZXIpIHtcclxuICAgIHRoaXMubW9udGhseUFtb3VudCA9IGFtb3VudDtcclxuICAgIHRoaXMub25BbW91bnRDaGFuZ2UoKTtcclxuICB9XHJcbiAgZ2V0IGluZGl2aWR1YWxDb250cmlidXRpb24oKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLm1vbnRobHlBbW91bnQgKiAxMDtcclxuICB9XHJcblxyXG4gIGdldCBvcnJhQm9udXMoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLm1vbnRobHlBbW91bnQ7XHJcbiAgfVxyXG5cclxuICBnZXQgdG90YWxSZWRlbXB0aW9uVmFsdWUoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLm1vbnRobHlBbW91bnQgKiAxMTtcclxuICB9XHJcblxyXG4gIGdldCBncm91cENvbnRyaWJ1dGlvbigpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMubW9udGhseUFtb3VudCAqIDExO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGx1Y2t5RHJhd0Ftb3VudCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMubW9udGhseUFtb3VudCAqIDExO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHN0eWxlc0xheW91dCgpIHtcclxuICAgIHJldHVybiB7IC4uLnRoaXMuc3R5bGVzPy5sYXlvdXQgfSBhcyBMYXlPdXRNb2RlbDtcclxuICB9XHJcblxyXG4gIGdldEJ1dHRvbklkKGluZGV4OiBudW1iZXIpIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGE/LmFjdGlvbj8uYnV0dG9uc1tpbmRleF0/LmlkID8/IFwiXCI7XHJcbiAgfVxyXG4gIGdldEJ1dHRvblN0eWxlKGluZGV4OiBudW1iZXIpIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGE/LmFjdGlvbj8uYnV0dG9uc1tpbmRleF0/LnN0eWxlcztcclxuICB9XHJcbiAgZ2V0QnV0dG9uRGF0YShpbmRleDogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhPy5hY3Rpb24/LmJ1dHRvbnNbaW5kZXhdPy5jb250ZW50O1xyXG4gIH1cclxuXHJcbiAgcmVkaXJlY3RUbyhzY2hlbWU6IGFueSkge1xyXG4gICAgLy8gaWYgKCFkYXRhPy5wYWdlSWQgJiYgZGF0YT8ucmVkaXJlY3Rpb25VcmwpXHJcbiAgICAvLyAgIHJldHVybjtcclxuICAgIC8vIHRoaXMuX2V2ZW50U2VydmljZS5idXR0b25SZWRpcmVjdGlvbi5lbWl0KHsgZGF0YTogZGF0YSB9KTtcclxuICB9XHJcbiAgY2xvc2VEaWFsb2coKSB7XHJcbiAgICB0aGlzLm1hdERpYWxvZy5jbG9zZUFsbCgpO1xyXG4gIH1cclxuICBzdG9yZUNoYXJnZXM6IGFueTtcclxuICBlbnJvbGxTY2hlbWUoc2NoZW1lOiBhbnkpIHtcclxuICAgIGNvbnN0IHVzZXJEZXRhaWxzID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyKCk7XHJcbiAgICBjb25zb2xlLmxvZyh1c2VyRGV0YWlscyk7XHJcbiAgICBsZXQgcGF5bG9hZCA9XHJcbiAgICB7XHJcbiAgICAgIHVzZXJCYXNpY0RldGFpbHM6IHtcclxuICAgICAgICBjdXN0b21lcl9pZDogdXNlckRldGFpbHM/LnVzZXJJZCxcclxuICAgICAgICBjdXN0b21lcl9uYW1lOiB1c2VyRGV0YWlscz8uY29udGFjdD8ubmFtZSxcclxuICAgICAgICBjdXN0b21lcl9waG9uZTogdXNlckRldGFpbHM/LmNvbnRhY3Q/Lm1vYmlsZSxcclxuICAgICAgICBjdXN0b21lcl9lbWFpbDogdXNlckRldGFpbHM/LmNvbnRhY3Q/LmVtYWlsLFxyXG4gICAgICB9LFxyXG4gICAgICBzY2hlbWVJZDogc2NoZW1lPy5pZCxcclxuICAgICAgc2NoZW1lTmFtZTogc2NoZW1lPy5zY2hlbWVOYW1lLFxyXG4gICAgICBlYXJseVJlZGVtcHRpb25DaGFyZ2U6IHNjaGVtZT8uZW5yb2xsbWVudEZlZXMsXHJcbiAgICAgIGluc3RhbGxtZW50QW1vdW50OiB0aGlzLm1vbnRobHlBbW91bnQsXHJcbiAgICAgIHN0b3JlUmVmSWQ6IHNjaGVtZT8uc2NoZW1lUmVwcmVzZW50YXRpdmVJZCxcclxuICAgICAgc3RvcmVJZDogc2NoZW1lPy5zdG9yZUlkLFxyXG4gICAgICBzdG9yZU5hbWU6IHNjaGVtZT8uc3RvcmVOYW1lLFxyXG4gICAgICBtYXR1cml0eUNvdW50OiBzY2hlbWU/Lm1hdHVyaXR5Q291bnQsXHJcbiAgICAgIGpld2VsbGVyQmVuZWZpdDogc2NoZW1lPy5qZXdlbGxlckJlbmVmaXQsXHJcbiAgICAgIGR1ZU1vbnRoczogc2NoZW1lPy5tYXR1cml0eUNvdW50LFxyXG4gICAgICBidXNpbmVzc0lkOiBzY2hlbWU/LmJ1c2luZXNzSWQsXHJcbiAgICAgIGJ1c2luZXNzTmFtZTogc2NoZW1lPy5idXNpbmVzc05hbWUsXHJcbiAgICAgIGVuYWJsZUVhcmx5UmVkZW1wdGlvbjogc2NoZW1lPy5lbmFibGVFYXJseVJlZGVtcHRpb24sXHJcbiAgICAgIHJlZGVtcHRpb25TbGFiTGlzdDogc2NoZW1lPy5yZWRlbXB0aW9uU2xhYkxpc3QsXHJcbiAgICAgIHNjaGVtZVR5cGU6IHNjaGVtZT8uc2NoZW1lVHlwZSxcclxuICAgICAgbWV0YWxUeXBlOiBzY2hlbWU/Lm1ldGFsVHlwZSxcclxuICAgICAga2FyYXRUeXBlOiBzY2hlbWU/LmthcmF0VHlwZSxcclxuICAgICAgY3VzdG9tZXJBY2NvdW50OiBcIlwiXHJcbiAgICB9XHJcblxyXG5cclxuICAgIHRoaXMucmVzdFNlcnZpY2UuZW5yb2xsU2NoZW1lKHBheWxvYWQsIHRydWUpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEuY2FzaGZyZWVSZXNwb25zZSAhPSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbnRpbnVlUGF5bWVudChwYXlsb2FkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnN0b3JlQ2hhcmdlcyA9IHJlc3BvbnNlLmRhdGEuY2FydDtcclxuICAgICAgICAgIGxldCBkaWFsb2cgPSB0aGlzLm1hdERpYWxvZy5vcGVuKHRoaXMuc2hvd0NoYXJnZXNUZW1wbGF0ZSwge1xyXG4gICAgICAgICAgICBwYW5lbENsYXNzOiAnc2hvdy1jaGFyZ2VzLWNsYXNzJ1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIGRpYWxvZy5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGludWVQYXltZW50KHBheWxvYWQpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyKVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuICBjb250aW51ZVBheW1lbnQocGF5bG9hZDogYW55KSB7XHJcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmVucm9sbFNjaGVtZShwYXlsb2FkLCBmYWxzZSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgncGFzc2Jvb2tPcmRlcklkJywgcmVzcG9uc2UuZGF0YS5vcmRlcklkKTtcclxuICAgICAgICB0aGlzLm9wZW5DYXNoZnJlZVNkayhyZXNwb25zZS5kYXRhLnNlc3Npb25JZClcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7IH1cclxuICAgIH0pXHJcbiAgfVxyXG4gIGFsbFNjaGVtZXM6IGFueVtdID0gW107XHJcbiAgZ2V0RW5yb2xsZWRTY2hlbWVzKCkge1xyXG4gICAgY29uc3QgcGF5bG9hZCA9IHtcclxuICAgICAgYnVzaW5lc3NJZHM6IFtcclxuICAgICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYnVzaW5lc3NJZCcpXHJcbiAgICAgIF1cclxuICAgIH1cclxuICAgIHRoaXMucmVzdFNlcnZpY2UuZ2V0QWxsRW5yb2xsZWRTY2hlbWVzKHBheWxvYWQpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuYWxsU2NoZW1lcyA9IHJlcy5kYXRhPy5kYXRhO1xyXG4gICAgICAgIHRoaXMuYWxsU2NoZW1lcyA9IHRoaXMuYWxsU2NoZW1lcy5tYXAoaXRlbSA9PiAoe1xyXG4gICAgICAgICAgLi4uaXRlbSxcclxuICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZVxyXG4gICAgICAgIH0pKTtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmFsbFNjaGVtZXMpXHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuICBpbnN0YWxsbWVudE9wdGlvbnM6IG51bWJlcltdID0gW107XHJcbiAgb3BlbkNhc2hmcmVlU2RrKHNlc3Npb25JZDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9ldmVudFNlcnZpY2UuY2FzaEZyZWVFdmVudC5lbWl0KHsgZGF0YTogeyBvcmRlclNpZ25hdHVyZTogc2Vzc2lvbklkIH0gfSlcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInRvdGFsLWNvbnRhaW5lciBwb3NpdGlvbi1yZWxhdGl2ZVwiIHNpbXBvSG92ZXIgKGhvdmVyaW5nKT1cInNob3dFZGl0VGFicygkZXZlbnQpXCIgW2lkXT1cImRhdGE/LmlkXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWFpbi1zZWN0aW9uXCIgW2lkXT1cImRhdGE/LmlkXCIgW3NpbXBvQmFja2dyb3VuZF09XCJzdHlsZXM/LmJhY2tncm91bmRcIiBbc3BhY2luZ0hvcml6b250YWxdPVwic3R5bGVzTGF5b3V0XCJcclxuICAgICAgICBbc2ltcG9MYXlvdXRdPVwic3R5bGVzTGF5b3V0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlcnMgdy0xMDBcIiBbc2ltcG9BbmltYXRpb25dPVwic3R5bGVzPy5hbmltYXRpb25cIiBbaWRdPVwiZGF0YT8uaWRcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkYXRhPy5jb250ZW50Py5pbnB1dFRleHRcIj5cclxuICAgICAgICAgICAgICAgIDxzaW1wby10ZXh0LWVkaXRvciBbKHZhbHVlKV09XCJpdGVtLnZhbHVlXCIgW2VkaXRhYmxlXT1cImVkaXQgfHwgZmFsc2VcIj48L3NpbXBvLXRleHQtZWRpdG9yPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbi1jb250YWluZXJcIiBbc2ltcG9BbmltYXRpb25dPVwic3R5bGVzPy5hbmltYXRpb25cIiBbaWRdPVwiZGF0YT8uaWRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGN1bGF0b3IgYngtc2hkIHctNzUgbXgtYXV0byBteS0zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsY3VsYXRvci1oZWFkZXIgdGV4dC1jZW50ZXIgbWItNCAgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJtYi0wIGNhbGN1bGF0b3ItdGl0bGVcIj5JbnRlcmFjdGl2ZSBSZXR1cm5zIENhbGN1bGF0b3I8L2gzPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViLWhlYWRlciBtYi0zIHAtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxoNiBjbGFzcz1cIm1iLTAgc3ViLWhlYWRlci10ZXh0XCI+U2VsZWN0IFlvdXIgUHJlZmVycmVkIFNjaGVtZTwvaDY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxjdWxhdG9yLWJvZHktdG9wIGQtZmxleCBtYi00IHB4LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzY2hlbWUgb2YgYWxsU2NoZW1lc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBzY2hlbWUtb3B0aW9uICBwLTMgYm9yZGVyIHJvdW5kZWQgYm9yZGVyLXByaW1hcnkgaW5kLWJvcmRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TY2hlbWVDaGFuZ2Uoc2NoZW1lKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlclwiIHR5cGU9XCJyYWRpb1wiIG5hbWU9XCJzY2hlbWVcIiBpZD1cImluZGl2aWR1YWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25TY2hlbWVDaGFuZ2Uoc2NoZW1lKVwiIFtjaGVja2VkXT1cInNjaGVtZS5zZWxlY3RlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgbXMtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg8J+RpFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2NoZW1lLWhlYWRlciBmdy1ib2xkXCI+e3tzY2hlbWU/LnNjaGVtZU5hbWUgPyBzY2hlbWUuc2NoZW1lTmFtZSA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTi9BJ319PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNjaGVtZS1kZXNjcmlwdGlvbiB0ZXh0LW11dGVkIHNtYWxsXCI+UGF5IDEwIG1vbnRocywgZ2V0IDExdGggbW9udGggRlJFRVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi1oZWFkZXIgbWItMyBweC0zXCIgKm5nSWY9XCJtaW5BbW91bnQgJiYgbWF4QW1vdW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGg2IGNsYXNzPVwibWItMCBzdWItaGVhZGVyLXRleHRcIj5TZWxlY3QgWW91ciBNb250aGx5IEludmVzdG1lbnQgQW1vdW50PC9oNj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxjdWxhdGUtc2xpZGVyIG1iLTQgcHgtM1wiICpuZ0lmPVwibWluQW1vdW50ICYmIG1heEFtb3VudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbGlkZXItY29udGFpbmVyIHBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicmFuZ2VcIiBjbGFzcz1cImZvcm0tcmFuZ2UgY3VzdG9tLXJhbmdlXCIgW21pbl09XCJtaW5BbW91bnRcIiBbbWF4XT1cIm1heEFtb3VudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGVwPVwiMTAwMFwiIFsobmdNb2RlbCldPVwibW9udGhseUFtb3VudFwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQW1vdW50Q2hhbmdlKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNsaWRlci1sYWJlbHMgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1tdXRlZFwiPuKCuXt7bWluQW1vdW50IHwgbnVtYmVyfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtY2VudGVyIGZ3LWJvbGQgZnMtNCBtb250aGx5LWFtb3VudFwiPuKCuXt7bW9udGhseUFtb3VudCB8IG51bWJlcn19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LW11dGVkXCI+4oK5e3ttYXhBbW91bnQgfCBudW1iZXJ9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciB0ZXh0LW11dGVkIHNtYWxsIG10LTFcIj5Nb250aGx5IEludmVzdG1lbnQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFuZG9tX29waXRvbnMgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgZ2FwLTMgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpbnN0YWxsbWVudE9wdGlvbnMgJiYgaW5zdGFsbG1lbnRPcHRpb25zLmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9wdGlvbiBjdXJzb3ItcG9pbnRlclwiICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgaW5zdGFsbG1lbnRPcHRpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXRNb250aGx5QW1vdW50KG9wdGlvbilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7b3B0aW9ufX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsY3VsYXRvci1ib3R0b20gcHgtMyBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNlbGVjdGVkU2NoZW1lID09PSAnaW5kaXZpZHVhbCdcIiBjbGFzcz1cInNjaGVtZS1yZXN1bHRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKtkCA8aDYgY2xhc3M9XCJtYi0wIGluZGl2aWR1YWwtcmVzdWx0cy10aXRsZVwiPkluZGl2aWR1YWwgU2NoZW1lIFJlc3VsdHM8L2g2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlc3VsdC1jYXJkIHRleHQtY2VudGVyIHAtMyBib3JkZXIgcm91bmRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVzdWx0LWFtb3VudCBmdy1ib2xkIGZzLTVcIj7igrl7eyhtb250aGx5QW1vdW50ICogbWF0dXJpdHlDb3VudCkgfFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlc3VsdC1sYWJlbCB0ZXh0LW11dGVkIHNtYWxsXCI+WW91ciB7e21hdHVyaXR5Q291bnR9fS1Nb250aCBDb250cmlidXRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXN1bHQtY2FyZCB0ZXh0LWNlbnRlciBwLTMgYm9yZGVyIHJvdW5kZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlc3VsdC1hbW91bnQgZnctYm9sZCBmcy01XCI+4oK5e3tiZW5lZml0QW1vdW50IHwgbnVtYmVyfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlc3VsdC1sYWJlbCB0ZXh0LW11dGVkIHNtYWxsXCI+U2NoZW1lIEJlbmVmaXQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlc3VsdC1jYXJkIHJlc3VsdC1jYXJkLWhpZ2hsaWdodCB0ZXh0LWNlbnRlciBwLTMgYm9yZGVyIHJvdW5kZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlc3VsdC1hbW91bnQgZnctYm9sZCBmcy01XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZW5yb2xsZWRTY2hlbWU/LmJlbmVmaXRUeXBlICE9ICdESVNDT1VOVCdcIj7igrl7eygobW9udGhseUFtb3VudCAqXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXR1cml0eUNvdW50KStiZW5lZml0QW1vdW50KSB8IG51bWJlcn19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXN1bHQtYW1vdW50IGZ3LWJvbGQgZnMtNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImVucm9sbGVkU2NoZW1lPy5iZW5lZml0VHlwZSA9PT0gJ0RJU0NPVU5UJ1wiPuKCuXt7KChtb250aGx5QW1vdW50ICpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdHVyaXR5Q291bnQpKSB8IG51bWJlcn19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXN1bHQtbGFiZWwgc21hbGwgb3BhY2l0eS03NVwiPlRvdGFsIFJlZGVtcHRpb24gVmFsdWU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib251cy1tZXNzYWdlIHRleHQtY2VudGVyIG1iLTMgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiICpuZ0lmPVwiZW5yb2xsZWRTY2hlbWUgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RvcmVfc2VsZWN0aW9uICBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5TZWxlY3QgU3RvcmUgOiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0b3JlLXNlbGVjdG9yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgaWQ9XCJzdG9yZURyb3Bkb3duXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFN0b3JlXCIgY2xhc3M9XCJmb3JtLXNlbGVjdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiIGRpc2FibGVkPkNob29zZSBhIHN0b3JlLi4uPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBzdG9yZSBvZiBzdG9yZXM7XCIgW3ZhbHVlXT1cInN0b3JlLmlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tzdG9yZS5uYW1lfX0gLSB7e3N0b3JlLnN0b3JlUmVmSWR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RhZmYtc2VsZWN0b3IgIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJzdGFmZkRyb3Bkb3duXCI+U2VsZWN0IFN0YWZmIE1lbWJlciA6IDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBpZD1cInN0YWZmRHJvcGRvd25cIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkU3RhZmZcIiBjbGFzcz1cImZvcm0tc2VsZWN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIiBkaXNhYmxlZD5DaG9vc2UgYSBzdGFmZiBtZW1iZXIuLi48L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgc3RhZmYgb2Ygc3RhZmZNZW1iZXJzO1wiIFt2YWx1ZV09XCJzdGFmZi5pZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tzdGFmZi5uYW1lfX0gLSB7e3N0YWZmLnJvbGUgPyBzdGFmZi5yb2xlIDogJ3N0YWZmJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImVucm9sbC1idG4gdy0xMDAgcHktMyBmdy1ib2xkIG1iLTJcIiBbYXBwQnV0dG9uRWRpdG9yXT1cImVkaXQgPz8gZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2ltcG9CdXR0b25EaXJlY3RpdmUgW2J1dHRvblN0eWxlXT1cImdldEJ1dHRvblN0eWxlKDApXCIgW2J1dHRvbklkXT1cImdldEJ1dHRvbklkKDApXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWN0aW9uSWRdPVwiZGF0YT8uaWRcIiBbaWRdPVwiZGF0YT8uaWQrZ2V0QnV0dG9uSWQoMClcIiBbYnV0dG9uRGF0YV09XCJnZXRCdXR0b25EYXRhKDApXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJlbnJvbGxTY2hlbWUoZW5yb2xsZWRTY2hlbWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnJvbGwgaW4gU2NoZW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzZWxlY3RlZFNjaGVtZSA9PT0gJ2dyb3VwJ1wiIGNsYXNzPVwic2NoZW1lLXJlc3VsdHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAg4q2QIDxoNiBjbGFzcz1cIm1iLTAgZ3JvdXAtcmVzdWx0cy10aXRsZVwiPkdyb3VwIFNjaGVtZSBSZXN1bHRzPC9oNj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXN1bHQtY2FyZCB0ZXh0LWNlbnRlciBwLTMgYm9yZGVyIHJvdW5kZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlc3VsdC1hbW91bnQgZnctYm9sZCBmcy01XCI+4oK5e3sobW9udGhseUFtb3VudCAqIDExKSB8IG51bWJlcn19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXN1bHQtbGFiZWwgdGV4dC1tdXRlZCBzbWFsbFwiPllvdXIgVG90YWwgMTEtTW9udGggQ29udHJpYnV0aW9uPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXN1bHQtY2FyZCByZXN1bHQtY2FyZC1ncm91cCB0ZXh0LWNlbnRlciBwLTMgYm9yZGVyIHJvdW5kZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlc3VsdC1hbW91bnQgZnctYm9sZCBmcy01XCI+4oK5e3sobW9udGhseUFtb3VudCAqIDExKSB8IG51bWJlcn19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXN1bHQtbGFiZWwgc21hbGwgb3BhY2l0eS03NVwiPk1vbnRobHkgTHVja3kgRHJhdyBBbW91bnQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJlbnJvbGwtYnRuIHctMTAwIHB5LTMgZnctYm9sZCBtYi0yXCIgW2FwcEJ1dHRvbkVkaXRvcl09XCJlZGl0ID8/IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbXBvQnV0dG9uRGlyZWN0aXZlIFtidXR0b25TdHlsZV09XCJnZXRCdXR0b25TdHlsZSgwKVwiIFtidXR0b25JZF09XCJnZXRCdXR0b25JZCgwKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VjdGlvbklkXT1cImRhdGE/LmlkXCIgW2lkXT1cImRhdGE/LmlkK2dldEJ1dHRvbklkKDApXCIgW2J1dHRvbkRhdGFdPVwiZ2V0QnV0dG9uRGF0YSgwKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5yb2xsIGluIFNjaGVtZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPG5nLXRlbXBsYXRlICNzaG93Q2hhcmdlcz5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicGF5bWVudC1kaWFsb2dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRpYWxvZy1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgIDxoMj5QYXltZW50IERldGFpbHM8L2gyPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNsb3NlLWJ0blwiIG1hdC1pY29uLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBheW1lbnQtY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBheW1lbnQtcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPkluc3RhbGxtZW50IEFtb3VudDo8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhbW91bnRcIj7igrl7e3N0b3JlQ2hhcmdlcz8uYnJlYWtkb3duPy5pbnN0YWxsbWVudEFtb3VudCA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChzdG9yZUNoYXJnZXM/LmJyZWFrZG93bj8uaW5zdGFsbG1lbnRBbW91bnQgfCBudW1iZXIpIDogMCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYXltZW50LXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj5Db252ZW5pZW5jZSBGZWU6PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYW1vdW50XCI+4oK5e3tzdG9yZUNoYXJnZXM/LmJyZWFrZG93bj8uY29udmVuaWVuY2VGZWU/LnZhbHVlID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgKHN0b3JlQ2hhcmdlcz8uYnJlYWtkb3duPy5jb252ZW5pZW5jZUZlZT8udmFsdWUgfCBudW1iZXIpIDogMCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYXltZW50LXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj5QYXltZW50IFNlcnZpY2UgQ2hhcmdlczo8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhbW91bnRcIj7igrl7e3N0b3JlQ2hhcmdlcz8uYnJlYWtkb3duPy5wYXltZW50U2VydmljZUNoYXJnZXM/LnZhbHVlID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgKHN0b3JlQ2hhcmdlcz8uYnJlYWtkb3duPy5wYXltZW50U2VydmljZUNoYXJnZXM/LnZhbHVlIHwgbnVtYmVyKSA6IDAgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGF5bWVudC1yb3cgdG90YWwtcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbCB0b3RhbC1sYWJlbFwiPlRvdGFsIEFtb3VudDo8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhbW91bnQgdG90YWwtYW1vdW50XCI+4oK5e3tzdG9yZUNoYXJnZXM/LmJyZWFrZG93bj8udG90YWxBbW91bnQgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAoc3RvcmVDaGFyZ2VzPy5icmVha2Rvd24/LnRvdGFsQW1vdW50IHwgbnVtYmVyKSA6IDAgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGlhbG9nLWFjdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb250aW51ZS1idG5cIiAoY2xpY2spPVwiY2xvc2VEaWFsb2coKVwiPkNvbnRpbnVlPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxkaXYgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBlZGl0fVwiICpuZ0lmPVwic2hvd0VkaXRvcnNcIj5cclxuICAgICAgICA8c2ltcG8taG92ZXItZWxlbWVudHMgW2RhdGFdPVwiZGF0YVwiIFtpbmRleF09XCJpbmRleFwiIFtlZGl0T3B0aW9uc109XCJlZGl0XCI+PC9zaW1wby1ob3Zlci1lbGVtZW50cz5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgKm5nSWY9XCJzaG93RGVsZXRlXCIgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBkZWxldGV9XCI+XHJcbiAgICAgICAgPHNpbXBvLWRlbGV0ZS1ob3Zlci1lbGVtZW50IFtkYXRhXT1cImRhdGFcIiBbaW5kZXhdPVwiaW5kZXhcIj48L3NpbXBvLWRlbGV0ZS1ob3Zlci1lbGVtZW50PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==