@decaf-ts/for-angular 0.0.11 → 0.0.12

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 (97) hide show
  1. package/dist/for-angular/cli/cli-module.d.ts +22 -0
  2. package/dist/for-angular/cli/cli-module.d.ts.map +1 -0
  3. package/dist/for-angular/cli/cli-module.js +131 -0
  4. package/dist/for-angular/cli/cli-module.js.map +1 -0
  5. package/dist/lib/components/component-renderer/component-renderer.component.d.ts +1 -0
  6. package/dist/lib/components/component-renderer/component-renderer.component.d.ts.map +1 -0
  7. package/dist/lib/components/crud-field/crud-field.component.d.ts +1 -0
  8. package/dist/lib/components/crud-field/crud-field.component.d.ts.map +1 -0
  9. package/dist/lib/components/crud-form/constants.d.ts +1 -0
  10. package/dist/lib/components/crud-form/constants.d.ts.map +1 -0
  11. package/dist/lib/components/crud-form/crud-form.component.d.ts +1 -0
  12. package/dist/lib/components/crud-form/crud-form.component.d.ts.map +1 -0
  13. package/dist/lib/components/crud-form/types.d.ts +1 -0
  14. package/dist/lib/components/crud-form/types.d.ts.map +1 -0
  15. package/dist/lib/components/empty-state/empty-state.component.d.ts +1 -0
  16. package/dist/lib/components/empty-state/empty-state.component.d.ts.map +1 -0
  17. package/dist/lib/components/fieldset/fieldset.component.d.ts +1 -0
  18. package/dist/lib/components/fieldset/fieldset.component.d.ts.map +1 -0
  19. package/dist/lib/components/filter/filter.component.d.ts +1 -0
  20. package/dist/lib/components/filter/filter.component.d.ts.map +1 -0
  21. package/dist/lib/components/for-angular-components.module.d.ts +1 -0
  22. package/dist/lib/components/for-angular-components.module.d.ts.map +1 -0
  23. package/dist/lib/components/index.d.ts +1 -0
  24. package/dist/lib/components/index.d.ts.map +1 -0
  25. package/dist/lib/components/layout/layout.component.d.ts +1 -0
  26. package/dist/lib/components/layout/layout.component.d.ts.map +1 -0
  27. package/dist/lib/components/list/constants.d.ts +1 -0
  28. package/dist/lib/components/list/constants.d.ts.map +1 -0
  29. package/dist/lib/components/list/list.component.d.ts +1 -0
  30. package/dist/lib/components/list/list.component.d.ts.map +1 -0
  31. package/dist/lib/components/list-item/list-item.component.d.ts +1 -0
  32. package/dist/lib/components/list-item/list-item.component.d.ts.map +1 -0
  33. package/dist/lib/components/model-renderer/model-renderer.component.d.ts +1 -0
  34. package/dist/lib/components/model-renderer/model-renderer.component.d.ts.map +1 -0
  35. package/dist/lib/components/pagination/constants.d.ts +1 -0
  36. package/dist/lib/components/pagination/constants.d.ts.map +1 -0
  37. package/dist/lib/components/pagination/pagination.component.d.ts +1 -0
  38. package/dist/lib/components/pagination/pagination.component.d.ts.map +1 -0
  39. package/dist/lib/components/searchbar/searchbar.component.d.ts +1 -0
  40. package/dist/lib/components/searchbar/searchbar.component.d.ts.map +1 -0
  41. package/dist/lib/decaf-ts-for-angular.d.ts.map +1 -0
  42. package/dist/lib/directives/collapsable.directive.d.ts +1 -0
  43. package/dist/lib/directives/collapsable.directive.d.ts.map +1 -0
  44. package/dist/lib/directives/index.d.ts +1 -0
  45. package/dist/lib/directives/index.d.ts.map +1 -0
  46. package/dist/lib/engine/DynamicModule.d.ts +1 -0
  47. package/dist/lib/engine/DynamicModule.d.ts.map +1 -0
  48. package/dist/lib/engine/NgxBaseComponent.d.ts +1 -0
  49. package/dist/lib/engine/NgxBaseComponent.d.ts.map +1 -0
  50. package/dist/lib/engine/NgxCrudFormField.d.ts +1 -0
  51. package/dist/lib/engine/NgxCrudFormField.d.ts.map +1 -0
  52. package/dist/lib/engine/NgxFormService.d.ts +1 -0
  53. package/dist/lib/engine/NgxFormService.d.ts.map +1 -0
  54. package/dist/lib/engine/NgxRenderingEngine.d.ts +1 -0
  55. package/dist/lib/engine/NgxRenderingEngine.d.ts.map +1 -0
  56. package/dist/lib/engine/NgxRenderingEngine2.d.ts +1 -0
  57. package/dist/lib/engine/NgxRenderingEngine2.d.ts.map +1 -0
  58. package/dist/lib/engine/ValidatorFactory.d.ts +1 -0
  59. package/dist/lib/engine/ValidatorFactory.d.ts.map +1 -0
  60. package/dist/lib/engine/constants.d.ts +1 -0
  61. package/dist/lib/engine/constants.d.ts.map +1 -0
  62. package/dist/lib/engine/decorators.d.ts +1 -0
  63. package/dist/lib/engine/decorators.d.ts.map +1 -0
  64. package/dist/lib/engine/index.d.ts +1 -0
  65. package/dist/lib/engine/index.d.ts.map +1 -0
  66. package/dist/lib/engine/types.d.ts +1 -0
  67. package/dist/lib/engine/types.d.ts.map +1 -0
  68. package/dist/lib/esm2022/components/component-renderer/component-renderer.component.mjs +70 -24
  69. package/dist/lib/esm2022/components/crud-field/crud-field.component.mjs +271 -116
  70. package/dist/lib/esm2022/components/crud-form/crud-form.component.mjs +170 -37
  71. package/dist/lib/esm2022/components/empty-state/empty-state.component.mjs +103 -41
  72. package/dist/lib/esm2022/components/fieldset/fieldset.component.mjs +41 -16
  73. package/dist/lib/esm2022/components/filter/filter.component.mjs +248 -31
  74. package/dist/lib/esm2022/components/for-angular-components.module.mjs +38 -37
  75. package/dist/lib/esm2022/components/layout/layout.component.mjs +84 -15
  76. package/dist/lib/esm2022/components/list/list.component.mjs +252 -83
  77. package/dist/lib/esm2022/components/list-item/list-item.component.mjs +250 -46
  78. package/dist/lib/esm2022/components/model-renderer/model-renderer.component.mjs +66 -22
  79. package/dist/lib/esm2022/components/pagination/pagination.component.mjs +58 -17
  80. package/dist/lib/esm2022/components/searchbar/searchbar.component.mjs +66 -56
  81. package/dist/lib/esm2022/directives/collapsable.directive.mjs +10 -10
  82. package/dist/lib/esm2022/engine/NgxBaseComponent.mjs +53 -46
  83. package/dist/lib/esm2022/for-angular.module.mjs +40 -39
  84. package/dist/lib/fesm2022/decaf-ts-for-angular.mjs +1805 -621
  85. package/dist/lib/fesm2022/decaf-ts-for-angular.mjs.map +1 -1
  86. package/dist/lib/for-angular.module.d.ts +1 -0
  87. package/dist/lib/for-angular.module.d.ts.map +1 -0
  88. package/dist/lib/helpers/index.d.ts +1 -0
  89. package/dist/lib/helpers/index.d.ts.map +1 -0
  90. package/dist/lib/helpers/utils.d.ts +1 -0
  91. package/dist/lib/helpers/utils.d.ts.map +1 -0
  92. package/dist/lib/index.d.ts +1 -0
  93. package/dist/lib/interfaces.d.ts +1 -0
  94. package/dist/lib/interfaces.d.ts.map +1 -0
  95. package/dist/lib/public-apis.d.ts +1 -0
  96. package/dist/lib/public-apis.d.ts.map +1 -0
  97. package/package.json +3 -2
@@ -31,41 +31,42 @@ const Components = [
31
31
  FilterComponent
32
32
  ];
33
33
  export class ForAngularComponentsModule {
34
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ForAngularComponentsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
35
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: ForAngularComponentsModule, imports: [ModelRendererComponent,
36
- ComponentRendererComponent,
37
- CrudFieldComponent,
38
- CrudFormComponent,
39
- EmptyStateComponent,
40
- ListComponent,
41
- ListItemComponent,
42
- SearchbarComponent,
43
- PaginationComponent,
44
- CrudFormComponent,
45
- FieldsetComponent,
46
- LayoutComponent,
47
- FilterComponent, CollapsableDirective], exports: [ModelRendererComponent,
48
- ComponentRendererComponent,
49
- CrudFieldComponent,
50
- CrudFormComponent,
51
- EmptyStateComponent,
52
- ListComponent,
53
- ListItemComponent,
54
- SearchbarComponent,
55
- PaginationComponent,
56
- CrudFormComponent,
57
- FieldsetComponent,
58
- LayoutComponent,
59
- FilterComponent, CollapsableDirective, ForAngularModule] }); }
60
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ForAngularComponentsModule, imports: [Components, ForAngularModule] }); }
34
+ static { this.ɵfac = function ForAngularComponentsModule_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ForAngularComponentsModule)(); }; }
35
+ static { this.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: ForAngularComponentsModule }); }
36
+ static { this.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [Components, ForAngularModule] }); }
61
37
  }
