techlify-inventory-common 18.29.0 → 18.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/esm2022/lib/inventory-common/location/location-form-button/location-form-button.component.mjs +7 -4
  2. package/esm2022/lib/inventory-common/location/location-information/location-information.component.mjs +17 -15
  3. package/esm2022/lib/inventory-common/location/location-list/location-list.component.mjs +7 -7
  4. package/esm2022/lib/inventory-common/location/location-selector/location-selector.component.mjs +6 -5
  5. package/esm2022/lib/inventory-common/location/location-view/location-view.component.mjs +8 -9
  6. package/esm2022/lib/inventory-common/location/shelf/shelf-form-button/shelf-form-button.component.mjs +10 -6
  7. package/esm2022/lib/inventory-common/location/shelf/shelf-list/shelf-list.component.mjs +17 -16
  8. package/esm2022/lib/inventory-common/product/product-basic-info/product-basic-info.component.mjs +15 -11
  9. package/esm2022/lib/inventory-common/product/product-form/product-form.component.mjs +136 -108
  10. package/esm2022/lib/inventory-common/product/product-form-button/product-form-button.component.mjs +10 -35
  11. package/esm2022/lib/inventory-common/product/product-list/product-list.component.mjs +1 -1
  12. package/esm2022/lib/inventory-common/product/product-routing.module.mjs +12 -1
  13. package/esm2022/lib/inventory-common/product/product-view-page/product-view-page.component.mjs +2 -2
  14. package/esm2022/lib/inventory-common/product/product.module.mjs +16 -5
  15. package/esm2022/lib/inventory-common/stock-issuances/stock-issue-batch-form/stock-issue-batch-form.component.mjs +120 -0
  16. package/esm2022/lib/inventory-common/stock-issuances/stock-issue-form/stock-issue-form-button/stock-issue-form-button.component.mjs +5 -4
  17. package/esm2022/lib/inventory-common/stock-issuances/stock-issue-form/stock-issue-form.module.mjs +7 -4
  18. package/esm2022/lib/inventory-common/stock-issuances/stock-issue-list/stock-issue-list.component.mjs +21 -12
  19. package/esm2022/lib/inventory-common/stock-issuances/stock-issue-routing.module.mjs +6 -1
  20. package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-batch-form/stock-receipt-batch-form.component.mjs +152 -0
  21. package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-form/stock-receipt-form/stock-receipt-form.component.mjs +3 -3
  22. package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-view/stock-receipt-view.component.mjs +1 -1
  23. package/esm2022/lib/inventory-common/stock-receipts/stock-receipts-list-page/stock-receipts-list-page.component.mjs +59 -100
  24. package/esm2022/lib/inventory-common/stock-receipts/stock-receipts-routing.module.mjs +7 -1
  25. package/esm2022/lib/inventory-common/stock-receipts/stock-receipts.module.mjs +35 -30
  26. package/esm2022/lib/inventory-common/supplier/purchase-order/purchase-order-form/purchase-order-form.component.mjs +156 -0
  27. package/esm2022/lib/inventory-common/supplier/purchase-order/purchase-order-listing/purchase-order-listing.component.mjs +9 -5
  28. package/esm2022/lib/inventory-common/supplier/purchase-order/purchase-order-product-list/purchase-order-product-list.component.mjs +27 -0
  29. package/esm2022/lib/inventory-common/supplier/purchase-order/purchase-order-view/purchase-order-view.component.mjs +63 -0
  30. package/esm2022/lib/inventory-common/supplier/supplier-routing.module.mjs +14 -1
  31. package/esm2022/public-api.mjs +1 -3
  32. package/fesm2022/{techlify-inventory-common-category.module-BT3uLLqI.mjs → techlify-inventory-common-category.module-CMCZ_60M.mjs} +13 -13
  33. package/fesm2022/{techlify-inventory-common-category.module-BT3uLLqI.mjs.map → techlify-inventory-common-category.module-CMCZ_60M.mjs.map} +1 -1
  34. package/fesm2022/{techlify-inventory-common-measure.module-s9xhNWZM.mjs → techlify-inventory-common-measure.module-6JtrzPaD.mjs} +7 -7
  35. package/fesm2022/{techlify-inventory-common-measure.module-s9xhNWZM.mjs.map → techlify-inventory-common-measure.module-6JtrzPaD.mjs.map} +1 -1
  36. package/fesm2022/techlify-inventory-common-purchase-order-view.component-PylRUv5V.mjs +86 -0
  37. package/fesm2022/techlify-inventory-common-purchase-order-view.component-PylRUv5V.mjs.map +1 -0
  38. package/fesm2022/techlify-inventory-common-stock-issue-batch-form.component-B_KbA68z.mjs +119 -0
  39. package/fesm2022/techlify-inventory-common-stock-issue-batch-form.component-B_KbA68z.mjs.map +1 -0
  40. package/fesm2022/{techlify-inventory-common-stock-issue-view.component-CNrY99hf.mjs → techlify-inventory-common-stock-issue-view.component-Ca_lo9Mo.mjs} +7 -7
  41. package/fesm2022/{techlify-inventory-common-stock-issue-view.component-CNrY99hf.mjs.map → techlify-inventory-common-stock-issue-view.component-Ca_lo9Mo.mjs.map} +1 -1
  42. package/fesm2022/{techlify-inventory-common-techlify-inventory-common-DRw7na0D.mjs → techlify-inventory-common-techlify-inventory-common-BRqmW8Lo.mjs} +865 -679
  43. package/fesm2022/techlify-inventory-common-techlify-inventory-common-BRqmW8Lo.mjs.map +1 -0
  44. package/fesm2022/techlify-inventory-common.mjs +1 -1
  45. package/lib/inventory-common/location/location-information/location-information.component.d.ts +3 -1
  46. package/lib/inventory-common/location/location-selector/location-selector.component.d.ts +3 -1
  47. package/lib/inventory-common/product/product-basic-info/product-basic-info.component.d.ts +3 -1
  48. package/lib/inventory-common/product/product-form/product-form.component.d.ts +23 -27
  49. package/lib/inventory-common/product/product-form-button/product-form-button.component.d.ts +3 -16
  50. package/lib/inventory-common/product/product.module.d.ts +3 -1
  51. package/lib/inventory-common/stock-issuances/stock-issue-batch-form/stock-issue-batch-form.component.d.ts +31 -0
  52. package/lib/inventory-common/stock-issuances/stock-issue-form/stock-issue-form.module.d.ts +1 -1
  53. package/lib/inventory-common/stock-issuances/stock-issue-list/stock-issue-list.component.d.ts +0 -1
  54. package/lib/inventory-common/stock-receipts/stock-receipt-batch-form/stock-receipt-batch-form.component.d.ts +39 -0
  55. package/lib/inventory-common/stock-receipts/stock-receipts-list-page/stock-receipts-list-page.component.d.ts +5 -11
  56. package/lib/inventory-common/stock-receipts/stock-receipts.module.d.ts +11 -12
  57. package/lib/inventory-common/supplier/purchase-order/purchase-order-form/purchase-order-form.component.d.ts +30 -0
  58. package/lib/inventory-common/supplier/purchase-order/purchase-order-product-list/purchase-order-product-list.component.d.ts +7 -0
  59. package/lib/inventory-common/supplier/purchase-order/purchase-order-view/purchase-order-view.component.d.ts +19 -0
  60. package/package.json +1 -1
  61. package/public-api.d.ts +0 -2
  62. package/esm2022/lib/inventory-common/location/location-delete-button/location-delete-button.component.mjs +0 -68
  63. package/esm2022/lib/inventory-common/location/shelf/shelf-delete-button/shelf-delete-button.component.mjs +0 -60
  64. package/fesm2022/techlify-inventory-common-techlify-inventory-common-DRw7na0D.mjs.map +0 -1
  65. package/lib/inventory-common/location/location-delete-button/location-delete-button.component.d.ts +0 -28
  66. package/lib/inventory-common/location/shelf/shelf-delete-button/shelf-delete-button.component.d.ts +0 -20
@@ -1,8 +1,10 @@
1
1
  import { Component, EventEmitter, Input, Output } from '@angular/core';
2
2
  import { MatDialogContent, MatDialogTitle } from "@angular/material/dialog";
3
3
  import { LocationFormComponent } from '../location-form/location-form.component';
4
+ import { TechlifyIconModule } from 'ngx-techlify-core';
4
5
  import * as i0 from "@angular/core";
5
6
  import * as i1 from "@angular/material/dialog";
7
+ import * as i2 from "ngx-techlify-core";
6
8
  export class LocationFormButtonComponent {
7
9
  matDialog;
8
10
  model;
@@ -27,18 +29,19 @@ export class LocationFormButtonComponent {
27
29
  this.saved.emit(model);
28
30
  }
29
31
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LocationFormButtonComponent, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
30
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: LocationFormButtonComponent, isStandalone: true, selector: "app-location-form-button", inputs: { model: "model" }, outputs: { saved: "saved" }, ngImport: i0, template: "<span class=\"material-symbols-outlined cursor-pointer\" (click)=\"showForm(formTemplate)\">\n {{ model ? 'edit' : 'add' }}\n</span>\n\n<ng-template #formTemplate>\n <h3 mat-dialog-title> Location Form </h3>\n <app-location-form mat-dialog-content [model]=\"model\" (saved)=\"onSaved($event)\"\n (cancelled)=\"matDialog.closeAll()\"></app-location-form>\n</ng-template>", styles: [""], dependencies: [{ kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "component", type: LocationFormComponent, selector: "app-location-form", inputs: ["model"], outputs: ["saved", "cancelled"] }], preserveWhitespaces: true });
32
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: LocationFormButtonComponent, isStandalone: true, selector: "app-location-form-button", inputs: { model: "model" }, outputs: { saved: "saved" }, ngImport: i0, template: "<app-techlify-icon role=\"button\" [name]=\"model ? 'edit' : 'add'\" (click)=\"showForm(formTemplate)\"></app-techlify-icon>\n\n<ng-template #formTemplate>\n <h3 mat-dialog-title> Location Form </h3>\n <app-location-form mat-dialog-content [model]=\"model\" (saved)=\"onSaved($event)\"\n (cancelled)=\"matDialog.closeAll()\"></app-location-form>\n</ng-template>", styles: [""], dependencies: [{ kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "component", type: LocationFormComponent, selector: "app-location-form", inputs: ["model"], outputs: ["saved", "cancelled"] }, { kind: "ngmodule", type: TechlifyIconModule }, { kind: "component", type: i2.TechlifyIconComponent, selector: "app-techlify-icon", inputs: ["name", "size"] }], preserveWhitespaces: true });
31
33
  }
32
34
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LocationFormButtonComponent, decorators: [{
33
35
  type: Component,
34
36
  args: [{ selector: 'app-location-form-button', standalone: true, imports: [
35
37
  MatDialogContent,
36
38
  MatDialogTitle,
37
- LocationFormComponent
38
- ], template: "<span class=\"material-symbols-outlined cursor-pointer\" (click)=\"showForm(formTemplate)\">\n {{ model ? 'edit' : 'add' }}\n</span>\n\n<ng-template #formTemplate>\n <h3 mat-dialog-title> Location Form </h3>\n <app-location-form mat-dialog-content [model]=\"model\" (saved)=\"onSaved($event)\"\n (cancelled)=\"matDialog.closeAll()\"></app-location-form>\n</ng-template>" }]
39
+ LocationFormComponent,
40
+ TechlifyIconModule
41
+ ], template: "<app-techlify-icon role=\"button\" [name]=\"model ? 'edit' : 'add'\" (click)=\"showForm(formTemplate)\"></app-techlify-icon>\n\n<ng-template #formTemplate>\n <h3 mat-dialog-title> Location Form </h3>\n <app-location-form mat-dialog-content [model]=\"model\" (saved)=\"onSaved($event)\"\n (cancelled)=\"matDialog.closeAll()\"></app-location-form>\n</ng-template>" }]
39
42
  }], ctorParameters: () => [{ type: i1.MatDialog }], propDecorators: { model: [{
40
43
  type: Input
41
44
  }], saved: [{
42
45
  type: Output
43
46
  }] } });
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYXRpb24tZm9ybS1idXR0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vbG9jYXRpb24vbG9jYXRpb24tZm9ybS1idXR0b24vbG9jYXRpb24tZm9ybS1idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vbG9jYXRpb24vbG9jYXRpb24tZm9ybS1idXR0b24vbG9jYXRpb24tZm9ybS1idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUNwRixPQUFPLEVBQWEsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMENBQTBDLENBQUM7OztBQWFqRixNQUFNLE9BQU8sMkJBQTJCO0lBSW5CO0lBSFYsS0FBSyxDQUFPO0lBQ1gsS0FBSyxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO0lBRTdELFlBQW1CLFNBQW9CO1FBQXBCLGNBQVMsR0FBVCxTQUFTLENBQVc7SUFDdkMsQ0FBQztJQUVELFFBQVEsQ0FBQyxXQUE2QjtRQUNwQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQzdCO1lBQ0UsS0FBSyxFQUFFLE9BQU87U0FDZixDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDO1lBQ3pCLElBQUksRUFBRSxDQUFDLEtBQVUsRUFBRSxFQUFFO2dCQUNuQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ1gsT0FBTztnQkFDVCxDQUFDO2dCQUVELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pCLENBQUM7U0FDRixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQVU7UUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QixDQUFDO3dHQXpCVSwyQkFBMkI7NEZBQTNCLDJCQUEyQiw2SUNmeEMseVhBUWMsMEREQVYsZ0JBQWdCLHlHQUNoQixjQUFjLCtIQUNkLHFCQUFxQjs7NEZBS1osMkJBQTJCO2tCQVh2QyxTQUFTOytCQUNFLDBCQUEwQixjQUN4QixJQUFJLFdBQ1A7d0JBQ1AsZ0JBQWdCO3dCQUNoQixjQUFjO3dCQUNkLHFCQUFxQjtxQkFDdEI7OEVBS1EsS0FBSztzQkFBYixLQUFLO2dCQUNJLEtBQUs7c0JBQWQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dDb250ZW50LCBNYXREaWFsb2dUaXRsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2dcIjtcbmltcG9ydCB7IExvY2F0aW9uRm9ybUNvbXBvbmVudCB9IGZyb20gJy4uL2xvY2F0aW9uLWZvcm0vbG9jYXRpb24tZm9ybS5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtbG9jYXRpb24tZm9ybS1idXR0b24nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTWF0RGlhbG9nQ29udGVudCxcbiAgICBNYXREaWFsb2dUaXRsZSxcbiAgICBMb2NhdGlvbkZvcm1Db21wb25lbnRcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2xvY2F0aW9uLWZvcm0tYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2xvY2F0aW9uLWZvcm0tYnV0dG9uLmNvbXBvbmVudC5zY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBMb2NhdGlvbkZvcm1CdXR0b25Db21wb25lbnQge1xuICBASW5wdXQoKSBtb2RlbCE6IGFueTtcbiAgQE91dHB1dCgpIHNhdmVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBtYXREaWFsb2c6IE1hdERpYWxvZykge1xuICB9XG5cbiAgc2hvd0Zvcm0odGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4pIHtcbiAgICB0aGlzLm1hdERpYWxvZy5vcGVuKHRlbXBsYXRlUmVmLFxuICAgICAge1xuICAgICAgICB3aWR0aDogJzQwMHB4J1xuICAgICAgfSkuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAobW9kZWw6IGFueSkgPT4ge1xuICAgICAgICAgIGlmICghbW9kZWwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLnNhdmVkLmVtaXQobW9kZWwpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIG9uU2F2ZWQobW9kZWw6IGFueSkge1xuICAgIHRoaXMubWF0RGlhbG9nLmNsb3NlQWxsKCk7XG4gICAgdGhpcy5zYXZlZC5lbWl0KG1vZGVsKTtcbiAgfVxufVxuIiwiPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNob3dGb3JtKGZvcm1UZW1wbGF0ZSlcIj5cbiAge3sgbW9kZWwgPyAnZWRpdCcgOiAnYWRkJyB9fVxuPC9zcGFuPlxuXG48bmctdGVtcGxhdGUgI2Zvcm1UZW1wbGF0ZT5cbiAgPGgzIG1hdC1kaWFsb2ctdGl0bGU+IExvY2F0aW9uIEZvcm0gPC9oMz5cbiAgPGFwcC1sb2NhdGlvbi1mb3JtIG1hdC1kaWFsb2ctY29udGVudCBbbW9kZWxdPVwibW9kZWxcIiAoc2F2ZWQpPVwib25TYXZlZCgkZXZlbnQpXCJcbiAgICAoY2FuY2VsbGVkKT1cIm1hdERpYWxvZy5jbG9zZUFsbCgpXCI+PC9hcHAtbG9jYXRpb24tZm9ybT5cbjwvbmctdGVtcGxhdGU+Il19
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYXRpb24tZm9ybS1idXR0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vbG9jYXRpb24vbG9jYXRpb24tZm9ybS1idXR0b24vbG9jYXRpb24tZm9ybS1idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vbG9jYXRpb24vbG9jYXRpb24tZm9ybS1idXR0b24vbG9jYXRpb24tZm9ybS1idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUNwRixPQUFPLEVBQWEsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDakYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7QUFjdkQsTUFBTSxPQUFPLDJCQUEyQjtJQUluQjtJQUhWLEtBQUssQ0FBTztJQUNYLEtBQUssR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUU3RCxZQUFtQixTQUFvQjtRQUFwQixjQUFTLEdBQVQsU0FBUyxDQUFXO0lBQ3ZDLENBQUM7SUFFRCxRQUFRLENBQUMsV0FBNkI7UUFDcEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUM3QjtZQUNFLEtBQUssRUFBRSxPQUFPO1NBQ2YsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQztZQUN6QixJQUFJLEVBQUUsQ0FBQyxLQUFVLEVBQUUsRUFBRTtnQkFDbkIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUNYLE9BQU87Z0JBQ1QsQ0FBQztnQkFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6QixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFVO1FBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekIsQ0FBQzt3R0F6QlUsMkJBQTJCOzRGQUEzQiwyQkFBMkIsNklDakJ4QyxnWEFNYywwRERHVixnQkFBZ0IseUdBQ2hCLGNBQWMsK0hBQ2QscUJBQXFCLGlIQUNyQixrQkFBa0I7OzRGQUtULDJCQUEyQjtrQkFadkMsU0FBUzsrQkFDRSwwQkFBMEIsY0FDeEIsSUFBSSxXQUNQO3dCQUNQLGdCQUFnQjt3QkFDaEIsY0FBYzt3QkFDZCxxQkFBcUI7d0JBQ3JCLGtCQUFrQjtxQkFDbkI7OEVBS1EsS0FBSztzQkFBYixLQUFLO2dCQUNJLEtBQUs7c0JBQWQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dDb250ZW50LCBNYXREaWFsb2dUaXRsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2dcIjtcbmltcG9ydCB7IExvY2F0aW9uRm9ybUNvbXBvbmVudCB9IGZyb20gJy4uL2xvY2F0aW9uLWZvcm0vbG9jYXRpb24tZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGVjaGxpZnlJY29uTW9kdWxlIH0gZnJvbSAnbmd4LXRlY2hsaWZ5LWNvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtbG9jYXRpb24tZm9ybS1idXR0b24nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTWF0RGlhbG9nQ29udGVudCxcbiAgICBNYXREaWFsb2dUaXRsZSxcbiAgICBMb2NhdGlvbkZvcm1Db21wb25lbnQsXG4gICAgVGVjaGxpZnlJY29uTW9kdWxlXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9sb2NhdGlvbi1mb3JtLWJ1dHRvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9sb2NhdGlvbi1mb3JtLWJ1dHRvbi5jb21wb25lbnQuc2Nzcydcbn0pXG5leHBvcnQgY2xhc3MgTG9jYXRpb25Gb3JtQnV0dG9uQ29tcG9uZW50IHtcbiAgQElucHV0KCkgbW9kZWwhOiBhbnk7XG4gIEBPdXRwdXQoKSBzYXZlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgbWF0RGlhbG9nOiBNYXREaWFsb2cpIHtcbiAgfVxuXG4gIHNob3dGb3JtKHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgdGhpcy5tYXREaWFsb2cub3Blbih0ZW1wbGF0ZVJlZixcbiAgICAgIHtcbiAgICAgICAgd2lkdGg6ICc0MDBweCdcbiAgICAgIH0pLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKG1vZGVsOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAoIW1vZGVsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5zYXZlZC5lbWl0KG1vZGVsKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBvblNhdmVkKG1vZGVsOiBhbnkpIHtcbiAgICB0aGlzLm1hdERpYWxvZy5jbG9zZUFsbCgpO1xuICAgIHRoaXMuc2F2ZWQuZW1pdChtb2RlbCk7XG4gIH1cbn1cbiIsIjxhcHAtdGVjaGxpZnktaWNvbiByb2xlPVwiYnV0dG9uXCIgW25hbWVdPVwibW9kZWwgPyAnZWRpdCcgOiAnYWRkJ1wiIChjbGljayk9XCJzaG93Rm9ybShmb3JtVGVtcGxhdGUpXCI+PC9hcHAtdGVjaGxpZnktaWNvbj5cblxuPG5nLXRlbXBsYXRlICNmb3JtVGVtcGxhdGU+XG4gIDxoMyBtYXQtZGlhbG9nLXRpdGxlPiBMb2NhdGlvbiBGb3JtIDwvaDM+XG4gIDxhcHAtbG9jYXRpb24tZm9ybSBtYXQtZGlhbG9nLWNvbnRlbnQgW21vZGVsXT1cIm1vZGVsXCIgKHNhdmVkKT1cIm9uU2F2ZWQoJGV2ZW50KVwiXG4gICAgKGNhbmNlbGxlZCk9XCJtYXREaWFsb2cuY2xvc2VBbGwoKVwiPjwvYXBwLWxvY2F0aW9uLWZvcm0+XG48L25nLXRlbXBsYXRlPiJdfQ==
@@ -1,34 +1,36 @@
1
1
  import { Component, Input } from '@angular/core';
