@porscheinformatik/material-addons 18.0.4 → 19.0.1

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 (132) hide show
  1. package/fesm2022/porscheinformatik-material-addons.mjs +291 -260
  2. package/fesm2022/porscheinformatik-material-addons.mjs.map +1 -1
  3. package/lib/alert/alert.component.d.ts.map +1 -1
  4. package/lib/button/danger-button/danger-button.component.d.ts.map +1 -1
  5. package/lib/button/flat-button/link-button.component.d.ts.map +1 -1
  6. package/lib/button/icon-button/icon-button.component.d.ts.map +1 -1
  7. package/lib/button/mad-basic-button.d.ts.map +1 -1
  8. package/lib/button/outline-button/outline-button.component.d.ts.map +1 -1
  9. package/lib/button/primary-button/primary-button.component.d.ts.map +1 -1
  10. package/lib/card/card.component.d.ts.map +1 -1
  11. package/lib/data-table/data-table-columns-modal/data-table-columns-modal.component.d.ts.map +1 -1
  12. package/lib/data-table/data-table-filter/data-table-filter-component/data-table-filter-dialog/data-table-filter-dialog.component.d.ts.map +1 -1
  13. package/lib/data-table/data-table-filter/data-table-filter-component/data-table-filter.component.d.ts.map +1 -1
  14. package/lib/data-table/data-table.component.d.ts.map +1 -1
  15. package/lib/file-upload/file-upload.component.d.ts +12 -5
  16. package/lib/file-upload/file-upload.component.d.ts.map +1 -1
  17. package/lib/layout/flowbar/flowbar.component.d.ts.map +1 -1
  18. package/lib/layout/sidebar/sidebar.component.d.ts.map +1 -1
  19. package/lib/layout/sidebar-layout/sidebar-layout.component.d.ts.map +1 -1
  20. package/lib/layout/toolbar/toolbar.component.d.ts.map +1 -1
  21. package/lib/material-action-button/material-action-button.component.d.ts.map +1 -1
  22. package/lib/numeric-field/number-format.service.d.ts +5 -0
  23. package/lib/numeric-field/number-format.service.d.ts.map +1 -1
  24. package/lib/numeric-field/numeric-field.module.d.ts.map +1 -1
  25. package/lib/quick-list/base-quick-list.component.d.ts.map +1 -1
  26. package/lib/quick-list/quick-list-compact/quick-list-compact.component.d.ts.map +1 -1
  27. package/lib/quick-list/quick-list.component.d.ts.map +1 -1
  28. package/lib/quick-list/reactive-form-quick-list/reactive-form-quick-list.component.d.ts.map +1 -1
  29. package/lib/quick-list/reactive-form-quick-list-compact/reactive-form-quick-list-compact.component.d.ts.map +1 -1
  30. package/lib/readonly/readonly-form-field/readonly-form-field.component.d.ts.map +1 -1
  31. package/lib/readonly/readonly-form-field-wrapper/readonly-form-field-wrapper.component.d.ts.map +1 -1
  32. package/lib/stepper/step-header/step-header.component.d.ts.map +1 -1
  33. package/lib/stepper/stepper.component.d.ts.map +1 -1
  34. package/lib/table/table.component.d.ts.map +1 -1
  35. package/package.json +3 -5
  36. package/version.d.ts +1 -1
  37. package/esm2022/lib/alert/alert-configuration.mjs +0 -12
  38. package/esm2022/lib/alert/alert.component.mjs +0 -65
  39. package/esm2022/lib/alert/alert.mjs +0 -3
  40. package/esm2022/lib/button/button.mjs +0 -9
  41. package/esm2022/lib/button/button.module.mjs +0 -74
  42. package/esm2022/lib/button/danger-button/danger-button.component.mjs +0 -27
  43. package/esm2022/lib/button/flat-button/link-button.component.mjs +0 -27
  44. package/esm2022/lib/button/icon-button/icon-button.component.mjs +0 -27
  45. package/esm2022/lib/button/mad-basic-button.mjs +0 -39
  46. package/esm2022/lib/button/mad-button/mad-button.directive.mjs +0 -61
  47. package/esm2022/lib/button/mad-button-group/mad-button-group.component.mjs +0 -21
  48. package/esm2022/lib/button/outline-button/outline-button.component.mjs +0 -30
  49. package/esm2022/lib/button/primary-button/primary-button.component.mjs +0 -27
  50. package/esm2022/lib/card/card.component.mjs +0 -139
  51. package/esm2022/lib/card/card.mjs +0 -2
  52. package/esm2022/lib/card/card.module.mjs +0 -22
  53. package/esm2022/lib/data-table/configuration/data-table-action-type.mjs +0 -6
  54. package/esm2022/lib/data-table/configuration/data-table-action.mjs +0 -2
  55. package/esm2022/lib/data-table/configuration/data-table-column-definition.mjs +0 -2
  56. package/esm2022/lib/data-table/configuration/data-table-column.mjs +0 -2
  57. package/esm2022/lib/data-table/configuration/data-table-filter-mode.mjs +0 -2
  58. package/esm2022/lib/data-table/configuration/data-table-global-configuration.mjs +0 -16
  59. package/esm2022/lib/data-table/configuration/data-table-header-type.mjs +0 -2
  60. package/esm2022/lib/data-table/configuration/data-table-persistence-configuration.mjs +0 -2
  61. package/esm2022/lib/data-table/configuration/data-table-row.mjs +0 -2
  62. package/esm2022/lib/data-table/configuration/data-table-selection-emit-mode.mjs +0 -2
  63. package/esm2022/lib/data-table/configuration/data-table-selection-emit-type.mjs +0 -2
  64. package/esm2022/lib/data-table/configuration/data-table-selection-mode.mjs +0 -2
  65. package/esm2022/lib/data-table/data-table-columns-modal/data-table-columns-modal.component.mjs +0 -107
  66. package/esm2022/lib/data-table/data-table-filter/data-table-filter-component/data-table-filter-dialog/data-table-filter-dialog.component.mjs +0 -43
  67. package/esm2022/lib/data-table/data-table-filter/data-table-filter-component/data-table-filter.component.mjs +0 -41
  68. package/esm2022/lib/data-table/data-table-filter/data-table-filter-header.directive.mjs +0 -128
  69. package/esm2022/lib/data-table/data-table-filter/data-table-filter-object.mjs +0 -2
  70. package/esm2022/lib/data-table/data-table-filter/data-table-filter-options.mjs +0 -2
  71. package/esm2022/lib/data-table/data-table-filter/data-table-filter.directive.mjs +0 -46
  72. package/esm2022/lib/data-table/data-table-persistence.service.mjs +0 -61
  73. package/esm2022/lib/data-table/data-table-template/data-table-template-cell-definition.directive.mjs +0 -28
  74. package/esm2022/lib/data-table/data-table-template/data-table-template-column-definition.directive.mjs +0 -22
  75. package/esm2022/lib/data-table/data-table-template/data-table-template-expandable-cell-definition.directive.mjs +0 -28
  76. package/esm2022/lib/data-table/data-table-template/data-table-template-expandable-column-definition.directive.mjs +0 -22
  77. package/esm2022/lib/data-table/data-table.component.mjs +0 -765
  78. package/esm2022/lib/data-table/data-table.mjs +0 -11
  79. package/esm2022/lib/data-table/util/data-table-action-util.mjs +0 -40
  80. package/esm2022/lib/data-table/util/data-table-data-util.mjs +0 -49
  81. package/esm2022/lib/data-table/util/data-table-filter-util.mjs +0 -24
  82. package/esm2022/lib/data-table/util/data-table-sort-util.mjs +0 -80
  83. package/esm2022/lib/file-upload/drag-and-drop-directive.directive.mjs +0 -61
  84. package/esm2022/lib/file-upload/file-upload.component.mjs +0 -78
  85. package/esm2022/lib/layout/content-panel/content-header/content-header.component.mjs +0 -11
  86. package/esm2022/lib/layout/content-panel/content-panel-container/content-panel-container.component.mjs +0 -11
  87. package/esm2022/lib/layout/content-panel/content-panel-container-content/content-panel-container-content.component.mjs +0 -11
  88. package/esm2022/lib/layout/content-panel/content-panel-container-footer/content-panel-container-footer.component.mjs +0 -11
  89. package/esm2022/lib/layout/content-panel/content-panel-container-sidebar/content-panel-container-sidebar.component.mjs +0 -11
  90. package/esm2022/lib/layout/content-panel/content-panel.module.mjs +0 -48
  91. package/esm2022/lib/layout/content-panel/main-container/main-container.component.mjs +0 -11
  92. package/esm2022/lib/layout/flowbar/flowbar.component.mjs +0 -191
  93. package/esm2022/lib/layout/flowbar/flowbar.module.mjs +0 -18
  94. package/esm2022/lib/layout/sidebar/sidebar-item/sidebar-item.component.mjs +0 -11
  95. package/esm2022/lib/layout/sidebar/sidebar.component.mjs +0 -23
  96. package/esm2022/lib/layout/sidebar/sidebar.module.mjs +0 -20
  97. package/esm2022/lib/layout/sidebar-layout/sidebar-layout.component.mjs +0 -67
  98. package/esm2022/lib/layout/toolbar/toolbar-action.interface.mjs +0 -2
  99. package/esm2022/lib/layout/toolbar/toolbar.component.mjs +0 -98
  100. package/esm2022/lib/layout/toolbar/toolbar.module.mjs +0 -58
  101. package/esm2022/lib/layout/toolbar/toolbar.service.mjs +0 -124
  102. package/esm2022/lib/material-action-button/material-action-button.component.mjs +0 -37
  103. package/esm2022/lib/material-action-button/material-action-button.module.mjs +0 -21
  104. package/esm2022/lib/material-addons.module.mjs +0 -49
  105. package/esm2022/lib/numeric-field/number-format.service.mjs +0 -139
  106. package/esm2022/lib/numeric-field/numeric-field.directive.mjs +0 -299
  107. package/esm2022/lib/numeric-field/numeric-field.mjs +0 -2
  108. package/esm2022/lib/numeric-field/numeric-field.module.mjs +0 -24
  109. package/esm2022/lib/quick-list/base-quick-list.component.mjs +0 -124
  110. package/esm2022/lib/quick-list/quick-list-compact/quick-list-compact.component.mjs +0 -23
  111. package/esm2022/lib/quick-list/quick-list.component.mjs +0 -24
  112. package/esm2022/lib/quick-list/quick-list.mjs +0 -6
  113. package/esm2022/lib/quick-list/quick-list.module.mjs +0 -63
  114. package/esm2022/lib/quick-list/reactive-form-quick-list/reactive-form-quick-list.component.mjs +0 -23
  115. package/esm2022/lib/quick-list/reactive-form-quick-list-compact/reactive-form-quick-list-compact.component.mjs +0 -23
  116. package/esm2022/lib/readonly/readonly-form-field/readonly-form-field.component.mjs +0 -243
  117. package/esm2022/lib/readonly/readonly-form-field-wrapper/readonly-form-field-wrapper.component.mjs +0 -183
  118. package/esm2022/lib/readonly/readonly-form-field.module.mjs +0 -51
  119. package/esm2022/lib/stepper/mad-stepper-animation.mjs +0 -13
  120. package/esm2022/lib/stepper/step-header/step-header.component.mjs +0 -78
  121. package/esm2022/lib/stepper/stepper.component.mjs +0 -158
  122. package/esm2022/lib/stepper/stepper.module.mjs +0 -45
  123. package/esm2022/lib/table/column-header.mjs +0 -2
  124. package/esm2022/lib/table/table-action.mjs +0 -2
  125. package/esm2022/lib/table/table.component.mjs +0 -146
  126. package/esm2022/lib/table/table.mjs +0 -2
  127. package/esm2022/lib/table/table.module.mjs +0 -58
  128. package/esm2022/lib/throttle-click/throttle-click.directive.mjs +0 -39
  129. package/esm2022/lib/throttle-click/throttle-click.module.mjs +0 -17
  130. package/esm2022/porscheinformatik-material-addons.mjs +0 -5
  131. package/esm2022/public_api.mjs +0 -48
  132. package/esm2022/version.mjs +0 -2