62
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ForAngularComponentsModule, decorators: [{
63
- type: NgModule,
64
- args: [{
65
- imports: [Components, Directives],
66
- declarations: [],
67
- schemas: [CUSTOM_ELEMENTS_SCHEMA],
68
- exports: [Components, Directives, ForAngularModule],
69
- }]
70
- }] });
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yLWFuZ3VsYXItY29tcG9uZW50cy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZm9yLWFuZ3VsYXItY29tcG9uZW50cy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNuRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUMvRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7QUFFNUQsTUFBTSxVQUFVLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0FBQzFDLE1BQU0sVUFBVSxHQUFHO0lBQ2pCLHNCQUFzQjtJQUN0QiwwQkFBMEI7SUFDMUIsa0JBQWtCO0lBQ2xCLGlCQUFpQjtJQUNqQixtQkFBbUI7SUFDbkIsYUFBYTtJQUNiLGlCQUFpQjtJQUNqQixrQkFBa0I7SUFDbEIsbUJBQW1CO0lBQ25CLGlCQUFpQjtJQUNqQixpQkFBaUI7SUFDakIsZUFBZTtJQUNmLGVBQWU7Q0FDaEIsQ0FBQztBQVFGLE1BQU0sT0FBTywwQkFBMEI7K0dBQTFCLDBCQUEwQjtnSEFBMUIsMEJBQTBCLFlBckJyQyxzQkFBc0I7WUFDdEIsMEJBQTBCO1lBQzFCLGtCQUFrQjtZQUNsQixpQkFBaUI7WUFDakIsbUJBQW1CO1lBQ25CLGFBQWE7WUFDYixpQkFBaUI7WUFDakIsa0JBQWtCO1lBQ2xCLG1CQUFtQjtZQUNuQixpQkFBaUI7WUFDakIsaUJBQWlCO1lBQ2pCLGVBQWU7WUFDZixlQUFlLEVBZEcsb0JBQW9CLGFBRXRDLHNCQUFzQjtZQUN0QiwwQkFBMEI7WUFDMUIsa0JBQWtCO1lBQ2xCLGlCQUFpQjtZQUNqQixtQkFBbUI7WUFDbkIsYUFBYTtZQUNiLGlCQUFpQjtZQUNqQixrQkFBa0I7WUFDbEIsbUJBQW1CO1lBQ25CLGlCQUFpQjtZQUNqQixpQkFBaUI7WUFDakIsZUFBZTtZQUNmLGVBQWUsRUFkRyxvQkFBb0IsRUFxQkosZ0JBQWdCO2dIQUV2QywwQkFBMEIsWUFMM0IsVUFBVSxFQUdjLGdCQUFnQjs7NEZBRXZDLDBCQUEwQjtrQkFOdEMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDO29CQUNqQyxZQUFZLEVBQUUsRUFBRTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLE9BQU8sRUFBRSxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLENBQUM7aUJBQ3BEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUsIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENydWRGaWVsZENvbXBvbmVudCB9IGZyb20gJy4vY3J1ZC1maWVsZC9jcnVkLWZpZWxkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDcnVkRm9ybUNvbXBvbmVudCB9IGZyb20gJy4vY3J1ZC1mb3JtL2NydWQtZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTW9kZWxSZW5kZXJlckNvbXBvbmVudCB9IGZyb20gJy4vbW9kZWwtcmVuZGVyZXIvbW9kZWwtcmVuZGVyZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEZvckFuZ3VsYXJNb2R1bGUgfSBmcm9tICcuLi9mb3ItYW5ndWxhci5tb2R1bGUnO1xuaW1wb3J0IHsgU2VhcmNoYmFyQ29tcG9uZW50IH0gZnJvbSAnLi9zZWFyY2hiYXIvc2VhcmNoYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbXB0eVN0YXRlQ29tcG9uZW50IH0gZnJvbSAnLi9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTGlzdEl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2xpc3QtaXRlbS9saXN0LWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IENvbXBvbmVudFJlbmRlcmVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnQtcmVuZGVyZXIvY29tcG9uZW50LXJlbmRlcmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQYWdpbmF0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9wYWdpbmF0aW9uL3BhZ2luYXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IExpc3RDb21wb25lbnQgfSBmcm9tICcuL2xpc3QvbGlzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRmllbGRzZXRDb21wb25lbnQgfSBmcm9tICcuL2ZpZWxkc2V0L2ZpZWxkc2V0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb2xsYXBzYWJsZURpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvY29sbGFwc2FibGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IExheW91dENvbXBvbmVudCB9IGZyb20gJy4vbGF5b3V0L2xheW91dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRmlsdGVyQ29tcG9uZW50IH0gZnJvbSAnLi9maWx0ZXIvZmlsdGVyLmNvbXBvbmVudCc7XG5cbmNvbnN0IERpcmVjdGl2ZXMgPSBbQ29sbGFwc2FibGVEaXJlY3RpdmVdO1xuY29uc3QgQ29tcG9uZW50cyA9IFtcbiAgTW9kZWxSZW5kZXJlckNvbXBvbmVudCxcbiAgQ29tcG9uZW50UmVuZGVyZXJDb21wb25lbnQsXG4gIENydWRGaWVsZENvbXBvbmVudCxcbiAgQ3J1ZEZvcm1Db21wb25lbnQsXG4gIEVtcHR5U3RhdGVDb21wb25lbnQsXG4gIExpc3RDb21wb25lbnQsXG4gIExpc3RJdGVtQ29tcG9uZW50LFxuICBTZWFyY2hiYXJDb21wb25lbnQsXG4gIFBhZ2luYXRpb25Db21wb25lbnQsXG4gIENydWRGb3JtQ29tcG9uZW50LFxuICBGaWVsZHNldENvbXBvbmVudCxcbiAgTGF5b3V0Q29tcG9uZW50LFxuICBGaWx0ZXJDb21wb25lbnRcbl07XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtDb21wb25lbnRzLCBEaXJlY3RpdmVzXSxcbiAgZGVjbGFyYXRpb25zOiBbXSxcbiAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuICBleHBvcnRzOiBbQ29tcG9uZW50cywgRGlyZWN0aXZlcywgRm9yQW5ndWxhck1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIEZvckFuZ3VsYXJDb21wb25lbnRzTW9kdWxlIHt9XG4iXX0=
38
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ForAngularComponentsModule, [{
39
+ type: NgModule,
40
+ args: [{
41
+ imports: [Components, Directives],
42
+ declarations: [],
43
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
44
+ exports: [Components, Directives, ForAngularModule],
45
+ }]
46
+ }], null, null); })();
47
+ (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(ForAngularComponentsModule, { imports: [ModelRendererComponent,
48
+ ComponentRendererComponent,
49
+ CrudFieldComponent,
50
+ CrudFormComponent,
51
+ EmptyStateComponent,
52
+ ListComponent,
53
+ ListItemComponent,
54
+ SearchbarComponent,
55
+ PaginationComponent,
56
+ CrudFormComponent,
57
+ FieldsetComponent,
58
+ LayoutComponent,
59
+ FilterComponent, CollapsableDirective], exports: [ModelRendererComponent,
60
+ ComponentRendererComponent,
61
+ CrudFieldComponent,
62
+ CrudFormComponent,
63
+ EmptyStateComponent,
64
+ ListComponent,
65
+ ListItemComponent,
66
+ SearchbarComponent,
67
+ PaginationComponent,
68
+ CrudFormComponent,
69
+ FieldsetComponent,
70
+ LayoutComponent,
71
+ FilterComponent, CollapsableDirective, ForAngularModule] }); })();
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yLWFuZ3VsYXItY29tcG9uZW50cy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZm9yLWFuZ3VsYXItY29tcG9uZW50cy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNuRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUMvRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7QUFFNUQsTUFBTSxVQUFVLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0FBQzFDLE1BQU0sVUFBVSxHQUFHO0lBQ2pCLHNCQUFzQjtJQUN0QiwwQkFBMEI7SUFDMUIsa0JBQWtCO0lBQ2xCLGlCQUFpQjtJQUNqQixtQkFBbUI7SUFDbkIsYUFBYTtJQUNiLGlCQUFpQjtJQUNqQixrQkFBa0I7SUFDbEIsbUJBQW1CO0lBQ25CLGlCQUFpQjtJQUNqQixpQkFBaUI7SUFDakIsZUFBZTtJQUNmLGVBQWU7Q0FDaEIsQ0FBQztBQVFGLE1BQU0sT0FBTywwQkFBMEI7MkhBQTFCLDBCQUEwQjttRUFBMUIsMEJBQTBCO3VFQUwzQixVQUFVLEVBR2MsZ0JBQWdCOztpRkFFdkMsMEJBQTBCO2NBTnRDLFFBQVE7ZUFBQztnQkFDUixPQUFPLEVBQUUsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDO2dCQUNqQyxZQUFZLEVBQUUsRUFBRTtnQkFDaEIsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7Z0JBQ2pDLE9BQU8sRUFBRSxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLENBQUM7YUFDcEQ7O3dGQUNZLDBCQUEwQixjQXJCckMsc0JBQXNCO1FBQ3RCLDBCQUEwQjtRQUMxQixrQkFBa0I7UUFDbEIsaUJBQWlCO1FBQ2pCLG1CQUFtQjtRQUNuQixhQUFhO1FBQ2IsaUJBQWlCO1FBQ2pCLGtCQUFrQjtRQUNsQixtQkFBbUI7UUFDbkIsaUJBQWlCO1FBQ2pCLGlCQUFpQjtRQUNqQixlQUFlO1FBQ2YsZUFBZSxFQWRHLG9CQUFvQixhQUV0QyxzQkFBc0I7UUFDdEIsMEJBQTBCO1FBQzFCLGtCQUFrQjtRQUNsQixpQkFBaUI7UUFDakIsbUJBQW1CO1FBQ25CLGFBQWE7UUFDYixpQkFBaUI7UUFDakIsa0JBQWtCO1FBQ2xCLG1CQUFtQjtRQUNuQixpQkFBaUI7UUFDakIsaUJBQWlCO1FBQ2pCLGVBQWU7UUFDZixlQUFlLEVBZEcsb0JBQW9CLEVBcUJKLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDcnVkRmllbGRDb21wb25lbnQgfSBmcm9tICcuL2NydWQtZmllbGQvY3J1ZC1maWVsZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3J1ZEZvcm1Db21wb25lbnQgfSBmcm9tICcuL2NydWQtZm9ybS9jcnVkLWZvcm0uY29tcG9uZW50JztcbmltcG9ydCB7IE1vZGVsUmVuZGVyZXJDb21wb25lbnQgfSBmcm9tICcuL21vZGVsLXJlbmRlcmVyL21vZGVsLXJlbmRlcmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3JBbmd1bGFyTW9kdWxlIH0gZnJvbSAnLi4vZm9yLWFuZ3VsYXIubW9kdWxlJztcbmltcG9ydCB7IFNlYXJjaGJhckNvbXBvbmVudCB9IGZyb20gJy4vc2VhcmNoYmFyL3NlYXJjaGJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRW1wdHlTdGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vZW1wdHktc3RhdGUvZW1wdHktc3RhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IExpc3RJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9saXN0LWl0ZW0vbGlzdC1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21wb25lbnRSZW5kZXJlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50LXJlbmRlcmVyL2NvbXBvbmVudC1yZW5kZXJlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGFnaW5hdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vcGFnaW5hdGlvbi9wYWdpbmF0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9saXN0L2xpc3QuY29tcG9uZW50JztcbmltcG9ydCB7IEZpZWxkc2V0Q29tcG9uZW50IH0gZnJvbSAnLi9maWVsZHNldC9maWVsZHNldC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29sbGFwc2FibGVEaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2NvbGxhcHNhYmxlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBMYXlvdXRDb21wb25lbnQgfSBmcm9tICcuL2xheW91dC9sYXlvdXQuY29tcG9uZW50JztcbmltcG9ydCB7IEZpbHRlckNvbXBvbmVudCB9IGZyb20gJy4vZmlsdGVyL2ZpbHRlci5jb21wb25lbnQnO1xuXG5jb25zdCBEaXJlY3RpdmVzID0gW0NvbGxhcHNhYmxlRGlyZWN0aXZlXTtcbmNvbnN0IENvbXBvbmVudHMgPSBbXG4gIE1vZGVsUmVuZGVyZXJDb21wb25lbnQsXG4gIENvbXBvbmVudFJlbmRlcmVyQ29tcG9uZW50LFxuICBDcnVkRmllbGRDb21wb25lbnQsXG4gIENydWRGb3JtQ29tcG9uZW50LFxuICBFbXB0eVN0YXRlQ29tcG9uZW50LFxuICBMaXN0Q29tcG9uZW50LFxuICBMaXN0SXRlbUNvbXBvbmVudCxcbiAgU2VhcmNoYmFyQ29tcG9uZW50LFxuICBQYWdpbmF0aW9uQ29tcG9uZW50LFxuICBDcnVkRm9ybUNvbXBvbmVudCxcbiAgRmllbGRzZXRDb21wb25lbnQsXG4gIExheW91dENvbXBvbmVudCxcbiAgRmlsdGVyQ29tcG9uZW50XG5dO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tcG9uZW50cywgRGlyZWN0aXZlc10sXG4gIGRlY2xhcmF0aW9uczogW10sXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbiAgZXhwb3J0czogW0NvbXBvbmVudHMsIERpcmVjdGl2ZXMsIEZvckFuZ3VsYXJNb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JBbmd1bGFyQ29tcG9uZW50c01vZHVsZSB7fVxuIl19
@@ -5,6 +5,70 @@ import { ComponentRendererComponent } from '../component-renderer/component-rend
5
5
  import { ModelRendererComponent } from '../model-renderer/model-renderer.component';