2
- import { NgIf } from '@angular/common';
3
- import { MatCard, MatCardContent } from '@angular/material/card';
2
+ import { CommonModule } from '@angular/common';
4
3
  import { LocationFormButtonComponent } from '../location-form-button/location-form-button.component';
5
- import { MatDivider } from '@angular/material/divider';
6
- import { LocationDeleteButtonComponent } from '../location-delete-button/location-delete-button.component';
4
+ import { MaterialModule } from '../../material.module';
5
+ import { TechlifyDeleteButtonComponent } from 'ngx-techlify-core';
7
6
  import * as i0 from "@angular/core";
8
7
  import * as i1 from "@angular/common";
8
+ import * as i2 from "../location.service";
9
+ import * as i3 from "@angular/material/card";
10
+ import * as i4 from "@angular/material/divider";
9
11
  export class LocationInformationComponent {
10
12
  location;
13
+ service;
11
14
  model;
12
- constructor(location) {
15
+ constructor(location, service) {
13
16
  this.location = location;
17
+ this.service = service;
14
18
  }
15
19
  redirectBack() {
16
20
  this.location.back();
17
21
  }
18
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LocationInformationComponent, deps: [{ token: i1.Location }], target: i0.ɵɵFactoryTarget.Component });
19
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: LocationInformationComponent, isStandalone: true, selector: "app-location-information", inputs: { model: "model" }, ngImport: i0, template: "<mat-card *ngIf=\"model\">\n <mat-card-content class=\"d-flex justify-content-between align-items-center\">\n <h3 class=\"mb-2 fw-bold\">{{ model?.title }}</h3>\n <div class=\"d-flex justify-content-start align-items-center gap-2\">\n <app-location-form-button [model]=\"model\" (saved)=\"model = $event\"></app-location-form-button>\n <app-location-delete-button [model]=\"model\" (deleted)=\"redirectBack()\"></app-location-delete-button>\n </div>\n </mat-card-content>\n <mat-divider class=\"mx-2\"></mat-divider>\n <mat-card-content class=\"mt-2 d-flex flex-column justify-content-start gap-2\">\n <div class=\"d-flex justify-content-start align-items-start flex-wrap\">\n <strong class=\"w-100 mb-2\">Location Details</strong>\n <div *ngIf=\"model?.address\" class=\"d-flex flex-column gap-1 justify-content-start w-100 mb-2\">\n <small class=\"text-secondary\">Address</small>\n <p class=\"mb-0\">{{ model?.address }}</p>\n </div>\n <div *ngIf=\"model?.description\" class=\"d-flex flex-column gap-1 justify-content-start w-100 mb-2\">\n <small class=\"text-secondary\">Description</small>\n <p class=\"mb-0\">{{ model?.description }}</p>\n </div>\n </div>\n\n </mat-card-content>\n</mat-card>\n", styles: [""], dependencies: [{ kind: "component", type: MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: LocationFormButtonComponent, selector: "app-location-form-button", inputs: ["model"], outputs: ["saved"] }, { kind: "component", type: MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: LocationDeleteButtonComponent, selector: "app-location-delete-button", inputs: ["model"], outputs: ["deleted"] }], preserveWhitespaces: true });
22
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LocationInformationComponent, deps: [{ token: i1.Location }, { token: i2.LocationService }], target: i0.ɵɵFactoryTarget.Component });
23
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: LocationInformationComponent, isStandalone: true, selector: "app-location-information", inputs: { model: "model" }, ngImport: i0, template: "<mat-card *ngIf=\"model\">\n <mat-card-content class=\"d-flex justify-content-between align-items-center\">\n <h3 class=\"mb-2 fw-bold\">{{ model?.title }}</h3>\n <div class=\"d-flex justify-content-start align-items-center gap-2 text-secondary\">\n <app-location-form-button [model]=\"model\" (saved)=\"model = $event\"></app-location-form-button>\n <app-techlify-delete-button [data]=\"{title: model?.title, type: 'Location'}\" [model]=\"model\"\n [service]=\"service\" (deleted)=\"redirectBack()\"></app-techlify-delete-button>\n </div>\n </mat-card-content>\n <mat-divider class=\"mx-2\"></mat-divider>\n <mat-card-content class=\"mt-2 d-flex flex-column justify-content-start gap-2\">\n <div class=\"d-flex justify-content-start align-items-start flex-wrap\">\n <strong class=\"w-100 mb-2\">Location Details</strong>\n <div *ngIf=\"model?.address\" class=\"d-flex flex-column gap-1 justify-content-start w-100 mb-2\">\n <small class=\"text-secondary\">Address</small>\n <p class=\"mb-0\">{{ model?.address }}</p>\n </div>\n <div *ngIf=\"model?.description\" class=\"d-flex flex-column gap-1 justify-content-start w-100 mb-2\">\n <small class=\"text-secondary\">Description</small>\n <p class=\"mb-0\">{{ model?.description }}</p>\n </div>\n </div>\n\n </mat-card-content>\n</mat-card>", styles: [""], dependencies: [{ kind: "ngmodule", type: MaterialModule }, { kind: "component", type: i3.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i4.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: LocationFormButtonComponent, selector: "app-location-form-button", inputs: ["model"], outputs: ["saved"] }, { kind: "component", type: TechlifyDeleteButtonComponent, selector: "app-techlify-delete-button", inputs: ["data", "model", "message", "service"], outputs: ["deleted"] }], preserveWhitespaces: true });
20
24
  }
21
25
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LocationInformationComponent, decorators: [{
22
26
  type: Component,
23
27
  args: [{ selector: 'app-location-information', standalone: true, imports: [
24
- MatCard,
25
- MatCardContent,
26
- NgIf,
28
+ MaterialModule,
29
+ CommonModule,
27
30
  LocationFormButtonComponent,
28
- MatDivider,
29
- LocationDeleteButtonComponent
30
- ], template: "<mat-card *ngIf=\"model\">\n <mat-card-content class=\"d-flex justify-content-between align-items-center\">\n <h3 class=\"mb-2 fw-bold\">{{ model?.title }}</h3>\n <div class=\"d-flex justify-content-start align-items-center gap-2\">\n <app-location-form-button [model]=\"model\" (saved)=\"model = $event\"></app-location-form-button>\n <app-location-delete-button [model]=\"model\" (deleted)=\"redirectBack()\"></app-location-delete-button>\n </div>\n </mat-card-content>\n <mat-divider class=\"mx-2\"></mat-divider>\n <mat-card-content class=\"mt-2 d-flex flex-column justify-content-start gap-2\">\n <div class=\"d-flex justify-content-start align-items-start flex-wrap\">\n <strong class=\"w-100 mb-2\">Location Details</strong>\n <div *ngIf=\"model?.address\" class=\"d-flex flex-column gap-1 justify-content-start w-100 mb-2\">\n <small class=\"text-secondary\">Address</small>\n <p class=\"mb-0\">{{ model?.address }}</p>\n </div>\n <div *ngIf=\"model?.description\" class=\"d-flex flex-column gap-1 justify-content-start w-100 mb-2\">\n <small class=\"text-secondary\">Description</small>\n <p class=\"mb-0\">{{ model?.description }}</p>\n </div>\n </div>\n\n </mat-card-content>\n</mat-card>\n" }]
31
- }], ctorParameters: () => [{ type: i1.Location }], propDecorators: { model: [{
31
+ TechlifyDeleteButtonComponent
32
+ ], template: "<mat-card *ngIf=\"model\">\n <mat-card-content class=\"d-flex justify-content-between align-items-center\">\n <h3 class=\"mb-2 fw-bold\">{{ model?.title }}</h3>\n <div class=\"d-flex justify-content-start align-items-center gap-2 text-secondary\">\n <app-location-form-button [model]=\"model\" (saved)=\"model = $event\"></app-location-form-button>\n <app-techlify-delete-button [data]=\"{title: model?.title, type: 'Location'}\" [model]=\"model\"\n [service]=\"service\" (deleted)=\"redirectBack()\"></app-techlify-delete-button>\n </div>\n </mat-card-content>\n <mat-divider class=\"mx-2\"></mat-divider>\n <mat-card-content class=\"mt-2 d-flex flex-column justify-content-start gap-2\">\n <div class=\"d-flex justify-content-start align-items-start flex-wrap\">\n <strong class=\"w-100 mb-2\">Location Details</strong>\n <div *ngIf=\"model?.address\" class=\"d-flex flex-column gap-1 justify-content-start w-100 mb-2\">\n <small class=\"text-secondary\">Address</small>\n <p class=\"mb-0\">{{ model?.address }}</p>\n </div>\n <div *ngIf=\"model?.description\" class=\"d-flex flex-column gap-1 justify-content-start w-100 mb-2\">\n <small class=\"text-secondary\">Description</small>\n <p class=\"mb-0\">{{ model?.description }}</p>\n </div>\n </div>\n\n </mat-card-content>\n</mat-card>" }]
33
+ }], ctorParameters: () => [{ type: i1.Location }, { type: i2.LocationService }], propDecorators: { model: [{
32
34
  type: Input
33
35
  }] } });
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYXRpb24taW5mb3JtYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vbG9jYXRpb24vbG9jYXRpb24taW5mb3JtYXRpb24vbG9jYXRpb24taW5mb3JtYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vbG9jYXRpb24vbG9jYXRpb24taW5mb3JtYXRpb24vbG9jYXRpb24taW5mb3JtYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFXLElBQUksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBQyxPQUFPLEVBQUUsY0FBYyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDL0QsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0sd0RBQXdELENBQUM7QUFDbkcsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ3JELE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLDREQUE0RCxDQUFDOzs7QUFnQnpHLE1BQU0sT0FBTyw0QkFBNEI7SUFJN0I7SUFIRCxLQUFLLENBQU07SUFFcEIsWUFDVSxRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO0lBRTVCLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2QixDQUFDO3dHQVZVLDRCQUE0Qjs0RkFBNUIsNEJBQTRCLGdIQ3JCekMsc3dDQXdCQSwwRERiSSxPQUFPLG9HQUNQLGNBQWMsNkRBQ2QsSUFBSSw2RkFDSiwyQkFBMkIsNEdBQzNCLFVBQVUsdUZBQ1YsNkJBQTZCOzs0RkFLcEIsNEJBQTRCO2tCQWR4QyxTQUFTOytCQUNFLDBCQUEwQixjQUN4QixJQUFJLFdBQ1A7d0JBQ1AsT0FBTzt3QkFDUCxjQUFjO3dCQUNkLElBQUk7d0JBQ0osMkJBQTJCO3dCQUMzQixVQUFVO3dCQUNWLDZCQUE2QjtxQkFDOUI7NkVBS1EsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TG9jYXRpb24sIE5nSWZ9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge01hdENhcmQsIE1hdENhcmRDb250ZW50fSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jYXJkJztcbmltcG9ydCB7TG9jYXRpb25Gb3JtQnV0dG9uQ29tcG9uZW50fSBmcm9tICcuLi9sb2NhdGlvbi1mb3JtLWJ1dHRvbi9sb2NhdGlvbi1mb3JtLWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHtNYXREaXZpZGVyfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaXZpZGVyJztcbmltcG9ydCB7TG9jYXRpb25EZWxldGVCdXR0b25Db21wb25lbnR9IGZyb20gJy4uL2xvY2F0aW9uLWRlbGV0ZS1idXR0b24vbG9jYXRpb24tZGVsZXRlLWJ1dHRvbi5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtbG9jYXRpb24taW5mb3JtYXRpb24nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTWF0Q2FyZCxcbiAgICBNYXRDYXJkQ29udGVudCxcbiAgICBOZ0lmLFxuICAgIExvY2F0aW9uRm9ybUJ1dHRvbkNvbXBvbmVudCxcbiAgICBNYXREaXZpZGVyLFxuICAgIExvY2F0aW9uRGVsZXRlQnV0dG9uQ29tcG9uZW50XG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9sb2NhdGlvbi1pbmZvcm1hdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9sb2NhdGlvbi1pbmZvcm1hdGlvbi5jb21wb25lbnQuc2Nzcydcbn0pXG5leHBvcnQgY2xhc3MgTG9jYXRpb25JbmZvcm1hdGlvbkNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIG1vZGVsOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBsb2NhdGlvbjogTG9jYXRpb25cbiAgKSB7XG4gIH1cblxuICByZWRpcmVjdEJhY2soKSB7XG4gICAgdGhpcy5sb2NhdGlvbi5iYWNrKCk7XG4gIH1cbn1cbiIsIjxtYXQtY2FyZCAqbmdJZj1cIm1vZGVsXCI+XG4gIDxtYXQtY2FyZC1jb250ZW50IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgIDxoMyBjbGFzcz1cIm1iLTIgZnctYm9sZFwiPnt7IG1vZGVsPy50aXRsZSB9fTwvaDM+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICA8YXBwLWxvY2F0aW9uLWZvcm0tYnV0dG9uIFttb2RlbF09XCJtb2RlbFwiIChzYXZlZCk9XCJtb2RlbCA9ICRldmVudFwiPjwvYXBwLWxvY2F0aW9uLWZvcm0tYnV0dG9uPlxuICAgICAgPGFwcC1sb2NhdGlvbi1kZWxldGUtYnV0dG9uIFttb2RlbF09XCJtb2RlbFwiIChkZWxldGVkKT1cInJlZGlyZWN0QmFjaygpXCI+PC9hcHAtbG9jYXRpb24tZGVsZXRlLWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9tYXQtY2FyZC1jb250ZW50PlxuICA8bWF0LWRpdmlkZXIgY2xhc3M9XCJteC0yXCI+PC9tYXQtZGl2aWRlcj5cbiAgPG1hdC1jYXJkLWNvbnRlbnQgY2xhc3M9XCJtdC0yIGQtZmxleCBmbGV4LWNvbHVtbiBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgZ2FwLTJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1zdGFydCBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LXdyYXBcIj5cbiAgICAgIDxzdHJvbmcgY2xhc3M9XCJ3LTEwMCBtYi0yXCI+TG9jYXRpb24gRGV0YWlsczwvc3Ryb25nPlxuICAgICAgPGRpdiAqbmdJZj1cIm1vZGVsPy5hZGRyZXNzXCIgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZ2FwLTEganVzdGlmeS1jb250ZW50LXN0YXJ0IHctMTAwIG1iLTJcIj5cbiAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1zZWNvbmRhcnlcIj5BZGRyZXNzPC9zbWFsbD5cbiAgICAgICAgPHAgY2xhc3M9XCJtYi0wXCI+e3sgbW9kZWw/LmFkZHJlc3MgfX08L3A+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJtb2RlbD8uZGVzY3JpcHRpb25cIiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBnYXAtMSBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgdy0xMDAgbWItMlwiPlxuICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LXNlY29uZGFyeVwiPkRlc2NyaXB0aW9uPC9zbWFsbD5cbiAgICAgICAgPHAgY2xhc3M9XCJtYi0wXCI+e3sgbW9kZWw/LmRlc2NyaXB0aW9uIH19PC9wPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgPC9tYXQtY2FyZC1jb250ZW50PlxuPC9tYXQtY2FyZD5cbiJdfQ==
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYXRpb24taW5mb3JtYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vbG9jYXRpb24vbG9jYXRpb24taW5mb3JtYXRpb24vbG9jYXRpb24taW5mb3JtYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vbG9jYXRpb24vbG9jYXRpb24taW5mb3JtYXRpb24vbG9jYXRpb24taW5mb3JtYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBWSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7O0FBZWxFLE1BQU0sT0FBTyw0QkFBNEI7SUFJN0I7SUFDRDtJQUpBLEtBQUssQ0FBTTtJQUVwQixZQUNVLFFBQWtCLEVBQ25CLE9BQXdCO1FBRHZCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbkIsWUFBTyxHQUFQLE9BQU8sQ0FBaUI7SUFFakMsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3ZCLENBQUM7d0dBWFUsNEJBQTRCOzRGQUE1Qiw0QkFBNEIsZ0hDbkJ6QyxxMkNBd0JXLHlERGJQLGNBQWMsOFRBQ2QsWUFBWSxtSUFDWiwyQkFBMkIsNEdBQzNCLDZCQUE2Qjs7NEZBS3BCLDRCQUE0QjtrQkFaeEMsU0FBUzsrQkFDRSwwQkFBMEIsY0FDeEIsSUFBSSxXQUNQO3dCQUNQLGNBQWM7d0JBQ2QsWUFBWTt3QkFDWiwyQkFBMkI7d0JBQzNCLDZCQUE2QjtxQkFDOUI7MkdBS1EsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBMb2NhdGlvbkZvcm1CdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi9sb2NhdGlvbi1mb3JtLWJ1dHRvbi9sb2NhdGlvbi1mb3JtLWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0ZXJpYWxNb2R1bGUgfSBmcm9tICcuLi8uLi9tYXRlcmlhbC5tb2R1bGUnO1xuaW1wb3J0IHsgVGVjaGxpZnlEZWxldGVCdXR0b25Db21wb25lbnQgfSBmcm9tICduZ3gtdGVjaGxpZnktY29yZSc7XG5pbXBvcnQgeyBMb2NhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9sb2NhdGlvbi5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWxvY2F0aW9uLWluZm9ybWF0aW9uJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE1hdGVyaWFsTW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBMb2NhdGlvbkZvcm1CdXR0b25Db21wb25lbnQsXG4gICAgVGVjaGxpZnlEZWxldGVCdXR0b25Db21wb25lbnRcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2xvY2F0aW9uLWluZm9ybWF0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2xvY2F0aW9uLWluZm9ybWF0aW9uLmNvbXBvbmVudC5zY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBMb2NhdGlvbkluZm9ybWF0aW9uQ29tcG9uZW50IHtcbiAgQElucHV0KCkgbW9kZWw6IGFueTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvbixcbiAgICBwdWJsaWMgc2VydmljZTogTG9jYXRpb25TZXJ2aWNlLFxuICApIHtcbiAgfVxuXG4gIHJlZGlyZWN0QmFjaygpIHtcbiAgICB0aGlzLmxvY2F0aW9uLmJhY2soKTtcbiAgfVxufVxuIiwiPG1hdC1jYXJkICpuZ0lmPVwibW9kZWxcIj5cbiAgPG1hdC1jYXJkLWNvbnRlbnQgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgPGgzIGNsYXNzPVwibWItMiBmdy1ib2xkXCI+e3sgbW9kZWw/LnRpdGxlIH19PC9oMz5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1zdGFydCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgdGV4dC1zZWNvbmRhcnlcIj5cbiAgICAgIDxhcHAtbG9jYXRpb24tZm9ybS1idXR0b24gW21vZGVsXT1cIm1vZGVsXCIgKHNhdmVkKT1cIm1vZGVsID0gJGV2ZW50XCI+PC9hcHAtbG9jYXRpb24tZm9ybS1idXR0b24+XG4gICAgICA8YXBwLXRlY2hsaWZ5LWRlbGV0ZS1idXR0b24gW2RhdGFdPVwie3RpdGxlOiBtb2RlbD8udGl0bGUsIHR5cGU6ICdMb2NhdGlvbid9XCIgW21vZGVsXT1cIm1vZGVsXCJcbiAgICAgICAgW3NlcnZpY2VdPVwic2VydmljZVwiIChkZWxldGVkKT1cInJlZGlyZWN0QmFjaygpXCI+PC9hcHAtdGVjaGxpZnktZGVsZXRlLWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9tYXQtY2FyZC1jb250ZW50PlxuICA8bWF0LWRpdmlkZXIgY2xhc3M9XCJteC0yXCI+PC9tYXQtZGl2aWRlcj5cbiAgPG1hdC1jYXJkLWNvbnRlbnQgY2xhc3M9XCJtdC0yIGQtZmxleCBmbGV4LWNvbHVtbiBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgZ2FwLTJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1zdGFydCBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LXdyYXBcIj5cbiAgICAgIDxzdHJvbmcgY2xhc3M9XCJ3LTEwMCBtYi0yXCI+TG9jYXRpb24gRGV0YWlsczwvc3Ryb25nPlxuICAgICAgPGRpdiAqbmdJZj1cIm1vZGVsPy5hZGRyZXNzXCIgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZ2FwLTEganVzdGlmeS1jb250ZW50LXN0YXJ0IHctMTAwIG1iLTJcIj5cbiAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1zZWNvbmRhcnlcIj5BZGRyZXNzPC9zbWFsbD5cbiAgICAgICAgPHAgY2xhc3M9XCJtYi0wXCI+e3sgbW9kZWw/LmFkZHJlc3MgfX08L3A+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJtb2RlbD8uZGVzY3JpcHRpb25cIiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBnYXAtMSBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgdy0xMDAgbWItMlwiPlxuICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LXNlY29uZGFyeVwiPkRlc2NyaXB0aW9uPC9zbWFsbD5cbiAgICAgICAgPHAgY2xhc3M9XCJtYi0wXCI+e3sgbW9kZWw/LmRlc2NyaXB0aW9uIH19PC9wPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgPC9tYXQtY2FyZC1jb250ZW50PlxuPC9tYXQtY2FyZD4iXX0=
@@ -1,10 +1,9 @@
1
1
  import { Component, signal } from '@angular/core';
