tango-app-ui-manage-stores 3.0.17-dev → 3.0.19-dev

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 (29) hide show
  1. package/esm2022/lib/components/add-stores/add-stores.component.mjs +57 -62
  2. package/esm2022/lib/components/add-stores-form/add-stores-form.component.mjs +27 -40
  3. package/esm2022/lib/components/create-group/create-group.component.mjs +23 -14
  4. package/esm2022/lib/components/group-delete-popup/group-delete-popup.component.mjs +3 -3
  5. package/esm2022/lib/components/group-details/group-details.component.mjs +302 -70
  6. package/esm2022/lib/components/tango-manage-groups/tango-manage-groups.component.mjs +24 -18
  7. package/esm2022/lib/components/tango-manage-stores/tango-manage-stores.component.mjs +27 -16
  8. package/esm2022/lib/guards/store-edit.guard.mjs +16 -0
  9. package/esm2022/lib/route-wrappers/edge-wrapper.module.mjs +18 -0
  10. package/esm2022/lib/services/excel.service.mjs +3 -3
  11. package/esm2022/lib/services/group.service.mjs +3 -3
  12. package/esm2022/lib/services/stores.service.mjs +29 -13
  13. package/esm2022/lib/tango-manage-stores-routing.module.mjs +15 -7
  14. package/esm2022/lib/tango-manage-stores.module.mjs +4 -4
  15. package/esm2022/lib/utils/filters/filters.component.mjs +3 -3
  16. package/fesm2022/tango-app-ui-manage-stores-edge-wrapper.module-DM8Er_Bd.mjs +21 -0
  17. package/fesm2022/tango-app-ui-manage-stores-edge-wrapper.module-DM8Er_Bd.mjs.map +1 -0
  18. package/fesm2022/tango-app-ui-manage-stores.mjs +667 -398
  19. package/fesm2022/tango-app-ui-manage-stores.mjs.map +1 -1
  20. package/lib/components/add-stores/add-stores.component.d.ts +5 -1
  21. package/lib/components/add-stores-form/add-stores-form.component.d.ts +4 -4
  22. package/lib/components/create-group/create-group.component.d.ts +2 -2
  23. package/lib/components/group-details/group-details.component.d.ts +30 -11
  24. package/lib/components/tango-manage-groups/tango-manage-groups.component.d.ts +6 -7
  25. package/lib/components/tango-manage-stores/tango-manage-stores.component.d.ts +4 -1
  26. package/lib/guards/store-edit.guard.d.ts +2 -0
  27. package/lib/route-wrappers/edge-wrapper.module.d.ts +7 -0
  28. package/lib/services/stores.service.d.ts +3 -0
  29. package/package.json +1 -1
@@ -1,17 +1,17 @@
1
1
  import { Component, ViewChild, } from "@angular/core";
2
2
  import { Validators } from "@angular/forms";
3
- import Swal from "sweetalert2";
4
3
  import * as moment from 'moment-timezone';
5
4
  import * as i0 from "@angular/core";
6
5
  import * as i1 from "@angular/forms";
7
6
  import * as i2 from "../../services/stores.service";
8
- import * as i3 from "@angular/router";
9
- import * as i4 from "@angular/common";
10
- import * as i5 from "@angular-magic/ngx-gp-autocomplete";
7
+ import * as i3 from "tango-app-ui-shared";
8
+ import * as i4 from "@angular/router";
9
+ import * as i5 from "@angular/common";
10
+ import * as i6 from "@angular-magic/ngx-gp-autocomplete";
11
11
  export class AddStoresFormComponent {
12
12
  fb;
13
13
  storesService;
14
- changeDetector;
14
+ ts;
15
15
  router;
16
16
  placesRef;
17
17
  select = "store_info";
@@ -31,10 +31,10 @@ export class AddStoresFormComponent {
31
31
  this.storeForm.get("pincode")?.setValue(pincode);
32
32
  }
33
33
  }