6
6
  import * as i0 from "@angular/core";
7
7
  import * as i1 from "@ngx-translate/core";
8
+ function _forTrack0($index, $item) { return this.trackItemFn($index, $item.col); }
9
+ const _c0 = a0 => ({ props: a0 });
10
+ function LayoutComponent_Conditional_0_For_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
11
+ i0.ɵɵelementStart(0, "div", 1)(1, "ion-card", 3);
12
+ i0.ɵɵtext(2);
13
+ i0.ɵɵpipe(3, "translate");
14
+ i0.ɵɵelementEnd()();
15
+ } if (rf & 2) {
16
+ const row_r1 = i0.ɵɵnextContext().$implicit;
17
+ i0.ɵɵadvance(2);
18
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 1, row_r1.title), " ");
19
+ } }
20
+ function LayoutComponent_Conditional_0_For_1_For_3_Conditional_2_Template(rf, ctx) { if (rf & 1) {
21
+ const _r2 = i0.ɵɵgetCurrentView();
22
+ i0.ɵɵelementStart(0, "ion-card")(1, "ion-card-content")(2, "ngx-decaf-model-renderer", 5);
23
+ i0.ɵɵlistener("listenEvent", function LayoutComponent_Conditional_0_For_1_For_3_Conditional_2_Template_ngx_decaf_model_renderer_listenEvent_2_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.handleEvent($event)); });
24
+ i0.ɵɵelementEnd()()();
25
+ } if (rf & 2) {
26
+ const child_r4 = i0.ɵɵnextContext().$implicit;
27
+ const ctx_r2 = i0.ɵɵnextContext(3);
28
+ i0.ɵɵclassMap("dcf-height-1-1 " + ctx_r2.className);
29
+ i0.ɵɵadvance(2);
30
+ i0.ɵɵproperty("model", child_r4.props.name);
31
+ } }
32
+ function LayoutComponent_Conditional_0_For_1_For_3_Conditional_3_Template(rf, ctx) { if (rf & 1) {
33
+ const _r5 = i0.ɵɵgetCurrentView();
34
+ i0.ɵɵelementStart(0, "ngx-decaf-component-renderer", 6);
35
+ i0.ɵɵlistener("listenEvent", function LayoutComponent_Conditional_0_For_1_For_3_Conditional_3_Template_ngx_decaf_component_renderer_listenEvent_0_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.handleEvent($event)); });
36
+ i0.ɵɵelementEnd();
37
+ } if (rf & 2) {
38
+ const child_r4 = i0.ɵɵnextContext().$implicit;
39
+ i0.ɵɵproperty("tag", child_r4.tag)("globals", i0.ɵɵpureFunction1(2, _c0, child_r4.props));
40
+ } }
41
+ function LayoutComponent_Conditional_0_For_1_For_3_Template(rf, ctx) { if (rf & 1) {
42
+ i0.ɵɵelementStart(0, "div")(1, "div");
43
+ i0.ɵɵtemplate(2, LayoutComponent_Conditional_0_For_1_For_3_Conditional_2_Template, 3, 3, "ion-card", 2)(3, LayoutComponent_Conditional_0_For_1_For_3_Conditional_3_Template, 1, 4, "ngx-decaf-component-renderer", 4);
44
+ i0.ɵɵelementEnd()();
45
+ } if (rf & 2) {
46
+ const child_r4 = ctx.$implicit;
47
+ const ctx_r2 = i0.ɵɵnextContext(3);
48
+ i0.ɵɵclassMap(child_r4.col === ctx_r2.cols.length ? "dcf-width-1-1" : "dcf-width-" + child_r4.col + "-" + ctx_r2.cols.length + "@" + ctx_r2.breakpoint);
49
+ i0.ɵɵadvance();
50
+ i0.ɵɵclassMap("dcf-grid-child " + child_r4.col);
51
+ i0.ɵɵadvance();
52
+ i0.ɵɵconditional(child_r4.tag === "ngx-decaf-crud-form" ? 2 : 3);
53
+ } }
54
+ function LayoutComponent_Conditional_0_For_1_Template(rf, ctx) { if (rf & 1) {
55
+ i0.ɵɵelementStart(0, "div", 0);
56
+ i0.ɵɵtemplate(1, LayoutComponent_Conditional_0_For_1_Conditional_1_Template, 4, 3, "div", 1);
57
+ i0.ɵɵrepeaterCreate(2, LayoutComponent_Conditional_0_For_1_For_3_Template, 4, 5, "div", 2, _forTrack0, true);
58
+ i0.ɵɵelementEnd();
59
+ } if (rf & 2) {
60
+ const row_r1 = ctx.$implicit;
61
+ i0.ɵɵadvance();
62
+ i0.ɵɵconditional(row_r1 ? 1 : -1);
63
+ i0.ɵɵadvance();
64
+ i0.ɵɵrepeater(row_r1.cols);
65
+ } }
66
+ function LayoutComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
67
+ i0.ɵɵrepeaterCreate(0, LayoutComponent_Conditional_0_For_1_Template, 4, 1, "div", 0, i0.ɵɵcomponentInstance().trackItemFn, true);
68
+ } if (rf & 2) {
69
+ const ctx_r2 = i0.ɵɵnextContext();
70
+ i0.ɵɵrepeater(ctx_r2.rows);
71
+ } }
8
72
  /**
9
73
  * @description Layout component for creating responsive grid layouts in Angular applications.
10
74
  * @summary This component provides a flexible grid system that can be configured with dynamic
@@ -158,19 +222,24 @@ export class LayoutComponent extends NgxBaseComponent {
158
222
  this.rows = this._rows;
159
223
  this.initialized = true;
160
224
  }
161
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
162
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LayoutComponent, isStandalone: true, selector: "ngx-decaf-layout", inputs: { cols: "cols", rows: "rows", breakpoint: "breakpoint", children: "children" }, usesInheritance: true, ngImport: i0, template: "\n@if(initialized) {\n @for (row of rows; track trackItemFn($index, row); let rowIndex = $index) {\n <div class=\"dcf-grid dcf-grid-collapse dcf-grid-match\">\n @if(row) {\n <div class=\"dcf-width-1-1 dcf-grid-title\">\n <ion-card class=\"dcf-grid-title\">\n {{row.title | translate}}\n </ion-card>\n </div>\n }\n @for (child of row.cols; track trackItemFn($index, child.col); let colIndex = $index) {\n <div [class]=\"(child.col === cols.length ? 'dcf-width-1-1' : 'dcf-width-'+child.col+'-'+cols.length+'@'+breakpoint)\">\n <div [class]=\"'dcf-grid-child '+child.col \">\n @if(child.tag === 'ngx-decaf-crud-form') {\n <ion-card [class]=\"'dcf-height-1-1 ' + className\">\n <ion-card-content>\n <ngx-decaf-model-renderer\n [model]=\"child.props.name\"\n (listenEvent)=\"handleEvent($event)\"\n />\n </ion-card-content>\n </ion-card>\n } @else {\n <ngx-decaf-component-renderer\n [tag]=\"child.tag\"\n (listenEvent)=\"handleEvent($event)\"\n [globals]=\"{props: child.props}\"\n />\n }\n </div>\n </div>\n }\n </div>\n }\n}\n", styles: [".dcf-grid>div:not(.dcf-grid-title) ::ng-deep ngx-decaf-component-renderer>*>*{height:100%;display:flex;justify-content:center!important;align-items:center!important}.dcf-grid.dcf-grid-small .dcf-grid-child{margin-bottom:2rem}.dcf-grid.dcf-grid-collapse .dcf-grid-child{margin-bottom:1.25rem}.dcf-grid.dcf-grid-collapse .dcf-grid-child ion-card{margin-bottom:1.25rem}.dcf-grid-title{font-size:1.05rem!important;background:none;box-shadow:none;margin-bottom:0;padding-bottom:0;font-weight:600;color:var(--ion-text-color);display:flex;align-items:center;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}\n"], dependencies: [{ kind: "ngmodule", type: ForAngularModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "component", type: ModelRendererComponent, selector: "ngx-decaf-model-renderer", inputs: ["model", "globals", "rendererId"], outputs: ["listenEvent"] }, { kind: "component", type: ComponentRendererComponent, selector: "ngx-decaf-component-renderer", inputs: ["tag", "globals", "model", "parent"], outputs: ["listenEvent"] }] }); }
225
+ static { this.ɵfac = function LayoutComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || LayoutComponent)(); }; }
226
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LayoutComponent, selectors: [["ngx-decaf-layout"]], inputs: { cols: "cols", rows: "rows", breakpoint: "breakpoint", children: "children" }, standalone: true, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], decls: 1, vars: 1, consts: [[1, "dcf-grid", "dcf-grid-collapse", "dcf-grid-match"], [1, "dcf-width-1-1", "dcf-grid-title"], [3, "class"], [1, "dcf-grid-title"], [3, "tag", "globals"], [3, "listenEvent", "model"], [3, "listenEvent", "tag", "globals"]], template: function LayoutComponent_Template(rf, ctx) { if (rf & 1) {
227
+ i0.ɵɵtemplate(0, LayoutComponent_Conditional_0_Template, 2, 0);
228
+ } if (rf & 2) {
229
+ i0.ɵɵconditional(ctx.initialized ? 0 : -1);
230
+ } }, dependencies: [ForAngularModule, i1.TranslatePipe, ModelRendererComponent, ComponentRendererComponent], styles: [".dcf-grid[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:not(.dcf-grid-title) ngx-decaf-component-renderer>*>*{height:100%;display:flex;justify-content:center!important;align-items:center!important}.dcf-grid.dcf-grid-small[_ngcontent-%COMP%] .dcf-grid-child[_ngcontent-%COMP%]{margin-bottom:2rem}.dcf-grid.dcf-grid-collapse[_ngcontent-%COMP%] .dcf-grid-child[_ngcontent-%COMP%]{margin-bottom:1.25rem}.dcf-grid.dcf-grid-collapse[_ngcontent-%COMP%] .dcf-grid-child[_ngcontent-%COMP%] ion-card[_ngcontent-%COMP%]{margin-bottom:1.25rem}.dcf-grid-title[_ngcontent-%COMP%]{font-size:1.05rem!important;background:none;box-shadow:none;margin-bottom:0;padding-bottom:0;font-weight:600;color:var(--ion-text-color);display:flex;align-items:center;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}"] }); }
163
231
  }
164
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LayoutComponent, decorators: [{
165
- type: Component,
166
- args: [{ selector: 'ngx-decaf-layout', imports: [ForAngularModule, ModelRendererComponent, ComponentRendererComponent], standalone: true, template: "\n@if(initialized) {\n @for (row of rows; track trackItemFn($index, row); let rowIndex = $index) {\n <div class=\"dcf-grid dcf-grid-collapse dcf-grid-match\">\n @if(row) {\n <div class=\"dcf-width-1-1 dcf-grid-title\">\n <ion-card class=\"dcf-grid-title\">\n {{row.title | translate}}\n </ion-card>\n </div>\n }\n @for (child of row.cols; track trackItemFn($index, child.col); let colIndex = $index) {\n <div [class]=\"(child.col === cols.length ? 'dcf-width-1-1' : 'dcf-width-'+child.col+'-'+cols.length+'@'+breakpoint)\">\n <div [class]=\"'dcf-grid-child '+child.col \">\n @if(child.tag === 'ngx-decaf-crud-form') {\n <ion-card [class]=\"'dcf-height-1-1 ' + className\">\n <ion-card-content>\n <ngx-decaf-model-renderer\n [model]=\"child.props.name\"\n (listenEvent)=\"handleEvent($event)\"\n />\n </ion-card-content>\n </ion-card>\n } @else {\n <ngx-decaf-component-renderer\n [tag]=\"child.tag\"\n (listenEvent)=\"handleEvent($event)\"\n [globals]=\"{props: child.props}\"\n />\n }\n </div>\n </div>\n }\n </div>\n }\n}\n", styles: [".dcf-grid>div:not(.dcf-grid-title) ::ng-deep ngx-decaf-component-renderer>*>*{height:100%;display:flex;justify-content:center!important;align-items:center!important}.dcf-grid.dcf-grid-small .dcf-grid-child{margin-bottom:2rem}.dcf-grid.dcf-grid-collapse .dcf-grid-child{margin-bottom:1.25rem}.dcf-grid.dcf-grid-collapse .dcf-grid-child ion-card{margin-bottom:1.25rem}.dcf-grid-title{font-size:1.05rem!important;background:none;box-shadow:none;margin-bottom:0;padding-bottom:0;font-weight:600;color:var(--ion-text-color);display:flex;align-items:center;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}\n"] }]
167
- }], ctorParameters: () => [], propDecorators: { cols: [{
168
- type: Input
169
- }], rows: [{
170
- type: Input
171
- }], breakpoint: [{
172
- type: Input
173
- }], children: [{
174
- type: Input
175
- }] } });
176
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9sYXlvdXQvbGF5b3V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9sYXlvdXQvbGF5b3V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQ3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRWpFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDOzs7QUFHcEY7Ozs7Ozs7Ozs7O0dBV0c7QUFTSCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxnQkFBZ0I7SUF5RG5EOzs7Ozs7O09BT0c7SUFDSDtRQUNFLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO1FBaEUxQjs7Ozs7Ozs7OztXQVVHO1FBRUgsU0FBSSxHQUFzQixDQUFDLENBQUM7UUFFNUI7Ozs7Ozs7OztXQVNHO1FBRUgsU0FBSSxHQUFtQyxDQUFDLENBQUM7UUFFekM7Ozs7Ozs7Ozs7V0FVRztRQUVILGVBQVUsR0FBdUIsUUFBUSxDQUFDO1FBRTFDOzs7Ozs7Ozs7O1dBVUc7UUFFSCxhQUFRLEdBQWUsRUFBRSxDQUFDO0lBWTFCLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0gsSUFBSSxLQUFLO1FBQ1AsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUNyQixJQUFHLE9BQU8sSUFBSSxLQUFLLFFBQVE7WUFDekIsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFDLEVBQUUsR0FBRyxFQUFFLENBQUUsRUFBRSxDQUFDLENBQUM7UUFDdkQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNILElBQUksS0FBSztRQUNQLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDckIsSUFBRyxPQUFPLElBQUksS0FBSyxRQUFRO1lBQ3pCLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBQyxLQUFLLEVBQUUsRUFBRSxFQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pFLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUM3QixPQUFPO2dCQUNMLEtBQUssRUFBRyxHQUFnQixFQUFFLENBQUMsT0FBTyxDQUFDO2dCQUNuQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7b0JBQ2pDLElBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLEtBQUssR0FBRyxDQUFDO3dCQUMzQixPQUFPLEtBQUssQ0FBQztnQkFDakIsQ0FBQyxDQUFDO2FBQ0gsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BcUJHO0lBQ00sVUFBVTtRQUNqQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBd0IsQ0FBQztRQUNsRixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO0lBQzFCLENBQUM7K0dBekpVLGVBQWU7bUdBQWYsZUFBZSwyTEM1QjVCLDQzQ0FvQ0EsNHBCRFpZLGdCQUFnQiw0RkFBRSxzQkFBc0IsMklBQUUsMEJBQTBCOzs0RkFJbkUsZUFBZTtrQkFSM0IsU0FBUzsrQkFDRSxrQkFBa0IsV0FHbkIsQ0FBQyxnQkFBZ0IsRUFBRSxzQkFBc0IsRUFBRSwwQkFBMEIsQ0FBQyxjQUNuRSxJQUFJO3dEQWlCaEIsSUFBSTtzQkFESCxLQUFLO2dCQWNOLElBQUk7c0JBREgsS0FBSztnQkFlTixVQUFVO3NCQURULEtBQUs7Z0JBZU4sUUFBUTtzQkFEUCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvckFuZ3VsYXJNb2R1bGUgfSBmcm9tICcuLi8uLi9mb3ItYW5ndWxhci5tb2R1bGUnO1xuaW1wb3J0IHsgTmd4QmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2VuZ2luZS9OZ3hCYXNlQ29tcG9uZW50JztcbmltcG9ydCB7IEtleVZhbHVlIH0gZnJvbSAnLi4vLi4vZW5naW5lJztcbmltcG9ydCB7IENvbXBvbmVudFJlbmRlcmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50LXJlbmRlcmVyL2NvbXBvbmVudC1yZW5kZXJlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgTW9kZWxSZW5kZXJlckNvbXBvbmVudCB9IGZyb20gJy4uL21vZGVsLXJlbmRlcmVyL21vZGVsLXJlbmRlcmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBVSU1lZGlhQnJlYWtQb2ludHMgfSBmcm9tICdAZGVjYWYtdHMvdWktZGVjb3JhdG9ycyc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIExheW91dCBjb21wb25lbnQgZm9yIGNyZWF0aW5nIHJlc3BvbnNpdmUgZ3JpZCBsYXlvdXRzIGluIEFuZ3VsYXIgYXBwbGljYXRpb25zLlxuICogQHN1bW1hcnkgVGhpcyBjb21wb25lbnQgcHJvdmlkZXMgYSBmbGV4aWJsZSBncmlkIHN5c3RlbSB0aGF0IGNhbiBiZSBjb25maWd1cmVkIHdpdGggZHluYW1pY1xuICogcm93cyBhbmQgY29sdW1ucy4gSXQgc3VwcG9ydHMgcmVzcG9uc2l2ZSBicmVha3BvaW50cyBhbmQgY2FuIHJlbmRlciBjaGlsZCBjb21wb25lbnRzIHdpdGhpblxuICogdGhlIGdyaWQgc3RydWN0dXJlLiBUaGUgY29tcG9uZW50IGV4dGVuZHMgTmd4QmFzZUNvbXBvbmVudCB0byBpbmhlcml0IGNvbW1vbiBmdW5jdGlvbmFsaXR5XG4gKiBhbmQgaW50ZWdyYXRlcyB3aXRoIHRoZSBtb2RlbCBhbmQgY29tcG9uZW50IHJlbmRlcmVyIHN5c3RlbXMuXG4gKlxuICogQGNsYXNzIExheW91dENvbXBvbmVudFxuICogQGV4dGVuZHMge05neEJhc2VDb21wb25lbnR9XG4gKiBAaW1wbGVtZW50cyB7T25Jbml0fVxuICogQG1lbWJlck9mIExheW91dENvbXBvbmVudFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ3gtZGVjYWYtbGF5b3V0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xheW91dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xheW91dC5jb21wb25lbnQuc2NzcyddLFxuICBpbXBvcnRzOiBbRm9yQW5ndWxhck1vZHVsZSwgTW9kZWxSZW5kZXJlckNvbXBvbmVudCwgQ29tcG9uZW50UmVuZGVyZXJDb21wb25lbnRdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuXG59KVxuZXhwb3J0IGNsYXNzIExheW91dENvbXBvbmVudCBleHRlbmRzIE5neEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gTnVtYmVyIG9mIGNvbHVtbnMgb3IgYXJyYXkgb2YgY29sdW1uIGRlZmluaXRpb25zIGZvciB0aGUgZ3JpZCBsYXlvdXQuXG4gICAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIGNvbHVtbiBzdHJ1Y3R1cmUgb2YgdGhlIGdyaWQuIFdoZW4gYSBudW1iZXIgaXMgcHJvdmlkZWQsIGl0IGNyZWF0ZXNcbiAgICogdGhhdCBtYW55IGVxdWFsLXdpZHRoIGNvbHVtbnMuIFdoZW4gYW4gYXJyYXkgaXMgcHJvdmlkZWQsIGVhY2ggZWxlbWVudCBjYW4gZGVmaW5lIHNwZWNpZmljXG4gICAqIGNvbHVtbiBwcm9wZXJ0aWVzIG9yIHNpemluZy4gVGhpcyBhbGxvd3MgZm9yIGZsZXhpYmxlIGdyaWQgbGF5b3V0cyB0aGF0IGNhbiBhZGFwdCB0b1xuICAgKiBkaWZmZXJlbnQgY29udGVudCByZXF1aXJlbWVudHMuXG4gICAqXG4gICAqIEB0eXBlIHsobnVtYmVyIHwgc3RyaW5nW10pfVxuICAgKiBAZGVmYXVsdCAxXG4gICAqIEBtZW1iZXJPZiBMYXlvdXRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpXG4gIGNvbHM6IG51bWJlciB8IHN0cmluZ1tdID0gMTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIE51bWJlciBvZiByb3dzIG9yIGFycmF5IG9mIHJvdyBkZWZpbml0aW9ucyBmb3IgdGhlIGdyaWQgbGF5b3V0LlxuICAgKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSByb3cgc3RydWN0dXJlIG9mIHRoZSBncmlkLiBXaGVuIGEgbnVtYmVyIGlzIHByb3ZpZGVkLCBpdCBjcmVhdGVzXG4gICAqIHRoYXQgbWFueSBlcXVhbC1oZWlnaHQgcm93cy4gV2hlbiBhbiBhcnJheSBpcyBwcm92aWRlZCwgZWFjaCBlbGVtZW50IGNhbiBkZWZpbmUgc3BlY2lmaWNcbiAgICogcm93IHByb3BlcnRpZXMgb3Igc2l6aW5nLiBUaGlzIHByb3ZpZGVzIGNvbnRyb2wgb3ZlciB2ZXJ0aWNhbCBzcGFjaW5nIGFuZCBjb250ZW50IG9yZ2FuaXphdGlvbi5cbiAgICpcbiAgICogQHR5cGUgeyhudW1iZXIgfCBzdHJpbmdbXSl9XG4gICAqIEBkZWZhdWx0IDFcbiAgICogQG1lbWJlck9mIExheW91dENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KClcbiAgcm93czogbnVtYmVyIHwgS2V5VmFsdWVbXSB8IHN0cmluZ1tdID0gMTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIE1lZGlhIGJyZWFrcG9pbnQgZm9yIHJlc3BvbnNpdmUgYmVoYXZpb3IuXG4gICAqIEBzdW1tYXJ5IERldGVybWluZXMgdGhlIHJlc3BvbnNpdmUgYnJlYWtwb2ludCBhdCB3aGljaCB0aGUgbGF5b3V0IHNob3VsZCBhZGFwdC5cbiAgICogVGhpcyBhZmZlY3RzIGhvdyB0aGUgZ3JpZCBiZWhhdmVzIG9uIGRpZmZlcmVudCBzY3JlZW4gc2l6ZXMsIGFsbG93aW5nIGZvclxuICAgKiBtb2JpbGUtZmlyc3Qgb3IgZGVza3RvcC1maXJzdCByZXNwb25zaXZlIGRlc2lnbiBwYXR0ZXJucy4gVGhlIGJyZWFrcG9pbnRcbiAgICogaXMgYXV0b21hdGljYWxseSBwcm9jZXNzZWQgdG8gZW5zdXJlIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgVUkgZnJhbWV3b3JrLlxuICAgKlxuICAgKiBAdHlwZSB7VUlNZWRpYUJyZWFrUG9pbnRzfVxuICAgKiBAZGVmYXVsdCAnbWVkaXVtJ1xuICAgKiBAbWVtYmVyT2YgTGF5b3V0Q29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKVxuICBicmVha3BvaW50OiBVSU1lZGlhQnJlYWtQb2ludHMgPSAnbWVkaXVtJztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEFycmF5IG9mIGNoaWxkIGNvbXBvbmVudHMgb3IgZGF0YSB0byByZW5kZXIgd2l0aGluIHRoZSBncmlkLlxuICAgKiBAc3VtbWFyeSBDb250YWlucyB0aGUgY2hpbGQgZWxlbWVudHMgdGhhdCB3aWxsIGJlIGRpc3RyaWJ1dGVkIGFjcm9zcyB0aGUgZ3JpZCBsYXlvdXQuXG4gICAqIEVhY2ggaXRlbSBpbiB0aGUgYXJyYXkgcmVwcmVzZW50cyBjb250ZW50IHRoYXQgd2lsbCBiZSByZW5kZXJlZCB1c2luZyB0aGUgYXBwcm9wcmlhdGVcbiAgICogcmVuZGVyZXIgY29tcG9uZW50IChNb2RlbFJlbmRlcmVyIG9yIENvbXBvbmVudFJlbmRlcmVyKS4gVGhpcyBhbGxvd3MgZm9yIG1peGVkIGNvbnRlbnRcbiAgICogdHlwZXMgd2l0aGluIGEgc2luZ2xlIGxheW91dCBzdHJ1Y3R1cmUuXG4gICAqXG4gICAqIEB0eXBlIHtLZXlWYWx1ZVtdfVxuICAgKiBAZGVmYXVsdCBbXVxuICAgKiBAbWVtYmVyT2YgTGF5b3V0Q29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKVxuICBjaGlsZHJlbjogS2V5VmFsdWVbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBMYXlvdXRDb21wb25lbnQuXG4gICAqIEBzdW1tYXJ5IEluaXRpYWxpemVzIGEgbmV3IExheW91dENvbXBvbmVudCB3aXRoIHRoZSBjb21wb25lbnQgbmFtZSBcIkxheW91dENvbXBvbmVudFwiLlxuICAgKiBUaGlzIGNvbnN0cnVjdG9yIGNhbGxzIHRoZSBwYXJlbnQgTmd4QmFzZUNvbXBvbmVudCBjb25zdHJ1Y3RvciB0byBzZXQgdXAgYmFzZVxuICAgKiBmdW5jdGlvbmFsaXR5IGFuZCBjb21wb25lbnQgaWRlbnRpZmljYXRpb24uXG4gICAqXG4gICAqIEBtZW1iZXJPZiBMYXlvdXRDb21wb25lbnRcbiAgICovXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFwiTGF5b3V0Q29tcG9uZW50XCIpXG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEdldHRlciB0aGF0IGNvbnZlcnRzIGNvbHVtbnMgaW5wdXQgdG8gYW4gYXJyYXkgZm9ybWF0LlxuICAgKiBAc3VtbWFyeSBUcmFuc2Zvcm1zIHRoZSBjb2xzIGlucHV0IHByb3BlcnR5IGludG8gYSBzdGFuZGFyZGl6ZWQgc3RyaW5nIGFycmF5IGZvcm1hdC5cbiAgICogV2hlbiBjb2xzIGlzIGEgbnVtYmVyLCBpdCBjcmVhdGVzIGFuIGFycmF5IHdpdGggdGhhdCBtYW55IGVtcHR5IHN0cmluZyBlbGVtZW50cy5cbiAgICogV2hlbiBjb2xzIGlzIGFscmVhZHkgYW4gYXJyYXksIGl0IHJldHVybnMgdGhlIGFycmF5IGFzLWlzLiBUaGlzIG5vcm1hbGl6YXRpb25cbiAgICogZW5zdXJlcyBjb25zaXN0ZW50IGhhbmRsaW5nIG9mIGNvbHVtbiBkZWZpbml0aW9ucyBpbiB0aGUgdGVtcGxhdGUuXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmdbXX1cbiAgICogQHJlYWRvbmx5XG4gICAqIEBtZW1iZXJPZiBMYXlvdXRDb21wb25lbnRcbiAgICovXG4gIGdldCBfY29scygpOiBzdHJpbmdbXSB7XG4gICAgbGV0IGNvbHMgPSB0aGlzLmNvbHM7XG4gICAgaWYodHlwZW9mIGNvbHMgPT09IFwibnVtYmVyXCIpXG4gICAgICBjb2xzID0gQXJyYXkuZnJvbSh7bGVuZ3RoOiBOdW1iZXIoY29scyl9LCAoKSA9PiAgYGApO1xuICAgIHJldHVybiBjb2xzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBHZXR0ZXIgdGhhdCBjb252ZXJ0cyByb3dzIGlucHV0IHRvIGFuIGFycmF5IGZvcm1hdC5cbiAgICogQHN1bW1hcnkgVHJhbnNmb3JtcyB0aGUgcm93cyBpbnB1dCBwcm9wZXJ0eSBpbnRvIGEgc3RhbmRhcmRpemVkIHN0cmluZyBhcnJheSBmb3JtYXQuXG4gICAqIFdoZW4gcm93cyBpcyBhIG51bWJlciwgaXQgY3JlYXRlcyBhbiBhcnJheSB3aXRoIHRoYXQgbWFueSBlbXB0eSBzdHJpbmcgZWxlbWVudHMuXG4gICAqIFdoZW4gcm93cyBpcyBhbHJlYWR5IGFuIGFycmF5LCBpdCByZXR1cm5zIHRoZSBhcnJheSBhcy1pcy4gVGhpcyBub3JtYWxpemF0aW9uXG4gICAqIGVuc3VyZXMgY29uc2lzdGVudCBoYW5kbGluZyBvZiByb3cgZGVmaW5pdGlvbnMgaW4gdGhlIHRlbXBsYXRlLlxuICAgKlxuICAgKiBAdHlwZSB7S2V5VmFsdWVbXX1cbiAgICogQHJlYWRvbmx5XG4gICAqIEBtZW1iZXJPZiBMYXlvdXRDb21wb25lbnRcbiAgICovXG4gIGdldCBfcm93cygpOiBLZXlWYWx1ZVtdIHtcbiAgICBsZXQgcm93cyA9IHRoaXMucm93cztcbiAgICBpZih0eXBlb2Ygcm93cyA9PT0gXCJudW1iZXJcIilcbiAgICAgIHJvd3MgPSBBcnJheS5mcm9tKHtsZW5ndGg6IE51bWJlcihyb3dzKX0sICgpID0+ICh7dGl0bGU6ICcnfSkpO1xuICAgIHJldHVybiByb3dzLm1hcCgocm93LCBpbmRleCkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdGl0bGU6IChyb3cgYXMgS2V5VmFsdWUpPy5bJ3RpdGxlJ10sXG4gICAgICAgIGNvbHM6IHRoaXMuY2hpbGRyZW4uZmlsdGVyKGNoaWxkID0+IHtcbiAgICAgICAgICBpZihjaGlsZFsncm93J10gPT09IGluZGV4ICsgMSlcbiAgICAgICAgICAgIHJldHVybiBjaGlsZDtcbiAgICAgICAgfSlcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEFuZ3VsYXIgbGlmZWN5Y2xlIGhvb2sgdGhhdCBydW5zIGFmdGVyIGNvbXBvbmVudCBpbml0aWFsaXphdGlvbi5cbiAgICogQHN1bW1hcnkgQ2FsbGVkIG9uY2UsIGFmdGVyIHRoZSBmaXJzdCBuZ09uQ2hhbmdlcygpLiBUaGlzIG1ldGhvZCB0cmlnZ2VycyB0aGVcbiAgICogY29tcG9uZW50J3MgaW5pdGlhbGl6YXRpb24gcHJvY2Vzcywgd2hpY2ggaW5jbHVkZXMgcHJvcGVydHkgcGFyc2luZyBhbmQgZ3JpZFxuICAgKiBzZXR1cC4gSXQgZW5zdXJlcyB0aGUgY29tcG9uZW50IGlzIHByb3Blcmx5IGNvbmZpZ3VyZWQgYmVmb3JlIHJlbmRlcmluZy5cbiAgICpcbiAgICogQG1lbWJlck9mIExheW91dENvbXBvbmVudFxuICAgKi9cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0aWFsaXplKCk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEluaXRpYWxpemVzIHRoZSBsYXlvdXQgY29tcG9uZW50IHdpdGggcHJvY2Vzc2VkIHByb3BlcnRpZXMuXG4gICAqIEBzdW1tYXJ5IE92ZXJyaWRlcyB0aGUgYmFzZSBjb21wb25lbnQncyBpbml0aWFsaXplIG1ldGhvZCB0byBzZXQgdXAgdGhlIGdyaWQgbGF5b3V0LlxuICAgKiBUaGlzIG1ldGhvZCBwcm9jZXNzZXMgaW5wdXQgcHJvcGVydGllcywgbm9ybWFsaXplcyB0aGUgYnJlYWtwb2ludCB2YWx1ZSwgY29udmVydHNcbiAgICogcm93cyBhbmQgY29sdW1ucyB0byB0aGVpciBhcnJheSByZXByZXNlbnRhdGlvbnMsIGFuZCBtYXJrcyB0aGUgY29tcG9uZW50IGFzIGluaXRpYWxpemVkLlxuICAgKiBUaGUgaW5pdGlhbGl6YXRpb24gZW5zdXJlcyBhbGwgcHJvcGVydGllcyBhcmUgaW4gdGhlIGNvcnJlY3QgZm9ybWF0IGZvciByZW5kZXJpbmcuXG4gICAqXG4gICAqIEBtZXJtYWlkXG4gICAqIHNlcXVlbmNlRGlhZ3JhbVxuICAgKiAgIHBhcnRpY2lwYW50IEwgYXMgTGF5b3V0Q29tcG9uZW50XG4gICAqICAgcGFydGljaXBhbnQgQiBhcyBOZ3hCYXNlQ29tcG9uZW50XG4gICAqXG4gICAqICAgTC0+PkI6IHBhcnNlUHJvcHModGhpcylcbiAgICogICBOb3RlIG92ZXIgTDogUHJvY2VzcyBjb21wb25lbnQgcHJvcGVydGllc1xuICAgKiAgIEwtPj5MOiBOb3JtYWxpemUgYnJlYWtwb2ludCB0byBsb3dlcmNhc2VcbiAgICogICBMLT4+TDogQ29udmVydCByb3dzIHRvIGFycmF5IGZvcm1hdFxuICAgKiAgIEwtPj5MOiBDb252ZXJ0IGNvbHMgdG8gYXJyYXkgZm9ybWF0XG4gICAqICAgTC0+Pkw6IFNldCBpbml0aWFsaXplZCA9IHRydWVcbiAgICpcbiAgICogQG92ZXJyaWRlXG4gICAqIEBtZW1iZXJPZiBMYXlvdXRDb21wb25lbnRcbiAgICovXG4gIG92ZXJyaWRlIGluaXRpYWxpemUoKSB7XG4gICAgdGhpcy5wYXJzZVByb3BzKHRoaXMpO1xuICAgIHRoaXMuYnJlYWtwb2ludCA9IHRoaXMuYnJlYWtwb2ludC5zbGljZSgwLCAyKS50b0xvd2VyQ2FzZSgpIGFzIFVJTWVkaWFCcmVha1BvaW50cztcbiAgICB0aGlzLmNvbHMgPSB0aGlzLl9jb2xzO1xuICAgIHRoaXMucm93cyA9IHRoaXMuX3Jvd3M7XG4gICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gIH1cbn1cbiIsIlxuQGlmKGluaXRpYWxpemVkKSB7XG4gIEBmb3IgKHJvdyBvZiByb3dzOyB0cmFjayB0cmFja0l0ZW1GbigkaW5kZXgsIHJvdyk7IGxldCByb3dJbmRleCA9ICRpbmRleCkge1xuICAgIDxkaXYgY2xhc3M9XCJkY2YtZ3JpZCBkY2YtZ3JpZC1jb2xsYXBzZSBkY2YtZ3JpZC1tYXRjaFwiPlxuICAgICAgQGlmKHJvdykge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiZGNmLXdpZHRoLTEtMSBkY2YtZ3JpZC10aXRsZVwiPlxuICAgICAgICAgIDxpb24tY2FyZCBjbGFzcz1cImRjZi1ncmlkLXRpdGxlXCI+XG4gICAgICAgICAgICB7e3Jvdy50aXRsZSB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgPC9pb24tY2FyZD5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgICBAZm9yIChjaGlsZCBvZiByb3cuY29sczsgdHJhY2sgdHJhY2tJdGVtRm4oJGluZGV4LCBjaGlsZC5jb2wpOyBsZXQgY29sSW5kZXggPSAkaW5kZXgpIHtcbiAgICAgICAgPGRpdiBbY2xhc3NdPVwiKGNoaWxkLmNvbCA9PT0gY29scy5sZW5ndGggPyAnZGNmLXdpZHRoLTEtMScgOiAnZGNmLXdpZHRoLScrY2hpbGQuY29sKyctJytjb2xzLmxlbmd0aCsnQCcrYnJlYWtwb2ludClcIj5cbiAgICAgICAgICAgIDxkaXYgW2NsYXNzXT1cIidkY2YtZ3JpZC1jaGlsZCAnK2NoaWxkLmNvbCBcIj5cbiAgICAgICAgICAgICAgQGlmKGNoaWxkLnRhZyA9PT0gJ25neC1kZWNhZi1jcnVkLWZvcm0nKSB7XG4gICAgICAgICAgICAgICAgPGlvbi1jYXJkIFtjbGFzc109XCInZGNmLWhlaWdodC0xLTEgJyArIGNsYXNzTmFtZVwiPlxuICAgICAgICAgICAgICAgICAgPGlvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxuZ3gtZGVjYWYtbW9kZWwtcmVuZGVyZXJcbiAgICAgICAgICAgICAgICAgICAgICBbbW9kZWxdPVwiY2hpbGQucHJvcHMubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgKGxpc3RlbkV2ZW50KT1cImhhbmRsZUV2ZW50KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICAgICAgICAgIDwvaW9uLWNhcmQ+XG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDxuZ3gtZGVjYWYtY29tcG9uZW50LXJlbmRlcmVyXG4gICAgICAgICAgICAgICAgICBbdGFnXT1cImNoaWxkLnRhZ1wiXG4gICAgICAgICAgICAgICAgICAobGlzdGVuRXZlbnQpPVwiaGFuZGxlRXZlbnQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICBbZ2xvYmFsc109XCJ7cHJvcHM6IGNoaWxkLnByb3BzfVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICB9XG59XG4iXX0=
232
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LayoutComponent, [{
233
+ type: Component,
234
+ args: [{ selector: 'ngx-decaf-layout', imports: [ForAngularModule, ModelRendererComponent, ComponentRendererComponent], standalone: true, template: "\n@if(initialized) {\n @for (row of rows; track trackItemFn($index, row); let rowIndex = $index) {\n <div class=\"dcf-grid dcf-grid-collapse dcf-grid-match\">\n @if(row) {\n <div class=\"dcf-width-1-1 dcf-grid-title\">\n <ion-card class=\"dcf-grid-title\">\n {{row.title | translate}}\n </ion-card>\n </div>\n }\n @for (child of row.cols; track trackItemFn($index, child.col); let colIndex = $index) {\n <div [class]=\"(child.col === cols.length ? 'dcf-width-1-1' : 'dcf-width-'+child.col+'-'+cols.length+'@'+breakpoint)\">\n <div [class]=\"'dcf-grid-child '+child.col \">\n @if(child.tag === 'ngx-decaf-crud-form') {\n <ion-card [class]=\"'dcf-height-1-1 ' + className\">\n <ion-card-content>\n <ngx-decaf-model-renderer\n [model]=\"child.props.name\"\n (listenEvent)=\"handleEvent($event)\"\n />\n </ion-card-content>\n </ion-card>\n } @else {\n <ngx-decaf-component-renderer\n [tag]=\"child.tag\"\n (listenEvent)=\"handleEvent($event)\"\n [globals]=\"{props: child.props}\"\n />\n }\n </div>\n </div>\n }\n </div>\n }\n}\n", styles: [".dcf-grid>div:not(.dcf-grid-title) ::ng-deep ngx-decaf-component-renderer>*>*{height:100%;display:flex;justify-content:center!important;align-items:center!important}.dcf-grid.dcf-grid-small .dcf-grid-child{margin-bottom:2rem}.dcf-grid.dcf-grid-collapse .dcf-grid-child{margin-bottom:1.25rem}.dcf-grid.dcf-grid-collapse .dcf-grid-child ion-card{margin-bottom:1.25rem}.dcf-grid-title{font-size:1.05rem!important;background:none;box-shadow:none;margin-bottom:0;padding-bottom:0;font-weight:600;color:var(--ion-text-color);display:flex;align-items:center;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}\n"] }]
235
+ }], () => [], { cols: [{
236
+ type: Input
237
+ }], rows: [{
238
+ type: Input
239
+ }], breakpoint: [{
240
+ type: Input
241
+ }], children: [{
242
+ type: Input
243
+ }] }); })();
244
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(LayoutComponent, { className: "LayoutComponent", filePath: "components/layout/layout.component.ts", lineNumber: 29 }); })();
245
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9sYXlvdXQvbGF5b3V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9sYXlvdXQvbGF5b3V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQ3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRWpFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDOzs7NENDTTlFLG1DQUE4Qjs7O0lBTDFCLEFBREYsOEJBQTBDLGtCQUNQO0lBQy9CLFlBQ0Y7O0lBQ0YsQUFERSxpQkFBVyxFQUNQOzs7SUFGRixlQUNGO0lBREUsbUVBQ0Y7Ozs7SUFTVSxBQURGLEFBREYsZ0NBQWtELHVCQUM5QixrQ0FJWjtJQURGLGtQQUFlLDBCQUFtQixLQUFDO0lBR3ZDLEFBREUsQUFKQSxpQkFHSSxFQUNlLEVBQ1Y7Ozs7SUFQSCxtREFBdUM7SUFHM0MsZUFBMEI7SUFBMUIsMkNBQTBCOzs7O0lBTWhDLHVEQUlFO0lBRkEsc1BBQWUsMEJBQW1CLEtBQUM7SUFGckMsaUJBSUU7OztJQURBLEFBRkEsa0NBQWlCLHVEQUVlOzs7SUFkdEMsQUFESiwyQkFBcUgsVUFDckU7SUFVeEMsQUFURix1R0FBMEMsOEdBU2pDO0lBUWYsQUFESSxpQkFBTSxFQUNKOzs7O0lBbkJELHVKQUErRztJQUMzRyxjQUFzQztJQUF0QywrQ0FBc0M7SUFDekMsY0FlQztJQWZELGdFQWVDOzs7SUExQlgsOEJBQXVEO0lBQ3JELDRGQUFVO0lBT1YsNEdBcUJDO0lBQ0gsaUJBQU07OztJQTdCSixjQU1DO0lBTkQsaUNBTUM7SUFDRCxjQXFCQztJQXJCRCwwQkFxQkM7OztJQTlCTCxnSUFnQ0M7OztJQWhDRCwwQkFnQ0M7O0FEMUJIOzs7Ozs7Ozs7OztHQVdHO0FBU0gsTUFBTSxPQUFPLGVBQWdCLFNBQVEsZ0JBQWdCO0lBeURuRDs7Ozs7OztPQU9HO0lBQ0g7UUFDRSxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtRQWhFMUI7Ozs7Ozs7Ozs7V0FVRztRQUVILFNBQUksR0FBc0IsQ0FBQyxDQUFDO1FBRTVCOzs7Ozs7Ozs7V0FTRztRQUVILFNBQUksR0FBbUMsQ0FBQyxDQUFDO1FBRXpDOzs7Ozs7Ozs7O1dBVUc7UUFFSCxlQUFVLEdBQXVCLFFBQVEsQ0FBQztRQUUxQzs7Ozs7Ozs7OztXQVVHO1FBRUgsYUFBUSxHQUFlLEVBQUUsQ0FBQztJQVkxQixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNILElBQUksS0FBSztRQUNQLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDckIsSUFBRyxPQUFPLElBQUksS0FBSyxRQUFRO1lBQ3pCLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBQyxFQUFFLEdBQUcsRUFBRSxDQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSCxJQUFJLEtBQUs7UUFDUCxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3JCLElBQUcsT0FBTyxJQUFJLEtBQUssUUFBUTtZQUN6QixJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUMsS0FBSyxFQUFFLEVBQUUsRUFBQyxDQUFDLENBQUMsQ0FBQztRQUNqRSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDN0IsT0FBTztnQkFDTCxLQUFLLEVBQUcsR0FBZ0IsRUFBRSxDQUFDLE9BQU8sQ0FBQztnQkFDbkMsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFO29CQUNqQyxJQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxLQUFLLEdBQUcsQ0FBQzt3QkFDM0IsT0FBTyxLQUFLLENBQUM7Z0JBQ2pCLENBQUMsQ0FBQzthQUNILENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsUUFBUTtRQUNOLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQXFCRztJQUNNLFVBQVU7UUFDakIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQXdCLENBQUM7UUFDbEYsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUMxQixDQUFDO2dIQXpKVSxlQUFlO29FQUFmLGVBQWU7WUMzQjVCLDhEQUFrQjs7WUFBbEIsMENBa0NDOzRCRFhXLGdCQUFnQixvQkFBRSxzQkFBc0IsRUFBRSwwQkFBMEI7O2lGQUluRSxlQUFlO2NBUjNCLFNBQVM7MkJBQ0Usa0JBQWtCLFdBR25CLENBQUMsZ0JBQWdCLEVBQUUsc0JBQXNCLEVBQUUsMEJBQTBCLENBQUMsY0FDbkUsSUFBSTtvQkFpQmhCLElBQUk7a0JBREgsS0FBSztZQWNOLElBQUk7a0JBREgsS0FBSztZQWVOLFVBQVU7a0JBRFQsS0FBSztZQWVOLFFBQVE7a0JBRFAsS0FBSzs7a0ZBdERLLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9yQW5ndWxhck1vZHVsZSB9IGZyb20gJy4uLy4uL2Zvci1hbmd1bGFyLm1vZHVsZSc7XG5pbXBvcnQgeyBOZ3hCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZW5naW5lL05neEJhc2VDb21wb25lbnQnO1xuaW1wb3J0IHsgS2V5VmFsdWUgfSBmcm9tICcuLi8uLi9lbmdpbmUnO1xuaW1wb3J0IHsgQ29tcG9uZW50UmVuZGVyZXJDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnQtcmVuZGVyZXIvY29tcG9uZW50LXJlbmRlcmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNb2RlbFJlbmRlcmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vbW9kZWwtcmVuZGVyZXIvbW9kZWwtcmVuZGVyZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFVJTWVkaWFCcmVha1BvaW50cyB9IGZyb20gJ0BkZWNhZi10cy91aS1kZWNvcmF0b3JzJztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gTGF5b3V0IGNvbXBvbmVudCBmb3IgY3JlYXRpbmcgcmVzcG9uc2l2ZSBncmlkIGxheW91dHMgaW4gQW5ndWxhciBhcHBsaWNhdGlvbnMuXG4gKiBAc3VtbWFyeSBUaGlzIGNvbXBvbmVudCBwcm92aWRlcyBhIGZsZXhpYmxlIGdyaWQgc3lzdGVtIHRoYXQgY2FuIGJlIGNvbmZpZ3VyZWQgd2l0aCBkeW5hbWljXG4gKiByb3dzIGFuZCBjb2x1bW5zLiBJdCBzdXBwb3J0cyByZXNwb25zaXZlIGJyZWFrcG9pbnRzIGFuZCBjYW4gcmVuZGVyIGNoaWxkIGNvbXBvbmVudHMgd2l0aGluXG4gKiB0aGUgZ3JpZCBzdHJ1Y3R1cmUuIFRoZSBjb21wb25lbnQgZXh0ZW5kcyBOZ3hCYXNlQ29tcG9uZW50IHRvIGluaGVyaXQgY29tbW9uIGZ1bmN0aW9uYWxpdHlcbiAqIGFuZCBpbnRlZ3JhdGVzIHdpdGggdGhlIG1vZGVsIGFuZCBjb21wb25lbnQgcmVuZGVyZXIgc3lzdGVtcy5cbiAqXG4gKiBAY2xhc3MgTGF5b3V0Q29tcG9uZW50XG4gKiBAZXh0ZW5kcyB7Tmd4QmFzZUNvbXBvbmVudH1cbiAqIEBpbXBsZW1lbnRzIHtPbkluaXR9XG4gKiBAbWVtYmVyT2YgTGF5b3V0Q29tcG9uZW50XG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25neC1kZWNhZi1sYXlvdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vbGF5b3V0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbGF5b3V0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGltcG9ydHM6IFtGb3JBbmd1bGFyTW9kdWxlLCBNb2RlbFJlbmRlcmVyQ29tcG9uZW50LCBDb21wb25lbnRSZW5kZXJlckNvbXBvbmVudF0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG5cbn0pXG5leHBvcnQgY2xhc3MgTGF5b3V0Q29tcG9uZW50IGV4dGVuZHMgTmd4QmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBOdW1iZXIgb2YgY29sdW1ucyBvciBhcnJheSBvZiBjb2x1bW4gZGVmaW5pdGlvbnMgZm9yIHRoZSBncmlkIGxheW91dC5cbiAgICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgY29sdW1uIHN0cnVjdHVyZSBvZiB0aGUgZ3JpZC4gV2hlbiBhIG51bWJlciBpcyBwcm92aWRlZCwgaXQgY3JlYXRlc1xuICAgKiB0aGF0IG1hbnkgZXF1YWwtd2lkdGggY29sdW1ucy4gV2hlbiBhbiBhcnJheSBpcyBwcm92aWRlZCwgZWFjaCBlbGVtZW50IGNhbiBkZWZpbmUgc3BlY2lmaWNcbiAgICogY29sdW1uIHByb3BlcnRpZXMgb3Igc2l6aW5nLiBUaGlzIGFsbG93cyBmb3IgZmxleGlibGUgZ3JpZCBsYXlvdXRzIHRoYXQgY2FuIGFkYXB0IHRvXG4gICAqIGRpZmZlcmVudCBjb250ZW50IHJlcXVpcmVtZW50cy5cbiAgICpcbiAgICogQHR5cGUgeyhudW1iZXIgfCBzdHJpbmdbXSl9XG4gICAqIEBkZWZhdWx0IDFcbiAgICogQG1lbWJlck9mIExheW91dENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KClcbiAgY29sczogbnVtYmVyIHwgc3RyaW5nW10gPSAxO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gTnVtYmVyIG9mIHJvd3Mgb3IgYXJyYXkgb2Ygcm93IGRlZmluaXRpb25zIGZvciB0aGUgZ3JpZCBsYXlvdXQuXG4gICAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIHJvdyBzdHJ1Y3R1cmUgb2YgdGhlIGdyaWQuIFdoZW4gYSBudW1iZXIgaXMgcHJvdmlkZWQsIGl0IGNyZWF0ZXNcbiAgICogdGhhdCBtYW55IGVxdWFsLWhlaWdodCByb3dzLiBXaGVuIGFuIGFycmF5IGlzIHByb3ZpZGVkLCBlYWNoIGVsZW1lbnQgY2FuIGRlZmluZSBzcGVjaWZpY1xuICAgKiByb3cgcHJvcGVydGllcyBvciBzaXppbmcuIFRoaXMgcHJvdmlkZXMgY29udHJvbCBvdmVyIHZlcnRpY2FsIHNwYWNpbmcgYW5kIGNvbnRlbnQgb3JnYW5pemF0aW9uLlxuICAgKlxuICAgKiBAdHlwZSB7KG51bWJlciB8IHN0cmluZ1tdKX1cbiAgICogQGRlZmF1bHQgMVxuICAgKiBAbWVtYmVyT2YgTGF5b3V0Q29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKVxuICByb3dzOiBudW1iZXIgfCBLZXlWYWx1ZVtdIHwgc3RyaW5nW10gPSAxO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gTWVkaWEgYnJlYWtwb2ludCBmb3IgcmVzcG9uc2l2ZSBiZWhhdmlvci5cbiAgICogQHN1bW1hcnkgRGV0ZXJtaW5lcyB0aGUgcmVzcG9uc2l2ZSBicmVha3BvaW50IGF0IHdoaWNoIHRoZSBsYXlvdXQgc2hvdWxkIGFkYXB0LlxuICAgKiBUaGlzIGFmZmVjdHMgaG93IHRoZSBncmlkIGJlaGF2ZXMgb24gZGlmZmVyZW50IHNjcmVlbiBzaXplcywgYWxsb3dpbmcgZm9yXG4gICAqIG1vYmlsZS1maXJzdCBvciBkZXNrdG9wLWZpcnN0IHJlc3BvbnNpdmUgZGVzaWduIHBhdHRlcm5zLiBUaGUgYnJlYWtwb2ludFxuICAgKiBpcyBhdXRvbWF0aWNhbGx5IHByb2Nlc3NlZCB0byBlbnN1cmUgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBVSSBmcmFtZXdvcmsuXG4gICAqXG4gICAqIEB0eXBlIHtVSU1lZGlhQnJlYWtQb2ludHN9XG4gICAqIEBkZWZhdWx0ICdtZWRpdW0nXG4gICAqIEBtZW1iZXJPZiBMYXlvdXRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpXG4gIGJyZWFrcG9pbnQ6IFVJTWVkaWFCcmVha1BvaW50cyA9ICdtZWRpdW0nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQXJyYXkgb2YgY2hpbGQgY29tcG9uZW50cyBvciBkYXRhIHRvIHJlbmRlciB3aXRoaW4gdGhlIGdyaWQuXG4gICAqIEBzdW1tYXJ5IENvbnRhaW5zIHRoZSBjaGlsZCBlbGVtZW50cyB0aGF0IHdpbGwgYmUgZGlzdHJpYnV0ZWQgYWNyb3NzIHRoZSBncmlkIGxheW91dC5cbiAgICogRWFjaCBpdGVtIGluIHRoZSBhcnJheSByZXByZXNlbnRzIGNvbnRlbnQgdGhhdCB3aWxsIGJlIHJlbmRlcmVkIHVzaW5nIHRoZSBhcHByb3ByaWF0ZVxuICAgKiByZW5kZXJlciBjb21wb25lbnQgKE1vZGVsUmVuZGVyZXIgb3IgQ29tcG9uZW50UmVuZGVyZXIpLiBUaGlzIGFsbG93cyBmb3IgbWl4ZWQgY29udGVudFxuICAgKiB0eXBlcyB3aXRoaW4gYSBzaW5nbGUgbGF5b3V0IHN0cnVjdHVyZS5cbiAgICpcbiAgICogQHR5cGUge0tleVZhbHVlW119XG4gICAqIEBkZWZhdWx0IFtdXG4gICAqIEBtZW1iZXJPZiBMYXlvdXRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpXG4gIGNoaWxkcmVuOiBLZXlWYWx1ZVtdID0gW107XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIExheW91dENvbXBvbmVudC5cbiAgICogQHN1bW1hcnkgSW5pdGlhbGl6ZXMgYSBuZXcgTGF5b3V0Q29tcG9uZW50IHdpdGggdGhlIGNvbXBvbmVudCBuYW1lIFwiTGF5b3V0Q29tcG9uZW50XCIuXG4gICAqIFRoaXMgY29uc3RydWN0b3IgY2FsbHMgdGhlIHBhcmVudCBOZ3hCYXNlQ29tcG9uZW50IGNvbnN0cnVjdG9yIHRvIHNldCB1cCBiYXNlXG4gICAqIGZ1bmN0aW9uYWxpdHkgYW5kIGNvbXBvbmVudCBpZGVudGlmaWNhdGlvbi5cbiAgICpcbiAgICogQG1lbWJlck9mIExheW91dENvbXBvbmVudFxuICAgKi9cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoXCJMYXlvdXRDb21wb25lbnRcIilcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gR2V0dGVyIHRoYXQgY29udmVydHMgY29sdW1ucyBpbnB1dCB0byBhbiBhcnJheSBmb3JtYXQuXG4gICAqIEBzdW1tYXJ5IFRyYW5zZm9ybXMgdGhlIGNvbHMgaW5wdXQgcHJvcGVydHkgaW50byBhIHN0YW5kYXJkaXplZCBzdHJpbmcgYXJyYXkgZm9ybWF0LlxuICAgKiBXaGVuIGNvbHMgaXMgYSBudW1iZXIsIGl0IGNyZWF0ZXMgYW4gYXJyYXkgd2l0aCB0aGF0IG1hbnkgZW1wdHkgc3RyaW5nIGVsZW1lbnRzLlxuICAgKiBXaGVuIGNvbHMgaXMgYWxyZWFkeSBhbiBhcnJheSwgaXQgcmV0dXJucyB0aGUgYXJyYXkgYXMtaXMuIFRoaXMgbm9ybWFsaXphdGlvblxuICAgKiBlbnN1cmVzIGNvbnNpc3RlbnQgaGFuZGxpbmcgb2YgY29sdW1uIGRlZmluaXRpb25zIGluIHRoZSB0ZW1wbGF0ZS5cbiAgICpcbiAgICogQHR5cGUge3N0cmluZ1tdfVxuICAgKiBAcmVhZG9ubHlcbiAgICogQG1lbWJlck9mIExheW91dENvbXBvbmVudFxuICAgKi9cbiAgZ2V0IF9jb2xzKCk6IHN0cmluZ1tdIHtcbiAgICBsZXQgY29scyA9IHRoaXMuY29scztcbiAgICBpZih0eXBlb2YgY29scyA9PT0gXCJudW1iZXJcIilcbiAgICAgIGNvbHMgPSBBcnJheS5mcm9tKHtsZW5ndGg6IE51bWJlcihjb2xzKX0sICgpID0+ICBgYCk7XG4gICAgcmV0dXJuIGNvbHM7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEdldHRlciB0aGF0IGNvbnZlcnRzIHJvd3MgaW5wdXQgdG8gYW4gYXJyYXkgZm9ybWF0LlxuICAgKiBAc3VtbWFyeSBUcmFuc2Zvcm1zIHRoZSByb3dzIGlucHV0IHByb3BlcnR5IGludG8gYSBzdGFuZGFyZGl6ZWQgc3RyaW5nIGFycmF5IGZvcm1hdC5cbiAgICogV2hlbiByb3dzIGlzIGEgbnVtYmVyLCBpdCBjcmVhdGVzIGFuIGFycmF5IHdpdGggdGhhdCBtYW55IGVtcHR5IHN0cmluZyBlbGVtZW50cy5cbiAgICogV2hlbiByb3dzIGlzIGFscmVhZHkgYW4gYXJyYXksIGl0IHJldHVybnMgdGhlIGFycmF5IGFzLWlzLiBUaGlzIG5vcm1hbGl6YXRpb25cbiAgICogZW5zdXJlcyBjb25zaXN0ZW50IGhhbmRsaW5nIG9mIHJvdyBkZWZpbml0aW9ucyBpbiB0aGUgdGVtcGxhdGUuXG4gICAqXG4gICAqIEB0eXBlIHtLZXlWYWx1ZVtdfVxuICAgKiBAcmVhZG9ubHlcbiAgICogQG1lbWJlck9mIExheW91dENvbXBvbmVudFxuICAgKi9cbiAgZ2V0IF9yb3dzKCk6IEtleVZhbHVlW10ge1xuICAgIGxldCByb3dzID0gdGhpcy5yb3dzO1xuICAgIGlmKHR5cGVvZiByb3dzID09PSBcIm51bWJlclwiKVxuICAgICAgcm93cyA9IEFycmF5LmZyb20oe2xlbmd0aDogTnVtYmVyKHJvd3MpfSwgKCkgPT4gKHt0aXRsZTogJyd9KSk7XG4gICAgcmV0dXJuIHJvd3MubWFwKChyb3csIGluZGV4KSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0aXRsZTogKHJvdyBhcyBLZXlWYWx1ZSk/LlsndGl0bGUnXSxcbiAgICAgICAgY29sczogdGhpcy5jaGlsZHJlbi5maWx0ZXIoY2hpbGQgPT4ge1xuICAgICAgICAgIGlmKGNoaWxkWydyb3cnXSA9PT0gaW5kZXggKyAxKVxuICAgICAgICAgICAgcmV0dXJuIGNoaWxkO1xuICAgICAgICB9KVxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQW5ndWxhciBsaWZlY3ljbGUgaG9vayB0aGF0IHJ1bnMgYWZ0ZXIgY29tcG9uZW50IGluaXRpYWxpemF0aW9uLlxuICAgKiBAc3VtbWFyeSBDYWxsZWQgb25jZSwgYWZ0ZXIgdGhlIGZpcnN0IG5nT25DaGFuZ2VzKCkuIFRoaXMgbWV0aG9kIHRyaWdnZXJzIHRoZVxuICAgKiBjb21wb25lbnQncyBpbml0aWFsaXphdGlvbiBwcm9jZXNzLCB3aGljaCBpbmNsdWRlcyBwcm9wZXJ0eSBwYXJzaW5nIGFuZCBncmlkXG4gICAqIHNldHVwLiBJdCBlbnN1cmVzIHRoZSBjb21wb25lbnQgaXMgcHJvcGVybHkgY29uZmlndXJlZCBiZWZvcmUgcmVuZGVyaW5nLlxuICAgKlxuICAgKiBAbWVtYmVyT2YgTGF5b3V0Q29tcG9uZW50XG4gICAqL1xuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRpYWxpemUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhbGl6ZXMgdGhlIGxheW91dCBjb21wb25lbnQgd2l0aCBwcm9jZXNzZWQgcHJvcGVydGllcy5cbiAgICogQHN1bW1hcnkgT3ZlcnJpZGVzIHRoZSBiYXNlIGNvbXBvbmVudCdzIGluaXRpYWxpemUgbWV0aG9kIHRvIHNldCB1cCB0aGUgZ3JpZCBsYXlvdXQuXG4gICAqIFRoaXMgbWV0aG9kIHByb2Nlc3NlcyBpbnB1dCBwcm9wZXJ0aWVzLCBub3JtYWxpemVzIHRoZSBicmVha3BvaW50IHZhbHVlLCBjb252ZXJ0c1xuICAgKiByb3dzIGFuZCBjb2x1bW5zIHRvIHRoZWlyIGFycmF5IHJlcHJlc2VudGF0aW9ucywgYW5kIG1hcmtzIHRoZSBjb21wb25lbnQgYXMgaW5pdGlhbGl6ZWQuXG4gICAqIFRoZSBpbml0aWFsaXphdGlvbiBlbnN1cmVzIGFsbCBwcm9wZXJ0aWVzIGFyZSBpbiB0aGUgY29ycmVjdCBmb3JtYXQgZm9yIHJlbmRlcmluZy5cbiAgICpcbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgTCBhcyBMYXlvdXRDb21wb25lbnRcbiAgICogICBwYXJ0aWNpcGFudCBCIGFzIE5neEJhc2VDb21wb25lbnRcbiAgICpcbiAgICogICBMLT4+QjogcGFyc2VQcm9wcyh0aGlzKVxuICAgKiAgIE5vdGUgb3ZlciBMOiBQcm9jZXNzIGNvbXBvbmVudCBwcm9wZXJ0aWVzXG4gICAqICAgTC0+Pkw6IE5vcm1hbGl6ZSBicmVha3BvaW50IHRvIGxvd2VyY2FzZVxuICAgKiAgIEwtPj5MOiBDb252ZXJ0IHJvd3MgdG8gYXJyYXkgZm9ybWF0XG4gICAqICAgTC0+Pkw6IENvbnZlcnQgY29scyB0byBhcnJheSBmb3JtYXRcbiAgICogICBMLT4+TDogU2V0IGluaXRpYWxpemVkID0gdHJ1ZVxuICAgKlxuICAgKiBAb3ZlcnJpZGVcbiAgICogQG1lbWJlck9mIExheW91dENvbXBvbmVudFxuICAgKi9cbiAgb3ZlcnJpZGUgaW5pdGlhbGl6ZSgpIHtcbiAgICB0aGlzLnBhcnNlUHJvcHModGhpcyk7XG4gICAgdGhpcy5icmVha3BvaW50ID0gdGhpcy5icmVha3BvaW50LnNsaWNlKDAsIDIpLnRvTG93ZXJDYXNlKCkgYXMgVUlNZWRpYUJyZWFrUG9pbnRzO1xuICAgIHRoaXMuY29scyA9IHRoaXMuX2NvbHM7XG4gICAgdGhpcy5yb3dzID0gdGhpcy5fcm93cztcbiAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgfVxufVxuIiwiXG5AaWYoaW5pdGlhbGl6ZWQpIHtcbiAgQGZvciAocm93IG9mIHJvd3M7IHRyYWNrIHRyYWNrSXRlbUZuKCRpbmRleCwgcm93KTsgbGV0IHJvd0luZGV4ID0gJGluZGV4KSB7XG4gICAgPGRpdiBjbGFzcz1cImRjZi1ncmlkIGRjZi1ncmlkLWNvbGxhcHNlIGRjZi1ncmlkLW1hdGNoXCI+XG4gICAgICBAaWYocm93KSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkY2Ytd2lkdGgtMS0xIGRjZi1ncmlkLXRpdGxlXCI+XG4gICAgICAgICAgPGlvbi1jYXJkIGNsYXNzPVwiZGNmLWdyaWQtdGl0bGVcIj5cbiAgICAgICAgICAgIHt7cm93LnRpdGxlIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgICA8L2lvbi1jYXJkPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICAgIEBmb3IgKGNoaWxkIG9mIHJvdy5jb2xzOyB0cmFjayB0cmFja0l0ZW1GbigkaW5kZXgsIGNoaWxkLmNvbCk7IGxldCBjb2xJbmRleCA9ICRpbmRleCkge1xuICAgICAgICA8ZGl2IFtjbGFzc109XCIoY2hpbGQuY29sID09PSBjb2xzLmxlbmd0aCA/ICdkY2Ytd2lkdGgtMS0xJyA6ICdkY2Ytd2lkdGgtJytjaGlsZC5jb2wrJy0nK2NvbHMubGVuZ3RoKydAJyticmVha3BvaW50KVwiPlxuICAgICAgICAgICAgPGRpdiBbY2xhc3NdPVwiJ2RjZi1ncmlkLWNoaWxkICcrY2hpbGQuY29sIFwiPlxuICAgICAgICAgICAgICBAaWYoY2hpbGQudGFnID09PSAnbmd4LWRlY2FmLWNydWQtZm9ybScpIHtcbiAgICAgICAgICAgICAgICA8aW9uLWNhcmQgW2NsYXNzXT1cIidkY2YtaGVpZ2h0LTEtMSAnICsgY2xhc3NOYW1lXCI+XG4gICAgICAgICAgICAgICAgICA8aW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgPG5neC1kZWNhZi1tb2RlbC1yZW5kZXJlclxuICAgICAgICAgICAgICAgICAgICAgIFttb2RlbF09XCJjaGlsZC5wcm9wcy5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAobGlzdGVuRXZlbnQpPVwiaGFuZGxlRXZlbnQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgICAgICAgPC9pb24tY2FyZD5cbiAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgPG5neC1kZWNhZi1jb21wb25lbnQtcmVuZGVyZXJcbiAgICAgICAgICAgICAgICAgIFt0YWddPVwiY2hpbGQudGFnXCJcbiAgICAgICAgICAgICAgICAgIChsaXN0ZW5FdmVudCk9XCJoYW5kbGVFdmVudCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgIFtnbG9iYWxzXT1cIntwcm9wczogY2hpbGQucHJvcHN9XCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIH1cbn1cbiJdfQ==