2
- import { SearchableSelectorModule, TechlifyListingControllerInterface } from 'ngx-techlify-core';
2
+ import { SearchableSelectorModule, TechlifyDeleteButtonComponent, TechlifyIconModule, TechlifyListingControllerInterface } from 'ngx-techlify-core';
3
3
  import { FormsModule, ReactiveFormsModule } from '@angular/forms';
4
4
  import { RouterLink } from '@angular/router';
5
5
  import { InfiniteScrollDirective } from 'ngx-infinite-scroll';
6
6
  import { LocationFormButtonComponent } from '../location-form-button/location-form-button.component';
7
- import { LocationDeleteButtonComponent } from '../location-delete-button/location-delete-button.component';
8
7
  import { LocationStatusChangerComponent } from '../location-status-changer/location-status-changer.component';
9
8
  import { MaterialModule } from '../../material.module';
10
9
  import { CommonModule } from '@angular/common';
@@ -61,7 +60,7 @@ export class LocationListComponent extends TechlifyListingControllerInterface {
61
60
  }
62
61
  }
63
62
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LocationListComponent, deps: [{ token: i1.LocationService }, { token: i2.FormBuilder }, { token: i3.TechlifyFeatureService }], target: i0.ɵɵFactoryTarget.Component });
64
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: LocationListComponent, isStandalone: true, selector: "app-location-list", usesInheritance: true, ngImport: i0, template: "<mat-card>\n <mat-card-content class=\"d-flex justify-content-between align-items-center gap-2\">\n <div class=\"d-flex justify-content-start align-items-center gap-3\">\n <strong>Locations</strong>\n <app-location-form-button (saved)=\"reload()\"></app-location-form-button>\n </div>\n <form class=\"d-flex justify-content-end align-items-center gap-2\" [formGroup]=\"filterForm\" (submit)=\"reload()\">\n <mat-form-field>\n <mat-label>Search</mat-label>\n <input type=\"text\" placeholder=\"Search locations\" matInput formControlName=\"search\">\n </mat-form-field>\n </form>\n </mat-card-content>\n</mat-card>\n\n<mat-card class=\"mt-3\">\n <mat-card-content class=\"p-0\">\n <table #table mat-table [dataSource]=\"models\" class=\"w-100\" infiniteScroll [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\" [fromRoot]=\"true\" matSort\n (matSortChange)=\"sortColumn($event)\">\n\n <ng-container matColumnDef=\"#\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"Title\">\n <th mat-header-cell mat-sort-header=\"title\" *matHeaderCellDef> Title </th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.title }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"parent\">\n <th mat-header-cell mat-sort-header=\"parent\" *matHeaderCellDef> Parent </th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.parent?.title }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"Address\">\n <th mat-header-cell mat-sort-header=\"address\" *matHeaderCellDef> Address </th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.address }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"stock_receipts\">\n <th mat-header-cell *matHeaderCellDef> Stock Receipts </th>\n <td mat-cell *matCellDef=\"let element\">\n <span [routerLink]=\"['/inventory/stock-receipts']\" [queryParams]=\"{ location_ids: element.id }\"\n class='cursor-pointer'>\n {{element?.stock_receipts_count }} receipt(s)</span>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"stock_issues\">\n <th mat-header-cell *matHeaderCellDef> Stock Issues </th>\n <td mat-cell *matCellDef=\"let element\">\n <span [routerLink]=\"['/inventory/stock-issues']\" [queryParams]=\"{ location_ids: element.id }\"\n class='cursor-pointer'>\n {{element?.stock_issues_count }} issue(s)</span>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"Description\">\n <th mat-header-cell *matHeaderCellDef> Description </th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.description }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"status\">\n <th mat-header-cell *matHeaderCellDef> Status </th>\n <td mat-cell *matCellDef=\"let element\">\n <app-location-status-changer [location]=\"element\"></app-location-status-changer>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"Actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let element; let i = index\">\n <div class=\"d-flex justify-content-start align-items-center gap-2\">\n <app-location-form-button [model]=\"element\" (saved)=\"reload()\"></app-location-form-button>\n <a [routerLink]=\"['/inventory/locations', element?.id, 'view']\" class=\"text-decoration-none text-dark\">\n <span class=\"material-symbols-outlined\">visibility</span>\n </a>\n <span *ngIf=\"element?.stock_receipts_count == 0 && element?.stock_issues_count == 0\">\n <app-location-delete-button [model]=\"element\" (deleted)=\"modelDeleted(i)\"></app-location-delete-button>\n </span>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n <mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n </mat-card-content>\n</mat-card>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "ngmodule", type: MaterialModule }, { kind: "component", type: i5.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i5.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i8.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i9.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i9.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i10.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i10.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i10.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i10.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i10.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i10.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i10.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i10.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i10.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i10.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: SearchableSelectorModule }, { kind: "component", type: LocationFormButtonComponent, selector: "app-location-form-button", inputs: ["model"], outputs: ["saved"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: LocationDeleteButtonComponent, selector: "app-location-delete-button", inputs: ["model"], outputs: ["deleted"] }, { kind: "component", type: LocationStatusChangerComponent, selector: "app-location-status-changer", inputs: ["location"] }], preserveWhitespaces: true });
63
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: LocationListComponent, isStandalone: true, selector: "app-location-list", usesInheritance: true, ngImport: i0, template: "<mat-card>\n <mat-card-content class=\"d-flex justify-content-between align-items-center gap-2\">\n <div class=\"d-flex justify-content-start align-items-center gap-3 mb-0\">\n <h5 class=\"mb-0\">Locations</h5>\n <app-location-form-button (saved)=\"reload()\"></app-location-form-button>\n </div>\n <form class=\"d-flex justify-content-end align-items-center gap-2\" [formGroup]=\"filterForm\" (submit)=\"reload()\">\n <mat-form-field>\n <mat-label>Search</mat-label>\n <input type=\"text\" placeholder=\"Search locations\" matInput formControlName=\"search\">\n </mat-form-field>\n </form>\n </mat-card-content>\n</mat-card>\n\n<mat-card class=\"mt-3\">\n <mat-card-content class=\"p-0\">\n <table #table mat-table [dataSource]=\"models\" class=\"w-100\" infiniteScroll [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\" [fromRoot]=\"true\" matSort\n (matSortChange)=\"sortColumn($event)\">\n\n <ng-container matColumnDef=\"#\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"Title\">\n <th mat-header-cell mat-sort-header=\"title\" *matHeaderCellDef> Title </th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.title }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"parent\">\n <th mat-header-cell mat-sort-header=\"parent\" *matHeaderCellDef> Parent </th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.parent?.title }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"Address\">\n <th mat-header-cell mat-sort-header=\"address\" *matHeaderCellDef> Address </th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.address }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"stock_receipts\">\n <th mat-header-cell *matHeaderCellDef> Stock Receipts </th>\n <td mat-cell *matCellDef=\"let element\">\n <span [routerLink]=\"['/inventory/stock-receipts']\" [queryParams]=\"{ location_ids: element.id }\"\n class='cursor-pointer'>\n {{element?.stock_receipts_count }} receipt(s)</span>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"stock_issues\">\n <th mat-header-cell *matHeaderCellDef> Stock Issues </th>\n <td mat-cell *matCellDef=\"let element\">\n <span [routerLink]=\"['/inventory/stock-issues']\" [queryParams]=\"{ location_ids: element.id }\"\n class='cursor-pointer'>\n {{element?.stock_issues_count }} issue(s)</span>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"Description\">\n <th mat-header-cell *matHeaderCellDef> Description </th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.description }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"status\">\n <th mat-header-cell *matHeaderCellDef> Status </th>\n <td mat-cell *matCellDef=\"let element\">\n <app-location-status-changer [location]=\"element\"></app-location-status-changer>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"Actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let element; let i = index\">\n <div class=\"d-flex justify-content-start align-items-center gap-2 text-secondary\">\n <app-techlify-icon role='button' name=\"view\"\n [routerLink]=\"['/location/locations', element?.id, 'view']\"></app-techlify-icon>\n\n <app-location-form-button [model]=\"element\" (saved)=\"reload()\"></app-location-form-button>\n\n <span *ngIf=\"element?.stock_receipts_count == 0 && element?.stock_issues_count == 0\">\n <app-techlify-delete-button [data]=\"{title: element?.title, type: 'Location'}\" [model]=\"element\"\n [service]=\"service\" (deleted)=\"reload()\"></app-techlify-delete-button>\n </span>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n <mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n </mat-card-content>\n</mat-card>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "ngmodule", type: MaterialModule }, { kind: "component", type: i5.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i5.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i8.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i9.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i9.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i10.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i10.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i10.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i10.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i10.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i10.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i10.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i10.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i10.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i10.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: SearchableSelectorModule }, { kind: "component", type: LocationFormButtonComponent, selector: "app-location-form-button", inputs: ["model"], outputs: ["saved"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: LocationStatusChangerComponent, selector: "app-location-status-changer", inputs: ["location"] }, { kind: "ngmodule", type: TechlifyIconModule }, { kind: "component", type: i3.TechlifyIconComponent, selector: "app-techlify-icon", inputs: ["name", "size"] }, { kind: "component", type: TechlifyDeleteButtonComponent, selector: "app-techlify-delete-button", inputs: ["data", "model", "message", "service"], outputs: ["deleted"] }], preserveWhitespaces: true });
65
64
  }