34
- constructor(fb, storesService, changeDetector, router) {
34
+ constructor(fb, storesService, ts, router) {
35
35
  this.fb = fb;
36
36
  this.storesService = storesService;
37
- this.changeDetector = changeDetector;
37
+ this.ts = ts;
38
38
  this.router = router;
39
39
  let data = JSON.parse(localStorage.getItem('header-filters') || '');
40
40
  this.$headerFilters = data;
@@ -149,7 +149,6 @@ export class AddStoresFormComponent {
149
149
  let store = {
150
150
  storeName: this.storeForm.value.storeName,
151
151
  clientId: this.storeForm.value.clientId,
152
- brandName: "Lenskart",
153
152
  businessType: this.storeForm.value.businessType,
154
153
  storeType: {
155
154
  type: this.storeForm.value.storeType_type,
@@ -193,43 +192,31 @@ export class AddStoresFormComponent {
193
192
  }
194
193
  this.storesService.createStore(store).subscribe((res) => {
195
194
  if (res && res.code === 200 && res.status === "success") {
196
- this.swalToast("Store Created Successfully!");
195
+ this.ts.getSuccessToast("Store Created Successfully!");
196
+ if (res.data.store && res.data.store.storeId) {
197
+ this.storesService
198
+ .createInfraTicket({
199
+ storeId: res.data.store.storeId,
200
+ Date: new Date().toISOString().split("T")[0],
201
+ issueType: "installation",
202
+ })
203
+ .subscribe({
204
+ next: (res) => { },
205
+ error: () => { },
206
+ });
207
+ }
197
208
  this.router.navigate(["/manage/stores"]);
198
209
  }
199
210
  else {
200
- this.swalToast("Unable to create store!");
211
+ this.ts.getErrorToast("Unable to create store!");
201
212
  }
202
213
  }, (error) => {
203
- this.swalToast("Unable to create store!");
214
+ this.ts.getErrorToast("Unable to create store!");
204
215
  });
205
216
  }
206
217
  else {
207
218
  }
208
219
  }
209
- swalToast(msg, icon) {
210
- Swal.fire({
211
- toast: true,
212
- ...(icon ? { iconHtml: icon } : {}),
213
- // titleText: `Checklist Form Error`,
214
- html: `<div class="row px-0">
215
- <div class="col-12 mt-2 text-nowrap">
216
- <div class="toasttitile text-nowrap">${msg}</div>
217
- </div>
218
-
219
- </div>`,
220
- position: "bottom",
221
- showConfirmButton: false,
222
- showCloseButton: true,
223
- timer: 6000,
224
- timerProgressBar: true,
225
- didOpen: (toast) => {
226
- toast.addEventListener("mouseenter", Swal.stopTimer);
227
- toast.addEventListener("mouseleave", Swal.resumeTimer);
228
- $("#kt_create_account_form_account_type_personal")?.val("");
229
- this.changeDetector.detectChanges();
230
- },
231
- });
232
- }
233
220
  navigateToAddStore() {
234
221
  this.router.navigate(["/manage/stores/addition-method"]);
235
222
  }
@@ -241,14 +228,14 @@ export class AddStoresFormComponent {
241
228
  getAllTimezones() {
242
229
  this.timezones = moment.tz.names();
243
230
  }
244
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: AddStoresFormComponent, deps: [{ token: i1.FormBuilder }, { token: i2.StoresService }, { token: i0.ChangeDetectorRef }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Component });
245
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.2", type: AddStoresFormComponent, selector: "lib-add-stores-form", viewQueries: [{ propertyName: "placesRef", first: true, predicate: ["ngxPlaces"], descendants: true }], ngImport: i0, template: "<div class=\"row mt-3 mb-6\">\r\n <div class=\"col-md-3 col-lg-3 col-xl-3 col-xxl-3\" id=\"left-container\">\r\n <div class=\"card card-flush h-100 mb-0\">\r\n <!--begin::Aside content-->\r\n <div class=\"card-body\">\r\n <div\r\n class=\"menu menu-column menu-rounded menu-state-bg menu-state-title-primary menu-state-icon-primary menu-state-bullet-primary\">\r\n <!--begin::Menu item-->\r\n <div class=\"menu-item my-3\">\r\n <!--begin::Inbox-->\r\n <span class=\"menu-link\" [ngClass]=\"{ 'active': select === 'store_info' }\"\r\n (click)=\"settingvalue('store_info')\">\r\n <span class=\"menu-icon\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path stroke=\"currentColor\"\r\n d=\"M3.08995 6.88369L3.02401 6.98669C2.30358 8.25557 3.06101 9.87945 4.46464 10.0662C4.58627 10.0811 4.70112 10.0892 4.8145 10.0892C5.55255 10.0892 6.20523 9.77229 6.65953 9.27917L7.21286 8.67854L7.76432 9.28089C8.21367 9.77171 8.8652 10.0892 9.60776 10.0892C10.3471 10.0892 11.0022 9.77137 11.4512 9.28089L12.0044 8.67665L12.5576 9.28089C13.0066 9.77137 13.6617 10.0892 14.401 10.0892C15.1404 10.0892 15.7954 9.77137 16.2445 9.28089L16.7977 8.67665L17.3508 9.28089C17.7999 9.77137 18.4549 10.0892 19.1943 10.0892C19.3041 10.0892 19.4223 10.0811 19.5433 10.0663C20.9772 9.87168 21.7355 8.16387 20.9155 6.88419C20.9154 6.88413 20.9154 6.88407 20.9154 6.88402L18.8056 3.59429L18.8056 3.59429L18.8046 3.59282C18.7582 3.52002 18.6649 3.46423 18.5584 3.46423H5.44307C5.3365 3.46423 5.24326 3.52002 5.19681 3.59282L5.19619 3.59379L3.08995 6.88369ZM4.81818 12.7499C4.71644 12.7499 4.616 12.7468 4.5169 12.741V16.6428V18.9642C4.5169 19.8211 5.22663 20.5357 6.11942 20.5357H17.882C18.7748 20.5357 19.4845 19.8211 19.4845 18.9642V16.6428V12.7415C19.3874 12.747 19.2893 12.7499 19.1906 12.7499C19.0022 12.7499 18.8157 12.7398 18.632 12.7202V16.6428V17.3928H17.882H6.11942H5.36942V16.6428V12.721C5.18866 12.74 5.00472 12.7499 4.81818 12.7499Z\" />\r\n </svg></span>\r\n <span class=\"menu-title fw-bold \">Store Info</span>\r\n </span>\r\n <!--end::Inbox-->\r\n </div>\r\n <div class=\"menu-item my-3\">\r\n <!--begin::Inbox-->\r\n <span class=\"menu-link\" [ngClass]=\"{ 'active': select === 'config' }\"\r\n (click)=\"settingvalue('config')\">\r\n <span class=\"menu-icon\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"none\">\r\n <g clip-path=\"url(#clip0_1017_22270)\">\r\n <path\r\n d=\"M12 15C13.6569 15 15 13.6569 15 12C15 10.3431 13.6569 9 12 9C10.3431 9 9 10.3431 9 12C9 13.6569 10.3431 15 12 15Z\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M19.4 15C19.2669 15.3016 19.2272 15.6362 19.286 15.9606C19.3448 16.285 19.4995 16.5843 19.73 16.82L19.79 16.88C19.976 17.0657 20.1235 17.2863 20.2241 17.5291C20.3248 17.7719 20.3766 18.0322 20.3766 18.295C20.3766 18.5578 20.3248 18.8181 20.2241 19.0609C20.1235 19.3037 19.976 19.5243 19.79 19.71C19.6043 19.896 19.3837 20.0435 19.1409 20.1441C18.8981 20.2448 18.6378 20.2966 18.375 20.2966C18.1122 20.2966 17.8519 20.2448 17.6091 20.1441C17.3663 20.0435 17.1457 19.896 16.96 19.71L16.9 19.65C16.6643 19.4195 16.365 19.2648 16.0406 19.206C15.7162 19.1472 15.3816 19.1869 15.08 19.32C14.7842 19.4468 14.532 19.6572 14.3543 19.9255C14.1766 20.1938 14.0813 20.5082 14.08 20.83V21C14.08 21.5304 13.8693 22.0391 13.4942 22.4142C13.1191 22.7893 12.6104 23 12.08 23C11.5496 23 11.0409 22.7893 10.6658 22.4142C10.2907 22.0391 10.08 21.5304 10.08 21V20.91C10.0723 20.579 9.96512 20.258 9.77251 19.9887C9.5799 19.7194 9.31074 19.5143 9 19.4C8.69838 19.2669 8.36381 19.2272 8.03941 19.286C7.71502 19.3448 7.41568 19.4995 7.18 19.73L7.12 19.79C6.93425 19.976 6.71368 20.1235 6.47088 20.2241C6.22808 20.3248 5.96783 20.3766 5.705 20.3766C5.44217 20.3766 5.18192 20.3248 4.93912 20.2241C4.69632 20.1235 4.47575 19.976 4.29 19.79C4.10405 19.6043 3.95653 19.3837 3.85588 19.1409C3.75523 18.8981 3.70343 18.6378 3.70343 18.375C3.70343 18.1122 3.75523 17.8519 3.85588 17.6091C3.95653 17.3663 4.10405 17.1457 4.29 16.96L4.35 16.9C4.58054 16.6643 4.73519 16.365 4.794 16.0406C4.85282 15.7162 4.81312 15.3816 4.68 15.08C4.55324 14.7842 4.34276 14.532 4.07447 14.3543C3.80618 14.1766 3.49179 14.0813 3.17 14.08H3C2.46957 14.08 1.96086 13.8693 1.58579 13.4942C1.21071 13.1191 1 12.6104 1 12.08C1 11.5496 1.21071 11.0409 1.58579 10.6658C1.96086 10.2907 2.46957 10.08 3 10.08H3.09C3.42099 10.0723 3.742 9.96512 4.0113 9.77251C4.28059 9.5799 4.48572 9.31074 4.6 9C4.73312 8.69838 4.77282 8.36381 4.714 8.03941C4.65519 7.71502 4.50054 7.41568 4.27 7.18L4.21 7.12C4.02405 6.93425 3.87653 6.71368 3.77588 6.47088C3.67523 6.22808 3.62343 5.96783 3.62343 5.705C3.62343 5.44217 3.67523 5.18192 3.77588 4.93912C3.87653 4.69632 4.02405 4.47575 4.21 4.29C4.39575 4.10405 4.61632 3.95653 4.85912 3.85588C5.10192 3.75523 5.36217 3.70343 5.625 3.70343C5.88783 3.70343 6.14808 3.75523 6.39088 3.85588C6.63368 3.95653 6.85425 4.10405 7.04 4.29L7.1 4.35C7.33568 4.58054 7.63502 4.73519 7.95941 4.794C8.28381 4.85282 8.61838 4.81312 8.92 4.68H9C9.29577 4.55324 9.54802 4.34276 9.72569 4.07447C9.90337 3.80618 9.99872 3.49179 10 3.17V3C10 2.46957 10.2107 1.96086 10.5858 1.58579C10.9609 1.21071 11.4696 1 12 1C12.5304 1 13.0391 1.21071 13.4142 1.58579C13.7893 1.96086 14 2.46957 14 3V3.09C14.0013 3.41179 14.0966 3.72618 14.2743 3.99447C14.452 4.26276 14.7042 4.47324 15 4.6C15.3016 4.73312 15.6362 4.77282 15.9606 4.714C16.285 4.65519 16.5843 4.50054 16.82 4.27L16.88 4.21C17.0657 4.02405 17.2863 3.87653 17.5291 3.77588C17.7719 3.67523 18.0322 3.62343 18.295 3.62343C18.5578 3.62343 18.8181 3.67523 19.0609 3.77588C19.3037 3.87653 19.5243 4.02405 19.71 4.21C19.896 4.39575 20.0435 4.61632 20.1441 4.85912C20.2448 5.10192 20.2966 5.36217 20.2966 5.625C20.2966 5.88783 20.2448 6.14808 20.1441 6.39088C20.0435 6.63368 19.896 6.85425 19.71 7.04L19.65 7.1C19.4195 7.33568 19.2648 7.63502 19.206 7.95941C19.1472 8.28381 19.1869 8.61838 19.32 8.92V9C19.4468 9.29577 19.6572 9.54802 19.9255 9.72569C20.1938 9.90337 20.5082 9.99872 20.83 10H21C21.5304 10 22.0391 10.2107 22.4142 10.5858C22.7893 10.9609 23 11.4696 23 12C23 12.5304 22.7893 13.0391 22.4142 13.4142C22.0391 13.7893 21.5304 14 21 14H20.91C20.5882 14.0013 20.2738 14.0966 20.0055 14.2743C19.7372 14.452 19.5268 14.7042 19.4 15Z\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1017_22270\">\r\n <rect width=\"24\" height=\"24\" fill=\"currentColor\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n\r\n </span>\r\n <span class=\"menu-title fw-bold \">Store Configuration</span>\r\n </span>\r\n <!--end::Inbox-->\r\n </div>\r\n\r\n <!--end::Menu item-->\r\n\r\n\r\n <!--begin::Menu item-->\r\n <div class=\"menu-item my-3\">\r\n <!--begin::Draft-->\r\n <span class=\"menu-link\" [ngClass]=\"{ 'active': select === 'contact' }\"\r\n (click)=\"settingvalue('contact')\">\r\n <span class=\"menu-icon\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path\r\n d=\"M17 21V19C17 17.9391 16.5786 16.9217 15.8284 16.1716C15.0783 15.4214 14.0609 15 13 15H5C3.93913 15 2.92172 15.4214 2.17157 16.1716C1.42143 16.9217 1 17.9391 1 19V21M23 21V19C22.9993 18.1137 22.7044 17.2528 22.1614 16.5523C21.6184 15.8519 20.8581 15.3516 20 15.13M16 3.13C16.8604 3.3503 17.623 3.8507 18.1676 4.55231C18.7122 5.25392 19.0078 6.11683 19.0078 7.005C19.0078 7.89317 18.7122 8.75608 18.1676 9.45769C17.623 10.1593 16.8604 10.6597 16 10.88M13 7C13 9.20914 11.2091 11 9 11C6.79086 11 5 9.20914 5 7C5 4.79086 6.79086 3 9 3C11.2091 3 13 4.79086 13 7Z\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <span class=\"menu-title fw-bold \">Contact Details</span>\r\n </span>\r\n <!--end::Draft-->\r\n </div>\r\n <!--end::Menu item-->\r\n <!--begin::Menu item-->\r\n <div class=\"menu-item my-3\">\r\n <!--begin::Trash-->\r\n <span class=\"menu-link\" [ngClass]=\"{ 'active': select === 'review'}\"\r\n (click)=\"settingvalue('review')\">\r\n <span class=\"menu-icon\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M6 1C5.20435 1 4.44129 1.31607 3.87868 1.87868C3.31607 2.44129 3 3.20435 3 4V20C3 20.7957 3.31607 21.5587 3.87868 22.1213C4.44129 22.6839 5.20435 23 6 23H12H18C18.7957 23 19.5587 22.6839 20.1213 22.1213C20.6839 21.5587 21 20.7957 21 20V16.4208L19 18.4208V20C19 20.2652 18.8946 20.5196 18.7071 20.7071C18.5196 20.8946 18.2652 21 18 21H16.4208L15.3286 22.0922L12 23L12.5455 21H6C5.73478 21 5.48043 20.8946 5.29289 20.7071C5.10536 20.5196 5 20.2652 5 20V4C5 3.73478 5.10536 3.48043 5.29289 3.29289C5.48043 3.10536 5.73478 3 6 3H12V9C12 9.55228 12.4477 10 13 10H19V13.5792L21 11.5792V9C21 8.73478 20.8946 8.48043 20.7071 8.29289L13.7071 1.29289C13.5196 1.10536 13.2652 1 13 1H6ZM17.5858 8L14 4.41421V8H17.5858Z\"\r\n fill=\"currentColor\" />\r\n <path\r\n d=\"M20.0779 11.5014C20.2369 11.3424 20.4256 11.2163 20.6333 11.1303C20.8409 11.0443 21.0635 11 21.2883 11C21.5131 11 21.7357 11.0443 21.9434 11.1303C22.151 11.2163 22.3397 11.3424 22.4987 11.5014C22.6576 11.6603 22.7837 11.849 22.8698 12.0567C22.9558 12.2644 23.0001 12.487 23.0001 12.7117C23.0001 12.9365 22.9558 13.1591 22.8698 13.3668C22.7837 13.5745 22.6576 13.7632 22.4987 13.9221L15.3286 22.0923L12 23.0001L12.9078 19.6715L20.0779 11.5014Z\"\r\n stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <span class=\"menu-title fw-bold \">Review & Submit</span>\r\n </span>\r\n <!--end::Trash-->\r\n </div>\r\n <!--end::Menu item-->\r\n\r\n\r\n </div>\r\n </div>\r\n <!--end::Menu-->\r\n </div>\r\n </div>\r\n <div class=\"col-md-9 col-lg-9 col-xl-9 col-xxl-9\">\r\n <div class=\"card\">\r\n <div class=\"card-header border-bottom-0\">\r\n <h1\r\n class=\"page-heading d-flex text-dark fw-bold fs-2 flex-column justify-content-center my-0 sub-head\">\r\n <span *ngIf=\"select === 'store_info'\">Enter Your Store Details</span>\r\n <span *ngIf=\"select === 'config'\">Enter Your Store Configuration</span>\r\n <span *ngIf=\"select === 'contact'\">Enter Primary SPOC details</span>\r\n <span *ngIf=\"select === 'review'\">Review & submit</span>\r\n </h1>\r\n <div [hidden]=\"select !== 'contact'\" class=\"card-toolbar\">\r\n <button (click)=\"addAltSpoc()\" class=\"btn btn-light-primary1 btn-sm\"><svg class=\"me-2\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"14\" viewBox=\"0 0 18 14\" fill=\"none\">\r\n <path\r\n d=\"M2.7 3.5C2.7 2.57174 3.07928 1.6815 3.75442 1.02513C4.42955 0.368749 5.34522 0 6.3 0C7.25478 0 8.17045 0.368749 8.84558 1.02513C9.52072 1.6815 9.9 2.57174 9.9 3.5C9.9 4.42826 9.52072 5.3185 8.84558 5.97487C8.17045 6.63125 7.25478 7 6.3 7C5.34522 7 4.42955 6.63125 3.75442 5.97487C3.07928 5.3185 2.7 4.42826 2.7 3.5ZM0 13.1879C0 10.4945 2.24437 8.3125 5.01469 8.3125H7.58531C10.3556 8.3125 12.6 10.4945 12.6 13.1879C12.6 13.6363 12.2259 14 11.7647 14H0.835312C0.374063 14 0 13.6363 0 13.1879ZM14.175 8.53125V6.78125H12.375C12.0009 6.78125 11.7 6.48867 11.7 6.125C11.7 5.76133 12.0009 5.46875 12.375 5.46875H14.175V3.71875C14.175 3.35508 14.4759 3.0625 14.85 3.0625C15.2241 3.0625 15.525 3.35508 15.525 3.71875V5.46875H17.325C17.6991 5.46875 18 5.76133 18 6.125C18 6.48867 17.6991 6.78125 17.325 6.78125H15.525V8.53125C15.525 8.89492 15.2241 9.1875 14.85 9.1875C14.4759 9.1875 14.175 8.89492 14.175 8.53125Z\"\r\n fill=\"#00A3FF\" />\r\n </svg>Add Alternate SPOC</button>\r\n </div>\r\n </div>\r\n <div class=\"card-body pt-1\">\r\n <form [formGroup]=\"storeForm\">\r\n <!-- Store Info Start -->\r\n <div [hidden]=\"select !== 'store_info'\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12 col-lg-6 mb-5\">\r\n <label for=\"storeName\" class=\"form-label\">Store Name</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"storeName\" formControlName=\"storeName\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('storeName')?.invalid && storeForm.get('storeName')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('storeName')?.touched && storeForm.get('storeName')?.hasError('required')\">\r\n Store Name is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 mb-5\">\r\n <label for=\"storeCode\" class=\"form-label\">Store Code / Ref Code (optional)</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"storeCode\" formControlName=\"storeCode\">\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 mb-5\">\r\n <label for=\"businessType\" class=\"form-label\">Business Type</label>\r\n <select class=\"form-select\" id=\"businessType\" formControlName=\"businessType\">\r\n <option value=\"COCO\">COCO</option>\r\n <option value=\"COFO\">COFO</option>\r\n <option value=\"FOFO\">FOFO</option>\r\n <option value=\"FOCO\">FOCO</option>\r\n </select>\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 mb-5\">\r\n <label for=\"storeType\" class=\"form-label\">Store Type</label>\r\n <select class=\"form-select\" id=\"storeType\" formControlName=\"storeType_type\">\r\n <option value=\"High Street\">High Street</option>\r\n <option value=\"Mall Store\">Mall Store</option>\r\n <option value=\"Kiosk\">Kiosk</option>\r\n </select>\r\n </div>\r\n <div class=\"col-md-12 mb-5\" *ngIf=\"storeForm.get('storeType_type')?.value === 'Mall Store'\">\r\n <label for=\"mallName\" class=\"form-label\">Enter Mall Name</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"mallName\" formControlName=\"storeType_name\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('storeType_name')?.invalid && storeForm.get('storeType_name')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('storeType_name')?.touched && storeForm.get('storeType_name')?.hasError('required')\">\r\n Mall Name is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-12 mb-5\">\r\n <label for=\"address\" class=\"form-label\">Address Line</label>\r\n <input type=\"text\" class=\"form-control\" id=\"address\" formControlName=\"address\" #placesRef=\"ngx-places\" ngx-gp-autocomplete (onAddressChange)=\"handleAddressChange($event)\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('address')?.invalid && storeForm.get('address')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('address')?.touched && storeForm.get('address')?.hasError('required')\">\r\n Address is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"country\" class=\"form-label\">Country</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"country\" formControlName=\"country\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('country')?.invalid && storeForm.get('country')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('country')?.touched && storeForm.get('country')?.hasError('required')\">\r\n Country is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"state\" class=\"form-label\">State</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"state\" formControlName=\"state\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('state')?.invalid && storeForm.get('state')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('state')?.touched && storeForm.get('state')?.hasError('required')\">\r\n State is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"city\" class=\"form-label\">City / Town</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"city\" formControlName=\"city\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('city')?.invalid && storeForm.get('city')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('city')?.touched && storeForm.get('city')?.hasError('required')\">\r\n City is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"pincode\" class=\"form-label\">Pin / Zip Code</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"pincode\" formControlName=\"pincode\" maxlength=\"6\" minlength=\"6\" (keypress)=\"omit_special_char($event)\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('pincode')?.invalid && storeForm.get('pincode')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('pincode')?.touched && storeForm.get('pincode')?.hasError('required')\">\r\n Pincode is required.\r\n </small>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-12 text-end\">\r\n <button type=\"button\"\r\n class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3\" (click)=\"navigateToAddStore()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary\"\r\n (click)=\"goToConfiguration()\">Next</button>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Store Info End -->\r\n\r\n <!-- Store Configuration Start -->\r\n <div [hidden]=\"select !== 'config'\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"timeZone\" class=\"form-label\">Time Zone</label>\r\n <!-- <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"timeZone\" formControlName=\"timeZone\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('timeZone')?.invalid && storeForm.get('timeZone')?.touched}\"> -->\r\n <select class=\"form-select\" id=\"timeZone\" formControlName=\"timeZone\">\r\n <option *ngFor=\"let timezone of timezones\" [value]=\"timezone\">{{ timezone }}</option>\r\n </select>\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('timeZone')?.touched && storeForm.get('timeZone')?.hasError('required')\">\r\n Time Zone is required.\r\n </small>\r\n </div>\r\n <!-- <div class=\"col-md-6 mb-5\">\r\n <label for=\"noOfCameras\" class=\"form-label\">No of Cameras</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"noOfCameras\" formControlName=\"cameras\" (keypress)=\"omit_special_char($event)\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('cameras')?.invalid && storeForm.get('cameras')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('cameras')?.touched && storeForm.get('cameras')?.hasError('required')\">\r\n No of Cameras is required.\r\n </small>\r\n </div> -->\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"storeOpenTime\" class=\"form-label\">Store Open Time</label>\r\n <input autocomplete=\"off\" type=\"time\" class=\"form-control\" id=\"storeOpenTime\" formControlName=\"open\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('open')?.invalid && storeForm.get('open')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('open')?.touched && storeForm.get('open')?.hasError('required')\">\r\n Store Open Time is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"storeCloseTime\" class=\"form-label\">Store Close Time</label>\r\n <input autocomplete=\"off\" type=\"time\" class=\"form-control\" id=\"storeCloseTime\" formControlName=\"close\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('close')?.invalid && storeForm.get('close')?.touched || storeForm.hasError('invalidTimeRange')}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('close')?.touched && storeForm.get('close')?.hasError('required')\">\r\n Store Close Time is required.\r\n </small>\r\n <small class=\"my-2\" *ngIf=\"storeForm.hasError('invalidTimeRange') && (storeForm.get('open')?.touched || storeForm.get('close')?.touched)\">\r\n Opening time must be before closing time.\r\n </small>\r\n </div>\r\n </div>\r\n <div class=\"row mt-20\">\r\n <div class=\"col-12 text-end mt-15\">\r\n <button type=\"button\"\r\n class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3\" (click)=\"navigateToAddStore()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"goToContact()\">Next</button>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Store Configuration End -->\r\n\r\n <!-- Store Contact Start -->\r\n <div [hidden]=\"select !== 'contact'\">\r\n <div class=\"row\">\r\n <ng-container formArrayName=\"spocDetails\">\r\n <ng-container *ngFor=\"let spocDetail of getspocDetailsControls(); let i = index\" [formGroupName]=\"i\">\r\n <div *ngIf=\"i!==0\" class=\"d-flex justify-content-between align-items-center my-6\">\r\n <ng-container >\r\n <span class=\"fw-bold fs-4\">Alternate SPOC {{i}}</span>\r\n <span (click)=\"delAltSpoc()\">\r\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g filter=\"url(#filter0_d_2250_30650)\">\r\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\r\n <path\r\n d=\"M12.5 13.9998H14.1667M14.1667 13.9998H27.5M14.1667 13.9998V25.6665C14.1667 26.1085 14.3423 26.5325 14.6548 26.845C14.9674 27.1576 15.3913 27.3332 15.8333 27.3332H24.1667C24.6087 27.3332 25.0326 27.1576 25.3452 26.845C25.6577 26.5325 25.8333 26.1085 25.8333 25.6665V13.9998H14.1667ZM16.6667 13.9998V12.3332C16.6667 11.8911 16.8423 11.4672 17.1548 11.1547C17.4674 10.8421 17.8913 10.6665 18.3333 10.6665H21.6667C22.1087 10.6665 22.5326 10.8421 22.8452 11.1547C23.1577 11.4672 23.3333 11.8911 23.3333 12.3332V13.9998M18.3333 18.1665V23.1665M21.6667 18.1665V23.1665\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_2250_30650\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_2250_30650\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2250_30650\"\r\n result=\"shape\" />\r\n </filter>\r\n </defs>\r\n </svg>\r\n </span>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"contactName\" class=\"form-label\">Name</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"contactName\" formControlName=\"name\"\r\n [ngClass]=\"{ 'is-invalid':spocDetail.get('name')?.invalid && spocDetail.get('name')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"spocDetail.get('name')?.touched && spocDetail.get('name')?.hasError('required')\">\r\n Name is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"contactEmail\" class=\"form-label\">Email</label>\r\n <input autocomplete=\"off\" type=\"email\" class=\"form-control\" id=\"contactEmail\" formControlName=\"email\"\r\n pattern=\"^([a-zA-Z0-9_\\-\\.]+)@[a-z0-9-]+(\\.[a-z0-9-]+)*(\\.[a-zA-Z]{2,3})$\"\r\n [ngClass]=\"{ 'is-invalid':spocDetail.get('email')?.invalid && spocDetail.get('email')?.touched}\">\r\n <ng-container *ngIf=\"spocDetail.get('email')?.touched\">\r\n <small class=\"invalid-feedback\" *ngIf=\"spocDetail.get('email')?.hasError('required')\">\r\n Email is required.\r\n </small>\r\n <small class=\"invalid-feedback\" *ngIf=\"spocDetail.get('email')?.hasError('minlength')\">\r\n Email must be at least 3 characters long.\r\n </small>\r\n <small class=\"invalid-feedback\" *ngIf=\"spocDetail.get('email')?.hasError('maxlength')\">\r\n Email must be not more than 100 characters long.\r\n </small>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"contactNumber\" class=\"form-label\">Contact Number</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"contactNumber\" minlength=\"10\" maxlength=\"13\"\r\n (keypress)=\"omit_special_char($event)\" formControlName=\"contact\"\r\n [ngClass]=\"{ 'is-invalid':spocDetail.get('contact')?.invalid && spocDetail.get('contact')?.touched}\">\r\n <ng-container *ngIf=\"spocDetail.get('contact')?.touched\">\r\n <small class=\"invalid-feedback\" *ngIf=\"spocDetail.get('contact')?.hasError('required')\">\r\n Contact is required.\r\n </small>\r\n <small class=\"invalid-feedback\" *ngIf=\"spocDetail.get('contact')?.hasError('minlength')\">\r\n Contact must be at least 10 digits.\r\n </small>\r\n <small class=\"invalid-feedback\" *ngIf=\"spocDetail.get('contact')?.hasError('maxlength')\">\r\n Contact must be not more than 13 digits.\r\n </small>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"designation\" class=\"form-label\">Designation (optional)</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"designation\" formControlName=\"designation\">\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n <div class=\"col-md-12 mb-5\">\r\n <h1 class=\"sub-head\">Enter Store Connection Details</h1>\r\n </div>\r\n <div class=\"col-md-12 mb-5\">\r\n <label for=\"anyDeskID\" class=\"form-label\">AnyDesk ID / TeamViewer ID (optional)</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"anyDeskID\"\r\n formControlName=\"storeConnectionId\">\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-12 text-end\">\r\n <button type=\"button\"\r\n class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3\" (click)=\"navigateToAddStore()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"goToReview()\">Next</button>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Store Contact End -->\r\n\r\n <!-- Review & Submit Start -->\r\n <div [hidden]=\"select !== 'review'\">\r\n <div class=\"fs-4 fw-bold text-hover-primary sub-title text-gray-600 m-0 cursor-pointer\">Store\r\n Info\r\n </div>\r\n <div class=\"card-body p-9\">\r\n\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Store Name</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bolder fs-6 text-review-val\">{{storeForm.get('storeName')?.value ?\r\n storeForm.get('storeName')?.value : 'NA'}}</span>\r\n </div>\r\n </div>\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Store Code</label>\r\n <div class=\"col-lg-9 fv-row\"><span\r\n class=\"fw-bold fs-6 text-review-val\">{{storeForm.get('storeCode')?.value ?\r\n storeForm.get('storeCode')?.value: 'NA'}}</span>\r\n </div>\r\n </div>\r\n <div class=\"row mb-7\"> \r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Business Type</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bold fs-6 text-review-val text-hover-primary\">\r\n {{storeForm.get('businessType')?.value ? storeForm.get('businessType')?.value :\r\n 'NA'}} </span>\r\n </div>\r\n </div>\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Store Type\r\n <!-- <i data-bs-toggle=\"tooltip\"\r\n title=\"Phone number must be active\" class=\"fas fa-exclamation-circle ms-1 fs-7\"></i> -->\r\n </label>\r\n <div class=\"col-lg-9 d-flex align-items-center\">\r\n <span\r\n class=\"fw-bolder fs-6 me-2 text-review-val\">{{storeForm.get('storeType_type')?.value\r\n ? storeForm.get('storeType_type')?.value : 'NA'}}</span>\r\n <!-- <span class=\"badge badge-success\">Verified</span> -->\r\n </div>\r\n </div>\r\n <div class=\"row mb-7\"\r\n *ngIf=\"storeForm.get('storeType_type')?.value && storeForm.get('storeType_type')?.value === 'Mall Store'\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\"> Mall Name</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bolder fs-6 text-review-val\">{{storeForm.get('storeType_name')?.value\r\n ? storeForm.get('storeType_name')?.value : 'NA'}}</span>\r\n </div>\r\n </div>\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Address</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bolder fs-6 text-review-val\">\r\n <ng-container *ngIf=\"storeForm.get('address')?.value &&\r\n storeForm.get('city')?.value &&\r\n storeForm.get('state')?.value &&\r\n storeForm.get('country')?.value &&\r\n storeForm.get('pincode')?.value\">\r\n {{storeForm.get('address')?.value ? storeForm.get('address')?.value : ''}},\r\n {{storeForm.get('city')?.value ? storeForm.get('city')?.value : ''}},\r\n {{storeForm.get('state')?.value ? storeForm.get('state')?.value : ''}},\r\n {{storeForm.get('country')?.value ? storeForm.get('country')?.value : ''}},\r\n {{storeForm.get('pincode')?.value ? storeForm.get('pincode')?.value : ''}}\r\n </ng-container>\r\n <ng-container *ngIf=\"!storeForm.get('address')?.value ||\r\n !storeForm.get('city')?.value ||\r\n !storeForm.get('state')?.value ||\r\n !storeForm.get('country')?.value ||\r\n !storeForm.get('pincode')?.value\">\r\n NA\r\n </ng-container>\r\n </span>\r\n </div>\r\n </div>\r\n <!-- <div class=\"row mb-10\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Allow Changes</label>\r\n <div class=\"col-lg-9\"><span class=\"fw-bold fs-6\">Yes</span></div>\r\n </div> -->\r\n\r\n </div>\r\n <div class=\"fs-4 fw-bold text-hover-primary sub-title text-gray-600 m-0 cursor-pointer\">Store\r\n Configuration</div>\r\n <div class=\"card-body p-9\">\r\n\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Time Zone</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bolder fs-6 text-review-val\">{{storeForm.get('timeZone')?.value ?\r\n storeForm.get('timeZone')?.value : 'NA'}}</span>\r\n </div>\r\n </div>\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">No of Cameras</label>\r\n <div class=\"col-lg-9 fv-row\"><span\r\n class=\"fw-bold fs-6 text-review-val\">{{storeForm.get('cameras')?.value ?\r\n storeForm.get('cameras')?.value : 'NA'}}</span>\r\n </div>\r\n </div>\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Store Open Time</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bold fs-6 text-review-val text-hover-primary\">{{storeForm.get('open')?.value\r\n ? storeForm.get('open')?.value : 'NA'}}\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Store Close Time</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bolder fs-6 text-review-val\">{{storeForm.get('close')?.value ?\r\n storeForm.get('close')?.value : 'NA'}}</span>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"fs-4 fw-bold text-hover-primary sub-title text-gray-600 m-0 cursor-pointer\">Contact\r\n Details</div>\r\n <div class=\"card-body row px-9 pt-3 pb-4\">\r\n <div class=\"table-responsive col-md-12 col-lg-12 col-xl-9 col-xxl-8\">\r\n <table class=\"table align-middle gy-6\">\r\n <tbody class=\"fs-6 fw-bold\"> \r\n <ng-container formArrayName=\"spocDetails\">\r\n <ng-container *ngFor=\"let spoc of getspocDetailsControls();let i=index;\">\r\n <tr>\r\n <td>Spoc {{i+1}}</td>\r\n <td><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M15 15.75V14.25C15 13.4544 14.6839 12.6913 14.1213 12.1287C13.5587 11.5661 12.7956 11.25 12 11.25H6C5.20435 11.25 4.44129 11.5661 3.87868 12.1287C3.31607 12.6913 3 13.4544 3 14.25V15.75M12 5.25C12 6.90685 10.6569 8.25 9 8.25C7.34315 8.25 6 6.90685 6 5.25C6 3.59315 7.34315 2.25 9 2.25C10.6569 2.25 12 3.59315 12 5.25Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">{{getspocDetailsValues(i)?.name ?\r\n getspocDetailsValues(i)?.name : 'NA' }}</span></td>\r\n <td><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1_80373)\">\r\n <path\r\n d=\"M12 6.00002V9.75002C12 10.3468 12.2371 10.9191 12.659 11.341C13.081 11.763 13.6533 12 14.25 12C14.8467 12 15.419 11.763 15.841 11.341C16.263 10.9191 16.5 10.3468 16.5 9.75002V9.00002C16.4999 7.30729 15.9272 5.66438 14.875 4.33842C13.8227 3.01246 12.3529 2.08144 10.7045 1.69675C9.05605 1.31205 7.32596 1.4963 5.79552 2.21955C4.26508 2.94279 3.02431 4.16249 2.27495 5.68032C1.5256 7.19814 1.31173 8.92483 1.66813 10.5796C2.02453 12.2344 2.93024 13.7199 4.23798 14.7947C5.54572 15.8695 7.17858 16.4703 8.87106 16.4994C10.5635 16.5285 12.2161 15.9842 13.56 14.955M12 9.00002C12 10.6569 10.6569 12 9.00001 12C7.34315 12 6.00001 10.6569 6.00001 9.00002C6.00001 7.34317 7.34315 6.00002 9.00001 6.00002C10.6569 6.00002 12 7.34317 12 9.00002Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1_80373\">\r\n <rect width=\"18\" height=\"18\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg><span class=\"ms-2\">{{getspocDetailsValues(i)?.email ?\r\n getspocDetailsValues(i)?.email : 'NA' }}</span></td>\r\n <td><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1_80376)\">\r\n <path\r\n d=\"M16.5001 12.6901V14.9401C16.5009 15.1489 16.4581 15.3557 16.3745 15.5471C16.2908 15.7385 16.168 15.9103 16.0141 16.0515C15.8602 16.1927 15.6785 16.3002 15.4806 16.3671C15.2828 16.434 15.0731 16.4589 14.8651 16.4401C12.5572 16.1893 10.3403 15.4007 8.39257 14.1376C6.58044 12.9861 5.04407 11.4497 3.89257 9.63757C2.62506 7.68098 1.83625 5.45332 1.59007 3.13507C1.57133 2.92767 1.59598 2.71864 1.66245 2.52129C1.72892 2.32394 1.83575 2.14259 1.97615 1.98879C2.11654 1.83499 2.28743 1.7121 2.47792 1.62796C2.6684 1.54382 2.87433 1.50027 3.08257 1.50007H5.33257C5.69655 1.49649 6.04942 1.62538 6.32539 1.86272C6.60137 2.10006 6.78163 2.42966 6.83257 2.79007C6.92754 3.51012 7.10366 4.21712 7.35757 4.89757C7.45848 5.16602 7.48032 5.45776 7.4205 5.73823C7.36069 6.01871 7.22172 6.27616 7.02007 6.48007L6.06757 7.43257C7.13524 9.31023 8.68991 10.8649 10.5676 11.9326L11.5201 10.9801C11.724 10.7784 11.9814 10.6395 12.2619 10.5796C12.5424 10.5198 12.8341 10.5417 13.1026 10.6426C13.783 10.8965 14.49 11.0726 15.2101 11.1676C15.5744 11.219 15.9071 11.4025 16.145 11.6832C16.3828 11.9639 16.5092 12.3223 16.5001 12.6901Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1_80376\">\r\n <rect width=\"18\" height=\"18\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg><span class=\"ms-2\">{{getspocDetailsValues(i)?.contact ?\r\n getspocDetailsValues(i)?.contact : 'NA' }}</span></td>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n <tr>\r\n <td>AnyDesk ID\r\n <td>\r\n <span class=\"ms-2\">{{storeForm.get('storeConnectionId')?.value ?\r\n storeForm.get('storeConnectionId')?.value : 'NA' }}</span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"text-end\">\r\n <button type=\"button\" (click)=\"goToStoreInfo()\"\r\n class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3\">Edit</button>\r\n <button type=\"button\" [disabled]=\"storeForm.invalid\" (click)=\"onSubmit()\"\r\n class=\"btn btn-primary\">Submit</button>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Review & Submit End -->\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".kiwi{fill:#344054}.kiwi.active{fill:#009bf3}.menu-title{color:var(--Gray-700, #344054)!important;font-family:Inter;font-size:16px!important;font-weight:500!important;line-height:24px}.menu-state-bg .menu-item .menu-link.active{border-radius:6px!important;background:var(--Primary-50, #EAF8FF)!important;padding:8px 16px}.menu-state-title-primary .menu-item .menu-link.active .menu-title{color:var(--Primary-700, #009BF3)!important}.sub-title{color:var(--Gray-700, #344054)!important;font-family:Inter;font-size:18px!important;font-style:normal;font-weight:500!important;line-height:28px}.text-muted-review{color:var(--Gray-500, #667085)!important;font-family:Inter;font-size:14px!important;font-style:normal;font-weight:500!important;line-height:20px}.text-review-val{color:var(--Gray-700, #344054)!important;font-family:Inter;font-size:14px!important;font-weight:600!important;line-height:20px}.align-middle{color:var(--Gray-500, #667085)!important;font-family:Inter;font-size:14px!important;font-weight:500!important;line-height:20px}td{padding:0!important}.invalid-feedback,small{color:var(--Error-500, #F04438)!important;font-size:14px!important;font-weight:400!important;line-height:20px}.is-invalid{border-radius:8px!important;border:1px solid var(--Error-300, #FDA29B)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;padding-right:calc(1.5em + .75rem)!important;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzIyMDFfMjA5NTApIj4KPHBhdGggZD0iTTcuOTk5NjcgNS4zMzM5OFY4LjAwMDY1TTcuOTk5NjcgMTAuNjY3M0g4LjAwNjM0TTE0LjY2NjMgOC4wMDA2NUMxNC42NjYzIDExLjY4MjYgMTEuNjgxNiAxNC42NjczIDcuOTk5NjcgMTQuNjY3M0M0LjMxNzc4IDE0LjY2NzMgMS4zMzMwMSAxMS42ODI2IDEuMzMzMDEgOC4wMDA2NUMxLjMzMzAxIDQuMzE4NzUgNC4zMTc3OCAxLjMzMzk4IDcuOTk5NjcgMS4zMzM5OEMxMS42ODE2IDEuMzMzOTggMTQuNjY2MyA0LjMxODc1IDE0LjY2NjMgOC4wMDA2NVoiIHN0cm9rZT0iI0YwNDQzOCIgc3Ryb2tlLXdpZHRoPSIxLjMzMzMzIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8yMjAxXzIwOTUwIj4KPHJlY3Qgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=)!important;background-repeat:no-repeat!important;background-position:right calc(.375em + .1875rem) center!important;background-size:calc(.75em + .375rem) calc(.75em + .375rem)!important}::ng-deep .swal2-popup.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;min-width:2em;height:0em;margin:0 .5em 0 0}::ng-deep .listitem{display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:.5rem 1rem;background-color:#f3f6f9;margin-top:.75rem;border-radius:.42rem}::ng-deep .toasttitile{color:#3f4254;font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:140%}::ng-deep .list{overflow-y:auto}::ng-deep .listitemlabel{font-size:13px!important;font-weight:600;font-family:Inter;color:#7e8299}::ng-deep .swal2-container{padding:.4em!important}::ng-deep .swal2-icon{border:1px solid white!important}::ng-deep body.swal2-toast-shown .swal2-container{width:500px!important}::ng-deep .swal2-popup.swal2-toast{border-left:4px solid #009EF7}::ng-deep .swal2-popup.swal2-toast .swal2-title{margin:9px 5px auto!important}::ng-deep .label{color:#3f4254;font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:140%}.spocArea{overflow-y:scroll;max-height:60vh;padding:0;margin:0}::ng-deep .spocArea::-webkit-scrollbar-thumb{-webkit-border-radius:10px!important;border-radius:10px!important;background:var(--gray-100, #eaeaea)!important;height:50px!important}::ng-deep .spocArea::-webkit-scrollbar{width:10px!important}::ng-deep .spocArea::-webkit-scrollbar-track{background:none!important;box-shadow:none!important}.sub-head{color:var(--Gray-900, #101828)!important;font-size:18px!important;font-weight:600!important;line-height:28px}.form-label{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:500!important;line-height:20px}.btn-primary{border-radius:8px!important;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--White, #FFF)!important;font-size:16px!important;font-weight:600;line-height:24px}.btn-outline{border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--Gray-700, #344054)!important;font-size:16px!important;font-weight:600!important;line-height:24px}.btn-light-primary1{border-radius:8px;border:1px solid var(--Primary-50, #EAF8FF)!important;background:var(--Primary-50, #EAF8FF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--Primary-700, #009BF3)!important;font-size:14px!important;font-weight:600!important;line-height:20px}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.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: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "directive", type: i5.NgxGpAutocompleteDirective, selector: "[ngx-gp-autocomplete]", inputs: ["options"], outputs: ["onAddressChange"], exportAs: ["ngx-places"] }] });
231
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AddStoresFormComponent, deps: [{ token: i1.FormBuilder }, { token: i2.StoresService }, { token: i3.ToastService }, { token: i4.Router }], target: i0.ɵɵFactoryTarget.Component });
232
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: AddStoresFormComponent, selector: "lib-add-stores-form", viewQueries: [{ propertyName: "placesRef", first: true, predicate: ["ngxPlaces"], descendants: true }], ngImport: i0, template: "<div class=\"row mt-3 mb-6\">\r\n <div class=\"col-md-3 col-lg-3 col-xl-3 col-xxl-3\" id=\"left-container\">\r\n <div class=\"card card-flush h-100 mb-0\">\r\n <!--begin::Aside content-->\r\n <div class=\"card-body\">\r\n <div\r\n class=\"menu menu-column menu-rounded menu-state-bg menu-state-title-primary menu-state-icon-primary menu-state-bullet-primary\">\r\n <!--begin::Menu item-->\r\n <div class=\"menu-item my-3\">\r\n <!--begin::Inbox-->\r\n <span class=\"menu-link\" [ngClass]=\"{ 'active': select === 'store_info' }\"\r\n (click)=\"settingvalue('store_info')\">\r\n <span class=\"menu-icon\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path stroke=\"currentColor\"\r\n d=\"M3.08995 6.88369L3.02401 6.98669C2.30358 8.25557 3.06101 9.87945 4.46464 10.0662C4.58627 10.0811 4.70112 10.0892 4.8145 10.0892C5.55255 10.0892 6.20523 9.77229 6.65953 9.27917L7.21286 8.67854L7.76432 9.28089C8.21367 9.77171 8.8652 10.0892 9.60776 10.0892C10.3471 10.0892 11.0022 9.77137 11.4512 9.28089L12.0044 8.67665L12.5576 9.28089C13.0066 9.77137 13.6617 10.0892 14.401 10.0892C15.1404 10.0892 15.7954 9.77137 16.2445 9.28089L16.7977 8.67665L17.3508 9.28089C17.7999 9.77137 18.4549 10.0892 19.1943 10.0892C19.3041 10.0892 19.4223 10.0811 19.5433 10.0663C20.9772 9.87168 21.7355 8.16387 20.9155 6.88419C20.9154 6.88413 20.9154 6.88407 20.9154 6.88402L18.8056 3.59429L18.8056 3.59429L18.8046 3.59282C18.7582 3.52002 18.6649 3.46423 18.5584 3.46423H5.44307C5.3365 3.46423 5.24326 3.52002 5.19681 3.59282L5.19619 3.59379L3.08995 6.88369ZM4.81818 12.7499C4.71644 12.7499 4.616 12.7468 4.5169 12.741V16.6428V18.9642C4.5169 19.8211 5.22663 20.5357 6.11942 20.5357H17.882C18.7748 20.5357 19.4845 19.8211 19.4845 18.9642V16.6428V12.7415C19.3874 12.747 19.2893 12.7499 19.1906 12.7499C19.0022 12.7499 18.8157 12.7398 18.632 12.7202V16.6428V17.3928H17.882H6.11942H5.36942V16.6428V12.721C5.18866 12.74 5.00472 12.7499 4.81818 12.7499Z\" />\r\n </svg></span>\r\n <span class=\"menu-title fw-bold \">Store Info</span>\r\n </span>\r\n <!--end::Inbox-->\r\n </div>\r\n <div class=\"menu-item my-3\">\r\n <!--begin::Inbox-->\r\n <span class=\"menu-link\" [ngClass]=\"{ 'active': select === 'config' }\"\r\n (click)=\"settingvalue('config')\">\r\n <span class=\"menu-icon\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"none\">\r\n <g clip-path=\"url(#clip0_1017_22270)\">\r\n <path\r\n d=\"M12 15C13.6569 15 15 13.6569 15 12C15 10.3431 13.6569 9 12 9C10.3431 9 9 10.3431 9 12C9 13.6569 10.3431 15 12 15Z\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M19.4 15C19.2669 15.3016 19.2272 15.6362 19.286 15.9606C19.3448 16.285 19.4995 16.5843 19.73 16.82L19.79 16.88C19.976 17.0657 20.1235 17.2863 20.2241 17.5291C20.3248 17.7719 20.3766 18.0322 20.3766 18.295C20.3766 18.5578 20.3248 18.8181 20.2241 19.0609C20.1235 19.3037 19.976 19.5243 19.79 19.71C19.6043 19.896 19.3837 20.0435 19.1409 20.1441C18.8981 20.2448 18.6378 20.2966 18.375 20.2966C18.1122 20.2966 17.8519 20.2448 17.6091 20.1441C17.3663 20.0435 17.1457 19.896 16.96 19.71L16.9 19.65C16.6643 19.4195 16.365 19.2648 16.0406 19.206C15.7162 19.1472 15.3816 19.1869 15.08 19.32C14.7842 19.4468 14.532 19.6572 14.3543 19.9255C14.1766 20.1938 14.0813 20.5082 14.08 20.83V21C14.08 21.5304 13.8693 22.0391 13.4942 22.4142C13.1191 22.7893 12.6104 23 12.08 23C11.5496 23 11.0409 22.7893 10.6658 22.4142C10.2907 22.0391 10.08 21.5304 10.08 21V20.91C10.0723 20.579 9.96512 20.258 9.77251 19.9887C9.5799 19.7194 9.31074 19.5143 9 19.4C8.69838 19.2669 8.36381 19.2272 8.03941 19.286C7.71502 19.3448 7.41568 19.4995 7.18 19.73L7.12 19.79C6.93425 19.976 6.71368 20.1235 6.47088 20.2241C6.22808 20.3248 5.96783 20.3766 5.705 20.3766C5.44217 20.3766 5.18192 20.3248 4.93912 20.2241C4.69632 20.1235 4.47575 19.976 4.29 19.79C4.10405 19.6043 3.95653 19.3837 3.85588 19.1409C3.75523 18.8981 3.70343 18.6378 3.70343 18.375C3.70343 18.1122 3.75523 17.8519 3.85588 17.6091C3.95653 17.3663 4.10405 17.1457 4.29 16.96L4.35 16.9C4.58054 16.6643 4.73519 16.365 4.794 16.0406C4.85282 15.7162 4.81312 15.3816 4.68 15.08C4.55324 14.7842 4.34276 14.532 4.07447 14.3543C3.80618 14.1766 3.49179 14.0813 3.17 14.08H3C2.46957 14.08 1.96086 13.8693 1.58579 13.4942C1.21071 13.1191 1 12.6104 1 12.08C1 11.5496 1.21071 11.0409 1.58579 10.6658C1.96086 10.2907 2.46957 10.08 3 10.08H3.09C3.42099 10.0723 3.742 9.96512 4.0113 9.77251C4.28059 9.5799 4.48572 9.31074 4.6 9C4.73312 8.69838 4.77282 8.36381 4.714 8.03941C4.65519 7.71502 4.50054 7.41568 4.27 7.18L4.21 7.12C4.02405 6.93425 3.87653 6.71368 3.77588 6.47088C3.67523 6.22808 3.62343 5.96783 3.62343 5.705C3.62343 5.44217 3.67523 5.18192 3.77588 4.93912C3.87653 4.69632 4.02405 4.47575 4.21 4.29C4.39575 4.10405 4.61632 3.95653 4.85912 3.85588C5.10192 3.75523 5.36217 3.70343 5.625 3.70343C5.88783 3.70343 6.14808 3.75523 6.39088 3.85588C6.63368 3.95653 6.85425 4.10405 7.04 4.29L7.1 4.35C7.33568 4.58054 7.63502 4.73519 7.95941 4.794C8.28381 4.85282 8.61838 4.81312 8.92 4.68H9C9.29577 4.55324 9.54802 4.34276 9.72569 4.07447C9.90337 3.80618 9.99872 3.49179 10 3.17V3C10 2.46957 10.2107 1.96086 10.5858 1.58579C10.9609 1.21071 11.4696 1 12 1C12.5304 1 13.0391 1.21071 13.4142 1.58579C13.7893 1.96086 14 2.46957 14 3V3.09C14.0013 3.41179 14.0966 3.72618 14.2743 3.99447C14.452 4.26276 14.7042 4.47324 15 4.6C15.3016 4.73312 15.6362 4.77282 15.9606 4.714C16.285 4.65519 16.5843 4.50054 16.82 4.27L16.88 4.21C17.0657 4.02405 17.2863 3.87653 17.5291 3.77588C17.7719 3.67523 18.0322 3.62343 18.295 3.62343C18.5578 3.62343 18.8181 3.67523 19.0609 3.77588C19.3037 3.87653 19.5243 4.02405 19.71 4.21C19.896 4.39575 20.0435 4.61632 20.1441 4.85912C20.2448 5.10192 20.2966 5.36217 20.2966 5.625C20.2966 5.88783 20.2448 6.14808 20.1441 6.39088C20.0435 6.63368 19.896 6.85425 19.71 7.04L19.65 7.1C19.4195 7.33568 19.2648 7.63502 19.206 7.95941C19.1472 8.28381 19.1869 8.61838 19.32 8.92V9C19.4468 9.29577 19.6572 9.54802 19.9255 9.72569C20.1938 9.90337 20.5082 9.99872 20.83 10H21C21.5304 10 22.0391 10.2107 22.4142 10.5858C22.7893 10.9609 23 11.4696 23 12C23 12.5304 22.7893 13.0391 22.4142 13.4142C22.0391 13.7893 21.5304 14 21 14H20.91C20.5882 14.0013 20.2738 14.0966 20.0055 14.2743C19.7372 14.452 19.5268 14.7042 19.4 15Z\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1017_22270\">\r\n <rect width=\"24\" height=\"24\" fill=\"currentColor\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n\r\n </span>\r\n <span class=\"menu-title fw-bold \">Store Configuration</span>\r\n </span>\r\n <!--end::Inbox-->\r\n </div>\r\n\r\n <!--end::Menu item-->\r\n\r\n\r\n <!--begin::Menu item-->\r\n <div class=\"menu-item my-3\">\r\n <!--begin::Draft-->\r\n <span class=\"menu-link\" [ngClass]=\"{ 'active': select === 'contact' }\"\r\n (click)=\"settingvalue('contact')\">\r\n <span class=\"menu-icon\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path\r\n d=\"M17 21V19C17 17.9391 16.5786 16.9217 15.8284 16.1716C15.0783 15.4214 14.0609 15 13 15H5C3.93913 15 2.92172 15.4214 2.17157 16.1716C1.42143 16.9217 1 17.9391 1 19V21M23 21V19C22.9993 18.1137 22.7044 17.2528 22.1614 16.5523C21.6184 15.8519 20.8581 15.3516 20 15.13M16 3.13C16.8604 3.3503 17.623 3.8507 18.1676 4.55231C18.7122 5.25392 19.0078 6.11683 19.0078 7.005C19.0078 7.89317 18.7122 8.75608 18.1676 9.45769C17.623 10.1593 16.8604 10.6597 16 10.88M13 7C13 9.20914 11.2091 11 9 11C6.79086 11 5 9.20914 5 7C5 4.79086 6.79086 3 9 3C11.2091 3 13 4.79086 13 7Z\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <span class=\"menu-title fw-bold \">Contact Details</span>\r\n </span>\r\n <!--end::Draft-->\r\n </div>\r\n <!--end::Menu item-->\r\n <!--begin::Menu item-->\r\n <div class=\"menu-item my-3\">\r\n <!--begin::Trash-->\r\n <span class=\"menu-link\" [ngClass]=\"{ 'active': select === 'review'}\"\r\n (click)=\"settingvalue('review')\">\r\n <span class=\"menu-icon\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M6 1C5.20435 1 4.44129 1.31607 3.87868 1.87868C3.31607 2.44129 3 3.20435 3 4V20C3 20.7957 3.31607 21.5587 3.87868 22.1213C4.44129 22.6839 5.20435 23 6 23H12H18C18.7957 23 19.5587 22.6839 20.1213 22.1213C20.6839 21.5587 21 20.7957 21 20V16.4208L19 18.4208V20C19 20.2652 18.8946 20.5196 18.7071 20.7071C18.5196 20.8946 18.2652 21 18 21H16.4208L15.3286 22.0922L12 23L12.5455 21H6C5.73478 21 5.48043 20.8946 5.29289 20.7071C5.10536 20.5196 5 20.2652 5 20V4C5 3.73478 5.10536 3.48043 5.29289 3.29289C5.48043 3.10536 5.73478 3 6 3H12V9C12 9.55228 12.4477 10 13 10H19V13.5792L21 11.5792V9C21 8.73478 20.8946 8.48043 20.7071 8.29289L13.7071 1.29289C13.5196 1.10536 13.2652 1 13 1H6ZM17.5858 8L14 4.41421V8H17.5858Z\"\r\n fill=\"currentColor\" />\r\n <path\r\n d=\"M20.0779 11.5014C20.2369 11.3424 20.4256 11.2163 20.6333 11.1303C20.8409 11.0443 21.0635 11 21.2883 11C21.5131 11 21.7357 11.0443 21.9434 11.1303C22.151 11.2163 22.3397 11.3424 22.4987 11.5014C22.6576 11.6603 22.7837 11.849 22.8698 12.0567C22.9558 12.2644 23.0001 12.487 23.0001 12.7117C23.0001 12.9365 22.9558 13.1591 22.8698 13.3668C22.7837 13.5745 22.6576 13.7632 22.4987 13.9221L15.3286 22.0923L12 23.0001L12.9078 19.6715L20.0779 11.5014Z\"\r\n stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <span class=\"menu-title fw-bold \">Review & Submit</span>\r\n </span>\r\n <!--end::Trash-->\r\n </div>\r\n <!--end::Menu item-->\r\n\r\n\r\n </div>\r\n </div>\r\n <!--end::Menu-->\r\n </div>\r\n </div>\r\n <div class=\"col-md-9 col-lg-9 col-xl-9 col-xxl-9\">\r\n <div class=\"card\">\r\n <div class=\"card-header border-bottom-0\">\r\n <h1\r\n class=\"page-heading d-flex text-dark fw-bold fs-2 flex-column justify-content-center my-0 sub-head\">\r\n <span *ngIf=\"select === 'store_info'\">Enter Your Store Details</span>\r\n <span *ngIf=\"select === 'config'\">Enter Your Store Configuration</span>\r\n <span *ngIf=\"select === 'contact'\">Enter Primary SPOC details</span>\r\n <span *ngIf=\"select === 'review'\">Review & submit</span>\r\n </h1>\r\n <div [hidden]=\"select !== 'contact'\" class=\"card-toolbar\">\r\n <button (click)=\"addAltSpoc()\" class=\"btn btn-light-primary1 btn-sm\"><svg class=\"me-2\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"14\" viewBox=\"0 0 18 14\" fill=\"none\">\r\n <path\r\n d=\"M2.7 3.5C2.7 2.57174 3.07928 1.6815 3.75442 1.02513C4.42955 0.368749 5.34522 0 6.3 0C7.25478 0 8.17045 0.368749 8.84558 1.02513C9.52072 1.6815 9.9 2.57174 9.9 3.5C9.9 4.42826 9.52072 5.3185 8.84558 5.97487C8.17045 6.63125 7.25478 7 6.3 7C5.34522 7 4.42955 6.63125 3.75442 5.97487C3.07928 5.3185 2.7 4.42826 2.7 3.5ZM0 13.1879C0 10.4945 2.24437 8.3125 5.01469 8.3125H7.58531C10.3556 8.3125 12.6 10.4945 12.6 13.1879C12.6 13.6363 12.2259 14 11.7647 14H0.835312C0.374063 14 0 13.6363 0 13.1879ZM14.175 8.53125V6.78125H12.375C12.0009 6.78125 11.7 6.48867 11.7 6.125C11.7 5.76133 12.0009 5.46875 12.375 5.46875H14.175V3.71875C14.175 3.35508 14.4759 3.0625 14.85 3.0625C15.2241 3.0625 15.525 3.35508 15.525 3.71875V5.46875H17.325C17.6991 5.46875 18 5.76133 18 6.125C18 6.48867 17.6991 6.78125 17.325 6.78125H15.525V8.53125C15.525 8.89492 15.2241 9.1875 14.85 9.1875C14.4759 9.1875 14.175 8.89492 14.175 8.53125Z\"\r\n fill=\"#00A3FF\" />\r\n </svg>Add Alternate SPOC</button>\r\n </div>\r\n </div>\r\n <div class=\"card-body pt-1\">\r\n <form [formGroup]=\"storeForm\">\r\n <!-- Store Info Start -->\r\n <div [hidden]=\"select !== 'store_info'\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12 col-lg-6 mb-5\">\r\n <label for=\"storeName\" class=\"form-label\">Store Name</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"storeName\" formControlName=\"storeName\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('storeName')?.invalid && storeForm.get('storeName')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('storeName')?.touched && storeForm.get('storeName')?.hasError('required')\">\r\n Store Name is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 mb-5\">\r\n <label for=\"storeCode\" class=\"form-label\">Store Code / Ref Code (optional)</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"storeCode\" formControlName=\"storeCode\">\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 mb-5\">\r\n <label for=\"businessType\" class=\"form-label\">Business Type</label>\r\n <select class=\"form-select\" id=\"businessType\" formControlName=\"businessType\">\r\n <option value=\"COCO\">COCO</option>\r\n <option value=\"COFO\">COFO</option>\r\n <option value=\"FOFO\">FOFO</option>\r\n <option value=\"FOCO\">FOCO</option>\r\n </select>\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 mb-5\">\r\n <label for=\"storeType\" class=\"form-label\">Store Type</label>\r\n <select class=\"form-select\" id=\"storeType\" formControlName=\"storeType_type\">\r\n <option value=\"High Street\">High Street</option>\r\n <option value=\"Mall Store\">Mall Store</option>\r\n <option value=\"Kiosk\">Kiosk</option>\r\n </select>\r\n </div>\r\n <div class=\"col-md-12 mb-5\" *ngIf=\"storeForm.get('storeType_type')?.value === 'Mall Store'\">\r\n <label for=\"mallName\" class=\"form-label\">Enter Mall Name</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"mallName\" formControlName=\"storeType_name\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('storeType_name')?.invalid && storeForm.get('storeType_name')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('storeType_name')?.touched && storeForm.get('storeType_name')?.hasError('required')\">\r\n Mall Name is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-12 mb-5\">\r\n <label for=\"address\" class=\"form-label\">Address Line</label>\r\n <input type=\"text\" class=\"form-control\" id=\"address\" formControlName=\"address\" #placesRef=\"ngx-places\" ngx-gp-autocomplete (onAddressChange)=\"handleAddressChange($event)\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('address')?.invalid && storeForm.get('address')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('address')?.touched && storeForm.get('address')?.hasError('required')\">\r\n Address is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"country\" class=\"form-label\">Country</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"country\" formControlName=\"country\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('country')?.invalid && storeForm.get('country')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('country')?.touched && storeForm.get('country')?.hasError('required')\">\r\n Country is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"state\" class=\"form-label\">State</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"state\" formControlName=\"state\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('state')?.invalid && storeForm.get('state')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('state')?.touched && storeForm.get('state')?.hasError('required')\">\r\n State is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"city\" class=\"form-label\">City / Town</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"city\" formControlName=\"city\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('city')?.invalid && storeForm.get('city')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('city')?.touched && storeForm.get('city')?.hasError('required')\">\r\n City is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"pincode\" class=\"form-label\">Pin / Zip Code</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"pincode\" formControlName=\"pincode\" maxlength=\"6\" minlength=\"6\" (keypress)=\"omit_special_char($event)\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('pincode')?.invalid && storeForm.get('pincode')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('pincode')?.touched && storeForm.get('pincode')?.hasError('required')\">\r\n Pincode is required.\r\n </small>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-12 text-end\">\r\n <button type=\"button\"\r\n class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3\" (click)=\"navigateToAddStore()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary\"\r\n (click)=\"goToConfiguration()\">Next</button>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Store Info End -->\r\n\r\n <!-- Store Configuration Start -->\r\n <div [hidden]=\"select !== 'config'\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"timeZone\" class=\"form-label\">Time Zone</label>\r\n <!-- <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"timeZone\" formControlName=\"timeZone\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('timeZone')?.invalid && storeForm.get('timeZone')?.touched}\"> -->\r\n <select class=\"form-select\" id=\"timeZone\" formControlName=\"timeZone\">\r\n <option *ngFor=\"let timezone of timezones\" [value]=\"timezone\">{{ timezone }}</option>\r\n </select>\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('timeZone')?.touched && storeForm.get('timeZone')?.hasError('required')\">\r\n Time Zone is required.\r\n </small>\r\n </div>\r\n <!-- <div class=\"col-md-6 mb-5\">\r\n <label for=\"noOfCameras\" class=\"form-label\">No of Cameras</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"noOfCameras\" formControlName=\"cameras\" (keypress)=\"omit_special_char($event)\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('cameras')?.invalid && storeForm.get('cameras')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('cameras')?.touched && storeForm.get('cameras')?.hasError('required')\">\r\n No of Cameras is required.\r\n </small>\r\n </div> -->\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"storeOpenTime\" class=\"form-label\">Store Open Time</label>\r\n <input autocomplete=\"off\" type=\"time\" class=\"form-control\" id=\"storeOpenTime\" formControlName=\"open\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('open')?.invalid && storeForm.get('open')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('open')?.touched && storeForm.get('open')?.hasError('required')\">\r\n Store Open Time is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"storeCloseTime\" class=\"form-label\">Store Close Time</label>\r\n <input autocomplete=\"off\" type=\"time\" class=\"form-control\" id=\"storeCloseTime\" formControlName=\"close\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('close')?.invalid && storeForm.get('close')?.touched || storeForm.hasError('invalidTimeRange')}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('close')?.touched && storeForm.get('close')?.hasError('required')\">\r\n Store Close Time is required.\r\n </small>\r\n <small class=\"my-2\" *ngIf=\"storeForm.hasError('invalidTimeRange') && (storeForm.get('open')?.touched || storeForm.get('close')?.touched)\">\r\n Opening time must be before closing time.\r\n </small>\r\n </div>\r\n </div>\r\n <div class=\"row mt-20\">\r\n <div class=\"col-12 text-end mt-15\">\r\n <button type=\"button\"\r\n class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3\" (click)=\"navigateToAddStore()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"goToContact()\">Next</button>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Store Configuration End -->\r\n\r\n <!-- Store Contact Start -->\r\n <div [hidden]=\"select !== 'contact'\">\r\n <div class=\"row\">\r\n <ng-container formArrayName=\"spocDetails\">\r\n <ng-container *ngFor=\"let spocDetail of getspocDetailsControls(); let i = index\" [formGroupName]=\"i\">\r\n <div *ngIf=\"i!==0\" class=\"d-flex justify-content-between align-items-center my-6\">\r\n <ng-container >\r\n <span class=\"fw-bold fs-4\">Alternate SPOC {{i}}</span>\r\n <span (click)=\"delAltSpoc()\">\r\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g filter=\"url(#filter0_d_2250_30650)\">\r\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\r\n <path\r\n d=\"M12.5 13.9998H14.1667M14.1667 13.9998H27.5M14.1667 13.9998V25.6665C14.1667 26.1085 14.3423 26.5325 14.6548 26.845C14.9674 27.1576 15.3913 27.3332 15.8333 27.3332H24.1667C24.6087 27.3332 25.0326 27.1576 25.3452 26.845C25.6577 26.5325 25.8333 26.1085 25.8333 25.6665V13.9998H14.1667ZM16.6667 13.9998V12.3332C16.6667 11.8911 16.8423 11.4672 17.1548 11.1547C17.4674 10.8421 17.8913 10.6665 18.3333 10.6665H21.6667C22.1087 10.6665 22.5326 10.8421 22.8452 11.1547C23.1577 11.4672 23.3333 11.8911 23.3333 12.3332V13.9998M18.3333 18.1665V23.1665M21.6667 18.1665V23.1665\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_2250_30650\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_2250_30650\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2250_30650\"\r\n result=\"shape\" />\r\n </filter>\r\n </defs>\r\n </svg>\r\n </span>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"contactName\" class=\"form-label\">Name</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"contactName\" formControlName=\"name\"\r\n [ngClass]=\"{ 'is-invalid':spocDetail.get('name')?.invalid && spocDetail.get('name')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"spocDetail.get('name')?.touched && spocDetail.get('name')?.hasError('required')\">\r\n Name is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"contactEmail\" class=\"form-label\">Email</label>\r\n <input autocomplete=\"off\" type=\"email\" class=\"form-control\" id=\"contactEmail\" formControlName=\"email\"\r\n pattern=\"^([a-zA-Z0-9_\\-\\.]+)@[a-z0-9-]+(\\.[a-z0-9-]+)*(\\.[a-zA-Z]{2,3})$\"\r\n [ngClass]=\"{ 'is-invalid':spocDetail.get('email')?.invalid && spocDetail.get('email')?.touched}\">\r\n <ng-container *ngIf=\"spocDetail.get('email')?.touched\">\r\n <small class=\"invalid-feedback\" *ngIf=\"spocDetail.get('email')?.hasError('required')\">\r\n Email is required.\r\n </small>\r\n <small class=\"invalid-feedback\" *ngIf=\"spocDetail.get('email')?.hasError('minlength')\">\r\n Email must be at least 3 characters long.\r\n </small>\r\n <small class=\"invalid-feedback\" *ngIf=\"spocDetail.get('email')?.hasError('maxlength')\">\r\n Email must be not more than 100 characters long.\r\n </small>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"contactNumber\" class=\"form-label\">Contact Number</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"contactNumber\" minlength=\"10\" maxlength=\"13\"\r\n (keypress)=\"omit_special_char($event)\" formControlName=\"contact\"\r\n [ngClass]=\"{ 'is-invalid':spocDetail.get('contact')?.invalid && spocDetail.get('contact')?.touched}\">\r\n <ng-container *ngIf=\"spocDetail.get('contact')?.touched\">\r\n <small class=\"invalid-feedback\" *ngIf=\"spocDetail.get('contact')?.hasError('required')\">\r\n Contact is required.\r\n </small>\r\n <small class=\"invalid-feedback\" *ngIf=\"spocDetail.get('contact')?.hasError('minlength')\">\r\n Contact must be at least 10 digits.\r\n </small>\r\n <small class=\"invalid-feedback\" *ngIf=\"spocDetail.get('contact')?.hasError('maxlength')\">\r\n Contact must be not more than 13 digits.\r\n </small>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"designation\" class=\"form-label\">Designation (optional)</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"designation\" formControlName=\"designation\">\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n <div class=\"col-md-12 mb-5\">\r\n <h1 class=\"sub-head\">Enter Store Connection Details</h1>\r\n </div>\r\n <div class=\"col-md-12 mb-5\">\r\n <label for=\"anyDeskID\" class=\"form-label\">AnyDesk ID / TeamViewer ID (optional)</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"anyDeskID\"\r\n formControlName=\"storeConnectionId\">\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-12 text-end\">\r\n <button type=\"button\"\r\n class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3\" (click)=\"navigateToAddStore()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"goToReview()\">Next</button>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Store Contact End -->\r\n\r\n <!-- Review & Submit Start -->\r\n <div [hidden]=\"select !== 'review'\">\r\n <div class=\"fs-4 fw-bold text-hover-primary sub-title text-gray-600 m-0 cursor-pointer\">Store\r\n Info\r\n </div>\r\n <div class=\"card-body p-9\">\r\n\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Store Name</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bolder fs-6 text-review-val\">{{storeForm.get('storeName')?.value ?\r\n storeForm.get('storeName')?.value : 'NA'}}</span>\r\n </div>\r\n </div>\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Store Code</label>\r\n <div class=\"col-lg-9 fv-row\"><span\r\n class=\"fw-bold fs-6 text-review-val\">{{storeForm.get('storeCode')?.value ?\r\n storeForm.get('storeCode')?.value: 'NA'}}</span>\r\n </div>\r\n </div>\r\n <div class=\"row mb-7\"> \r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Business Type</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bold fs-6 text-review-val text-hover-primary\">\r\n {{storeForm.get('businessType')?.value ? storeForm.get('businessType')?.value :\r\n 'NA'}} </span>\r\n </div>\r\n </div>\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Store Type\r\n <!-- <i data-bs-toggle=\"tooltip\"\r\n title=\"Phone number must be active\" class=\"fas fa-exclamation-circle ms-1 fs-7\"></i> -->\r\n </label>\r\n <div class=\"col-lg-9 d-flex align-items-center\">\r\n <span\r\n class=\"fw-bolder fs-6 me-2 text-review-val\">{{storeForm.get('storeType_type')?.value\r\n ? storeForm.get('storeType_type')?.value : 'NA'}}</span>\r\n <!-- <span class=\"badge badge-success\">Verified</span> -->\r\n </div>\r\n </div>\r\n <div class=\"row mb-7\"\r\n *ngIf=\"storeForm.get('storeType_type')?.value && storeForm.get('storeType_type')?.value === 'Mall Store'\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\"> Mall Name</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bolder fs-6 text-review-val\">{{storeForm.get('storeType_name')?.value\r\n ? storeForm.get('storeType_name')?.value : 'NA'}}</span>\r\n </div>\r\n </div>\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Address</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bolder fs-6 text-review-val\">\r\n <ng-container *ngIf=\"storeForm.get('address')?.value &&\r\n storeForm.get('city')?.value &&\r\n storeForm.get('state')?.value &&\r\n storeForm.get('country')?.value &&\r\n storeForm.get('pincode')?.value\">\r\n {{storeForm.get('address')?.value ? storeForm.get('address')?.value : ''}},\r\n {{storeForm.get('city')?.value ? storeForm.get('city')?.value : ''}},\r\n {{storeForm.get('state')?.value ? storeForm.get('state')?.value : ''}},\r\n {{storeForm.get('country')?.value ? storeForm.get('country')?.value : ''}},\r\n {{storeForm.get('pincode')?.value ? storeForm.get('pincode')?.value : ''}}\r\n </ng-container>\r\n <ng-container *ngIf=\"!storeForm.get('address')?.value ||\r\n !storeForm.get('city')?.value ||\r\n !storeForm.get('state')?.value ||\r\n !storeForm.get('country')?.value ||\r\n !storeForm.get('pincode')?.value\">\r\n NA\r\n </ng-container>\r\n </span>\r\n </div>\r\n </div>\r\n <!-- <div class=\"row mb-10\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Allow Changes</label>\r\n <div class=\"col-lg-9\"><span class=\"fw-bold fs-6\">Yes</span></div>\r\n </div> -->\r\n\r\n </div>\r\n <div class=\"fs-4 fw-bold text-hover-primary sub-title text-gray-600 m-0 cursor-pointer\">Store\r\n Configuration</div>\r\n <div class=\"card-body p-9\">\r\n\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Time Zone</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bolder fs-6 text-review-val\">{{storeForm.get('timeZone')?.value ?\r\n storeForm.get('timeZone')?.value : 'NA'}}</span>\r\n </div>\r\n </div>\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">No of Cameras</label>\r\n <div class=\"col-lg-9 fv-row\"><span\r\n class=\"fw-bold fs-6 text-review-val\">{{storeForm.get('cameras')?.value ?\r\n storeForm.get('cameras')?.value : 'NA'}}</span>\r\n </div>\r\n </div>\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Store Open Time</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bold fs-6 text-review-val text-hover-primary\">{{storeForm.get('open')?.value\r\n ? storeForm.get('open')?.value : 'NA'}}\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Store Close Time</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bolder fs-6 text-review-val\">{{storeForm.get('close')?.value ?\r\n storeForm.get('close')?.value : 'NA'}}</span>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"fs-4 fw-bold text-hover-primary sub-title text-gray-600 m-0 cursor-pointer\">Contact\r\n Details</div>\r\n <div class=\"card-body row px-9 pt-3 pb-4\">\r\n <div class=\"table-responsive col-md-12 col-lg-12 col-xl-9 col-xxl-8\">\r\n <table class=\"table align-middle gy-6\">\r\n <tbody class=\"fs-6 fw-bold\"> \r\n <ng-container formArrayName=\"spocDetails\">\r\n <ng-container *ngFor=\"let spoc of getspocDetailsControls();let i=index;\">\r\n <tr>\r\n <td>Spoc {{i+1}}</td>\r\n <td><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M15 15.75V14.25C15 13.4544 14.6839 12.6913 14.1213 12.1287C13.5587 11.5661 12.7956 11.25 12 11.25H6C5.20435 11.25 4.44129 11.5661 3.87868 12.1287C3.31607 12.6913 3 13.4544 3 14.25V15.75M12 5.25C12 6.90685 10.6569 8.25 9 8.25C7.34315 8.25 6 6.90685 6 5.25C6 3.59315 7.34315 2.25 9 2.25C10.6569 2.25 12 3.59315 12 5.25Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">{{getspocDetailsValues(i)?.name ?\r\n getspocDetailsValues(i)?.name : 'NA' }}</span></td>\r\n <td><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1_80373)\">\r\n <path\r\n d=\"M12 6.00002V9.75002C12 10.3468 12.2371 10.9191 12.659 11.341C13.081 11.763 13.6533 12 14.25 12C14.8467 12 15.419 11.763 15.841 11.341C16.263 10.9191 16.5 10.3468 16.5 9.75002V9.00002C16.4999 7.30729 15.9272 5.66438 14.875 4.33842C13.8227 3.01246 12.3529 2.08144 10.7045 1.69675C9.05605 1.31205 7.32596 1.4963 5.79552 2.21955C4.26508 2.94279 3.02431 4.16249 2.27495 5.68032C1.5256 7.19814 1.31173 8.92483 1.66813 10.5796C2.02453 12.2344 2.93024 13.7199 4.23798 14.7947C5.54572 15.8695 7.17858 16.4703 8.87106 16.4994C10.5635 16.5285 12.2161 15.9842 13.56 14.955M12 9.00002C12 10.6569 10.6569 12 9.00001 12C7.34315 12 6.00001 10.6569 6.00001 9.00002C6.00001 7.34317 7.34315 6.00002 9.00001 6.00002C10.6569 6.00002 12 7.34317 12 9.00002Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1_80373\">\r\n <rect width=\"18\" height=\"18\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg><span class=\"ms-2\">{{getspocDetailsValues(i)?.email ?\r\n getspocDetailsValues(i)?.email : 'NA' }}</span></td>\r\n <td><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1_80376)\">\r\n <path\r\n d=\"M16.5001 12.6901V14.9401C16.5009 15.1489 16.4581 15.3557 16.3745 15.5471C16.2908 15.7385 16.168 15.9103 16.0141 16.0515C15.8602 16.1927 15.6785 16.3002 15.4806 16.3671C15.2828 16.434 15.0731 16.4589 14.8651 16.4401C12.5572 16.1893 10.3403 15.4007 8.39257 14.1376C6.58044 12.9861 5.04407 11.4497 3.89257 9.63757C2.62506 7.68098 1.83625 5.45332 1.59007 3.13507C1.57133 2.92767 1.59598 2.71864 1.66245 2.52129C1.72892 2.32394 1.83575 2.14259 1.97615 1.98879C2.11654 1.83499 2.28743 1.7121 2.47792 1.62796C2.6684 1.54382 2.87433 1.50027 3.08257 1.50007H5.33257C5.69655 1.49649 6.04942 1.62538 6.32539 1.86272C6.60137 2.10006 6.78163 2.42966 6.83257 2.79007C6.92754 3.51012 7.10366 4.21712 7.35757 4.89757C7.45848 5.16602 7.48032 5.45776 7.4205 5.73823C7.36069 6.01871 7.22172 6.27616 7.02007 6.48007L6.06757 7.43257C7.13524 9.31023 8.68991 10.8649 10.5676 11.9326L11.5201 10.9801C11.724 10.7784 11.9814 10.6395 12.2619 10.5796C12.5424 10.5198 12.8341 10.5417 13.1026 10.6426C13.783 10.8965 14.49 11.0726 15.2101 11.1676C15.5744 11.219 15.9071 11.4025 16.145 11.6832C16.3828 11.9639 16.5092 12.3223 16.5001 12.6901Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1_80376\">\r\n <rect width=\"18\" height=\"18\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg><span class=\"ms-2\">{{getspocDetailsValues(i)?.contact ?\r\n getspocDetailsValues(i)?.contact : 'NA' }}</span></td>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n <tr>\r\n <td>AnyDesk ID\r\n <td>\r\n <span class=\"ms-2\">{{storeForm.get('storeConnectionId')?.value ?\r\n storeForm.get('storeConnectionId')?.value : 'NA' }}</span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"text-end\">\r\n <button type=\"button\" (click)=\"goToStoreInfo()\"\r\n class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3\">Edit</button>\r\n <button type=\"button\" [disabled]=\"storeForm.invalid\" (click)=\"onSubmit()\"\r\n class=\"btn btn-primary\">Submit</button>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Review & Submit End -->\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".kiwi{fill:#344054}.kiwi.active{fill:#009bf3}.menu-title{color:var(--Gray-700, #344054)!important;font-family:Inter;font-size:16px!important;font-weight:500!important;line-height:24px}.menu-state-bg .menu-item .menu-link.active{border-radius:6px!important;background:var(--Primary-50, #EAF8FF)!important;padding:8px 16px}.menu-state-title-primary .menu-item .menu-link.active .menu-title{color:var(--Primary-700, #009BF3)!important}.sub-title{color:var(--Gray-700, #344054)!important;font-family:Inter;font-size:18px!important;font-style:normal;font-weight:500!important;line-height:28px}.text-muted-review{color:var(--Gray-500, #667085)!important;font-family:Inter;font-size:14px!important;font-style:normal;font-weight:500!important;line-height:20px}.text-review-val{color:var(--Gray-700, #344054)!important;font-family:Inter;font-size:14px!important;font-weight:600!important;line-height:20px}.align-middle{color:var(--Gray-500, #667085)!important;font-family:Inter;font-size:14px!important;font-weight:500!important;line-height:20px}td{padding:0!important}.invalid-feedback,small{color:var(--Error-500, #F04438)!important;font-size:14px!important;font-weight:400!important;line-height:20px}.is-invalid{border-radius:8px!important;border:1px solid var(--Error-300, #FDA29B)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;padding-right:calc(1.5em + .75rem)!important;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzIyMDFfMjA5NTApIj4KPHBhdGggZD0iTTcuOTk5NjcgNS4zMzM5OFY4LjAwMDY1TTcuOTk5NjcgMTAuNjY3M0g4LjAwNjM0TTE0LjY2NjMgOC4wMDA2NUMxNC42NjYzIDExLjY4MjYgMTEuNjgxNiAxNC42NjczIDcuOTk5NjcgMTQuNjY3M0M0LjMxNzc4IDE0LjY2NzMgMS4zMzMwMSAxMS42ODI2IDEuMzMzMDEgOC4wMDA2NUMxLjMzMzAxIDQuMzE4NzUgNC4zMTc3OCAxLjMzMzk4IDcuOTk5NjcgMS4zMzM5OEMxMS42ODE2IDEuMzMzOTggMTQuNjY2MyA0LjMxODc1IDE0LjY2NjMgOC4wMDA2NVoiIHN0cm9rZT0iI0YwNDQzOCIgc3Ryb2tlLXdpZHRoPSIxLjMzMzMzIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8yMjAxXzIwOTUwIj4KPHJlY3Qgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=)!important;background-repeat:no-repeat!important;background-position:right calc(.375em + .1875rem) center!important;background-size:calc(.75em + .375rem) calc(.75em + .375rem)!important}::ng-deep .swal2-popup.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;min-width:2em;height:0em;margin:0 .5em 0 0}::ng-deep .listitem{display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:.5rem 1rem;background-color:#f3f6f9;margin-top:.75rem;border-radius:.42rem}::ng-deep .toasttitile{color:#3f4254;font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:140%}::ng-deep .list{overflow-y:auto}::ng-deep .listitemlabel{font-size:13px!important;font-weight:600;font-family:Inter;color:#7e8299}::ng-deep .swal2-container{padding:.4em!important}::ng-deep .swal2-icon{border:1px solid white!important}::ng-deep body.swal2-toast-shown .swal2-container{width:500px!important}::ng-deep .swal2-popup.swal2-toast{border-left:4px solid #009EF7}::ng-deep .swal2-popup.swal2-toast .swal2-title{margin:9px 5px auto!important}::ng-deep .label{color:#3f4254;font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:140%}.spocArea{overflow-y:scroll;max-height:60vh;padding:0;margin:0}::ng-deep .spocArea::-webkit-scrollbar-thumb{-webkit-border-radius:10px!important;border-radius:10px!important;background:var(--gray-100, #eaeaea)!important;height:50px!important}::ng-deep .spocArea::-webkit-scrollbar{width:10px!important}::ng-deep .spocArea::-webkit-scrollbar-track{background:none!important;box-shadow:none!important}.sub-head{color:var(--Gray-900, #101828)!important;font-size:18px!important;font-weight:600!important;line-height:28px}.form-label{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:500!important;line-height:20px}.btn-primary{border-radius:8px!important;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--White, #FFF)!important;font-size:16px!important;font-weight:600;line-height:24px}.btn-outline{border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--Gray-700, #344054)!important;font-size:16px!important;font-weight:600!important;line-height:24px}.btn-light-primary1{border-radius:8px;border:1px solid var(--Primary-50, #EAF8FF)!important;background:var(--Primary-50, #EAF8FF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--Primary-700, #009BF3)!important;font-size:14px!important;font-weight:600!important;line-height:20px}\n"], dependencies: [{ 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: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.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: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "directive", type: i6.NgxGpAutocompleteDirective, selector: "[ngx-gp-autocomplete]", inputs: ["options"], outputs: ["onAddressChange"], exportAs: ["ngx-places"] }] });
246
233
  }