@@ -1,191 +0,0 @@
1
- import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
- import { MatStepperModule } from '@angular/material/stepper';
3
- import { NgFor, NgIf } from '@angular/common';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/material/stepper";
6
- export class FlowbarComponent {
7
- constructor() {
8
- this._steps = [];
9
- this._activeStepChange = new EventEmitter(true);
10
- /**
11
- * Event emitted when a step header is clicked.
12
- * When defined header navigation has to be implemented programmatically.
13
- * e.g. {@see changeActiveStepOnHeader}
14
- */
15
- this._headerClick = new EventEmitter(true);
16
- }
17
- get currentStepLabel() {
18
- return this._activeStep.label;
19
- }
20
- get currentSubStepLabel() {
21
- return this._activeStep.activeSubStep?.label;
22
- }
23
- ngOnInit() {
24
- // If no active step is set as input or the active step is not enabled, select the first enabled step
25
- if (!this._activeStep || !this._activeStep.enabled) {
26
- this._activeStep = this._steps.find((step) => step.enabled);
27
- if (this._activeStep) {
28
- // If sub steps exist then set the first non disabled sub step per default
29
- if (this.activeTabHasSubSteps()) {
30
- this._activeStep.activeSubStep = this._activeStep.subSteps.find((step) => step.enabled);
31
- }
32
- this._activeStepChange.emit(this._activeStep);
33
- }
34
- }
35
- }
36
- ngAfterViewInit() {
37
- this.stepper._getIndicatorType = () => 'number';
38
- }
39
- getIndexForActiveStep() {
40
- const selectedIndex = this._steps.indexOf(this._activeStep);
41
- return selectedIndex === -1 ? 0 : selectedIndex;
42
- }
43
- changeActiveStep(step) {
44
- const previousIndex = this._steps.indexOf(this._activeStep);
45
- this._activeStep = step;
46
- if (this.activeTabHasSubSteps()) {
47
- if (previousIndex < this._steps.indexOf(this._activeStep)) {
48
- this._activeStep.activeSubStep = this._activeStep.subSteps[0];
49
- }
50
- else {
51
- this._activeStep.activeSubStep = this._activeStep.subSteps[this._activeStep.subSteps.length - 1];
52
- }
53
- }
54
- this._activeStepChange.emit(this._activeStep);
55
- }
56
- changeActiveStepOnHeader(step) {
57
- const stepIndex = this._steps.indexOf(step);
58
- this._activeStep = step;
59
- this.stepper.selected = this.stepper._steps.find((_, i) => i === stepIndex);
60
- }
61
- changeActiveSubStep(subStep) {
62
- this._activeStep.activeSubStep = subStep;
63
- }
64
- previous() {
65
- if (this.isPreviousAvailable()) {
66
- // If active step has no sub steps or first sub step is selected -> go to previous main step
67
- if (!this.activeTabHasSubSteps() || this.isFirstSubStep()) {
68
- const previousEnabledStep = this.findPreviousEnabledStep();
69
- this.changeActiveStep(previousEnabledStep);
70
- this.stepper.selectedIndex = this._steps.indexOf(previousEnabledStep);
71
- }
72
- else {
73
- const subStepIndex = this._activeStep.subSteps.indexOf(this._activeStep.activeSubStep);
74
- this._activeStep.activeSubStep = this._activeStep.subSteps[subStepIndex - 1];
75
- }
76
- }
77
- }
78
- next() {
79
- if (this.isNextAvailable()) {
80
- // If active step has no sub steps or last sub step is selected -> go to next main step
81
- if (!this.activeTabHasSubSteps() || this.isLastSubStep()) {
82
- const nextEnabledStep = this.findNextEnabledStep();
83
- this.changeActiveStep(nextEnabledStep);
84
- this.stepper.selectedIndex = this._steps.indexOf(nextEnabledStep);
85
- }
86
- else {
87
- const subStepIndex = this._activeStep.subSteps.indexOf(this._activeStep.activeSubStep);
88
- this._activeStep.activeSubStep = this._activeStep.subSteps[subStepIndex + 1];
89
- }
90
- }
91
- }
92
- isPreviousAvailable() {
93
- if (this._activeStep) {
94
- if (!this.activeTabHasSubSteps() || this.isFirstSubStep()) {
95
- const index = this.getCurrentIndex();
96
- return index > 0 && this.isAnyPreviousStepEnabled(index);
97
- }
98
- else {
99
- return true;
100
- }
101
- }
102
- return false;
103
- }
104
- isNextAvailable() {
105
- if (this._activeStep) {
106
- if (!this.activeTabHasSubSteps() || this.isLastSubStep()) {
107
- const index = this.getCurrentIndex();
108
- return index < this._steps.length - 1 && this.isAnyFollowingStepEnabled(index);
109
- }
110
- else {
111
- return true;
112
- }
113
- }
114
- return false;
115
- }
116
- isLastStep() {
117
- if (this.getCurrentIndex() === this._steps.length - 1) {
118
- if (this.activeTabHasSubSteps()) {
119
- return this.isLastSubStep();
120
- }
121
- else {
122
- return true;
123
- }
124
- }
125
- return false;
126
- }
127
- getCurrentIndex() {
128
- return this._steps.findIndex((value) => value === this._activeStep);
129
- }
130
- getCurrentSubStepIndex() {
131
- return this._activeStep.subSteps.findIndex((value) => value === this._activeStep.activeSubStep);
132
- }
133
- triggerClick() {
134
- const selectedStep = this._steps[this.stepper.selectedIndex];
135
- this.changeActiveStep(selectedStep);
136
- }
137
- headerClick(event, step) {
138
- event.stopPropagation(); //stop processing current header click event
139
- this._headerClick.emit(step);
140
- }
141
- activeTabHasSubSteps() {
142
- return this._activeStep.subSteps && this._activeStep.subSteps.length > 0;
143
- }
144
- isFirstSubStep() {
145
- return this._activeStep.activeSubStep === this._activeStep.subSteps[0];
146
- }
147
- isLastSubStep() {
148
- return this._activeStep.activeSubStep === this._activeStep.subSteps[this._activeStep.subSteps.length - 1];
149
- }
150
- isAnyPreviousStepEnabled(index) {
151
- // eslint-disable-next-line id-blacklist
152
- return this._steps.slice(0, index).find((step) => step.enabled) !== undefined;
153
- }
154
- isAnyFollowingStepEnabled(index) {
155
- // eslint-disable-next-line id-blacklist
156
- return this._steps.slice(index + 1, this._steps.length).find((step) => step.enabled) !== undefined;
157
- }
158
- findPreviousEnabledStep() {
159
- const index = this.getCurrentIndex();
160
- return this._steps
161
- .slice(0, index)
162
- .reverse()
163
- .find((step) => step.enabled);
164
- }
165
- findNextEnabledStep() {
166
- const index = this.getCurrentIndex();
167
- return this._steps.slice(index + 1, this._steps.length).find((step) => step.enabled);
168
- }
169
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: FlowbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
170
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: FlowbarComponent, isStandalone: true, selector: "mad-flowbar", inputs: { _steps: ["steps", "_steps"], _activeStep: ["activeStep", "_activeStep"] }, outputs: { _activeStepChange: "activeStepChange", _headerClick: "headerClick" }, viewQueries: [{ propertyName: "stepper", first: true, predicate: ["stepper"], descendants: true }], ngImport: i0, template: "<div class=\"stepper-container\">\n <mat-horizontal-stepper #stepper [selectedIndex]=\"this.getIndexForActiveStep()\" (click)=\"triggerClick()\">\n <mat-step *ngFor=\"let step of _steps\" [aria-labelledby]=\"!step.enabled ? 'disabled' : null\">\n <ng-template matStepLabel>\n <div class=\"step-header-overlay\" *ngIf=\"this._headerClick.observers.length > 0\" (click)=\"headerClick($event, step)\"></div>\n <span>{{ step.label }}</span>\n </ng-template>\n </mat-step>\n </mat-horizontal-stepper>\n</div>\n", styles: [".stepper-container{display:flex;padding:0 1rem}::ng-deep .mat-stepper-horizontal .mat-horizontal-stepper-header{padding:0;height:auto}::ng-deep .mat-step-header[aria-labelledby=disabled]{pointer-events:none!important;cursor:not-allowed}::ng-deep .mat-stepper-horizontal .mat-horizontal-content-container{padding:0 0 10px}::ng-deep .mat-stepper-horizontal .mat-stepper-horizontal-line{margin:0 5px;border-top-width:4px}.step-header-overlay{position:absolute;width:100%;height:100%;right:0;top:0}\n"], dependencies: [{ kind: "ngmodule", type: MatStepperModule }, { kind: "component", type: i1.MatStep, selector: "mat-step", inputs: ["color"], exportAs: ["matStep"] }, { kind: "directive", type: i1.MatStepLabel, selector: "[matStepLabel]" }, { kind: "component", type: i1.MatStepper, selector: "mat-stepper, mat-vertical-stepper, mat-horizontal-stepper, [matStepper]", inputs: ["disableRipple", "color", "labelPosition", "headerPosition", "animationDuration"], outputs: ["animationDone"], exportAs: ["matStepper", "matVerticalStepper", "matHorizontalStepper"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
171
- }
172
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: FlowbarComponent, decorators: [{
173
- type: Component,
174
- args: [{ selector: 'mad-flowbar', standalone: true, imports: [MatStepperModule, NgFor, NgIf], template: "<div class=\"stepper-container\">\n <mat-horizontal-stepper #stepper [selectedIndex]=\"this.getIndexForActiveStep()\" (click)=\"triggerClick()\">\n <mat-step *ngFor=\"let step of _steps\" [aria-labelledby]=\"!step.enabled ? 'disabled' : null\">\n <ng-template matStepLabel>\n <div class=\"step-header-overlay\" *ngIf=\"this._headerClick.observers.length > 0\" (click)=\"headerClick($event, step)\"></div>\n <span>{{ step.label }}</span>\n </ng-template>\n </mat-step>\n </mat-horizontal-stepper>\n</div>\n", styles: [".stepper-container{display:flex;padding:0 1rem}::ng-deep .mat-stepper-horizontal .mat-horizontal-stepper-header{padding:0;height:auto}::ng-deep .mat-step-header[aria-labelledby=disabled]{pointer-events:none!important;cursor:not-allowed}::ng-deep .mat-stepper-horizontal .mat-horizontal-content-container{padding:0 0 10px}::ng-deep .mat-stepper-horizontal .mat-stepper-horizontal-line{margin:0 5px;border-top-width:4px}.step-header-overlay{position:absolute;width:100%;height:100%;right:0;top:0}\n"] }]
175
- }], propDecorators: { _steps: [{
176
- type: Input,
177
- args: ['steps']
178
- }], _activeStep: [{
179
- type: Input,
180
- args: ['activeStep']
181
- }], _activeStepChange: [{
182
- type: Output,
183
- args: ['activeStepChange']
184
- }], _headerClick: [{
185
- type: Output,
186
- args: ['headerClick']
187
- }], stepper: [{
188
- type: ViewChild,
189
- args: ['stepper']
190
- }] } });
191
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvd2Jhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXRlcmlhbC1hZGRvbnMvc3JjL2xpYi9sYXlvdXQvZmxvd2Jhci9mbG93YmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hdGVyaWFsLWFkZG9ucy9zcmMvbGliL2xheW91dC9mbG93YmFyL2Zsb3diYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBYyxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQWdCOUMsTUFBTSxPQUFPLGdCQUFnQjtJQVA3QjtRQVFrQixXQUFNLEdBQVksRUFBRSxDQUFDO1FBRVQsc0JBQWlCLEdBQXdCLElBQUksWUFBWSxDQUFRLElBQUksQ0FBQyxDQUFDO1FBQ25HOzs7O1dBSUc7UUFDb0IsaUJBQVksR0FBd0IsSUFBSSxZQUFZLENBQVEsSUFBSSxDQUFDLENBQUM7S0E0SzFGO0lBektDLElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQUksbUJBQW1CO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDO0lBQy9DLENBQUM7SUFFRCxRQUFRO1FBQ04scUdBQXFHO1FBQ3JHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNuRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDNUQsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ3JCLDBFQUEwRTtnQkFDMUUsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxDQUFDO29CQUNoQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDMUYsQ0FBQztnQkFDRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNoRCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsR0FBRyxHQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUM7SUFDdkQsQ0FBQztJQUVELHFCQUFxQjtRQUNuQixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDNUQsT0FBTyxhQUFhLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDO0lBQ2xELENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxJQUFXO1FBQzFCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLENBQUM7WUFDaEMsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7Z0JBQzFELElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hFLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDbkcsQ0FBQztRQUNILENBQUM7UUFDRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsd0JBQXdCLENBQUMsSUFBVztRQUNsQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVELG1CQUFtQixDQUFDLE9BQWM7UUFDaEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDO0lBQzNDLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxDQUFDO1lBQy9CLDRGQUE0RjtZQUM1RixJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUM7Z0JBQzFELE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7Z0JBQzNELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO2dCQUMzQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBQ3hFLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDdkYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQy9FLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUk7UUFDRixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDO1lBQzNCLHVGQUF1RjtZQUN2RixJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUM7Z0JBQ3pELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO2dCQUNuRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQ3ZDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ3BFLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDdkYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQy9FLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELG1CQUFtQjtRQUNqQixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUM7Z0JBQzFELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDckMsT0FBTyxLQUFLLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzRCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUM7Z0JBQ3pELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDckMsT0FBTyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqRixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN0RCxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLENBQUM7Z0JBQ2hDLE9BQU8sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzlCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVELHNCQUFzQjtRQUNwQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDbEcsQ0FBQztJQUVELFlBQVk7UUFDVixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBVSxFQUFFLElBQVc7UUFDakMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsNENBQTRDO1FBQ3JFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFTyxvQkFBb0I7UUFDMUIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFTyxjQUFjO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVPLGFBQWE7UUFDbkIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsS0FBSyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDNUcsQ0FBQztJQUVPLHdCQUF3QixDQUFDLEtBQWE7UUFDNUMsd0NBQXdDO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLFNBQVMsQ0FBQztJQUNoRixDQUFDO0lBRU8seUJBQXlCLENBQUMsS0FBYTtRQUM3Qyx3Q0FBd0M7UUFDeEMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssU0FBUyxDQUFDO0lBQ3JHLENBQUM7SUFFTyx1QkFBdUI7UUFDN0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLE1BQU07YUFDZixLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQzthQUNmLE9BQU8sRUFBRTthQUNULElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFTyxtQkFBbUI7UUFDekIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7OEdBcExVLGdCQUFnQjtrR0FBaEIsZ0JBQWdCLGlWQ2xCN0IsMmhCQVVBLHlpQkRNWSxnQkFBZ0IsbWhCQUFFLEtBQUssbUhBQUUsSUFBSTs7MkZBRTVCLGdCQUFnQjtrQkFQNUIsU0FBUzsrQkFDRSxhQUFhLGNBR1gsSUFBSSxXQUNQLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQzs4QkFHeEIsTUFBTTtzQkFBckIsS0FBSzt1QkFBQyxPQUFPO2dCQUNPLFdBQVc7c0JBQS9CLEtBQUs7dUJBQUMsWUFBWTtnQkFDUyxpQkFBaUI7c0JBQTVDLE1BQU07dUJBQUMsa0JBQWtCO2dCQU1ILFlBQVk7c0JBQWxDLE1BQU07dUJBQUMsYUFBYTtnQkFDUyxPQUFPO3NCQUFwQyxTQUFTO3VCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFN0ZXBwZXIsIE1hdFN0ZXBwZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zdGVwcGVyJztcbmltcG9ydCB7IE5nRm9yLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuZXhwb3J0IGludGVyZmFjZSBJU3RlcCB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGVuYWJsZWQ/OiBib29sZWFuO1xuICBzdWJTdGVwcz86IElTdGVwW107XG4gIGFjdGl2ZVN1YlN0ZXA/OiBJU3RlcDtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWFkLWZsb3diYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZmxvd2Jhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zsb3diYXIuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW01hdFN0ZXBwZXJNb2R1bGUsIE5nRm9yLCBOZ0lmXSxcbn0pXG5leHBvcnQgY2xhc3MgRmxvd2JhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgnc3RlcHMnKSBfc3RlcHM6IElTdGVwW10gPSBbXTtcbiAgQElucHV0KCdhY3RpdmVTdGVwJykgX2FjdGl2ZVN0ZXA6IElTdGVwO1xuICBAT3V0cHV0KCdhY3RpdmVTdGVwQ2hhbmdlJykgX2FjdGl2ZVN0ZXBDaGFuZ2U6IEV2ZW50RW1pdHRlcjxJU3RlcD4gPSBuZXcgRXZlbnRFbWl0dGVyPElTdGVwPih0cnVlKTtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBhIHN0ZXAgaGVhZGVyIGlzIGNsaWNrZWQuXG4gICAqIFdoZW4gZGVmaW5lZCBoZWFkZXIgbmF2aWdhdGlvbiBoYXMgdG8gYmUgaW1wbGVtZW50ZWQgcHJvZ3JhbW1hdGljYWxseS5cbiAgICogZS5nLiB7QHNlZSBjaGFuZ2VBY3RpdmVTdGVwT25IZWFkZXJ9XG4gICAqL1xuICBAT3V0cHV0KCdoZWFkZXJDbGljaycpIF9oZWFkZXJDbGljazogRXZlbnRFbWl0dGVyPElTdGVwPiA9IG5ldyBFdmVudEVtaXR0ZXI8SVN0ZXA+KHRydWUpO1xuICBAVmlld0NoaWxkKCdzdGVwcGVyJykgcHJpdmF0ZSBzdGVwcGVyOiBNYXRTdGVwcGVyO1xuXG4gIGdldCBjdXJyZW50U3RlcExhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZVN0ZXAubGFiZWw7XG4gIH1cblxuICBnZXQgY3VycmVudFN1YlN0ZXBMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmVTdGVwLmFjdGl2ZVN1YlN0ZXA/LmxhYmVsO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gSWYgbm8gYWN0aXZlIHN0ZXAgaXMgc2V0IGFzIGlucHV0IG9yIHRoZSBhY3RpdmUgc3RlcCBpcyBub3QgZW5hYmxlZCwgc2VsZWN0IHRoZSBmaXJzdCBlbmFibGVkIHN0ZXBcbiAgICBpZiAoIXRoaXMuX2FjdGl2ZVN0ZXAgfHwgIXRoaXMuX2FjdGl2ZVN0ZXAuZW5hYmxlZCkge1xuICAgICAgdGhpcy5fYWN0aXZlU3RlcCA9IHRoaXMuX3N0ZXBzLmZpbmQoKHN0ZXApID0+IHN0ZXAuZW5hYmxlZCk7XG4gICAgICBpZiAodGhpcy5fYWN0aXZlU3RlcCkge1xuICAgICAgICAvLyBJZiBzdWIgc3RlcHMgZXhpc3QgdGhlbiBzZXQgdGhlIGZpcnN0IG5vbiBkaXNhYmxlZCBzdWIgc3RlcCBwZXIgZGVmYXVsdFxuICAgICAgICBpZiAodGhpcy5hY3RpdmVUYWJIYXNTdWJTdGVwcygpKSB7XG4gICAgICAgICAgdGhpcy5fYWN0aXZlU3RlcC5hY3RpdmVTdWJTdGVwID0gdGhpcy5fYWN0aXZlU3RlcC5zdWJTdGVwcy5maW5kKChzdGVwKSA9PiBzdGVwLmVuYWJsZWQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2FjdGl2ZVN0ZXBDaGFuZ2UuZW1pdCh0aGlzLl9hY3RpdmVTdGVwKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdGVwcGVyLl9nZXRJbmRpY2F0b3JUeXBlID0gKCk6IGFueSA9PiAnbnVtYmVyJztcbiAgfVxuXG4gIGdldEluZGV4Rm9yQWN0aXZlU3RlcCgpOiBudW1iZXIge1xuICAgIGNvbnN0IHNlbGVjdGVkSW5kZXggPSB0aGlzLl9zdGVwcy5pbmRleE9mKHRoaXMuX2FjdGl2ZVN0ZXApO1xuICAgIHJldHVybiBzZWxlY3RlZEluZGV4ID09PSAtMSA/IDAgOiBzZWxlY3RlZEluZGV4O1xuICB9XG5cbiAgY2hhbmdlQWN0aXZlU3RlcChzdGVwOiBJU3RlcCk6IHZvaWQge1xuICAgIGNvbnN0IHByZXZpb3VzSW5kZXggPSB0aGlzLl9zdGVwcy5pbmRleE9mKHRoaXMuX2FjdGl2ZVN0ZXApO1xuICAgIHRoaXMuX2FjdGl2ZVN0ZXAgPSBzdGVwO1xuICAgIGlmICh0aGlzLmFjdGl2ZVRhYkhhc1N1YlN0ZXBzKCkpIHtcbiAgICAgIGlmIChwcmV2aW91c0luZGV4IDwgdGhpcy5fc3RlcHMuaW5kZXhPZih0aGlzLl9hY3RpdmVTdGVwKSkge1xuICAgICAgICB0aGlzLl9hY3RpdmVTdGVwLmFjdGl2ZVN1YlN0ZXAgPSB0aGlzLl9hY3RpdmVTdGVwLnN1YlN0ZXBzWzBdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fYWN0aXZlU3RlcC5hY3RpdmVTdWJTdGVwID0gdGhpcy5fYWN0aXZlU3RlcC5zdWJTdGVwc1t0aGlzLl9hY3RpdmVTdGVwLnN1YlN0ZXBzLmxlbmd0aCAtIDFdO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl9hY3RpdmVTdGVwQ2hhbmdlLmVtaXQodGhpcy5fYWN0aXZlU3RlcCk7XG4gIH1cblxuICBjaGFuZ2VBY3RpdmVTdGVwT25IZWFkZXIoc3RlcDogSVN0ZXApOiB2b2lkIHtcbiAgICBjb25zdCBzdGVwSW5kZXggPSB0aGlzLl9zdGVwcy5pbmRleE9mKHN0ZXApO1xuICAgIHRoaXMuX2FjdGl2ZVN0ZXAgPSBzdGVwO1xuICAgIHRoaXMuc3RlcHBlci5zZWxlY3RlZCA9IHRoaXMuc3RlcHBlci5fc3RlcHMuZmluZCgoXywgaSkgPT4gaSA9PT0gc3RlcEluZGV4KTtcbiAgfVxuXG4gIGNoYW5nZUFjdGl2ZVN1YlN0ZXAoc3ViU3RlcDogSVN0ZXApOiB2b2lkIHtcbiAgICB0aGlzLl9hY3RpdmVTdGVwLmFjdGl2ZVN1YlN0ZXAgPSBzdWJTdGVwO1xuICB9XG5cbiAgcHJldmlvdXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNQcmV2aW91c0F2YWlsYWJsZSgpKSB7XG4gICAgICAvLyBJZiBhY3RpdmUgc3RlcCBoYXMgbm8gc3ViIHN0ZXBzIG9yIGZpcnN0IHN1YiBzdGVwIGlzIHNlbGVjdGVkIC0+IGdvIHRvIHByZXZpb3VzIG1haW4gc3RlcFxuICAgICAgaWYgKCF0aGlzLmFjdGl2ZVRhYkhhc1N1YlN0ZXBzKCkgfHwgdGhpcy5pc0ZpcnN0U3ViU3RlcCgpKSB7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzRW5hYmxlZFN0ZXAgPSB0aGlzLmZpbmRQcmV2aW91c0VuYWJsZWRTdGVwKCk7XG4gICAgICAgIHRoaXMuY2hhbmdlQWN0aXZlU3RlcChwcmV2aW91c0VuYWJsZWRTdGVwKTtcbiAgICAgICAgdGhpcy5zdGVwcGVyLnNlbGVjdGVkSW5kZXggPSB0aGlzLl9zdGVwcy5pbmRleE9mKHByZXZpb3VzRW5hYmxlZFN0ZXApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc3ViU3RlcEluZGV4ID0gdGhpcy5fYWN0aXZlU3RlcC5zdWJTdGVwcy5pbmRleE9mKHRoaXMuX2FjdGl2ZVN0ZXAuYWN0aXZlU3ViU3RlcCk7XG4gICAgICAgIHRoaXMuX2FjdGl2ZVN0ZXAuYWN0aXZlU3ViU3RlcCA9IHRoaXMuX2FjdGl2ZVN0ZXAuc3ViU3RlcHNbc3ViU3RlcEluZGV4IC0gMV07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmV4dCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc05leHRBdmFpbGFibGUoKSkge1xuICAgICAgLy8gSWYgYWN0aXZlIHN0ZXAgaGFzIG5vIHN1YiBzdGVwcyBvciBsYXN0IHN1YiBzdGVwIGlzIHNlbGVjdGVkIC0+IGdvIHRvIG5leHQgbWFpbiBzdGVwXG4gICAgICBpZiAoIXRoaXMuYWN0aXZlVGFiSGFzU3ViU3RlcHMoKSB8fCB0aGlzLmlzTGFzdFN1YlN0ZXAoKSkge1xuICAgICAgICBjb25zdCBuZXh0RW5hYmxlZFN0ZXAgPSB0aGlzLmZpbmROZXh0RW5hYmxlZFN0ZXAoKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VBY3RpdmVTdGVwKG5leHRFbmFibGVkU3RlcCk7XG4gICAgICAgIHRoaXMuc3RlcHBlci5zZWxlY3RlZEluZGV4ID0gdGhpcy5fc3RlcHMuaW5kZXhPZihuZXh0RW5hYmxlZFN0ZXApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc3ViU3RlcEluZGV4ID0gdGhpcy5fYWN0aXZlU3RlcC5zdWJTdGVwcy5pbmRleE9mKHRoaXMuX2FjdGl2ZVN0ZXAuYWN0aXZlU3ViU3RlcCk7XG4gICAgICAgIHRoaXMuX2FjdGl2ZVN0ZXAuYWN0aXZlU3ViU3RlcCA9IHRoaXMuX2FjdGl2ZVN0ZXAuc3ViU3RlcHNbc3ViU3RlcEluZGV4ICsgMV07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaXNQcmV2aW91c0F2YWlsYWJsZSgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5fYWN0aXZlU3RlcCkge1xuICAgICAgaWYgKCF0aGlzLmFjdGl2ZVRhYkhhc1N1YlN0ZXBzKCkgfHwgdGhpcy5pc0ZpcnN0U3ViU3RlcCgpKSB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZXRDdXJyZW50SW5kZXgoKTtcbiAgICAgICAgcmV0dXJuIGluZGV4ID4gMCAmJiB0aGlzLmlzQW55UHJldmlvdXNTdGVwRW5hYmxlZChpbmRleCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaXNOZXh0QXZhaWxhYmxlKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLl9hY3RpdmVTdGVwKSB7XG4gICAgICBpZiAoIXRoaXMuYWN0aXZlVGFiSGFzU3ViU3RlcHMoKSB8fCB0aGlzLmlzTGFzdFN1YlN0ZXAoKSkge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuZ2V0Q3VycmVudEluZGV4KCk7XG4gICAgICAgIHJldHVybiBpbmRleCA8IHRoaXMuX3N0ZXBzLmxlbmd0aCAtIDEgJiYgdGhpcy5pc0FueUZvbGxvd2luZ1N0ZXBFbmFibGVkKGluZGV4KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpc0xhc3RTdGVwKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmdldEN1cnJlbnRJbmRleCgpID09PSB0aGlzLl9zdGVwcy5sZW5ndGggLSAxKSB7XG4gICAgICBpZiAodGhpcy5hY3RpdmVUYWJIYXNTdWJTdGVwcygpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzTGFzdFN1YlN0ZXAoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZXRDdXJyZW50SW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fc3RlcHMuZmluZEluZGV4KCh2YWx1ZSkgPT4gdmFsdWUgPT09IHRoaXMuX2FjdGl2ZVN0ZXApO1xuICB9XG5cbiAgZ2V0Q3VycmVudFN1YlN0ZXBJbmRleCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmVTdGVwLnN1YlN0ZXBzLmZpbmRJbmRleCgodmFsdWUpID0+IHZhbHVlID09PSB0aGlzLl9hY3RpdmVTdGVwLmFjdGl2ZVN1YlN0ZXApO1xuICB9XG5cbiAgdHJpZ2dlckNsaWNrKCk6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGVkU3RlcCA9IHRoaXMuX3N0ZXBzW3RoaXMuc3RlcHBlci5zZWxlY3RlZEluZGV4XTtcbiAgICB0aGlzLmNoYW5nZUFjdGl2ZVN0ZXAoc2VsZWN0ZWRTdGVwKTtcbiAgfVxuXG4gIGhlYWRlckNsaWNrKGV2ZW50OiBhbnksIHN0ZXA6IElTdGVwKTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IC8vc3RvcCBwcm9jZXNzaW5nIGN1cnJlbnQgaGVhZGVyIGNsaWNrIGV2ZW50XG4gICAgdGhpcy5faGVhZGVyQ2xpY2suZW1pdChzdGVwKTtcbiAgfVxuXG4gIHByaXZhdGUgYWN0aXZlVGFiSGFzU3ViU3RlcHMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZVN0ZXAuc3ViU3RlcHMgJiYgdGhpcy5fYWN0aXZlU3RlcC5zdWJTdGVwcy5sZW5ndGggPiAwO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0ZpcnN0U3ViU3RlcCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlU3RlcC5hY3RpdmVTdWJTdGVwID09PSB0aGlzLl9hY3RpdmVTdGVwLnN1YlN0ZXBzWzBdO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0xhc3RTdWJTdGVwKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmVTdGVwLmFjdGl2ZVN1YlN0ZXAgPT09IHRoaXMuX2FjdGl2ZVN0ZXAuc3ViU3RlcHNbdGhpcy5fYWN0aXZlU3RlcC5zdWJTdGVwcy5sZW5ndGggLSAxXTtcbiAgfVxuXG4gIHByaXZhdGUgaXNBbnlQcmV2aW91c1N0ZXBFbmFibGVkKGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaWQtYmxhY2tsaXN0XG4gICAgcmV0dXJuIHRoaXMuX3N0ZXBzLnNsaWNlKDAsIGluZGV4KS5maW5kKChzdGVwKSA9PiBzdGVwLmVuYWJsZWQpICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGlzQW55Rm9sbG93aW5nU3RlcEVuYWJsZWQoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpZC1ibGFja2xpc3RcbiAgICByZXR1cm4gdGhpcy5fc3RlcHMuc2xpY2UoaW5kZXggKyAxLCB0aGlzLl9zdGVwcy5sZW5ndGgpLmZpbmQoKHN0ZXApID0+IHN0ZXAuZW5hYmxlZCkgIT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgZmluZFByZXZpb3VzRW5hYmxlZFN0ZXAoKTogSVN0ZXAge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZXRDdXJyZW50SW5kZXgoKTtcbiAgICByZXR1cm4gdGhpcy5fc3RlcHNcbiAgICAgIC5zbGljZSgwLCBpbmRleClcbiAgICAgIC5yZXZlcnNlKClcbiAgICAgIC5maW5kKChzdGVwKSA9PiBzdGVwLmVuYWJsZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kTmV4dEVuYWJsZWRTdGVwKCk6IElTdGVwIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZ2V0Q3VycmVudEluZGV4KCk7XG4gICAgcmV0dXJuIHRoaXMuX3N0ZXBzLnNsaWNlKGluZGV4ICsgMSwgdGhpcy5fc3RlcHMubGVuZ3RoKS5maW5kKChzdGVwKSA9PiBzdGVwLmVuYWJsZWQpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic3RlcHBlci1jb250YWluZXJcIj5cbiAgPG1hdC1ob3Jpem9udGFsLXN0ZXBwZXIgI3N0ZXBwZXIgW3NlbGVjdGVkSW5kZXhdPVwidGhpcy5nZXRJbmRleEZvckFjdGl2ZVN0ZXAoKVwiIChjbGljayk9XCJ0cmlnZ2VyQ2xpY2soKVwiPlxuICAgIDxtYXQtc3RlcCAqbmdGb3I9XCJsZXQgc3RlcCBvZiBfc3RlcHNcIiBbYXJpYS1sYWJlbGxlZGJ5XT1cIiFzdGVwLmVuYWJsZWQgPyAnZGlzYWJsZWQnIDogbnVsbFwiPlxuICAgICAgPG5nLXRlbXBsYXRlIG1hdFN0ZXBMYWJlbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXAtaGVhZGVyLW92ZXJsYXlcIiAqbmdJZj1cInRoaXMuX2hlYWRlckNsaWNrLm9ic2VydmVycy5sZW5ndGggPiAwXCIgKGNsaWNrKT1cImhlYWRlckNsaWNrKCRldmVudCwgc3RlcClcIj48L2Rpdj5cbiAgICAgICAgPHNwYW4+e3sgc3RlcC5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9tYXQtc3RlcD5cbiAgPC9tYXQtaG9yaXpvbnRhbC1zdGVwcGVyPlxuPC9kaXY+XG4iXX0=
@@ -1,18 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { MatStepperModule } from '@angular/material/stepper';
4
- import { FlowbarComponent } from './flowbar.component';
5
- import * as i0 from "@angular/core";
6
- export class FlowbarModule {
7
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: FlowbarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
8
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.2", ngImport: i0, type: FlowbarModule, imports: [CommonModule, MatStepperModule, FlowbarComponent], exports: [FlowbarComponent] }); }
9
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: FlowbarModule, imports: [CommonModule, MatStepperModule, FlowbarComponent] }); }
10
- }
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: FlowbarModule, decorators: [{
12
- type: NgModule,
13
- args: [{
14
- imports: [CommonModule, MatStepperModule, FlowbarComponent],
15
- exports: [FlowbarComponent],
16
- }]
17
- }] });
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvd2Jhci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXRlcmlhbC1hZGRvbnMvc3JjL2xpYi9sYXlvdXQvZmxvd2Jhci9mbG93YmFyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFNdkQsTUFBTSxPQUFPLGFBQWE7OEdBQWIsYUFBYTsrR0FBYixhQUFhLFlBSGQsWUFBWSxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixhQUNoRCxnQkFBZ0I7K0dBRWYsYUFBYSxZQUhkLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0I7OzJGQUcvQyxhQUFhO2tCQUp6QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQztvQkFDM0QsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7aUJBQzVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNYXRTdGVwcGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc3RlcHBlcic7XG5pbXBvcnQgeyBGbG93YmFyQ29tcG9uZW50IH0gZnJvbSAnLi9mbG93YmFyLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdFN0ZXBwZXJNb2R1bGUsIEZsb3diYXJDb21wb25lbnRdLFxuICBleHBvcnRzOiBbRmxvd2JhckNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIEZsb3diYXJNb2R1bGUge31cbiJdfQ==
@@ -1,11 +0,0 @@
1
- import { Component, ViewEncapsulation } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class SidebarItemComponent {
4
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: SidebarItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: SidebarItemComponent, isStandalone: true, selector: "[mad-sidebar-item]", ngImport: i0, template: "<span class=\"content-wrapper\">\n <ng-content></ng-content>\n</span>\n<span class=\"focus-overlay\"></span>\n", styles: ["[mad-sidebar-item]{padding:9px 24px 8px;color:var(--panel-color);position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:16px;font-weight:300;letter-spacing:.5px}[mad-sidebar-item] .focus-overlay{inset:0;position:absolute;pointer-events:none;border-radius:inherit}[mad-sidebar-item] .content-wrapper{width:100%}[mad-sidebar-item].active-sidebar-item{background-color:var(--panel-select-background)}[mad-sidebar-item]:hover .focus-overlay{background-color:#000;opacity:.04}\n"], encapsulation: i0.ViewEncapsulation.None }); }
6
- }
7
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: SidebarItemComponent, decorators: [{
8
- type: Component,
9
- args: [{ selector: '[mad-sidebar-item]', encapsulation: ViewEncapsulation.None, standalone: true, template: "<span class=\"content-wrapper\">\n <ng-content></ng-content>\n</span>\n<span class=\"focus-overlay\"></span>\n", styles: ["[mad-sidebar-item]{padding:9px 24px 8px;color:var(--panel-color);position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:16px;font-weight:300;letter-spacing:.5px}[mad-sidebar-item] .focus-overlay{inset:0;position:absolute;pointer-events:none;border-radius:inherit}[mad-sidebar-item] .content-wrapper{width:100%}[mad-sidebar-item].active-sidebar-item{background-color:var(--panel-select-background)}[mad-sidebar-item]:hover .focus-overlay{background-color:#000;opacity:.04}\n"] }]
10
- }] });
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hdGVyaWFsLWFkZG9ucy9zcmMvbGliL2xheW91dC9zaWRlYmFyL3NpZGViYXItaXRlbS9zaWRlYmFyLWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWF0ZXJpYWwtYWRkb25zL3NyYy9saWIvbGF5b3V0L3NpZGViYXIvc2lkZWJhci1pdGVtL3NpZGViYXItaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVM3RCxNQUFNLE9BQU8sb0JBQW9COzhHQUFwQixvQkFBb0I7a0dBQXBCLG9CQUFvQiw4RUNUakMsaUhBSUE7OzJGREthLG9CQUFvQjtrQkFQaEMsU0FBUzsrQkFDRSxvQkFBb0IsaUJBR2YsaUJBQWlCLENBQUMsSUFBSSxjQUN6QixJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdbbWFkLXNpZGViYXItaXRlbV0nLFxuICB0ZW1wbGF0ZVVybDogJ3NpZGViYXItaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWydzaWRlYmFyLWl0ZW0uY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgU2lkZWJhckl0ZW1Db21wb25lbnQge31cbiIsIjxzcGFuIGNsYXNzPVwiY29udGVudC13cmFwcGVyXCI+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwiZm9jdXMtb3ZlcmxheVwiPjwvc3Bhbj5cbiJdfQ==
@@ -1,23 +0,0 @@
1
- import { Component, Input } from '@angular/core';
2
- import { MatIconModule } from '@angular/material/icon';
3
- import { MatButtonModule } from '@angular/material/button';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/material/button";
6
- import * as i2 from "@angular/material/icon";
7
- export class SidebarComponent {
8
- constructor() {
9
- this.collapsed = false;
10
- }
11
- toggleCollapse() {
12
- this.collapsed = !this.collapsed;
13
- }
14
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: SidebarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
15
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: SidebarComponent, isStandalone: true, selector: "mad-sidebar", inputs: { collapsed: "collapsed" }, ngImport: i0, template: "<div [class.collapsed]=\"collapsed\" class=\"sidebar-wrapper\">\n <div class=\"sidebar-header\">\n <button (click)=\"toggleCollapse()\" color=\"basic\" mat-button>\n <mat-icon>{{ collapsed ? 'keyboard_double_arrow_right' : 'keyboard_double_arrow_left' }}</mat-icon>\n </button>\n </div>\n <div class=\"item-list\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".sidebar-wrapper{background:var(--panel-background-color);min-height:100%;display:flex;flex-direction:column;border-right:1px solid var(--panel-border-color);transition:width .1s ease-in}.sidebar-wrapper:not(.collapsed){min-width:239px}.sidebar-wrapper.collapsed{width:64px}.sidebar-wrapper .sidebar-header{display:flex;flex-direction:row-reverse;border-bottom:1px solid var(--panel-border-color)}.sidebar-wrapper .sidebar-header button{color:#707070}.sidebar-wrapper.collapsed .item-list{display:none}.sidebar-wrapper .item-list{display:flex;flex-direction:column;margin-top:16px}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
16
- }
17
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: SidebarComponent, decorators: [{
18
- type: Component,
19
- args: [{ selector: 'mad-sidebar', standalone: true, imports: [MatButtonModule, MatIconModule], template: "<div [class.collapsed]=\"collapsed\" class=\"sidebar-wrapper\">\n <div class=\"sidebar-header\">\n <button (click)=\"toggleCollapse()\" color=\"basic\" mat-button>\n <mat-icon>{{ collapsed ? 'keyboard_double_arrow_right' : 'keyboard_double_arrow_left' }}</mat-icon>\n </button>\n </div>\n <div class=\"item-list\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".sidebar-wrapper{background:var(--panel-background-color);min-height:100%;display:flex;flex-direction:column;border-right:1px solid var(--panel-border-color);transition:width .1s ease-in}.sidebar-wrapper:not(.collapsed){min-width:239px}.sidebar-wrapper.collapsed{width:64px}.sidebar-wrapper .sidebar-header{display:flex;flex-direction:row-reverse;border-bottom:1px solid var(--panel-border-color)}.sidebar-wrapper .sidebar-header button{color:#707070}.sidebar-wrapper.collapsed .item-list{display:none}.sidebar-wrapper .item-list{display:flex;flex-direction:column;margin-top:16px}\n"] }]
20
- }], propDecorators: { collapsed: [{
21
- type: Input
22
- }] } });
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXRlcmlhbC1hZGRvbnMvc3JjL2xpYi9sYXlvdXQvc2lkZWJhci9zaWRlYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hdGVyaWFsLWFkZG9ucy9zcmMvbGliL2xheW91dC9zaWRlYmFyL3NpZGViYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7OztBQVMzRCxNQUFNLE9BQU8sZ0JBQWdCO0lBUDdCO1FBUVcsY0FBUyxHQUFHLEtBQUssQ0FBQztLQUs1QjtJQUhDLGNBQWM7UUFDWixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUNuQyxDQUFDOzhHQUxVLGdCQUFnQjtrR0FBaEIsZ0JBQWdCLDJHQ1g3Qiw2WEFVQSxnb0JERFksZUFBZSwyTkFBRSxhQUFhOzsyRkFFN0IsZ0JBQWdCO2tCQVA1QixTQUFTOytCQUNFLGFBQWEsY0FHWCxJQUFJLFdBQ1AsQ0FBQyxlQUFlLEVBQUUsYUFBYSxDQUFDOzhCQUdoQyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWFkLXNpZGViYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vc2lkZWJhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NpZGViYXIuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW01hdEJ1dHRvbk1vZHVsZSwgTWF0SWNvbk1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIFNpZGViYXJDb21wb25lbnQge1xuICBASW5wdXQoKSBjb2xsYXBzZWQgPSBmYWxzZTtcblxuICB0b2dnbGVDb2xsYXBzZSgpIHtcbiAgICB0aGlzLmNvbGxhcHNlZCA9ICF0aGlzLmNvbGxhcHNlZDtcbiAgfVxufVxuIiwiPGRpdiBbY2xhc3MuY29sbGFwc2VkXT1cImNvbGxhcHNlZFwiIGNsYXNzPVwic2lkZWJhci13cmFwcGVyXCI+XG4gIDxkaXYgY2xhc3M9XCJzaWRlYmFyLWhlYWRlclwiPlxuICAgIDxidXR0b24gKGNsaWNrKT1cInRvZ2dsZUNvbGxhcHNlKClcIiBjb2xvcj1cImJhc2ljXCIgbWF0LWJ1dHRvbj5cbiAgICAgIDxtYXQtaWNvbj57eyBjb2xsYXBzZWQgPyAna2V5Ym9hcmRfZG91YmxlX2Fycm93X3JpZ2h0JyA6ICdrZXlib2FyZF9kb3VibGVfYXJyb3dfbGVmdCcgfX08L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIml0ZW0tbGlzdFwiPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -1,20 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { SidebarComponent } from './sidebar.component';
4
- import { SidebarItemComponent } from './sidebar-item/sidebar-item.component';
5
- import { MatIconModule } from '@angular/material/icon';
6
- import { MatButtonModule } from '@angular/material/button';
7
- import * as i0 from "@angular/core";
8
- export class SidebarModule {
9
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: SidebarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
10
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.2", ngImport: i0, type: SidebarModule, imports: [CommonModule, MatIconModule, MatButtonModule, SidebarComponent, SidebarItemComponent], exports: [SidebarComponent, SidebarItemComponent] }); }
11
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: SidebarModule, imports: [CommonModule, MatIconModule, MatButtonModule, SidebarComponent] }); }
12
- }
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: SidebarModule, decorators: [{
14
- type: NgModule,
15
- args: [{
16
- exports: [SidebarComponent, SidebarItemComponent],
17
- imports: [CommonModule, MatIconModule, MatButtonModule, SidebarComponent, SidebarItemComponent],
18
- }]
19
- }] });
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXRlcmlhbC1hZGRvbnMvc3JjL2xpYi9sYXlvdXQvc2lkZWJhci9zaWRlYmFyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQU0zRCxNQUFNLE9BQU8sYUFBYTs4R0FBYixhQUFhOytHQUFiLGFBQWEsWUFGZCxZQUFZLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxvQkFBb0IsYUFEcEYsZ0JBQWdCLEVBQUUsb0JBQW9COytHQUdyQyxhQUFhLFlBRmQsWUFBWSxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCOzsyRkFFN0QsYUFBYTtrQkFKekIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxvQkFBb0IsQ0FBQztvQkFDakQsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsb0JBQW9CLENBQUM7aUJBQ2hHIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBTaWRlYmFyQ29tcG9uZW50IH0gZnJvbSAnLi9zaWRlYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTaWRlYmFySXRlbUNvbXBvbmVudCB9IGZyb20gJy4vc2lkZWJhci1pdGVtL3NpZGViYXItaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcblxuQE5nTW9kdWxlKHtcbiAgZXhwb3J0czogW1NpZGViYXJDb21wb25lbnQsIFNpZGViYXJJdGVtQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0SWNvbk1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBTaWRlYmFyQ29tcG9uZW50LCBTaWRlYmFySXRlbUNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIFNpZGViYXJNb2R1bGUge31cbiJdfQ==
@@ -1,67 +0,0 @@
1
- import { Component, Input } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { PortalModule, TemplatePortal } from '@angular/cdk/portal';
4
- import { ContentPanelModule } from '../content-panel/content-panel.module';
5
- import { MatIconModule } from '@angular/material/icon';
6
- import { RouterModule } from '@angular/router';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@angular/router";
9
- import * as i2 from "@angular/common";
10
- import * as i3 from "../content-panel/content-header/content-header.component";
11
- import * as i4 from "../content-panel/content-panel-container/content-panel-container.component";
12
- import * as i5 from "../content-panel/content-panel-container-content/content-panel-container-content.component";
13
- import * as i6 from "../content-panel/content-panel-container-footer/content-panel-container-footer.component";
14
- import * as i7 from "../content-panel/content-panel-container-sidebar/content-panel-container-sidebar.component";
15
- import * as i8 from "../content-panel/main-container/main-container.component";
16
- import * as i9 from "@angular/cdk/portal";
17
- import * as i10 from "@angular/material/icon";
18
- export class SidebarLayoutComponent {
19
- set sideBarItems(ref) {
20
- this.sideBarItemsPortal = new TemplatePortal(ref, this._viewContainerRef);
21
- }
22
- set headerContent(ref) {
23
- this.headerContentPortal = new TemplatePortal(ref, this._viewContainerRef);
24
- }
25
- set actionGroup(ref) {
26
- this.actionGroupPortal = new TemplatePortal(ref, this._viewContainerRef);
27
- }
28
- set content(ref) {
29
- this.contentPortal = new TemplatePortal(ref, this._viewContainerRef);
30
- }
31
- set footer(ref) {
32
- this.footerPortal = new TemplatePortal(ref, this._viewContainerRef);
33
- }
34
- constructor(_viewContainerRef, router, location) {
35
- this._viewContainerRef = _viewContainerRef;
36
- this.router = router;
37
- this.location = location;
38
- this.title = '';
39
- this.hasBackButton = true;
40
- }
41
- goToPreviousPage() {
42
- this.location.back();
43
- }
44
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: SidebarLayoutComponent, deps: [{ token: i0.ViewContainerRef }, { token: i1.Router }, { token: i2.Location }], target: i0.ɵɵFactoryTarget.Component }); }
45
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: SidebarLayoutComponent, isStandalone: true, selector: "mad-sidebar-layout", inputs: { title: "title", hasBackButton: "hasBackButton", sideBarItems: "sideBarItems", headerContent: "headerContent", actionGroup: "actionGroup", content: "content", footer: "footer" }, ngImport: i0, template: "<mad-main-container class=\"w-full\">\n <mad-content-header>\n <ng-container *ngIf=\"headerContentPortal; else defaultActionHeader\">\n <ng-template [cdkPortalOutlet]=\"headerContentPortal\"></ng-template>\n </ng-container>\n <ng-template #defaultActionHeader>\n <div class=\"sidebar-wrapper default-header-wrapper\">\n <div class=\"back-and-title\">\n <button class=\"back-button\" *ngIf=\"hasBackButton\">\n <mat-icon (click)=\"goToPreviousPage()\" color=\"primary\"> arrow_back</mat-icon>\n </button>\n <h2 class=\"title\">\n {{ title }}\n </h2>\n </div>\n <ng-template [cdkPortalOutlet]=\"actionGroupPortal\"></ng-template>\n </div>\n </ng-template>\n </mad-content-header>\n <mad-content-panel-container>\n <mad-content-panel-container-sidebar *ngIf=\"sideBarItemsPortal\">\n <ng-template [cdkPortalOutlet]=\"sideBarItemsPortal\"></ng-template>\n </mad-content-panel-container-sidebar>\n <mad-content-panel-container-content *ngIf=\"contentPortal\">\n <ng-template [cdkPortalOutlet]=\"contentPortal\"></ng-template>\n </mad-content-panel-container-content>\n <mad-content-panel-container-footer *ngIf=\"footerPortal\">\n <ng-template [cdkPortalOutlet]=\"footerPortal\"></ng-template>\n </mad-content-panel-container-footer>\n </mad-content-panel-container>\n</mad-main-container>\n", styles: [".w-full{width:100%}.back-button{background-color:transparent;border:0;cursor:pointer}.back-button:hover{background-color:var(--background-color)}.sidebar-wrapper{height:64px;background-color:var(--background-color)}.default-header-wrapper{display:flex;align-items:center;justify-content:space-between;flex-wrap:nowrap;white-space:nowrap}.back-and-title{display:flex;align-items:center;gap:1em;overflow:hidden}.back-and-title .title{margin:0;text-overflow:ellipsis;white-space:nowrap;overflow:inherit}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ContentPanelModule }, { kind: "component", type: i3.ContentHeaderComponent, selector: "mad-content-header" }, { kind: "component", type: i4.ContentPanelContainerComponent, selector: "mad-content-panel-container" }, { kind: "component", type: i5.ContentPanelContainerContentComponent, selector: "mad-content-panel-container-content" }, { kind: "component", type: i6.ContentPanelContainerFooterComponent, selector: "mad-content-panel-container-footer" }, { kind: "component", type: i7.ContentPanelContainerSidebarComponent, selector: "mad-content-panel-container-sidebar" }, { kind: "component", type: i8.MainContainerComponent, selector: "mad-main-container" }, { kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i9.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: RouterModule }] }); }
46
- }
47
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: SidebarLayoutComponent, decorators: [{
48
- type: Component,
49
- args: [{ selector: 'mad-sidebar-layout', standalone: true, imports: [CommonModule, ContentPanelModule, PortalModule, MatIconModule, RouterModule], template: "<mad-main-container class=\"w-full\">\n <mad-content-header>\n <ng-container *ngIf=\"headerContentPortal; else defaultActionHeader\">\n <ng-template [cdkPortalOutlet]=\"headerContentPortal\"></ng-template>\n </ng-container>\n <ng-template #defaultActionHeader>\n <div class=\"sidebar-wrapper default-header-wrapper\">\n <div class=\"back-and-title\">\n <button class=\"back-button\" *ngIf=\"hasBackButton\">\n <mat-icon (click)=\"goToPreviousPage()\" color=\"primary\"> arrow_back</mat-icon>\n </button>\n <h2 class=\"title\">\n {{ title }}\n </h2>\n </div>\n <ng-template [cdkPortalOutlet]=\"actionGroupPortal\"></ng-template>\n </div>\n </ng-template>\n </mad-content-header>\n <mad-content-panel-container>\n <mad-content-panel-container-sidebar *ngIf=\"sideBarItemsPortal\">\n <ng-template [cdkPortalOutlet]=\"sideBarItemsPortal\"></ng-template>\n </mad-content-panel-container-sidebar>\n <mad-content-panel-container-content *ngIf=\"contentPortal\">\n <ng-template [cdkPortalOutlet]=\"contentPortal\"></ng-template>\n </mad-content-panel-container-content>\n <mad-content-panel-container-footer *ngIf=\"footerPortal\">\n <ng-template [cdkPortalOutlet]=\"footerPortal\"></ng-template>\n </mad-content-panel-container-footer>\n </mad-content-panel-container>\n</mad-main-container>\n", styles: [".w-full{width:100%}.back-button{background-color:transparent;border:0;cursor:pointer}.back-button:hover{background-color:var(--background-color)}.sidebar-wrapper{height:64px;background-color:var(--background-color)}.default-header-wrapper{display:flex;align-items:center;justify-content:space-between;flex-wrap:nowrap;white-space:nowrap}.back-and-title{display:flex;align-items:center;gap:1em;overflow:hidden}.back-and-title .title{margin:0;text-overflow:ellipsis;white-space:nowrap;overflow:inherit}\n"] }]
50
- }], ctorParameters: () => [{ type: i0.ViewContainerRef }, { type: i1.Router }, { type: i2.Location }], propDecorators: { title: [{
51
- type: Input
52
- }], hasBackButton: [{
53
- type: Input
54
- }], sideBarItems: [{
55
- type: Input,
56
- args: [{ required: true }]
57
- }], headerContent: [{
58
- type: Input
59
- }], actionGroup: [{
60
- type: Input
61
- }], content: [{
62
- type: Input,
63
- args: [{ required: true }]
64
- }], footer: [{
65
- type: Input
66
- }] } });
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci1sYXlvdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWF0ZXJpYWwtYWRkb25zL3NyYy9saWIvbGF5b3V0L3NpZGViYXItbGF5b3V0L3NpZGViYXItbGF5b3V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hdGVyaWFsLWFkZG9ucy9zcmMvbGliL2xheW91dC9zaWRlYmFyLWxheW91dC9zaWRlYmFyLWxheW91dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBaUMsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFFLFlBQVksRUFBWSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBVSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7Ozs7O0FBU3ZELE1BQU0sT0FBTyxzQkFBc0I7SUFJakMsSUFBK0IsWUFBWSxDQUFDLEdBQXlCO1FBQ25FLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLGNBQWMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUlELElBQWEsYUFBYSxDQUFDLEdBQXlCO1FBQ2xELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLGNBQWMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUlELElBQWEsV0FBVyxDQUFDLEdBQXlCO1FBQ2hELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLGNBQWMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUlELElBQStCLE9BQU8sQ0FBQyxHQUF5QjtRQUM5RCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksY0FBYyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBSUQsSUFBYSxNQUFNLENBQUMsR0FBeUI7UUFDM0MsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLGNBQWMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUlELFlBQ1UsaUJBQW1DLEVBQ25DLE1BQWMsRUFDZCxRQUFrQjtRQUZsQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQWtCO1FBQ25DLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBcENuQixVQUFLLEdBQVcsRUFBRSxDQUFDO1FBQ25CLGtCQUFhLEdBQUcsSUFBSSxDQUFDO0lBb0MzQixDQUFDO0lBRUcsZ0JBQWdCO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkIsQ0FBQzs4R0ExQ1Usc0JBQXNCO2tHQUF0QixzQkFBc0IsMFFDZG5DLHU1Q0ErQkEsK2lCRG5CWSxZQUFZLGtJQUFFLGtCQUFrQiw2cEJBQUUsWUFBWSxpTUFBRSxhQUFhLG9MQUFFLFlBQVk7OzJGQUUxRSxzQkFBc0I7a0JBUGxDLFNBQVM7K0JBQ0Usb0JBQW9CLGNBQ2xCLElBQUksV0FHUCxDQUFDLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLFlBQVksQ0FBQztpSUFHN0UsS0FBSztzQkFBYixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRXlCLFlBQVk7c0JBQTFDLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQU1aLGFBQWE7c0JBQXpCLEtBQUs7Z0JBTU8sV0FBVztzQkFBdkIsS0FBSztnQkFNeUIsT0FBTztzQkFBckMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBTVosTUFBTTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIFRlbXBsYXRlUmVmLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUsIExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFBvcnRhbE1vZHVsZSwgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IENvbnRlbnRQYW5lbE1vZHVsZSB9IGZyb20gJy4uL2NvbnRlbnQtcGFuZWwvY29udGVudC1wYW5lbC5tb2R1bGUnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgUm91dGVyLCBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYWQtc2lkZWJhci1sYXlvdXQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZVVybDogJy4vc2lkZWJhci1sYXlvdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vc2lkZWJhci1sYXlvdXQuY29tcG9uZW50LnNjc3MnLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBDb250ZW50UGFuZWxNb2R1bGUsIFBvcnRhbE1vZHVsZSwgTWF0SWNvbk1vZHVsZSwgUm91dGVyTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgU2lkZWJhckxheW91dENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgaGFzQmFja0J1dHRvbiA9IHRydWU7XG5cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgc2V0IHNpZGVCYXJJdGVtcyhyZWY6IFRlbXBsYXRlUmVmPHVua25vd24+KSB7XG4gICAgdGhpcy5zaWRlQmFySXRlbXNQb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwocmVmLCB0aGlzLl92aWV3Q29udGFpbmVyUmVmKTtcbiAgfVxuXG4gIHNpZGVCYXJJdGVtc1BvcnRhbD86IFRlbXBsYXRlUG9ydGFsPHVua25vd24+O1xuXG4gIEBJbnB1dCgpIHNldCBoZWFkZXJDb250ZW50KHJlZjogVGVtcGxhdGVSZWY8dW5rbm93bj4pIHtcbiAgICB0aGlzLmhlYWRlckNvbnRlbnRQb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwocmVmLCB0aGlzLl92aWV3Q29udGFpbmVyUmVmKTtcbiAgfVxuXG4gIGhlYWRlckNvbnRlbnRQb3J0YWw/OiBUZW1wbGF0ZVBvcnRhbDx1bmtub3duPjtcblxuICBASW5wdXQoKSBzZXQgYWN0aW9uR3JvdXAocmVmOiBUZW1wbGF0ZVJlZjx1bmtub3duPikge1xuICAgIHRoaXMuYWN0aW9uR3JvdXBQb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwocmVmLCB0aGlzLl92aWV3Q29udGFpbmVyUmVmKTtcbiAgfVxuXG4gIGFjdGlvbkdyb3VwUG9ydGFsPzogVGVtcGxhdGVQb3J0YWw8dW5rbm93bj47XG5cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgc2V0IGNvbnRlbnQocmVmOiBUZW1wbGF0ZVJlZjx1bmtub3duPikge1xuICAgIHRoaXMuY29udGVudFBvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbChyZWYsIHRoaXMuX3ZpZXdDb250YWluZXJSZWYpO1xuICB9XG5cbiAgY29udGVudFBvcnRhbD86IFRlbXBsYXRlUG9ydGFsPHVua25vd24+O1xuXG4gIEBJbnB1dCgpIHNldCBmb290ZXIocmVmOiBUZW1wbGF0ZVJlZjx1bmtub3duPikge1xuICAgIHRoaXMuZm9vdGVyUG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKHJlZiwgdGhpcy5fdmlld0NvbnRhaW5lclJlZik7XG4gIH1cblxuICBmb290ZXJQb3J0YWw/OiBUZW1wbGF0ZVBvcnRhbDx1bmtub3duPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF92aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBsb2NhdGlvbjogTG9jYXRpb24sXG4gICkge31cblxuICBwdWJsaWMgZ29Ub1ByZXZpb3VzUGFnZSgpOiB2b2lkIHtcbiAgICB0aGlzLmxvY2F0aW9uLmJhY2soKTtcbiAgfVxufVxuIiwiPG1hZC1tYWluLWNvbnRhaW5lciBjbGFzcz1cInctZnVsbFwiPlxuICA8bWFkLWNvbnRlbnQtaGVhZGVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkZXJDb250ZW50UG9ydGFsOyBlbHNlIGRlZmF1bHRBY3Rpb25IZWFkZXJcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbY2RrUG9ydGFsT3V0bGV0XT1cImhlYWRlckNvbnRlbnRQb3J0YWxcIj48L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEFjdGlvbkhlYWRlcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzaWRlYmFyLXdyYXBwZXIgZGVmYXVsdC1oZWFkZXItd3JhcHBlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYmFjay1hbmQtdGl0bGVcIj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYmFjay1idXR0b25cIiAqbmdJZj1cImhhc0JhY2tCdXR0b25cIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiAoY2xpY2spPVwiZ29Ub1ByZXZpb3VzUGFnZSgpXCIgY29sb3I9XCJwcmltYXJ5XCI+IGFycm93X2JhY2s8L21hdC1pY29uPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxoMiBjbGFzcz1cInRpdGxlXCI+XG4gICAgICAgICAgICB7eyB0aXRsZSB9fVxuICAgICAgICAgIDwvaDI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctdGVtcGxhdGUgW2Nka1BvcnRhbE91dGxldF09XCJhY3Rpb25Hcm91cFBvcnRhbFwiPjwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L21hZC1jb250ZW50LWhlYWRlcj5cbiAgPG1hZC1jb250ZW50LXBhbmVsLWNvbnRhaW5lcj5cbiAgICA8bWFkLWNvbnRlbnQtcGFuZWwtY29udGFpbmVyLXNpZGViYXIgKm5nSWY9XCJzaWRlQmFySXRlbXNQb3J0YWxcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbY2RrUG9ydGFsT3V0bGV0XT1cInNpZGVCYXJJdGVtc1BvcnRhbFwiPjwvbmctdGVtcGxhdGU+XG4gICAgPC9tYWQtY29udGVudC1wYW5lbC1jb250YWluZXItc2lkZWJhcj5cbiAgICA8bWFkLWNvbnRlbnQtcGFuZWwtY29udGFpbmVyLWNvbnRlbnQgKm5nSWY9XCJjb250ZW50UG9ydGFsXCI+XG4gICAgICA8bmctdGVtcGxhdGUgW2Nka1BvcnRhbE91dGxldF09XCJjb250ZW50UG9ydGFsXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L21hZC1jb250ZW50LXBhbmVsLWNvbnRhaW5lci1jb250ZW50PlxuICAgIDxtYWQtY29udGVudC1wYW5lbC1jb250YWluZXItZm9vdGVyICpuZ0lmPVwiZm9vdGVyUG9ydGFsXCI+XG4gICAgICA8bmctdGVtcGxhdGUgW2Nka1BvcnRhbE91dGxldF09XCJmb290ZXJQb3J0YWxcIj48L25nLXRlbXBsYXRlPlxuICAgIDwvbWFkLWNvbnRlbnQtcGFuZWwtY29udGFpbmVyLWZvb3Rlcj5cbiAgPC9tYWQtY29udGVudC1wYW5lbC1jb250YWluZXI+XG48L21hZC1tYWluLWNvbnRhaW5lcj5cbiJdfQ==
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci1hY3Rpb24uaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWF0ZXJpYWwtYWRkb25zL3NyYy9saWIvbGF5b3V0L3Rvb2xiYXIvdG9vbGJhci1hY3Rpb24uaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUaGVtZVBhbGV0dGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBBY3Rpb24ge1xuICBtYXRJY29uOiBzdHJpbmc7XG4gIGkxOG5BY3Rpb25LZXk6IHN0cmluZztcbiAgYWN0aW9uTmFtZT86IHN0cmluZztcbiAgc2hvd0lmPzogT2JzZXJ2YWJsZTxib29sZWFuPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNYWluQWN0aW9uIGV4dGVuZHMgQWN0aW9uIHtcbiAgcm91dGVyTGluaz86IHN0cmluZztcbiAgYWN0aW9uPzogKCkgPT4gYW55O1xuICBsaWZ0SGlnaGVyT25Nb2JpbGU/OiBib29sZWFuO1xuICB0b29sdGlwPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJhY2tBY3Rpb24gZXh0ZW5kcyBBY3Rpb24ge1xuICByb3V0ZXJMaW5rPzogc3RyaW5nO1xuICBocmVmPzogc3RyaW5nO1xuICBhY3Rpb24/OiAoKSA9PiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9vbGJhckFjdGlvbkJhZGdlIHtcbiAgdmFsdWU6IGFueTsgLy8gaGlkZGVuIGF1dG9tYXRpY2FsbHkgaWYgbnVsbC91bmRlZlxuICBjb2xvcj86IFRoZW1lUGFsZXR0ZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUb29sYmFyQWN0aW9uIGV4dGVuZHMgQWN0aW9uIHtcbiAgYWN0aW9uOiAoKSA9PiBhbnk7XG4gIGltcG9ydGFudEFjdGlvbj86IGJvb2xlYW47IC8vIGlmIHRydWUsIGl0IHdpbGwgbmV2ZXIgYmUgaGlkZGVuIGluIGEgbWF0LW1lbnVcbiAgYmFkZ2U/OiBUb29sYmFyQWN0aW9uQmFkZ2U7XG59XG4iXX0=
@@ -1,98 +0,0 @@
1
- import { Component } from '@angular/core';
2
- import { of } from 'rxjs';
3
- import { Breakpoints } from '@angular/cdk/layout';
4
- import { map } from 'rxjs/operators';
5
- import { MatMenuModule } from '@angular/material/menu';
6
- import { MatBadgeModule } from '@angular/material/badge';
7
- import { IconButtonComponent } from '../../button/icon-button/icon-button.component';
8
- import { MaterialActionButtonComponent } from '../../material-action-button/material-action-button.component';
9
- import { MatTooltipModule } from '@angular/material/tooltip';
10
- import { PrimaryButtonComponent } from '../../button/primary-button/primary-button.component';
11
- import { MatIconModule } from '@angular/material/icon';
12
- import { MatButtonModule } from '@angular/material/button';
13
- import { RouterLink } from '@angular/router';
14
- import { NgIf, NgFor, AsyncPipe } from '@angular/common';
15
- import { MatToolbarModule } from '@angular/material/toolbar';
16
- import * as i0 from "@angular/core";
17
- import * as i1 from "@angular/cdk/layout";
18
- import * as i2 from "@angular/platform-browser";
19
- import * as i3 from "./toolbar.service";
20
- import * as i4 from "@angular/material/toolbar";
21
- import * as i5 from "@angular/material/button";
22
- import * as i6 from "@angular/material/icon";
23
- import * as i7 from "@angular/material/tooltip";
24
- import * as i8 from "@angular/material/badge";
25
- import * as i9 from "@angular/material/menu";
26
- export class ToolbarComponent {
27
- constructor(breakpointObserver, titleService, toolbarService) {
28
- this.breakpointObserver = breakpointObserver;
29
- this.titleService = titleService;
30
- this.toolbarService = toolbarService;
31
- this.isHandset$ = this.breakpointObserver.observe([Breakpoints.Handset]).pipe(map((result) => result.matches));
32
- }
33
- getTitle() {
34
- const dataTitle = this.toolbarService.getDataTitle();
35
- const toolbarTitle = this.toolbarService.toolbarTitle;
36
- const title = !toolbarTitle || toolbarTitle.length <= 0 ? this.titleService.getTitle() : toolbarTitle;
37
- return !dataTitle || dataTitle.length <= 0 ? title : title + ': ' + dataTitle;
38
- }
39
- getToolbarActions() {
40
- return this.toolbarService.getToolbarActions();
41
- }
42
- getMainActions() {
43
- return this.toolbarService.getMainActions();
44
- }
45
- hasPermission(action) {
46
- if (!action || !action.showIf) {
47
- return of(true);
48
- }
49
- return action.showIf;
50
- }
51
- isRouterLink(action) {
52
- return action && !!action.routerLink;
53
- }
54
- isAbsoluteLink(action) {
55
- return action && !!action.href;
56
- }
57
- isAction(action) {
58
- return action && !!action.action;
59
- }
60
- getBackAction() {
61
- return this.toolbarService.getBackAction();
62
- }
63
- getToolbarActionsAlwaysAsMenu() {
64
- return this.toolbarService.getToolbarActionsAlwaysAsMenu();
65
- }
66
- getToolbarActionsMenuTitle() {
67
- return this.toolbarService.getToolbarActionsMenuTitle();
68
- }
69
- showBadgeForMenu() {
70
- return (this.getToolbarActions()
71
- .slice(1) // the first icon is not shown in menu
72
- .filter((value) => value.badge && value.badge.value).length > 0);
73
- }
74
- hasImportantToolbarActions() {
75
- return this.getToolbarActions().filter((value) => !!value.importantAction).length > 0;
76
- }
77
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ToolbarComponent, deps: [{ token: i1.BreakpointObserver }, { token: i2.Title }, { token: i3.ToolbarService }], target: i0.ɵɵFactoryTarget.Component }); }
78
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: ToolbarComponent, isStandalone: true, selector: "mad-toolbar", ngImport: i0, template: "<mat-toolbar class=\"content-toolbar\">\n <a data-cy=\"back-link-button\" [routerLink]=\"getBackAction().routerLink\" *ngIf=\"isRouterLink(getBackAction())\">\n <button [id]=\"'go-back'\" color=\"primary\" mat-icon-button class=\"go-back-button\">\n <mat-icon>{{ getBackAction().matIcon }}</mat-icon>\n </button>\n </a>\n <a data-cy=\"back-href-button\" [href]=\"getBackAction().href\" *ngIf=\"isAbsoluteLink(getBackAction())\">\n <button [id]=\"'go-back'\" class=\"go-back-button\" color=\"primary\" mat-icon-button>\n <mat-icon>{{ getBackAction().matIcon }}</mat-icon>\n </button>\n </a>\n <a data-cy=\"back-action-button\" (click)=\"getBackAction().action()\" *ngIf=\"isAction(getBackAction())\">\n <button [id]=\"'go-back'\" color=\"primary\" mat-icon-button class=\"go-back-button\">\n <mat-icon>{{ getBackAction().matIcon }}</mat-icon>\n </button>\n </a>\n\n <span class=\"toolbar-title\">{{ getTitle() }}</span>\n\n <ng-container *ngFor=\"let mainAction of getMainActions(); let i = index\">\n <ng-container *ngIf=\"hasPermission(mainAction) | async\">\n <div *ngIf=\"!(isHandset$ | async)\">\n <a data-cy=\"main-action-link-button\" [routerLink]=\"mainAction.routerLink\" *ngIf=\"isRouterLink(mainAction)\">\n <mad-primary-button [id]=\"mainAction.matIcon\" style=\"margin-left: 56px\" [matTooltip]=\"mainAction.tooltip\">\n <div class=\"action-button-content-container\">\n <mat-icon>{{ mainAction.matIcon }}</mat-icon>\n {{ mainAction.actionName }}\n </div>\n </mad-primary-button>\n </a>\n <a data-cy=\"main-action-button\" (click)=\"mainAction.action()\" *ngIf=\"isAction(mainAction)\">\n <mad-primary-button [id]=\"mainAction.matIcon\" style=\"margin-left: 56px\" [matTooltip]=\"mainAction.tooltip\">\n <div class=\"action-button-content-container\">\n <mat-icon>{{ mainAction.matIcon }}</mat-icon>\n {{ mainAction.actionName }}\n </div>\n </mad-primary-button>\n </a>\n </div>\n <div *ngIf=\"isHandset$ | async\">\n <mad-material-action-button\n data-cy=\"material-main-link-button\"\n *ngIf=\"isRouterLink(getBackAction())\"\n [actionName]=\"mainAction.actionName\"\n [icon]=\"mainAction.matIcon\"\n [liftHigher]=\"mainAction.liftHigherOnMobile\"\n [liftHigher2]=\"i > 0\"\n [routerLink]=\"mainAction.routerLink\"\n [id]=\"mainAction.matIcon\"\n />\n <mad-material-action-button\n data-cy=\"material-main-action-button\"\n *ngIf=\"isAction(getBackAction())\"\n [actionName]=\"mainAction.actionName\"\n [icon]=\"mainAction.matIcon\"\n [liftHigher]=\"mainAction.liftHigherOnMobile\"\n [liftHigher2]=\"i > 0\"\n (click)=\"mainAction.action()\"\n [id]=\"mainAction.matIcon\"\n />\n </div>\n </ng-container>\n </ng-container>\n\n <div class=\"right-aligned no-print\">\n <ng-container *ngFor=\"let action of getToolbarActions(); let i = index\">\n <ng-container *ngIf=\"hasPermission(action) | async\">\n <mad-icon-button\n data-cy=\"action-icon-button\"\n (click)=\"action.action()\"\n *ngIf=\"\n (!(isHandset$ | async) && !getToolbarActionsAlwaysAsMenu()) ||\n i < (getToolbarActions().length > 2 ? (hasImportantToolbarActions() ? 0 : 1) : 2) ||\n !!action.importantAction\n \"\n [id]=\"action.matIcon\"\n [matTooltip]=\"action.actionName\"\n type=\"button\"\n >\n <mat-icon\n [matBadgeColor]=\"action.badge ? action.badge.color : 'primary'\"\n matBadgePosition=\"below after\"\n [matBadge]=\"action.badge ? action.badge.value : null\"\n >{{ action.matIcon }}</mat-icon\n >\n </mad-icon-button>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"(isHandset$ | async) || getToolbarActionsAlwaysAsMenu()\">\n <ng-container *ngIf=\"getToolbarActions().length > 2\">\n <mad-icon-button data-cy=\"burger-button\" type=\"button\" [matMenuTriggerFor]=\"burgerMenu\" [matTooltip]=\"getToolbarActionsMenuTitle()\">\n <mat-icon\n matBadgeColor=\"warn\"\n [matBadge]=\"showBadgeForMenu() ? '&#8288;' : null\"\n matBadgeSize=\"small\"\n matBadgePosition=\"above after\"\n >more_vert\n </mat-icon>\n </mad-icon-button>\n <mat-menu #burgerMenu=\"matMenu\" class=\"no-print toolbar-menu\">\n <ng-container *ngFor=\"let action of getToolbarActions(); let i = index\">\n <ng-container *ngIf=\"!action.importantAction\">\n <ng-container *ngIf=\"hasPermission(action) | async\">\n <button\n data-cy=\"burger-menu-button\"\n *ngIf=\"i >= (hasImportantToolbarActions() ? 0 : 1)\"\n mat-menu-item\n (click)=\"action.action()\"\n [title]=\"action.actionName\"\n >\n <mat-icon\n color=\"primary\"\n [matBadgeColor]=\"action.badge ? action.badge.color : 'primary'\"\n [matBadge]=\"action.badge ? action.badge.value : null\"\n matBadgePosition=\"below after\"\n >{{ action.matIcon }}</mat-icon\n >\n {{ action.actionName }}\n </button>\n </ng-container>\n </ng-container>\n </ng-container>\n </mat-menu>\n </ng-container>\n </ng-container>\n </div>\n</mat-toolbar>\n", styles: ["mat-toolbar{background:#fff}.content-toolbar{height:57px;border-bottom:1px solid #dcdcdc}.right-aligned{overflow:hidden;margin-left:auto;margin-right:0}.go-back-button{padding-left:0;padding-right:0}.toolbar-title{margin-right:72px}::ng-deep .mat-badge-content{bottom:-7px!important;right:-7px!important}.action-button-content-container{display:flex;align-items:center;gap:5px}\n"], dependencies: [{ kind: "ngmodule", type: MatToolbarModule }, { kind: "component", type: i4.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: PrimaryButtonComponent, selector: "mad-primary-button", inputs: ["type", "disabled", "title"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i7.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: MaterialActionButtonComponent, selector: "mad-material-action-button", inputs: ["actionName", "id", "icon", "routerLink", "liftHigher", "liftHigher2"] }, { kind: "component", type: IconButtonComponent, selector: "mad-icon-button", inputs: ["type", "disabled", "title"] }, { kind: "ngmodule", type: MatBadgeModule }, { kind: "directive", type: i8.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i9.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i9.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i9.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
79
- }
80
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ToolbarComponent, decorators: [{
81
- type: Component,
82
- args: [{ selector: 'mad-toolbar', standalone: true, imports: [
83
- MatToolbarModule,
84
- NgIf,
85
- RouterLink,
86
- MatButtonModule,
87
- MatIconModule,
88
- NgFor,
89
- PrimaryButtonComponent,
90
- MatTooltipModule,
91
- MaterialActionButtonComponent,
92
- IconButtonComponent,
93
- MatBadgeModule,
94
- MatMenuModule,
95
- AsyncPipe,
96
- ], template: "<mat-toolbar class=\"content-toolbar\">\n <a data-cy=\"back-link-button\" [routerLink]=\"getBackAction().routerLink\" *ngIf=\"isRouterLink(getBackAction())\">\n <button [id]=\"'go-back'\" color=\"primary\" mat-icon-button class=\"go-back-button\">\n <mat-icon>{{ getBackAction().matIcon }}</mat-icon>\n </button>\n </a>\n <a data-cy=\"back-href-button\" [href]=\"getBackAction().href\" *ngIf=\"isAbsoluteLink(getBackAction())\">\n <button [id]=\"'go-back'\" class=\"go-back-button\" color=\"primary\" mat-icon-button>\n <mat-icon>{{ getBackAction().matIcon }}</mat-icon>\n </button>\n </a>\n <a data-cy=\"back-action-button\" (click)=\"getBackAction().action()\" *ngIf=\"isAction(getBackAction())\">\n <button [id]=\"'go-back'\" color=\"primary\" mat-icon-button class=\"go-back-button\">\n <mat-icon>{{ getBackAction().matIcon }}</mat-icon>\n </button>\n </a>\n\n <span class=\"toolbar-title\">{{ getTitle() }}</span>\n\n <ng-container *ngFor=\"let mainAction of getMainActions(); let i = index\">\n <ng-container *ngIf=\"hasPermission(mainAction) | async\">\n <div *ngIf=\"!(isHandset$ | async)\">\n <a data-cy=\"main-action-link-button\" [routerLink]=\"mainAction.routerLink\" *ngIf=\"isRouterLink(mainAction)\">\n <mad-primary-button [id]=\"mainAction.matIcon\" style=\"margin-left: 56px\" [matTooltip]=\"mainAction.tooltip\">\n <div class=\"action-button-content-container\">\n <mat-icon>{{ mainAction.matIcon }}</mat-icon>\n {{ mainAction.actionName }}\n </div>\n </mad-primary-button>\n </a>\n <a data-cy=\"main-action-button\" (click)=\"mainAction.action()\" *ngIf=\"isAction(mainAction)\">\n <mad-primary-button [id]=\"mainAction.matIcon\" style=\"margin-left: 56px\" [matTooltip]=\"mainAction.tooltip\">\n <div class=\"action-button-content-container\">\n <mat-icon>{{ mainAction.matIcon }}</mat-icon>\n {{ mainAction.actionName }}\n </div>\n </mad-primary-button>\n </a>\n </div>\n <div *ngIf=\"isHandset$ | async\">\n <mad-material-action-button\n data-cy=\"material-main-link-button\"\n *ngIf=\"isRouterLink(getBackAction())\"\n [actionName]=\"mainAction.actionName\"\n [icon]=\"mainAction.matIcon\"\n [liftHigher]=\"mainAction.liftHigherOnMobile\"\n [liftHigher2]=\"i > 0\"\n [routerLink]=\"mainAction.routerLink\"\n [id]=\"mainAction.matIcon\"\n />\n <mad-material-action-button\n data-cy=\"material-main-action-button\"\n *ngIf=\"isAction(getBackAction())\"\n [actionName]=\"mainAction.actionName\"\n [icon]=\"mainAction.matIcon\"\n [liftHigher]=\"mainAction.liftHigherOnMobile\"\n [liftHigher2]=\"i > 0\"\n (click)=\"mainAction.action()\"\n [id]=\"mainAction.matIcon\"\n />\n </div>\n </ng-container>\n </ng-container>\n\n <div class=\"right-aligned no-print\">\n <ng-container *ngFor=\"let action of getToolbarActions(); let i = index\">\n <ng-container *ngIf=\"hasPermission(action) | async\">\n <mad-icon-button\n data-cy=\"action-icon-button\"\n (click)=\"action.action()\"\n *ngIf=\"\n (!(isHandset$ | async) && !getToolbarActionsAlwaysAsMenu()) ||\n i < (getToolbarActions().length > 2 ? (hasImportantToolbarActions() ? 0 : 1) : 2) ||\n !!action.importantAction\n \"\n [id]=\"action.matIcon\"\n [matTooltip]=\"action.actionName\"\n type=\"button\"\n >\n <mat-icon\n [matBadgeColor]=\"action.badge ? action.badge.color : 'primary'\"\n matBadgePosition=\"below after\"\n [matBadge]=\"action.badge ? action.badge.value : null\"\n >{{ action.matIcon }}</mat-icon\n >\n </mad-icon-button>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"(isHandset$ | async) || getToolbarActionsAlwaysAsMenu()\">\n <ng-container *ngIf=\"getToolbarActions().length > 2\">\n <mad-icon-button data-cy=\"burger-button\" type=\"button\" [matMenuTriggerFor]=\"burgerMenu\" [matTooltip]=\"getToolbarActionsMenuTitle()\">\n <mat-icon\n matBadgeColor=\"warn\"\n [matBadge]=\"showBadgeForMenu() ? '&#8288;' : null\"\n matBadgeSize=\"small\"\n matBadgePosition=\"above after\"\n >more_vert\n </mat-icon>\n </mad-icon-button>\n <mat-menu #burgerMenu=\"matMenu\" class=\"no-print toolbar-menu\">\n <ng-container *ngFor=\"let action of getToolbarActions(); let i = index\">\n <ng-container *ngIf=\"!action.importantAction\">\n <ng-container *ngIf=\"hasPermission(action) | async\">\n <button\n data-cy=\"burger-menu-button\"\n *ngIf=\"i >= (hasImportantToolbarActions() ? 0 : 1)\"\n mat-menu-item\n (click)=\"action.action()\"\n [title]=\"action.actionName\"\n >\n <mat-icon\n color=\"primary\"\n [matBadgeColor]=\"action.badge ? action.badge.color : 'primary'\"\n [matBadge]=\"action.badge ? action.badge.value : null\"\n matBadgePosition=\"below after\"\n >{{ action.matIcon }}</mat-icon\n >\n {{ action.actionName }}\n </button>\n </ng-container>\n </ng-container>\n </ng-container>\n </mat-menu>\n </ng-container>\n </ng-container>\n </div>\n</mat-toolbar>\n", styles: ["mat-toolbar{background:#fff}.content-toolbar{height:57px;border-bottom:1px solid #dcdcdc}.right-aligned{overflow:hidden;margin-left:auto;margin-right:0}.go-back-button{padding-left:0;padding-right:0}.toolbar-title{margin-right:72px}::ng-deep .mat-badge-content{bottom:-7px!important;right:-7px!important}.action-button-content-container{display:flex;align-items:center;gap:5px}\n"] }]
97
- }], ctorParameters: () => [{ type: i1.BreakpointObserver }, { type: i2.Title }, { type: i3.ToolbarService }] });
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXRlcmlhbC1hZGRvbnMvc3JjL2xpYi9sYXlvdXQvdG9vbGJhci90b29sYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hdGVyaWFsLWFkZG9ucy9zcmMvbGliL2xheW91dC90b29sYmFyL3Rvb2xiYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcxQyxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBc0IsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDckYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sK0RBQStELENBQUM7QUFDOUcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDOUYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7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QUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUN4RixDQUFDOzhHQWpFVSxnQkFBZ0I7a0dBQWhCLGdCQUFnQix1RUN4QzdCLDZyTEFnSUEsb2JEdkdJLGdCQUFnQixpSkFDaEIsSUFBSSw2RkFDSixVQUFVLG1PQUNWLGVBQWUsMklBQ2YsYUFBYSxvTEFDYixLQUFLLG1IQUNMLHNCQUFzQixxR0FDdEIsZ0JBQWdCLDZUQUNoQiw2QkFBNkIsd0pBQzdCLG1CQUFtQixrR0FDbkIsY0FBYywyUEFDZCxhQUFhLHl2QkFDYixTQUFTOzsyRkFHQSxnQkFBZ0I7a0JBckI1QixTQUFTOytCQUNFLGFBQWEsY0FHWCxJQUFJLFdBQ1A7d0JBQ1AsZ0JBQWdCO3dCQUNoQixJQUFJO3dCQUNKLFVBQVU7d0JBQ1YsZUFBZTt3QkFDZixhQUFhO3dCQUNiLEtBQUs7d0JBQ0wsc0JBQXNCO3dCQUN0QixnQkFBZ0I7d0JBQ2hCLDZCQUE2Qjt3QkFDN0IsbUJBQW1CO3dCQUNuQixjQUFjO3dCQUNkLGFBQWE7d0JBQ2IsU0FBUztxQkFDViIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGl0bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IFRvb2xiYXJTZXJ2aWNlIH0gZnJvbSAnLi90b29sYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEJyZWFrcG9pbnRPYnNlcnZlciwgQnJlYWtwb2ludHMgfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFjdGlvbiwgQmFja0FjdGlvbiwgTWFpbkFjdGlvbiwgVG9vbGJhckFjdGlvbiB9IGZyb20gJy4vdG9vbGJhci1hY3Rpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcbmltcG9ydCB7IE1hdEJhZGdlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYmFkZ2UnO1xuaW1wb3J0IHsgSWNvbkJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2J1dHRvbi9pY29uLWJ1dHRvbi9pY29uLWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0ZXJpYWxBY3Rpb25CdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9tYXRlcmlhbC1hY3Rpb24tYnV0dG9uL21hdGVyaWFsLWFjdGlvbi1idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IFByaW1hcnlCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9idXR0b24vcHJpbWFyeS1idXR0b24vcHJpbWFyeS1idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBSb3V0ZXJMaW5rIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE5nSWYsIE5nRm9yLCBBc3luY1BpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0VG9vbGJhck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2xiYXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYWQtdG9vbGJhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi90b29sYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdG9vbGJhci5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTWF0VG9vbGJhck1vZHVsZSxcbiAgICBOZ0lmLFxuICAgIFJvdXRlckxpbmssXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTmdGb3IsXG4gICAgUHJpbWFyeUJ1dHRvbkNvbXBvbmVudCxcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxuICAgIE1hdGVyaWFsQWN0aW9uQnV0dG9uQ29tcG9uZW50LFxuICAgIEljb25CdXR0b25Db21wb25lbnQsXG4gICAgTWF0QmFkZ2VNb2R1bGUsXG4gICAgTWF0TWVudU1vZHVsZSxcbiAgICBBc3luY1BpcGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFRvb2xiYXJDb21wb25lbnQge1xuICBpc0hhbmRzZXQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5icmVha3BvaW50T2JzZXJ2ZXIub2JzZXJ2ZShbQnJlYWtwb2ludHMuSGFuZHNldF0pLnBpcGUobWFwKChyZXN1bHQpID0+IHJlc3VsdC5tYXRjaGVzKSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBicmVha3BvaW50T2JzZXJ2ZXI6IEJyZWFrcG9pbnRPYnNlcnZlcixcbiAgICBwcml2YXRlIHRpdGxlU2VydmljZTogVGl0bGUsXG4gICAgcHJpdmF0ZSB0b29sYmFyU2VydmljZTogVG9vbGJhclNlcnZpY2UsXG4gICkge31cblxuICBnZXRUaXRsZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGRhdGFUaXRsZSA9IHRoaXMudG9vbGJhclNlcnZpY2UuZ2V0RGF0YVRpdGxlKCk7XG4gICAgY29uc3QgdG9vbGJhclRpdGxlID0gdGhpcy50b29sYmFyU2VydmljZS50b29sYmFyVGl0bGU7XG4gICAgY29uc3QgdGl0bGUgPSAhdG9vbGJhclRpdGxlIHx8IHRvb2xiYXJUaXRsZS5sZW5ndGggPD0gMCA/IHRoaXMudGl0bGVTZXJ2aWNlLmdldFRpdGxlKCkgOiB0b29sYmFyVGl0bGU7XG4gICAgcmV0dXJuICFkYXRhVGl0bGUgfHwgZGF0YVRpdGxlLmxlbmd0aCA8PSAwID8gdGl0bGUgOiB0aXRsZSArICc6ICcgKyBkYXRhVGl0bGU7XG4gIH1cblxuICBnZXRUb29sYmFyQWN0aW9ucygpOiBUb29sYmFyQWN0aW9uW10ge1xuICAgIHJldHVybiB0aGlzLnRvb2xiYXJTZXJ2aWNlLmdldFRvb2xiYXJBY3Rpb25zKCk7XG4gIH1cblxuICBnZXRNYWluQWN0aW9ucygpOiBNYWluQWN0aW9uW10ge1xuICAgIHJldHVybiB0aGlzLnRvb2xiYXJTZXJ2aWNlLmdldE1haW5BY3Rpb25zKCk7XG4gIH1cblxuICBoYXNQZXJtaXNzaW9uKGFjdGlvbjogQWN0aW9uKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgaWYgKCFhY3Rpb24gfHwgIWFjdGlvbi5zaG93SWYpIHtcbiAgICAgIHJldHVybiBvZih0cnVlKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjdGlvbi5zaG93SWY7XG4gIH1cblxuICBpc1JvdXRlckxpbmsoYWN0aW9uOiBCYWNrQWN0aW9uIHwgTWFpbkFjdGlvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBhY3Rpb24gJiYgISFhY3Rpb24ucm91dGVyTGluaztcbiAgfVxuXG4gIGlzQWJzb2x1dGVMaW5rKGFjdGlvbjogQmFja0FjdGlvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBhY3Rpb24gJiYgISFhY3Rpb24uaHJlZjtcbiAgfVxuXG4gIGlzQWN0aW9uKGFjdGlvbjogQmFja0FjdGlvbiB8IE1haW5BY3Rpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gYWN0aW9uICYmICEhYWN0aW9uLmFjdGlvbjtcbiAgfVxuXG4gIGdldEJhY2tBY3Rpb24oKTogQmFja0FjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMudG9vbGJhclNlcnZpY2UuZ2V0QmFja0FjdGlvbigpO1xuICB9XG5cbiAgZ2V0VG9vbGJhckFjdGlvbnNBbHdheXNBc01lbnUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudG9vbGJhclNlcnZpY2UuZ2V0VG9vbGJhckFjdGlvbnNBbHdheXNBc01lbnUoKTtcbiAgfVxuXG4gIGdldFRvb2xiYXJBY3Rpb25zTWVudVRpdGxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudG9vbGJhclNlcnZpY2UuZ2V0VG9vbGJhckFjdGlvbnNNZW51VGl0bGUoKTtcbiAgfVxuXG4gIHNob3dCYWRnZUZvck1lbnUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuZ2V0VG9vbGJhckFjdGlvbnMoKVxuICAgICAgICAuc2xpY2UoMSkgLy8gdGhlIGZpcnN0IGljb24gaXMgbm90IHNob3duIGluIG1lbnVcbiAgICAgICAgLmZpbHRlcigodmFsdWUpID0+IHZhbHVlLmJhZGdlICYmIHZhbHVlLmJhZGdlLnZhbHVlKS5sZW5ndGggPiAwXG4gICAgKTtcbiAgfVxuXG4gIGhhc0ltcG9ydGFudFRvb2xiYXJBY3Rpb25zKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmdldFRvb2xiYXJBY3Rpb25zKCkuZmlsdGVyKCh2YWx1ZSkgPT4gISF2YWx1ZS5pbXBvcnRhbnRBY3Rpb24pLmxlbmd0aCA+IDA7XG4gIH1cbn1cbiIsIjxtYXQtdG9vbGJhciBjbGFzcz1cImNvbnRlbnQtdG9vbGJhclwiPlxuICA8YSBkYXRhLWN5PVwiYmFjay1saW5rLWJ1dHRvblwiIFtyb3V0ZXJMaW5rXT1cImdldEJhY2tBY3Rpb24oKS5yb3V0ZXJMaW5rXCIgKm5nSWY9XCJpc1JvdXRlckxpbmsoZ2V0QmFja0FjdGlvbigpKVwiPlxuICAgIDxidXR0b24gW2lkXT1cIidnby1iYWNrJ1wiIGNvbG9yPVwicHJpbWFyeVwiIG1hdC1pY29uLWJ1dHRvbiBjbGFzcz1cImdvLWJhY2stYnV0dG9uXCI+XG4gICAgICA8bWF0LWljb24+e3sgZ2V0QmFja0FjdGlvbigpLm1hdEljb24gfX08L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICA8L2E+XG4gIDxhIGRhdGEtY3k9XCJiYWNrLWhyZWYtYnV0dG9uXCIgW2hyZWZdPVwiZ2V0QmFja0FjdGlvbigpLmhyZWZcIiAqbmdJZj1cImlzQWJzb2x1dGVMaW5rKGdldEJhY2tBY3Rpb24oKSlcIj5cbiAgICA8YnV0dG9uIFtpZF09XCInZ28tYmFjaydcIiBjbGFzcz1cImdvLWJhY2stYnV0dG9uXCIgY29sb3I9XCJwcmltYXJ5XCIgbWF0LWljb24tYnV0dG9uPlxuICAgICAgPG1hdC1pY29uPnt7IGdldEJhY2tBY3Rpb24oKS5tYXRJY29uIH19PC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9hPlxuICA8YSBkYXRhLWN5PVwiYmFjay1hY3Rpb24tYnV0dG9uXCIgKGNsaWNrKT1cImdldEJhY2tBY3Rpb24oKS5hY3Rpb24oKVwiICpuZ0lmPVwiaXNBY3Rpb24oZ2V0QmFja0FjdGlvbigpKVwiPlxuICAgIDxidXR0b24gW2lkXT1cIidnby1iYWNrJ1wiIGNvbG9yPVwicHJpbWFyeVwiIG1hdC1pY29uLWJ1dHRvbiBjbGFzcz1cImdvLWJhY2stYnV0dG9uXCI+XG4gICAgICA8bWF0LWljb24+e3sgZ2V0QmFja0FjdGlvbigpLm1hdEljb24gfX08L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICA8L2E+XG5cbiAgPHNwYW4gY2xhc3M9XCJ0b29sYmFyLXRpdGxlXCI+e3sgZ2V0VGl0bGUoKSB9fTwvc3Bhbj5cblxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBtYWluQWN0aW9uIG9mIGdldE1haW5BY3Rpb25zKCk7IGxldCBpID0gaW5kZXhcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGFzUGVybWlzc2lvbihtYWluQWN0aW9uKSB8IGFzeW5jXCI+XG4gICAgICA8ZGl2ICpuZ0lmPVwiIShpc0hhbmRzZXQkIHwgYXN5bmMpXCI+XG4gICAgICAgIDxhIGRhdGEtY3k9XCJtYWluLWFjdGlvbi1saW5rLWJ1dHRvblwiIFtyb3V0ZXJMaW5rXT1cIm1haW5BY3Rpb24ucm91dGVyTGlua1wiICpuZ0lmPVwiaXNSb3V0ZXJMaW5rKG1haW5BY3Rpb24pXCI+XG4gICAgICAgICAgPG1hZC1wcmltYXJ5LWJ1dHRvbiBbaWRdPVwibWFpbkFjdGlvbi5tYXRJY29uXCIgc3R5bGU9XCJtYXJnaW4tbGVmdDogNTZweFwiIFttYXRUb29sdGlwXT1cIm1haW5BY3Rpb24udG9vbHRpcFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbi1idXR0b24tY29udGVudC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgPG1hdC1pY29uPnt7IG1haW5BY3Rpb24ubWF0SWNvbiB9fTwvbWF0LWljb24+XG4gICAgICAgICAgICAgIHt7IG1haW5BY3Rpb24uYWN0aW9uTmFtZSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9tYWQtcHJpbWFyeS1idXR0b24+XG4gICAgICAgIDwvYT5cbiAgICAgICAgPGEgZGF0YS1jeT1cIm1haW4tYWN0aW9uLWJ1dHRvblwiIChjbGljayk9XCJtYWluQWN0aW9uLmFjdGlvbigpXCIgKm5nSWY9XCJpc0FjdGlvbihtYWluQWN0aW9uKVwiPlxuICAgICAgICAgIDxtYWQtcHJpbWFyeS1idXR0b24gW2lkXT1cIm1haW5BY3Rpb24ubWF0SWNvblwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDU2cHhcIiBbbWF0VG9vbHRpcF09XCJtYWluQWN0aW9uLnRvb2x0aXBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24tYnV0dG9uLWNvbnRlbnQtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgIDxtYXQtaWNvbj57eyBtYWluQWN0aW9uLm1hdEljb24gfX08L21hdC1pY29uPlxuICAgICAgICAgICAgICB7eyBtYWluQWN0aW9uLmFjdGlvbk5hbWUgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbWFkLXByaW1hcnktYnV0dG9uPlxuICAgICAgICA8L2E+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJpc0hhbmRzZXQkIHwgYXN5bmNcIj5cbiAgICAgICAgPG1hZC1tYXRlcmlhbC1hY3Rpb24tYnV0dG9uXG4gICAgICAgICAgZGF0YS1jeT1cIm1hdGVyaWFsLW1haW4tbGluay1idXR0b25cIlxuICAgICAgICAgICpuZ0lmPVwiaXNSb3V0ZXJMaW5rKGdldEJhY2tBY3Rpb24oKSlcIlxuICAgICAgICAgIFthY3Rpb25OYW1lXT1cIm1haW5BY3Rpb24uYWN0aW9uTmFtZVwiXG4gICAgICAgICAgW2ljb25dPVwibWFpbkFjdGlvbi5tYXRJY29uXCJcbiAgICAgICAgICBbbGlmdEhpZ2hlcl09XCJtYWluQWN0aW9uLmxpZnRIaWdoZXJPbk1vYmlsZVwiXG4gICAgICAgICAgW2xpZnRIaWdoZXIyXT1cImkgPiAwXCJcbiAgICAgICAgICBbcm91dGVyTGlua109XCJtYWluQWN0aW9uLnJvdXRlckxpbmtcIlxuICAgICAgICAgIFtpZF09XCJtYWluQWN0aW9uLm1hdEljb25cIlxuICAgICAgICAvPlxuICAgICAgICA8bWFkLW1hdGVyaWFsLWFjdGlvbi1idXR0b25cbiAgICAgICAgICBkYXRhLWN5PVwibWF0ZXJpYWwtbWFpbi1hY3Rpb24tYnV0dG9uXCJcbiAgICAgICAgICAqbmdJZj1cImlzQWN0aW9uKGdldEJhY2tBY3Rpb24oKSlcIlxuICAgICAgICAgIFthY3Rpb25OYW1lXT1cIm1haW5BY3Rpb24uYWN0aW9uTmFtZVwiXG4gICAgICAgICAgW2ljb25dPVwibWFpbkFjdGlvbi5tYXRJY29uXCJcbiAgICAgICAgICBbbGlmdEhpZ2hlcl09XCJtYWluQWN0aW9uLmxpZnRIaWdoZXJPbk1vYmlsZVwiXG4gICAgICAgICAgW2xpZnRIaWdoZXIyXT1cImkgPiAwXCJcbiAgICAgICAgICAoY2xpY2spPVwibWFpbkFjdGlvbi5hY3Rpb24oKVwiXG4gICAgICAgICAgW2lkXT1cIm1haW5BY3Rpb24ubWF0SWNvblwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPGRpdiBjbGFzcz1cInJpZ2h0LWFsaWduZWQgbm8tcHJpbnRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgZ2V0VG9vbGJhckFjdGlvbnMoKTsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc1Blcm1pc3Npb24oYWN0aW9uKSB8IGFzeW5jXCI+XG4gICAgICAgIDxtYWQtaWNvbi1idXR0b25cbiAgICAgICAgICBkYXRhLWN5PVwiYWN0aW9uLWljb24tYnV0dG9uXCJcbiAgICAgICAgICAoY2xpY2spPVwiYWN0aW9uLmFjdGlvbigpXCJcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgKCEoaXNIYW5kc2V0JCB8IGFzeW5jKSAmJiAhZ2V0VG9vbGJhckFjdGlvbnNBbHdheXNBc01lbnUoKSkgfHxcbiAgICAgICAgICAgIGkgPCAoZ2V0VG9vbGJhckFjdGlvbnMoKS5sZW5ndGggPiAyID8gKGhhc0ltcG9ydGFudFRvb2xiYXJBY3Rpb25zKCkgPyAwIDogMSkgOiAyKSB8fFxuICAgICAgICAgICAgISFhY3Rpb24uaW1wb3J0YW50QWN0aW9uXG4gICAgICAgICAgXCJcbiAgICAgICAgICBbaWRdPVwiYWN0aW9uLm1hdEljb25cIlxuICAgICAgICAgIFttYXRUb29sdGlwXT1cImFjdGlvbi5hY3Rpb25OYW1lXCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgW21hdEJhZGdlQ29sb3JdPVwiYWN0aW9uLmJhZGdlID8gYWN0aW9uLmJhZGdlLmNvbG9yIDogJ3ByaW1hcnknXCJcbiAgICAgICAgICAgIG1hdEJhZGdlUG9zaXRpb249XCJiZWxvdyBhZnRlclwiXG4gICAgICAgICAgICBbbWF0QmFkZ2VdPVwiYWN0aW9uLmJhZGdlID8gYWN0aW9uLmJhZGdlLnZhbHVlIDogbnVsbFwiXG4gICAgICAgICAgICA+e3sgYWN0aW9uLm1hdEljb24gfX08L21hdC1pY29uXG4gICAgICAgICAgPlxuICAgICAgICA8L21hZC1pY29uLWJ1dHRvbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihpc0hhbmRzZXQkIHwgYXN5bmMpIHx8IGdldFRvb2xiYXJBY3Rpb25zQWx3YXlzQXNNZW51KClcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJnZXRUb29sYmFyQWN0aW9ucygpLmxlbmd0aCA+IDJcIj5cbiAgICAgICAgPG1hZC1pY29uLWJ1dHRvbiBkYXRhLWN5PVwiYnVyZ2VyLWJ1dHRvblwiIHR5cGU9XCJidXR0b25cIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwiYnVyZ2VyTWVudVwiIFttYXRUb29sdGlwXT1cImdldFRvb2xiYXJBY3Rpb25zTWVudVRpdGxlKClcIj5cbiAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgIG1hdEJhZGdlQ29sb3I9XCJ3YXJuXCJcbiAgICAgICAgICAgIFttYXRCYWRnZV09XCJzaG93QmFkZ2VGb3JNZW51KCkgPyAnJiM4Mjg4OycgOiBudWxsXCJcbiAgICAgICAgICAgIG1hdEJhZGdlU2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgIG1hdEJhZGdlUG9zaXRpb249XCJhYm92ZSBhZnRlclwiXG4gICAgICAgICAgICA+bW9yZV92ZXJ0XG4gICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgPC9tYWQtaWNvbi1idXR0b24+XG4gICAgICAgIDxtYXQtbWVudSAjYnVyZ2VyTWVudT1cIm1hdE1lbnVcIiBjbGFzcz1cIm5vLXByaW50IHRvb2xiYXItbWVudVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBnZXRUb29sYmFyQWN0aW9ucygpOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWFjdGlvbi5pbXBvcnRhbnRBY3Rpb25cIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc1Blcm1pc3Npb24oYWN0aW9uKSB8IGFzeW5jXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgZGF0YS1jeT1cImJ1cmdlci1tZW51LWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImkgPj0gKGhhc0ltcG9ydGFudFRvb2xiYXJBY3Rpb25zKCkgPyAwIDogMSlcIlxuICAgICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGlvbi5hY3Rpb24oKVwiXG4gICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiYWN0aW9uLmFjdGlvbk5hbWVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VDb2xvcl09XCJhY3Rpb24uYmFkZ2UgPyBhY3Rpb24uYmFkZ2UuY29sb3IgOiAncHJpbWFyeSdcIlxuICAgICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VdPVwiYWN0aW9uLmJhZGdlID8gYWN0aW9uLmJhZGdlLnZhbHVlIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgIG1hdEJhZGdlUG9zaXRpb249XCJiZWxvdyBhZnRlclwiXG4gICAgICAgICAgICAgICAgICAgID57eyBhY3Rpb24ubWF0SWNvbiB9fTwvbWF0LWljb25cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt7IGFjdGlvbi5hY3Rpb25OYW1lIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbWF0LW1lbnU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L21hdC10b29sYmFyPlxuIl19