66
65
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LocationListComponent, decorators: [{
67
66
  type: Component,
@@ -74,8 +73,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
74
73
  SearchableSelectorModule,
75
74
  LocationFormButtonComponent,
76
75
  RouterLink,
77
- LocationDeleteButtonComponent,
78
- LocationStatusChangerComponent
79
- ], template: "<mat-card>\n <mat-card-content class=\"d-flex justify-content-between align-items-center gap-2\">\n <div class=\"d-flex justify-content-start align-items-center gap-3\">\n <strong>Locations</strong>\n <app-location-form-button (saved)=\"reload()\"></app-location-form-button>\n </div>\n <form class=\"d-flex justify-content-end align-items-center gap-2\" [formGroup]=\"filterForm\" (submit)=\"reload()\">\n <mat-form-field>\n <mat-label>Search</mat-label>\n <input type=\"text\" placeholder=\"Search locations\" matInput formControlName=\"search\">\n </mat-form-field>\n </form>\n </mat-card-content>\n</mat-card>\n\n<mat-card class=\"mt-3\">\n <mat-card-content class=\"p-0\">\n <table #table mat-table [dataSource]=\"models\" class=\"w-100\" infiniteScroll [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\" [fromRoot]=\"true\" matSort\n (matSortChange)=\"sortColumn($event)\">\n\n <ng-container matColumnDef=\"#\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"Title\">\n <th mat-header-cell mat-sort-header=\"title\" *matHeaderCellDef> Title </th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.title }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"parent\">\n <th mat-header-cell mat-sort-header=\"parent\" *matHeaderCellDef> Parent </th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.parent?.title }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"Address\">\n <th mat-header-cell mat-sort-header=\"address\" *matHeaderCellDef> Address </th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.address }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"stock_receipts\">\n <th mat-header-cell *matHeaderCellDef> Stock Receipts </th>\n <td mat-cell *matCellDef=\"let element\">\n <span [routerLink]=\"['/inventory/stock-receipts']\" [queryParams]=\"{ location_ids: element.id }\"\n class='cursor-pointer'>\n {{element?.stock_receipts_count }} receipt(s)</span>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"stock_issues\">\n <th mat-header-cell *matHeaderCellDef> Stock Issues </th>\n <td mat-cell *matCellDef=\"let element\">\n <span [routerLink]=\"['/inventory/stock-issues']\" [queryParams]=\"{ location_ids: element.id }\"\n class='cursor-pointer'>\n {{element?.stock_issues_count }} issue(s)</span>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"Description\">\n <th mat-header-cell *matHeaderCellDef> Description </th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.description }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"status\">\n <th mat-header-cell *matHeaderCellDef> Status </th>\n <td mat-cell *matCellDef=\"let element\">\n <app-location-status-changer [location]=\"element\"></app-location-status-changer>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"Actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let element; let i = index\">\n <div class=\"d-flex justify-content-start align-items-center gap-2\">\n <app-location-form-button [model]=\"element\" (saved)=\"reload()\"></app-location-form-button>\n <a [routerLink]=\"['/inventory/locations', element?.id, 'view']\" class=\"text-decoration-none text-dark\">\n <span class=\"material-symbols-outlined\">visibility</span>\n </a>\n <span *ngIf=\"element?.stock_receipts_count == 0 && element?.stock_issues_count == 0\">\n <app-location-delete-button [model]=\"element\" (deleted)=\"modelDeleted(i)\"></app-location-delete-button>\n </span>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n <mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n </mat-card-content>\n</mat-card>" }]
76
+ LocationStatusChangerComponent,
77
+ TechlifyIconModule,
78
+ TechlifyDeleteButtonComponent
79
+ ], template: "<mat-card>\n <mat-card-content class=\"d-flex justify-content-between align-items-center gap-2\">\n <div class=\"d-flex justify-content-start align-items-center gap-3 mb-0\">\n <h5 class=\"mb-0\">Locations</h5>\n <app-location-form-button (saved)=\"reload()\"></app-location-form-button>\n </div>\n <form class=\"d-flex justify-content-end align-items-center gap-2\" [formGroup]=\"filterForm\" (submit)=\"reload()\">\n <mat-form-field>\n <mat-label>Search</mat-label>\n <input type=\"text\" placeholder=\"Search locations\" matInput formControlName=\"search\">\n </mat-form-field>\n </form>\n </mat-card-content>\n</mat-card>\n\n<mat-card class=\"mt-3\">\n <mat-card-content class=\"p-0\">\n <table #table mat-table [dataSource]=\"models\" class=\"w-100\" infiniteScroll [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\" [fromRoot]=\"true\" matSort\n (matSortChange)=\"sortColumn($event)\">\n\n <ng-container matColumnDef=\"#\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"Title\">\n <th mat-header-cell mat-sort-header=\"title\" *matHeaderCellDef> Title </th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.title }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"parent\">\n <th mat-header-cell mat-sort-header=\"parent\" *matHeaderCellDef> Parent </th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.parent?.title }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"Address\">\n <th mat-header-cell mat-sort-header=\"address\" *matHeaderCellDef> Address </th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.address }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"stock_receipts\">\n <th mat-header-cell *matHeaderCellDef> Stock Receipts </th>\n <td mat-cell *matCellDef=\"let element\">\n <span [routerLink]=\"['/inventory/stock-receipts']\" [queryParams]=\"{ location_ids: element.id }\"\n class='cursor-pointer'>\n {{element?.stock_receipts_count }} receipt(s)</span>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"stock_issues\">\n <th mat-header-cell *matHeaderCellDef> Stock Issues </th>\n <td mat-cell *matCellDef=\"let element\">\n <span [routerLink]=\"['/inventory/stock-issues']\" [queryParams]=\"{ location_ids: element.id }\"\n class='cursor-pointer'>\n {{element?.stock_issues_count }} issue(s)</span>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"Description\">\n <th mat-header-cell *matHeaderCellDef> Description </th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.description }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"status\">\n <th mat-header-cell *matHeaderCellDef> Status </th>\n <td mat-cell *matCellDef=\"let element\">\n <app-location-status-changer [location]=\"element\"></app-location-status-changer>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"Actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let element; let i = index\">\n <div class=\"d-flex justify-content-start align-items-center gap-2 text-secondary\">\n <app-techlify-icon role='button' name=\"view\"\n [routerLink]=\"['/location/locations', element?.id, 'view']\"></app-techlify-icon>\n\n <app-location-form-button [model]=\"element\" (saved)=\"reload()\"></app-location-form-button>\n\n <span *ngIf=\"element?.stock_receipts_count == 0 && element?.stock_issues_count == 0\">\n <app-techlify-delete-button [data]=\"{title: element?.title, type: 'Location'}\" [model]=\"element\"\n [service]=\"service\" (deleted)=\"reload()\"></app-techlify-delete-button>\n </span>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n <mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n </mat-card-content>\n</mat-card>" }]
80
80
  }], ctorParameters: () => [{ type: i1.LocationService }, { type: i2.FormBuilder }, { type: i3.TechlifyFeatureService }] });
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYXRpb24tbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZlbnRvcnktY29tbW9uL3NyYy9saWIvaW52ZW50b3J5LWNvbW1vbi9sb2NhdGlvbi9sb2NhdGlvbi1saXN0L2xvY2F0aW9uLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vbG9jYXRpb24vbG9jYXRpb24tbGlzdC9sb2NhdGlvbi1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSx3QkFBd0IsRUFBMEIsa0NBQWtDLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN6SCxPQUFPLEVBQWUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTlELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ3JHLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQzNHLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQzlHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7OztBQW9CL0MsTUFBTSxPQUFPLHFCQUFzQixTQUFRLGtDQUFrQztJQWdCdEQ7SUFDWDtJQUNBO0lBakJWLGdCQUFnQixHQUFhO1FBQzNCLEdBQUc7UUFDSCxPQUFPO1FBQ1AsU0FBUztRQUNULGdCQUFnQjtRQUNoQixjQUFjO1FBQ2QsYUFBYTtRQUNiLFFBQVE7UUFDUixTQUFTO0tBQ1YsQ0FBQTtJQUVRLHVCQUF1QixHQUFRLEVBQUUsQ0FBQztJQUMzQyxxQkFBcUIsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7SUFFL0MsWUFDcUIsT0FBd0IsRUFDbkMsV0FBd0IsRUFDeEIsY0FBc0M7UUFFOUMsS0FBSyxFQUFFLENBQUM7UUFKVyxZQUFPLEdBQVAsT0FBTyxDQUFpQjtRQUNuQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixtQkFBYyxHQUFkLGNBQWMsQ0FBd0I7UUFJOUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUN2QyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDWixPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUM7WUFDcEIsSUFBSSxFQUFFLGVBQWU7WUFDckIsU0FBUyxFQUFFLDJCQUEyQjtTQUN2QyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUV2QixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7UUFFckYsSUFBSSxJQUFJLENBQUMscUJBQXFCLEVBQUUsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDckQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN2RCxDQUFDO0lBRUgsQ0FBQzt3R0E5Q1UscUJBQXFCOzRGQUFyQixxQkFBcUIsb0dDOUJsQyw2MElBMkZXLHlERDNFUCxZQUFZLGtJQUNaLFdBQVcsNHBCQUNYLHVCQUF1Qix5V0FDdkIsY0FBYyxpNUVBQ2QsbUJBQW1CLCtVQUNuQix3QkFBd0IsK0JBQ3hCLDJCQUEyQiw0R0FDM0IsVUFBVSxvT0FDViw2QkFBNkIsZ0hBQzdCLDhCQUE4Qjs7NEZBS3JCLHFCQUFxQjtrQkFsQmpDLFNBQVM7K0JBQ0UsbUJBQW1CLGNBQ2pCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsdUJBQXVCO3dCQUN2QixjQUFjO3dCQUNkLG1CQUFtQjt3QkFDbkIsd0JBQXdCO3dCQUN4QiwyQkFBMkI7d0JBQzNCLFVBQVU7d0JBQ1YsNkJBQTZCO3dCQUM3Qiw4QkFBOEI7cUJBQy9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2VhcmNoYWJsZVNlbGVjdG9yTW9kdWxlLCBUZWNobGlmeUZlYXR1cmVTZXJ2aWNlLCBUZWNobGlmeUxpc3RpbmdDb250cm9sbGVySW50ZXJmYWNlIH0gZnJvbSAnbmd4LXRlY2hsaWZ5LWNvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUm91dGVyTGluayB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJbmZpbml0ZVNjcm9sbERpcmVjdGl2ZSB9IGZyb20gJ25neC1pbmZpbml0ZS1zY3JvbGwnO1xuaW1wb3J0IHsgTG9jYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vbG9jYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBMb2NhdGlvbkZvcm1CdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi9sb2NhdGlvbi1mb3JtLWJ1dHRvbi9sb2NhdGlvbi1mb3JtLWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTG9jYXRpb25EZWxldGVCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi9sb2NhdGlvbi1kZWxldGUtYnV0dG9uL2xvY2F0aW9uLWRlbGV0ZS1idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IExvY2F0aW9uU3RhdHVzQ2hhbmdlckNvbXBvbmVudCB9IGZyb20gJy4uL2xvY2F0aW9uLXN0YXR1cy1jaGFuZ2VyL2xvY2F0aW9uLXN0YXR1cy1jaGFuZ2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXRlcmlhbE1vZHVsZSB9IGZyb20gJy4uLy4uL21hdGVyaWFsLm1vZHVsZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtbG9jYXRpb24tbGlzdCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgSW5maW5pdGVTY3JvbGxEaXJlY3RpdmUsXG4gICAgTWF0ZXJpYWxNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBTZWFyY2hhYmxlU2VsZWN0b3JNb2R1bGUsXG4gICAgTG9jYXRpb25Gb3JtQnV0dG9uQ29tcG9uZW50LFxuICAgIFJvdXRlckxpbmssXG4gICAgTG9jYXRpb25EZWxldGVCdXR0b25Db21wb25lbnQsXG4gICAgTG9jYXRpb25TdGF0dXNDaGFuZ2VyQ29tcG9uZW50XG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9sb2NhdGlvbi1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2xvY2F0aW9uLWxpc3QuY29tcG9uZW50LnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIExvY2F0aW9uTGlzdENvbXBvbmVudCBleHRlbmRzIFRlY2hsaWZ5TGlzdGluZ0NvbnRyb2xsZXJJbnRlcmZhY2UgaW1wbGVtZW50cyBPbkluaXQge1xuICBkaXNwbGF5ZWRDb2x1bW5zOiBzdHJpbmdbXSA9IFtcbiAgICAnIycsXG4gICAgJ1RpdGxlJyxcbiAgICAnQWRkcmVzcycsXG4gICAgJ3N0b2NrX3JlY2VpcHRzJyxcbiAgICAnc3RvY2tfaXNzdWVzJyxcbiAgICAnRGVzY3JpcHRpb24nLFxuICAgICdzdGF0dXMnLFxuICAgICdBY3Rpb25zJyxcbiAgXVxuXG4gIG92ZXJyaWRlIGZpbHRlckZvcm1Db25maWd1cmF0aW9uOiBhbnkgPSB7fTtcbiAgaXNTdWJsb2NhdGlvbnNFbmFibGVkID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgc2VydmljZTogTG9jYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgZmVhdHVyZVNlcnZpY2U6IFRlY2hsaWZ5RmVhdHVyZVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuZmlsdGVyRm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgc2VhcmNoOiBbJyddLFxuICAgICAgc29ydF9ieTogWydpZHxkZXNjJ10sXG4gICAgICB3aXRoOiAnc3RhdHVzLHBhcmVudCcsXG4gICAgICB3aXRoQ291bnQ6ICdzdG9ja1JlY2VpcHRzLHN0b2NrSXNzdWVzJyxcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuYWRkUGFyZW50Q29sdW1uKCk7XG5cbiAgICB0aGlzLnBhdGNoRmlsdGVyc0Zyb21Sb3V0ZSgpO1xuICAgIHRoaXMubGlzdGVuRmlsdGVyQ2hhbmdlcygpO1xuICAgIHRoaXMubG9hZERhdGEoKTtcbiAgfVxuXG4gIGFkZFBhcmVudENvbHVtbigpIHtcbiAgICB0aGlzLmlzU3VibG9jYXRpb25zRW5hYmxlZC5zZXQodGhpcy5mZWF0dXJlU2VydmljZS5pc0ZlYXR1cmVFeGlzdHMoJ3N1Yi1sb2NhdGlvbnMnKSk7XG5cbiAgICBpZiAodGhpcy5pc1N1YmxvY2F0aW9uc0VuYWJsZWQoKSkge1xuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmRpc3BsYXllZENvbHVtbnMuaW5kZXhPZignVGl0bGUnKTtcbiAgICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucy5zcGxpY2UoaW5kZXggKyAxLCAwLCAncGFyZW50Jyk7XG4gICAgfVxuXG4gIH1cbn1cbiIsIjxtYXQtY2FyZD5cbiAgPG1hdC1jYXJkLWNvbnRlbnQgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgYWxpZ24taXRlbXMtY2VudGVyIGdhcC0zXCI+XG4gICAgICA8c3Ryb25nPkxvY2F0aW9uczwvc3Ryb25nPlxuICAgICAgPGFwcC1sb2NhdGlvbi1mb3JtLWJ1dHRvbiAoc2F2ZWQpPVwicmVsb2FkKClcIj48L2FwcC1sb2NhdGlvbi1mb3JtLWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8Zm9ybSBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiIFtmb3JtR3JvdXBdPVwiZmlsdGVyRm9ybVwiIChzdWJtaXQpPVwicmVsb2FkKClcIj5cbiAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPG1hdC1sYWJlbD5TZWFyY2g8L21hdC1sYWJlbD5cbiAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJTZWFyY2ggbG9jYXRpb25zXCIgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwic2VhcmNoXCI+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDwvZm9ybT5cbiAgPC9tYXQtY2FyZC1jb250ZW50PlxuPC9tYXQtY2FyZD5cblxuPG1hdC1jYXJkIGNsYXNzPVwibXQtM1wiPlxuICA8bWF0LWNhcmQtY29udGVudCBjbGFzcz1cInAtMFwiPlxuICAgIDx0YWJsZSAjdGFibGUgbWF0LXRhYmxlIFtkYXRhU291cmNlXT1cIm1vZGVsc1wiIGNsYXNzPVwidy0xMDBcIiBpbmZpbml0ZVNjcm9sbCBbaW5maW5pdGVTY3JvbGxEaXN0YW5jZV09XCIyXCJcbiAgICAgIFtpbmZpbml0ZVNjcm9sbFRocm90dGxlXT1cIjUwXCIgKHNjcm9sbGVkKT1cIm9uU2Nyb2xsKClcIiBbZnJvbVJvb3RdPVwidHJ1ZVwiIG1hdFNvcnRcbiAgICAgIChtYXRTb3J0Q2hhbmdlKT1cInNvcnRDb2x1bW4oJGV2ZW50KVwiPlxuXG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cIiNcIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4gIyA8L3RoPlxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudDsgbGV0IGkgPSBpbmRleFwiPnt7IGkgKyAxIH19PC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cIlRpdGxlXCI+XG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgbWF0LXNvcnQtaGVhZGVyPVwidGl0bGVcIiAqbWF0SGVhZGVyQ2VsbERlZj4gVGl0bGUgPC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj57eyBlbGVtZW50Py50aXRsZSB9fTwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJwYXJlbnRcIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCBtYXQtc29ydC1oZWFkZXI9XCJwYXJlbnRcIiAqbWF0SGVhZGVyQ2VsbERlZj4gUGFyZW50IDwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+e3sgZWxlbWVudD8ucGFyZW50Py50aXRsZSB9fTwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJBZGRyZXNzXCI+XG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgbWF0LXNvcnQtaGVhZGVyPVwiYWRkcmVzc1wiICptYXRIZWFkZXJDZWxsRGVmPiBBZGRyZXNzIDwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+e3sgZWxlbWVudD8uYWRkcmVzcyB9fTwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJzdG9ja19yZWNlaXB0c1wiPlxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiBTdG9jayBSZWNlaXB0cyA8L3RoPlxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPlxuICAgICAgICAgIDxzcGFuIFtyb3V0ZXJMaW5rXT1cIlsnL2ludmVudG9yeS9zdG9jay1yZWNlaXB0cyddXCIgW3F1ZXJ5UGFyYW1zXT1cInsgbG9jYXRpb25faWRzOiBlbGVtZW50LmlkIH1cIlxuICAgICAgICAgICAgY2xhc3M9J2N1cnNvci1wb2ludGVyJz5cbiAgICAgICAgICAgIHt7ZWxlbWVudD8uc3RvY2tfcmVjZWlwdHNfY291bnQgfX0gcmVjZWlwdChzKTwvc3Bhbj5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInN0b2NrX2lzc3Vlc1wiPlxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiBTdG9jayBJc3N1ZXMgPC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICA8c3BhbiBbcm91dGVyTGlua109XCJbJy9pbnZlbnRvcnkvc3RvY2staXNzdWVzJ11cIiBbcXVlcnlQYXJhbXNdPVwieyBsb2NhdGlvbl9pZHM6IGVsZW1lbnQuaWQgfVwiXG4gICAgICAgICAgICBjbGFzcz0nY3Vyc29yLXBvaW50ZXInPlxuICAgICAgICAgICAge3tlbGVtZW50Py5zdG9ja19pc3N1ZXNfY291bnQgfX0gaXNzdWUocyk8L3NwYW4+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJEZXNjcmlwdGlvblwiPlxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiBEZXNjcmlwdGlvbiA8L3RoPlxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPnt7IGVsZW1lbnQ/LmRlc2NyaXB0aW9uIH19PC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInN0YXR1c1wiPlxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiBTdGF0dXMgPC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICA8YXBwLWxvY2F0aW9uLXN0YXR1cy1jaGFuZ2VyIFtsb2NhdGlvbl09XCJlbGVtZW50XCI+PC9hcHAtbG9jYXRpb24tc3RhdHVzLWNoYW5nZXI+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJBY3Rpb25zXCI+XG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+IEFjdGlvbnMgPC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnQ7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1zdGFydCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgIDxhcHAtbG9jYXRpb24tZm9ybS1idXR0b24gW21vZGVsXT1cImVsZW1lbnRcIiAoc2F2ZWQpPVwicmVsb2FkKClcIj48L2FwcC1sb2NhdGlvbi1mb3JtLWJ1dHRvbj5cbiAgICAgICAgICAgIDxhIFtyb3V0ZXJMaW5rXT1cIlsnL2ludmVudG9yeS9sb2NhdGlvbnMnLCBlbGVtZW50Py5pZCwgJ3ZpZXcnXVwiIGNsYXNzPVwidGV4dC1kZWNvcmF0aW9uLW5vbmUgdGV4dC1kYXJrXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPnZpc2liaWxpdHk8L3NwYW4+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImVsZW1lbnQ/LnN0b2NrX3JlY2VpcHRzX2NvdW50ID09IDAgJiYgZWxlbWVudD8uc3RvY2tfaXNzdWVzX2NvdW50ID09IDBcIj5cbiAgICAgICAgICAgICAgPGFwcC1sb2NhdGlvbi1kZWxldGUtYnV0dG9uIFttb2RlbF09XCJlbGVtZW50XCIgKGRlbGV0ZWQpPVwibW9kZWxEZWxldGVkKGkpXCI+PC9hcHAtbG9jYXRpb24tZGVsZXRlLWJ1dHRvbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnNcIj48L3RyPlxuICAgICAgPHRyIG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnM7XCI+PC90cj5cbiAgICA8L3RhYmxlPlxuICAgIDxtYXQtcHJvZ3Jlc3MtYmFyICpuZ0lmPVwiaXNXb3JraW5nXCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIj48L21hdC1wcm9ncmVzcy1iYXI+XG4gIDwvbWF0LWNhcmQtY29udGVudD5cbjwvbWF0LWNhcmQ+Il19
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYXRpb24tbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZlbnRvcnktY29tbW9uL3NyYy9saWIvaW52ZW50b3J5LWNvbW1vbi9sb2NhdGlvbi9sb2NhdGlvbi1saXN0L2xvY2F0aW9uLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vbG9jYXRpb24vbG9jYXRpb24tbGlzdC9sb2NhdGlvbi1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSw2QkFBNkIsRUFBMEIsa0JBQWtCLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM1SyxPQUFPLEVBQWUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTlELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ3JHLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQzlHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7OztBQXFCL0MsTUFBTSxPQUFPLHFCQUFzQixTQUFRLGtDQUFrQztJQWdCdEQ7SUFDWDtJQUNBO0lBakJWLGdCQUFnQixHQUFhO1FBQzNCLEdBQUc7UUFDSCxPQUFPO1FBQ1AsU0FBUztRQUNULGdCQUFnQjtRQUNoQixjQUFjO1FBQ2QsYUFBYTtRQUNiLFFBQVE7UUFDUixTQUFTO0tBQ1YsQ0FBQTtJQUVRLHVCQUF1QixHQUFRLEVBQUUsQ0FBQztJQUMzQyxxQkFBcUIsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7SUFFL0MsWUFDcUIsT0FBd0IsRUFDbkMsV0FBd0IsRUFDeEIsY0FBc0M7UUFFOUMsS0FBSyxFQUFFLENBQUM7UUFKVyxZQUFPLEdBQVAsT0FBTyxDQUFpQjtRQUNuQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixtQkFBYyxHQUFkLGNBQWMsQ0FBd0I7UUFJOUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUN2QyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDWixPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUM7WUFDcEIsSUFBSSxFQUFFLGVBQWU7WUFDckIsU0FBUyxFQUFFLDJCQUEyQjtTQUN2QyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUV2QixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7UUFFckYsSUFBSSxJQUFJLENBQUMscUJBQXFCLEVBQUUsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDckQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN2RCxDQUFDO0lBRUgsQ0FBQzt3R0E5Q1UscUJBQXFCOzRGQUFyQixxQkFBcUIsb0dDOUJsQyx5NElBNkZXLHlERDlFUCxZQUFZLGtJQUNaLFdBQVcsNHBCQUNYLHVCQUF1Qix5V0FDdkIsY0FBYyxpNUVBQ2QsbUJBQW1CLCtVQUNuQix3QkFBd0IsK0JBQ3hCLDJCQUEyQiw0R0FDM0IsVUFBVSxvT0FDViw4QkFBOEIsNkZBQzlCLGtCQUFrQiwrSUFDbEIsNkJBQTZCOzs0RkFLcEIscUJBQXFCO2tCQW5CakMsU0FBUzsrQkFDRSxtQkFBbUIsY0FDakIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCx1QkFBdUI7d0JBQ3ZCLGNBQWM7d0JBQ2QsbUJBQW1CO3dCQUNuQix3QkFBd0I7d0JBQ3hCLDJCQUEyQjt3QkFDM0IsVUFBVTt3QkFDViw4QkFBOEI7d0JBQzlCLGtCQUFrQjt3QkFDbEIsNkJBQTZCO3FCQUM5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNlYXJjaGFibGVTZWxlY3Rvck1vZHVsZSwgVGVjaGxpZnlEZWxldGVCdXR0b25Db21wb25lbnQsIFRlY2hsaWZ5RmVhdHVyZVNlcnZpY2UsIFRlY2hsaWZ5SWNvbk1vZHVsZSwgVGVjaGxpZnlMaXN0aW5nQ29udHJvbGxlckludGVyZmFjZSB9IGZyb20gJ25neC10ZWNobGlmeS1jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFJvdXRlckxpbmsgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSW5maW5pdGVTY3JvbGxEaXJlY3RpdmUgfSBmcm9tICduZ3gtaW5maW5pdGUtc2Nyb2xsJztcbmltcG9ydCB7IExvY2F0aW9uU2VydmljZSB9IGZyb20gJy4uL2xvY2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9jYXRpb25Gb3JtQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vbG9jYXRpb24tZm9ybS1idXR0b24vbG9jYXRpb24tZm9ybS1idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IExvY2F0aW9uU3RhdHVzQ2hhbmdlckNvbXBvbmVudCB9IGZyb20gJy4uL2xvY2F0aW9uLXN0YXR1cy1jaGFuZ2VyL2xvY2F0aW9uLXN0YXR1cy1jaGFuZ2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXRlcmlhbE1vZHVsZSB9IGZyb20gJy4uLy4uL21hdGVyaWFsLm1vZHVsZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtbG9jYXRpb24tbGlzdCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgSW5maW5pdGVTY3JvbGxEaXJlY3RpdmUsXG4gICAgTWF0ZXJpYWxNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBTZWFyY2hhYmxlU2VsZWN0b3JNb2R1bGUsXG4gICAgTG9jYXRpb25Gb3JtQnV0dG9uQ29tcG9uZW50LFxuICAgIFJvdXRlckxpbmssXG4gICAgTG9jYXRpb25TdGF0dXNDaGFuZ2VyQ29tcG9uZW50LFxuICAgIFRlY2hsaWZ5SWNvbk1vZHVsZSxcbiAgICBUZWNobGlmeURlbGV0ZUJ1dHRvbkNvbXBvbmVudFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vbG9jYXRpb24tbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9sb2NhdGlvbi1saXN0LmNvbXBvbmVudC5zY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBMb2NhdGlvbkxpc3RDb21wb25lbnQgZXh0ZW5kcyBUZWNobGlmeUxpc3RpbmdDb250cm9sbGVySW50ZXJmYWNlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgZGlzcGxheWVkQ29sdW1uczogc3RyaW5nW10gPSBbXG4gICAgJyMnLFxuICAgICdUaXRsZScsXG4gICAgJ0FkZHJlc3MnLFxuICAgICdzdG9ja19yZWNlaXB0cycsXG4gICAgJ3N0b2NrX2lzc3VlcycsXG4gICAgJ0Rlc2NyaXB0aW9uJyxcbiAgICAnc3RhdHVzJyxcbiAgICAnQWN0aW9ucycsXG4gIF1cblxuICBvdmVycmlkZSBmaWx0ZXJGb3JtQ29uZmlndXJhdGlvbjogYW55ID0ge307XG4gIGlzU3VibG9jYXRpb25zRW5hYmxlZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHNlcnZpY2U6IExvY2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIGZlYXR1cmVTZXJ2aWNlOiBUZWNobGlmeUZlYXR1cmVTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLmZpbHRlckZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIHNlYXJjaDogWycnXSxcbiAgICAgIHNvcnRfYnk6IFsnaWR8ZGVzYyddLFxuICAgICAgd2l0aDogJ3N0YXR1cyxwYXJlbnQnLFxuICAgICAgd2l0aENvdW50OiAnc3RvY2tSZWNlaXB0cyxzdG9ja0lzc3VlcycsXG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmFkZFBhcmVudENvbHVtbigpO1xuXG4gICAgdGhpcy5wYXRjaEZpbHRlcnNGcm9tUm91dGUoKTtcbiAgICB0aGlzLmxpc3RlbkZpbHRlckNoYW5nZXMoKTtcbiAgICB0aGlzLmxvYWREYXRhKCk7XG4gIH1cblxuICBhZGRQYXJlbnRDb2x1bW4oKSB7XG4gICAgdGhpcy5pc1N1YmxvY2F0aW9uc0VuYWJsZWQuc2V0KHRoaXMuZmVhdHVyZVNlcnZpY2UuaXNGZWF0dXJlRXhpc3RzKCdzdWItbG9jYXRpb25zJykpO1xuXG4gICAgaWYgKHRoaXMuaXNTdWJsb2NhdGlvbnNFbmFibGVkKCkpIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5kaXNwbGF5ZWRDb2x1bW5zLmluZGV4T2YoJ1RpdGxlJyk7XG4gICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMuc3BsaWNlKGluZGV4ICsgMSwgMCwgJ3BhcmVudCcpO1xuICAgIH1cblxuICB9XG59XG4iLCI8bWF0LWNhcmQ+XG4gIDxtYXQtY2FyZC1jb250ZW50IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMyBtYi0wXCI+XG4gICAgICA8aDUgY2xhc3M9XCJtYi0wXCI+TG9jYXRpb25zPC9oNT5cbiAgICAgIDxhcHAtbG9jYXRpb24tZm9ybS1idXR0b24gKHNhdmVkKT1cInJlbG9hZCgpXCI+PC9hcHAtbG9jYXRpb24tZm9ybS1idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGZvcm0gY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIiBbZm9ybUdyb3VwXT1cImZpbHRlckZvcm1cIiAoc3VibWl0KT1cInJlbG9hZCgpXCI+XG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDxtYXQtbGFiZWw+U2VhcmNoPC9tYXQtbGFiZWw+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoIGxvY2F0aW9uc1wiIG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cInNlYXJjaFwiPlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8L2Zvcm0+XG4gIDwvbWF0LWNhcmQtY29udGVudD5cbjwvbWF0LWNhcmQ+XG5cbjxtYXQtY2FyZCBjbGFzcz1cIm10LTNcIj5cbiAgPG1hdC1jYXJkLWNvbnRlbnQgY2xhc3M9XCJwLTBcIj5cbiAgICA8dGFibGUgI3RhYmxlIG1hdC10YWJsZSBbZGF0YVNvdXJjZV09XCJtb2RlbHNcIiBjbGFzcz1cInctMTAwXCIgaW5maW5pdGVTY3JvbGwgW2luZmluaXRlU2Nyb2xsRGlzdGFuY2VdPVwiMlwiXG4gICAgICBbaW5maW5pdGVTY3JvbGxUaHJvdHRsZV09XCI1MFwiIChzY3JvbGxlZCk9XCJvblNjcm9sbCgpXCIgW2Zyb21Sb290XT1cInRydWVcIiBtYXRTb3J0XG4gICAgICAobWF0U29ydENoYW5nZSk9XCJzb3J0Q29sdW1uKCRldmVudClcIj5cblxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCIjXCI+XG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+ICMgPC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnQ7IGxldCBpID0gaW5kZXhcIj57eyBpICsgMSB9fTwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJUaXRsZVwiPlxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsIG1hdC1zb3J0LWhlYWRlcj1cInRpdGxlXCIgKm1hdEhlYWRlckNlbGxEZWY+IFRpdGxlIDwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+e3sgZWxlbWVudD8udGl0bGUgfX08L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwicGFyZW50XCI+XG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgbWF0LXNvcnQtaGVhZGVyPVwicGFyZW50XCIgKm1hdEhlYWRlckNlbGxEZWY+IFBhcmVudCA8L3RoPlxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPnt7IGVsZW1lbnQ/LnBhcmVudD8udGl0bGUgfX08L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiQWRkcmVzc1wiPlxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsIG1hdC1zb3J0LWhlYWRlcj1cImFkZHJlc3NcIiAqbWF0SGVhZGVyQ2VsbERlZj4gQWRkcmVzcyA8L3RoPlxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPnt7IGVsZW1lbnQ/LmFkZHJlc3MgfX08L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwic3RvY2tfcmVjZWlwdHNcIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4gU3RvY2sgUmVjZWlwdHMgPC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICA8c3BhbiBbcm91dGVyTGlua109XCJbJy9pbnZlbnRvcnkvc3RvY2stcmVjZWlwdHMnXVwiIFtxdWVyeVBhcmFtc109XCJ7IGxvY2F0aW9uX2lkczogZWxlbWVudC5pZCB9XCJcbiAgICAgICAgICAgIGNsYXNzPSdjdXJzb3ItcG9pbnRlcic+XG4gICAgICAgICAgICB7e2VsZW1lbnQ/LnN0b2NrX3JlY2VpcHRzX2NvdW50IH19IHJlY2VpcHQocyk8L3NwYW4+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJzdG9ja19pc3N1ZXNcIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4gU3RvY2sgSXNzdWVzIDwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+XG4gICAgICAgICAgPHNwYW4gW3JvdXRlckxpbmtdPVwiWycvaW52ZW50b3J5L3N0b2NrLWlzc3VlcyddXCIgW3F1ZXJ5UGFyYW1zXT1cInsgbG9jYXRpb25faWRzOiBlbGVtZW50LmlkIH1cIlxuICAgICAgICAgICAgY2xhc3M9J2N1cnNvci1wb2ludGVyJz5cbiAgICAgICAgICAgIHt7ZWxlbWVudD8uc3RvY2tfaXNzdWVzX2NvdW50IH19IGlzc3VlKHMpPC9zcGFuPlxuICAgICAgICA8L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiRGVzY3JpcHRpb25cIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4gRGVzY3JpcHRpb24gPC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj57eyBlbGVtZW50Py5kZXNjcmlwdGlvbiB9fTwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJzdGF0dXNcIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4gU3RhdHVzIDwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+XG4gICAgICAgICAgPGFwcC1sb2NhdGlvbi1zdGF0dXMtY2hhbmdlciBbbG9jYXRpb25dPVwiZWxlbWVudFwiPjwvYXBwLWxvY2F0aW9uLXN0YXR1cy1jaGFuZ2VyPlxuICAgICAgICA8L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiQWN0aW9uc1wiPlxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiBBY3Rpb25zIDwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50OyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIHRleHQtc2Vjb25kYXJ5XCI+XG4gICAgICAgICAgICA8YXBwLXRlY2hsaWZ5LWljb24gcm9sZT0nYnV0dG9uJyBuYW1lPVwidmlld1wiXG4gICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIlsnL2xvY2F0aW9uL2xvY2F0aW9ucycsIGVsZW1lbnQ/LmlkLCAndmlldyddXCI+PC9hcHAtdGVjaGxpZnktaWNvbj5cblxuICAgICAgICAgICAgPGFwcC1sb2NhdGlvbi1mb3JtLWJ1dHRvbiBbbW9kZWxdPVwiZWxlbWVudFwiIChzYXZlZCk9XCJyZWxvYWQoKVwiPjwvYXBwLWxvY2F0aW9uLWZvcm0tYnV0dG9uPlxuXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImVsZW1lbnQ/LnN0b2NrX3JlY2VpcHRzX2NvdW50ID09IDAgJiYgZWxlbWVudD8uc3RvY2tfaXNzdWVzX2NvdW50ID09IDBcIj5cbiAgICAgICAgICAgICAgPGFwcC10ZWNobGlmeS1kZWxldGUtYnV0dG9uIFtkYXRhXT1cInt0aXRsZTogZWxlbWVudD8udGl0bGUsIHR5cGU6ICdMb2NhdGlvbid9XCIgW21vZGVsXT1cImVsZW1lbnRcIlxuICAgICAgICAgICAgICAgIFtzZXJ2aWNlXT1cInNlcnZpY2VcIiAoZGVsZXRlZCk9XCJyZWxvYWQoKVwiPjwvYXBwLXRlY2hsaWZ5LWRlbGV0ZS1idXR0b24+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zXCI+PC90cj5cbiAgICAgIDx0ciBtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBkaXNwbGF5ZWRDb2x1bW5zO1wiPjwvdHI+XG4gICAgPC90YWJsZT5cbiAgICA8bWF0LXByb2dyZXNzLWJhciAqbmdJZj1cImlzV29ya2luZ1wiIG1vZGU9XCJpbmRldGVybWluYXRlXCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxuICA8L21hdC1jYXJkLWNvbnRlbnQ+XG48L21hdC1jYXJkPiJdfQ==
@@ -14,6 +14,7 @@ import * as i7 from "@angular/forms";
14
14
  export class LocationSelectorComponent {
15
15
  locationService;
16
16
  featureService;
17
+ appearance = input('outline');
17
18
  label = input('Location');
18
19
  placeholder = input('Select a location');
19
20
  includeNone = input(true);
@@ -43,7 +44,7 @@ export class LocationSelectorComponent {
43
44
  if (search) {
44
45
  params.search = search;
45
46
  }
46
- this.locationService.index(params).subscribe({
47
+ this.locationService.index(params, true).subscribe({
47
48
  next: (response) => {
48
49
  const flatLocations = response.data;
49
50
  this.locations = this.isSubLocationEnabled()
@@ -134,13 +135,13 @@ export class LocationSelectorComponent {
134
135
  this.isDisabled = isDisabled;
135
136
  }
136
137
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LocationSelectorComponent, deps: [{ token: i1.LocationService }, { token: i2.TechlifyFeatureService }], target: i0.ɵɵFactoryTarget.Component });
137
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: LocationSelectorComponent, isStandalone: true, selector: "app-location-selector", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, includeNone: { classPropertyName: "includeNone", publicName: "includeNone", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
138
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: LocationSelectorComponent, isStandalone: true, selector: "app-location-selector", inputs: { appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, includeNone: { classPropertyName: "includeNone", publicName: "includeNone", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
138
139
  {
139
140
  provide: NG_VALUE_ACCESSOR,
140
141
  useExisting: forwardRef(() => LocationSelectorComponent),
141
142
  multi: true
142
143
  }
143
- ], ngImport: i0, template: "<mat-form-field class=\"w-100\">\n <mat-label>{{ label() }}</mat-label>\n <mat-select [value]=\"selectedValue\" [disabled]=\"isDisabled\" [placeholder]=\"placeholder()\"\n (selectionChange)=\"onSelectionChange($event.value)\">\n\n <div class=\"sticky-search-container\">\n <input [formControl]=\"searchControl\" placeholder=\"Search...\" class=\"search-input\" (keydown)=\"$event.stopPropagation()\">\n </div>\n\n <mat-option *ngIf=\"includeNone()\" [value]=\"null\">None</mat-option>\n\n <mat-option *ngFor=\"let location of locations\" [value]=\"location.id\">\n <span [ngStyle]=\"{'padding-left.px': location.depth * 16}\">\n <span *ngIf=\"location.depth > 0\">\u21B3 </span>{{ location.title }}\n </span>\n </mat-option>\n\n </mat-select>\n</mat-form-field>", styles: [".sticky-search-container{position:sticky;top:0;z-index:1000;background:#fff;border-bottom:1px solid rgba(0,0,0,.04);margin-top:-8px;padding:8px 16px}.search-input{width:100%;padding:8px;border:none;outline:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: MaterialModule }, { kind: "component", type: i4.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "component", type: i6.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i7.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: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], preserveWhitespaces: true });
144
+ ], ngImport: i0, template: "<mat-form-field class=\"w-100\" [appearance]=\"appearance()\">\n <mat-label>{{ label() }}</mat-label>\n <mat-select [value]=\"selectedValue\" [disabled]=\"isDisabled\" [placeholder]=\"placeholder()\"\n panelClass=\"location-selector-panel\"\n (selectionChange)=\"onSelectionChange($event.value)\">\n\n <div class=\"sticky-search-container\">\n <input [formControl]=\"searchControl\" placeholder=\"Search...\" class=\"search-input\" (keydown)=\"$event.stopPropagation()\">\n </div>\n\n <mat-option *ngIf=\"includeNone()\" [value]=\"null\">None</mat-option>\n\n <mat-option *ngFor=\"let location of locations\" [value]=\"location.id\">\n <span [ngStyle]=\"{'padding-left.px': location.depth * 16}\">\n <span *ngIf=\"location.depth > 0\">\u21B3 </span>{{ location.title }}\n </span>\n </mat-option>\n\n </mat-select>\n</mat-form-field>", styles: [".sticky-search-container{position:sticky;top:0;z-index:1000;background:#fff;border-bottom:1px solid rgba(0,0,0,.12);margin:0}.search-input{width:100%;padding:8px 16px;border:none;border-radius:4px;outline:none;font-size:14px;box-sizing:border-box}.search-input:focus{border-color:#00000061}::ng-deep .location-selector-panel{padding-top:0!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: MaterialModule }, { kind: "component", type: i4.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "component", type: i6.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i7.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: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], preserveWhitespaces: true });
144
145
  }
145
146
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LocationSelectorComponent, decorators: [{
146
147
  type: Component,
@@ -154,6 +155,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
154
155
  useExisting: forwardRef(() => LocationSelectorComponent),
155
156
  multi: true
156
157
  }
157
- ], template: "<mat-form-field class=\"w-100\">\n <mat-label>{{ label() }}</mat-label>\n <mat-select [value]=\"selectedValue\" [disabled]=\"isDisabled\" [placeholder]=\"placeholder()\"\n (selectionChange)=\"onSelectionChange($event.value)\">\n\n <div class=\"sticky-search-container\">\n <input [formControl]=\"searchControl\" placeholder=\"Search...\" class=\"search-input\" (keydown)=\"$event.stopPropagation()\">\n </div>\n\n <mat-option *ngIf=\"includeNone()\" [value]=\"null\">None</mat-option>\n\n <mat-option *ngFor=\"let location of locations\" [value]=\"location.id\">\n <span [ngStyle]=\"{'padding-left.px': location.depth * 16}\">\n <span *ngIf=\"location.depth > 0\">\u21B3 </span>{{ location.title }}\n </span>\n </mat-option>\n\n </mat-select>\n</mat-form-field>", styles: [".sticky-search-container{position:sticky;top:0;z-index:1000;background:#fff;border-bottom:1px solid rgba(0,0,0,.04);margin-top:-8px;padding:8px 16px}.search-input{width:100%;padding:8px;border:none;outline:none}\n"] }]
158
+ ], template: "<mat-form-field class=\"w-100\" [appearance]=\"appearance()\">\n <mat-label>{{ label() }}</mat-label>\n <mat-select [value]=\"selectedValue\" [disabled]=\"isDisabled\" [placeholder]=\"placeholder()\"\n panelClass=\"location-selector-panel\"\n (selectionChange)=\"onSelectionChange($event.value)\">\n\n <div class=\"sticky-search-container\">\n <input [formControl]=\"searchControl\" placeholder=\"Search...\" class=\"search-input\" (keydown)=\"$event.stopPropagation()\">\n </div>\n\n <mat-option *ngIf=\"includeNone()\" [value]=\"null\">None</mat-option>\n\n <mat-option *ngFor=\"let location of locations\" [value]=\"location.id\">\n <span [ngStyle]=\"{'padding-left.px': location.depth * 16}\">\n <span *ngIf=\"location.depth > 0\">\u21B3 </span>{{ location.title }}\n </span>\n </mat-option>\n\n </mat-select>\n</mat-form-field>", styles: [".sticky-search-container{position:sticky;top:0;z-index:1000;background:#fff;border-bottom:1px solid rgba(0,0,0,.12);margin:0}.search-input{width:100%;padding:8px 16px;border:none;border-radius:4px;outline:none;font-size:14px;box-sizing:border-box}.search-input:focus{border-color:#00000061}::ng-deep .location-selector-panel{padding-top:0!important}\n"] }]
158
159
  }], ctorParameters: () => [{ type: i1.LocationService }, { type: i2.TechlifyFeatureService }] });