247
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: AddStoresFormComponent, decorators: [{
234
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AddStoresFormComponent, decorators: [{
248
235
  type: Component,
249
236
  args: [{ selector: "lib-add-stores-form", template: "<div class=\"row mt-3 mb-6\">\r\n <div class=\"col-md-3 col-lg-3 col-xl-3 col-xxl-3\" id=\"left-container\">\r\n <div class=\"card card-flush h-100 mb-0\">\r\n <!--begin::Aside content-->\r\n <div class=\"card-body\">\r\n <div\r\n class=\"menu menu-column menu-rounded menu-state-bg menu-state-title-primary menu-state-icon-primary menu-state-bullet-primary\">\r\n <!--begin::Menu item-->\r\n <div class=\"menu-item my-3\">\r\n <!--begin::Inbox-->\r\n <span class=\"menu-link\" [ngClass]=\"{ 'active': select === 'store_info' }\"\r\n (click)=\"settingvalue('store_info')\">\r\n <span class=\"menu-icon\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path stroke=\"currentColor\"\r\n d=\"M3.08995 6.88369L3.02401 6.98669C2.30358 8.25557 3.06101 9.87945 4.46464 10.0662C4.58627 10.0811 4.70112 10.0892 4.8145 10.0892C5.55255 10.0892 6.20523 9.77229 6.65953 9.27917L7.21286 8.67854L7.76432 9.28089C8.21367 9.77171 8.8652 10.0892 9.60776 10.0892C10.3471 10.0892 11.0022 9.77137 11.4512 9.28089L12.0044 8.67665L12.5576 9.28089C13.0066 9.77137 13.6617 10.0892 14.401 10.0892C15.1404 10.0892 15.7954 9.77137 16.2445 9.28089L16.7977 8.67665L17.3508 9.28089C17.7999 9.77137 18.4549 10.0892 19.1943 10.0892C19.3041 10.0892 19.4223 10.0811 19.5433 10.0663C20.9772 9.87168 21.7355 8.16387 20.9155 6.88419C20.9154 6.88413 20.9154 6.88407 20.9154 6.88402L18.8056 3.59429L18.8056 3.59429L18.8046 3.59282C18.7582 3.52002 18.6649 3.46423 18.5584 3.46423H5.44307C5.3365 3.46423 5.24326 3.52002 5.19681 3.59282L5.19619 3.59379L3.08995 6.88369ZM4.81818 12.7499C4.71644 12.7499 4.616 12.7468 4.5169 12.741V16.6428V18.9642C4.5169 19.8211 5.22663 20.5357 6.11942 20.5357H17.882C18.7748 20.5357 19.4845 19.8211 19.4845 18.9642V16.6428V12.7415C19.3874 12.747 19.2893 12.7499 19.1906 12.7499C19.0022 12.7499 18.8157 12.7398 18.632 12.7202V16.6428V17.3928H17.882H6.11942H5.36942V16.6428V12.721C5.18866 12.74 5.00472 12.7499 4.81818 12.7499Z\" />\r\n </svg></span>\r\n <span class=\"menu-title fw-bold \">Store Info</span>\r\n </span>\r\n <!--end::Inbox-->\r\n </div>\r\n <div class=\"menu-item my-3\">\r\n <!--begin::Inbox-->\r\n <span class=\"menu-link\" [ngClass]=\"{ 'active': select === 'config' }\"\r\n (click)=\"settingvalue('config')\">\r\n <span class=\"menu-icon\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"none\">\r\n <g clip-path=\"url(#clip0_1017_22270)\">\r\n <path\r\n d=\"M12 15C13.6569 15 15 13.6569 15 12C15 10.3431 13.6569 9 12 9C10.3431 9 9 10.3431 9 12C9 13.6569 10.3431 15 12 15Z\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M19.4 15C19.2669 15.3016 19.2272 15.6362 19.286 15.9606C19.3448 16.285 19.4995 16.5843 19.73 16.82L19.79 16.88C19.976 17.0657 20.1235 17.2863 20.2241 17.5291C20.3248 17.7719 20.3766 18.0322 20.3766 18.295C20.3766 18.5578 20.3248 18.8181 20.2241 19.0609C20.1235 19.3037 19.976 19.5243 19.79 19.71C19.6043 19.896 19.3837 20.0435 19.1409 20.1441C18.8981 20.2448 18.6378 20.2966 18.375 20.2966C18.1122 20.2966 17.8519 20.2448 17.6091 20.1441C17.3663 20.0435 17.1457 19.896 16.96 19.71L16.9 19.65C16.6643 19.4195 16.365 19.2648 16.0406 19.206C15.7162 19.1472 15.3816 19.1869 15.08 19.32C14.7842 19.4468 14.532 19.6572 14.3543 19.9255C14.1766 20.1938 14.0813 20.5082 14.08 20.83V21C14.08 21.5304 13.8693 22.0391 13.4942 22.4142C13.1191 22.7893 12.6104 23 12.08 23C11.5496 23 11.0409 22.7893 10.6658 22.4142C10.2907 22.0391 10.08 21.5304 10.08 21V20.91C10.0723 20.579 9.96512 20.258 9.77251 19.9887C9.5799 19.7194 9.31074 19.5143 9 19.4C8.69838 19.2669 8.36381 19.2272 8.03941 19.286C7.71502 19.3448 7.41568 19.4995 7.18 19.73L7.12 19.79C6.93425 19.976 6.71368 20.1235 6.47088 20.2241C6.22808 20.3248 5.96783 20.3766 5.705 20.3766C5.44217 20.3766 5.18192 20.3248 4.93912 20.2241C4.69632 20.1235 4.47575 19.976 4.29 19.79C4.10405 19.6043 3.95653 19.3837 3.85588 19.1409C3.75523 18.8981 3.70343 18.6378 3.70343 18.375C3.70343 18.1122 3.75523 17.8519 3.85588 17.6091C3.95653 17.3663 4.10405 17.1457 4.29 16.96L4.35 16.9C4.58054 16.6643 4.73519 16.365 4.794 16.0406C4.85282 15.7162 4.81312 15.3816 4.68 15.08C4.55324 14.7842 4.34276 14.532 4.07447 14.3543C3.80618 14.1766 3.49179 14.0813 3.17 14.08H3C2.46957 14.08 1.96086 13.8693 1.58579 13.4942C1.21071 13.1191 1 12.6104 1 12.08C1 11.5496 1.21071 11.0409 1.58579 10.6658C1.96086 10.2907 2.46957 10.08 3 10.08H3.09C3.42099 10.0723 3.742 9.96512 4.0113 9.77251C4.28059 9.5799 4.48572 9.31074 4.6 9C4.73312 8.69838 4.77282 8.36381 4.714 8.03941C4.65519 7.71502 4.50054 7.41568 4.27 7.18L4.21 7.12C4.02405 6.93425 3.87653 6.71368 3.77588 6.47088C3.67523 6.22808 3.62343 5.96783 3.62343 5.705C3.62343 5.44217 3.67523 5.18192 3.77588 4.93912C3.87653 4.69632 4.02405 4.47575 4.21 4.29C4.39575 4.10405 4.61632 3.95653 4.85912 3.85588C5.10192 3.75523 5.36217 3.70343 5.625 3.70343C5.88783 3.70343 6.14808 3.75523 6.39088 3.85588C6.63368 3.95653 6.85425 4.10405 7.04 4.29L7.1 4.35C7.33568 4.58054 7.63502 4.73519 7.95941 4.794C8.28381 4.85282 8.61838 4.81312 8.92 4.68H9C9.29577 4.55324 9.54802 4.34276 9.72569 4.07447C9.90337 3.80618 9.99872 3.49179 10 3.17V3C10 2.46957 10.2107 1.96086 10.5858 1.58579C10.9609 1.21071 11.4696 1 12 1C12.5304 1 13.0391 1.21071 13.4142 1.58579C13.7893 1.96086 14 2.46957 14 3V3.09C14.0013 3.41179 14.0966 3.72618 14.2743 3.99447C14.452 4.26276 14.7042 4.47324 15 4.6C15.3016 4.73312 15.6362 4.77282 15.9606 4.714C16.285 4.65519 16.5843 4.50054 16.82 4.27L16.88 4.21C17.0657 4.02405 17.2863 3.87653 17.5291 3.77588C17.7719 3.67523 18.0322 3.62343 18.295 3.62343C18.5578 3.62343 18.8181 3.67523 19.0609 3.77588C19.3037 3.87653 19.5243 4.02405 19.71 4.21C19.896 4.39575 20.0435 4.61632 20.1441 4.85912C20.2448 5.10192 20.2966 5.36217 20.2966 5.625C20.2966 5.88783 20.2448 6.14808 20.1441 6.39088C20.0435 6.63368 19.896 6.85425 19.71 7.04L19.65 7.1C19.4195 7.33568 19.2648 7.63502 19.206 7.95941C19.1472 8.28381 19.1869 8.61838 19.32 8.92V9C19.4468 9.29577 19.6572 9.54802 19.9255 9.72569C20.1938 9.90337 20.5082 9.99872 20.83 10H21C21.5304 10 22.0391 10.2107 22.4142 10.5858C22.7893 10.9609 23 11.4696 23 12C23 12.5304 22.7893 13.0391 22.4142 13.4142C22.0391 13.7893 21.5304 14 21 14H20.91C20.5882 14.0013 20.2738 14.0966 20.0055 14.2743C19.7372 14.452 19.5268 14.7042 19.4 15Z\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1017_22270\">\r\n <rect width=\"24\" height=\"24\" fill=\"currentColor\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n\r\n </span>\r\n <span class=\"menu-title fw-bold \">Store Configuration</span>\r\n </span>\r\n <!--end::Inbox-->\r\n </div>\r\n\r\n <!--end::Menu item-->\r\n\r\n\r\n <!--begin::Menu item-->\r\n <div class=\"menu-item my-3\">\r\n <!--begin::Draft-->\r\n <span class=\"menu-link\" [ngClass]=\"{ 'active': select === 'contact' }\"\r\n (click)=\"settingvalue('contact')\">\r\n <span class=\"menu-icon\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path\r\n d=\"M17 21V19C17 17.9391 16.5786 16.9217 15.8284 16.1716C15.0783 15.4214 14.0609 15 13 15H5C3.93913 15 2.92172 15.4214 2.17157 16.1716C1.42143 16.9217 1 17.9391 1 19V21M23 21V19C22.9993 18.1137 22.7044 17.2528 22.1614 16.5523C21.6184 15.8519 20.8581 15.3516 20 15.13M16 3.13C16.8604 3.3503 17.623 3.8507 18.1676 4.55231C18.7122 5.25392 19.0078 6.11683 19.0078 7.005C19.0078 7.89317 18.7122 8.75608 18.1676 9.45769C17.623 10.1593 16.8604 10.6597 16 10.88M13 7C13 9.20914 11.2091 11 9 11C6.79086 11 5 9.20914 5 7C5 4.79086 6.79086 3 9 3C11.2091 3 13 4.79086 13 7Z\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <span class=\"menu-title fw-bold \">Contact Details</span>\r\n </span>\r\n <!--end::Draft-->\r\n </div>\r\n <!--end::Menu item-->\r\n <!--begin::Menu item-->\r\n <div class=\"menu-item my-3\">\r\n <!--begin::Trash-->\r\n <span class=\"menu-link\" [ngClass]=\"{ 'active': select === 'review'}\"\r\n (click)=\"settingvalue('review')\">\r\n <span class=\"menu-icon\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M6 1C5.20435 1 4.44129 1.31607 3.87868 1.87868C3.31607 2.44129 3 3.20435 3 4V20C3 20.7957 3.31607 21.5587 3.87868 22.1213C4.44129 22.6839 5.20435 23 6 23H12H18C18.7957 23 19.5587 22.6839 20.1213 22.1213C20.6839 21.5587 21 20.7957 21 20V16.4208L19 18.4208V20C19 20.2652 18.8946 20.5196 18.7071 20.7071C18.5196 20.8946 18.2652 21 18 21H16.4208L15.3286 22.0922L12 23L12.5455 21H6C5.73478 21 5.48043 20.8946 5.29289 20.7071C5.10536 20.5196 5 20.2652 5 20V4C5 3.73478 5.10536 3.48043 5.29289 3.29289C5.48043 3.10536 5.73478 3 6 3H12V9C12 9.55228 12.4477 10 13 10H19V13.5792L21 11.5792V9C21 8.73478 20.8946 8.48043 20.7071 8.29289L13.7071 1.29289C13.5196 1.10536 13.2652 1 13 1H6ZM17.5858 8L14 4.41421V8H17.5858Z\"\r\n fill=\"currentColor\" />\r\n <path\r\n d=\"M20.0779 11.5014C20.2369 11.3424 20.4256 11.2163 20.6333 11.1303C20.8409 11.0443 21.0635 11 21.2883 11C21.5131 11 21.7357 11.0443 21.9434 11.1303C22.151 11.2163 22.3397 11.3424 22.4987 11.5014C22.6576 11.6603 22.7837 11.849 22.8698 12.0567C22.9558 12.2644 23.0001 12.487 23.0001 12.7117C23.0001 12.9365 22.9558 13.1591 22.8698 13.3668C22.7837 13.5745 22.6576 13.7632 22.4987 13.9221L15.3286 22.0923L12 23.0001L12.9078 19.6715L20.0779 11.5014Z\"\r\n stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <span class=\"menu-title fw-bold \">Review & Submit</span>\r\n </span>\r\n <!--end::Trash-->\r\n </div>\r\n <!--end::Menu item-->\r\n\r\n\r\n </div>\r\n </div>\r\n <!--end::Menu-->\r\n </div>\r\n </div>\r\n <div class=\"col-md-9 col-lg-9 col-xl-9 col-xxl-9\">\r\n <div class=\"card\">\r\n <div class=\"card-header border-bottom-0\">\r\n <h1\r\n class=\"page-heading d-flex text-dark fw-bold fs-2 flex-column justify-content-center my-0 sub-head\">\r\n <span *ngIf=\"select === 'store_info'\">Enter Your Store Details</span>\r\n <span *ngIf=\"select === 'config'\">Enter Your Store Configuration</span>\r\n <span *ngIf=\"select === 'contact'\">Enter Primary SPOC details</span>\r\n <span *ngIf=\"select === 'review'\">Review & submit</span>\r\n </h1>\r\n <div [hidden]=\"select !== 'contact'\" class=\"card-toolbar\">\r\n <button (click)=\"addAltSpoc()\" class=\"btn btn-light-primary1 btn-sm\"><svg class=\"me-2\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"14\" viewBox=\"0 0 18 14\" fill=\"none\">\r\n <path\r\n d=\"M2.7 3.5C2.7 2.57174 3.07928 1.6815 3.75442 1.02513C4.42955 0.368749 5.34522 0 6.3 0C7.25478 0 8.17045 0.368749 8.84558 1.02513C9.52072 1.6815 9.9 2.57174 9.9 3.5C9.9 4.42826 9.52072 5.3185 8.84558 5.97487C8.17045 6.63125 7.25478 7 6.3 7C5.34522 7 4.42955 6.63125 3.75442 5.97487C3.07928 5.3185 2.7 4.42826 2.7 3.5ZM0 13.1879C0 10.4945 2.24437 8.3125 5.01469 8.3125H7.58531C10.3556 8.3125 12.6 10.4945 12.6 13.1879C12.6 13.6363 12.2259 14 11.7647 14H0.835312C0.374063 14 0 13.6363 0 13.1879ZM14.175 8.53125V6.78125H12.375C12.0009 6.78125 11.7 6.48867 11.7 6.125C11.7 5.76133 12.0009 5.46875 12.375 5.46875H14.175V3.71875C14.175 3.35508 14.4759 3.0625 14.85 3.0625C15.2241 3.0625 15.525 3.35508 15.525 3.71875V5.46875H17.325C17.6991 5.46875 18 5.76133 18 6.125C18 6.48867 17.6991 6.78125 17.325 6.78125H15.525V8.53125C15.525 8.89492 15.2241 9.1875 14.85 9.1875C14.4759 9.1875 14.175 8.89492 14.175 8.53125Z\"\r\n fill=\"#00A3FF\" />\r\n </svg>Add Alternate SPOC</button>\r\n </div>\r\n </div>\r\n <div class=\"card-body pt-1\">\r\n <form [formGroup]=\"storeForm\">\r\n <!-- Store Info Start -->\r\n <div [hidden]=\"select !== 'store_info'\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12 col-lg-6 mb-5\">\r\n <label for=\"storeName\" class=\"form-label\">Store Name</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"storeName\" formControlName=\"storeName\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('storeName')?.invalid && storeForm.get('storeName')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('storeName')?.touched && storeForm.get('storeName')?.hasError('required')\">\r\n Store Name is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 mb-5\">\r\n <label for=\"storeCode\" class=\"form-label\">Store Code / Ref Code (optional)</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"storeCode\" formControlName=\"storeCode\">\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 mb-5\">\r\n <label for=\"businessType\" class=\"form-label\">Business Type</label>\r\n <select class=\"form-select\" id=\"businessType\" formControlName=\"businessType\">\r\n <option value=\"COCO\">COCO</option>\r\n <option value=\"COFO\">COFO</option>\r\n <option value=\"FOFO\">FOFO</option>\r\n <option value=\"FOCO\">FOCO</option>\r\n </select>\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 mb-5\">\r\n <label for=\"storeType\" class=\"form-label\">Store Type</label>\r\n <select class=\"form-select\" id=\"storeType\" formControlName=\"storeType_type\">\r\n <option value=\"High Street\">High Street</option>\r\n <option value=\"Mall Store\">Mall Store</option>\r\n <option value=\"Kiosk\">Kiosk</option>\r\n </select>\r\n </div>\r\n <div class=\"col-md-12 mb-5\" *ngIf=\"storeForm.get('storeType_type')?.value === 'Mall Store'\">\r\n <label for=\"mallName\" class=\"form-label\">Enter Mall Name</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"mallName\" formControlName=\"storeType_name\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('storeType_name')?.invalid && storeForm.get('storeType_name')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('storeType_name')?.touched && storeForm.get('storeType_name')?.hasError('required')\">\r\n Mall Name is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-12 mb-5\">\r\n <label for=\"address\" class=\"form-label\">Address Line</label>\r\n <input type=\"text\" class=\"form-control\" id=\"address\" formControlName=\"address\" #placesRef=\"ngx-places\" ngx-gp-autocomplete (onAddressChange)=\"handleAddressChange($event)\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('address')?.invalid && storeForm.get('address')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('address')?.touched && storeForm.get('address')?.hasError('required')\">\r\n Address is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"country\" class=\"form-label\">Country</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"country\" formControlName=\"country\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('country')?.invalid && storeForm.get('country')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('country')?.touched && storeForm.get('country')?.hasError('required')\">\r\n Country is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"state\" class=\"form-label\">State</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"state\" formControlName=\"state\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('state')?.invalid && storeForm.get('state')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('state')?.touched && storeForm.get('state')?.hasError('required')\">\r\n State is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"city\" class=\"form-label\">City / Town</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"city\" formControlName=\"city\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('city')?.invalid && storeForm.get('city')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('city')?.touched && storeForm.get('city')?.hasError('required')\">\r\n City is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"pincode\" class=\"form-label\">Pin / Zip Code</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"pincode\" formControlName=\"pincode\" maxlength=\"6\" minlength=\"6\" (keypress)=\"omit_special_char($event)\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('pincode')?.invalid && storeForm.get('pincode')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('pincode')?.touched && storeForm.get('pincode')?.hasError('required')\">\r\n Pincode is required.\r\n </small>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-12 text-end\">\r\n <button type=\"button\"\r\n class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3\" (click)=\"navigateToAddStore()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary\"\r\n (click)=\"goToConfiguration()\">Next</button>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Store Info End -->\r\n\r\n <!-- Store Configuration Start -->\r\n <div [hidden]=\"select !== 'config'\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"timeZone\" class=\"form-label\">Time Zone</label>\r\n <!-- <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"timeZone\" formControlName=\"timeZone\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('timeZone')?.invalid && storeForm.get('timeZone')?.touched}\"> -->\r\n <select class=\"form-select\" id=\"timeZone\" formControlName=\"timeZone\">\r\n <option *ngFor=\"let timezone of timezones\" [value]=\"timezone\">{{ timezone }}</option>\r\n </select>\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('timeZone')?.touched && storeForm.get('timeZone')?.hasError('required')\">\r\n Time Zone is required.\r\n </small>\r\n </div>\r\n <!-- <div class=\"col-md-6 mb-5\">\r\n <label for=\"noOfCameras\" class=\"form-label\">No of Cameras</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"noOfCameras\" formControlName=\"cameras\" (keypress)=\"omit_special_char($event)\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('cameras')?.invalid && storeForm.get('cameras')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('cameras')?.touched && storeForm.get('cameras')?.hasError('required')\">\r\n No of Cameras is required.\r\n </small>\r\n </div> -->\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"storeOpenTime\" class=\"form-label\">Store Open Time</label>\r\n <input autocomplete=\"off\" type=\"time\" class=\"form-control\" id=\"storeOpenTime\" formControlName=\"open\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('open')?.invalid && storeForm.get('open')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('open')?.touched && storeForm.get('open')?.hasError('required')\">\r\n Store Open Time is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"storeCloseTime\" class=\"form-label\">Store Close Time</label>\r\n <input autocomplete=\"off\" type=\"time\" class=\"form-control\" id=\"storeCloseTime\" formControlName=\"close\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('close')?.invalid && storeForm.get('close')?.touched || storeForm.hasError('invalidTimeRange')}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('close')?.touched && storeForm.get('close')?.hasError('required')\">\r\n Store Close Time is required.\r\n </small>\r\n <small class=\"my-2\" *ngIf=\"storeForm.hasError('invalidTimeRange') && (storeForm.get('open')?.touched || storeForm.get('close')?.touched)\">\r\n Opening time must be before closing time.\r\n </small>\r\n </div>\r\n </div>\r\n <div class=\"row mt-20\">\r\n <div class=\"col-12 text-end mt-15\">\r\n <button type=\"button\"\r\n class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3\" (click)=\"navigateToAddStore()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"goToContact()\">Next</button>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Store Configuration End -->\r\n\r\n <!-- Store Contact Start -->\r\n <div [hidden]=\"select !== 'contact'\">\r\n <div class=\"row\">\r\n <ng-container formArrayName=\"spocDetails\">\r\n <ng-container *ngFor=\"let spocDetail of getspocDetailsControls(); let i = index\" [formGroupName]=\"i\">\r\n <div *ngIf=\"i!==0\" class=\"d-flex justify-content-between align-items-center my-6\">\r\n <ng-container >\r\n <span class=\"fw-bold fs-4\">Alternate SPOC {{i}}</span>\r\n <span (click)=\"delAltSpoc()\">\r\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g filter=\"url(#filter0_d_2250_30650)\">\r\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\r\n <path\r\n d=\"M12.5 13.9998H14.1667M14.1667 13.9998H27.5M14.1667 13.9998V25.6665C14.1667 26.1085 14.3423 26.5325 14.6548 26.845C14.9674 27.1576 15.3913 27.3332 15.8333 27.3332H24.1667C24.6087 27.3332 25.0326 27.1576 25.3452 26.845C25.6577 26.5325 25.8333 26.1085 25.8333 25.6665V13.9998H14.1667ZM16.6667 13.9998V12.3332C16.6667 11.8911 16.8423 11.4672 17.1548 11.1547C17.4674 10.8421 17.8913 10.6665 18.3333 10.6665H21.6667C22.1087 10.6665 22.5326 10.8421 22.8452 11.1547C23.1577 11.4672 23.3333 11.8911 23.3333 12.3332V13.9998M18.3333 18.1665V23.1665M21.6667 18.1665V23.1665\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_2250_30650\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_2250_30650\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2250_30650\"\r\n result=\"shape\" />\r\n </filter>\r\n </defs>\r\n </svg>\r\n </span>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"contactName\" class=\"form-label\">Name</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"contactName\" formControlName=\"name\"\r\n [ngClass]=\"{ 'is-invalid':spocDetail.get('name')?.invalid && spocDetail.get('name')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"spocDetail.get('name')?.touched && spocDetail.get('name')?.hasError('required')\">\r\n Name is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"contactEmail\" class=\"form-label\">Email</label>\r\n <input autocomplete=\"off\" type=\"email\" class=\"form-control\" id=\"contactEmail\" formControlName=\"email\"\r\n pattern=\"^([a-zA-Z0-9_\\-\\.]+)@[a-z0-9-]+(\\.[a-z0-9-]+)*(\\.[a-zA-Z]{2,3})$\"\r\n [ngClass]=\"{ 'is-invalid':spocDetail.get('email')?.invalid && spocDetail.get('email')?.touched}\">\r\n <ng-container *ngIf=\"spocDetail.get('email')?.touched\">\r\n <small class=\"invalid-feedback\" *ngIf=\"spocDetail.get('email')?.hasError('required')\">\r\n Email is required.\r\n </small>\r\n <small class=\"invalid-feedback\" *ngIf=\"spocDetail.get('email')?.hasError('minlength')\">\r\n Email must be at least 3 characters long.\r\n </small>\r\n <small class=\"invalid-feedback\" *ngIf=\"spocDetail.get('email')?.hasError('maxlength')\">\r\n Email must be not more than 100 characters long.\r\n </small>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"contactNumber\" class=\"form-label\">Contact Number</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"contactNumber\" minlength=\"10\" maxlength=\"13\"\r\n (keypress)=\"omit_special_char($event)\" formControlName=\"contact\"\r\n [ngClass]=\"{ 'is-invalid':spocDetail.get('contact')?.invalid && spocDetail.get('contact')?.touched}\">\r\n <ng-container *ngIf=\"spocDetail.get('contact')?.touched\">\r\n <small class=\"invalid-feedback\" *ngIf=\"spocDetail.get('contact')?.hasError('required')\">\r\n Contact is required.\r\n </small>\r\n <small class=\"invalid-feedback\" *ngIf=\"spocDetail.get('contact')?.hasError('minlength')\">\r\n Contact must be at least 10 digits.\r\n </small>\r\n <small class=\"invalid-feedback\" *ngIf=\"spocDetail.get('contact')?.hasError('maxlength')\">\r\n Contact must be not more than 13 digits.\r\n </small>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"designation\" class=\"form-label\">Designation (optional)</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"designation\" formControlName=\"designation\">\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n <div class=\"col-md-12 mb-5\">\r\n <h1 class=\"sub-head\">Enter Store Connection Details</h1>\r\n </div>\r\n <div class=\"col-md-12 mb-5\">\r\n <label for=\"anyDeskID\" class=\"form-label\">AnyDesk ID / TeamViewer ID (optional)</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"anyDeskID\"\r\n formControlName=\"storeConnectionId\">\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-12 text-end\">\r\n <button type=\"button\"\r\n class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3\" (click)=\"navigateToAddStore()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"goToReview()\">Next</button>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Store Contact End -->\r\n\r\n <!-- Review & Submit Start -->\r\n <div [hidden]=\"select !== 'review'\">\r\n <div class=\"fs-4 fw-bold text-hover-primary sub-title text-gray-600 m-0 cursor-pointer\">Store\r\n Info\r\n </div>\r\n <div class=\"card-body p-9\">\r\n\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Store Name</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bolder fs-6 text-review-val\">{{storeForm.get('storeName')?.value ?\r\n storeForm.get('storeName')?.value : 'NA'}}</span>\r\n </div>\r\n </div>\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Store Code</label>\r\n <div class=\"col-lg-9 fv-row\"><span\r\n class=\"fw-bold fs-6 text-review-val\">{{storeForm.get('storeCode')?.value ?\r\n storeForm.get('storeCode')?.value: 'NA'}}</span>\r\n </div>\r\n </div>\r\n <div class=\"row mb-7\"> \r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Business Type</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bold fs-6 text-review-val text-hover-primary\">\r\n {{storeForm.get('businessType')?.value ? storeForm.get('businessType')?.value :\r\n 'NA'}} </span>\r\n </div>\r\n </div>\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Store Type\r\n <!-- <i data-bs-toggle=\"tooltip\"\r\n title=\"Phone number must be active\" class=\"fas fa-exclamation-circle ms-1 fs-7\"></i> -->\r\n </label>\r\n <div class=\"col-lg-9 d-flex align-items-center\">\r\n <span\r\n class=\"fw-bolder fs-6 me-2 text-review-val\">{{storeForm.get('storeType_type')?.value\r\n ? storeForm.get('storeType_type')?.value : 'NA'}}</span>\r\n <!-- <span class=\"badge badge-success\">Verified</span> -->\r\n </div>\r\n </div>\r\n <div class=\"row mb-7\"\r\n *ngIf=\"storeForm.get('storeType_type')?.value && storeForm.get('storeType_type')?.value === 'Mall Store'\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\"> Mall Name</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bolder fs-6 text-review-val\">{{storeForm.get('storeType_name')?.value\r\n ? storeForm.get('storeType_name')?.value : 'NA'}}</span>\r\n </div>\r\n </div>\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Address</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bolder fs-6 text-review-val\">\r\n <ng-container *ngIf=\"storeForm.get('address')?.value &&\r\n storeForm.get('city')?.value &&\r\n storeForm.get('state')?.value &&\r\n storeForm.get('country')?.value &&\r\n storeForm.get('pincode')?.value\">\r\n {{storeForm.get('address')?.value ? storeForm.get('address')?.value : ''}},\r\n {{storeForm.get('city')?.value ? storeForm.get('city')?.value : ''}},\r\n {{storeForm.get('state')?.value ? storeForm.get('state')?.value : ''}},\r\n {{storeForm.get('country')?.value ? storeForm.get('country')?.value : ''}},\r\n {{storeForm.get('pincode')?.value ? storeForm.get('pincode')?.value : ''}}\r\n </ng-container>\r\n <ng-container *ngIf=\"!storeForm.get('address')?.value ||\r\n !storeForm.get('city')?.value ||\r\n !storeForm.get('state')?.value ||\r\n !storeForm.get('country')?.value ||\r\n !storeForm.get('pincode')?.value\">\r\n NA\r\n </ng-container>\r\n </span>\r\n </div>\r\n </div>\r\n <!-- <div class=\"row mb-10\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Allow Changes</label>\r\n <div class=\"col-lg-9\"><span class=\"fw-bold fs-6\">Yes</span></div>\r\n </div> -->\r\n\r\n </div>\r\n <div class=\"fs-4 fw-bold text-hover-primary sub-title text-gray-600 m-0 cursor-pointer\">Store\r\n Configuration</div>\r\n <div class=\"card-body p-9\">\r\n\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Time Zone</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bolder fs-6 text-review-val\">{{storeForm.get('timeZone')?.value ?\r\n storeForm.get('timeZone')?.value : 'NA'}}</span>\r\n </div>\r\n </div>\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">No of Cameras</label>\r\n <div class=\"col-lg-9 fv-row\"><span\r\n class=\"fw-bold fs-6 text-review-val\">{{storeForm.get('cameras')?.value ?\r\n storeForm.get('cameras')?.value : 'NA'}}</span>\r\n </div>\r\n </div>\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Store Open Time</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bold fs-6 text-review-val text-hover-primary\">{{storeForm.get('open')?.value\r\n ? storeForm.get('open')?.value : 'NA'}}\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Store Close Time</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bolder fs-6 text-review-val\">{{storeForm.get('close')?.value ?\r\n storeForm.get('close')?.value : 'NA'}}</span>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"fs-4 fw-bold text-hover-primary sub-title text-gray-600 m-0 cursor-pointer\">Contact\r\n Details</div>\r\n <div class=\"card-body row px-9 pt-3 pb-4\">\r\n <div class=\"table-responsive col-md-12 col-lg-12 col-xl-9 col-xxl-8\">\r\n <table class=\"table align-middle gy-6\">\r\n <tbody class=\"fs-6 fw-bold\"> \r\n <ng-container formArrayName=\"spocDetails\">\r\n <ng-container *ngFor=\"let spoc of getspocDetailsControls();let i=index;\">\r\n <tr>\r\n <td>Spoc {{i+1}}</td>\r\n <td><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M15 15.75V14.25C15 13.4544 14.6839 12.6913 14.1213 12.1287C13.5587 11.5661 12.7956 11.25 12 11.25H6C5.20435 11.25 4.44129 11.5661 3.87868 12.1287C3.31607 12.6913 3 13.4544 3 14.25V15.75M12 5.25C12 6.90685 10.6569 8.25 9 8.25C7.34315 8.25 6 6.90685 6 5.25C6 3.59315 7.34315 2.25 9 2.25C10.6569 2.25 12 3.59315 12 5.25Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">{{getspocDetailsValues(i)?.name ?\r\n getspocDetailsValues(i)?.name : 'NA' }}</span></td>\r\n <td><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1_80373)\">\r\n <path\r\n d=\"M12 6.00002V9.75002C12 10.3468 12.2371 10.9191 12.659 11.341C13.081 11.763 13.6533 12 14.25 12C14.8467 12 15.419 11.763 15.841 11.341C16.263 10.9191 16.5 10.3468 16.5 9.75002V9.00002C16.4999 7.30729 15.9272 5.66438 14.875 4.33842C13.8227 3.01246 12.3529 2.08144 10.7045 1.69675C9.05605 1.31205 7.32596 1.4963 5.79552 2.21955C4.26508 2.94279 3.02431 4.16249 2.27495 5.68032C1.5256 7.19814 1.31173 8.92483 1.66813 10.5796C2.02453 12.2344 2.93024 13.7199 4.23798 14.7947C5.54572 15.8695 7.17858 16.4703 8.87106 16.4994C10.5635 16.5285 12.2161 15.9842 13.56 14.955M12 9.00002C12 10.6569 10.6569 12 9.00001 12C7.34315 12 6.00001 10.6569 6.00001 9.00002C6.00001 7.34317 7.34315 6.00002 9.00001 6.00002C10.6569 6.00002 12 7.34317 12 9.00002Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1_80373\">\r\n <rect width=\"18\" height=\"18\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg><span class=\"ms-2\">{{getspocDetailsValues(i)?.email ?\r\n getspocDetailsValues(i)?.email : 'NA' }}</span></td>\r\n <td><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1_80376)\">\r\n <path\r\n d=\"M16.5001 12.6901V14.9401C16.5009 15.1489 16.4581 15.3557 16.3745 15.5471C16.2908 15.7385 16.168 15.9103 16.0141 16.0515C15.8602 16.1927 15.6785 16.3002 15.4806 16.3671C15.2828 16.434 15.0731 16.4589 14.8651 16.4401C12.5572 16.1893 10.3403 15.4007 8.39257 14.1376C6.58044 12.9861 5.04407 11.4497 3.89257 9.63757C2.62506 7.68098 1.83625 5.45332 1.59007 3.13507C1.57133 2.92767 1.59598 2.71864 1.66245 2.52129C1.72892 2.32394 1.83575 2.14259 1.97615 1.98879C2.11654 1.83499 2.28743 1.7121 2.47792 1.62796C2.6684 1.54382 2.87433 1.50027 3.08257 1.50007H5.33257C5.69655 1.49649 6.04942 1.62538 6.32539 1.86272C6.60137 2.10006 6.78163 2.42966 6.83257 2.79007C6.92754 3.51012 7.10366 4.21712 7.35757 4.89757C7.45848 5.16602 7.48032 5.45776 7.4205 5.73823C7.36069 6.01871 7.22172 6.27616 7.02007 6.48007L6.06757 7.43257C7.13524 9.31023 8.68991 10.8649 10.5676 11.9326L11.5201 10.9801C11.724 10.7784 11.9814 10.6395 12.2619 10.5796C12.5424 10.5198 12.8341 10.5417 13.1026 10.6426C13.783 10.8965 14.49 11.0726 15.2101 11.1676C15.5744 11.219 15.9071 11.4025 16.145 11.6832C16.3828 11.9639 16.5092 12.3223 16.5001 12.6901Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1_80376\">\r\n <rect width=\"18\" height=\"18\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg><span class=\"ms-2\">{{getspocDetailsValues(i)?.contact ?\r\n getspocDetailsValues(i)?.contact : 'NA' }}</span></td>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n <tr>\r\n <td>AnyDesk ID\r\n <td>\r\n <span class=\"ms-2\">{{storeForm.get('storeConnectionId')?.value ?\r\n storeForm.get('storeConnectionId')?.value : 'NA' }}</span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"text-end\">\r\n <button type=\"button\" (click)=\"goToStoreInfo()\"\r\n class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3\">Edit</button>\r\n <button type=\"button\" [disabled]=\"storeForm.invalid\" (click)=\"onSubmit()\"\r\n class=\"btn btn-primary\">Submit</button>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Review & Submit End -->\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".kiwi{fill:#344054}.kiwi.active{fill:#009bf3}.menu-title{color:var(--Gray-700, #344054)!important;font-family:Inter;font-size:16px!important;font-weight:500!important;line-height:24px}.menu-state-bg .menu-item .menu-link.active{border-radius:6px!important;background:var(--Primary-50, #EAF8FF)!important;padding:8px 16px}.menu-state-title-primary .menu-item .menu-link.active .menu-title{color:var(--Primary-700, #009BF3)!important}.sub-title{color:var(--Gray-700, #344054)!important;font-family:Inter;font-size:18px!important;font-style:normal;font-weight:500!important;line-height:28px}.text-muted-review{color:var(--Gray-500, #667085)!important;font-family:Inter;font-size:14px!important;font-style:normal;font-weight:500!important;line-height:20px}.text-review-val{color:var(--Gray-700, #344054)!important;font-family:Inter;font-size:14px!important;font-weight:600!important;line-height:20px}.align-middle{color:var(--Gray-500, #667085)!important;font-family:Inter;font-size:14px!important;font-weight:500!important;line-height:20px}td{padding:0!important}.invalid-feedback,small{color:var(--Error-500, #F04438)!important;font-size:14px!important;font-weight:400!important;line-height:20px}.is-invalid{border-radius:8px!important;border:1px solid var(--Error-300, #FDA29B)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;padding-right:calc(1.5em + .75rem)!important;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzIyMDFfMjA5NTApIj4KPHBhdGggZD0iTTcuOTk5NjcgNS4zMzM5OFY4LjAwMDY1TTcuOTk5NjcgMTAuNjY3M0g4LjAwNjM0TTE0LjY2NjMgOC4wMDA2NUMxNC42NjYzIDExLjY4MjYgMTEuNjgxNiAxNC42NjczIDcuOTk5NjcgMTQuNjY3M0M0LjMxNzc4IDE0LjY2NzMgMS4zMzMwMSAxMS42ODI2IDEuMzMzMDEgOC4wMDA2NUMxLjMzMzAxIDQuMzE4NzUgNC4zMTc3OCAxLjMzMzk4IDcuOTk5NjcgMS4zMzM5OEMxMS42ODE2IDEuMzMzOTggMTQuNjY2MyA0LjMxODc1IDE0LjY2NjMgOC4wMDA2NVoiIHN0cm9rZT0iI0YwNDQzOCIgc3Ryb2tlLXdpZHRoPSIxLjMzMzMzIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8yMjAxXzIwOTUwIj4KPHJlY3Qgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=)!important;background-repeat:no-repeat!important;background-position:right calc(.375em + .1875rem) center!important;background-size:calc(.75em + .375rem) calc(.75em + .375rem)!important}::ng-deep .swal2-popup.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;min-width:2em;height:0em;margin:0 .5em 0 0}::ng-deep .listitem{display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:.5rem 1rem;background-color:#f3f6f9;margin-top:.75rem;border-radius:.42rem}::ng-deep .toasttitile{color:#3f4254;font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:140%}::ng-deep .list{overflow-y:auto}::ng-deep .listitemlabel{font-size:13px!important;font-weight:600;font-family:Inter;color:#7e8299}::ng-deep .swal2-container{padding:.4em!important}::ng-deep .swal2-icon{border:1px solid white!important}::ng-deep body.swal2-toast-shown .swal2-container{width:500px!important}::ng-deep .swal2-popup.swal2-toast{border-left:4px solid #009EF7}::ng-deep .swal2-popup.swal2-toast .swal2-title{margin:9px 5px auto!important}::ng-deep .label{color:#3f4254;font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:140%}.spocArea{overflow-y:scroll;max-height:60vh;padding:0;margin:0}::ng-deep .spocArea::-webkit-scrollbar-thumb{-webkit-border-radius:10px!important;border-radius:10px!important;background:var(--gray-100, #eaeaea)!important;height:50px!important}::ng-deep .spocArea::-webkit-scrollbar{width:10px!important}::ng-deep .spocArea::-webkit-scrollbar-track{background:none!important;box-shadow:none!important}.sub-head{color:var(--Gray-900, #101828)!important;font-size:18px!important;font-weight:600!important;line-height:28px}.form-label{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:500!important;line-height:20px}.btn-primary{border-radius:8px!important;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--White, #FFF)!important;font-size:16px!important;font-weight:600;line-height:24px}.btn-outline{border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--Gray-700, #344054)!important;font-size:16px!important;font-weight:600!important;line-height:24px}.btn-light-primary1{border-radius:8px;border:1px solid var(--Primary-50, #EAF8FF)!important;background:var(--Primary-50, #EAF8FF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--Primary-700, #009BF3)!important;font-size:14px!important;font-weight:600!important;line-height:20px}\n"] }]
250
- }], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.StoresService }, { type: i0.ChangeDetectorRef }, { type: i3.Router }], propDecorators: { placesRef: [{
237
+ }], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.StoresService }, { type: i3.ToastService }, { type: i4.Router }], propDecorators: { placesRef: [{
251
238
  type: ViewChild,
252
239
  args: ["ngxPlaces"]
253
240
  }] } });