159
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYXRpb24tc2VsZWN0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vbG9jYXRpb24vbG9jYXRpb24tc2VsZWN0b3IvbG9jYXRpb24tc2VsZWN0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vbG9jYXRpb24vbG9jYXRpb24tc2VsZWN0b3IvbG9jYXRpb24tc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQXdCLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7Ozs7QUE2QnZELE1BQU0sT0FBTyx5QkFBeUI7SUFlaEI7SUFDVjtJQWZWLEtBQUssR0FBRyxLQUFLLENBQVMsVUFBVSxDQUFDLENBQUM7SUFDbEMsV0FBVyxHQUFHLEtBQUssQ0FBUyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ2pELFdBQVcsR0FBRyxLQUFLLENBQVUsSUFBSSxDQUFDLENBQUM7SUFFbkMsb0JBQW9CLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBRTlDLFNBQVMsR0FBMkIsRUFBRSxDQUFDO0lBQ3ZDLGFBQWEsR0FB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SSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDM0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFvQjtRQUM3QixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztJQUM3QixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsRUFBa0M7UUFDakQsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQWM7UUFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELGdCQUFnQixDQUFDLFVBQW1CO1FBQ2xDLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQy9CLENBQUM7d0dBaEpVLHlCQUF5Qjs0RkFBekIseUJBQXlCLDRkQVJ6QjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMseUJBQXlCLENBQUM7Z0JBQ3hELEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRiwwQkMvQkgsdXlCQWtCaUIsOFFEQ2IsWUFBWSxvVkFDWixjQUFjLCs3QkFDZCxtQkFBbUI7OzRGQVlWLHlCQUF5QjtrQkFsQnJDLFNBQVM7K0JBQ0UsdUJBQXVCLGNBQ3JCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGNBQWM7d0JBQ2QsbUJBQW1CO3FCQUNwQixhQUdVO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLDBCQUEwQixDQUFDOzRCQUN4RCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgZm9yd2FyZFJlZiwgaW5wdXQsIE9uSW5pdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUNvbnRyb2wsIE5HX1ZBTFVFX0FDQ0VTU09SLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBNYXRlcmlhbE1vZHVsZSB9IGZyb20gJy4uLy4uL21hdGVyaWFsLm1vZHVsZSc7XG5pbXBvcnQgeyBMb2NhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9sb2NhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFRlY2hsaWZ5RmVhdHVyZVNlcnZpY2UgfSBmcm9tICduZ3gtdGVjaGxpZnktY29yZSc7XG5cbmludGVyZmFjZSBIaWVyYXJjaGljYWxMb2NhdGlvbiB7XG4gIGlkOiBudW1iZXI7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHBhcmVudF9pZDogbnVtYmVyIHwgbnVsbDtcbiAgZGVwdGg6IG51bWJlcjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWxvY2F0aW9uLXNlbGVjdG9yJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBNYXRlcmlhbE1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9sb2NhdGlvbi1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xvY2F0aW9uLXNlbGVjdG9yLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTG9jYXRpb25TZWxlY3RvckNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBMb2NhdGlvblNlbGVjdG9yQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCB7XG4gIGxhYmVsID0gaW5wdXQ8c3RyaW5nPignTG9jYXRpb24nKTtcbiAgcGxhY2Vob2xkZXIgPSBpbnB1dDxzdHJpbmc+KCdTZWxlY3QgYSBsb2NhdGlvbicpO1xuICBpbmNsdWRlTm9uZSA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuXG4gIGlzU3ViTG9jYXRpb25FbmFibGVkID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcblxuICBsb2NhdGlvbnM6IEhpZXJhcmNoaWNhbExvY2F0aW9uW10gPSBbXTtcbiAgc2VsZWN0ZWRWYWx1ZTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIGlzRGlzYWJsZWQgPSBmYWxzZTtcbiAgc2VhcmNoQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XG5cbiAgcHJpdmF0ZSBvbkNoYW5nZTogKHZhbHVlOiBudW1iZXIgfCBudWxsKSA9PiB2b2lkID0gKCkgPT4geyB9O1xuICBwcml2YXRlIG9uVG91Y2hlZDogKCkgPT4gdm9pZCA9ICgpID0+IHsgfTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGxvY2F0aW9uU2VydmljZTogTG9jYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgZmVhdHVyZVNlcnZpY2U6IFRlY2hsaWZ5RmVhdHVyZVNlcnZpY2VcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzU3ViTG9jYXRpb25FbmFibGVkLnNldCh0aGlzLmZlYXR1cmVTZXJ2aWNlLmlzRmVhdHVyZUV4aXN0cygnc3ViLWxvY2F0aW9ucycpKTtcblxuICAgIHRoaXMubG9hZERhdGEoKTtcbiAgICB0aGlzLnNldHVwU2VhcmNoKCk7XG4gIH1cblxuICBzZXR1cFNlYXJjaCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaENvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICBkZWJvdW5jZVRpbWUoNDAwKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICApLnN1YnNjcmliZSgodmFsdWU6IHN0cmluZyB8IG51bGwpID0+IHtcbiAgICAgIHRoaXMubG9hZERhdGEodmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgbG9hZERhdGEoc2VhcmNoOiBzdHJpbmcgfCBudWxsID0gbnVsbCk6IHZvaWQge1xuICAgIGNvbnN0IHBhcmFtczogYW55ID0ge307XG4gICAgaWYgKHNlYXJjaCkge1xuICAgICAgcGFyYW1zLnNlYXJjaCA9IHNlYXJjaDtcbiAgICB9XG5cbiAgICB0aGlzLmxvY2F0aW9uU2VydmljZS5pbmRleChwYXJhbXMpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBmbGF0TG9jYXRpb25zID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgdGhpcy5sb2NhdGlvbnMgPSB0aGlzLmlzU3ViTG9jYXRpb25FbmFibGVkKClcbiAgICAgICAgICA/IHRoaXMuYnVpbGRIaWVyYXJjaHkoZmxhdExvY2F0aW9ucylcbiAgICAgICAgICA6IGZsYXRMb2NhdGlvbnM7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVG8gcHJldmVudCByZWN1cnNpdmUgY2FsbHMgaW4gdGhlIGFwaSB3aGlsZSB0cnlpbmcgdG8gZ2V0XG4gICAqIHBhcmVudCBhbmQgY2hpbGRyZW4gb2YgYSBsb2NhdGlvbiwgaSd2ZSBvcHRlZCB0byBoYXZlIHRoZSB1aSBcbiAgICogYnVpbGQgdGhlIGhpZXJhcmNoeSBvZiBsb2NhdGlvbnMgXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkSGllcmFyY2h5KGxvY2F0aW9uczogYW55W10pOiBIaWVyYXJjaGljYWxMb2NhdGlvbltdIHtcbiAgICBjb25zdCBsb2NhdGlvbk1hcCA9IG5ldyBNYXA8bnVtYmVyLCBhbnk+KCk7XG4gICAgbG9jYXRpb25zLmZvckVhY2gobG9jYXRpb24gPT4gbG9jYXRpb25NYXAuc2V0KGxvY2F0aW9uLmlkLCBsb2NhdGlvbikpO1xuXG4gICAgLy8gQ2FsY3VsYXRlIGRlcHRoIGZvciBlYWNoIGxvY2F0aW9uIHdpdGggY3ljbGUgZGV0ZWN0aW9uXG4gICAgY29uc3QgZ2V0RGVwdGggPSAobG9jYXRpb246IGFueSwgdmlzaXRlZDogU2V0PG51bWJlcj4gPSBuZXcgU2V0KCkpOiBudW1iZXIgPT4ge1xuICAgICAgaWYgKCFsb2NhdGlvbi5wYXJlbnRfaWQpIHJldHVybiAwO1xuICAgICAgaWYgKHZpc2l0ZWQuaGFzKGxvY2F0aW9uLmlkKSkgcmV0dXJuIDA7IC8vIFByZXZlbnQgaW5maW5pdGUgbG9vcCBpZiBwYXJlbnQgaXMgc2FtZSBhcyBjaGlsZFxuICAgICAgdmlzaXRlZC5hZGQobG9jYXRpb24uaWQpOyAvLyBUYWtlIG5vdGUgb2YgdmlzaXRlZCBsb2NhdGlvbnNcblxuICAgICAgY29uc3QgcGFyZW50ID0gbG9jYXRpb25NYXAuZ2V0KGxvY2F0aW9uLnBhcmVudF9pZCk7XG4gICAgICBpZiAoIXBhcmVudCkgcmV0dXJuIDA7XG5cbiAgICAgIHJldHVybiAxICsgZ2V0RGVwdGgocGFyZW50LCB2aXNpdGVkKTtcbiAgICB9O1xuXG4gICAgLy8gQnVpbGQgaGllcmFyY2hpY2FsIGxpc3Qgd2l0aCBkZXB0aHNcbiAgICBjb25zdCB3aXRoRGVwdGhzOiBIaWVyYXJjaGljYWxMb2NhdGlvbltdID0gbG9jYXRpb25zLm1hcChsb2NhdGlvbiA9PiAoe1xuICAgICAgaWQ6IGxvY2F0aW9uLmlkLFxuICAgICAgdGl0bGU6IGxvY2F0aW9uLnRpdGxlLFxuICAgICAgcGFyZW50X2lkOiBsb2NhdGlvbi5wYXJlbnRfaWQsXG4gICAgICBkZXB0aDogZ2V0RGVwdGgobG9jYXRpb24pXG4gICAgfSkpO1xuXG4gICAgLy8gU29ydDogcm9vdCBpdGVtcyBmaXJzdCwgdGhlbiByZWN1cnNpdmVseSBhZGQgY2hpbGRyZW5cbiAgICBjb25zdCByZXN1bHQ6IEhpZXJhcmNoaWNhbExvY2F0aW9uW10gPSBbXTtcbiAgICBjb25zdCBhZGRlZCA9IG5ldyBTZXQ8bnVtYmVyPigpOyAvLyBQcmV2ZW50IGluZmluaXRlIGxvb3Agb24gY3ljbGVzXG5cbiAgICAvLyBGaW5kIGFsbCBcInJvb3RzXCIgLSBpdGVtcyB3aXRoIG5vIHBhcmVudCwgT1IgaXRlbXMgd2hvc2UgcGFyZW50IGlzIG1pc3NpbmcgZnJvbSB0aGUgbGlzdFxuICAgIGNvbnN0IHJvb3RJZHMgPSB3aXRoRGVwdGhzXG4gICAgICAuZmlsdGVyKGxvY2F0aW9uID0+ICFsb2NhdGlvbi5wYXJlbnRfaWQgfHwgIWxvY2F0aW9uTWFwLmhhcyhsb2NhdGlvbi5wYXJlbnRfaWQpKVxuICAgICAgLm1hcChsb2NhdGlvbiA9PiBsb2NhdGlvbi5pZCk7XG5cbiAgICBjb25zdCBhZGRXaXRoQ2hpbGRyZW4gPSAocGFyZW50SWQ6IG51bWJlciB8IG51bGwsIGRlcHRoOiBudW1iZXIpID0+IHtcbiAgICAgIC8vIElmIHBhcmVudElkIGlzIG51bGwsIHdlIGxvb2sgZm9yIG91ciBpZGVudGlmaWVkIHJvb3RzLiBcbiAgICAgIC8vIE90aGVyd2lzZSB3ZSBsb29rIGZvciBjaGlsZHJlbiBvZiB0aGUgcGFyZW50SWQuXG4gICAgICBjb25zdCBpdGVtc1RvQWRkID0gcGFyZW50SWQgPT09IG51bGxcbiAgICAgICAgPyB3aXRoRGVwdGhzLmZpbHRlcihsb2NhdGlvbiA9PiByb290SWRzLmluY2x1ZGVzKGxvY2F0aW9uLmlkKSlcbiAgICAgICAgOiB3aXRoRGVwdGhzLmZpbHRlcihsb2NhdGlvbiA9PiBsb2NhdGlvbi5wYXJlbnRfaWQgPT09IHBhcmVudElkKTtcblxuICAgICAgaXRlbXNUb0FkZFxuICAgICAgICAuZmlsdGVyKGxvY2F0aW9uID0+ICFhZGRlZC5oYXMobG9jYXRpb24uaWQpKVxuICAgICAgICAuc29ydCgoYSwgYikgPT4gYS50aXRsZS5sb2NhbGVDb21wYXJlKGIudGl0bGUpKVxuICAgICAgICAuZm9yRWFjaChsb2NhdGlvbiA9PiB7XG4gICAgICAgICAgYWRkZWQuYWRkKGxvY2F0aW9uLmlkKTtcbiAgICAgICAgICByZXN1bHQucHVzaChsb2NhdGlvbik7XG4gICAgICAgICAgYWRkV2l0aENoaWxkcmVuKGxvY2F0aW9uLmlkLCBkZXB0aCArIDEpO1xuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgYWRkV2l0aENoaWxkcmVuKG51bGwsIDApO1xuXG4gICAgLy8gSWYgdGhlcmUgYXJlIHN0aWxsIGl0ZW1zIG5vdCBhZGRlZCAoZHVlIHRvIGNpcmN1bGFyIHJlZmVyZW5jZXMgQS0+Qi0+QSksIGFkZCB0aGVtIGFzIHJvb3RzXG4gICAgaWYgKGFkZGVkLnNpemUgPCB3aXRoRGVwdGhzLmxlbmd0aCkge1xuICAgICAgd2l0aERlcHRoc1xuICAgICAgICAuZmlsdGVyKGxvY2F0aW9uID0+ICFhZGRlZC5oYXMobG9jYXRpb24uaWQpKVxuICAgICAgICAuc29ydCgoYSwgYikgPT4gYS50aXRsZS5sb2NhbGVDb21wYXJlKGIudGl0bGUpKVxuICAgICAgICAuZm9yRWFjaChsb2NhdGlvbiA9PiB7XG4gICAgICAgICAgIGFkZGVkLmFkZChsb2NhdGlvbi5pZCk7XG4gICAgICAgICAgIHJlc3VsdC5wdXNoKGxvY2F0aW9uKTtcbiAgICAgICAgICAgLy8gVHJ5IHRvIGFkZCBjaGlsZHJlbiBmb3IgdGhpcyBcImZvcmNlZCByb290XCIgaW4gY2FzZSBpdCBoYXMgdmFsaWQgY2hpbGRyZW5cbiAgICAgICAgICAgYWRkV2l0aENoaWxkcmVuKGxvY2F0aW9uLmlkLCBsb2NhdGlvbi5kZXB0aCArIDEpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgb25TZWxlY3Rpb25DaGFuZ2UodmFsdWU6IG51bWJlciB8IG51bGwpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogbnVtYmVyIHwgbnVsbCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBudW1iZXIgfCBudWxsKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5pc0Rpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxufVxuIiwiPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy0xMDBcIj5cbiAgPG1hdC1sYWJlbD57eyBsYWJlbCgpIH19PC9tYXQtbGFiZWw+XG4gIDxtYXQtc2VsZWN0IFt2YWx1ZV09XCJzZWxlY3RlZFZhbHVlXCIgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIoKVwiXG4gICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZSgkZXZlbnQudmFsdWUpXCI+XG5cbiAgICA8ZGl2IGNsYXNzPVwic3RpY2t5LXNlYXJjaC1jb250YWluZXJcIj5cbiAgICAgICA8aW5wdXQgW2Zvcm1Db250cm9sXT1cInNlYXJjaENvbnRyb2xcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaC4uLlwiIGNsYXNzPVwic2VhcmNoLWlucHV0XCIgKGtleWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgPC9kaXY+XG5cbiAgICA8bWF0LW9wdGlvbiAqbmdJZj1cImluY2x1ZGVOb25lKClcIiBbdmFsdWVdPVwibnVsbFwiPk5vbmU8L21hdC1vcHRpb24+XG5cbiAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgbG9jYXRpb24gb2YgbG9jYXRpb25zXCIgW3ZhbHVlXT1cImxvY2F0aW9uLmlkXCI+XG4gICAgICA8c3BhbiBbbmdTdHlsZV09XCJ7J3BhZGRpbmctbGVmdC5weCc6IGxvY2F0aW9uLmRlcHRoICogMTZ9XCI+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwibG9jYXRpb24uZGVwdGggPiAwXCI+4oazIDwvc3Bhbj57eyBsb2NhdGlvbi50aXRsZSB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvbWF0LW9wdGlvbj5cblxuICA8L21hdC1zZWxlY3Q+XG48L21hdC1mb3JtLWZpZWxkPiJdfQ==
160
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYXRpb24tc2VsZWN0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vbG9jYXRpb24vbG9jYXRpb24tc2VsZWN0b3IvbG9jYXRpb24tc2VsZWN0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vbG9jYXRpb24vbG9jYXRpb24tc2VsZWN0b3IvbG9jYXRpb24tc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQXdCLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7Ozs7QUE4QnZELE1BQU0sT0FBTyx5QkFBeUI7SUFpQmhCO0lBQ1Y7SUFoQlYsVUFBVSxHQUFHLEtBQUssQ0FBeUIsU0FBUyxDQUFDLENBQUM7SUFDdEQsS0FBSyxHQUFHLEtBQUssQ0FBUyxVQUFVLENBQUMsQ0FBQztJQUNsQyxXQUFXLEdBQUcsS0FBSyxDQUFTLG1CQUFtQixDQUFDLENBQUM7SUFDakQsV0FBVyxHQUFHLEtBQUssQ0FBVSxJQUFJLENBQUMsQ0FBQztJQUVuQyxvQkFBb0IsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENB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cndhcmRSZWYsIGlucHV0LCBPbkluaXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sLCBOR19WQUxVRV9BQ0NFU1NPUiwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTWF0ZXJpYWxNb2R1bGUgfSBmcm9tICcuLi8uLi9tYXRlcmlhbC5tb2R1bGUnO1xuaW1wb3J0IHsgTG9jYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vbG9jYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBUZWNobGlmeUZlYXR1cmVTZXJ2aWNlIH0gZnJvbSAnbmd4LXRlY2hsaWZ5LWNvcmUnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkQXBwZWFyYW5jZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuXG5pbnRlcmZhY2UgSGllcmFyY2hpY2FsTG9jYXRpb24ge1xuICBpZDogbnVtYmVyO1xuICB0aXRsZTogc3RyaW5nO1xuICBwYXJlbnRfaWQ6IG51bWJlciB8IG51bGw7XG4gIGRlcHRoOiBudW1iZXI7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1sb2NhdGlvbi1zZWxlY3RvcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTWF0ZXJpYWxNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZVxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vbG9jYXRpb24tc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9sb2NhdGlvbi1zZWxlY3Rvci5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IExvY2F0aW9uU2VsZWN0b3JDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgTG9jYXRpb25TZWxlY3RvckNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQge1xuXG4gIGFwcGVhcmFuY2UgPSBpbnB1dDxNYXRGb3JtRmllbGRBcHBlYXJhbmNlPignb3V0bGluZScpO1xuICBsYWJlbCA9IGlucHV0PHN0cmluZz4oJ0xvY2F0aW9uJyk7XG4gIHBsYWNlaG9sZGVyID0gaW5wdXQ8c3RyaW5nPignU2VsZWN0IGEgbG9jYXRpb24nKTtcbiAgaW5jbHVkZU5vbmUgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcblxuICBpc1N1YkxvY2F0aW9uRW5hYmxlZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG5cbiAgbG9jYXRpb25zOiBIaWVyYXJjaGljYWxMb2NhdGlvbltdID0gW107XG4gIHNlbGVjdGVkVmFsdWU6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBpc0Rpc2FibGVkID0gZmFsc2U7XG4gIHNlYXJjaENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycpO1xuXG4gIHByaXZhdGUgb25DaGFuZ2U6ICh2YWx1ZTogbnVtYmVyIHwgbnVsbCkgPT4gdm9pZCA9ICgpID0+IHsgfTtcbiAgcHJpdmF0ZSBvblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB7IH07XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBsb2NhdGlvblNlcnZpY2U6IExvY2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGZlYXR1cmVTZXJ2aWNlOiBUZWNobGlmeUZlYXR1cmVTZXJ2aWNlXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pc1N1YkxvY2F0aW9uRW5hYmxlZC5zZXQodGhpcy5mZWF0dXJlU2VydmljZS5pc0ZlYXR1cmVFeGlzdHMoJ3N1Yi1sb2NhdGlvbnMnKSk7XG5cbiAgICB0aGlzLmxvYWREYXRhKCk7XG4gICAgdGhpcy5zZXR1cFNlYXJjaCgpO1xuICB9XG5cbiAgc2V0dXBTZWFyY2goKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hDb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgZGVib3VuY2VUaW1lKDQwMCksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgKS5zdWJzY3JpYmUoKHZhbHVlOiBzdHJpbmcgfCBudWxsKSA9PiB7XG4gICAgICB0aGlzLmxvYWREYXRhKHZhbHVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIGxvYWREYXRhKHNlYXJjaDogc3RyaW5nIHwgbnVsbCA9IG51bGwpOiB2b2lkIHtcbiAgICBjb25zdCBwYXJhbXM6IGFueSA9IHt9O1xuICAgIGlmIChzZWFyY2gpIHtcbiAgICAgIHBhcmFtcy5zZWFyY2ggPSBzZWFyY2g7XG4gICAgfVxuXG4gICAgdGhpcy5sb2NhdGlvblNlcnZpY2UuaW5kZXgocGFyYW1zLCB0cnVlKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgZmxhdExvY2F0aW9ucyA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgIHRoaXMubG9jYXRpb25zID0gdGhpcy5pc1N1YkxvY2F0aW9uRW5hYmxlZCgpXG4gICAgICAgICAgPyB0aGlzLmJ1aWxkSGllcmFyY2h5KGZsYXRMb2NhdGlvbnMpXG4gICAgICAgICAgOiBmbGF0TG9jYXRpb25zO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvIHByZXZlbnQgcmVjdXJzaXZlIGNhbGxzIGluIHRoZSBhcGkgd2hpbGUgdHJ5aW5nIHRvIGdldFxuICAgKiBwYXJlbnQgYW5kIGNoaWxkcmVuIG9mIGEgbG9jYXRpb24sIGkndmUgb3B0ZWQgdG8gaGF2ZSB0aGUgdWkgXG4gICAqIGJ1aWxkIHRoZSBoaWVyYXJjaHkgb2YgbG9jYXRpb25zIFxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZEhpZXJhcmNoeShsb2NhdGlvbnM6IGFueVtdKTogSGllcmFyY2hpY2FsTG9jYXRpb25bXSB7XG4gICAgY29uc3QgbG9jYXRpb25NYXAgPSBuZXcgTWFwPG51bWJlciwgYW55PigpO1xuICAgIGxvY2F0aW9ucy5mb3JFYWNoKGxvY2F0aW9uID0+IGxvY2F0aW9uTWFwLnNldChsb2NhdGlvbi5pZCwgbG9jYXRpb24pKTtcblxuICAgIC8vIENhbGN1bGF0ZSBkZXB0aCBmb3IgZWFjaCBsb2NhdGlvbiB3aXRoIGN5Y2xlIGRldGVjdGlvblxuICAgIGNvbnN0IGdldERlcHRoID0gKGxvY2F0aW9uOiBhbnksIHZpc2l0ZWQ6IFNldDxudW1iZXI+ID0gbmV3IFNldCgpKTogbnVtYmVyID0+IHtcbiAgICAgIGlmICghbG9jYXRpb24ucGFyZW50X2lkKSByZXR1cm4gMDtcbiAgICAgIGlmICh2aXNpdGVkLmhhcyhsb2NhdGlvbi5pZCkpIHJldHVybiAwOyAvLyBQcmV2ZW50IGluZmluaXRlIGxvb3AgaWYgcGFyZW50IGlzIHNhbWUgYXMgY2hpbGRcbiAgICAgIHZpc2l0ZWQuYWRkKGxvY2F0aW9uLmlkKTsgLy8gVGFrZSBub3RlIG9mIHZpc2l0ZWQgbG9jYXRpb25zXG5cbiAgICAgIGNvbnN0IHBhcmVudCA9IGxvY2F0aW9uTWFwLmdldChsb2NhdGlvbi5wYXJlbnRfaWQpO1xuICAgICAgaWYgKCFwYXJlbnQpIHJldHVybiAwO1xuXG4gICAgICByZXR1cm4gMSArIGdldERlcHRoKHBhcmVudCwgdmlzaXRlZCk7XG4gICAgfTtcblxuICAgIC8vIEJ1aWxkIGhpZXJhcmNoaWNhbCBsaXN0IHdpdGggZGVwdGhzXG4gICAgY29uc3Qgd2l0aERlcHRoczogSGllcmFyY2hpY2FsTG9jYXRpb25bXSA9IGxvY2F0aW9ucy5tYXAobG9jYXRpb24gPT4gKHtcbiAgICAgIGlkOiBsb2NhdGlvbi5pZCxcbiAgICAgIHRpdGxlOiBsb2NhdGlvbi50aXRsZSxcbiAgICAgIHBhcmVudF9pZDogbG9jYXRpb24ucGFyZW50X2lkLFxuICAgICAgZGVwdGg6IGdldERlcHRoKGxvY2F0aW9uKVxuICAgIH0pKTtcblxuICAgIC8vIFNvcnQ6IHJvb3QgaXRlbXMgZmlyc3QsIHRoZW4gcmVjdXJzaXZlbHkgYWRkIGNoaWxkcmVuXG4gICAgY29uc3QgcmVzdWx0OiBIaWVyYXJjaGljYWxMb2NhdGlvbltdID0gW107XG4gICAgY29uc3QgYWRkZWQgPSBuZXcgU2V0PG51bWJlcj4oKTsgLy8gUHJldmVudCBpbmZpbml0ZSBsb29wIG9uIGN5Y2xlc1xuXG4gICAgLy8gRmluZCBhbGwgXCJyb290c1wiIC0gaXRlbXMgd2l0aCBubyBwYXJlbnQsIE9SIGl0ZW1zIHdob3NlIHBhcmVudCBpcyBtaXNzaW5nIGZyb20gdGhlIGxpc3RcbiAgICBjb25zdCByb290SWRzID0gd2l0aERlcHRoc1xuICAgICAgLmZpbHRlcihsb2NhdGlvbiA9PiAhbG9jYXRpb24ucGFyZW50X2lkIHx8ICFsb2NhdGlvbk1hcC5oYXMobG9jYXRpb24ucGFyZW50X2lkKSlcbiAgICAgIC5tYXAobG9jYXRpb24gPT4gbG9jYXRpb24uaWQpO1xuXG4gICAgY29uc3QgYWRkV2l0aENoaWxkcmVuID0gKHBhcmVudElkOiBudW1iZXIgfCBudWxsLCBkZXB0aDogbnVtYmVyKSA9PiB7XG4gICAgICAvLyBJZiBwYXJlbnRJZCBpcyBudWxsLCB3ZSBsb29rIGZvciBvdXIgaWRlbnRpZmllZCByb290cy4gXG4gICAgICAvLyBPdGhlcndpc2Ugd2UgbG9vayBmb3IgY2hpbGRyZW4gb2YgdGhlIHBhcmVudElkLlxuICAgICAgY29uc3QgaXRlbXNUb0FkZCA9IHBhcmVudElkID09PSBudWxsXG4gICAgICAgID8gd2l0aERlcHRocy5maWx0ZXIobG9jYXRpb24gPT4gcm9vdElkcy5pbmNsdWRlcyhsb2NhdGlvbi5pZCkpXG4gICAgICAgIDogd2l0aERlcHRocy5maWx0ZXIobG9jYXRpb24gPT4gbG9jYXRpb24ucGFyZW50X2lkID09PSBwYXJlbnRJZCk7XG5cbiAgICAgIGl0ZW1zVG9BZGRcbiAgICAgICAgLmZpbHRlcihsb2NhdGlvbiA9PiAhYWRkZWQuaGFzKGxvY2F0aW9uLmlkKSlcbiAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEudGl0bGUubG9jYWxlQ29tcGFyZShiLnRpdGxlKSlcbiAgICAgICAgLmZvckVhY2gobG9jYXRpb24gPT4ge1xuICAgICAgICAgIGFkZGVkLmFkZChsb2NhdGlvbi5pZCk7XG4gICAgICAgICAgcmVzdWx0LnB1c2gobG9jYXRpb24pO1xuICAgICAgICAgIGFkZFdpdGhDaGlsZHJlbihsb2NhdGlvbi5pZCwgZGVwdGggKyAxKTtcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIGFkZFdpdGhDaGlsZHJlbihudWxsLCAwKTtcblxuICAgIC8vIElmIHRoZXJlIGFyZSBzdGlsbCBpdGVtcyBub3QgYWRkZWQgKGR1ZSB0byBjaXJjdWxhciByZWZlcmVuY2VzIEEtPkItPkEpLCBhZGQgdGhlbSBhcyByb290c1xuICAgIGlmIChhZGRlZC5zaXplIDwgd2l0aERlcHRocy5sZW5ndGgpIHtcbiAgICAgIHdpdGhEZXB0aHNcbiAgICAgICAgLmZpbHRlcihsb2NhdGlvbiA9PiAhYWRkZWQuaGFzKGxvY2F0aW9uLmlkKSlcbiAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEudGl0bGUubG9jYWxlQ29tcGFyZShiLnRpdGxlKSlcbiAgICAgICAgLmZvckVhY2gobG9jYXRpb24gPT4ge1xuICAgICAgICAgICBhZGRlZC5hZGQobG9jYXRpb24uaWQpO1xuICAgICAgICAgICByZXN1bHQucHVzaChsb2NhdGlvbik7XG4gICAgICAgICAgIC8vIFRyeSB0byBhZGQgY2hpbGRyZW4gZm9yIHRoaXMgXCJmb3JjZWQgcm9vdFwiIGluIGNhc2UgaXQgaGFzIHZhbGlkIGNoaWxkcmVuXG4gICAgICAgICAgIGFkZFdpdGhDaGlsZHJlbihsb2NhdGlvbi5pZCwgbG9jYXRpb24uZGVwdGggKyAxKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIG9uU2VsZWN0aW9uQ2hhbmdlKHZhbHVlOiBudW1iZXIgfCBudWxsKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IG51bWJlciB8IG51bGwpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogbnVtYmVyIHwgbnVsbCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuaXNEaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cbn1cbiIsIjxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCIgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZSgpXCI+XG4gIDxtYXQtbGFiZWw+e3sgbGFiZWwoKSB9fTwvbWF0LWxhYmVsPlxuICA8bWF0LXNlbGVjdCBbdmFsdWVdPVwic2VsZWN0ZWRWYWx1ZVwiIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCIgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyKClcIlxuICAgIHBhbmVsQ2xhc3M9XCJsb2NhdGlvbi1zZWxlY3Rvci1wYW5lbFwiXG4gICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZSgkZXZlbnQudmFsdWUpXCI+XG5cbiAgICA8ZGl2IGNsYXNzPVwic3RpY2t5LXNlYXJjaC1jb250YWluZXJcIj5cbiAgICAgICA8aW5wdXQgW2Zvcm1Db250cm9sXT1cInNlYXJjaENvbnRyb2xcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaC4uLlwiIGNsYXNzPVwic2VhcmNoLWlucHV0XCIgKGtleWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgPC9kaXY+XG5cbiAgICA8bWF0LW9wdGlvbiAqbmdJZj1cImluY2x1ZGVOb25lKClcIiBbdmFsdWVdPVwibnVsbFwiPk5vbmU8L21hdC1vcHRpb24+XG5cbiAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgbG9jYXRpb24gb2YgbG9jYXRpb25zXCIgW3ZhbHVlXT1cImxvY2F0aW9uLmlkXCI+XG4gICAgICA8c3BhbiBbbmdTdHlsZV09XCJ7J3BhZGRpbmctbGVmdC5weCc6IGxvY2F0aW9uLmRlcHRoICogMTZ9XCI+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwibG9jYXRpb24uZGVwdGggPiAwXCI+4oazIDwvc3Bhbj57eyBsb2NhdGlvbi50aXRsZSB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvbWF0LW9wdGlvbj5cblxuICA8L21hdC1zZWxlY3Q+XG48L21hdC1mb3JtLWZpZWxkPiJdfQ==
@@ -1,13 +1,14 @@
1
1
  import { Component } from '@angular/core';
2
- import { NgIf } from '@angular/common';
3
- import { MatCard, MatCardContent } from '@angular/material/card';
4
- import { MatProgressBar } from '@angular/material/progress-bar';
2
+ import { CommonModule } from '@angular/common';
5
3
  import { LocationInformationComponent } from '../location-information/location-information.component';
6
4
  import { ProductModule } from '../../product/product.module';
7
5
  import { LocationProductStatisticsComponent } from '../location-product-statistics/location-product-statistics.component';
6
+ import { MaterialModule } from '../../material.module';
8
7
  import * as i0 from "@angular/core";
9
8
  import * as i1 from "../location.service";
10
9
  import * as i2 from "@angular/router";
10
+ import * as i3 from "@angular/common";
11
+ import * as i4 from "@angular/material/progress-bar";
11
12
  export class LocationViewComponent {
12
13
  service;
13
14
  activatedRoute;
@@ -36,18 +37,16 @@ export class LocationViewComponent {
36
37
  });
37
38
  }
38
39
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LocationViewComponent, deps: [{ token: i1.LocationService }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
39
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: LocationViewComponent, isStandalone: true, selector: "app-location-view", ngImport: i0, template: "<div *ngIf=\"model\" class=\"d-flex justify-content-start align-items-start flex-wrap gap-3\">\n <div class=\"d-flex flex-column gap-2\" style=\"width: 400px\">\n <app-location-information\n [model]=\"model\"\n ></app-location-information>\n </div>\n\n <app-location-product-statistics\n style=\"width: calc(100% - 400px - 1rem)\"\n [location]=\"model\"\n ></app-location-product-statistics>\n\n</div>\n\n<mat-progress-bar *ngIf=\"isLoading\" mode=\"indeterminate\"></mat-progress-bar>\n", styles: [""], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: LocationInformationComponent, selector: "app-location-information", inputs: ["model"] }, { kind: "ngmodule", type: ProductModule }, { kind: "component", type: LocationProductStatisticsComponent, selector: "app-location-product-statistics", inputs: ["location"] }], preserveWhitespaces: true });
40
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: LocationViewComponent, isStandalone: true, selector: "app-location-view", ngImport: i0, template: "<div *ngIf=\"model\" class=\"d-flex justify-content-start align-items-start flex-wrap gap-3\">\n <div class=\"d-flex flex-column gap-2\" style=\"width: 400px\">\n <app-location-information\n [model]=\"model\"\n ></app-location-information>\n </div>\n\n <app-location-product-statistics\n style=\"width: calc(100% - 400px - 1rem)\"\n [location]=\"model\"\n ></app-location-product-statistics>\n\n</div>\n\n<mat-progress-bar *ngIf=\"isLoading\" mode=\"indeterminate\"></mat-progress-bar>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MaterialModule }, { kind: "component", type: i4.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: LocationInformationComponent, selector: "app-location-information", inputs: ["model"] }, { kind: "ngmodule", type: ProductModule }, { kind: "component", type: LocationProductStatisticsComponent, selector: "app-location-product-statistics", inputs: ["location"] }], preserveWhitespaces: true });
40
41
  }