254
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXN0b3Jlcy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS1zdG9yZXMvc3JjL2xpYi9jb21wb25lbnRzL2FkZC1zdG9yZXMtZm9ybS9hZGQtc3RvcmVzLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tbWFuYWdlLXN0b3Jlcy9zcmMvbGliL2NvbXBvbmVudHMvYWRkLXN0b3Jlcy1mb3JtL2FkZC1zdG9yZXMtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUVULFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQTBCLFVBQVUsRUFBZ0QsTUFBTSxnQkFBZ0IsQ0FBQztBQUlsSCxPQUFPLElBQUksTUFBTSxhQUFhLENBQUM7QUFFL0IsT0FBTyxLQUFLLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7OztBQVUxQyxNQUFNLE9BQU8sc0JBQXNCO0lBbUN2QjtJQUNBO0lBQ0E7SUFDQTtJQXJDYyxTQUFTLENBQTZCO0lBRTlELE1BQU0sR0FBRyxZQUFZLENBQUM7SUFDdEIsU0FBUyxDQUFZO0lBQ3JCLE9BQU8sQ0FBUztJQUNoQixTQUFTLENBQVE7SUFDakIsY0FBYyxDQUFNO0lBRWIsbUJBQW1CLENBQUMsS0FBMkM7UUFDcEUsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFO1lBQ2xCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQzNDLENBQUMsU0FBdUMsRUFBRSxFQUFFLENBQzFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUN0QyxFQUFFLFNBQVMsQ0FBQztZQUNiLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQ3hD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LENBQUM7UUFDTixDQUFDLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLGlEQUFpRDtRQUNyRSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLFNBQVMsR0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ25DLENBQUM7dUdBOVFVLHNCQUFzQjsyRkFBdEIsc0JBQXNCLG1LQ3RCbkMsMnRxREFtakJNOzsyRkQ3aEJPLHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDRSxxQkFBcUI7aUtBS1AsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgT25Jbml0LFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUFycmF5LCBWYWxpZGF0b3JzLCBGb3JtR3JvdXAsIEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBTdG9yZXNTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3N0b3Jlcy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7IFN0b3JlUmVzcG9uc2UgfSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlcy9zdG9yZS5pbnRlcmZhY2VcIjtcclxuaW1wb3J0IFN3YWwgZnJvbSBcInN3ZWV0YWxlcnQyXCI7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gJ21vbWVudC10aW1lem9uZSc7XHJcbmltcG9ydCB7IE5neEdwQXV0b2NvbXBsZXRlRGlyZWN0aXZlIH0gZnJvbSBcIkBhbmd1bGFyLW1hZ2ljL25neC1ncC1hdXRvY29tcGxldGUvbGliL25neC1ncC1hdXRvY29tcGxldGUuZGlyZWN0aXZlXCI7XHJcblxyXG5kZWNsYXJlIHZhciAkOiBhbnk7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJsaWItYWRkLXN0b3Jlcy1mb3JtXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9hZGQtc3RvcmVzLWZvcm0uY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybDogXCIuL2FkZC1zdG9yZXMtZm9ybS5jb21wb25lbnQuc2Nzc1wiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWRkU3RvcmVzRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQFZpZXdDaGlsZChcIm5neFBsYWNlc1wiKSBwbGFjZXNSZWY6IE5neEdwQXV0b2NvbXBsZXRlRGlyZWN0aXZlO1xyXG5cclxuICBzZWxlY3QgPSBcInN0b3JlX2luZm9cIjtcclxuICBzdG9yZUZvcm06IEZvcm1Hcm91cDtcclxuICBzdG9yZUlkOiBzdHJpbmc7XHJcbiAgdGltZXpvbmVzOiBhbnlbXTtcclxuICAkaGVhZGVyRmlsdGVyczogYW55O1xyXG5cclxuICBwdWJsaWMgaGFuZGxlQWRkcmVzc0NoYW5nZShwbGFjZTogZ29vZ2xlLm1hcHMucGxhY2VzLlBsYWNlUmVzdWx0IHwgYW55KSB7XHJcbiAgICBpZiAocGxhY2UuZ2VvbWV0cnkpIHtcclxuICAgICAgY29uc3QgY291bnRyeSA9IHBsYWNlLmFkZHJlc3NfY29tcG9uZW50cy5maW5kKFxyXG4gICAgICAgIChjb21wb25lbnQ6IHsgdHlwZXM6IHN0cmluZyB8IHN0cmluZ1tdIH0pID0+XHJcbiAgICAgICAgICBjb21wb25lbnQudHlwZXMuaW5jbHVkZXMoXCJjb3VudHJ5XCIpXHJcbiAgICAgICk/LmxvbmdfbmFtZTtcclxuICAgICAgY29uc3QgY2l0eSA9IHBsYWNlLmFkZHJlc3NfY29tcG9uZW50cy5maW5kKFxyXG4gICAgICAgIChjb21wb25lbnQ6IHsgdHlwZXM6IHN0cmluZyB8IHN0cmluZ1tdIH0pID0+XHJcbiAgICAgICAgICBjb21wb25lbnQudHlwZXMuaW5jbHVkZXMoXCJsb2NhbGl0eVwiKVxyXG4gICAgICApPy5sb25nX25hbWU7XHJcbiAgICAgIGNvbnN0IHN0YXRlID0gcGxhY2UuYWRkcmVzc19jb21wb25lbnRzLmZpbmQoXHJcbiAgICAgICAgKGNvbXBvbmVudDogeyB0eXBlczogc3RyaW5nIHwgc3RyaW5nW10gfSkgPT5cclxuICAgICAgICAgIGNvbXBvbmVudC50eXBlcy5pbmNsdWRlcyhcImFkbWluaXN0cmF0aXZlX2FyZWFfbGV2ZWxfMVwiKVxyXG4gICAgICApPy5sb25nX25hbWU7XHJcbiAgICAgIGNvbnN0IHBpbmNvZGUgPSBwbGFjZS5hZGRyZXNzX2NvbXBvbmVudHMuZmluZChcclxuICAgICAgICAoY29tcG9uZW50OiB7IHR5cGVzOiBzdHJpbmcgfCBzdHJpbmdbXSB9KSA9PlxyXG4gICAgICAgICAgY29tcG9uZW50LnR5cGVzLmluY2x1ZGVzKFwicG9zdGFsX2NvZGVcIilcclxuICAgICAgKT8ubG9uZ19uYW1lO1xyXG4gICAgICB0aGlzLnN0b3JlRm9ybS5nZXQoXCJjb3VudHJ5XCIpPy5zZXRWYWx1ZShjb3VudHJ5KTtcclxuICAgICAgdGhpcy5zdG9yZUZvcm0uZ2V0KFwiY2l0eVwiKT8uc2V0VmFsdWUoY2l0eSk7XHJcbiAgICAgIHRoaXMuc3RvcmVGb3JtLmdldChcInN0YXRlXCIpPy5zZXRWYWx1ZShzdGF0ZSk7XHJcbiAgICAgIHRoaXMuc3RvcmVGb3JtLmdldChcInBpbmNvZGVcIik/LnNldFZhbHVlKHBpbmNvZGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgc3RvcmVzU2VydmljZTogU3RvcmVzU2VydmljZSxcclxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxyXG4gICkge1xyXG4gICAgbGV0IGRhdGE6YW55ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnaGVhZGVyLWZpbHRlcnMnKSB8fCAnJyk7XHJcbiAgICB0aGlzLiRoZWFkZXJGaWx0ZXJzID0gZGF0YTtcclxuICAgIHRoaXMuZ2V0QWxsVGltZXpvbmVzKCk7XHJcbiAgICB0aGlzLmNyZWF0ZUZvcm0oKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge31cclxuXHJcbiAgc2V0dGluZ3ZhbHVlKGxhYmVsOiBhbnkpIHtcclxuICAgIGlmIChsYWJlbCA9PSBcInN0b3JlX2luZm9cIikge1xyXG4gICAgICB0aGlzLnNlbGVjdCA9IFwic3RvcmVfaW5mb1wiO1xyXG4gICAgfSBlbHNlIGlmIChsYWJlbCA9PSBcImNvbmZpZ1wiKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ID0gXCJjb25maWdcIjtcclxuICAgIH0gZWxzZSBpZiAobGFiZWwgPT0gXCJzdG9yZV9sb2NcIikge1xyXG4gICAgICB0aGlzLnNlbGVjdCA9IFwic3RvcmVfbG9jXCI7XHJcbiAgICB9IGVsc2UgaWYgKGxhYmVsID09IFwiY29udGFjdFwiKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ID0gXCJjb250YWN0XCI7XHJcbiAgICB9IGVsc2UgaWYgKGxhYmVsID09IFwicmV2aWV3XCIpIHtcclxuICAgICAgdGhpcy5zZWxlY3QgPSBcInJldmlld1wiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY3JlYXRlRm9ybSgpIHtcclxuICAgIHRoaXMuc3RvcmVGb3JtID0gdGhpcy5mYi5ncm91cChcclxuICAgICAge1xyXG4gICAgICAgIHN0b3JlTmFtZTogW1wiXCIsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgIGNsaWVudElkOiBbdGhpcy4kaGVhZGVyRmlsdGVycz8uY2xpZW50LCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICBidXNpbmVzc1R5cGU6IFtcIkNPQ09cIiwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgc3RvcmVUeXBlX3R5cGU6IFtcIkhpZ2ggU3RyZWV0XCIsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgIHN0b3JlVHlwZV9uYW1lOiBbXCJcIl0sXHJcbiAgICAgICAgc3RvcmVDb2RlOiBbXCJcIl0sXHJcbiAgICAgICAgYWRkcmVzczogW1wiXCIsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgIGNvdW50cnk6IFtcIlwiLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICBzdGF0ZTogW1wiXCIsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgIGNpdHk6IFtcIlwiLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICBwaW5jb2RlOiBbXCJcIiwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgdGltZVpvbmU6IFtcIkFzaWEvS29sa2F0YVwiLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICBvcGVuOiBbXCIxMDowMFwiLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICBjbG9zZTogW1wiMjA6MDBcIiwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgLy8gY2FtZXJhczogWzAsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgIHNwb2NEZXRhaWxzOiB0aGlzLmZiLmFycmF5KFt0aGlzLmNyZWF0ZVNwb2NEZXRhaWwoKV0pLFxyXG4gICAgICAgIHN0b3JlQ29ubmVjdGlvbklkOiBbXCJcIl0sXHJcbiAgICAgIH0sXHJcbiAgICAgIHsgdmFsaWRhdG9yczogdGhpcy50aW1lUmFuZ2VWYWxpZGF0b3IgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHRpbWVSYW5nZVZhbGlkYXRvcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XHJcbiAgICBjb25zdCBvcGVuVGltZSA9IGNvbnRyb2wuZ2V0KFwib3BlblwiKT8udmFsdWU7XHJcbiAgICBjb25zdCBjbG9zZVRpbWUgPSBjb250cm9sLmdldChcImNsb3NlXCIpPy52YWx1ZTtcclxuICAgIGlmIChvcGVuVGltZSAmJiBjbG9zZVRpbWUgJiYgb3BlblRpbWUgPj0gY2xvc2VUaW1lKSB7XHJcbiAgICAgIHJldHVybiB7IGludmFsaWRUaW1lUmFuZ2U6IHRydWUgfTtcclxuICAgIH0gICAgXHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGNyZWF0ZVNwb2NEZXRhaWwoKTogRm9ybUdyb3VwIHtcclxuICAgIHJldHVybiB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgbmFtZTogW1wiXCIsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICBlbWFpbDogW1xyXG4gICAgICAgIFwiXCIsXHJcbiAgICAgICAgW1xyXG4gICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcclxuICAgICAgICAgIFZhbGlkYXRvcnMuZW1haWwsXHJcbiAgICAgICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCgxMDApLFxyXG4gICAgICAgICAgVmFsaWRhdG9ycy5taW5MZW5ndGgoMyksXHJcbiAgICAgICAgXSxcclxuICAgICAgXSxcclxuICAgICAgY29udGFjdDogW1xyXG4gICAgICAgIFwiXCIsXHJcbiAgICAgICAgW1xyXG4gICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcclxuICAgICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEzKSxcclxuICAgICAgICAgIFZhbGlkYXRvcnMubWluTGVuZ3RoKDEwKSxcclxuICAgICAgICBdLFxyXG4gICAgICBdLFxyXG4gICAgICBkZXNpZ25hdGlvbjogW1wiXCJdLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRzcG9jRGV0YWlsc0NvbnRyb2xzKCkge1xyXG4gICAgcmV0dXJuICh0aGlzLnN0b3JlRm9ybS5nZXQoXCJzcG9jRGV0YWlsc1wiKSBhcyBGb3JtQXJyYXkpLmNvbnRyb2xzO1xyXG4gIH1cclxuXHJcbiAgZ2V0c3BvY0RldGFpbHNWYWx1ZXMoaTogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gKHRoaXMuc3RvcmVGb3JtLmdldChcInNwb2NEZXRhaWxzXCIpIGFzIEZvcm1BcnJheSkuYXQoaSkudmFsdWU7XHJcbiAgfVxyXG5cclxuICBnZXRTdG9yZVByb2ZpbGUoKTogRm9ybUdyb3VwIHtcclxuICAgIHJldHVybiB0aGlzLnN0b3JlRm9ybS5nZXQoXCJzdG9yZVByb2ZpbGVcIikgYXMgRm9ybUdyb3VwO1xyXG4gIH1cclxuXHJcbiAgZ29Ub1N0b3JlSW5mbygpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ID0gXCJzdG9yZV9pbmZvXCI7XHJcbiAgfVxyXG5cclxuICBnb1RvQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ID0gXCJjb25maWdcIjtcclxuICB9XHJcblxyXG4gIGdvVG9Db250YWN0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3QgPSBcImNvbnRhY3RcIjtcclxuICB9XHJcblxyXG4gIGdvVG9SZXZpZXcoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdCA9IFwicmV2aWV3XCI7XHJcbiAgfVxyXG5cclxuICBhZGRTcG9jRGV0YWlsKCkge1xyXG4gICAgKHRoaXMuc3RvcmVGb3JtLmdldChcInNwb2NEZXRhaWxzXCIpIGFzIEZvcm1BcnJheSkucHVzaChcclxuICAgICAgdGhpcy5jcmVhdGVTcG9jRGV0YWlsKClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBhZGRBbHRTcG9jKCkge1xyXG4gICAgKHRoaXMuc3RvcmVGb3JtLmdldChcInNwb2NEZXRhaWxzXCIpIGFzIEZvcm1BcnJheSkucHVzaChcclxuICAgICAgdGhpcy5jcmVhdGVTcG9jRGV0YWlsKClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBkZWxBbHRTcG9jKCkge1xyXG4gICAgKHRoaXMuc3RvcmVGb3JtLmdldChcInNwb2NEZXRhaWxzXCIpIGFzIEZvcm1BcnJheSkucmVtb3ZlQXQoMSk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVTcG9jRGV0YWlsKGluZGV4OiBudW1iZXIpIHtcclxuICAgICh0aGlzLnN0b3JlRm9ybS5nZXQoXCJzcG9jRGV0YWlsc1wiKSBhcyBGb3JtQXJyYXkpLnJlbW92ZUF0KGluZGV4KTtcclxuICB9XHJcblxyXG4gIG9uU3VibWl0KCkge1xyXG4gICAgaWYgKHRoaXMuc3RvcmVGb3JtLnZhbGlkKSB7XHJcbiAgICAgIGxldCBzdG9yZTogU3RvcmVSZXNwb25zZSA9IHtcclxuICAgICAgICBzdG9yZU5hbWU6IHRoaXMuc3RvcmVGb3JtLnZhbHVlLnN0b3JlTmFtZSxcclxuICAgICAgICBjbGllbnRJZDogdGhpcy5zdG9yZUZvcm0udmFsdWUuY2xpZW50SWQsXHJcbiAgICAgICAgYnJhbmROYW1lOiBcIkxlbnNrYXJ0XCIsXHJcbiAgICAgICAgYnVzaW5lc3NUeXBlOiB0aGlzLnN0b3JlRm9ybS52YWx1ZS5idXNpbmVzc1R5cGUsXHJcbiAgICAgICAgc3RvcmVUeXBlOiB7XHJcbiAgICAgICAgICB0eXBlOiB0aGlzLnN0b3JlRm9ybS52YWx1ZS5zdG9yZVR5cGVfdHlwZSxcclxuICAgICAgICAgIG5hbWU6IHRoaXMuc3RvcmVGb3JtLnZhbHVlPy5zdG9yZVR5cGVfbmFtZSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHN0b3JlUHJvZmlsZToge1xyXG4gICAgICAgICAgc3RvcmVDb2RlOiB0aGlzLnN0b3JlRm9ybS52YWx1ZT8uc3RvcmVDb2RlLFxyXG4gICAgICAgICAgYWRkcmVzczogdGhpcy5zdG9yZUZvcm0udmFsdWU/LmFkZHJlc3MsXHJcbiAgICAgICAgICBjb3VudHJ5OiB0aGlzLnN0b3JlRm9ybS52YWx1ZT8uY291bnRyeSxcclxuICAgICAgICAgIHN0YXRlOiB0aGlzLnN0b3JlRm9ybS52YWx1ZT8uc3RhdGUsXHJcbiAgICAgICAgICBjaXR5OiB0aGlzLnN0b3JlRm9ybS52YWx1ZT8uY2l0eSxcclxuICAgICAgICAgIHBpbmNvZGU6IHRoaXMuc3RvcmVGb3JtLnZhbHVlPy5waW5jb2RlLFxyXG4gICAgICAgICAgdGltZVpvbmU6IHRoaXMuc3RvcmVGb3JtLnZhbHVlPy50aW1lWm9uZSxcclxuICAgICAgICAgIG9wZW46IHRoaXMuc3RvcmVGb3JtLnZhbHVlPy5vcGVuLFxyXG4gICAgICAgICAgY2xvc2U6IHRoaXMuc3RvcmVGb3JtLnZhbHVlPy5jbG9zZSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vIGVkZ2U6IHtcclxuICAgICAgICAvLyAgIGNhbURldGFpbHM6IHtcclxuICAgICAgICAvLyAgICAgY2FtZXJhczogdGhpcy5zdG9yZUZvcm0udmFsdWU/LmNhbWVyYXMsXHJcbiAgICAgICAgLy8gICB9LFxyXG4gICAgICAgIC8vIH0sXHJcbiAgICAgICAgc3BvY0RldGFpbHM6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogdGhpcy5zdG9yZUZvcm0udmFsdWU/LnNwb2NEZXRhaWxzWzBdLm5hbWUsXHJcbiAgICAgICAgICAgIGVtYWlsOiB0aGlzLnN0b3JlRm9ybS52YWx1ZT8uc3BvY0RldGFpbHNbMF0uZW1haWwsXHJcbiAgICAgICAgICAgIGNvbnRhY3Q6IHRoaXMuc3RvcmVGb3JtLnZhbHVlPy5zcG9jRGV0YWlsc1swXS5jb250YWN0LFxyXG4gICAgICAgICAgICBkZXNpZ25hdGlvbjogdGhpcy5zdG9yZUZvcm0udmFsdWU/LnNwb2NEZXRhaWxzWzBdLmRlc2lnbmF0aW9uLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICBdLFxyXG4gICAgICAgIHN0b3JlQ29ubmVjdGlvbklkOiB0aGlzLnN0b3JlRm9ybS52YWx1ZT8uc3RvcmVDb25uZWN0aW9uSWQsXHJcbiAgICAgIH07XHJcbiAgICAgIGlmICh0aGlzLnN0b3JlRm9ybS52YWx1ZS5zcG9jRGV0YWlscy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgZm9yKGxldCBpPTE7aTx0aGlzLnN0b3JlRm9ybS52YWx1ZS5zcG9jRGV0YWlscy5sZW5ndGg7aSsrKSB7XHJcbiAgICAgICAgICBzdG9yZS5zcG9jRGV0YWlscy5wdXNoKHtcclxuICAgICAgICAgICAgbmFtZTogdGhpcy5zdG9yZUZvcm0udmFsdWU/LnNwb2NEZXRhaWxzW2ldLm5hbWUsXHJcbiAgICAgICAgICAgIGVtYWlsOiB0aGlzLnN0b3JlRm9ybS52YWx1ZT8uc3BvY0RldGFpbHNbaV0uZW1haWwsXHJcbiAgICAgICAgICAgIGNvbnRhY3Q6IHRoaXMuc3RvcmVGb3JtLnZhbHVlPy5zcG9jRGV0YWlsc1tpXS5jb250YWN0LFxyXG4gICAgICAgICAgICBkZXNpZ25hdGlvbjogdGhpcy5zdG9yZUZvcm0udmFsdWU/LnNwb2NEZXRhaWxzW2ldLmRlc2lnbmF0aW9uLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnN0b3Jlc1NlcnZpY2UuY3JlYXRlU3RvcmUoc3RvcmUpLnN1YnNjcmliZShcclxuICAgICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCAmJiByZXMuc3RhdHVzID09PSBcInN1Y2Nlc3NcIikge1xyXG4gICAgICAgICAgICB0aGlzLnN3YWxUb2FzdChcIlN0b3JlIENyZWF0ZWQgU3VjY2Vzc2Z1bGx5IVwiKTtcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiL21hbmFnZS9zdG9yZXNcIl0pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zd2FsVG9hc3QoXCJVbmFibGUgdG8gY3JlYXRlIHN0b3JlIVwiKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHRoaXMuc3dhbFRvYXN0KFwiVW5hYmxlIHRvIGNyZWF0ZSBzdG9yZSFcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN3YWxUb2FzdChtc2c6IHN0cmluZywgaWNvbj86IHN0cmluZykge1xyXG4gICAgU3dhbC5maXJlKHtcclxuICAgICAgdG9hc3Q6IHRydWUsXHJcbiAgICAgIC4uLihpY29uID8geyBpY29uSHRtbDogaWNvbiB9IDoge30pLFxyXG4gICAgICAvLyB0aXRsZVRleHQ6IGBDaGVja2xpc3QgRm9ybSBFcnJvcmAsXHJcbiAgICAgIGh0bWw6IGA8ZGl2IGNsYXNzPVwicm93IHB4LTBcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBtdC0yIHRleHQtbm93cmFwXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0b2FzdHRpdGlsZSB0ZXh0LW5vd3JhcFwiPiR7bXNnfTwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICBcclxuICAgICAgPC9kaXY+YCxcclxuICAgICAgcG9zaXRpb246IFwiYm90dG9tXCIsXHJcbiAgICAgIHNob3dDb25maXJtQnV0dG9uOiBmYWxzZSxcclxuICAgICAgc2hvd0Nsb3NlQnV0dG9uOiB0cnVlLFxyXG4gICAgICB0aW1lcjogNjAwMCxcclxuICAgICAgdGltZXJQcm9ncmVzc0JhcjogdHJ1ZSxcclxuICAgICAgZGlkT3BlbjogKHRvYXN0KSA9PiB7XHJcbiAgICAgICAgdG9hc3QuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZW50ZXJcIiwgU3dhbC5zdG9wVGltZXIpO1xyXG4gICAgICAgIHRvYXN0LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWxlYXZlXCIsIFN3YWwucmVzdW1lVGltZXIpO1xyXG4gICAgICAgICQoXCIja3RfY3JlYXRlX2FjY291bnRfZm9ybV9hY2NvdW50X3R5cGVfcGVyc29uYWxcIik/LnZhbChcIlwiKTtcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmF2aWdhdGVUb0FkZFN0b3JlKCkge1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiL21hbmFnZS9zdG9yZXMvYWRkaXRpb24tbWV0aG9kXCJdKTtcclxuICB9XHJcblxyXG4gIG9taXRfc3BlY2lhbF9jaGFyKGV2ZW50OiBhbnkpIHtcclxuICAgIHZhciBrO1xyXG4gICAgayA9IGV2ZW50LmNoYXJDb2RlOyAvLyAgICAgICAgIGsgPSBldmVudC5rZXlDb2RlOyAgKEJvdGggY2FuIGJlIHVzZWQpXHJcbiAgICByZXR1cm4gayA9PSA4IHx8IGsgPT0gMzIgfHwgKGsgPj0gNDggJiYgayA8PSA1Nyk7XHJcbiAgfVxyXG5cclxuICBnZXRBbGxUaW1lem9uZXMoKSB7XHJcbiAgICB0aGlzLnRpbWV6b25lcz1tb21lbnQudHoubmFtZXMoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInJvdyBtdC0zIG1iLTZcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBjb2wtbGctMyBjb2wteGwtMyBjb2wteHhsLTNcIiBpZD1cImxlZnQtY29udGFpbmVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1mbHVzaCBoLTEwMCBtYi0wXCI+XHJcbiAgICAgICAgICAgIDwhLS1iZWdpbjo6QXNpZGUgY29udGVudC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZW51IG1lbnUtY29sdW1uIG1lbnUtcm91bmRlZCBtZW51LXN0YXRlLWJnIG1lbnUtc3RhdGUtdGl0bGUtcHJpbWFyeSBtZW51LXN0YXRlLWljb24tcHJpbWFyeSBtZW51LXN0YXRlLWJ1bGxldC1wcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLWJlZ2luOjpNZW51IGl0ZW0tLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVudS1pdGVtIG15LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLWJlZ2luOjpJbmJveC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtbGlua1wiIFtuZ0NsYXNzXT1cInsgJ2FjdGl2ZSc6IHNlbGVjdCA9PT0gJ3N0b3JlX2luZm8nIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldHRpbmd2YWx1ZSgnc3RvcmVfaW5mbycpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtaWNvblwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0zLjA4OTk1IDYuODgzNjlMMy4wMjQwMSA2Ljk4NjY5QzIuMzAzNTggOC4yNTU1NyAzLjA2MTAxIDkuODc5NDUgNC40NjQ2NCAxMC4wNjYyQzQuNTg2MjcgMTAuMDgxMSA0LjcwMTEyIDEwLjA4OTIgNC44MTQ1IDEwLjA4OTJDNS41NTI1NSAxMC4wODkyIDYuMjA1MjMgOS43NzIyOSA2LjY1OTUzIDkuMjc5MTdMNy4yMTI4NiA4LjY3ODU0TDcuNzY0MzIgOS4yODA4OUM4LjIxMzY3IDkuNzcxNzEgOC44NjUyIDEwLjA4OTIgOS42MDc3NiAxMC4wODkyQzEwLjM0NzEgMTAuMDg5MiAxMS4wMDIyIDkuNzcxMzcgMTEuNDUxMiA5LjI4MDg5TDEyLjAwNDQgOC42NzY2NUwxMi41NTc2IDkuMjgwODlDMTMuMDA2NiA5Ljc3MTM3IDEzLjY2MTcgMTAuMDg5MiAxNC40MDEgMTAuMDg5MkMxNS4xNDA0IDEwLjA4OTIgMTUuNzk1NCA5Ljc3MTM3IDE2LjI0NDUgOS4yODA4OUwxNi43OTc3IDguNjc2NjVMMTcuMzUwOCA5LjI4MDg5QzE3Ljc5OTkgOS43NzEzNyAxOC40NTQ5IDEwLjA4OTIgMTkuMTk0MyAxMC4wODkyQzE5LjMwNDEgMTAuMDg5MiAxOS40MjIzIDEwLjA4MTEgMTkuNTQzMyAxMC4wNjYzQzIwLjk3NzIgOS44NzE2OCAyMS43MzU1IDguMTYzODcgMjAuOTE1NSA2Ljg4NDE5QzIwLjkxNTQgNi44ODQxMyAyMC45MTU0IDYuODg0MDcgMjAuOTE1NCA2Ljg4NDAyTDE4LjgwNTYgMy41OTQyOUwxOC44MDU2IDMuNTk0MjlMMTguODA0NiAzLjU5MjgyQzE4Ljc1ODIgMy41MjAwMiAxOC42NjQ5IDMuNDY0MjMgMTguNTU4NCAzLjQ2NDIzSDUuNDQzMDdDNS4zMzY1IDMuNDY0MjMgNS4yNDMyNiAzLjUyMDAyIDUuMTk2ODEgMy41OTI4Mkw1LjE5NjE5IDMuNTkzNzlMMy4wODk5NSA2Ljg4MzY5Wk00LjgxODE4IDEyLjc0OTlDNC43MTY0NCAxMi43NDk5IDQuNjE2IDEyLjc0NjggNC41MTY5IDEyLjc0MVYxNi42NDI4VjE4Ljk2NDJDNC41MTY5IDE5LjgyMTEgNS4yMjY2MyAyMC41MzU3IDYuMTE5NDIgMjAuNTM1N0gxNy44ODJDMTguNzc0OCAyMC41MzU3IDE5LjQ4NDUgMTkuODIxMSAxOS40ODQ1IDE4Ljk2NDJWMTYuNjQyOFYxMi43NDE1QzE5LjM4NzQgMTIuNzQ3IDE5LjI4OTMgMTIuNzQ5OSAxOS4xOTA2IDEyLjc0OTlDMTkuMDAyMiAxMi43NDk5IDE4LjgxNTcgMTIuNzM5OCAxOC42MzIgMTIuNzIwMlYxNi42NDI4VjE3LjM5MjhIMTcuODgySDYuMTE5NDJINS4zNjk0MlYxNi42NDI4VjEyLjcyMUM1LjE4ODY2IDEyLjc0IDUuMDA0NzIgMTIuNzQ5OSA0LjgxODE4IDEyLjc0OTlaXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtdGl0bGUgZnctYm9sZCBcIj5TdG9yZSBJbmZvPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1lbmQ6OkluYm94LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbnUtaXRlbSBteS0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1iZWdpbjo6SW5ib3gtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZW51LWxpbmtcIiBbbmdDbGFzc109XCJ7ICdhY3RpdmUnOiBzZWxlY3QgPT09ICdjb25maWcnIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldHRpbmd2YWx1ZSgnY29uZmlnJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVudS1pY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMTAxN18yMjI3MClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMiAxNUMxMy42NTY5IDE1IDE1IDEzLjY1NjkgMTUgMTJDMTUgMTAuMzQzMSAxMy42NTY5IDkgMTIgOUMxMC4zNDMxIDkgOSAxMC4zNDMxIDkgMTJDOSAxMy42NTY5IDEwLjM0MzEgMTUgMTIgMTVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE5LjQgMTVDMTkuMjY2OSAxNS4zMDE2IDE5LjIyNzIgMTUuNjM2MiAxOS4yODYgMTUuOTYwNkMxOS4zNDQ4IDE2LjI4NSAxOS40OTk1IDE2LjU4NDMgMTkuNzMgMTYuODJMMTkuNzkgMTYuODhDMTkuOTc2IDE3LjA2NTcgMjAuMTIzNSAxNy4yODYzIDIwLjIyNDEgMTcuNTI5MUMyMC4zMjQ4IDE3Ljc3MTkgMjAuMzc2NiAxOC4wMzIyIDIwLjM3NjYgMTguMjk1QzIwLjM3NjYgMTguNTU3OCAyMC4zMjQ4IDE4LjgxODEgMjAuMjI0MSAxOS4wNjA5QzIwLjEyMzUgMTkuMzAzNyAxOS45NzYgMTkuNTI0MyAxOS43OSAxOS43MUMxOS42MDQzIDE5Ljg5NiAxOS4zODM3IDIwLjA0MzUgMTkuMTQwOSAyMC4xNDQxQzE4Ljg5ODEgMjAuMjQ0OCAxOC42Mzc4IDIwLjI5NjYgMTguMzc1IDIwLjI5NjZDMTguMTEyMiAyMC4yOTY2IDE3Ljg1MTkgMjAuMjQ0OCAxNy42MDkxIDIwLjE0NDFDMTcuMzY2MyAyMC4wNDM1IDE3LjE0NTcgMTkuODk2IDE2Ljk2IDE5LjcxTDE2LjkgMTkuNjVDMTYuNjY0MyAxOS40MTk1IDE2LjM2NSAxOS4yNjQ4IDE2LjA0MDYgMTkuMjA2QzE1LjcxNjIgMTkuMTQ3MiAxNS4zODE2IDE5LjE4NjkgMTUuMDggMTkuMzJDMTQuNzg0MiAxOS40NDY4IDE0LjUzMiAxOS42NTcyIDE0LjM1NDMgMTkuOTI1NUMxNC4xNzY2IDIwLjE5MzggMTQuMDgxMyAyMC41MDgyIDE0LjA4IDIwLjgzVjIxQzE0LjA4IDIxLjUzMDQgMTMuODY5MyAyMi4wMzkxIDEzLjQ5NDIgMjIuNDE0MkMxMy4xMTkxIDIyLjc4OTMgMTIuNjEwNCAyMyAxMi4wOCAyM0MxMS41NDk2IDIzIDExLjA0MDkgMjIuNzg5MyAxMC42NjU4IDIyLjQxNDJDMTAuMjkwNyAyMi4wMzkxIDEwLjA4IDIxLjUzMDQgMTAuMDggMjFWMjAuOTFDMTAuMDcyMyAyMC41NzkgOS45NjUxMiAyMC4yNTggOS43NzI1MSAxOS45ODg3QzkuNTc5OSAxOS43MTk0IDkuMzEwNzQgMTkuNTE0MyA5IDE5LjRDOC42OTgzOCAxOS4yNjY5IDguMzYzODEgMTkuMjI3MiA4LjAzOTQxIDE5LjI4NkM3LjcxNTAyIDE5LjM0NDggNy40MTU2OCAxOS40OTk1IDcuMTggMTkuNzNMNy4xMiAxOS43OUM2LjkzNDI1IDE5Ljk3NiA2LjcxMzY4IDIwLjEyMzUgNi40NzA4OCAyMC4yMjQxQzYuMjI4MDggMjAuMzI0OCA1Ljk2NzgzIDIwLjM3NjYgNS43MDUgMjAuMzc2NkM1LjQ0MjE3IDIwLjM3NjYgNS4xODE5MiAyMC4zMjQ4IDQuOTM5MTIgMjAuMjI0MUM0LjY5NjMyIDIwLjEyMzUgNC40NzU3NSAxOS45NzYgNC4yOSAxOS43OUM0LjEwNDA1IDE5LjYwNDMgMy45NTY1MyAxOS4zODM3IDMuODU1ODggMTkuMTQwOUMzLjc1NTIzIDE4Ljg5ODEgMy43MDM0MyAxOC42Mzc4IDMuNzAzNDMgMTguMzc1QzMuNzAzNDMgMTguMTEyMiAzLjc1NTIzIDE3Ljg1MTkgMy44NTU4OCAxNy42MDkxQzMuOTU2NTMgMTcuMzY2MyA0LjEwNDA1IDE3LjE0NTcgNC4yOSAxNi45Nkw0LjM1IDE2LjlDNC41ODA1NCAxNi42NjQzIDQuNzM1MTkgMTYuMzY1IDQuNzk0IDE2LjA0MDZDNC44NTI4MiAxNS43MTYyIDQuODEzMTIgMTUuMzgxNiA0LjY4IDE1LjA4QzQuNTUzMjQgMTQuNzg0MiA0LjM0Mjc2IDE0LjUzMiA0LjA3NDQ3IDE0LjM1NDNDMy44MDYxOCAxNC4xNzY2IDMuNDkxNzkgMTQuMDgxMyAzLjE3IDE0LjA4SDNDMi40Njk1NyAxNC4wOCAxLjk2MDg2IDEzLjg2OTMgMS41ODU3OSAxMy40OTQyQzEuMjEwNzEgMTMuMTE5MSAxIDEyLjYxMDQgMSAxMi4wOEMxIDExLjU0OTYgMS4yMTA3MSAxMS4wNDA5IDEuNTg1NzkgMTAuNjY1OEMxLjk2MDg2IDEwLjI5MDcgMi40Njk1NyAxMC4wOCAzIDEwLjA4SDMuMDlDMy40MjA5OSAxMC4wNzIzIDMuNzQyIDkuOTY1MTIgNC4wMTEzIDkuNzcyNTFDNC4yODA1OSA5LjU3OTkgNC40ODU3MiA5LjMxMDc0IDQuNiA5QzQuNzMzMTIgOC42OTgzOCA0Ljc3MjgyIDguMzYzODEgNC43MTQgOC4wMzk0MUM0LjY1NTE5IDcuNzE1MDIgNC41MDA1NCA3LjQxNTY4IDQuMjcgNy4xOEw0LjIxIDcuMTJDNC4wMjQwNSA2LjkzNDI1IDMuODc2NTMgNi43MTM2OCAzLjc3NTg4IDYuNDcwODhDMy42NzUyMyA2LjIyODA4IDMuNjIzNDMgNS45Njc4MyAzLjYyMzQzIDUuNzA1QzMuNjIzNDMgNS40NDIxNyAzLjY3NTIzIDUuMTgxOTIgMy43NzU4OCA0LjkzOTEyQzMuODc2NTMgNC42OTYzMiA0LjAyNDA1IDQuNDc1NzUgNC4yMSA0LjI5QzQuMzk1NzUgNC4xMDQwNSA0LjYxNjMyIDMuOTU2NTMgNC44NTkxMiAzLjg1NTg4QzUuMTAxOTIgMy43NTUyMyA1LjM2MjE3IDMuNzAzNDMgNS42MjUgMy43MDM0M0M1Ljg4NzgzIDMuNzAzNDMgNi4xNDgwOCAzLjc1NTIzIDYuMzkwODggMy44NTU4OEM2LjYzMzY4IDMuOTU2NTMgNi44NTQyNSA0LjEwNDA1IDcuMDQgNC4yOUw3LjEgNC4zNUM3LjMzNTY4IDQuNTgwNTQgNy42MzUwMiA0LjczNTE5IDcuOTU5NDEgNC43OTRDOC4yODM4MSA0Ljg1MjgyIDguNjE4MzggNC44MTMxMiA4LjkyIDQuNjhIOUM5LjI5NTc3IDQuNTUzMjQgOS41NDgwMiA0LjM0Mjc2IDkuNzI1NjkgNC4wNzQ0N0M5LjkwMzM3IDMuODA2MTggOS45OTg3MiAzLjQ5MTc5IDEwIDMuMTdWM0MxMCAyLjQ2OTU3IDEwLjIxMDcgMS45NjA4NiAxMC41ODU4IDEuNTg1NzlDMTAuOTYwOSAxLjIxMDcxIDExLjQ2OTYgMSAxMiAxQzEyLjUzMDQgMSAxMy4wMzkxIDEuMjEwNzEgMTMuNDE0MiAxLjU4NTc5QzEzLjc4OTMgMS45NjA4NiAxNCAyLjQ2OTU3IDE0IDNWMy4wOUMxNC4wMDEzIDMuNDExNzkgMTQuMDk2NiAzLjcyNjE4IDE0LjI3NDMgMy45OTQ0N0MxNC40NTIgNC4yNjI3NiAxNC43MDQyIDQuNDczMjQgMTUgNC42QzE1LjMwMTYgNC43MzMxMiAxNS42MzYyIDQuNzcyODIgMTUuOTYwNiA0LjcxNEMxNi4yODUgNC42NTUxOSAxNi41ODQzIDQuNTAwNTQgMTYuODIgNC4yN0wxNi44OCA0LjIxQzE3LjA2NTcgNC4wMjQwNSAxNy4yODYzIDMuODc2NTMgMTcuNTI5MSAzLjc3NTg4QzE3Ljc3MTkgMy42NzUyMyAxOC4wMzIyIDMuNjIzNDMgMTguMjk1IDMuNjIzNDNDMTguNTU3OCAzLjYyMzQzIDE4LjgxODEgMy42NzUyMyAxOS4wNjA5IDMuNzc1ODhDMTkuMzAzNyAzLjg3NjUzIDE5LjUyNDMgNC4wMjQwNSAxOS43MSA0LjIxQzE5Ljg5NiA0LjM5NTc1IDIwLjA0MzUgNC42MTYzMiAyMC4xNDQxIDQuODU5MTJDMjAuMjQ0OCA1LjEwMTkyIDIwLjI5NjYgNS4zNjIxNyAyMC4yOTY2IDUuNjI1QzIwLjI5NjYgNS44ODc4MyAyMC4yNDQ4IDYuMTQ4MDggMjAuMTQ0MSA2LjM5MDg4QzIwLjA0MzUgNi42MzM2OCAxOS44OTYgNi44NTQyNSAxOS43MSA3LjA0TDE5LjY1IDcuMUMxOS40MTk1IDcuMzM1NjggMTkuMjY0OCA3LjYzNTAyIDE5LjIwNiA3Ljk1OTQxQzE5LjE0NzIgOC4yODM4MSAxOS4xODY5IDguNjE4MzggMTkuMzIgOC45MlY5QzE5LjQ0NjggOS4yOTU3NyAxOS42NTcyIDkuNTQ4MDIgMTkuOTI1NSA5LjcyNTY5QzIwLjE5MzggOS45MDMzNyAyMC41MDgyIDkuOTk4NzIgMjAuODMgMTBIMjFDMjEuNTMwNCAxMCAyMi4wMzkxIDEwLjIxMDcgMjIuNDE0MiAxMC41ODU4QzIyLjc4OTMgMTAuOTYwOSAyMyAxMS40Njk2IDIzIDEyQzIzIDEyLjUzMDQgMjIuNzg5MyAxMy4wMzkxIDIyLjQxNDIgMTMuNDE0MkMyMi4wMzkxIDEzLjc4OTMgMjEuNTMwNCAxNCAyMSAxNEgyMC45MUMyMC41ODgyIDE0LjAwMTMgMjAuMjczOCAxNC4wOTY2IDIwLjAwNTUgMTQuMjc0M0MxOS43MzcyIDE0LjQ1MiAxOS41MjY4IDE0LjcwNDIgMTkuNCAxNVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8xMDE3XzIyMjcwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZW51LXRpdGxlIGZ3LWJvbGQgXCI+U3RvcmUgQ29uZmlndXJhdGlvbjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tZW5kOjpJbmJveC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tZW5kOjpNZW51IGl0ZW0tLT5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS1iZWdpbjo6TWVudSBpdGVtLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbnUtaXRlbSBteS0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1iZWdpbjo6RHJhZnQtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZW51LWxpbmtcIiBbbmdDbGFzc109XCJ7ICdhY3RpdmUnOiBzZWxlY3QgPT09ICdjb250YWN0JyB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXR0aW5ndmFsdWUoJ2NvbnRhY3QnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZW51LWljb25cIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTcgMjFWMTlDMTcgMTcuOTM5MSAxNi41Nzg2IDE2LjkyMTcgMTUuODI4NCAxNi4xNzE2QzE1LjA3ODMgMTUuNDIxNCAxNC4wNjA5IDE1IDEzIDE1SDVDMy45MzkxMyAxNSAyLjkyMTcyIDE1LjQyMTQgMi4xNzE1NyAxNi4xNzE2QzEuNDIxNDMgMTYuOTIxNyAxIDE3LjkzOTEgMSAxOVYyMU0yMyAyMVYxOUMyMi45OTkzIDE4LjExMzcgMjIuNzA0NCAxNy4yNTI4IDIyLjE2MTQgMTYuNTUyM0MyMS42MTg0IDE1Ljg1MTkgMjAuODU4MSAxNS4zNTE2IDIwIDE1LjEzTTE2IDMuMTNDMTYuODYwNCAzLjM1MDMgMTcuNjIzIDMuODUwNyAxOC4xNjc2IDQuNTUyMzFDMTguNzEyMiA1LjI1MzkyIDE5LjAwNzggNi4xMTY4MyAxOS4wMDc4IDcuMDA1QzE5LjAwNzggNy44OTMxNyAxOC43MTIyIDguNzU2MDggMTguMTY3NiA5LjQ1NzY5QzE3LjYyMyAxMC4xNTkzIDE2Ljg2MDQgMTAuNjU5NyAxNiAxMC44OE0xMyA3QzEzIDkuMjA5MTQgMTEuMjA5MSAxMSA5IDExQzYuNzkwODYgMTEgNSA5LjIwOTE0IDUgN0M1IDQuNzkwODYgNi43OTA4NiAzIDkgM0MxMS4yMDkxIDMgMTMgNC43OTA4NiAxMyA3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZW51LXRpdGxlIGZ3LWJvbGQgXCI+Q29udGFjdCBEZXRhaWxzPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1lbmQ6OkRyYWZ0LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLWVuZDo6TWVudSBpdGVtLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLWJlZ2luOjpNZW51IGl0ZW0tLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVudS1pdGVtIG15LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLWJlZ2luOjpUcmFzaC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtbGlua1wiIFtuZ0NsYXNzXT1cInsgJ2FjdGl2ZSc6IHNlbGVjdCA9PT0gJ3Jldmlldyd9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXR0aW5ndmFsdWUoJ3JldmlldycpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtaWNvblwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYgMUM1LjIwNDM1IDEgNC40NDEyOSAxLjMxNjA3IDMuODc4NjggMS44Nzg2OEMzLjMxNjA3IDIuNDQxMjkgMyAzLjIwNDM1IDMgNFYyMEMzIDIwLjc5NTcgMy4zMTYwNyAyMS41NTg3IDMuODc4NjggMjIuMTIxM0M0LjQ0MTI5IDIyLjY4MzkgNS4yMDQzNSAyMyA2IDIzSDEySDE4QzE4Ljc5NTcgMjMgMTkuNTU4NyAyMi42ODM5IDIwLjEyMTMgMjIuMTIxM0MyMC42ODM5IDIxLjU1ODcgMjEgMjAuNzk1NyAyMSAyMFYxNi40MjA4TDE5IDE4LjQyMDhWMjBDMTkgMjAuMjY1MiAxOC44OTQ2IDIwLjUxOTYgMTguNzA3MSAyMC43MDcxQzE4LjUxOTYgMjAuODk0NiAxOC4yNjUyIDIxIDE4IDIxSDE2LjQyMDhMMTUuMzI4NiAyMi4wOTIyTDEyIDIzTDEyLjU0NTUgMjFINkM1LjczNDc4IDIxIDUuNDgwNDMgMjAuODk0NiA1LjI5Mjg5IDIwLjcwNzFDNS4xMDUzNiAyMC41MTk2IDUgMjAuMjY1MiA1IDIwVjRDNSAzLjczNDc4IDUuMTA1MzYgMy40ODA0MyA1LjI5Mjg5IDMuMjkyODlDNS40ODA0MyAzLjEwNTM2IDUuNzM0NzggMyA2IDNIMTJWOUMxMiA5LjU1MjI4IDEyLjQ0NzcgMTAgMTMgMTBIMTlWMTMuNTc5MkwyMSAxMS41NzkyVjlDMjEgOC43MzQ3OCAyMC44OTQ2IDguNDgwNDMgMjAuNzA3MSA4LjI5Mjg5TDEzLjcwNzEgMS4yOTI4OUMxMy41MTk2IDEuMTA1MzYgMTMuMjY1MiAxIDEzIDFINlpNMTcuNTg1OCA4TDE0IDQuNDE0MjFWOEgxNy41ODU4WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMjAuMDc3OSAxMS41MDE0QzIwLjIzNjkgMTEuMzQyNCAyMC40MjU2IDExLjIxNjMgMjAuNjMzMyAxMS4xMzAzQzIwLjg0MDkgMTEuMDQ0MyAyMS4wNjM1IDExIDIxLjI4ODMgMTFDMjEuNTEzMSAxMSAyMS43MzU3IDExLjA0NDMgMjEuOTQzNCAxMS4xMzAzQzIyLjE1MSAxMS4yMTYzIDIyLjMzOTcgMTEuMzQyNCAyMi40OTg3IDExLjUwMTRDMjIuNjU3NiAxMS42NjAzIDIyLjc4MzcgMTEuODQ5IDIyLjg2OTggMTIuMDU2N0MyMi45NTU4IDEyLjI2NDQgMjMuMDAwMSAxMi40ODcgMjMuMDAwMSAxMi43MTE3QzIzLjAwMDEgMTIuOTM2NSAyMi45NTU4IDEzLjE1OTEgMjIuODY5OCAxMy4zNjY4QzIyLjc4MzcgMTMuNTc0NSAyMi42NTc2IDEzLjc2MzIgMjIuNDk4NyAxMy45MjIxTDE1LjMyODYgMjIuMDkyM0wxMiAyMy4wMDAxTDEyLjkwNzggMTkuNjcxNUwyMC4wNzc5IDExLjUwMTRaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuNlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVudS10aXRsZSBmdy1ib2xkIFwiPlJldmlldyAmIFN1Ym1pdDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tZW5kOjpUcmFzaC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS1lbmQ6Ok1lbnUgaXRlbS0tPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwhLS1lbmQ6Ok1lbnUtLT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC05IGNvbC1sZy05IGNvbC14bC05IGNvbC14eGwtOVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItYm90dG9tLTBcIj5cclxuICAgICAgICAgICAgICAgIDxoMVxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicGFnZS1oZWFkaW5nIGQtZmxleCB0ZXh0LWRhcmsgZnctYm9sZCBmcy0yIGZsZXgtY29sdW1uICBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG15LTAgc3ViLWhlYWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAgKm5nSWY9XCJzZWxlY3QgPT09ICdzdG9yZV9pbmZvJ1wiPkVudGVyIFlvdXIgU3RvcmUgRGV0YWlsczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNlbGVjdCA9PT0gJ2NvbmZpZydcIj5FbnRlciBZb3VyIFN0b3JlIENvbmZpZ3VyYXRpb248L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzZWxlY3QgPT09ICdjb250YWN0J1wiPkVudGVyIFByaW1hcnkgU1BPQyBkZXRhaWxzPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0ID09PSAncmV2aWV3J1wiPlJldmlldyAmIHN1Ym1pdDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvaDE+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IFtoaWRkZW5dPVwic2VsZWN0ICE9PSAnY29udGFjdCdcIiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImFkZEFsdFNwb2MoKVwiIGNsYXNzPVwiYnRuIGJ0bi1saWdodC1wcmltYXJ5MSBidG4tc21cIj48c3ZnIGNsYXNzPVwibWUtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxOCAxNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMi43IDMuNUMyLjcgMi41NzE3NCAzLjA3OTI4IDEuNjgxNSAzLjc1NDQyIDEuMDI1MTNDNC40Mjk1NSAwLjM2ODc0OSA1LjM0NTIyIDAgNi4zIDBDNy4yNTQ3OCAwIDguMTcwNDUgMC4zNjg3NDkgOC44NDU1OCAxLjAyNTEzQzkuNTIwNzIgMS42ODE1IDkuOSAyLjU3MTc0IDkuOSAzLjVDOS45IDQuNDI4MjYgOS41MjA3MiA1LjMxODUgOC44NDU1OCA1Ljk3NDg3QzguMTcwNDUgNi42MzEyNSA3LjI1NDc4IDcgNi4zIDdDNS4zNDUyMiA3IDQuNDI5NTUgNi42MzEyNSAzLjc1NDQyIDUuOTc0ODdDMy4wNzkyOCA1LjMxODUgMi43IDQuNDI4MjYgMi43IDMuNVpNMCAxMy4xODc5QzAgMTAuNDk0NSAyLjI0NDM3IDguMzEyNSA1LjAxNDY5IDguMzEyNUg3LjU4NTMxQzEwLjM1NTYgOC4zMTI1IDEyLjYgMTAuNDk0NSAxMi42IDEzLjE4NzlDMTIuNiAxMy42MzYzIDEyLjIyNTkgMTQgMTEuNzY0NyAxNEgwLjgzNTMxMkMwLjM3NDA2MyAxNCAwIDEzLjYzNjMgMCAxMy4xODc5Wk0xNC4xNzUgOC41MzEyNVY2Ljc4MTI1SDEyLjM3NUMxMi4wMDA5IDYuNzgxMjUgMTEuNyA2LjQ4ODY3IDExLjcgNi4xMjVDMTEuNyA1Ljc2MTMzIDEyLjAwMDkgNS40Njg3NSAxMi4zNzUgNS40Njg3NUgxNC4xNzVWMy43MTg3NUMxNC4xNzUgMy4zNTUwOCAxNC40NzU5IDMuMDYyNSAxNC44NSAzLjA2MjVDMTUuMjI0MSAzLjA2MjUgMTUuNTI1IDMuMzU1MDggMTUuNTI1IDMuNzE4NzVWNS40Njg3NUgxNy4zMjVDMTcuNjk5MSA1LjQ2ODc1IDE4IDUuNzYxMzMgMTggNi4xMjVDMTggNi40ODg2NyAxNy42OTkxIDYuNzgxMjUgMTcuMzI1IDYuNzgxMjVIMTUuNTI1VjguNTMxMjVDMTUuNTI1IDguODk0OTIgMTUuMjI0MSA5LjE4NzUgMTQuODUgOS4xODc1QzE0LjQ3NTkgOS4xODc1IDE0LjE3NSA4Ljg5NDkyIDE0LjE3NSA4LjUzMTI1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMwMEEzRkZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5BZGQgQWx0ZXJuYXRlIFNQT0M8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwdC0xXCI+XHJcbiAgICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cInN0b3JlRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gU3RvcmUgSW5mbyBTdGFydCAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFtoaWRkZW5dPVwic2VsZWN0ICE9PSAnc3RvcmVfaW5mbydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInN0b3JlTmFtZVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlN0b3JlIE5hbWU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJzdG9yZU5hbWVcIiBmb3JtQ29udHJvbE5hbWU9XCJzdG9yZU5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzpzdG9yZUZvcm0uZ2V0KCdzdG9yZU5hbWUnKT8uaW52YWxpZCAmJiBzdG9yZUZvcm0uZ2V0KCdzdG9yZU5hbWUnKT8udG91Y2hlZH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzdG9yZUZvcm0uZ2V0KCdzdG9yZU5hbWUnKT8udG91Y2hlZCAmJiBzdG9yZUZvcm0uZ2V0KCdzdG9yZU5hbWUnKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RvcmUgTmFtZSBpcyByZXF1aXJlZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy02IG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwic3RvcmVDb2RlXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+U3RvcmUgQ29kZSAvIFJlZiBDb2RlIChvcHRpb25hbCk8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJzdG9yZUNvZGVcIiBmb3JtQ29udHJvbE5hbWU9XCJzdG9yZUNvZGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImJ1c2luZXNzVHlwZVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkJ1c2luZXNzIFR5cGU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdFwiIGlkPVwiYnVzaW5lc3NUeXBlXCIgZm9ybUNvbnRyb2xOYW1lPVwiYnVzaW5lc3NUeXBlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJDT0NPXCI+Q09DTzwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiQ09GT1wiPkNPRk88L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIkZPRk9cIj5GT0ZPPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJGT0NPXCI+Rk9DTzwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy02IG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwic3RvcmVUeXBlXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+U3RvcmUgVHlwZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0XCIgaWQ9XCJzdG9yZVR5cGVcIiBmb3JtQ29udHJvbE5hbWU9XCJzdG9yZVR5cGVfdHlwZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiSGlnaCBTdHJlZXRcIj5IaWdoIFN0cmVldDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiTWFsbCBTdG9yZVwiPk1hbGwgU3RvcmU8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIktpb3NrXCI+S2lvc2s8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBtYi01XCIgKm5nSWY9XCJzdG9yZUZvcm0uZ2V0KCdzdG9yZVR5cGVfdHlwZScpPy52YWx1ZSA9PT0gJ01hbGwgU3RvcmUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIm1hbGxOYW1lXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+RW50ZXIgTWFsbCBOYW1lPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwibWFsbE5hbWVcIiBmb3JtQ29udHJvbE5hbWU9XCJzdG9yZVR5cGVfbmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOnN0b3JlRm9ybS5nZXQoJ3N0b3JlVHlwZV9uYW1lJyk/LmludmFsaWQgJiYgc3RvcmVGb3JtLmdldCgnc3RvcmVUeXBlX25hbWUnKT8udG91Y2hlZH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzdG9yZUZvcm0uZ2V0KCdzdG9yZVR5cGVfbmFtZScpPy50b3VjaGVkICYmIHN0b3JlRm9ybS5nZXQoJ3N0b3JlVHlwZV9uYW1lJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hbGwgTmFtZSBpcyByZXF1aXJlZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiYWRkcmVzc1wiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkFkZHJlc3MgTGluZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImFkZHJlc3NcIiBmb3JtQ29udHJvbE5hbWU9XCJhZGRyZXNzXCIgI3BsYWNlc1JlZj1cIm5neC1wbGFjZXNcIiBuZ3gtZ3AtYXV0b2NvbXBsZXRlIChvbkFkZHJlc3NDaGFuZ2UpPVwiaGFuZGxlQWRkcmVzc0NoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6c3RvcmVGb3JtLmdldCgnYWRkcmVzcycpPy5pbnZhbGlkICYmIHN0b3JlRm9ybS5nZXQoJ2FkZHJlc3MnKT8udG91Y2hlZH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzdG9yZUZvcm0uZ2V0KCdhZGRyZXNzJyk/LnRvdWNoZWQgJiYgc3RvcmVGb3JtLmdldCgnYWRkcmVzcycpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRyZXNzIGlzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImNvdW50cnlcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5Db3VudHJ5PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiY291bnRyeVwiIGZvcm1Db250cm9sTmFtZT1cImNvdW50cnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzpzdG9yZUZvcm0uZ2V0KCdjb3VudHJ5Jyk/LmludmFsaWQgJiYgc3RvcmVGb3JtLmdldCgnY291bnRyeScpPy50b3VjaGVkfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInN0b3JlRm9ybS5nZXQoJ2NvdW50cnknKT8udG91Y2hlZCAmJiBzdG9yZUZvcm0uZ2V0KCdjb3VudHJ5Jyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvdW50cnkgaXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwic3RhdGVcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5TdGF0ZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cInN0YXRlXCIgZm9ybUNvbnRyb2xOYW1lPVwic3RhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzpzdG9yZUZvcm0uZ2V0KCdzdGF0ZScpPy5pbnZhbGlkICYmIHN0b3JlRm9ybS5nZXQoJ3N0YXRlJyk/LnRvdWNoZWR9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3RvcmVGb3JtLmdldCgnc3RhdGUnKT8udG91Y2hlZCAmJiBzdG9yZUZvcm0uZ2V0KCdzdGF0ZScpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZSBpcyByZXF1aXJlZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJjaXR5XCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+Q2l0eSAvIFRvd248L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJjaXR5XCIgZm9ybUNvbnRyb2xOYW1lPVwiY2l0eVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOnN0b3JlRm9ybS5nZXQoJ2NpdHknKT8uaW52YWxpZCAmJiBzdG9yZUZvcm0uZ2V0KCdjaXR5Jyk/LnRvdWNoZWR9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3RvcmVGb3JtLmdldCgnY2l0eScpPy50b3VjaGVkICYmIHN0b3JlRm9ybS5nZXQoJ2NpdHknKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2l0eSBpcyByZXF1aXJlZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJwaW5jb2RlXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+UGluIC8gWmlwIENvZGU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJwaW5jb2RlXCIgZm9ybUNvbnRyb2xOYW1lPVwicGluY29kZVwiIG1heGxlbmd0aD1cIjZcIiBtaW5sZW5ndGg9XCI2XCIgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzpzdG9yZUZvcm0uZ2V0KCdwaW5jb2RlJyk/LmludmFsaWQgJiYgc3RvcmVGb3JtLmdldCgncGluY29kZScpPy50b3VjaGVkfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInN0b3JlRm9ybS5nZXQoJ3BpbmNvZGUnKT8udG91Y2hlZCAmJiBzdG9yZUZvcm0uZ2V0KCdwaW5jb2RlJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBpbmNvZGUgaXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiB0ZXh0LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IG14LTMgYnRuLW91dGxpbmUgYnRuLW91dGxpbmUtZGVmYXVsdCByb3VuZGVkLTNcIiAoY2xpY2spPVwibmF2aWdhdGVUb0FkZFN0b3JlKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJnb1RvQ29uZmlndXJhdGlvbigpXCI+TmV4dDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gU3RvcmUgSW5mbyBFbmQgLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gU3RvcmUgQ29uZmlndXJhdGlvbiBTdGFydCAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFtoaWRkZW5dPVwic2VsZWN0ICE9PSAnY29uZmlnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJ0aW1lWm9uZVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlRpbWUgWm9uZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwidGltZVpvbmVcIiBmb3JtQ29udHJvbE5hbWU9XCJ0aW1lWm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOnN0b3JlRm9ybS5nZXQoJ3RpbWVab25lJyk/LmludmFsaWQgJiYgc3RvcmVGb3JtLmdldCgndGltZVpvbmUnKT8udG91Y2hlZH1cIj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdFwiIGlkPVwidGltZVpvbmVcIiBmb3JtQ29udHJvbE5hbWU9XCJ0aW1lWm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgdGltZXpvbmUgb2YgdGltZXpvbmVzXCIgW3ZhbHVlXT1cInRpbWV6b25lXCI+e3sgdGltZXpvbmUgfX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3RvcmVGb3JtLmdldCgndGltZVpvbmUnKT8udG91Y2hlZCAmJiBzdG9yZUZvcm0uZ2V0KCd0aW1lWm9uZScpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaW1lIFpvbmUgaXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJub09mQ2FtZXJhc1wiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPk5vIG9mIENhbWVyYXM8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJub09mQ2FtZXJhc1wiIGZvcm1Db250cm9sTmFtZT1cImNhbWVyYXNcIiAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOnN0b3JlRm9ybS5nZXQoJ2NhbWVyYXMnKT8uaW52YWxpZCAmJiBzdG9yZUZvcm0uZ2V0KCdjYW1lcmFzJyk/LnRvdWNoZWR9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3RvcmVGb3JtLmdldCgnY2FtZXJhcycpPy50b3VjaGVkICYmIHN0b3JlRm9ybS5nZXQoJ2NhbWVyYXMnKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm8gb2YgQ2FtZXJhcyBpcyByZXF1aXJlZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwic3RvcmVPcGVuVGltZVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlN0b3JlIE9wZW4gVGltZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0aW1lXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cInN0b3JlT3BlblRpbWVcIiBmb3JtQ29udHJvbE5hbWU9XCJvcGVuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6c3RvcmVGb3JtLmdldCgnb3BlbicpPy5pbnZhbGlkICYmIHN0b3JlRm9ybS5nZXQoJ29wZW4nKT8udG91Y2hlZH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzdG9yZUZvcm0uZ2V0KCdvcGVuJyk/LnRvdWNoZWQgJiYgc3RvcmVGb3JtLmdldCgnb3BlbicpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdG9yZSBPcGVuIFRpbWUgaXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwic3RvcmVDbG9zZVRpbWVcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5TdG9yZSBDbG9zZSBUaW1lPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRpbWVcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwic3RvcmVDbG9zZVRpbWVcIiBmb3JtQ29udHJvbE5hbWU9XCJjbG9zZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOnN0b3JlRm9ybS5nZXQoJ2Nsb3NlJyk/LmludmFsaWQgJiYgc3RvcmVGb3JtLmdldCgnY2xvc2UnKT8udG91Y2hlZCB8fCBzdG9yZUZvcm0uaGFzRXJyb3IoJ2ludmFsaWRUaW1lUmFuZ2UnKX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzdG9yZUZvcm0uZ2V0KCdjbG9zZScpPy50b3VjaGVkICYmIHN0b3JlRm9ybS5nZXQoJ2Nsb3NlJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JlIENsb3NlIFRpbWUgaXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJteS0yXCIgKm5nSWY9XCJzdG9yZUZvcm0uaGFzRXJyb3IoJ2ludmFsaWRUaW1lUmFuZ2UnKSAmJiAoc3RvcmVGb3JtLmdldCgnb3BlbicpPy50b3VjaGVkIHx8IHN0b3JlRm9ybS5nZXQoJ2Nsb3NlJyk/LnRvdWNoZWQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wZW5pbmcgdGltZSBtdXN0IGJlIGJlZm9yZSBjbG9zaW5nIHRpbWUuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtdC0yMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiB0ZXh0LWVuZCBtdC0xNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IG14LTMgYnRuLW91dGxpbmUgYnRuLW91dGxpbmUtZGVmYXVsdCByb3VuZGVkLTNcIiAoY2xpY2spPVwibmF2aWdhdGVUb0FkZFN0b3JlKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIChjbGljayk9XCJnb1RvQ29udGFjdCgpXCI+TmV4dDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gU3RvcmUgQ29uZmlndXJhdGlvbiBFbmQgLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gU3RvcmUgQ29udGFjdCBTdGFydCAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFtoaWRkZW5dPVwic2VsZWN0ICE9PSAnY29udGFjdCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBmb3JtQXJyYXlOYW1lPVwic3BvY0RldGFpbHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzcG9jRGV0YWlsIG9mIGdldHNwb2NEZXRhaWxzQ29udHJvbHMoKTsgbGV0IGkgPSBpbmRleFwiIFtmb3JtR3JvdXBOYW1lXT1cImlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImkhPT0wXCIgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG15LTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnctYm9sZCBmcy00XCI+QWx0ZXJuYXRlIFNQT0Mge3tpfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKGNsaWNrKT1cImRlbEFsdFNwb2MoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiIHZpZXdCb3g9XCIwIDAgNDAgNDBcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGZpbHRlcj1cInVybCgjZmlsdGVyMF9kXzIyNTBfMzA2NTApXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjJcIiB5PVwiMVwiIHdpZHRoPVwiMzZcIiBoZWlnaHQ9XCIzNlwiIHJ4PVwiOFwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjIuNVwiIHk9XCIxLjVcIiB3aWR0aD1cIjM1XCIgaGVpZ2h0PVwiMzVcIiByeD1cIjcuNVwiIHN0cm9rZT1cIiNEMEQ1RERcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTIuNSAxMy45OTk4SDE0LjE2NjdNMTQuMTY2NyAxMy45OTk4SDI3LjVNMTQuMTY2NyAxMy45OTk4VjI1LjY2NjVDMTQuMTY2NyAyNi4xMDg1IDE0LjM0MjMgMjYuNTMyNSAxNC42NTQ4IDI2Ljg0NUMxNC45Njc0IDI3LjE1NzYgMTUuMzkxMyAyNy4zMzMyIDE1LjgzMzMgMjcuMzMzMkgyNC4xNjY3QzI0LjYwODcgMjcuMzMzMiAyNS4wMzI2IDI3LjE1NzYgMjUuMzQ1MiAyNi44NDVDMjUuNjU3NyAyNi41MzI1IDI1LjgzMzMgMjYuMTA4NSAyNS44MzMzIDI1LjY2NjVWMTMuOTk5OEgxNC4xNjY3Wk0xNi42NjY3IDEzLjk5OThWMTIuMzMzMkMxNi42NjY3IDExLjg5MTEgMTYuODQyMyAxMS40NjcyIDE3LjE1NDggMTEuMTU0N0MxNy40Njc0IDEwLjg0MjEgMTcuODkxMyAxMC42NjY1IDE4LjMzMzMgMTAuNjY2NUgyMS42NjY3QzIyLjEwODcgMTAuNjY2NSAyMi41MzI2IDEwLjg0MjEgMjIuODQ1MiAxMS4xNTQ3QzIzLjE1NzcgMTEuNDY3MiAyMy4zMzMzIDExLjg5MTEgMjMuMzMzMyAxMi4zMzMyVjEzLjk5OThNMTguMzMzMyAxOC4xNjY1VjIzLjE2NjVNMjEuNjY2NyAxOC4xNjY1VjIzLjE2NjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsdGVyIGlkPVwiZmlsdGVyMF9kXzIyNTBfMzA2NTBcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz1cInNSR0JcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT1cIjBcIiByZXN1bHQ9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiIHJlc3VsdD1cImhhcmRBbHBoYVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZU9mZnNldCBkeT1cIjFcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IHR5cGU9XCJtYXRyaXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPVwiMCAwIDAgMCAwLjA2Mjc0NTEgMCAwIDAgMCAwLjA5NDExNzYgMCAwIDAgMCAwLjE1Njg2MyAwIDAgMCAwLjA1IDBcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW4yPVwiQmFja2dyb3VuZEltYWdlRml4XCIgcmVzdWx0PVwiZWZmZWN0MV9kcm9wU2hhZG93XzIyNTBfMzA2NTBcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW49XCJTb3VyY2VHcmFwaGljXCIgaW4yPVwiZWZmZWN0MV9kcm9wU2hhZG93XzIyNTBfMzA2NTBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0PVwic2hhcGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmlsdGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiY29udGFjdE5hbWVcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5OYW1lPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJjb250YWN0TmFtZVwiIGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOnNwb2NEZXRhaWwuZ2V0KCduYW1lJyk/LmludmFsaWQgJiYgc3BvY0RldGFpbC5nZXQoJ25hbWUnKT8udG91Y2hlZH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3BvY0RldGFpbC5nZXQoJ25hbWUnKT8udG91Y2hlZCAmJiBzcG9jRGV0YWlsLmdldCgnbmFtZScpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgaXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJjb250YWN0RW1haWxcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5FbWFpbDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cImVtYWlsXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImNvbnRhY3RFbWFpbFwiIGZvcm1Db250cm9sTmFtZT1cImVtYWlsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuPVwiXihbYS16QS1aMC05X1xcLVxcLl0rKUBbYS16MC05LV0rKFxcLlthLXowLTktXSspKihcXC5bYS16QS1aXXsyLDN9KSRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOnNwb2NEZXRhaWwuZ2V0KCdlbWFpbCcpPy5pbnZhbGlkICYmIHNwb2NEZXRhaWwuZ2V0KCdlbWFpbCcpPy50b3VjaGVkfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNwb2NEZXRhaWwuZ2V0KCdlbWFpbCcpPy50b3VjaGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiICpuZ0lmPVwic3BvY0RldGFpbC5nZXQoJ2VtYWlsJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtYWlsIGlzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiICpuZ0lmPVwic3BvY0RldGFpbC5nZXQoJ2VtYWlsJyk/Lmhhc0Vycm9yKCdtaW5sZW5ndGgnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbWFpbCBtdXN0IGJlIGF0IGxlYXN0IDMgY2hhcmFjdGVycyBsb25nLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiICpuZ0lmPVwic3BvY0RldGFpbC5nZXQoJ2VtYWlsJyk/Lmhhc0Vycm9yKCdtYXhsZW5ndGgnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbWFpbCBtdXN0IGJlIG5vdCBtb3JlIHRoYW4gMTAwIGNoYXJhY3RlcnMgbG9uZy5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImNvbnRhY3ROdW1iZXJcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5Db250YWN0IE51bWJlcjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiY29udGFjdE51bWJlclwiIG1pbmxlbmd0aD1cIjEwXCIgbWF4bGVuZ3RoPVwiMTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCIgZm9ybUNvbnRyb2xOYW1lPVwiY29udGFjdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6c3BvY0RldGFpbC5nZXQoJ2NvbnRhY3QnKT8uaW52YWxpZCAmJiBzcG9jRGV0YWlsLmdldCgnY29udGFjdCcpPy50b3VjaGVkfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNwb2NEZXRhaWwuZ2V0KCdjb250YWN0Jyk/LnRvdWNoZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCIgKm5nSWY9XCJzcG9jRGV0YWlsLmdldCgnY29udGFjdCcpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250YWN0IGlzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiICpuZ0lmPVwic3BvY0RldGFpbC5nZXQoJ2NvbnRhY3QnKT8uaGFzRXJyb3IoJ21pbmxlbmd0aCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRhY3QgbXVzdCBiZSBhdCBsZWFzdCAxMCBkaWdpdHMuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCIgKm5nSWY9XCJzcG9jRGV0YWlsLmdldCgnY29udGFjdCcpPy5oYXNFcnJvcignbWF4bGVuZ3RoJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGFjdCBtdXN0IGJlIG5vdCBtb3JlIHRoYW4gMTMgZGlnaXRzLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiZGVzaWduYXRpb25cIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5EZXNpZ25hdGlvbiAob3B0aW9uYWwpPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJkZXNpZ25hdGlvblwiIGZvcm1Db250cm9sTmFtZT1cImRlc2lnbmF0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDEgY2xhc3M9XCJzdWItaGVhZFwiPkVudGVyIFN0b3JlIENvbm5lY3Rpb24gRGV0YWlsczwvaDE+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJhbnlEZXNrSURcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5BbnlEZXNrIElEIC8gVGVhbVZpZXdlciBJRCAob3B0aW9uYWwpPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiYW55RGVza0lEXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic3RvcmVDb25uZWN0aW9uSWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiB0ZXh0LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IG14LTMgYnRuLW91dGxpbmUgYnRuLW91dGxpbmUtZGVmYXVsdCByb3VuZGVkLTNcIiAoY2xpY2spPVwibmF2aWdhdGVUb0FkZFN0b3JlKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIChjbGljayk9XCJnb1RvUmV2aWV3KClcIj5OZXh0PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBTdG9yZSBDb250YWN0IEVuZCAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBSZXZpZXcgJiBTdWJtaXQgU3RhcnQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBbaGlkZGVuXT1cInNlbGVjdCAhPT0gJ3JldmlldydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZzLTQgZnctYm9sZCB0ZXh0LWhvdmVyLXByaW1hcnkgc3ViLXRpdGxlIHRleHQtZ3JheS02MDAgbS0wIGN1cnNvci1wb2ludGVyXCI+U3RvcmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZm9cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcC05XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLWxnLTMgZnctYm9sZCB0ZXh0LW11dGVkLXJldmlld1wiPlN0b3JlIE5hbWU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOVwiPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZ3LWJvbGRlciBmcy02IHRleHQtcmV2aWV3LXZhbFwiPnt7c3RvcmVGb3JtLmdldCgnc3RvcmVOYW1lJyk/LnZhbHVlID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlRm9ybS5nZXQoJ3N0b3JlTmFtZScpPy52YWx1ZSA6ICdOQSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLWxnLTMgZnctYm9sZCB0ZXh0LW11dGVkLXJldmlld1wiPlN0b3JlIENvZGU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOSBmdi1yb3dcIj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmdy1ib2xkIGZzLTYgdGV4dC1yZXZpZXctdmFsXCI+e3tzdG9yZUZvcm0uZ2V0KCdzdG9yZUNvZGUnKT8udmFsdWUgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVGb3JtLmdldCgnc3RvcmVDb2RlJyk/LnZhbHVlOiAnTkEnfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItN1wiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbGctMyBmdy1ib2xkIHRleHQtbXV0ZWQtcmV2aWV3XCI+QnVzaW5lc3MgVHlwZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy05XCI+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZnctYm9sZCBmcy02IHRleHQtcmV2aWV3LXZhbCB0ZXh0LWhvdmVyLXByaW1hcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7c3RvcmVGb3JtLmdldCgnYnVzaW5lc3NUeXBlJyk/LnZhbHVlID8gc3RvcmVGb3JtLmdldCgnYnVzaW5lc3NUeXBlJyk/LnZhbHVlIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdOQSd9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbGctMyBmdy1ib2xkIHRleHQtbXV0ZWQtcmV2aWV3XCI+U3RvcmUgVHlwZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxpIGRhdGEtYnMtdG9nZ2xlPVwidG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cIlBob25lIG51bWJlciBtdXN0IGJlIGFjdGl2ZVwiIGNsYXNzPVwiZmFzIGZhLWV4Y2xhbWF0aW9uLWNpcmNsZSBtcy0xIGZzLTdcIj48L2k+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy05IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZnctYm9sZGVyIGZzLTYgbWUtMiB0ZXh0LXJldmlldy12YWxcIj57e3N0b3JlRm9ybS5nZXQoJ3N0b3JlVHlwZV90eXBlJyk/LnZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHN0b3JlRm9ybS5nZXQoJ3N0b3JlVHlwZV90eXBlJyk/LnZhbHVlIDogJ05BJ319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2Utc3VjY2Vzc1wiPlZlcmlmaWVkPC9zcGFuPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi03XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInN0b3JlRm9ybS5nZXQoJ3N0b3JlVHlwZV90eXBlJyk/LnZhbHVlICYmIHN0b3JlRm9ybS5nZXQoJ3N0b3JlVHlwZV90eXBlJyk/LnZhbHVlID09PSAnTWFsbCBTdG9yZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbGctMyBmdy1ib2xkIHRleHQtbXV0ZWQtcmV2aWV3XCI+IE1hbGwgTmFtZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy05XCI+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZnctYm9sZGVyIGZzLTYgdGV4dC1yZXZpZXctdmFsXCI+e3tzdG9yZUZvcm0uZ2V0KCdzdG9yZVR5cGVfbmFtZScpPy52YWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBzdG9yZUZvcm0uZ2V0KCdzdG9yZVR5cGVfbmFtZScpPy52YWx1ZSA6ICdOQSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLWxnLTMgZnctYm9sZCB0ZXh0LW11dGVkLXJldmlld1wiPkFkZHJlc3M8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOVwiPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZ3LWJvbGRlciBmcy02IHRleHQtcmV2aWV3LXZhbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0b3JlRm9ybS5nZXQoJ2FkZHJlc3MnKT8udmFsdWUgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZUZvcm0uZ2V0KCdjaXR5Jyk/LnZhbHVlICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVGb3JtLmdldCgnc3RhdGUnKT8udmFsdWUgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZUZvcm0uZ2V0KCdjb3VudHJ5Jyk/LnZhbHVlICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVGb3JtLmdldCgncGluY29kZScpPy52YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7c3RvcmVGb3JtLmdldCgnYWRkcmVzcycpPy52YWx1ZSA/IHN0b3JlRm9ybS5nZXQoJ2FkZHJlc3MnKT8udmFsdWUgOiAnJ319LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7c3RvcmVGb3JtLmdldCgnY2l0eScpPy52YWx1ZSA/IHN0b3JlRm9ybS5nZXQoJ2NpdHknKT8udmFsdWUgOiAnJ319LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7c3RvcmVGb3JtLmdldCgnc3RhdGUnKT8udmFsdWUgPyBzdG9yZUZvcm0uZ2V0KCdzdGF0ZScpPy52YWx1ZSA6ICcnfX0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tzdG9yZUZvcm0uZ2V0KCdjb3VudHJ5Jyk/LnZhbHVlID8gc3RvcmVGb3JtLmdldCgnY291bnRyeScpPy52YWx1ZSA6ICcnfX0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tzdG9yZUZvcm0uZ2V0KCdwaW5jb2RlJyk/LnZhbHVlID8gc3RvcmVGb3JtLmdldCgncGluY29kZScpPy52YWx1ZSA6ICcnfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzdG9yZUZvcm0uZ2V0KCdhZGRyZXNzJyk/LnZhbHVlIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXN0b3JlRm9ybS5nZXQoJ2NpdHknKT8udmFsdWUgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhc3RvcmVGb3JtLmdldCgnc3RhdGUnKT8udmFsdWUgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhc3RvcmVGb3JtLmdldCgnY291bnRyeScpPy52YWx1ZSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFzdG9yZUZvcm0uZ2V0KCdwaW5jb2RlJyk/LnZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInJvdyBtYi0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1sZy0zIGZ3LWJvbGQgdGV4dC1tdXRlZC1yZXZpZXdcIj5BbGxvdyBDaGFuZ2VzPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTlcIj48c3BhbiBjbGFzcz1cImZ3LWJvbGQgZnMtNlwiPlllczwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtNCBmdy1ib2xkIHRleHQtaG92ZXItcHJpbWFyeSBzdWItdGl0bGUgdGV4dC1ncmF5LTYwMCBtLTAgY3Vyc29yLXBvaW50ZXJcIj5TdG9yZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlndXJhdGlvbjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHAtOVwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1sZy0zIGZ3LWJvbGQgdGV4dC1tdXRlZC1yZXZpZXdcIj5UaW1lIFpvbmU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOVwiPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZ3LWJvbGRlciBmcy02IHRleHQtcmV2aWV3LXZhbFwiPnt7c3RvcmVGb3JtLmdldCgndGltZVpvbmUnKT8udmFsdWUgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVGb3JtLmdldCgndGltZVpvbmUnKT8udmFsdWUgOiAnTkEnfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1sZy0zIGZ3LWJvbGQgdGV4dC1tdXRlZC1yZXZpZXdcIj5ObyBvZiBDYW1lcmFzPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTkgZnYtcm93XCI+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZnctYm9sZCBmcy02IHRleHQtcmV2aWV3LXZhbFwiPnt7c3RvcmVGb3JtLmdldCgnY2FtZXJhcycpPy52YWx1ZSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZUZvcm0uZ2V0KCdjYW1lcmFzJyk/LnZhbHVlIDogJ05BJ319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbGctMyBmdy1ib2xkIHRleHQtbXV0ZWQtcmV2aWV3XCI+U3RvcmUgT3BlbiBUaW1lPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTlcIj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmdy1ib2xkIGZzLTYgdGV4dC1yZXZpZXctdmFsIHRleHQtaG92ZXItcHJpbWFyeVwiPnt7c3RvcmVGb3JtLmdldCgnb3BlbicpPy52YWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBzdG9yZUZvcm0uZ2V0KCdvcGVuJyk/LnZhbHVlIDogJ05BJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLWxnLTMgZnctYm9sZCB0ZXh0LW11dGVkLXJldmlld1wiPlN0b3JlIENsb3NlIFRpbWU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOVwiPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZ3LWJvbGRlciBmcy02IHRleHQtcmV2aWV3LXZhbFwiPnt7c3RvcmVGb3JtLmdldCgnY2xvc2UnKT8udmFsdWUgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVGb3JtLmdldCgnY2xvc2UnKT8udmFsdWUgOiAnTkEnfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtNCBmdy1ib2xkIHRleHQtaG92ZXItcHJpbWFyeSBzdWItdGl0bGUgdGV4dC1ncmF5LTYwMCBtLTAgY3Vyc29yLXBvaW50ZXJcIj5Db250YWN0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXRhaWxzPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcm93IHB4LTkgcHQtMyBwYi00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZSBjb2wtbWQtMTIgY29sLWxnLTEyIGNvbC14bC05IGNvbC14eGwtOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGFsaWduLW1pZGRsZSBneS02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keSBjbGFzcz1cImZzLTYgZnctYm9sZFwiPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgZm9ybUFycmF5TmFtZT1cInNwb2NEZXRhaWxzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3BvYyBvZiBnZXRzcG9jRGV0YWlsc0NvbnRyb2xzKCk7bGV0IGk9aW5kZXg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5TcG9jIHt7aSsxfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNSAxNS43NVYxNC4yNUMxNSAxMy40NTQ0IDE0LjY4MzkgMTIuNjkxMyAxNC4xMjEzIDEyLjEyODdDMTMuNTU4NyAxMS41NjYxIDEyLjc5NTYgMTEuMjUgMTIgMTEuMjVINkM1LjIwNDM1IDExLjI1IDQuNDQxMjkgMTEuNTY2MSAzLjg3ODY4IDEyLjEyODdDMy4zMTYwNyAxMi42OTEzIDMgMTMuNDU0NCAzIDE0LjI1VjE1Ljc1TTEyIDUuMjVDMTIgNi45MDY4NSAxMC42NTY5IDguMjUgOSA4LjI1QzcuMzQzMTUgOC4yNSA2IDYuOTA2ODUgNiA1LjI1QzYgMy41OTMxNSA3LjM0MzE1IDIuMjUgOSAyLjI1QzEwLjY1NjkgMi4yNSAxMiAzLjU5MzE1IDEyIDUuMjVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48c3BhbiBjbGFzcz1cIm1zLTJcIj57e2dldHNwb2NEZXRhaWxzVmFsdWVzKGkpPy5uYW1lID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0c3BvY0RldGFpbHNWYWx1ZXMoaSk/Lm5hbWUgOiAnTkEnIH19PC9zcGFuPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMV84MDM3MylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMiA2LjAwMDAyVjkuNzUwMDJDMTIgMTAuMzQ2OCAxMi4yMzcxIDEwLjkxOTEgMTIuNjU5IDExLjM0MUMxMy4wODEgMTEuNzYzIDEzLjY1MzMgMTIgMTQuMjUgMTJDMTQuODQ2NyAxMiAxNS40MTkgMTEuNzYzIDE1Ljg0MSAxMS4zNDFDMTYuMjYzIDEwLjkxOTEgMTYuNSAxMC4zNDY4IDE2LjUgOS43NTAwMlY5LjAwMDAyQzE2LjQ5OTkgNy4zMDcyOSAxNS45MjcyIDUuNjY0MzggMTQuODc1IDQuMzM4NDJDMTMuODIyNyAzLjAxMjQ2IDEyLjM1MjkgMi4wODE0NCAxMC43MDQ1IDEuNjk2NzVDOS4wNTYwNSAxLjMxMjA1IDcuMzI1OTYgMS40OTYzIDUuNzk1NTIgMi4yMTk1NUM0LjI2NTA4IDIuOTQyNzkgMy4wMjQzMSA0LjE2MjQ5IDIuMjc0OTUgNS42ODAzMkMxLjUyNTYgNy4xOTgxNCAxLjMxMTczIDguOTI0ODMgMS42NjgxMyAxMC41Nzk2QzIuMDI0NTMgMTIuMjM0NCAyLjkzMDI0IDEzLjcxOTkgNC4yMzc5OCAxNC43OTQ3QzUuNTQ1NzIgMTUuODY5NSA3LjE3ODU4IDE2LjQ3MDMgOC44NzEwNiAxNi40OTk0QzEwLjU2MzUgMTYuNTI4NSAxMi4yMTYxIDE1Ljk4NDIgMTMuNTYgMTQuOTU1TTEyIDkuMDAwMDJDMTIgMTAuNjU2OSAxMC42NTY5IDEyIDkuMDAwMDEgMTJDNy4zNDMxNSAxMiA2LjAwMDAxIDEwLjY1NjkgNi4wMDAwMSA5LjAwMDAyQzYuMDAwMDEgNy4zNDMxNyA3LjM0MzE1IDYuMDAwMDIgOS4wMDAwMSA2LjAwMDAyQzEwLjY1NjkgNi4wMDAwMiAxMiA3LjM0MzE3IDEyIDkuMDAwMDJaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8xXzgwMzczXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48c3BhbiBjbGFzcz1cIm1zLTJcIj57e2dldHNwb2NEZXRhaWxzVmFsdWVzKGkpPy5lbWFpbCA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldHNwb2NEZXRhaWxzVmFsdWVzKGkpPy5lbWFpbCA6ICdOQScgfX08L3NwYW4+PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDE4IDE4XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8xXzgwMzc2KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2LjUwMDEgMTIuNjkwMVYxNC45NDAxQzE2LjUwMDkgMTUuMTQ4OSAxNi40NTgxIDE1LjM1NTcgMTYuMzc0NSAxNS41NDcxQzE2LjI5MDggMTUuNzM4NSAxNi4xNjggMTUuOTEwMyAxNi4wMTQxIDE2LjA1MTVDMTUuODYwMiAxNi4xOTI3IDE1LjY3ODUgMTYuMzAwMiAxNS40ODA2IDE2LjM2NzFDMTUuMjgyOCAxNi40MzQgMTUuMDczMSAxNi40NTg5IDE0Ljg2NTEgMTYuNDQwMUMxMi41NTcyIDE2LjE4OTMgMTAuMzQwMyAxNS40MDA3IDguMzkyNTcgMTQuMTM3NkM2LjU4MDQ0IDEyLjk4NjEgNS4wNDQwNyAxMS40NDk3IDMuODkyNTcgOS42Mzc1N0MyLjYyNTA2IDcuNjgwOTggMS44MzYyNSA1LjQ1MzMyIDEuNTkwMDcgMy4xMzUwN0MxLjU3MTMzIDIuOTI3NjcgMS41OTU5OCAyLjcxODY0IDEuNjYyNDUgMi41MjEyOUMxLjcyODkyIDIuMzIzOTQgMS44MzU3NSAyLjE0MjU5IDEuOTc2MTUgMS45ODg3OUMyLjExNjU0IDEuODM0OTkgMi4yODc0MyAxLjcxMjEgMi40Nzc5MiAxLjYyNzk2QzIuNjY4NCAxLjU0MzgyIDIuODc0MzMgMS41MDAyNyAzLjA4MjU3IDEuNTAwMDdINS4zMzI1N0M1LjY5NjU1IDEuNDk2NDkgNi4wNDk0MiAxLjYyNTM4IDYuMzI1MzkgMS44NjI3MkM2LjYwMTM3IDIuMTAwMDYgNi43ODE2MyAyLjQyOTY2IDYuODMyNTcgMi43OTAwN0M2LjkyNzU0IDMuNTEwMTIgNy4xMDM2NiA0LjIxNzEyIDcuMzU3NTcgNC44OTc1N0M3LjQ1ODQ4IDUuMTY2MDIgNy40ODAzMiA1LjQ1Nzc2IDcuNDIwNSA1LjczODIzQzcuMzYwNjkgNi4wMTg3MSA3LjIyMTcyIDYuMjc2MTYgNy4wMjAwNyA2LjQ4MDA3TDYuMDY3NTcgNy40MzI1N0M3LjEzNTI0IDkuMzEwMjMgOC42ODk5MSAxMC44NjQ5IDEwLjU2NzYgMTEuOTMyNkwxMS41MjAxIDEwLjk4MDFDMTEuNzI0IDEwLjc3ODQgMTEuOTgxNCAxMC42Mzk1IDEyLjI2MTkgMTAuNTc5NkMxMi41NDI0IDEwLjUxOTggMTIuODM0MSAxMC41NDE3IDEzLjEwMjYgMTAuNjQyNkMxMy43ODMgMTAuODk2NSAxNC40OSAxMS4wNzI2IDE1LjIxMDEgMTEuMTY3NkMxNS41NzQ0IDExLjIxOSAxNS45MDcxIDExLjQwMjUgMTYuMTQ1IDExLjY4MzJDMTYuMzgyOCAxMS45NjM5IDE2LjUwOTIgMTIuMzIyMyAxNi41MDAxIDEyLjY5MDFaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8xXzgwMzc2XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48c3BhbiBjbGFzcz1cIm1zLTJcIj57e2dldHNwb2NEZXRhaWxzVmFsdWVzKGkpPy5jb250YWN0ID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0c3BvY0RldGFpbHNWYWx1ZXMoaSk/LmNvbnRhY3QgOiAnTkEnIH19PC9zcGFuPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+QW55RGVzayBJRFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+e3tzdG9yZUZvcm0uZ2V0KCdzdG9yZUNvbm5lY3Rpb25JZCcpPy52YWx1ZSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZUZvcm0uZ2V0KCdzdG9yZUNvbm5lY3Rpb25JZCcpPy52YWx1ZSA6ICdOQScgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImdvVG9TdG9yZUluZm8oKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IG14LTMgYnRuLW91dGxpbmUgYnRuLW91dGxpbmUtZGVmYXVsdCByb3VuZGVkLTNcIj5FZGl0PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW2Rpc2FibGVkXT1cInN0b3JlRm9ybS5pbnZhbGlkXCIgKGNsaWNrKT1cIm9uU3VibWl0KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiPlN1Ym1pdDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gUmV2aWV3ICYgU3VibWl0IEVuZCAtLT5cclxuICAgICAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
241
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXN0b3Jlcy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS1zdG9yZXMvc3JjL2xpYi9jb21wb25lbnRzL2FkZC1zdG9yZXMtZm9ybS9hZGQtc3RvcmVzLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tbWFuYWdlLXN0b3Jlcy9zcmMvbGliL2NvbXBvbmVudHMvYWRkLXN0b3Jlcy1mb3JtL2FkZC1zdG9yZXMtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQTBCLFVBQVUsRUFBZ0QsTUFBTSxnQkFBZ0IsQ0FBQztBQUtsSCxPQUFPLEtBQUssTUFBTSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7OztBQVcxQyxNQUFNLE9BQU8sc0JBQXNCO0lBbUN2QjtJQUNBO0lBQ0E7SUFDQTtJQXJDYyxTQUFTLENBQTZCO0lBRTlELE1BQU0sR0FBRyxZQUFZLENBQUM7SUFDdEIsU0FBUyxDQUFZO0lBQ3JCLE9BQU8sQ0FBUztJQUNoQixTQUFTLENBQVE7SUFDakIsY0FBYyxDQUFNO0lBRWIsbUJBQW1CLENBQUMsS0FBMkM7UUFDcEUsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFO1lBQ2xCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQzNDLENBQUMsU0FBdUMsRUFBRSxFQUFFLENBQzFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUN0QyxFQUFFLFNBQVMsQ0FBQztZQUNiLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQ3hDLENBQUMsU0FBdUMsRUFBRSxFQUFFLENBQzFDLFNB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QUUsQ0FBQztJQUNuQyxDQUFDO3VHQWhRVSxzQkFBc0I7MkZBQXRCLHNCQUFzQixtS0NyQm5DLDJ0cURBbWpCTTs7MkZEOWhCTyxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0UscUJBQXFCOzRKQUtQLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIE9uSW5pdCxcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1BcnJheSwgVmFsaWRhdG9ycywgRm9ybUdyb3VwLCBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgU3RvcmVzU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9zdG9yZXMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBTdG9yZVJlc3BvbnNlIH0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXMvc3RvcmUuaW50ZXJmYWNlXCI7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gJ21vbWVudC10aW1lem9uZSc7XHJcbmltcG9ydCB7IE5neEdwQXV0b2NvbXBsZXRlRGlyZWN0aXZlIH0gZnJvbSBcIkBhbmd1bGFyLW1hZ2ljL25neC1ncC1hdXRvY29tcGxldGUvbGliL25neC1ncC1hdXRvY29tcGxldGUuZGlyZWN0aXZlXCI7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gXCJ0YW5nby1hcHAtdWktc2hhcmVkXCI7XHJcblxyXG5kZWNsYXJlIHZhciAkOiBhbnk7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJsaWItYWRkLXN0b3Jlcy1mb3JtXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9hZGQtc3RvcmVzLWZvcm0uY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybDogXCIuL2FkZC1zdG9yZXMtZm9ybS5jb21wb25lbnQuc2Nzc1wiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWRkU3RvcmVzRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQFZpZXdDaGlsZChcIm5neFBsYWNlc1wiKSBwbGFjZXNSZWY6IE5neEdwQXV0b2NvbXBsZXRlRGlyZWN0aXZlO1xyXG5cclxuICBzZWxlY3QgPSBcInN0b3JlX2luZm9cIjtcclxuICBzdG9yZUZvcm06IEZvcm1Hcm91cDtcclxuICBzdG9yZUlkOiBzdHJpbmc7XHJcbiAgdGltZXpvbmVzOiBhbnlbXTtcclxuICAkaGVhZGVyRmlsdGVyczogYW55O1xyXG5cclxuICBwdWJsaWMgaGFuZGxlQWRkcmVzc0NoYW5nZShwbGFjZTogZ29vZ2xlLm1hcHMucGxhY2VzLlBsYWNlUmVzdWx0IHwgYW55KSB7XHJcbiAgICBpZiAocGxhY2UuZ2VvbWV0cnkpIHtcclxuICAgICAgY29uc3QgY291bnRyeSA9IHBsYWNlLmFkZHJlc3NfY29tcG9uZW50cy5maW5kKFxyXG4gICAgICAgIChjb21wb25lbnQ6IHsgdHlwZXM6IHN0cmluZyB8IHN0cmluZ1tdIH0pID0+XHJcbiAgICAgICAgICBjb21wb25lbnQudHlwZXMuaW5jbHVkZXMoXCJjb3VudHJ5XCIpXHJcbiAgICAgICk/LmxvbmdfbmFtZTtcclxuICAgICAgY29uc3QgY2l0eSA9IHBsYWNlLmFkZHJlc3NfY29tcG9uZW50cy5maW5kKFxyXG4gICAgICAgIChjb21wb25lbnQ6IHsgdHlwZXM6IHN0cmluZyB8IHN0cmluZ1tdIH0pID0+XHJcbiAgICAgICAgICBjb21wb25lbnQudHlwZXMuaW5jbHVkZXMoXCJsb2NhbGl0eVwiKVxyXG4gICAgICApPy5sb25nX25hbWU7XHJcbiAgICAgIGNvbnN0IHN0YXRlID0gcGxhY2UuYWRkcmVzc19jb21wb25lbnRzLmZpbmQoXHJcbiAgICAgICAgKGNvbXBvbmVudDogeyB0eXBlczogc3RyaW5nIHwgc3RyaW5nW10gfSkgPT5cclxuICAgICAgICAgIGNvbXBvbmVudC50eXBlcy5pbmNsdWRlcyhcImFkbWluaXN0cmF0aXZlX2FyZWFfbGV2ZWxfMVwiKVxyXG4gICAgICApPy5sb25nX25hbWU7XHJcbiAgICAgIGNvbnN0IHBpbmNvZGUgPSBwbGFjZS5hZGRyZXNzX2NvbXBvbmVudHMuZmluZChcclxuICAgICAgICAoY29tcG9uZW50OiB7IHR5cGVzOiBzdHJpbmcgfCBzdHJpbmdbXSB9KSA9PlxyXG4gICAgICAgICAgY29tcG9uZW50LnR5cGVzLmluY2x1ZGVzKFwicG9zdGFsX2NvZGVcIilcclxuICAgICAgKT8ubG9uZ19uYW1lO1xyXG4gICAgICB0aGlzLnN0b3JlRm9ybS5nZXQoXCJjb3VudHJ5XCIpPy5zZXRWYWx1ZShjb3VudHJ5KTtcclxuICAgICAgdGhpcy5zdG9yZUZvcm0uZ2V0KFwiY2l0eVwiKT8uc2V0VmFsdWUoY2l0eSk7XHJcbiAgICAgIHRoaXMuc3RvcmVGb3JtLmdldChcInN0YXRlXCIpPy5zZXRWYWx1ZShzdGF0ZSk7XHJcbiAgICAgIHRoaXMuc3RvcmVGb3JtLmdldChcInBpbmNvZGVcIik/LnNldFZhbHVlKHBpbmNvZGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgc3RvcmVzU2VydmljZTogU3RvcmVzU2VydmljZSxcclxuICAgIHByaXZhdGUgdHM6IFRvYXN0U2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXJcclxuICApIHtcclxuICAgIGxldCBkYXRhOmFueSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2hlYWRlci1maWx0ZXJzJykgfHwgJycpO1xyXG4gICAgdGhpcy4kaGVhZGVyRmlsdGVycyA9IGRhdGE7XHJcbiAgICB0aGlzLmdldEFsbFRpbWV6b25lcygpO1xyXG4gICAgdGhpcy5jcmVhdGVGb3JtKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHt9XHJcblxyXG4gIHNldHRpbmd2YWx1ZShsYWJlbDogYW55KSB7XHJcbiAgICBpZiAobGFiZWwgPT0gXCJzdG9yZV9pbmZvXCIpIHtcclxuICAgICAgdGhpcy5zZWxlY3QgPSBcInN0b3JlX2luZm9cIjtcclxuICAgIH0gZWxzZSBpZiAobGFiZWwgPT0gXCJjb25maWdcIikge1xyXG4gICAgICB0aGlzLnNlbGVjdCA9IFwiY29uZmlnXCI7XHJcbiAgICB9IGVsc2UgaWYgKGxhYmVsID09IFwic3RvcmVfbG9jXCIpIHtcclxuICAgICAgdGhpcy5zZWxlY3QgPSBcInN0b3JlX2xvY1wiO1xyXG4gICAgfSBlbHNlIGlmIChsYWJlbCA9PSBcImNvbnRhY3RcIikge1xyXG4gICAgICB0aGlzLnNlbGVjdCA9IFwiY29udGFjdFwiO1xyXG4gICAgfSBlbHNlIGlmIChsYWJlbCA9PSBcInJldmlld1wiKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ID0gXCJyZXZpZXdcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNyZWF0ZUZvcm0oKSB7XHJcbiAgICB0aGlzLnN0b3JlRm9ybSA9IHRoaXMuZmIuZ3JvdXAoXHJcbiAgICAgIHtcclxuICAgICAgICBzdG9yZU5hbWU6IFtcIlwiLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICBjbGllbnRJZDogW3RoaXMuJGhlYWRlckZpbHRlcnM/LmNsaWVudCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgYnVzaW5lc3NUeXBlOiBbXCJDT0NPXCIsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgIHN0b3JlVHlwZV90eXBlOiBbXCJIaWdoIFN0cmVldFwiLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICBzdG9yZVR5cGVfbmFtZTogW1wiXCJdLFxyXG4gICAgICAgIHN0b3JlQ29kZTogW1wiXCJdLFxyXG4gICAgICAgIGFkZHJlc3M6IFtcIlwiLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICBjb3VudHJ5OiBbXCJcIiwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgc3RhdGU6IFtcIlwiLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICBjaXR5OiBbXCJcIiwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgcGluY29kZTogW1wiXCIsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgIHRpbWVab25lOiBbXCJBc2lhL0tvbGthdGFcIiwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgb3BlbjogW1wiMTA6MDBcIiwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgY2xvc2U6IFtcIjIwOjAwXCIsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgIC8vIGNhbWVyYXM6IFswLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICBzcG9jRGV0YWlsczogdGhpcy5mYi5hcnJheShbdGhpcy5jcmVhdGVTcG9jRGV0YWlsKCldKSxcclxuICAgICAgICBzdG9yZUNvbm5lY3Rpb25JZDogW1wiXCJdLFxyXG4gICAgICB9LFxyXG4gICAgICB7IHZhbGlkYXRvcnM6IHRoaXMudGltZVJhbmdlVmFsaWRhdG9yIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB0aW1lUmFuZ2VWYWxpZGF0b3IoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgY29uc3Qgb3BlblRpbWUgPSBjb250cm9sLmdldChcIm9wZW5cIik/LnZhbHVlO1xyXG4gICAgY29uc3QgY2xvc2VUaW1lID0gY29udHJvbC5nZXQoXCJjbG9zZVwiKT8udmFsdWU7XHJcbiAgICBpZiAob3BlblRpbWUgJiYgY2xvc2VUaW1lICYmIG9wZW5UaW1lID49IGNsb3NlVGltZSkge1xyXG4gICAgICByZXR1cm4geyBpbnZhbGlkVGltZVJhbmdlOiB0cnVlIH07XHJcbiAgICB9ICAgIFxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVTcG9jRGV0YWlsKCk6IEZvcm1Hcm91cCB7XHJcbiAgICByZXR1cm4gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgIG5hbWU6IFtcIlwiLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgZW1haWw6IFtcclxuICAgICAgICBcIlwiLFxyXG4gICAgICAgIFtcclxuICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXHJcbiAgICAgICAgICBWYWxpZGF0b3JzLmVtYWlsLFxyXG4gICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTAwKSxcclxuICAgICAgICAgIFZhbGlkYXRvcnMubWluTGVuZ3RoKDMpLFxyXG4gICAgICAgIF0sXHJcbiAgICAgIF0sXHJcbiAgICAgIGNvbnRhY3Q6IFtcclxuICAgICAgICBcIlwiLFxyXG4gICAgICAgIFtcclxuICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXHJcbiAgICAgICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCgxMyksXHJcbiAgICAgICAgICBWYWxpZGF0b3JzLm1pbkxlbmd0aCgxMCksXHJcbiAgICAgICAgXSxcclxuICAgICAgXSxcclxuICAgICAgZGVzaWduYXRpb246IFtcIlwiXSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0c3BvY0RldGFpbHNDb250cm9scygpIHtcclxuICAgIHJldHVybiAodGhpcy5zdG9yZUZvcm0uZ2V0KFwic3BvY0RldGFpbHNcIikgYXMgRm9ybUFycmF5KS5jb250cm9scztcclxuICB9XHJcblxyXG4gIGdldHNwb2NEZXRhaWxzVmFsdWVzKGk6IG51bWJlcikge1xyXG4gICAgcmV0dXJuICh0aGlzLnN0b3JlRm9ybS5nZXQoXCJzcG9jRGV0YWlsc1wiKSBhcyBGb3JtQXJyYXkpLmF0KGkpLnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3RvcmVQcm9maWxlKCk6IEZvcm1Hcm91cCB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZUZvcm0uZ2V0KFwic3RvcmVQcm9maWxlXCIpIGFzIEZvcm1Hcm91cDtcclxuICB9XHJcblxyXG4gIGdvVG9TdG9yZUluZm8oKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdCA9IFwic3RvcmVfaW5mb1wiO1xyXG4gIH1cclxuXHJcbiAgZ29Ub0NvbmZpZ3VyYXRpb24oKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdCA9IFwiY29uZmlnXCI7XHJcbiAgfVxyXG5cclxuICBnb1RvQ29udGFjdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ID0gXCJjb250YWN0XCI7XHJcbiAgfVxyXG5cclxuICBnb1RvUmV2aWV3KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3QgPSBcInJldmlld1wiO1xyXG4gIH1cclxuXHJcbiAgYWRkU3BvY0RldGFpbCgpIHtcclxuICAgICh0aGlzLnN0b3JlRm9ybS5nZXQoXCJzcG9jRGV0YWlsc1wiKSBhcyBGb3JtQXJyYXkpLnB1c2goXHJcbiAgICAgIHRoaXMuY3JlYXRlU3BvY0RldGFpbCgpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgYWRkQWx0U3BvYygpIHtcclxuICAgICh0aGlzLnN0b3JlRm9ybS5nZXQoXCJzcG9jRGV0YWlsc1wiKSBhcyBGb3JtQXJyYXkpLnB1c2goXHJcbiAgICAgIHRoaXMuY3JlYXRlU3BvY0RldGFpbCgpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZGVsQWx0U3BvYygpIHtcclxuICAgICh0aGlzLnN0b3JlRm9ybS5nZXQoXCJzcG9jRGV0YWlsc1wiKSBhcyBGb3JtQXJyYXkpLnJlbW92ZUF0KDEpO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlU3BvY0RldGFpbChpbmRleDogbnVtYmVyKSB7XHJcbiAgICAodGhpcy5zdG9yZUZvcm0uZ2V0KFwic3BvY0RldGFpbHNcIikgYXMgRm9ybUFycmF5KS5yZW1vdmVBdChpbmRleCk7XHJcbiAgfVxyXG5cclxuICBvblN1Ym1pdCgpIHtcclxuICAgIGlmICh0aGlzLnN0b3JlRm9ybS52YWxpZCkge1xyXG4gICAgICBsZXQgc3RvcmU6IFN0b3JlUmVzcG9uc2UgPSB7XHJcbiAgICAgICAgc3RvcmVOYW1lOiB0aGlzLnN0b3JlRm9ybS52YWx1ZS5zdG9yZU5hbWUsXHJcbiAgICAgICAgY2xpZW50SWQ6IHRoaXMuc3RvcmVGb3JtLnZhbHVlLmNsaWVudElkLFxyXG4gICAgICAgIGJ1c2luZXNzVHlwZTogdGhpcy5zdG9yZUZvcm0udmFsdWUuYnVzaW5lc3NUeXBlLFxyXG4gICAgICAgIHN0b3JlVHlwZToge1xyXG4gICAgICAgICAgdHlwZTogdGhpcy5zdG9yZUZvcm0udmFsdWUuc3RvcmVUeXBlX3R5cGUsXHJcbiAgICAgICAgICBuYW1lOiB0aGlzLnN0b3JlRm9ybS52YWx1ZT8uc3RvcmVUeXBlX25hbWUsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBzdG9yZVByb2ZpbGU6IHtcclxuICAgICAgICAgIHN0b3JlQ29kZTogdGhpcy5zdG9yZUZvcm0udmFsdWU/LnN0b3JlQ29kZSxcclxuICAgICAgICAgIGFkZHJlc3M6IHRoaXMuc3RvcmVGb3JtLnZhbHVlPy5hZGRyZXNzLFxyXG4gICAgICAgICAgY291bnRyeTogdGhpcy5zdG9yZUZvcm0udmFsdWU/LmNvdW50cnksXHJcbiAgICAgICAgICBzdGF0ZTogdGhpcy5zdG9yZUZvcm0udmFsdWU/LnN0YXRlLFxyXG4gICAgICAgICAgY2l0eTogdGhpcy5zdG9yZUZvcm0udmFsdWU/LmNpdHksXHJcbiAgICAgICAgICBwaW5jb2RlOiB0aGlzLnN0b3JlRm9ybS52YWx1ZT8ucGluY29kZSxcclxuICAgICAgICAgIHRpbWVab25lOiB0aGlzLnN0b3JlRm9ybS52YWx1ZT8udGltZVpvbmUsXHJcbiAgICAgICAgICBvcGVuOiB0aGlzLnN0b3JlRm9ybS52YWx1ZT8ub3BlbixcclxuICAgICAgICAgIGNsb3NlOiB0aGlzLnN0b3JlRm9ybS52YWx1ZT8uY2xvc2UsXHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyBlZGdlOiB7XHJcbiAgICAgICAgLy8gICBjYW1EZXRhaWxzOiB7XHJcbiAgICAgICAgLy8gICAgIGNhbWVyYXM6IHRoaXMuc3RvcmVGb3JtLnZhbHVlPy5jYW1lcmFzLFxyXG4gICAgICAgIC8vICAgfSxcclxuICAgICAgICAvLyB9LFxyXG4gICAgICAgIHNwb2NEZXRhaWxzOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6IHRoaXMuc3RvcmVGb3JtLnZhbHVlPy5zcG9jRGV0YWlsc1swXS5uYW1lLFxyXG4gICAgICAgICAgICBlbWFpbDogdGhpcy5zdG9yZUZvcm0udmFsdWU/LnNwb2NEZXRhaWxzWzBdLmVtYWlsLFxyXG4gICAgICAgICAgICBjb250YWN0OiB0aGlzLnN0b3JlRm9ybS52YWx1ZT8uc3BvY0RldGFpbHNbMF0uY29udGFjdCxcclxuICAgICAgICAgICAgZGVzaWduYXRpb246IHRoaXMuc3RvcmVGb3JtLnZhbHVlPy5zcG9jRGV0YWlsc1swXS5kZXNpZ25hdGlvbixcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgXSxcclxuICAgICAgICBzdG9yZUNvbm5lY3Rpb25JZDogdGhpcy5zdG9yZUZvcm0udmFsdWU/LnN0b3JlQ29ubmVjdGlvbklkLFxyXG4gICAgICB9O1xyXG4gICAgICBpZiAodGhpcy5zdG9yZUZvcm0udmFsdWUuc3BvY0RldGFpbHMubGVuZ3RoID4gMSkge1xyXG4gICAgICAgIGZvcihsZXQgaT0xO2k8dGhpcy5zdG9yZUZvcm0udmFsdWUuc3BvY0RldGFpbHMubGVuZ3RoO2krKykge1xyXG4gICAgICAgICAgc3RvcmUuc3BvY0RldGFpbHMucHVzaCh7XHJcbiAgICAgICAgICAgIG5hbWU6IHRoaXMuc3RvcmVGb3JtLnZhbHVlPy5zcG9jRGV0YWlsc1tpXS5uYW1lLFxyXG4gICAgICAgICAgICBlbWFpbDogdGhpcy5zdG9yZUZvcm0udmFsdWU/LnNwb2NEZXRhaWxzW2ldLmVtYWlsLFxyXG4gICAgICAgICAgICBjb250YWN0OiB0aGlzLnN0b3JlRm9ybS52YWx1ZT8uc3BvY0RldGFpbHNbaV0uY29udGFjdCxcclxuICAgICAgICAgICAgZGVzaWduYXRpb246IHRoaXMuc3RvcmVGb3JtLnZhbHVlPy5zcG9jRGV0YWlsc1tpXS5kZXNpZ25hdGlvbixcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5zdG9yZXNTZXJ2aWNlLmNyZWF0ZVN0b3JlKHN0b3JlKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDAgJiYgcmVzLnN0YXR1cyA9PT0gXCJzdWNjZXNzXCIpIHtcclxuICAgICAgICAgICAgdGhpcy50cy5nZXRTdWNjZXNzVG9hc3QoXCJTdG9yZSBDcmVhdGVkIFN1Y2Nlc3NmdWxseSFcIik7XHJcbiAgICAgICAgICAgIGlmIChyZXMuZGF0YS5zdG9yZSAmJiByZXMuZGF0YS5zdG9yZS5zdG9yZUlkKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zdG9yZXNTZXJ2aWNlXHJcbiAgICAgICAgICAgICAgICAuY3JlYXRlSW5mcmFUaWNrZXQoe1xyXG4gICAgICAgICAgICAgICAgICBzdG9yZUlkOiByZXMuZGF0YS5zdG9yZS5zdG9yZUlkLFxyXG4gICAgICAgICAgICAgICAgICBEYXRlOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdLFxyXG4gICAgICAgICAgICAgICAgICBpc3N1ZVR5cGU6IFwiaW5zdGFsbGF0aW9uXCIsXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge30sXHJcbiAgICAgICAgICAgICAgICAgIGVycm9yOiAoKSA9PiB7fSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9tYW5hZ2Uvc3RvcmVzXCJdKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudHMuZ2V0RXJyb3JUb2FzdChcIlVuYWJsZSB0byBjcmVhdGUgc3RvcmUhXCIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy50cy5nZXRFcnJvclRvYXN0KFwiVW5hYmxlIHRvIGNyZWF0ZSBzdG9yZSFcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5hdmlnYXRlVG9BZGRTdG9yZSgpIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9tYW5hZ2Uvc3RvcmVzL2FkZGl0aW9uLW1ldGhvZFwiXSk7XHJcbiAgfVxyXG5cclxuICBvbWl0X3NwZWNpYWxfY2hhcihldmVudDogYW55KSB7XHJcbiAgICB2YXIgaztcclxuICAgIGsgPSBldmVudC5jaGFyQ29kZTsgLy8gICAgICAgICBrID0gZXZlbnQua2V5Q29kZTsgIChCb3RoIGNhbiBiZSB1c2VkKVxyXG4gICAgcmV0dXJuIGsgPT0gOCB8fCBrID09IDMyIHx8IChrID49IDQ4ICYmIGsgPD0gNTcpO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWxsVGltZXpvbmVzKCkge1xyXG4gICAgdGhpcy50aW1lem9uZXM9bW9tZW50LnR6Lm5hbWVzKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJyb3cgbXQtMyBtYi02XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgY29sLWxnLTMgY29sLXhsLTMgY29sLXh4bC0zXCIgaWQ9XCJsZWZ0LWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtZmx1c2ggaC0xMDAgbWItMFwiPlxyXG4gICAgICAgICAgICA8IS0tYmVnaW46OkFzaWRlIGNvbnRlbnQtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWVudSBtZW51LWNvbHVtbiBtZW51LXJvdW5kZWQgbWVudS1zdGF0ZS1iZyBtZW51LXN0YXRlLXRpdGxlLXByaW1hcnkgbWVudS1zdGF0ZS1pY29uLXByaW1hcnkgbWVudS1zdGF0ZS1idWxsZXQtcHJpbWFyeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS1iZWdpbjo6TWVudSBpdGVtLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbnUtaXRlbSBteS0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1iZWdpbjo6SW5ib3gtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZW51LWxpbmtcIiBbbmdDbGFzc109XCJ7ICdhY3RpdmUnOiBzZWxlY3QgPT09ICdzdG9yZV9pbmZvJyB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXR0aW5ndmFsdWUoJ3N0b3JlX2luZm8nKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZW51LWljb25cIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMy4wODk5NSA2Ljg4MzY5TDMuMDI0MDEgNi45ODY2OUMyLjMwMzU4IDguMjU1NTcgMy4wNjEwMSA5Ljg3OTQ1IDQuNDY0NjQgMTAuMDY2MkM0LjU4NjI3IDEwLjA4MTEgNC43MDExMiAxMC4wODkyIDQuODE0NSAxMC4wODkyQzUuNTUyNTUgMTAuMDg5MiA2LjIwNTIzIDkuNzcyMjkgNi42NTk1MyA5LjI3OTE3TDcuMjEyODYgOC42Nzg1NEw3Ljc2NDMyIDkuMjgwODlDOC4yMTM2NyA5Ljc3MTcxIDguODY1MiAxMC4wODkyIDkuNjA3NzYgMTAuMDg5MkMxMC4zNDcxIDEwLjA4OTIgMTEuMDAyMiA5Ljc3MTM3IDExLjQ1MTIgOS4yODA4OUwxMi4wMDQ0IDguNjc2NjVMMTIuNTU3NiA5LjI4MDg5QzEzLjAwNjYgOS43NzEzNyAxMy42NjE3IDEwLjA4OTIgMTQuNDAxIDEwLjA4OTJDMTUuMTQwNCAxMC4wODkyIDE1Ljc5NTQgOS43NzEzNyAxNi4yNDQ1IDkuMjgwODlMMTYuNzk3NyA4LjY3NjY1TDE3LjM1MDggOS4yODA4OUMxNy43OTk5IDkuNzcxMzcgMTguNDU0OSAxMC4wODkyIDE5LjE5NDMgMTAuMDg5MkMxOS4zMDQxIDEwLjA4OTIgMTkuNDIyMyAxMC4wODExIDE5LjU0MzMgMTAuMDY2M0MyMC45NzcyIDkuODcxNjggMjEuNzM1NSA4LjE2Mzg3IDIwLjkxNTUgNi44ODQxOUMyMC45MTU0IDYuODg0MTMgMjAuOTE1NCA2Ljg4NDA3IDIwLjkxNTQgNi44ODQwMkwxOC44MDU2IDMuNTk0MjlMMTguODA1NiAzLjU5NDI5TDE4LjgwNDYgMy41OTI4MkMxOC43NTgyIDMuNTIwMDIgMTguNjY0OSAzLjQ2NDIzIDE4LjU1ODQgMy40NjQyM0g1LjQ0MzA3QzUuMzM2NSAzLjQ2NDIzIDUuMjQzMjYgMy41MjAwMiA1LjE5NjgxIDMuNTkyODJMNS4xOTYxOSAzLjU5Mzc5TDMuMDg5OTUgNi44ODM2OVpNNC44MTgxOCAxMi43NDk5QzQuNzE2NDQgMTIuNzQ5OSA0LjYxNiAxMi43NDY4IDQuNTE2OSAxMi43NDFWMTYuNjQyOFYxOC45NjQyQzQuNTE2OSAxOS44MjExIDUuMjI2NjMgMjAuNTM1NyA2LjExOTQyIDIwLjUzNTdIMTcuODgyQzE4Ljc3NDggMjAuNTM1NyAxOS40ODQ1IDE5LjgyMTEgMTkuNDg0NSAxOC45NjQyVjE2LjY0MjhWMTIuNzQxNUMxOS4zODc0IDEyLjc0NyAxOS4yODkzIDEyLjc0OTkgMTkuMTkwNiAxMi43NDk5QzE5LjAwMjIgMTIuNzQ5OSAxOC44MTU3IDEyLjczOTggMTguNjMyIDEyLjcyMDJWMTYuNjQyOFYxNy4zOTI4SDE3Ljg4Mkg2LjExOTQySDUuMzY5NDJWMTYuNjQyOFYxMi43MjFDNS4xODg2NiAxMi43NCA1LjAwNDcyIDEyLjc0OTkgNC44MTgxOCAxMi43NDk5WlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZW51LXRpdGxlIGZ3LWJvbGQgXCI+U3RvcmUgSW5mbzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tZW5kOjpJbmJveC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZW51LWl0ZW0gbXktM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tYmVnaW46OkluYm94LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVudS1saW5rXCIgW25nQ2xhc3NdPVwieyAnYWN0aXZlJzogc2VsZWN0ID09PSAnY29uZmlnJyB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXR0aW5ndmFsdWUoJ2NvbmZpZycpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtaWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzEwMTdfMjIyNzApXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTIgMTVDMTMuNjU2OSAxNSAxNSAxMy42NTY5IDE1IDEyQzE1IDEwLjM0MzEgMTMuNjU2OSA5IDEyIDlDMTAuMzQzMSA5IDkgMTAuMzQzMSA5IDEyQzkgMTMuNjU2OSAxMC4zNDMxIDE1IDEyIDE1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xOS40IDE1QzE5LjI2NjkgMTUuMzAxNiAxOS4yMjcyIDE1LjYzNjIgMTkuMjg2IDE1Ljk2MDZDMTkuMzQ0OCAxNi4yODUgMTkuNDk5NSAxNi41ODQzIDE5LjczIDE2LjgyTDE5Ljc5IDE2Ljg4QzE5Ljk3NiAxNy4wNjU3IDIwLjEyMzUgMTcuMjg2MyAyMC4yMjQxIDE3LjUyOTFDMjAuMzI0OCAxNy43NzE5IDIwLjM3NjYgMTguMDMyMiAyMC4zNzY2IDE4LjI5NUMyMC4zNzY2IDE4LjU1NzggMjAuMzI0OCAxOC44MTgxIDIwLjIyNDEgMTkuMDYwOUMyMC4xMjM1IDE5LjMwMzcgMTkuOTc2IDE5LjUyNDMgMTkuNzkgMTkuNzFDMTkuNjA0MyAxOS44OTYgMTkuMzgzNyAyMC4wNDM1IDE5LjE0MDkgMjAuMTQ0MUMxOC44OTgxIDIwLjI0NDggMTguNjM3OCAyMC4yOTY2IDE4LjM3NSAyMC4yOTY2QzE4LjExMjIgMjAuMjk2NiAxNy44NTE5IDIwLjI0NDggMTcuNjA5MSAyMC4xNDQxQzE3LjM2NjMgMjAuMDQzNSAxNy4xNDU3IDE5Ljg5NiAxNi45NiAxOS43MUwxNi45IDE5LjY1QzE2LjY2NDMgMTkuNDE5NSAxNi4zNjUgMTkuMjY0OCAxNi4wNDA2IDE5LjIwNkMxNS43MTYyIDE5LjE0NzIgMTUuMzgxNiAxOS4xODY5IDE1LjA4IDE5LjMyQzE0Ljc4NDIgMTkuNDQ2OCAxNC41MzIgMTkuNjU3MiAxNC4zNTQzIDE5LjkyNTVDMTQuMTc2NiAyMC4xOTM4IDE0LjA4MTMgMjAuNTA4MiAxNC4wOCAyMC44M1YyMUMxNC4wOCAyMS41MzA0IDEzLjg2OTMgMjIuMDM5MSAxMy40OTQyIDIyLjQxNDJDMTMuMTE5MSAyMi43ODkzIDEyLjYxMDQgMjMgMTIuMDggMjNDMTEuNTQ5NiAyMyAxMS4wNDA5IDIyLjc4OTMgMTAuNjY1OCAyMi40MTQyQzEwLjI5MDcgMjIuMDM5MSAxMC4wOCAyMS41MzA0IDEwLjA4IDIxVjIwLjkxQzEwLjA3MjMgMjAuNTc5IDkuOTY1MTIgMjAuMjU4IDkuNzcyNTEgMTkuOTg4N0M5LjU3OTkgMTkuNzE5NCA5LjMxMDc0IDE5LjUxNDMgOSAxOS40QzguNjk4MzggMTkuMjY2OSA4LjM2MzgxIDE5LjIyNzIgOC4wMzk0MSAxOS4yODZDNy43MTUwMiAxOS4zNDQ4IDcuNDE1NjggMTkuNDk5NSA3LjE4IDE5LjczTDcuMTIgMTkuNzlDNi45MzQyNSAxOS45NzYgNi43MTM2OCAyMC4xMjM1IDYuNDcwODggMjAuMjI0MUM2LjIyODA4IDIwLjMyNDggNS45Njc4MyAyMC4zNzY2IDUuNzA1IDIwLjM3NjZDNS40NDIxNyAyMC4zNzY2IDUuMTgxOTIgMjAuMzI0OCA0LjkzOTEyIDIwLjIyNDFDNC42OTYzMiAyMC4xMjM1IDQuNDc1NzUgMTkuOTc2IDQuMjkgMTkuNzlDNC4xMDQwNSAxOS42MDQzIDMuOTU2NTMgMTkuMzgzNyAzLjg1NTg4IDE5LjE0MDlDMy43NTUyMyAxOC44OTgxIDMuNzAzNDMgMTguNjM3OCAzLjcwMzQzIDE4LjM3NUMzLjcwMzQzIDE4LjExMjIgMy43NTUyMyAxNy44NTE5IDMuODU1ODggMTcuNjA5MUMzLjk1NjUzIDE3LjM2NjMgNC4xMDQwNSAxNy4xNDU3IDQuMjkgMTYuOTZMNC4zNSAxNi45QzQuNTgwNTQgMTYuNjY0MyA0LjczNTE5IDE2LjM2NSA0Ljc5NCAxNi4wNDA2QzQuODUyODIgMTUuNzE2MiA0LjgxMzEyIDE1LjM4MTYgNC42OCAxNS4wOEM0LjU1MzI0IDE0Ljc4NDIgNC4zNDI3NiAxNC41MzIgNC4wNzQ0NyAxNC4zNTQzQzMuODA2MTggMTQuMTc2NiAzLjQ5MTc5IDE0LjA4MTMgMy4xNyAxNC4wOEgzQzIuNDY5NTcgMTQuMDggMS45NjA4NiAxMy44NjkzIDEuNTg1NzkgMTMuNDk0MkMxLjIxMDcxIDEzLjExOTEgMSAxMi42MTA0IDEgMTIuMDhDMSAxMS41NDk2IDEuMjEwNzEgMTEuMDQwOSAxLjU4NTc5IDEwLjY2NThDMS45NjA4NiAxMC4yOTA3IDIuNDY5NTcgMTAuMDggMyAxMC4wOEgzLjA5QzMuNDIwOTkgMTAuMDcyMyAzLjc0MiA5Ljk2NTEyIDQuMDExMyA5Ljc3MjUxQzQuMjgwNTkgOS41Nzk5IDQuNDg1NzIgOS4zMTA3NCA0LjYgOUM0LjczMzEyIDguNjk4MzggNC43NzI4MiA4LjM2MzgxIDQuNzE0IDguMDM5NDFDNC42NTUxOSA3LjcxNTAyIDQuNTAwNTQgNy40MTU2OCA0LjI3IDcuMThMNC4yMSA3LjEyQzQuMDI0MDUgNi45MzQyNSAzLjg3NjUzIDYuNzEzNjggMy43NzU4OCA2LjQ3MDg4QzMuNjc1MjMgNi4yMjgwOCAzLjYyMzQzIDUuOTY3ODMgMy42MjM0MyA1LjcwNUMzLjYyMzQzIDUuNDQyMTcgMy42NzUyMyA1LjE4MTkyIDMuNzc1ODggNC45MzkxMkMzLjg3NjUzIDQuNjk2MzIgNC4wMjQwNSA0LjQ3NTc1IDQuMjEgNC4yOUM0LjM5NTc1IDQuMTA0MDUgNC42MTYzMiAzLjk1NjUzIDQuODU5MTIgMy44NTU4OEM1LjEwMTkyIDMuNzU1MjMgNS4zNjIxNyAzLjcwMzQzIDUuNjI1IDMuNzAzNDNDNS44ODc4MyAzLjcwMzQzIDYuMTQ4MDggMy43NTUyMyA2LjM5MDg4IDMuODU1ODhDNi42MzM2OCAzLjk1NjUzIDYuODU0MjUgNC4xMDQwNSA3LjA0IDQuMjlMNy4xIDQuMzVDNy4zMzU2OCA0LjU4MDU0IDcuNjM1MDIgNC43MzUxOSA3Ljk1OTQxIDQuNzk0QzguMjgzODEgNC44NTI4MiA4LjYxODM4IDQuODEzMTIgOC45MiA0LjY4SDlDOS4yOTU3NyA0LjU1MzI0IDkuNTQ4MDIgNC4zNDI3NiA5LjcyNTY5IDQuMDc0NDdDOS45MDMzNyAzLjgwNjE4IDkuOTk4NzIgMy40OTE3OSAxMCAzLjE3VjNDMTAgMi40Njk1NyAxMC4yMTA3IDEuOTYwODYgMTAuNTg1OCAxLjU4NTc5QzEwLjk2MDkgMS4yMTA3MSAxMS40Njk2IDEgMTIgMUMxMi41MzA0IDEgMTMuMDM5MSAxLjIxMDcxIDEzLjQxNDIgMS41ODU3OUMxMy43ODkzIDEuOTYwODYgMTQgMi40Njk1NyAxNCAzVjMuMDlDMTQuMDAxMyAzLjQxMTc5IDE0LjA5NjYgMy43MjYxOCAxNC4yNzQzIDMuOTk0NDdDMTQuNDUyIDQuMjYyNzYgMTQuNzA0MiA0LjQ3MzI0IDE1IDQuNkMxNS4zMDE2IDQuNzMzMTIgMTUuNjM2MiA0Ljc3MjgyIDE1Ljk2MDYgNC43MTRDMTYuMjg1IDQuNjU1MTkgMTYuNTg0MyA0LjUwMDU0IDE2LjgyIDQuMjdMMTYuODggNC4yMUMxNy4wNjU3IDQuMDI0MDUgMTcuMjg2MyAzLjg3NjUzIDE3LjUyOTEgMy43NzU4OEMxNy43NzE5IDMuNjc1MjMgMTguMDMyMiAzLjYyMzQzIDE4LjI5NSAzLjYyMzQzQzE4LjU1NzggMy42MjM0MyAxOC44MTgxIDMuNjc1MjMgMTkuMDYwOSAzLjc3NTg4QzE5LjMwMzcgMy44NzY1MyAxOS41MjQzIDQuMDI0MDUgMTkuNzEgNC4yMUMxOS44OTYgNC4zOTU3NSAyMC4wNDM1IDQuNjE2MzIgMjAuMTQ0MSA0Ljg1OTEyQzIwLjI0NDggNS4xMDE5MiAyMC4yOTY2IDUuMzYyMTcgMjAuMjk2NiA1LjYyNUMyMC4yOTY2IDUuODg3ODMgMjAuMjQ0OCA2LjE0ODA4IDIwLjE0NDEgNi4zOTA4OEMyMC4wNDM1IDYuNjMzNjggMTkuODk2IDYuODU0MjUgMTkuNzEgNy4wNEwxOS42NSA3LjFDMTkuNDE5NSA3LjMzNTY4IDE5LjI2NDggNy42MzUwMiAxOS4yMDYgNy45NTk0MUMxOS4xNDcyIDguMjgzODEgMTkuMTg2OSA4LjYxODM4IDE5LjMyIDguOTJWOUMxOS40NDY4IDkuMjk1NzcgMTkuNjU3MiA5LjU0ODAyIDE5LjkyNTUgOS43MjU2OUMyMC4xOTM4IDkuOTAzMzcgMjAuNTA4MiA5Ljk5ODcyIDIwLjgzIDEwSDIxQzIxLjUzMDQgMTAgMjIuMDM5MSAxMC4yMTA3IDIyLjQxNDIgMTAuNTg1OEMyMi43ODkzIDEwLjk2MDkgMjMgMTEuNDY5NiAyMyAxMkMyMyAxMi41MzA0IDIyLjc4OTMgMTMuMDM5MSAyMi40MTQyIDEzLjQxNDJDMjIuMDM5MSAxMy43ODkzIDIxLjUzMDQgMTQgMjEgMTRIMjAuOTFDMjAuNTg4MiAxNC4wMDEzIDIwLjI3MzggMTQuMDk2NiAyMC4wMDU1IDE0LjI3NDNDMTkuNzM3MiAxNC40NTIgMTkuNTI2OCAxNC43MDQyIDE5LjQgMTVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTAxN18yMjI3MFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVudS10aXRsZSBmdy1ib2xkIFwiPlN0b3JlIENvbmZpZ3VyYXRpb248L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLWVuZDo6SW5ib3gtLT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLWVuZDo6TWVudSBpdGVtLS0+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tYmVnaW46Ok1lbnUgaXRlbS0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZW51LWl0ZW0gbXktM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tYmVnaW46OkRyYWZ0LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVudS1saW5rXCIgW25nQ2xhc3NdPVwieyAnYWN0aXZlJzogc2VsZWN0ID09PSAnY29udGFjdCcgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2V0dGluZ3ZhbHVlKCdjb250YWN0JylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVudS1pY29uXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE3IDIxVjE5QzE3IDE3LjkzOTEgMTYuNTc4NiAxNi45MjE3IDE1LjgyODQgMTYuMTcxNkMxNS4wNzgzIDE1LjQyMTQgMTQuMDYwOSAxNSAxMyAxNUg1QzMuOTM5MTMgMTUgMi45MjE3MiAxNS40MjE0IDIuMTcxNTcgMTYuMTcxNkMxLjQyMTQzIDE2LjkyMTcgMSAxNy45MzkxIDEgMTlWMjFNMjMgMjFWMTlDMjIuOTk5MyAxOC4xMTM3IDIyLjcwNDQgMTcuMjUyOCAyMi4xNjE0IDE2LjU1MjNDMjEuNjE4NCAxNS44NTE5IDIwLjg1ODEgMTUuMzUxNiAyMCAxNS4xM00xNiAzLjEzQzE2Ljg2MDQgMy4zNTAzIDE3LjYyMyAzLjg1MDcgMTguMTY3NiA0LjU1MjMxQzE4LjcxMjIgNS4yNTM5MiAxOS4wMDc4IDYuMTE2ODMgMTkuMDA3OCA3LjAwNUMxOS4wMDc4IDcuODkzMTcgMTguNzEyMiA4Ljc1NjA4IDE4LjE2NzYgOS40NTc2OUMxNy42MjMgMTAuMTU5MyAxNi44NjA0IDEwLjY1OTcgMTYgMTAuODhNMTMgN0MxMyA5LjIwOTE0IDExLjIwOTEgMTEgOSAxMUM2Ljc5MDg2IDExIDUgOS4yMDkxNCA1IDdDNSA0Ljc5MDg2IDYuNzkwODYgMyA5IDNDMTEuMjA5MSAzIDEzIDQuNzkwODYgMTMgN1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVudS10aXRsZSBmdy1ib2xkIFwiPkNvbnRhY3QgRGV0YWlsczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tZW5kOjpEcmFmdC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS1lbmQ6Ok1lbnUgaXRlbS0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS1iZWdpbjo6TWVudSBpdGVtLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbnUtaXRlbSBteS0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1iZWdpbjo6VHJhc2gtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZW51LWxpbmtcIiBbbmdDbGFzc109XCJ7ICdhY3RpdmUnOiBzZWxlY3QgPT09ICdyZXZpZXcnfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2V0dGluZ3ZhbHVlKCdyZXZpZXcnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZW51LWljb25cIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk02IDFDNS4yMDQzNSAxIDQuNDQxMjkgMS4zMTYwNyAzLjg3ODY4IDEuODc4NjhDMy4zMTYwNyAyLjQ0MTI5IDMgMy4yMDQzNSAzIDRWMjBDMyAyMC43OTU3IDMuMzE2MDcgMjEuNTU4NyAzLjg3ODY4IDIyLjEyMTNDNC40NDEyOSAyMi42ODM5IDUuMjA0MzUgMjMgNiAyM0gxMkgxOEMxOC43OTU3IDIzIDE5LjU1ODcgMjIuNjgzOSAyMC4xMjEzIDIyLjEyMTNDMjAuNjgzOSAyMS41NTg3IDIxIDIwLjc5NTcgMjEgMjBWMTYuNDIwOEwxOSAxOC40MjA4VjIwQzE5IDIwLjI2NTIgMTguODk0NiAyMC41MTk2IDE4LjcwNzEgMjAuNzA3MUMxOC41MTk2IDIwLjg5NDYgMTguMjY1MiAyMSAxOCAyMUgxNi40MjA4TDE1LjMyODYgMjIuMDkyMkwxMiAyM0wxMi41NDU1IDIxSDZDNS43MzQ3OCAyMSA1LjQ4MDQzIDIwLjg5NDYgNS4yOTI4OSAyMC43MDcxQzUuMTA1MzYgMjAuNTE5NiA1IDIwLjI2NTIgNSAyMFY0QzUgMy43MzQ3OCA1LjEwNTM2IDMuNDgwNDMgNS4yOTI4OSAzLjI5Mjg5QzUuNDgwNDMgMy4xMDUzNiA1LjczNDc4IDMgNiAzSDEyVjlDMTIgOS41NTIyOCAxMi40NDc3IDEwIDEzIDEwSDE5VjEzLjU3OTJMMjEgMTEuNTc5MlY5QzIxIDguNzM0NzggMjAuODk0NiA4LjQ4MDQzIDIwLjcwNzEgOC4yOTI4OUwxMy43MDcxIDEuMjkyODlDMTMuNTE5NiAxLjEwNTM2IDEzLjI2NTIgMSAxMyAxSDZaTTE3LjU4NTggOEwxNCA0LjQxNDIxVjhIMTcuNTg1OFpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTIwLjA3NzkgMTEuNTAxNEMyMC4yMzY5IDExLjM0MjQgMjAuNDI1NiAxMS4yMTYzIDIwLjYzMzMgMTEuMTMwM0MyMC44NDA5IDExLjA0NDMgMjEuMDYzNSAxMSAyMS4yODgzIDExQzIxLjUxMzEgMTEgMjEuNzM1NyAxMS4wNDQzIDIxLjk0MzQgMTEuMTMwM0MyMi4xNTEgMTEuMjE2MyAyMi4zMzk3IDExLjM0MjQgMjIuNDk4NyAxMS41MDE0QzIyLjY1NzYgMTEuNjYwMyAyMi43ODM3IDExLjg0OSAyMi44Njk4IDEyLjA1NjdDMjIuOTU1OCAxMi4yNjQ0IDIzLjAwMDEgMTIuNDg3IDIzLjAwMDEgMTIuNzExN0MyMy4wMDAxIDEyLjkzNjUgMjIuOTU1OCAxMy4xNTkxIDIyLjg2OTggMTMuMzY2OEMyMi43ODM3IDEzLjU3NDUgMjIuNjU3NiAxMy43NjMyIDIyLjQ5ODcgMTMuOTIyMUwxNS4zMjg2IDIyLjA5MjNMMTIgMjMuMDAwMUwxMi45MDc4IDE5LjY3MTVMMjAuMDc3OSAxMS41MDE0WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtdGl0bGUgZnctYm9sZCBcIj5SZXZpZXcgJiBTdWJtaXQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLWVuZDo6VHJhc2gtLT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tZW5kOjpNZW51IGl0ZW0tLT5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tZW5kOjpNZW51LS0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOSBjb2wtbGctOSBjb2wteGwtOSBjb2wteHhsLTlcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLWJvdHRvbS0wXCI+XHJcbiAgICAgICAgICAgICAgICA8aDFcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBhZ2UtaGVhZGluZyBkLWZsZXggdGV4dC1kYXJrIGZ3LWJvbGQgZnMtMiBmbGV4LWNvbHVtbiAganVzdGlmeS1jb250ZW50LWNlbnRlciBteS0wIHN1Yi1oZWFkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gICpuZ0lmPVwic2VsZWN0ID09PSAnc3RvcmVfaW5mbydcIj5FbnRlciBZb3VyIFN0b3JlIERldGFpbHM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzZWxlY3QgPT09ICdjb25maWcnXCI+RW50ZXIgWW91ciBTdG9yZSBDb25maWd1cmF0aW9uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0ID09PSAnY29udGFjdCdcIj5FbnRlciBQcmltYXJ5IFNQT0MgZGV0YWlsczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNlbGVjdCA9PT0gJ3JldmlldydcIj5SZXZpZXcgJiBzdWJtaXQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2gxPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBbaGlkZGVuXT1cInNlbGVjdCAhPT0gJ2NvbnRhY3QnXCIgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJhZGRBbHRTcG9jKClcIiBjbGFzcz1cImJ0biBidG4tbGlnaHQtcHJpbWFyeTEgYnRuLXNtXCI+PHN2ZyBjbGFzcz1cIm1lLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTggMTRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTIuNyAzLjVDMi43IDIuNTcxNzQgMy4wNzkyOCAxLjY4MTUgMy43NTQ0MiAxLjAyNTEzQzQuNDI5NTUgMC4zNjg3NDkgNS4zNDUyMiAwIDYuMyAwQzcuMjU0NzggMCA4LjE3MDQ1IDAuMzY4NzQ5IDguODQ1NTggMS4wMjUxM0M5LjUyMDcyIDEuNjgxNSA5LjkgMi41NzE3NCA5LjkgMy41QzkuOSA0LjQyODI2IDkuNTIwNzIgNS4zMTg1IDguODQ1NTggNS45NzQ4N0M4LjE3MDQ1IDYuNjMxMjUgNy4yNTQ3OCA3IDYuMyA3QzUuMzQ1MjIgNyA0LjQyOTU1IDYuNjMxMjUgMy43NTQ0MiA1Ljk3NDg3QzMuMDc5MjggNS4zMTg1IDIuNyA0LjQyODI2IDIuNyAzLjVaTTAgMTMuMTg3OUMwIDEwLjQ5NDUgMi4yNDQzNyA4LjMxMjUgNS4wMTQ2OSA4LjMxMjVINy41ODUzMUMxMC4zNTU2IDguMzEyNSAxMi42IDEwLjQ5NDUgMTIuNiAxMy4xODc5QzEyLjYgMTMuNjM2MyAxMi4yMjU5IDE0IDExLjc2NDcgMTRIMC44MzUzMTJDMC4zNzQwNjMgMTQgMCAxMy42MzYzIDAgMTMuMTg3OVpNMTQuMTc1IDguNTMxMjVWNi43ODEyNUgxMi4zNzVDMTIuMDAwOSA2Ljc4MTI1IDExLjcgNi40ODg2NyAxMS43IDYuMTI1QzExLjcgNS43NjEzMyAxMi4wMDA5IDUuNDY4NzUgMTIuMzc1IDUuNDY4NzVIMTQuMTc1VjMuNzE4NzVDMTQuMTc1IDMuMzU1MDggMTQuNDc1OSAzLjA2MjUgMTQuODUgMy4wNjI1QzE1LjIyNDEgMy4wNjI1IDE1LjUyNSAzLjM1NTA4IDE1LjUyNSAzLjcxODc1VjUuNDY4NzVIMTcuMzI1QzE3LjY5OTEgNS40Njg3NSAxOCA1Ljc2MTMzIDE4IDYuMTI1QzE4IDYuNDg4NjcgMTcuNjk5MSA2Ljc4MTI1IDE3LjMyNSA2Ljc4MTI1SDE1LjUyNVY4LjUzMTI1QzE1LjUyNSA4Ljg5NDkyIDE1LjIyNDEgOS4xODc1IDE0Ljg1IDkuMTg3NUMxNC40NzU5IDkuMTg3NSAxNC4xNzUgOC44OTQ5MiAxNC4xNzUgOC41MzEyNVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMDBBM0ZGXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+QWRkIEFsdGVybmF0ZSBTUE9DPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHQtMVwiPlxyXG4gICAgICAgICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJzdG9yZUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIFN0b3JlIEluZm8gU3RhcnQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBbaGlkZGVuXT1cInNlbGVjdCAhPT0gJ3N0b3JlX2luZm8nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTYgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJzdG9yZU5hbWVcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5TdG9yZSBOYW1lPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwic3RvcmVOYW1lXCIgZm9ybUNvbnRyb2xOYW1lPVwic3RvcmVOYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6c3RvcmVGb3JtLmdldCgnc3RvcmVOYW1lJyk/LmludmFsaWQgJiYgc3RvcmVGb3JtLmdldCgnc3RvcmVOYW1lJyk/LnRvdWNoZWR9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3RvcmVGb3JtLmdldCgnc3RvcmVOYW1lJyk/LnRvdWNoZWQgJiYgc3RvcmVGb3JtLmdldCgnc3RvcmVOYW1lJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JlIE5hbWUgaXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInN0b3JlQ29kZVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlN0b3JlIENvZGUgLyBSZWYgQ29kZSAob3B0aW9uYWwpPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwic3RvcmVDb2RlXCIgZm9ybUNvbnRyb2xOYW1lPVwic3RvcmVDb2RlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTYgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJidXNpbmVzc1R5cGVcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5CdXNpbmVzcyBUeXBlPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1zZWxlY3RcIiBpZD1cImJ1c2luZXNzVHlwZVwiIGZvcm1Db250cm9sTmFtZT1cImJ1c2luZXNzVHlwZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiQ09DT1wiPkNPQ088L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIkNPRk9cIj5DT0ZPPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJGT0ZPXCI+Rk9GTzwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiRk9DT1wiPkZPQ088L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInN0b3JlVHlwZVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlN0b3JlIFR5cGU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdFwiIGlkPVwic3RvcmVUeXBlXCIgZm9ybUNvbnRyb2xOYW1lPVwic3RvcmVUeXBlX3R5cGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIkhpZ2ggU3RyZWV0XCI+SGlnaCBTdHJlZXQ8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIk1hbGwgU3RvcmVcIj5NYWxsIFN0b3JlPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJLaW9za1wiPktpb3NrPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgbWItNVwiICpuZ0lmPVwic3RvcmVGb3JtLmdldCgnc3RvcmVUeXBlX3R5cGUnKT8udmFsdWUgPT09ICdNYWxsIFN0b3JlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJtYWxsTmFtZVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkVudGVyIE1hbGwgTmFtZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cIm1hbGxOYW1lXCIgZm9ybUNvbnRyb2xOYW1lPVwic3RvcmVUeXBlX25hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzpzdG9yZUZvcm0uZ2V0KCdzdG9yZVR5cGVfbmFtZScpPy5pbnZhbGlkICYmIHN0b3JlRm9ybS5nZXQoJ3N0b3JlVHlwZV9uYW1lJyk/LnRvdWNoZWR9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3RvcmVGb3JtLmdldCgnc3RvcmVUeXBlX25hbWUnKT8udG91Y2hlZCAmJiBzdG9yZUZvcm0uZ2V0KCdzdG9yZVR5cGVfbmFtZScpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWxsIE5hbWUgaXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImFkZHJlc3NcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5BZGRyZXNzIExpbmU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJhZGRyZXNzXCIgZm9ybUNvbnRyb2xOYW1lPVwiYWRkcmVzc1wiICNwbGFjZXNSZWY9XCJuZ3gtcGxhY2VzXCIgbmd4LWdwLWF1dG9jb21wbGV0ZSAob25BZGRyZXNzQ2hhbmdlKT1cImhhbmRsZUFkZHJlc3NDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOnN0b3JlRm9ybS5nZXQoJ2FkZHJlc3MnKT8uaW52YWxpZCAmJiBzdG9yZUZvcm0uZ2V0KCdhZGRyZXNzJyk/LnRvdWNoZWR9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3RvcmVGb3JtLmdldCgnYWRkcmVzcycpPy50b3VjaGVkICYmIHN0b3JlRm9ybS5nZXQoJ2FkZHJlc3MnKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkcmVzcyBpcyByZXF1aXJlZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJjb3VudHJ5XCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+Q291bnRyeTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImNvdW50cnlcIiBmb3JtQ29udHJvbE5hbWU9XCJjb3VudHJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6c3RvcmVGb3JtLmdldCgnY291bnRyeScpPy5pbnZhbGlkICYmIHN0b3JlRm9ybS5nZXQoJ2NvdW50cnknKT8udG91Y2hlZH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzdG9yZUZvcm0uZ2V0KCdjb3VudHJ5Jyk/LnRvdWNoZWQgJiYgc3RvcmVGb3JtLmdldCgnY291bnRyeScpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3VudHJ5IGlzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInN0YXRlXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+U3RhdGU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJzdGF0ZVwiIGZvcm1Db250cm9sTmFtZT1cInN0YXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6c3RvcmVGb3JtLmdldCgnc3RhdGUnKT8uaW52YWxpZCAmJiBzdG9yZUZvcm0uZ2V0KCdzdGF0ZScpPy50b3VjaGVkfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInN0b3JlRm9ybS5nZXQoJ3N0YXRlJyk/LnRvdWNoZWQgJiYgc3RvcmVGb3JtLmdldCgnc3RhdGUnKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGUgaXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiY2l0eVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkNpdHkgLyBUb3duPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiY2l0eVwiIGZvcm1Db250cm9sTmFtZT1cImNpdHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzpzdG9yZUZvcm0uZ2V0KCdjaXR5Jyk/LmludmFsaWQgJiYgc3RvcmVGb3JtLmdldCgnY2l0eScpPy50b3VjaGVkfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInN0b3JlRm9ybS5nZXQoJ2NpdHknKT8udG91Y2hlZCAmJiBzdG9yZUZvcm0uZ2V0KCdjaXR5Jyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENpdHkgaXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwicGluY29kZVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlBpbiAvIFppcCBDb2RlPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwicGluY29kZVwiIGZvcm1Db250cm9sTmFtZT1cInBpbmNvZGVcIiBtYXhsZW5ndGg9XCI2XCIgbWlubGVuZ3RoPVwiNlwiIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6c3RvcmVGb3JtLmdldCgncGluY29kZScpPy5pbnZhbGlkICYmIHN0b3JlRm9ybS5nZXQoJ3BpbmNvZGUnKT8udG91Y2hlZH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzdG9yZUZvcm0uZ2V0KCdwaW5jb2RlJyk/LnRvdWNoZWQgJiYgc3RvcmVGb3JtLmdldCgncGluY29kZScpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQaW5jb2RlIGlzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgdGV4dC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBteC0zIGJ0bi1vdXRsaW5lIGJ0bi1vdXRsaW5lLWRlZmF1bHQgcm91bmRlZC0zXCIgKGNsaWNrKT1cIm5hdmlnYXRlVG9BZGRTdG9yZSgpXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ29Ub0NvbmZpZ3VyYXRpb24oKVwiPk5leHQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIFN0b3JlIEluZm8gRW5kIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIFN0b3JlIENvbmZpZ3VyYXRpb24gU3RhcnQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBbaGlkZGVuXT1cInNlbGVjdCAhPT0gJ2NvbmZpZydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwidGltZVpvbmVcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5UaW1lIFpvbmU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cInRpbWVab25lXCIgZm9ybUNvbnRyb2xOYW1lPVwidGltZVpvbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzpzdG9yZUZvcm0uZ2V0KCd0aW1lWm9uZScpPy5pbnZhbGlkICYmIHN0b3JlRm9ybS5nZXQoJ3RpbWVab25lJyk/LnRvdWNoZWR9XCI+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1zZWxlY3RcIiBpZD1cInRpbWVab25lXCIgZm9ybUNvbnRyb2xOYW1lPVwidGltZVpvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHRpbWV6b25lIG9mIHRpbWV6b25lc1wiIFt2YWx1ZV09XCJ0aW1lem9uZVwiPnt7IHRpbWV6b25lIH19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInN0b3JlRm9ybS5nZXQoJ3RpbWVab25lJyk/LnRvdWNoZWQgJiYgc3RvcmVGb3JtLmdldCgndGltZVpvbmUnKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGltZSBab25lIGlzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNvbC1tZC02IG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwibm9PZkNhbWVyYXNcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5ObyBvZiBDYW1lcmFzPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwibm9PZkNhbWVyYXNcIiBmb3JtQ29udHJvbE5hbWU9XCJjYW1lcmFzXCIgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzpzdG9yZUZvcm0uZ2V0KCdjYW1lcmFzJyk/LmludmFsaWQgJiYgc3RvcmVGb3JtLmdldCgnY2FtZXJhcycpPy50b3VjaGVkfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInN0b3JlRm9ybS5nZXQoJ2NhbWVyYXMnKT8udG91Y2hlZCAmJiBzdG9yZUZvcm0uZ2V0KCdjYW1lcmFzJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vIG9mIENhbWVyYXMgaXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInN0b3JlT3BlblRpbWVcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5TdG9yZSBPcGVuIFRpbWU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGltZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJzdG9yZU9wZW5UaW1lXCIgZm9ybUNvbnRyb2xOYW1lPVwib3BlblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOnN0b3JlRm9ybS5nZXQoJ29wZW4nKT8uaW52YWxpZCAmJiBzdG9yZUZvcm0uZ2V0KCdvcGVuJyk/LnRvdWNoZWR9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3RvcmVGb3JtLmdldCgnb3BlbicpPy50b3VjaGVkICYmIHN0b3JlRm9ybS5nZXQoJ29wZW4nKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RvcmUgT3BlbiBUaW1lIGlzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInN0b3JlQ2xvc2VUaW1lXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+U3RvcmUgQ2xvc2UgVGltZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0aW1lXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cInN0b3JlQ2xvc2VUaW1lXCIgZm9ybUNvbnRyb2xOYW1lPVwiY2xvc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzpzdG9yZUZvcm0uZ2V0KCdjbG9zZScpPy5pbnZhbGlkICYmIHN0b3JlRm9ybS5nZXQoJ2Nsb3NlJyk/LnRvdWNoZWQgfHwgc3RvcmVGb3JtLmhhc0Vycm9yKCdpbnZhbGlkVGltZVJhbmdlJyl9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3RvcmVGb3JtLmdldCgnY2xvc2UnKT8udG91Y2hlZCAmJiBzdG9yZUZvcm0uZ2V0KCdjbG9zZScpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdG9yZSBDbG9zZSBUaW1lIGlzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwibXktMlwiICpuZ0lmPVwic3RvcmVGb3JtLmhhc0Vycm9yKCdpbnZhbGlkVGltZVJhbmdlJykgJiYgKHN0b3JlRm9ybS5nZXQoJ29wZW4nKT8udG91Y2hlZCB8fCBzdG9yZUZvcm0uZ2V0KCdjbG9zZScpPy50b3VjaGVkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcGVuaW5nIHRpbWUgbXVzdCBiZSBiZWZvcmUgY2xvc2luZyB0aW1lLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXQtMjBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgdGV4dC1lbmQgbXQtMTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBteC0zIGJ0bi1vdXRsaW5lIGJ0bi1vdXRsaW5lLWRlZmF1bHQgcm91bmRlZC0zXCIgKGNsaWNrKT1cIm5hdmlnYXRlVG9BZGRTdG9yZSgpXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwiZ29Ub0NvbnRhY3QoKVwiPk5leHQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIFN0b3JlIENvbmZpZ3VyYXRpb24gRW5kIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIFN0b3JlIENvbnRhY3QgU3RhcnQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBbaGlkZGVuXT1cInNlbGVjdCAhPT0gJ2NvbnRhY3QnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgZm9ybUFycmF5TmFtZT1cInNwb2NEZXRhaWxzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3BvY0RldGFpbCBvZiBnZXRzcG9jRGV0YWlsc0NvbnRyb2xzKCk7IGxldCBpID0gaW5kZXhcIiBbZm9ybUdyb3VwTmFtZV09XCJpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpIT09MFwiIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBteS02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZ3LWJvbGQgZnMtNFwiPkFsdGVybmF0ZSBTUE9DIHt7aX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIChjbGljayk9XCJkZWxBbHRTcG9jKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiB2aWV3Qm94PVwiMCAwIDQwIDQwXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBmaWx0ZXI9XCJ1cmwoI2ZpbHRlcjBfZF8yMjUwXzMwNjUwKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyXCIgeT1cIjFcIiB3aWR0aD1cIjM2XCIgaGVpZ2h0PVwiMzZcIiByeD1cIjhcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyLjVcIiB5PVwiMS41XCIgd2lkdGg9XCIzNVwiIGhlaWdodD1cIjM1XCIgcng9XCI3LjVcIiBzdHJva2U9XCIjRDBENUREXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEyLjUgMTMuOTk5OEgxNC4xNjY3TTE0LjE2NjcgMTMuOTk5OEgyNy41TTE0LjE2NjcgMTMuOTk5OFYyNS42NjY1QzE0LjE2NjcgMjYuMTA4NSAxNC4zNDIzIDI2LjUzMjUgMTQuNjU0OCAyNi44NDVDMTQuOTY3NCAyNy4xNTc2IDE1LjM5MTMgMjcuMzMzMiAxNS44MzMzIDI3LjMzMzJIMjQuMTY2N0MyNC42MDg3IDI3LjMzMzIgMjUuMDMyNiAyNy4xNTc2IDI1LjM0NTIgMjYuODQ1QzI1LjY1NzcgMjYuNTMyNSAyNS44MzMzIDI2LjEwODUgMjUuODMzMyAyNS42NjY1VjEzLjk5OThIMTQuMTY2N1pNMTYuNjY2NyAxMy45OTk4VjEyLjMzMzJDMTYuNjY2NyAxMS44OTExIDE2Ljg0MjMgMTEuNDY3MiAxNy4xNTQ4IDExLjE1NDdDMTcuNDY3NCAxMC44NDIxIDE3Ljg5MTMgMTAuNjY2NSAxOC4zMzMzIDEwLjY2NjVIMjEuNjY2N0MyMi4xMDg3IDEwLjY2NjUgMjIuNTMyNiAxMC44NDIxIDIyLjg0NTIgMTEuMTU0N0MyMy4xNTc3IDExLjQ2NzIgMjMuMzMzMyAxMS44OTExIDIzLjMzMzMgMTIuMzMzMlYxMy45OTk4TTE4LjMzMzMgMTguMTY2NVYyMy4xNjY1TTIxLjY2NjcgMTguMTY2NVYyMy4xNjY1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbHRlciBpZD1cImZpbHRlcjBfZF8yMjUwXzMwNjUwXCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclVuaXRzPVwidXNlclNwYWNlT25Vc2VcIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9XCJzUkdCXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUZsb29kIGZsb29kLW9wYWNpdHk9XCIwXCIgcmVzdWx0PVwiQmFja2dyb3VuZEltYWdlRml4XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPVwiMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDBcIiByZXN1bHQ9XCJoYXJkQWxwaGFcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVPZmZzZXQgZHk9XCIxXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj1cIjFcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz1cIjAgMCAwIDAgMC4wNjI3NDUxIDAgMCAwIDAgMC4wOTQxMTc2IDAgMCAwIDAgMC4xNTY4NjMgMCAwIDAgMC4wNSAwXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cIkJhY2tncm91bmRJbWFnZUZpeFwiIHJlc3VsdD1cImVmZmVjdDFfZHJvcFNoYWRvd18yMjUwXzMwNjUwXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluPVwiU291cmNlR3JhcGhpY1wiIGluMj1cImVmZmVjdDFfZHJvcFNoYWRvd18yMjUwXzMwNjUwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdD1cInNoYXBlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZpbHRlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImNvbnRhY3ROYW1lXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+TmFtZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiY29udGFjdE5hbWVcIiBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzpzcG9jRGV0YWlsLmdldCgnbmFtZScpPy5pbnZhbGlkICYmIHNwb2NEZXRhaWwuZ2V0KCduYW1lJyk/LnRvdWNoZWR9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNwb2NEZXRhaWwuZ2V0KCduYW1lJyk/LnRvdWNoZWQgJiYgc3BvY0RldGFpbC5nZXQoJ25hbWUnKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lIGlzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiY29udGFjdEVtYWlsXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+RW1haWw8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJlbWFpbFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJjb250YWN0RW1haWxcIiBmb3JtQ29udHJvbE5hbWU9XCJlbWFpbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybj1cIl4oW2EtekEtWjAtOV9cXC1cXC5dKylAW2EtejAtOS1dKyhcXC5bYS16MC05LV0rKSooXFwuW2EtekEtWl17MiwzfSkkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzpzcG9jRGV0YWlsLmdldCgnZW1haWwnKT8uaW52YWxpZCAmJiBzcG9jRGV0YWlsLmdldCgnZW1haWwnKT8udG91Y2hlZH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzcG9jRGV0YWlsLmdldCgnZW1haWwnKT8udG91Y2hlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cInNwb2NEZXRhaWwuZ2V0KCdlbWFpbCcpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbWFpbCBpcyByZXF1aXJlZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cInNwb2NEZXRhaWwuZ2V0KCdlbWFpbCcpPy5oYXNFcnJvcignbWlubGVuZ3RoJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1haWwgbXVzdCBiZSBhdCBsZWFzdCAzIGNoYXJhY3RlcnMgbG9uZy5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cInNwb2NEZXRhaWwuZ2V0KCdlbWFpbCcpPy5oYXNFcnJvcignbWF4bGVuZ3RoJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1haWwgbXVzdCBiZSBub3QgbW9yZSB0aGFuIDEwMCBjaGFyYWN0ZXJzIGxvbmcuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJjb250YWN0TnVtYmVyXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+Q29udGFjdCBOdW1iZXI8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImNvbnRhY3ROdW1iZXJcIiBtaW5sZW5ndGg9XCIxMFwiIG1heGxlbmd0aD1cIjEzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiIGZvcm1Db250cm9sTmFtZT1cImNvbnRhY3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOnNwb2NEZXRhaWwuZ2V0KCdjb250YWN0Jyk/LmludmFsaWQgJiYgc3BvY0RldGFpbC5nZXQoJ2NvbnRhY3QnKT8udG91Y2hlZH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzcG9jRGV0YWlsLmdldCgnY29udGFjdCcpPy50b3VjaGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiICpuZ0lmPVwic3BvY0RldGFpbC5nZXQoJ2NvbnRhY3QnKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGFjdCBpcyByZXF1aXJlZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cInNwb2NEZXRhaWwuZ2V0KCdjb250YWN0Jyk/Lmhhc0Vycm9yKCdtaW5sZW5ndGgnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250YWN0IG11c3QgYmUgYXQgbGVhc3QgMTAgZGlnaXRzLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiICpuZ0lmPVwic3BvY0RldGFpbC5nZXQoJ2NvbnRhY3QnKT8uaGFzRXJyb3IoJ21heGxlbmd0aCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRhY3QgbXVzdCBiZSBub3QgbW9yZSB0aGFuIDEzIGRpZ2l0cy5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImRlc2lnbmF0aW9uXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+RGVzaWduYXRpb24gKG9wdGlvbmFsKTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiZGVzaWduYXRpb25cIiBmb3JtQ29udHJvbE5hbWU9XCJkZXNpZ25hdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxIGNsYXNzPVwic3ViLWhlYWRcIj5FbnRlciBTdG9yZSBDb25uZWN0aW9uIERldGFpbHM8L2gxPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiYW55RGVza0lEXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+QW55RGVzayBJRCAvIFRlYW1WaWV3ZXIgSUQgKG9wdGlvbmFsKTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImFueURlc2tJRFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInN0b3JlQ29ubmVjdGlvbklkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgdGV4dC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBteC0zIGJ0bi1vdXRsaW5lIGJ0bi1vdXRsaW5lLWRlZmF1bHQgcm91bmRlZC0zXCIgKGNsaWNrKT1cIm5hdmlnYXRlVG9BZGRTdG9yZSgpXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwiZ29Ub1JldmlldygpXCI+TmV4dDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gU3RvcmUgQ29udGFjdCBFbmQgLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gUmV2aWV3ICYgU3VibWl0IFN0YXJ0IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW2hpZGRlbl09XCJzZWxlY3QgIT09ICdyZXZpZXcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmcy00IGZ3LWJvbGQgdGV4dC1ob3Zlci1wcmltYXJ5IHN1Yi10aXRsZSB0ZXh0LWdyYXktNjAwIG0tMCBjdXJzb3ItcG9pbnRlclwiPlN0b3JlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmZvXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHAtOVwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1sZy0zIGZ3LWJvbGQgdGV4dC1tdXRlZC1yZXZpZXdcIj5TdG9yZSBOYW1lPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTlcIj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmdy1ib2xkZXIgZnMtNiB0ZXh0LXJldmlldy12YWxcIj57e3N0b3JlRm9ybS5nZXQoJ3N0b3JlTmFtZScpPy52YWx1ZSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZUZvcm0uZ2V0KCdzdG9yZU5hbWUnKT8udmFsdWUgOiAnTkEnfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1sZy0zIGZ3LWJvbGQgdGV4dC1tdXRlZC1yZXZpZXdcIj5TdG9yZSBDb2RlPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTkgZnYtcm93XCI+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZnctYm9sZCBmcy02IHRleHQtcmV2aWV3LXZhbFwiPnt7c3RvcmVGb3JtLmdldCgnc3RvcmVDb2RlJyk/LnZhbHVlID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlRm9ybS5nZXQoJ3N0b3JlQ29kZScpPy52YWx1ZTogJ05BJ319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTdcIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLWxnLTMgZnctYm9sZCB0ZXh0LW11dGVkLXJldmlld1wiPkJ1c2luZXNzIFR5cGU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOVwiPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZ3LWJvbGQgZnMtNiB0ZXh0LXJldmlldy12YWwgdGV4dC1ob3Zlci1wcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3N0b3JlRm9ybS5nZXQoJ2J1c2luZXNzVHlwZScpPy52YWx1ZSA/IHN0b3JlRm9ybS5nZXQoJ2J1c2luZXNzVHlwZScpPy52YWx1ZSA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTkEnfX0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLWxnLTMgZnctYm9sZCB0ZXh0LW11dGVkLXJldmlld1wiPlN0b3JlIFR5cGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8aSBkYXRhLWJzLXRvZ2dsZT1cInRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJQaG9uZSBudW1iZXIgbXVzdCBiZSBhY3RpdmVcIiBjbGFzcz1cImZhcyBmYS1leGNsYW1hdGlvbi1jaXJjbGUgbXMtMSBmcy03XCI+PC9pPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZ3LWJvbGRlciBmcy02IG1lLTIgdGV4dC1yZXZpZXctdmFsXCI+e3tzdG9yZUZvcm0uZ2V0KCdzdG9yZVR5cGVfdHlwZScpPy52YWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBzdG9yZUZvcm0uZ2V0KCdzdG9yZVR5cGVfdHlwZScpPy52YWx1ZSA6ICdOQSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLXN1Y2Nlc3NcIj5WZXJpZmllZDwvc3Bhbj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItN1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzdG9yZUZvcm0uZ2V0KCdzdG9yZVR5cGVfdHlwZScpPy52YWx1ZSAmJiBzdG9yZUZvcm0uZ2V0KCdzdG9yZVR5cGVfdHlwZScpPy52YWx1ZSA9PT0gJ01hbGwgU3RvcmUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLWxnLTMgZnctYm9sZCB0ZXh0LW11dGVkLXJldmlld1wiPiBNYWxsIE5hbWU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOVwiPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZ3LWJvbGRlciBmcy02IHRleHQtcmV2aWV3LXZhbFwiPnt7c3RvcmVGb3JtLmdldCgnc3RvcmVUeXBlX25hbWUnKT8udmFsdWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gc3RvcmVGb3JtLmdldCgnc3RvcmVUeXBlX25hbWUnKT8udmFsdWUgOiAnTkEnfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1sZy0zIGZ3LWJvbGQgdGV4dC1tdXRlZC1yZXZpZXdcIj5BZGRyZXNzPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTlcIj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmdy1ib2xkZXIgZnMtNiB0ZXh0LXJldmlldy12YWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdG9yZUZvcm0uZ2V0KCdhZGRyZXNzJyk/LnZhbHVlICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVGb3JtLmdldCgnY2l0eScpPy52YWx1ZSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlRm9ybS5nZXQoJ3N0YXRlJyk/LnZhbHVlICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVGb3JtLmdldCgnY291bnRyeScpPy52YWx1ZSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlRm9ybS5nZXQoJ3BpbmNvZGUnKT8udmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3N0b3JlRm9ybS5nZXQoJ2FkZHJlc3MnKT8udmFsdWUgPyBzdG9yZUZvcm0uZ2V0KCdhZGRyZXNzJyk/LnZhbHVlIDogJyd9fSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3N0b3JlRm9ybS5nZXQoJ2NpdHknKT8udmFsdWUgPyBzdG9yZUZvcm0uZ2V0KCdjaXR5Jyk/LnZhbHVlIDogJyd9fSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3N0b3JlRm9ybS5nZXQoJ3N0YXRlJyk/LnZhbHVlID8gc3RvcmVGb3JtLmdldCgnc3RhdGUnKT8udmFsdWUgOiAnJ319LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7c3RvcmVGb3JtLmdldCgnY291bnRyeScpPy52YWx1ZSA/IHN0b3JlRm9ybS5nZXQoJ2NvdW50cnknKT8udmFsdWUgOiAnJ319LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7c3RvcmVGb3JtLmdldCgncGluY29kZScpPy52YWx1ZSA/IHN0b3JlRm9ybS5nZXQoJ3BpbmNvZGUnKT8udmFsdWUgOiAnJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc3RvcmVGb3JtLmdldCgnYWRkcmVzcycpPy52YWx1ZSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFzdG9yZUZvcm0uZ2V0KCdjaXR5Jyk/LnZhbHVlIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXN0b3JlRm9ybS5nZXQoJ3N0YXRlJyk/LnZhbHVlIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXN0b3JlRm9ybS5nZXQoJ2NvdW50cnknKT8udmFsdWUgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhc3RvcmVGb3JtLmdldCgncGluY29kZScpPy52YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJyb3cgbWItMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbGctMyBmdy1ib2xkIHRleHQtbXV0ZWQtcmV2aWV3XCI+QWxsb3cgQ2hhbmdlczwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy05XCI+PHNwYW4gY2xhc3M9XCJmdy1ib2xkIGZzLTZcIj5ZZXM8L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZzLTQgZnctYm9sZCB0ZXh0LWhvdmVyLXByaW1hcnkgc3ViLXRpdGxlIHRleHQtZ3JheS02MDAgbS0wIGN1cnNvci1wb2ludGVyXCI+U3RvcmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb248L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwLTlcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbGctMyBmdy1ib2xkIHRleHQtbXV0ZWQtcmV2aWV3XCI+VGltZSBab25lPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTlcIj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmdy1ib2xkZXIgZnMtNiB0ZXh0LXJldmlldy12YWxcIj57e3N0b3JlRm9ybS5nZXQoJ3RpbWVab25lJyk/LnZhbHVlID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlRm9ybS5nZXQoJ3RpbWVab25lJyk/LnZhbHVlIDogJ05BJ319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbGctMyBmdy1ib2xkIHRleHQtbXV0ZWQtcmV2aWV3XCI+Tm8gb2YgQ2FtZXJhczwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy05IGZ2LXJvd1wiPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZ3LWJvbGQgZnMtNiB0ZXh0LXJldmlldy12YWxcIj57e3N0b3JlRm9ybS5nZXQoJ2NhbWVyYXMnKT8udmFsdWUgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVGb3JtLmdldCgnY2FtZXJhcycpPy52YWx1ZSA6ICdOQSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLWxnLTMgZnctYm9sZCB0ZXh0LW11dGVkLXJldmlld1wiPlN0b3JlIE9wZW4gVGltZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy05XCI+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZnctYm9sZCBmcy02IHRleHQtcmV2aWV3LXZhbCB0ZXh0LWhvdmVyLXByaW1hcnlcIj57e3N0b3JlRm9ybS5nZXQoJ29wZW4nKT8udmFsdWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gc3RvcmVGb3JtLmdldCgnb3BlbicpPy52YWx1ZSA6ICdOQSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1sZy0zIGZ3LWJvbGQgdGV4dC1tdXRlZC1yZXZpZXdcIj5TdG9yZSBDbG9zZSBUaW1lPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTlcIj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmdy1ib2xkZXIgZnMtNiB0ZXh0LXJldmlldy12YWxcIj57e3N0b3JlRm9ybS5nZXQoJ2Nsb3NlJyk/LnZhbHVlID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlRm9ybS5nZXQoJ2Nsb3NlJyk/LnZhbHVlIDogJ05BJ319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZzLTQgZnctYm9sZCB0ZXh0LWhvdmVyLXByaW1hcnkgc3ViLXRpdGxlIHRleHQtZ3JheS02MDAgbS0wIGN1cnNvci1wb2ludGVyXCI+Q29udGFjdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRGV0YWlsczwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHJvdyBweC05IHB0LTMgcGItNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmUgY29sLW1kLTEyIGNvbC1sZy0xMiBjb2wteGwtOSBjb2wteHhsLThcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBhbGlnbi1taWRkbGUgZ3ktNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJmcy02IGZ3LWJvbGRcIj4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIGZvcm1BcnJheU5hbWU9XCJzcG9jRGV0YWlsc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHNwb2Mgb2YgZ2V0c3BvY0RldGFpbHNDb250cm9scygpO2xldCBpPWluZGV4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+U3BvYyB7e2krMX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDE4IDE4XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTUgMTUuNzVWMTQuMjVDMTUgMTMuNDU0NCAxNC42ODM5IDEyLjY5MTMgMTQuMTIxMyAxMi4xMjg3QzEzLjU1ODcgMTEuNTY2MSAxMi43OTU2IDExLjI1IDEyIDExLjI1SDZDNS4yMDQzNSAxMS4yNSA0LjQ0MTI5IDExLjU2NjEgMy44Nzg2OCAxMi4xMjg3QzMuMzE2MDcgMTIuNjkxMyAzIDEzLjQ1NDQgMyAxNC4yNVYxNS43NU0xMiA1LjI1QzEyIDYuOTA2ODUgMTAuNjU2OSA4LjI1IDkgOC4yNUM3LjM0MzE1IDguMjUgNiA2LjkwNjg1IDYgNS4yNUM2IDMuNTkzMTUgNy4zNDMxNSAyLjI1IDkgMi4yNUMxMC42NTY5IDIuMjUgMTIgMy41OTMxNSAxMiA1LjI1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PHNwYW4gY2xhc3M9XCJtcy0yXCI+e3tnZXRzcG9jRGV0YWlsc1ZhbHVlcyhpKT8ubmFtZSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldHNwb2NEZXRhaWxzVmFsdWVzKGkpPy5uYW1lIDogJ05BJyB9fTwvc3Bhbj48L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzFfODAzNzMpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTIgNi4wMDAwMlY5Ljc1MDAyQzEyIDEwLjM0NjggMTIuMjM3MSAxMC45MTkxIDEyLjY1OSAxMS4zNDFDMTMuMDgxIDExLjc2MyAxMy42NTMzIDEyIDE0LjI1IDEyQzE0Ljg0NjcgMTIgMTUuNDE5IDExLjc2MyAxNS44NDEgMTEuMzQxQzE2LjI2MyAxMC45MTkxIDE2LjUgMTAuMzQ2OCAxNi41IDkuNzUwMDJWOS4wMDAwMkMxNi40OTk5IDcuMzA3MjkgMTUuOTI3MiA1LjY2NDM4IDE0Ljg3NSA0LjMzODQyQzEzLjgyMjcgMy4wMTI0NiAxMi4zNTI5IDIuMDgxNDQgMTAuNzA0NSAxLjY5Njc1QzkuMDU2MDUgMS4zMTIwNSA3LjMyNTk2IDEuNDk2MyA1Ljc5NTUyIDIuMjE5NTVDNC4yNjUwOCAyLjk0Mjc5IDMuMDI0MzEgNC4xNjI0OSAyLjI3NDk1IDUuNjgwMzJDMS41MjU2IDcuMTk4MTQgMS4zMTE3MyA4LjkyNDgzIDEuNjY4MTMgMTAuNTc5NkMyLjAyNDUzIDEyLjIzNDQgMi45MzAyNCAxMy43MTk5IDQuMjM3OTggMTQuNzk0N0M1LjU0NTcyIDE1Ljg2OTUgNy4xNzg1OCAxNi40NzAzIDguODcxMDYgMTYuNDk5NEMxMC41NjM1IDE2LjUyODUgMTIuMjE2MSAxNS45ODQyIDEzLjU2IDE0Ljk1NU0xMiA5LjAwMDAyQzEyIDEwLjY1NjkgMTAuNjU2OSAxMiA5LjAwMDAxIDEyQzcuMzQzMTUgMTIgNi4wMDAwMSAxMC42NTY5IDYuMDAwMDEgOS4wMDAwMkM2LjAwMDAxIDcuMzQzMTcgNy4zNDMxNSA2LjAwMDAyIDkuMDAwMDEgNi4wMDAwMkMxMC42NTY5IDYuMDAwMDIgMTIgNy4zNDMxNyAxMiA5LjAwMDAyWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMV84MDM3M1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PHNwYW4gY2xhc3M9XCJtcy0yXCI+e3tnZXRzcG9jRGV0YWlsc1ZhbHVlcyhpKT8uZW1haWwgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRzcG9jRGV0YWlsc1ZhbHVlcyhpKT8uZW1haWwgOiAnTkEnIH19PC9zcGFuPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMV84MDM3NilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNi41MDAxIDEyLjY5MDFWMTQuOTQwMUMxNi41MDA5IDE1LjE0ODkgMTYuNDU4MSAxNS4zNTU3IDE2LjM3NDUgMTUuNTQ3MUMxNi4yOTA4IDE1LjczODUgMTYuMTY4IDE1LjkxMDMgMTYuMDE0MSAxNi4wNTE1QzE1Ljg2MDIgMTYuMTkyNyAxNS42Nzg1IDE2LjMwMDIgMTUuNDgwNiAxNi4zNjcxQzE1LjI4MjggMTYuNDM0IDE1LjA3MzEgMTYuNDU4OSAxNC44NjUxIDE2LjQ0MDFDMTIuNTU3MiAxNi4xODkzIDEwLjM0MDMgMTUuNDAwNyA4LjM5MjU3IDE0LjEzNzZDNi41ODA0NCAxMi45ODYxIDUuMDQ0MDcgMTEuNDQ5NyAzLjg5MjU3IDkuNjM3NTdDMi42MjUwNiA3LjY4MDk4IDEuODM2MjUgNS40NTMzMiAxLjU5MDA3IDMuMTM1MDdDMS41NzEzMyAyLjkyNzY3IDEuNTk1OTggMi43MTg2NCAxLjY2MjQ1IDIuNTIxMjlDMS43Mjg5MiAyLjMyMzk0IDEuODM1NzUgMi4xNDI1OSAxLjk3NjE1IDEuOTg4NzlDMi4xMTY1NCAxLjgzNDk5IDIuMjg3NDMgMS43MTIxIDIuNDc3OTIgMS42Mjc5NkMyLjY2ODQgMS41NDM4MiAyLjg3NDMzIDEuNTAwMjcgMy4wODI1NyAxLjUwMDA3SDUuMzMyNTdDNS42OTY1NSAxLjQ5NjQ5IDYuMDQ5NDIgMS42MjUzOCA2LjMyNTM5IDEuODYyNzJDNi42MDEzNyAyLjEwMDA2IDYuNzgxNjMgMi40Mjk2NiA2LjgzMjU3IDIuNzkwMDdDNi45Mjc1NCAzLjUxMDEyIDcuMTAzNjYgNC4yMTcxMiA3LjM1NzU3IDQuODk3NTdDNy40NTg0OCA1LjE2NjAyIDcuNDgwMzIgNS40NTc3NiA3LjQyMDUgNS43MzgyM0M3LjM2MDY5IDYuMDE4NzEgNy4yMjE3MiA2LjI3NjE2IDcuMDIwMDcgNi40ODAwN0w2LjA2NzU3IDcuNDMyNTdDNy4xMzUyNCA5LjMxMDIzIDguNjg5OTEgMTAuODY0OSAxMC41Njc2IDExLjkzMjZMMTEuNTIwMSAxMC45ODAxQzExLjcyNCAxMC43Nzg0IDExLjk4MTQgMTAuNjM5NSAxMi4yNjE5IDEwLjU3OTZDMTIuNTQyNCAxMC41MTk4IDEyLjgzNDEgMTAuNTQxNyAxMy4xMDI2IDEwLjY0MjZDMTMuNzgzIDEwLjg5NjUgMTQuNDkgMTEuMDcyNiAxNS4yMTAxIDExLjE2NzZDMTUuNTc0NCAxMS4yMTkgMTUuOTA3MSAxMS40MDI1IDE2LjE0NSAxMS42ODMyQzE2LjM4MjggMTEuOTYzOSAxNi41MDkyIDEyLjMyMjMgMTYuNTAwMSAxMi42OTAxWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMV84MDM3NlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PHNwYW4gY2xhc3M9XCJtcy0yXCI+e3tnZXRzcG9jRGV0YWlsc1ZhbHVlcyhpKT8uY29udGFjdCA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldHNwb2NEZXRhaWxzVmFsdWVzKGkpPy5jb250YWN0IDogJ05BJyB9fTwvc3Bhbj48L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPkFueURlc2sgSURcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPnt7c3RvcmVGb3JtLmdldCgnc3RvcmVDb25uZWN0aW9uSWQnKT8udmFsdWUgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVGb3JtLmdldCgnc3RvcmVDb25uZWN0aW9uSWQnKT8udmFsdWUgOiAnTkEnIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJnb1RvU3RvcmVJbmZvKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBteC0zIGJ0bi1vdXRsaW5lIGJ0bi1vdXRsaW5lLWRlZmF1bHQgcm91bmRlZC0zXCI+RWRpdDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFtkaXNhYmxlZF09XCJzdG9yZUZvcm0uaW52YWxpZFwiIChjbGljayk9XCJvblN1Ym1pdCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIj5TdWJtaXQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIFJldmlldyAmIFN1Ym1pdCBFbmQgLS0+XHJcbiAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==