41
42
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LocationViewComponent, decorators: [{
42
43
  type: Component,
43
44
  args: [{ selector: 'app-location-view', standalone: true, imports: [
44
- NgIf,
45
- MatCard,
46
- MatCardContent,
47
- MatProgressBar,
45
+ CommonModule,
46
+ MaterialModule,
48
47
  LocationInformationComponent,
49
48
  ProductModule,
50
49
  LocationProductStatisticsComponent
51
50
  ], template: "<div *ngIf=\"model\" class=\"d-flex justify-content-start align-items-start flex-wrap gap-3\">\n <div class=\"d-flex flex-column gap-2\" style=\"width: 400px\">\n <app-location-information\n [model]=\"model\"\n ></app-location-information>\n </div>\n\n <app-location-product-statistics\n style=\"width: calc(100% - 400px - 1rem)\"\n [location]=\"model\"\n ></app-location-product-statistics>\n\n</div>\n\n<mat-progress-bar *ngIf=\"isLoading\" mode=\"indeterminate\"></mat-progress-bar>\n" }]
52
51
  }], ctorParameters: () => [{ type: i1.LocationService }, { type: i2.ActivatedRoute }] });
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYXRpb24tdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZlbnRvcnktY29tbW9uL3NyYy9saWIvaW52ZW50b3J5LWNvbW1vbi9sb2NhdGlvbi9sb2NhdGlvbi12aWV3L2xvY2F0aW9uLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vbG9jYXRpb24vbG9jYXRpb24tdmlldy9sb2NhdGlvbi12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFDaEQsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3JDLE9BQU8sRUFBQyxPQUFPLEVBQUUsY0FBYyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDL0QsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBRzlELE9BQU8sRUFBQyw0QkFBNEIsRUFBQyxNQUFNLHdEQUF3RCxDQUFDO0FBQ3BHLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLEVBQUMsa0NBQWtDLEVBQUMsTUFBTSxzRUFBc0UsQ0FBQzs7OztBQWlCeEgsTUFBTSxPQUFPLHFCQUFxQjtJQU10QjtJQUNBO0lBTlYsRUFBRSxDQUFVO0lBQ1osU0FBUyxDQUFXO0lBQ3BCLEtBQUssQ0FBTztJQUVaLFlBQ1UsT0FBd0IsRUFDeEIsY0FBOEI7UUFEOUIsWUFBTyxHQUFQLE9BQU8sQ0FBaUI7UUFDeEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBRXRDLElBQUksQ0FBQyxFQUFFLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDWixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDbkIsQ0FBQztJQUNILENBQUM7SUFFTyxTQUFTO1FBQ2YsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsTUFBTSxNQUFNLEdBQVEsRUFBRSxDQUFBO1FBQ3RCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQzNDLElBQUksRUFBRSxDQUFDLFFBQWEsRUFBRSxFQUFFO2dCQUN0QixJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsRUFBRSxJQUFJLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLENBQUM7WUFDRCxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztTQUN0QyxDQUFDLENBQUE7SUFDSixDQUFDO3dHQTVCVSxxQkFBcUI7NEZBQXJCLHFCQUFxQiw2RUN6QmxDLDhmQWVBLDBERERJLElBQUksNkZBR0osY0FBYyx5S0FDZCw0QkFBNEIsdUZBQzVCLGFBQWEsK0JBQ2Isa0NBQWtDOzs0RkFLekIscUJBQXFCO2tCQWZqQyxTQUFTOytCQUNFLG1CQUFtQixjQUNqQixJQUFJLFdBQ1A7d0JBQ1AsSUFBSTt3QkFDSixPQUFPO3dCQUNQLGNBQWM7d0JBQ2QsY0FBYzt3QkFDZCw0QkFBNEI7d0JBQzVCLGFBQWE7d0JBQ2Isa0NBQWtDO3FCQUNuQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOZ0lmfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtNYXRDYXJkLCBNYXRDYXJkQ29udGVudH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2FyZCc7XG5pbXBvcnQge01hdFByb2dyZXNzQmFyfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1iYXInO1xuaW1wb3J0IHtMb2NhdGlvblNlcnZpY2V9IGZyb20gJy4uL2xvY2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZX0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7TG9jYXRpb25JbmZvcm1hdGlvbkNvbXBvbmVudH0gZnJvbSAnLi4vbG9jYXRpb24taW5mb3JtYXRpb24vbG9jYXRpb24taW5mb3JtYXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7UHJvZHVjdE1vZHVsZX0gZnJvbSAnLi4vLi4vcHJvZHVjdC9wcm9kdWN0Lm1vZHVsZSc7XG5pbXBvcnQge0xvY2F0aW9uUHJvZHVjdFN0YXRpc3RpY3NDb21wb25lbnR9IGZyb20gJy4uL2xvY2F0aW9uLXByb2R1Y3Qtc3RhdGlzdGljcy9sb2NhdGlvbi1wcm9kdWN0LXN0YXRpc3RpY3MuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWxvY2F0aW9uLXZpZXcnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTmdJZixcbiAgICBNYXRDYXJkLFxuICAgIE1hdENhcmRDb250ZW50LFxuICAgIE1hdFByb2dyZXNzQmFyLFxuICAgIExvY2F0aW9uSW5mb3JtYXRpb25Db21wb25lbnQsXG4gICAgUHJvZHVjdE1vZHVsZSxcbiAgICBMb2NhdGlvblByb2R1Y3RTdGF0aXN0aWNzQ29tcG9uZW50XG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9sb2NhdGlvbi12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2xvY2F0aW9uLXZpZXcuY29tcG9uZW50LnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIExvY2F0aW9uVmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGlkITogbnVtYmVyO1xuICBpc0xvYWRpbmchOiBib29sZWFuO1xuICBtb2RlbCE6IGFueTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNlcnZpY2U6IExvY2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVxuICApIHtcbiAgICB0aGlzLmlkID0gcGFyc2VJbnQodGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5wYXJhbXNbJ2lkJ10pO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuaWQpIHtcbiAgICAgIHRoaXMubG9hZE1vZGVsKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBsb2FkTW9kZWwoKSB7XG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgIGNvbnN0IHBhcmFtczogYW55ID0ge31cbiAgICB0aGlzLnNlcnZpY2Uuc2hvdyh0aGlzLmlkLCBwYXJhbXMpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLm1vZGVsID0gcmVzcG9uc2U/Lml0ZW07XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+ICh0aGlzLmlzTG9hZGluZyA9IGZhbHNlKVxuICAgIH0pXG4gIH1cbn1cbiIsIjxkaXYgKm5nSWY9XCJtb2RlbFwiIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1zdGFydCBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LXdyYXAgZ2FwLTNcIj5cbiAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBnYXAtMlwiIHN0eWxlPVwid2lkdGg6IDQwMHB4XCI+XG4gICAgPGFwcC1sb2NhdGlvbi1pbmZvcm1hdGlvblxuICAgICAgW21vZGVsXT1cIm1vZGVsXCJcbiAgICA+PC9hcHAtbG9jYXRpb24taW5mb3JtYXRpb24+XG4gIDwvZGl2PlxuXG4gIDxhcHAtbG9jYXRpb24tcHJvZHVjdC1zdGF0aXN0aWNzXG4gICAgc3R5bGU9XCJ3aWR0aDogY2FsYygxMDAlIC0gNDAwcHggLSAxcmVtKVwiXG4gICAgW2xvY2F0aW9uXT1cIm1vZGVsXCJcbiAgPjwvYXBwLWxvY2F0aW9uLXByb2R1Y3Qtc3RhdGlzdGljcz5cblxuPC9kaXY+XG5cbjxtYXQtcHJvZ3Jlc3MtYmFyICpuZ0lmPVwiaXNMb2FkaW5nXCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIj48L21hdC1wcm9ncmVzcy1iYXI+XG4iXX0=
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYXRpb24tdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZlbnRvcnktY29tbW9uL3NyYy9saWIvaW52ZW50b3J5LWNvbW1vbi9sb2NhdGlvbi9sb2NhdGlvbi12aWV3L2xvY2F0aW9uLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vbG9jYXRpb24vbG9jYXRpb24tdmlldy9sb2NhdGlvbi12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRy9DLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxzRUFBc0UsQ0FBQztBQUMxSCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7OztBQWV2RCxNQUFNLE9BQU8scUJBQXFCO0lBTXRCO0lBQ0E7SUFOVixFQUFFLENBQVU7SUFDWixTQUFTLENBQVc7SUFDcEIsS0FBSyxDQUFPO0lBRVosWUFDVSxPQUF3QixFQUN4QixjQUE4QjtRQUQ5QixZQUFPLEdBQVAsT0FBTyxDQUFpQjtRQUN4QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFFdEMsSUFBSSxDQUFDLEVBQUUsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNaLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNuQixDQUFDO0lBQ0gsQ0FBQztJQUVPLFNBQVM7UUFDZixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixNQUFNLE1BQU0sR0FBUSxFQUFFLENBQUE7UUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDM0MsSUFBSSxFQUFFLENBQUMsUUFBYSxFQUFFLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxFQUFFLElBQUksQ0FBQztnQkFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDekIsQ0FBQztZQUNELEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1NBQ3RDLENBQUMsQ0FBQTtJQUNKLENBQUM7d0dBNUJVLHFCQUFxQjs0RkFBckIscUJBQXFCLDZFQ3RCbEMsOGZBZUEseURERkksWUFBWSxrSUFDWixjQUFjLHlOQUNkLDRCQUE0Qix1RkFDNUIsYUFBYSwrQkFDYixrQ0FBa0M7OzRGQUt6QixxQkFBcUI7a0JBYmpDLFNBQVM7K0JBQ0UsbUJBQW1CLGNBQ2pCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGNBQWM7d0JBQ2QsNEJBQTRCO3dCQUM1QixhQUFhO3dCQUNiLGtDQUFrQztxQkFDbkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IExvY2F0aW9uU2VydmljZSB9IGZyb20gJy4uL2xvY2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTG9jYXRpb25JbmZvcm1hdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL2xvY2F0aW9uLWluZm9ybWF0aW9uL2xvY2F0aW9uLWluZm9ybWF0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQcm9kdWN0TW9kdWxlIH0gZnJvbSAnLi4vLi4vcHJvZHVjdC9wcm9kdWN0Lm1vZHVsZSc7XG5pbXBvcnQgeyBMb2NhdGlvblByb2R1Y3RTdGF0aXN0aWNzQ29tcG9uZW50IH0gZnJvbSAnLi4vbG9jYXRpb24tcHJvZHVjdC1zdGF0aXN0aWNzL2xvY2F0aW9uLXByb2R1Y3Qtc3RhdGlzdGljcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0ZXJpYWxNb2R1bGUgfSBmcm9tICcuLi8uLi9tYXRlcmlhbC5tb2R1bGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtbG9jYXRpb24tdmlldycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTWF0ZXJpYWxNb2R1bGUsXG4gICAgTG9jYXRpb25JbmZvcm1hdGlvbkNvbXBvbmVudCxcbiAgICBQcm9kdWN0TW9kdWxlLFxuICAgIExvY2F0aW9uUHJvZHVjdFN0YXRpc3RpY3NDb21wb25lbnRcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2xvY2F0aW9uLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vbG9jYXRpb24tdmlldy5jb21wb25lbnQuc2Nzcydcbn0pXG5leHBvcnQgY2xhc3MgTG9jYXRpb25WaWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgaWQhOiBudW1iZXI7XG4gIGlzTG9hZGluZyE6IGJvb2xlYW47XG4gIG1vZGVsITogYW55O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc2VydmljZTogTG9jYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlXG4gICkge1xuICAgIHRoaXMuaWQgPSBwYXJzZUludCh0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnBhcmFtc1snaWQnXSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5pZCkge1xuICAgICAgdGhpcy5sb2FkTW9kZWwoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGxvYWRNb2RlbCgpIHtcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgY29uc3QgcGFyYW1zOiBhbnkgPSB7fVxuICAgIHRoaXMuc2VydmljZS5zaG93KHRoaXMuaWQsIHBhcmFtcykuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMubW9kZWwgPSByZXNwb25zZT8uaXRlbTtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4gKHRoaXMuaXNMb2FkaW5nID0gZmFsc2UpXG4gICAgfSlcbiAgfVxufVxuIiwiPGRpdiAqbmdJZj1cIm1vZGVsXCIgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0IGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtd3JhcCBnYXAtM1wiPlxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGdhcC0yXCIgc3R5bGU9XCJ3aWR0aDogNDAwcHhcIj5cbiAgICA8YXBwLWxvY2F0aW9uLWluZm9ybWF0aW9uXG4gICAgICBbbW9kZWxdPVwibW9kZWxcIlxuICAgID48L2FwcC1sb2NhdGlvbi1pbmZvcm1hdGlvbj5cbiAgPC9kaXY+XG5cbiAgPGFwcC1sb2NhdGlvbi1wcm9kdWN0LXN0YXRpc3RpY3NcbiAgICBzdHlsZT1cIndpZHRoOiBjYWxjKDEwMCUgLSA0MDBweCAtIDFyZW0pXCJcbiAgICBbbG9jYXRpb25dPVwibW9kZWxcIlxuICA+PC9hcHAtbG9jYXRpb24tcHJvZHVjdC1zdGF0aXN0aWNzPlxuXG48L2Rpdj5cblxuPG1hdC1wcm9ncmVzcy1iYXIgKm5nSWY9XCJpc0xvYWRpbmdcIiBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiPjwvbWF0LXByb2dyZXNzLWJhcj5cbiJdfQ==