@valtimo/logging 12.4.0 → 12.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/esm2022/lib/components/log-details/log-details.component.mjs +47 -0
  2. package/esm2022/lib/components/log-search/log-search.component.mjs +190 -0
  3. package/esm2022/lib/components/logging-list/logging-list.component.mjs +169 -5
  4. package/esm2022/lib/models/index.mjs +18 -0
  5. package/esm2022/lib/models/logging.model.mjs +33 -0
  6. package/esm2022/lib/models/search.model.mjs +2 -0
  7. package/esm2022/lib/services/index.mjs +17 -0
  8. package/esm2022/lib/services/logging-api.service.mjs +46 -0
  9. package/fesm2022/valtimo-logging.mjs +490 -11
  10. package/fesm2022/valtimo-logging.mjs.map +1 -1
  11. package/lib/components/log-details/log-details.component.d.ts +12 -0
  12. package/lib/components/log-details/log-details.component.d.ts.map +1 -0
  13. package/lib/components/log-search/log-search.component.d.ts +46 -0
  14. package/lib/components/log-search/log-search.component.d.ts.map +1 -0
  15. package/lib/components/logging-list/logging-list.component.d.ts +36 -1
  16. package/lib/components/logging-list/logging-list.component.d.ts.map +1 -1
  17. package/lib/models/index.d.ts +3 -0
  18. package/lib/models/index.d.ts.map +1 -0
  19. package/lib/models/logging.model.d.ts +37 -0
  20. package/lib/models/logging.model.d.ts.map +1 -0
  21. package/lib/models/search.model.d.ts +18 -0
  22. package/lib/models/search.model.d.ts.map +1 -0
  23. package/lib/services/index.d.ts +2 -0
  24. package/lib/services/index.d.ts.map +1 -0
  25. package/lib/services/logging-api.service.d.ts +14 -0
  26. package/lib/services/logging-api.service.d.ts.map +1 -0
  27. package/package.json +3 -2
@@ -0,0 +1,47 @@
1
+ /*
2
+ * Copyright 2015-2024 Ritense BV, the Netherlands.
3
+ *
4
+ * Licensed under EUPL, Version 1.2 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" basis,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { CommonModule } from '@angular/common';
17
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
18
+ import { TranslateModule } from '@ngx-translate/core';
19
+ import { ModalModule } from 'carbon-components-angular';
20
+ import { NgxJsonViewerModule } from 'ngx-json-viewer';
21
+ import * as i0 from "@angular/core";
22
+ import * as i1 from "@angular/common";
23
+ import * as i2 from "@ngx-translate/core";
24
+ import * as i3 from "carbon-components-angular";
25
+ import * as i4 from "ngx-json-viewer";
26
+ export class LogDetailsComponent {
27
+ constructor() {
28
+ this.open = false;
29
+ this.closeModalEvent = new EventEmitter();
30
+ }
31
+ onCloseSelect() {
32
+ this.closeModalEvent.emit();
33
+ }
34
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LogDetailsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
35
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: LogDetailsComponent, isStandalone: true, selector: "valtimo-log-details", inputs: { open: "open", logEvent: "logEvent" }, outputs: { closeModalEvent: "closeModalEvent" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal [open]=\"open\" size=\"lg\">\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCloseSelect()\">\n {{ 'logging.detailsTitle' | translate }}\n </cds-modal-header>\n\n <section cdsModalContent class=\"valtimo-log-details__content\">\n <ngx-json-viewer *ngIf=\"logEvent\" [json]=\"logEvent\"></ngx-json-viewer>\n </section>\n</cds-modal>\n", styles: [".valtimo-log-details__content{padding:32px}.valtimo-log-details__content ::ng-deep .ngx-json-viewer{overflow:auto!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ModalModule }, { kind: "component", type: i3.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i3.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "directive", type: i3.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "ngmodule", type: NgxJsonViewerModule }, { kind: "component", type: i4.NgxJsonViewerComponent, selector: "ngx-json-viewer", inputs: ["json", "expanded", "depth", "_currentDepth"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
36
+ }
37
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LogDetailsComponent, decorators: [{
38
+ type: Component,
39
+ args: [{ selector: 'valtimo-log-details', standalone: true, imports: [CommonModule, TranslateModule, ModalModule, NgxJsonViewerModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal [open]=\"open\" size=\"lg\">\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCloseSelect()\">\n {{ 'logging.detailsTitle' | translate }}\n </cds-modal-header>\n\n <section cdsModalContent class=\"valtimo-log-details__content\">\n <ngx-json-viewer *ngIf=\"logEvent\" [json]=\"logEvent\"></ngx-json-viewer>\n </section>\n</cds-modal>\n", styles: [".valtimo-log-details__content{padding:32px}.valtimo-log-details__content ::ng-deep .ngx-json-viewer{overflow:auto!important}\n"] }]
40
+ }], propDecorators: { open: [{
41
+ type: Input
42
+ }], logEvent: [{
43
+ type: Input
44
+ }], closeModalEvent: [{
45
+ type: Output
46
+ }] } });
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9sb2dnaW5nL3NyYy9saWIvY29tcG9uZW50cy9sb2ctZGV0YWlscy9sb2ctZGV0YWlscy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2xvZ2dpbmcvc3JjL2xpYi9jb21wb25lbnRzL2xvZy1kZXRhaWxzL2xvZy1kZXRhaWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7O0FBV3BELE1BQU0sT0FBTyxtQkFBbUI7SUFSaEM7UUFTa0IsU0FBSSxHQUFHLEtBQUssQ0FBQztRQUdILG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztLQUtoRTtJQUhRLGFBQWE7UUFDbEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM5QixDQUFDOytHQVJVLG1CQUFtQjttR0FBbkIsbUJBQW1CLGdMQzlCaEMscWdDQXlCQSx1TERFWSxZQUFZLGtJQUFFLGVBQWUsMkZBQUUsV0FBVyxnZ0JBQUUsbUJBQW1COzs0RkFHOUQsbUJBQW1CO2tCQVIvQixTQUFTOytCQUNFLHFCQUFxQixjQUduQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsQ0FBQyxtQkFDekQsdUJBQXVCLENBQUMsTUFBTTs4QkFHL0IsSUFBSTtzQkFBbkIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUVvQixlQUFlO3NCQUF4QyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGV9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtNb2RhbE1vZHVsZX0gZnJvbSAnY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhcic7XG5pbXBvcnQge05neEpzb25WaWV3ZXJNb2R1bGV9IGZyb20gJ25neC1qc29uLXZpZXdlcic7XG5pbXBvcnQge0xvZ2dpbmdFdmVudH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1sb2ctZGV0YWlscycsXG4gIHRlbXBsYXRlVXJsOiAnLi9sb2ctZGV0YWlscy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9sb2ctZGV0YWlscy5jb21wb25lbnQuc2NzcycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFRyYW5zbGF0ZU1vZHVsZSwgTW9kYWxNb2R1bGUsIE5neEpzb25WaWV3ZXJNb2R1bGVdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTG9nRGV0YWlsc0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHB1YmxpYyBvcGVuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBsb2dFdmVudDogTG9nZ2luZ0V2ZW50IHwgbnVsbDtcblxuICBAT3V0cHV0KCkgcHVibGljIHJlYWRvbmx5IGNsb3NlTW9kYWxFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwdWJsaWMgb25DbG9zZVNlbGVjdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlTW9kYWxFdmVudC5lbWl0KCk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPGNkcy1tb2RhbCBbb3Blbl09XCJvcGVuXCIgc2l6ZT1cImxnXCI+XG4gIDxjZHMtbW9kYWwtaGVhZGVyIFtzaG93Q2xvc2VCdXR0b25dPVwidHJ1ZVwiIChjbG9zZVNlbGVjdCk9XCJvbkNsb3NlU2VsZWN0KClcIj5cbiAgICB7eyAnbG9nZ2luZy5kZXRhaWxzVGl0bGUnIHwgdHJhbnNsYXRlIH19XG4gIDwvY2RzLW1vZGFsLWhlYWRlcj5cblxuICA8c2VjdGlvbiBjZHNNb2RhbENvbnRlbnQgY2xhc3M9XCJ2YWx0aW1vLWxvZy1kZXRhaWxzX19jb250ZW50XCI+XG4gICAgPG5neC1qc29uLXZpZXdlciAqbmdJZj1cImxvZ0V2ZW50XCIgW2pzb25dPVwibG9nRXZlbnRcIj48L25neC1qc29uLXZpZXdlcj5cbiAgPC9zZWN0aW9uPlxuPC9jZHMtbW9kYWw+XG4iXX0=
@@ -0,0 +1,190 @@
1
+ /*
2
+ * Copyright 2015-2024 Ritense BV, the Netherlands.
3
+ *
4
+ * Licensed under EUPL, Version 1.2 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" basis,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { CommonModule } from '@angular/common';
17
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
18
+ import { ReactiveFormsModule } from '@angular/forms';
19
+ import { TrashCan16 } from '@carbon/icons';
20
+ import { TranslateModule } from '@ngx-translate/core';
21
+ import { CARBON_THEME, CurrentCarbonTheme } from '@valtimo/components';
22
+ import { ButtonModule, DatePickerModule, DropdownModule, IconModule, InputModule, } from 'carbon-components-angular';
23
+ import flatpickr from 'flatpickr';
24
+ import { debounceTime, map, Subscription } from 'rxjs';
25
+ import { LogLevel, } from '../../models';
26
+ import * as i0 from "@angular/core";
27
+ import * as i1 from "@valtimo/components";
28
+ import * as i2 from "@angular/forms";
29
+ import * as i3 from "carbon-components-angular";
30
+ import * as i4 from "@angular/common";
31
+ import * as i5 from "@ngx-translate/core";
32
+ export class LogSearchComponent {
33
+ get propertiesArray() {
34
+ return this.formGroup.get('properties');
35
+ }
36
+ constructor(cdsThemeService, fb, iconService) {
37
+ this.cdsThemeService = cdsThemeService;
38
+ this.fb = fb;
39
+ this.iconService = iconService;
40
+ this.searchSubmitEvent = new EventEmitter();
41
+ this.theme$ = this.cdsThemeService.currentTheme$.pipe(map((theme) => theme === CurrentCarbonTheme.G10 ? CARBON_THEME.WHITE : CARBON_THEME.G100));
42
+ this.formGroup = this.fb.group({
43
+ likeFormattedMessage: this.fb.control(''),
44
+ level: this.fb.control({ content: '', selected: false }),
45
+ beforeTimestamp: this.fb.control(''),
46
+ afterTimestamp: this.fb.control(''),
47
+ properties: this.fb.array([
48
+ this.fb.group({
49
+ key: this.fb.control(''),
50
+ value: this.fb.control(''),
51
+ }),
52
+ ]),
53
+ });
54
+ this.logLevelItems = [
55
+ {
56
+ content: LogLevel.ERROR,
57
+ },
58
+ {
59
+ content: LogLevel.WARN,
60
+ },
61
+ {
62
+ content: LogLevel.INFO,
63
+ },
64
+ {
65
+ content: LogLevel.DEBUG,
66
+ },
67
+ {
68
+ content: LogLevel.TRACE,
69
+ },
70
+ ];
71
+ this._subscriptions = new Subscription();
72
+ this.iconService.register(TrashCan16);
73
+ }
74
+ ngOnInit() {
75
+ this.setInitialForm();
76
+ this._subscriptions.add(this.formGroup.valueChanges.pipe(debounceTime(500)).subscribe(() => {
77
+ this.searchSubmitEvent.emit(this.mapFormValueToLogSearch());
78
+ }));
79
+ }
80
+ ngAfterViewInit() {
81
+ const afterTimestampControlValue = this.formGroup.get('afterTimestamp')?.value;
82
+ const beforeTimestampControlValue = this.formGroup.get('beforeTimestamp')?.value;
83
+ if (!!afterTimestampControlValue) {
84
+ this._afterTimestampDatePicker.writeValue([
85
+ flatpickr.formatDate(new Date(afterTimestampControlValue), 'd-m-Y'),
86
+ ]);
87
+ }
88
+ if (!!beforeTimestampControlValue) {
89
+ this._beforeTimestampDatePicker.writeValue([
90
+ flatpickr.formatDate(new Date(beforeTimestampControlValue), 'd-m-Y'),
91
+ ]);
92
+ }
93
+ }
94
+ ngOnDestroy() {
95
+ this._subscriptions.unsubscribe();
96
+ }
97
+ onClearFilter() {
98
+ this.formGroup.reset();
99
+ this._afterTimestampDatePicker.writeValue([]);
100
+ this._beforeTimestampDatePicker.writeValue([]);
101
+ }
102
+ onDateSelected(control, event) {
103
+ this.formGroup.get(control)?.patchValue(flatpickr.formatDate(event[0], 'Z'));
104
+ }
105
+ addPropertySearchField() {
106
+ this.propertiesArray.push(this.fb.group({
107
+ key: this.fb.control(''),
108
+ value: this.fb.control(''),
109
+ }));
110
+ }
111
+ removePropertySearchField(index) {
112
+ this.propertiesArray.removeAt(index);
113
+ }
114
+ initLogItems(formValue) {
115
+ if (!formValue.level)
116
+ return;
117
+ this.logLevelItems = this.logLevelItems.map((levelItem) => ({
118
+ ...levelItem,
119
+ selected: formValue.level?.content === levelItem.content,
120
+ }));
121
+ }
122
+ initPropertiesForm(formValue) {
123
+ if (!formValue.properties)
124
+ return;
125
+ for (let i = 1; i < formValue.properties.length; i++) {
126
+ this.addPropertySearchField();
127
+ }
128
+ }
129
+ mapFormValueToLogSearch() {
130
+ const formValue = this.formGroup.getRawValue();
131
+ const properties = formValue.properties.filter((property) => !!property.key && !!property.value);
132
+ return {
133
+ ...(!!formValue.likeFormattedMessage && {
134
+ likeFormattedMessage: formValue.likeFormattedMessage,
135
+ }),
136
+ ...(!!formValue.level?.content && { level: formValue.level.content }),
137
+ ...(!!formValue.afterTimestamp && { afterTimestamp: formValue.afterTimestamp }),
138
+ ...(!!formValue.beforeTimestamp && { beforeTimestamp: formValue.beforeTimestamp }),
139
+ ...(!!properties.length && { properties }),
140
+ };
141
+ }
142
+ mapSearchRequestToFormValue(searchRequest) {
143
+ return {
144
+ ...(searchRequest.likeFormattedMessage && {
145
+ likeFormattedMessage: searchRequest.likeFormattedMessage,
146
+ }),
147
+ ...(searchRequest.level && {
148
+ level: {
149
+ content: searchRequest.level,
150
+ selected: true,
151
+ },
152
+ }),
153
+ ...(searchRequest.afterTimestamp && { afterTimestamp: searchRequest.afterTimestamp }),
154
+ ...(searchRequest.beforeTimestamp && { beforeTimestamp: searchRequest.beforeTimestamp }),
155
+ ...(searchRequest.properties && { properties: searchRequest.properties }),
156
+ };
157
+ }
158
+ setInitialForm() {
159
+ const mappedFormValue = this.mapSearchRequestToFormValue(this.initSearchRequest);
160
+ this.initLogItems(mappedFormValue);
161
+ this.initPropertiesForm(mappedFormValue);
162
+ this.formGroup.patchValue(mappedFormValue, { emitEvent: false });
163
+ }
164
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LogSearchComponent, deps: [{ token: i1.CdsThemeService }, { token: i2.FormBuilder }, { token: i3.IconService }], target: i0.ɵɵFactoryTarget.Component }); }
165
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: LogSearchComponent, isStandalone: true, selector: "valtimo-log-search", inputs: { initSearchRequest: "initSearchRequest" }, outputs: { searchSubmitEvent: "searchSubmitEvent" }, viewQueries: [{ propertyName: "_afterTimestampDatePicker", first: true, predicate: ["afterTimestamp"], descendants: true }, { propertyName: "_beforeTimestampDatePicker", first: true, predicate: ["beforeTimestamp"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<form\n *ngIf=\"theme$ | async as theme\"\n class=\"valtimo-log-search\"\n [formGroup]=\"formGroup\"\n (click)=\"$event.stopImmediatePropagation()\"\n>\n <section class=\"valtimo-log-search__fields\">\n <cds-text-label>\n {{ 'logging.columns.formattedMessage' | translate }}\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"theme\"\n formControlName=\"likeFormattedMessage\"\n [placeholder]=\"'logging.columns.formattedMessage' | translate\"\n />\n </cds-text-label>\n\n <cds-dropdown\n formControlName=\"level\"\n [attr.data-carbon-theme]=\"theme\"\n [appendInline]=\"true\"\n [label]=\"'logging.columns.level' | translate\"\n [placeholder]=\"'logging.columns.level' | translate\"\n >\n <cds-dropdown-list [items]=\"logLevelItems\"></cds-dropdown-list>\n </cds-dropdown>\n\n <div class=\"valtimo-log-search__timestamp\">\n <cds-date-picker\n #afterTimestamp\n [attr.data-carbon-theme]=\"theme\"\n [label]=\"'logging.search.afterTimestamp' | translate\"\n placeholder=\"DD-MM-YYYY\"\n [dateFormat]=\"'d-m-Y'\"\n (valueChange)=\"onDateSelected('afterTimestamp', $event)\"\n ></cds-date-picker>\n\n <cds-date-picker\n #beforeTimestamp\n [attr.data-carbon-theme]=\"theme\"\n [label]=\"'logging.search.beforeTimestamp' | translate\"\n placeholder=\"DD-MM-YYYY\"\n [dateFormat]=\"'d-m-Y'\"\n (valueChange)=\"onDateSelected('beforeTimestamp', $event)\"\n ></cds-date-picker>\n </div>\n </section>\n\n <section formArrayName=\"properties\" class=\"valtimo-log-search__properties\">\n <span class=\"valtimo-log-search__label\"> {{ 'logging.search.properties' | translate }} </span>\n\n @for (propertyGroup of propertiesArray.controls; track $index) {\n <form [formGroup]=\"propertyGroup\" class=\"valtimo-log-search__property\">\n <cds-text-label>\n <input\n cdsText\n [attr.data-carbon-theme]=\"theme\"\n formControlName=\"key\"\n [placeholder]=\"'interface.key' | translate\"\n />\n </cds-text-label>\n\n <cds-text-label>\n <input\n cdsText\n [attr.data-carbon-theme]=\"theme\"\n formControlName=\"value\"\n [placeholder]=\"'interface.value' | translate\"\n />\n </cds-text-label>\n\n <button\n cdsButton=\"danger--ghost\"\n [disabled]=\"$count === 1\"\n iconOnly=\"true\"\n type=\"button\"\n (click)=\"removePropertySearchField($index)\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </form>\n }\n\n <button cdsButton=\"primary\" size=\"sm\" type=\"button\" (click)=\"addPropertySearchField()\">\n {{ 'logging.search.addProperty' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </section>\n\n <button cdsButton=\"tertiary\" type=\"button\" (click)=\"onClearFilter()\">\n {{ 'interface.clear' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n</form>\n", styles: [".valtimo-log-search{flex-direction:column;padding:16px;max-width:880px}.valtimo-log-search,.valtimo-log-search__property,.valtimo-log-search__timestamp{display:flex;gap:16px}.valtimo-log-search__fields{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.valtimo-log-search__properties{display:flex;flex-direction:column;max-width:50%}.valtimo-log-search__properties>*:not(:last-child):not(.valtimo-log-search__label){margin-bottom:16px}.valtimo-log-search__property{align-items:flex-end}.valtimo-log-search__label{font-size:var(--cds-label-01-font-size);color:var(--cds-text-secondary)}.valtimo-log-search ::ng-deep .cds--date-picker.cds--date-picker--single .cds--date-picker__input{inline-size:unset!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i3.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: DropdownModule }, { kind: "component", type: i3.Dropdown, selector: "cds-dropdown, ibm-dropdown", inputs: ["id", "label", "hideLabel", "helperText", "placeholder", "displayValue", "clearText", "size", "type", "theme", "disabled", "skeleton", "inline", "disableArrowKeys", "invalid", "invalidText", "warn", "warnText", "appendInline", "scrollableContainer", "itemValueKey", "selectionFeedback", "menuButtonLabel", "selectedLabel", "dropUp"], outputs: ["selected", "onClose", "close"] }, { kind: "component", type: i3.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i3.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "ngmodule", type: InputModule }, { kind: "component", type: i3.TextInputLabelComponent, selector: "cds-text-label, ibm-text-label", inputs: ["labelInputID", "disabled", "skeleton", "labelTemplate", "textInputTemplate", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i3.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "ngmodule", type: DatePickerModule }, { kind: "component", type: i3.DatePicker, selector: "cds-date-picker, ibm-date-picker", inputs: ["range", "dateFormat", "language", "label", "helperText", "rangeHelperText", "rangeLabel", "placeholder", "ariaLabel", "inputPattern", "id", "value", "theme", "disabled", "invalid", "invalidText", "warn", "warnText", "size", "rangeInvalid", "rangeInvalidText", "rangeWarn", "rangeWarnText", "skeleton", "plugins", "flatpickrOptions"], outputs: ["valueChange", "onClose"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
166
+ }
167
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LogSearchComponent, decorators: [{
168
+ type: Component,
169
+ args: [{ selector: 'valtimo-log-search', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
170
+ CommonModule,
171
+ TranslateModule,
172
+ ButtonModule,
173
+ DropdownModule,
174
+ IconModule,
175
+ InputModule,
176
+ ReactiveFormsModule,
177
+ DatePickerModule,
178
+ ], template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<form\n *ngIf=\"theme$ | async as theme\"\n class=\"valtimo-log-search\"\n [formGroup]=\"formGroup\"\n (click)=\"$event.stopImmediatePropagation()\"\n>\n <section class=\"valtimo-log-search__fields\">\n <cds-text-label>\n {{ 'logging.columns.formattedMessage' | translate }}\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"theme\"\n formControlName=\"likeFormattedMessage\"\n [placeholder]=\"'logging.columns.formattedMessage' | translate\"\n />\n </cds-text-label>\n\n <cds-dropdown\n formControlName=\"level\"\n [attr.data-carbon-theme]=\"theme\"\n [appendInline]=\"true\"\n [label]=\"'logging.columns.level' | translate\"\n [placeholder]=\"'logging.columns.level' | translate\"\n >\n <cds-dropdown-list [items]=\"logLevelItems\"></cds-dropdown-list>\n </cds-dropdown>\n\n <div class=\"valtimo-log-search__timestamp\">\n <cds-date-picker\n #afterTimestamp\n [attr.data-carbon-theme]=\"theme\"\n [label]=\"'logging.search.afterTimestamp' | translate\"\n placeholder=\"DD-MM-YYYY\"\n [dateFormat]=\"'d-m-Y'\"\n (valueChange)=\"onDateSelected('afterTimestamp', $event)\"\n ></cds-date-picker>\n\n <cds-date-picker\n #beforeTimestamp\n [attr.data-carbon-theme]=\"theme\"\n [label]=\"'logging.search.beforeTimestamp' | translate\"\n placeholder=\"DD-MM-YYYY\"\n [dateFormat]=\"'d-m-Y'\"\n (valueChange)=\"onDateSelected('beforeTimestamp', $event)\"\n ></cds-date-picker>\n </div>\n </section>\n\n <section formArrayName=\"properties\" class=\"valtimo-log-search__properties\">\n <span class=\"valtimo-log-search__label\"> {{ 'logging.search.properties' | translate }} </span>\n\n @for (propertyGroup of propertiesArray.controls; track $index) {\n <form [formGroup]=\"propertyGroup\" class=\"valtimo-log-search__property\">\n <cds-text-label>\n <input\n cdsText\n [attr.data-carbon-theme]=\"theme\"\n formControlName=\"key\"\n [placeholder]=\"'interface.key' | translate\"\n />\n </cds-text-label>\n\n <cds-text-label>\n <input\n cdsText\n [attr.data-carbon-theme]=\"theme\"\n formControlName=\"value\"\n [placeholder]=\"'interface.value' | translate\"\n />\n </cds-text-label>\n\n <button\n cdsButton=\"danger--ghost\"\n [disabled]=\"$count === 1\"\n iconOnly=\"true\"\n type=\"button\"\n (click)=\"removePropertySearchField($index)\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </form>\n }\n\n <button cdsButton=\"primary\" size=\"sm\" type=\"button\" (click)=\"addPropertySearchField()\">\n {{ 'logging.search.addProperty' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </section>\n\n <button cdsButton=\"tertiary\" type=\"button\" (click)=\"onClearFilter()\">\n {{ 'interface.clear' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n</form>\n", styles: [".valtimo-log-search{flex-direction:column;padding:16px;max-width:880px}.valtimo-log-search,.valtimo-log-search__property,.valtimo-log-search__timestamp{display:flex;gap:16px}.valtimo-log-search__fields{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.valtimo-log-search__properties{display:flex;flex-direction:column;max-width:50%}.valtimo-log-search__properties>*:not(:last-child):not(.valtimo-log-search__label){margin-bottom:16px}.valtimo-log-search__property{align-items:flex-end}.valtimo-log-search__label{font-size:var(--cds-label-01-font-size);color:var(--cds-text-secondary)}.valtimo-log-search ::ng-deep .cds--date-picker.cds--date-picker--single .cds--date-picker__input{inline-size:unset!important}\n"] }]
179
+ }], ctorParameters: () => [{ type: i1.CdsThemeService }, { type: i2.FormBuilder }, { type: i3.IconService }], propDecorators: { _afterTimestampDatePicker: [{
180
+ type: ViewChild,
181
+ args: ['afterTimestamp']
182
+ }], _beforeTimestampDatePicker: [{
183
+ type: ViewChild,
184
+ args: ['beforeTimestamp']
185
+ }], initSearchRequest: [{
186
+ type: Input
187
+ }], searchSubmitEvent: [{
188
+ type: Output
189
+ }] } });
190
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLXNlYXJjaC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2xvZ2dpbmcvc3JjL2xpYi9jb21wb25lbnRzL2xvZy1zZWFyY2gvbG9nLXNlYXJjaC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2xvZ2dpbmcvc3JjL2xpYi9jb21wb25lbnRzL2xvZy1zZWFyY2gvbG9nLXNlYXJjaC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF5QixtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxZQUFZLEVBQW1CLGtCQUFrQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDdEYsT0FBTyxFQUNMLFlBQVksRUFFWixnQkFBZ0IsRUFDaEIsY0FBYyxFQUNkLFVBQVUsRUFFVixXQUFXLEdBRVosTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLFNBQVMsTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUFDLFlBQVksRUFBWSxHQUFHLEVBQWMsWUFBWSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzNFLE9BQU8sRUFJTCxRQUFRLEdBQ1QsTUFBTSxjQUFjLENBQUM7Ozs7Ozs7QUFtQnRCLE1BQU0sT0FBTyxrQkFBa0I7SUE4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MkIsQ0FDbkYsSUFBSSxDQUFDLGlCQUFpQixDQUN2QixDQUFDO1FBQ0YsSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFekMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsZUFBZSxFQUFFLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUM7SUFDakUsQ0FBQzsrR0E3S1Usa0JBQWtCO21HQUFsQixrQkFBa0Isb2FDbkUvQix1MUhBZ0hBLDB3QkR2REksWUFBWSx1TEFDWixlQUFlLDJGQUNmLFlBQVksZ01BQ1osY0FBYyxnc0JBQ2QsVUFBVSw0TkFDVixXQUFXLDJhQUNYLG1CQUFtQixtakNBQ25CLGdCQUFnQjs7NEZBR1Asa0JBQWtCO2tCQWpCOUIsU0FBUzsrQkFDRSxvQkFBb0IsbUJBR2IsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixlQUFlO3dCQUNmLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxVQUFVO3dCQUNWLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixnQkFBZ0I7cUJBQ2pCO3dJQUc2Qyx5QkFBeUI7c0JBQXRFLFNBQVM7dUJBQUMsZ0JBQWdCO2dCQUNvQiwwQkFBMEI7c0JBQXhFLFNBQVM7dUJBQUMsaUJBQWlCO2dCQUVaLGlCQUFpQjtzQkFBaEMsS0FBSztnQkFDb0IsaUJBQWlCO3NCQUExQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybUFycmF5LCBGb3JtQnVpbGRlciwgUmVhY3RpdmVGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtUcmFzaENhbjE2fSBmcm9tICdAY2FyYm9uL2ljb25zJztcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7Q0FSQk9OX1RIRU1FLCBDZHNUaGVtZVNlcnZpY2UsIEN1cnJlbnRDYXJib25UaGVtZX0gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge1xuICBCdXR0b25Nb2R1bGUsXG4gIERhdGVQaWNrZXIsXG4gIERhdGVQaWNrZXJNb2R1bGUsXG4gIERyb3Bkb3duTW9kdWxlLFxuICBJY29uTW9kdWxlLFxuICBJY29uU2VydmljZSxcbiAgSW5wdXRNb2R1bGUsXG4gIExpc3RJdGVtLFxufSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyJztcbmltcG9ydCBmbGF0cGlja3IgZnJvbSAnZmxhdHBpY2tyJztcbmltcG9ydCB7ZGVib3VuY2VUaW1lLCBpbnRlcnZhbCwgbWFwLCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgTG9nZ2luZ0V2ZW50UHJvcGVydHksXG4gIExvZ2dpbmdFdmVudFNlYXJjaEZvcm1WYWx1ZSxcbiAgTG9nZ2luZ0V2ZW50U2VhcmNoUmVxdWVzdCxcbiAgTG9nTGV2ZWwsXG59IGZyb20gJy4uLy4uL21vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tbG9nLXNlYXJjaCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9sb2ctc2VhcmNoLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2xvZy1zZWFyY2guY29tcG9uZW50LnNjc3MnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgQnV0dG9uTW9kdWxlLFxuICAgIERyb3Bkb3duTW9kdWxlLFxuICAgIEljb25Nb2R1bGUsXG4gICAgSW5wdXRNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBEYXRlUGlja2VyTW9kdWxlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBMb2dTZWFyY2hDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ2FmdGVyVGltZXN0YW1wJykgcHJpdmF0ZSByZWFkb25seSBfYWZ0ZXJUaW1lc3RhbXBEYXRlUGlja2VyOiBEYXRlUGlja2VyO1xuICBAVmlld0NoaWxkKCdiZWZvcmVUaW1lc3RhbXAnKSBwcml2YXRlIHJlYWRvbmx5IF9iZWZvcmVUaW1lc3RhbXBEYXRlUGlja2VyOiBEYXRlUGlja2VyO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBpbml0U2VhcmNoUmVxdWVzdDogTG9nZ2luZ0V2ZW50U2VhcmNoUmVxdWVzdDtcbiAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSBzZWFyY2hTdWJtaXRFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8TG9nZ2luZ0V2ZW50U2VhcmNoUmVxdWVzdD4oKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgdGhlbWUkOiBPYnNlcnZhYmxlPENBUkJPTl9USEVNRT4gPSB0aGlzLmNkc1RoZW1lU2VydmljZS5jdXJyZW50VGhlbWUkLnBpcGUoXG4gICAgbWFwKCh0aGVtZTogQ3VycmVudENhcmJvblRoZW1lKSA9PlxuICAgICAgdGhlbWUgPT09IEN1cnJlbnRDYXJib25UaGVtZS5HMTAgPyBDQVJCT05fVEhFTUUuV0hJVEUgOiBDQVJCT05fVEhFTUUuRzEwMFxuICAgIClcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZm9ybUdyb3VwID0gdGhpcy5mYi5ncm91cCh7XG4gICAgbGlrZUZvcm1hdHRlZE1lc3NhZ2U6IHRoaXMuZmIuY29udHJvbDxzdHJpbmc+KCcnKSxcbiAgICBsZXZlbDogdGhpcy5mYi5jb250cm9sPExpc3RJdGVtPih7Y29udGVudDogJycsIHNlbGVjdGVkOiBmYWxzZX0pLFxuICAgIGJlZm9yZVRpbWVzdGFtcDogdGhpcy5mYi5jb250cm9sPHN0cmluZz4oJycpLFxuICAgIGFmdGVyVGltZXN0YW1wOiB0aGlzLmZiLmNvbnRyb2w8c3RyaW5nPignJyksXG4gICAgcHJvcGVydGllczogdGhpcy5mYi5hcnJheShbXG4gICAgICB0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAga2V5OiB0aGlzLmZiLmNvbnRyb2w8c3RyaW5nPignJyksXG4gICAgICAgIHZhbHVlOiB0aGlzLmZiLmNvbnRyb2w8c3RyaW5nPignJyksXG4gICAgICB9KSxcbiAgICBdKSxcbiAgfSk7XG5cbiAgcHVibGljIGxvZ0xldmVsSXRlbXM6IFBhcnRpYWw8TGlzdEl0ZW0+W10gPSBbXG4gICAge1xuICAgICAgY29udGVudDogTG9nTGV2ZWwuRVJST1IsXG4gICAgfSxcbiAgICB7XG4gICAgICBjb250ZW50OiBMb2dMZXZlbC5XQVJOLFxuICAgIH0sXG4gICAge1xuICAgICAgY29udGVudDogTG9nTGV2ZWwuSU5GTyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvbnRlbnQ6IExvZ0xldmVsLkRFQlVHLFxuICAgIH0sXG4gICAge1xuICAgICAgY29udGVudDogTG9nTGV2ZWwuVFJBQ0UsXG4gICAgfSxcbiAgXTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9zdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIHB1YmxpYyBnZXQgcHJvcGVydGllc0FycmF5KCk6IEZvcm1BcnJheSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwLmdldCgncHJvcGVydGllcycpIGFzIEZvcm1BcnJheTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RzVGhlbWVTZXJ2aWNlOiBDZHNUaGVtZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBpY29uU2VydmljZTogSWNvblNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5pY29uU2VydmljZS5yZWdpc3RlcihUcmFzaENhbjE2KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldEluaXRpYWxGb3JtKCk7XG5cbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuZm9ybUdyb3VwLnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSg1MDApKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnNlYXJjaFN1Ym1pdEV2ZW50LmVtaXQodGhpcy5tYXBGb3JtVmFsdWVUb0xvZ1NlYXJjaCgpKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgY29uc3QgYWZ0ZXJUaW1lc3RhbXBDb250cm9sVmFsdWUgPSB0aGlzLmZvcm1Hcm91cC5nZXQoJ2FmdGVyVGltZXN0YW1wJyk/LnZhbHVlO1xuICAgIGNvbnN0IGJlZm9yZVRpbWVzdGFtcENvbnRyb2xWYWx1ZSA9IHRoaXMuZm9ybUdyb3VwLmdldCgnYmVmb3JlVGltZXN0YW1wJyk/LnZhbHVlO1xuXG4gICAgaWYgKCEhYWZ0ZXJUaW1lc3RhbXBDb250cm9sVmFsdWUpIHtcbiAgICAgIHRoaXMuX2FmdGVyVGltZXN0YW1wRGF0ZVBpY2tlci53cml0ZVZhbHVlKFtcbiAgICAgICAgZmxhdHBpY2tyLmZvcm1hdERhdGUobmV3IERhdGUoYWZ0ZXJUaW1lc3RhbXBDb250cm9sVmFsdWUpLCAnZC1tLVknKSxcbiAgICAgIF0pO1xuICAgIH1cblxuICAgIGlmICghIWJlZm9yZVRpbWVzdGFtcENvbnRyb2xWYWx1ZSkge1xuICAgICAgdGhpcy5fYmVmb3JlVGltZXN0YW1wRGF0ZVBpY2tlci53cml0ZVZhbHVlKFtcbiAgICAgICAgZmxhdHBpY2tyLmZvcm1hdERhdGUobmV3IERhdGUoYmVmb3JlVGltZXN0YW1wQ29udHJvbFZhbHVlKSwgJ2QtbS1ZJyksXG4gICAgICBdKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIG9uQ2xlYXJGaWx0ZXIoKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtR3JvdXAucmVzZXQoKTtcbiAgICB0aGlzLl9hZnRlclRpbWVzdGFtcERhdGVQaWNrZXIud3JpdGVWYWx1ZShbXSk7XG4gICAgdGhpcy5fYmVmb3JlVGltZXN0YW1wRGF0ZVBpY2tlci53cml0ZVZhbHVlKFtdKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkRhdGVTZWxlY3RlZChjb250cm9sOiAnYWZ0ZXJUaW1lc3RhbXAnIHwgJ2JlZm9yZVRpbWVzdGFtcCcsIGV2ZW50OiBEYXRlW10pOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1Hcm91cC5nZXQoY29udHJvbCk/LnBhdGNoVmFsdWUoZmxhdHBpY2tyLmZvcm1hdERhdGUoZXZlbnRbMF0sICdaJykpO1xuICB9XG5cbiAgcHVibGljIGFkZFByb3BlcnR5U2VhcmNoRmllbGQoKTogdm9pZCB7XG4gICAgdGhpcy5wcm9wZXJ0aWVzQXJyYXkucHVzaChcbiAgICAgIHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgICBrZXk6IHRoaXMuZmIuY29udHJvbDxzdHJpbmc+KCcnKSxcbiAgICAgICAgdmFsdWU6IHRoaXMuZmIuY29udHJvbDxzdHJpbmc+KCcnKSxcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVQcm9wZXJ0eVNlYXJjaEZpZWxkKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnByb3BlcnRpZXNBcnJheS5yZW1vdmVBdChpbmRleCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRMb2dJdGVtcyhmb3JtVmFsdWU6IExvZ2dpbmdFdmVudFNlYXJjaEZvcm1WYWx1ZSk6IHZvaWQge1xuICAgIGlmICghZm9ybVZhbHVlLmxldmVsKSByZXR1cm47XG5cbiAgICB0aGlzLmxvZ0xldmVsSXRlbXMgPSB0aGlzLmxvZ0xldmVsSXRlbXMubWFwKChsZXZlbEl0ZW06IFBhcnRpYWw8TGlzdEl0ZW0+KSA9PiAoe1xuICAgICAgLi4ubGV2ZWxJdGVtLFxuICAgICAgc2VsZWN0ZWQ6IGZvcm1WYWx1ZS5sZXZlbD8uY29udGVudCA9PT0gbGV2ZWxJdGVtLmNvbnRlbnQsXG4gICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0UHJvcGVydGllc0Zvcm0oZm9ybVZhbHVlOiBMb2dnaW5nRXZlbnRTZWFyY2hGb3JtVmFsdWUpOiB2b2lkIHtcbiAgICBpZiAoIWZvcm1WYWx1ZS5wcm9wZXJ0aWVzKSByZXR1cm47XG5cbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IGZvcm1WYWx1ZS5wcm9wZXJ0aWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLmFkZFByb3BlcnR5U2VhcmNoRmllbGQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcEZvcm1WYWx1ZVRvTG9nU2VhcmNoKCk6IExvZ2dpbmdFdmVudFNlYXJjaFJlcXVlc3Qge1xuICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHRoaXMuZm9ybUdyb3VwLmdldFJhd1ZhbHVlKCk7XG4gICAgY29uc3QgcHJvcGVydGllcyA9IGZvcm1WYWx1ZS5wcm9wZXJ0aWVzLmZpbHRlcihcbiAgICAgIChwcm9wZXJ0eToge2tleTogc3RyaW5nIHwgbnVsbDsgdmFsdWU6IHN0cmluZyB8IG51bGx9KSA9PiAhIXByb3BlcnR5LmtleSAmJiAhIXByb3BlcnR5LnZhbHVlXG4gICAgKSBhcyBMb2dnaW5nRXZlbnRQcm9wZXJ0eVtdO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLighIWZvcm1WYWx1ZS5saWtlRm9ybWF0dGVkTWVzc2FnZSAmJiB7XG4gICAgICAgIGxpa2VGb3JtYXR0ZWRNZXNzYWdlOiBmb3JtVmFsdWUubGlrZUZvcm1hdHRlZE1lc3NhZ2UsXG4gICAgICB9KSxcbiAgICAgIC4uLighIWZvcm1WYWx1ZS5sZXZlbD8uY29udGVudCAmJiB7bGV2ZWw6IGZvcm1WYWx1ZS5sZXZlbC5jb250ZW50fSksXG4gICAgICAuLi4oISFmb3JtVmFsdWUuYWZ0ZXJUaW1lc3RhbXAgJiYge2FmdGVyVGltZXN0YW1wOiBmb3JtVmFsdWUuYWZ0ZXJUaW1lc3RhbXB9KSxcbiAgICAgIC4uLighIWZvcm1WYWx1ZS5iZWZvcmVUaW1lc3RhbXAgJiYge2JlZm9yZVRpbWVzdGFtcDogZm9ybVZhbHVlLmJlZm9yZVRpbWVzdGFtcH0pLFxuICAgICAgLi4uKCEhcHJvcGVydGllcy5sZW5ndGggJiYge3Byb3BlcnRpZXN9KSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBTZWFyY2hSZXF1ZXN0VG9Gb3JtVmFsdWUoXG4gICAgc2VhcmNoUmVxdWVzdDogTG9nZ2luZ0V2ZW50U2VhcmNoUmVxdWVzdFxuICApOiBMb2dnaW5nRXZlbnRTZWFyY2hGb3JtVmFsdWUge1xuICAgIHJldHVybiB7XG4gICAgICAuLi4oc2VhcmNoUmVxdWVzdC5saWtlRm9ybWF0dGVkTWVzc2FnZSAmJiB7XG4gICAgICAgIGxpa2VGb3JtYXR0ZWRNZXNzYWdlOiBzZWFyY2hSZXF1ZXN0Lmxpa2VGb3JtYXR0ZWRNZXNzYWdlLFxuICAgICAgfSksXG4gICAgICAuLi4oc2VhcmNoUmVxdWVzdC5sZXZlbCAmJiB7XG4gICAgICAgIGxldmVsOiB7XG4gICAgICAgICAgY29udGVudDogc2VhcmNoUmVxdWVzdC5sZXZlbCxcbiAgICAgICAgICBzZWxlY3RlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICAgLi4uKHNlYXJjaFJlcXVlc3QuYWZ0ZXJUaW1lc3RhbXAgJiYge2FmdGVyVGltZXN0YW1wOiBzZWFyY2hSZXF1ZXN0LmFmdGVyVGltZXN0YW1wfSksXG4gICAgICAuLi4oc2VhcmNoUmVxdWVzdC5iZWZvcmVUaW1lc3RhbXAgJiYge2JlZm9yZVRpbWVzdGFtcDogc2VhcmNoUmVxdWVzdC5iZWZvcmVUaW1lc3RhbXB9KSxcbiAgICAgIC4uLihzZWFyY2hSZXF1ZXN0LnByb3BlcnRpZXMgJiYge3Byb3BlcnRpZXM6IHNlYXJjaFJlcXVlc3QucHJvcGVydGllc30pLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHNldEluaXRpYWxGb3JtKCk6IHZvaWQge1xuICAgIGNvbnN0IG1hcHBlZEZvcm1WYWx1ZTogTG9nZ2luZ0V2ZW50U2VhcmNoRm9ybVZhbHVlID0gdGhpcy5tYXBTZWFyY2hSZXF1ZXN0VG9Gb3JtVmFsdWUoXG4gICAgICB0aGlzLmluaXRTZWFyY2hSZXF1ZXN0XG4gICAgKTtcbiAgICB0aGlzLmluaXRMb2dJdGVtcyhtYXBwZWRGb3JtVmFsdWUpO1xuICAgIHRoaXMuaW5pdFByb3BlcnRpZXNGb3JtKG1hcHBlZEZvcm1WYWx1ZSk7XG5cbiAgICB0aGlzLmZvcm1Hcm91cC5wYXRjaFZhbHVlKG1hcHBlZEZvcm1WYWx1ZSwge2VtaXRFdmVudDogZmFsc2V9KTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuPGZvcm1cbiAgKm5nSWY9XCJ0aGVtZSQgfCBhc3luYyBhcyB0aGVtZVwiXG4gIGNsYXNzPVwidmFsdGltby1sb2ctc2VhcmNoXCJcbiAgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIlxuICAoY2xpY2spPVwiJGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpXCJcbj5cbiAgPHNlY3Rpb24gY2xhc3M9XCJ2YWx0aW1vLWxvZy1zZWFyY2hfX2ZpZWxkc1wiPlxuICAgIDxjZHMtdGV4dC1sYWJlbD5cbiAgICAgIHt7ICdsb2dnaW5nLmNvbHVtbnMuZm9ybWF0dGVkTWVzc2FnZScgfCB0cmFuc2xhdGUgfX1cblxuICAgICAgPGlucHV0XG4gICAgICAgIGNkc1RleHRcbiAgICAgICAgW2F0dHIuZGF0YS1jYXJib24tdGhlbWVdPVwidGhlbWVcIlxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJsaWtlRm9ybWF0dGVkTWVzc2FnZVwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCInbG9nZ2luZy5jb2x1bW5zLmZvcm1hdHRlZE1lc3NhZ2UnIHwgdHJhbnNsYXRlXCJcbiAgICAgIC8+XG4gICAgPC9jZHMtdGV4dC1sYWJlbD5cblxuICAgIDxjZHMtZHJvcGRvd25cbiAgICAgIGZvcm1Db250cm9sTmFtZT1cImxldmVsXCJcbiAgICAgIFthdHRyLmRhdGEtY2FyYm9uLXRoZW1lXT1cInRoZW1lXCJcbiAgICAgIFthcHBlbmRJbmxpbmVdPVwidHJ1ZVwiXG4gICAgICBbbGFiZWxdPVwiJ2xvZ2dpbmcuY29sdW1ucy5sZXZlbCcgfCB0cmFuc2xhdGVcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cIidsb2dnaW5nLmNvbHVtbnMubGV2ZWwnIHwgdHJhbnNsYXRlXCJcbiAgICA+XG4gICAgICA8Y2RzLWRyb3Bkb3duLWxpc3QgW2l0ZW1zXT1cImxvZ0xldmVsSXRlbXNcIj48L2Nkcy1kcm9wZG93bi1saXN0PlxuICAgIDwvY2RzLWRyb3Bkb3duPlxuXG4gICAgPGRpdiBjbGFzcz1cInZhbHRpbW8tbG9nLXNlYXJjaF9fdGltZXN0YW1wXCI+XG4gICAgICA8Y2RzLWRhdGUtcGlja2VyXG4gICAgICAgICNhZnRlclRpbWVzdGFtcFxuICAgICAgICBbYXR0ci5kYXRhLWNhcmJvbi10aGVtZV09XCJ0aGVtZVwiXG4gICAgICAgIFtsYWJlbF09XCInbG9nZ2luZy5zZWFyY2guYWZ0ZXJUaW1lc3RhbXAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJERC1NTS1ZWVlZXCJcbiAgICAgICAgW2RhdGVGb3JtYXRdPVwiJ2QtbS1ZJ1wiXG4gICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvbkRhdGVTZWxlY3RlZCgnYWZ0ZXJUaW1lc3RhbXAnLCAkZXZlbnQpXCJcbiAgICAgID48L2Nkcy1kYXRlLXBpY2tlcj5cblxuICAgICAgPGNkcy1kYXRlLXBpY2tlclxuICAgICAgICAjYmVmb3JlVGltZXN0YW1wXG4gICAgICAgIFthdHRyLmRhdGEtY2FyYm9uLXRoZW1lXT1cInRoZW1lXCJcbiAgICAgICAgW2xhYmVsXT1cIidsb2dnaW5nLnNlYXJjaC5iZWZvcmVUaW1lc3RhbXAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJERC1NTS1ZWVlZXCJcbiAgICAgICAgW2RhdGVGb3JtYXRdPVwiJ2QtbS1ZJ1wiXG4gICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvbkRhdGVTZWxlY3RlZCgnYmVmb3JlVGltZXN0YW1wJywgJGV2ZW50KVwiXG4gICAgICA+PC9jZHMtZGF0ZS1waWNrZXI+XG4gICAgPC9kaXY+XG4gIDwvc2VjdGlvbj5cblxuICA8c2VjdGlvbiBmb3JtQXJyYXlOYW1lPVwicHJvcGVydGllc1wiIGNsYXNzPVwidmFsdGltby1sb2ctc2VhcmNoX19wcm9wZXJ0aWVzXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJ2YWx0aW1vLWxvZy1zZWFyY2hfX2xhYmVsXCI+IHt7ICdsb2dnaW5nLnNlYXJjaC5wcm9wZXJ0aWVzJyB8IHRyYW5zbGF0ZSB9fSA8L3NwYW4+XG5cbiAgICBAZm9yIChwcm9wZXJ0eUdyb3VwIG9mIHByb3BlcnRpZXNBcnJheS5jb250cm9sczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cInByb3BlcnR5R3JvdXBcIiBjbGFzcz1cInZhbHRpbW8tbG9nLXNlYXJjaF9fcHJvcGVydHlcIj5cbiAgICAgICAgPGNkcy10ZXh0LWxhYmVsPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgY2RzVGV4dFxuICAgICAgICAgICAgW2F0dHIuZGF0YS1jYXJib24tdGhlbWVdPVwidGhlbWVcIlxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwia2V5XCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInaW50ZXJmYWNlLmtleScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvY2RzLXRleHQtbGFiZWw+XG5cbiAgICAgICAgPGNkcy10ZXh0LWxhYmVsPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgY2RzVGV4dFxuICAgICAgICAgICAgW2F0dHIuZGF0YS1jYXJib24tdGhlbWVdPVwidGhlbWVcIlxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidmFsdWVcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidpbnRlcmZhY2UudmFsdWUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Nkcy10ZXh0LWxhYmVsPlxuXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjZHNCdXR0b249XCJkYW5nZXItLWdob3N0XCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiJGNvdW50ID09PSAxXCJcbiAgICAgICAgICBpY29uT25seT1cInRydWVcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIChjbGljayk9XCJyZW1vdmVQcm9wZXJ0eVNlYXJjaEZpZWxkKCRpbmRleClcIlxuICAgICAgICA+XG4gICAgICAgICAgPHN2ZyBjbGFzcz1cImNkcy0tYnRuX19pY29uXCIgY2RzSWNvbj1cInRyYXNoLWNhblwiIHNpemU9XCIxNlwiPjwvc3ZnPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZm9ybT5cbiAgICB9XG5cbiAgICA8YnV0dG9uIGNkc0J1dHRvbj1cInByaW1hcnlcIiBzaXplPVwic21cIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImFkZFByb3BlcnR5U2VhcmNoRmllbGQoKVwiPlxuICAgICAge3sgJ2xvZ2dpbmcuc2VhcmNoLmFkZFByb3BlcnR5JyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgICA8c3ZnIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIiBjZHNJY29uPVwiYWRkXCIgc2l6ZT1cIjE2XCI+PC9zdmc+XG4gICAgPC9idXR0b24+XG4gIDwvc2VjdGlvbj5cblxuICA8YnV0dG9uIGNkc0J1dHRvbj1cInRlcnRpYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvbkNsZWFyRmlsdGVyKClcIj5cbiAgICB7eyAnaW50ZXJmYWNlLmNsZWFyJyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgPHN2ZyBjbGFzcz1cImNkcy0tYnRuX19pY29uXCIgY2RzSWNvbj1cInRyYXNoLWNhblwiIHNpemU9XCIxNlwiPjwvc3ZnPlxuICA8L2J1dHRvbj5cbjwvZm9ybT5cbiJdfQ==
@@ -15,14 +15,178 @@
15
15
  */
16
16
  import { CommonModule } from '@angular/common';
17
17
  import { ChangeDetectionStrategy, Component } from '@angular/core';
18
+ import { Filter16, TrashCan16 } from '@carbon/icons';
18
19
  import { TranslateModule } from '@ngx-translate/core';
20
+ import { CARBON_CONSTANTS, CarbonListModule, DEFAULT_PAGINATION, ViewType, } from '@valtimo/components';
21
+ import { ButtonModule, DialogModule, DropdownModule, IconModule, } from 'carbon-components-angular';
22
+ import { BehaviorSubject, combineLatest, map, startWith, Subscription, switchMap, take, tap, } from 'rxjs';
23
+ import { LOG_ELLIPSIS_LIMIT, LOG_LEVEL_TAG, } from '../../models';
24
+ import { LoggingApiService } from '../../services';
25
+ import { LogDetailsComponent } from '../log-details/log-details.component';
26
+ import { LogSearchComponent } from '../log-search/log-search.component';
19
27
  import * as i0 from "@angular/core";
28
+ import * as i1 from "@angular/router";
29
+ import * as i2 from "carbon-components-angular";
30
+ import * as i3 from "../../services";
31
+ import * as i4 from "@angular/common";
32
+ import * as i5 from "@ngx-translate/core";
33
+ import * as i6 from "@valtimo/components";
20
34
  export class LoggingListComponent {
21
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LoggingListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
22
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: LoggingListComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\nLogging works!\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslateModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
35
+ constructor(activatedRoute, iconService, loggingApiService, router) {
36
+ this.activatedRoute = activatedRoute;
37
+ this.iconService = iconService;
38
+ this.loggingApiService = loggingApiService;
39
+ this.router = router;
40
+ this.loading$ = new BehaviorSubject(true);
41
+ this.logItems$ = this.activatedRoute.queryParamMap.pipe(tap(() => this.loading$.next(true)), switchMap(queryParams => this.loggingApiService.getTechnicalLogs({
42
+ ...queryParams['params'],
43
+ ...(!!queryParams['params']?.properties && {
44
+ properties: this.base64ToObject(queryParams['params'].properties),
45
+ }),
46
+ })), map((loggingPage) => {
47
+ this.pagination$.next({
48
+ ...this.pagination$.getValue(),
49
+ collectionSize: loggingPage.totalElements,
50
+ });
51
+ return loggingPage.content.map((logEvent) => ({
52
+ ...logEvent,
53
+ tags: [
54
+ {
55
+ content: logEvent.level,
56
+ type: LOG_LEVEL_TAG[logEvent.level],
57
+ },
58
+ ],
59
+ }));
60
+ }), startWith([]), tap(() => {
61
+ this.loading$.next(false);
62
+ }));
63
+ this.searchRequest$ = new BehaviorSubject({});
64
+ this.pagination$ = new BehaviorSubject(DEFAULT_PAGINATION);
65
+ this.logDetailsOpen$ = new BehaviorSubject(false);
66
+ this.selectedLogEvent$ = new BehaviorSubject(null);
67
+ this.FIELDS = [
68
+ {
69
+ key: 'timestamp',
70
+ label: 'logging.columns.timestamp',
71
+ viewType: ViewType.DATE_TIME,
72
+ },
73
+ {
74
+ key: 'level',
75
+ label: 'logging.columns.level',
76
+ viewType: ViewType.TAGS,
77
+ },
78
+ {
79
+ key: 'formattedMessage',
80
+ label: 'logging.columns.formattedMessage',
81
+ viewType: ViewType.TEXT,
82
+ tooltipCharLimit: LOG_ELLIPSIS_LIMIT,
83
+ },
84
+ ];
85
+ this._subscriptions = new Subscription();
86
+ this.iconService.registerAll([Filter16, TrashCan16]);
87
+ }
88
+ ngOnInit() {
89
+ this.setInitialParams();
90
+ }
91
+ ngOnDestroy() {
92
+ this._subscriptions.unsubscribe();
93
+ }
94
+ onCloseModalEvent() {
95
+ this.logDetailsOpen$.next(false);
96
+ setTimeout(() => {
97
+ this.selectedLogEvent$.next(null);
98
+ }, CARBON_CONSTANTS.modalAnimationMs);
99
+ }
100
+ onPaginationClicked(page, logItems) {
101
+ const activePagination = this.pagination$.getValue();
102
+ const searchRequest = this.searchRequest$.getValue();
103
+ if (!searchRequest.beforeTimestamp && activePagination.page === 1)
104
+ this.searchRequest$.next({ ...searchRequest, beforeTimestamp: logItems[0].timestamp });
105
+ this.pagination$.next({ ...activePagination, page });
106
+ }
107
+ onPaginationSet(size) {
108
+ const { collectionSize, page } = this.pagination$.getValue();
109
+ const resetPage = Math.ceil(+collectionSize / size) <= +page && +collectionSize > 0;
110
+ this.pagination$.next({ ...this.pagination$.getValue(), size, ...(resetPage && { page: 1 }) });
111
+ }
112
+ onRowClickedEvent(rowClickEvent) {
113
+ const { ctrlClick: _, ...logEvent } = rowClickEvent;
114
+ this.logDetailsOpen$.next(true);
115
+ this.selectedLogEvent$.next(logEvent);
116
+ }
117
+ onSearchSubmitEvent(searchRequest) {
118
+ this.searchRequest$.next(searchRequest);
119
+ }
120
+ onClearFilter() {
121
+ this.onSearchSubmitEvent({});
122
+ }
123
+ base64ToObject(base64string) {
124
+ return JSON.parse(atob(base64string));
125
+ }
126
+ objectToBase64(jsObject) {
127
+ return btoa(JSON.stringify(jsObject));
128
+ }
129
+ openQueryParamsSubscription() {
130
+ this._subscriptions.add(combineLatest([this.pagination$, this.searchRequest$]).subscribe(([pagination, searchRequest]) => {
131
+ const { size, page } = pagination;
132
+ this.router.navigate(['/logging'], {
133
+ queryParams: {
134
+ size,
135
+ page: page - 1,
136
+ ...{
137
+ ...searchRequest,
138
+ ...(!!searchRequest.properties?.length && {
139
+ properties: this.objectToBase64(searchRequest.properties),
140
+ }),
141
+ },
142
+ },
143
+ });
144
+ }));
145
+ }
146
+ mapQueryParamsToSearchRequest(queryParams) {
147
+ return {
148
+ ...(!!queryParams.likeFormattedMessage && {
149
+ likeFormattedMessage: queryParams.likeFormattedMessage,
150
+ }),
151
+ ...(!!queryParams.level && { level: queryParams.level }),
152
+ ...(!!queryParams.afterTimestamp && { afterTimestamp: queryParams.afterTimestamp }),
153
+ ...(!!queryParams.beforeTimestamp && { beforeTimestamp: queryParams.beforeTimestamp }),
154
+ ...(!!queryParams.properties && {
155
+ properties: this.base64ToObject(queryParams.properties),
156
+ }),
157
+ };
158
+ }
159
+ setInitialParams() {
160
+ this.activatedRoute.queryParamMap
161
+ .pipe(take(1), map(queryParams => {
162
+ const { size, page, ...searchRequest } = queryParams['params'];
163
+ return { size, page, searchRequest };
164
+ }))
165
+ .subscribe(({ size, page, searchRequest }) => {
166
+ this.searchRequest$.next(this.mapQueryParamsToSearchRequest(searchRequest));
167
+ this.pagination$.next({
168
+ ...this.pagination$.getValue(),
169
+ size: +size,
170
+ page: +(page ?? 0) + 1,
171
+ });
172
+ this.openQueryParamsSubscription();
173
+ });
174
+ }
175
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LoggingListComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.IconService }, { token: i3.LoggingApiService }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
176
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: LoggingListComponent, isStandalone: true, selector: "ng-component", providers: [LoggingApiService], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-carbon-list\n *ngIf=\"logItems$ | async as logItems\"\n [items]=\"logItems\"\n [fields]=\"FIELDS\"\n [loading]=\"loading$ | async\"\n [pagination]=\"pagination$ | async\"\n paginationIdentifier=\"logging\"\n (paginationClicked)=\"onPaginationClicked($event, logItems)\"\n (paginationSet)=\"onPaginationSet($event)\"\n (rowClicked)=\"onRowClickedEvent($event)\"\n>\n <valtimo-no-results\n [action]=\"clearSearchButton\"\n [description]=\"'logging.noResults.description' | translate\"\n [title]=\"'logging.noResults.title' | translate\"\n ></valtimo-no-results>\n\n <button\n carbonToolbarContent\n [cdsOverflowMenu]=\"logSearch\"\n [customPane]=\"true\"\n [iconOnly]=\"true\"\n [flip]=\"true\"\n [offset]=\"{x: 0, y: 47}\"\n cdsButton=\"ghost\"\n placement=\"bottom\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"filter\" size=\"16\"></svg>\n </button>\n</valtimo-carbon-list>\n\n<valtimo-log-details\n [open]=\"logDetailsOpen$ | async\"\n [logEvent]=\"selectedLogEvent$ | async\"\n (closeModalEvent)=\"onCloseModalEvent()\"\n></valtimo-log-details>\n\n<ng-template #logSearch>\n <valtimo-log-search\n [initSearchRequest]=\"searchRequest$ | async\"\n (searchSubmitEvent)=\"onSearchSubmitEvent($event)\"\n ></valtimo-log-search>\n</ng-template>\n\n<ng-template #clearSearchButton>\n <button cdsButton=\"primary\" (click)=\"onClearFilter()\">\n {{ 'interface.clear' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n</ng-template>\n", styles: ["::ng-deep .cds--overflow-menu-options.cds--overflow-menu-options--open{max-width:max-content!important;width:max-content!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i2.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: CarbonListModule }, { kind: "component", type: i6.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "actions", "actionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i6.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "ngmodule", type: DialogModule }, { kind: "directive", type: i2.OverflowMenuDirective, selector: "[cdsOverflowMenu], [ibmOverflowMenu]", inputs: ["ibmOverflowMenu", "cdsOverflowMenu", "flip", "offset", "wrapperClass", "customPane"], exportAs: ["overflowMenu"] }, { kind: "ngmodule", type: DropdownModule }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i2.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: LogDetailsComponent, selector: "valtimo-log-details", inputs: ["open", "logEvent"], outputs: ["closeModalEvent"] }, { kind: "component", type: LogSearchComponent, selector: "valtimo-log-search", inputs: ["initSearchRequest"], outputs: ["searchSubmitEvent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
23
177
  }
24
178
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LoggingListComponent, decorators: [{
25
179
  type: Component,
26
- args: [{ standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, TranslateModule], template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\nLogging works!\n" }]
27
- }] });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2luZy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vbG9nZ2luZy9zcmMvbGliL2NvbXBvbmVudHMvbG9nZ2luZy1saXN0L2xvZ2dpbmctbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2xvZ2dpbmcvc3JjL2xpYi9jb21wb25lbnRzL2xvZ2dpbmctbGlzdC9sb2dnaW5nLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUM7O0FBUXBELE1BQU0sT0FBTyxvQkFBb0I7K0dBQXBCLG9CQUFvQjttR0FBcEIsb0JBQW9CLHdFQzFCakMsa3FCQWlCQSwyQ0RPWSxZQUFZLDhCQUFFLGVBQWU7OzRGQUU1QixvQkFBb0I7a0JBTmhDLFNBQVM7aUNBRUksSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDLENBQUMsWUFBWSxFQUFFLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDIzIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi9sb2dnaW5nLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgVHJhbnNsYXRlTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgTG9nZ2luZ0xpc3RDb21wb25lbnQge31cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuTG9nZ2luZyB3b3JrcyFcbiJdfQ==
180
+ args: [{ standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
181
+ CommonModule,
182
+ TranslateModule,
183
+ ButtonModule,
184
+ CarbonListModule,
185
+ DialogModule,
186
+ DropdownModule,
187
+ IconModule,
188
+ LogDetailsComponent,
189
+ LogSearchComponent,
190
+ ], providers: [LoggingApiService], template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-carbon-list\n *ngIf=\"logItems$ | async as logItems\"\n [items]=\"logItems\"\n [fields]=\"FIELDS\"\n [loading]=\"loading$ | async\"\n [pagination]=\"pagination$ | async\"\n paginationIdentifier=\"logging\"\n (paginationClicked)=\"onPaginationClicked($event, logItems)\"\n (paginationSet)=\"onPaginationSet($event)\"\n (rowClicked)=\"onRowClickedEvent($event)\"\n>\n <valtimo-no-results\n [action]=\"clearSearchButton\"\n [description]=\"'logging.noResults.description' | translate\"\n [title]=\"'logging.noResults.title' | translate\"\n ></valtimo-no-results>\n\n <button\n carbonToolbarContent\n [cdsOverflowMenu]=\"logSearch\"\n [customPane]=\"true\"\n [iconOnly]=\"true\"\n [flip]=\"true\"\n [offset]=\"{x: 0, y: 47}\"\n cdsButton=\"ghost\"\n placement=\"bottom\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"filter\" size=\"16\"></svg>\n </button>\n</valtimo-carbon-list>\n\n<valtimo-log-details\n [open]=\"logDetailsOpen$ | async\"\n [logEvent]=\"selectedLogEvent$ | async\"\n (closeModalEvent)=\"onCloseModalEvent()\"\n></valtimo-log-details>\n\n<ng-template #logSearch>\n <valtimo-log-search\n [initSearchRequest]=\"searchRequest$ | async\"\n (searchSubmitEvent)=\"onSearchSubmitEvent($event)\"\n ></valtimo-log-search>\n</ng-template>\n\n<ng-template #clearSearchButton>\n <button cdsButton=\"primary\" (click)=\"onClearFilter()\">\n {{ 'interface.clear' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n</ng-template>\n", styles: ["::ng-deep .cds--overflow-menu-options.cds--overflow-menu-options--open{max-width:max-content!important;width:max-content!important}\n"] }]
191
+ }], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i2.IconService }, { type: i3.LoggingApiService }, { type: i1.Router }] });
192
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2luZy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vbG9nZ2luZy9zcmMvbGliL2NvbXBvbmVudHMvbG9nZ2luZy1saXN0L2xvZ2dpbmctbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2xvZ2dpbmcvc3JjL2xpYi9jb21wb25lbnRzL2xvZ2dpbmctbGlzdC9sb2dnaW5nLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFFcEYsT0FBTyxFQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFDTCxnQkFBZ0IsRUFFaEIsZ0JBQWdCLEVBRWhCLGtCQUFrQixFQUVsQixRQUFRLEdBQ1QsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixPQUFPLEVBQ0wsWUFBWSxFQUNaLFlBQVksRUFDWixjQUFjLEVBQ2QsVUFBVSxHQUVYLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUNMLGVBQWUsRUFDZixhQUFhLEVBQ2IsR0FBRyxFQUVILFNBQVMsRUFDVCxZQUFZLEVBQ1osU0FBUyxFQUNULElBQUksRUFDSixHQUFHLEdBQ0osTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLGFBQWEsR0FLZCxNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFP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QUFvQjtrQkFsQmhDLFNBQVM7aUNBR0ksSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDO3dCQUNQLFlBQVk7d0JBQ1osZUFBZTt3QkFDZixZQUFZO3dCQUNaLGdCQUFnQjt3QkFDaEIsWUFBWTt3QkFDWixjQUFjO3dCQUNkLFVBQVU7d0JBQ1YsbUJBQW1CO3dCQUNuQixrQkFBa0I7cUJBQ25CLGFBQ1UsQ0FBQyxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDIzIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtGaWx0ZXIxNiwgVHJhc2hDYW4xNn0gZnJvbSAnQGNhcmJvbi9pY29ucyc7XG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge1xuICBDQVJCT05fQ09OU1RBTlRTLFxuICBDYXJib25MaXN0SXRlbSxcbiAgQ2FyYm9uTGlzdE1vZHVsZSxcbiAgQ29sdW1uQ29uZmlnLFxuICBERUZBVUxUX1BBR0lOQVRJT04sXG4gIFBhZ2luYXRpb24sXG4gIFZpZXdUeXBlLFxufSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCB7UGFnZX0gZnJvbSAnQHZhbHRpbW8vY29uZmlnJztcbmltcG9ydCB7XG4gIEJ1dHRvbk1vZHVsZSxcbiAgRGlhbG9nTW9kdWxlLFxuICBEcm9wZG93bk1vZHVsZSxcbiAgSWNvbk1vZHVsZSxcbiAgSWNvblNlcnZpY2UsXG59IGZyb20gJ2NhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXInO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBjb21iaW5lTGF0ZXN0LFxuICBtYXAsXG4gIE9ic2VydmFibGUsXG4gIHN0YXJ0V2l0aCxcbiAgU3Vic2NyaXB0aW9uLFxuICBzd2l0Y2hNYXAsXG4gIHRha2UsXG4gIHRhcCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBMT0dfRUxMSVBTSVNfTElNSVQsXG4gIExPR19MRVZFTF9UQUcsXG4gIExvZ2dpbmdFdmVudCxcbiAgTG9nZ2luZ0V2ZW50UHJvcGVydHksXG4gIExvZ2dpbmdFdmVudFF1ZXJ5UGFyYW1zLFxuICBMb2dnaW5nRXZlbnRTZWFyY2hSZXF1ZXN0LFxufSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtMb2dnaW5nQXBpU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtMb2dEZXRhaWxzQ29tcG9uZW50fSBmcm9tICcuLi9sb2ctZGV0YWlscy9sb2ctZGV0YWlscy5jb21wb25lbnQnO1xuaW1wb3J0IHtMb2dTZWFyY2hDb21wb25lbnR9IGZyb20gJy4uL2xvZy1zZWFyY2gvbG9nLXNlYXJjaC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6ICcuL2xvZ2dpbmctbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9sb2dnaW5nLWxpc3QuY29tcG9uZW50LnNjc3MnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgQnV0dG9uTW9kdWxlLFxuICAgIENhcmJvbkxpc3RNb2R1bGUsXG4gICAgRGlhbG9nTW9kdWxlLFxuICAgIERyb3Bkb3duTW9kdWxlLFxuICAgIEljb25Nb2R1bGUsXG4gICAgTG9nRGV0YWlsc0NvbXBvbmVudCxcbiAgICBMb2dTZWFyY2hDb21wb25lbnQsXG4gIF0sXG4gIHByb3ZpZGVyczogW0xvZ2dpbmdBcGlTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgTG9nZ2luZ0xpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHB1YmxpYyByZWFkb25seSBsb2FkaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gIHB1YmxpYyByZWFkb25seSBsb2dJdGVtcyQ6IE9ic2VydmFibGU8Q2FyYm9uTGlzdEl0ZW0+ID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5xdWVyeVBhcmFtTWFwLnBpcGUoXG4gICAgdGFwKCgpID0+IHRoaXMubG9hZGluZyQubmV4dCh0cnVlKSksXG4gICAgc3dpdGNoTWFwKHF1ZXJ5UGFyYW1zID0+XG4gICAgICB0aGlzLmxvZ2dpbmdBcGlTZXJ2aWNlLmdldFRlY2huaWNhbExvZ3Moe1xuICAgICAgICAuLi5xdWVyeVBhcmFtc1sncGFyYW1zJ10sXG4gICAgICAgIC4uLighIXF1ZXJ5UGFyYW1zWydwYXJhbXMnXT8ucHJvcGVydGllcyAmJiB7XG4gICAgICAgICAgcHJvcGVydGllczogdGhpcy5iYXNlNjRUb09iamVjdChxdWVyeVBhcmFtc1sncGFyYW1zJ10ucHJvcGVydGllcyksXG4gICAgICAgIH0pLFxuICAgICAgfSlcbiAgICApLFxuICAgIG1hcCgobG9nZ2luZ1BhZ2U6IFBhZ2U8TG9nZ2luZ0V2ZW50PikgPT4ge1xuICAgICAgdGhpcy5wYWdpbmF0aW9uJC5uZXh0KHtcbiAgICAgICAgLi4udGhpcy5wYWdpbmF0aW9uJC5nZXRWYWx1ZSgpLFxuICAgICAgICBjb2xsZWN0aW9uU2l6ZTogbG9nZ2luZ1BhZ2UudG90YWxFbGVtZW50cyxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gbG9nZ2luZ1BhZ2UuY29udGVudC5tYXAoKGxvZ0V2ZW50OiBMb2dnaW5nRXZlbnQpID0+ICh7XG4gICAgICAgIC4uLmxvZ0V2ZW50LFxuICAgICAgICB0YWdzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29udGVudDogbG9nRXZlbnQubGV2ZWwsXG4gICAgICAgICAgICB0eXBlOiBMT0dfTEVWRUxfVEFHW2xvZ0V2ZW50LmxldmVsXSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSkpO1xuICAgIH0pLFxuICAgIHN0YXJ0V2l0aChbXSksXG4gICAgdGFwKCgpID0+IHtcbiAgICAgIHRoaXMubG9hZGluZyQubmV4dChmYWxzZSk7XG4gICAgfSlcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgc2VhcmNoUmVxdWVzdCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PExvZ2dpbmdFdmVudFNlYXJjaFJlcXVlc3Q+KHt9KTtcbiAgcHVibGljIHJlYWRvbmx5IHBhZ2luYXRpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxQYWdpbmF0aW9uPihERUZBVUxUX1BBR0lOQVRJT04pO1xuICBwdWJsaWMgcmVhZG9ubHkgbG9nRGV0YWlsc09wZW4kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBzZWxlY3RlZExvZ0V2ZW50JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TG9nZ2luZ0V2ZW50IHwgbnVsbD4obnVsbCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IEZJRUxEUzogQ29sdW1uQ29uZmlnW10gPSBbXG4gICAge1xuICAgICAga2V5OiAndGltZXN0YW1wJyxcbiAgICAgIGxhYmVsOiAnbG9nZ2luZy5jb2x1bW5zLnRpbWVzdGFtcCcsXG4gICAgICB2aWV3VHlwZTogVmlld1R5cGUuREFURV9USU1FLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnbGV2ZWwnLFxuICAgICAgbGFiZWw6ICdsb2dnaW5nLmNvbHVtbnMubGV2ZWwnLFxuICAgICAgdmlld1R5cGU6IFZpZXdUeXBlLlRBR1MsXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdmb3JtYXR0ZWRNZXNzYWdlJyxcbiAgICAgIGxhYmVsOiAnbG9nZ2luZy5jb2x1bW5zLmZvcm1hdHRlZE1lc3NhZ2UnLFxuICAgICAgdmlld1R5cGU6IFZpZXdUeXBlLlRFWFQsXG4gICAgICB0b29sdGlwQ2hhckxpbWl0OiBMT0dfRUxMSVBTSVNfTElNSVQsXG4gICAgfSxcbiAgXTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9zdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaWNvblNlcnZpY2U6IEljb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2luZ0FwaVNlcnZpY2U6IExvZ2dpbmdBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXJcbiAgKSB7XG4gICAgdGhpcy5pY29uU2VydmljZS5yZWdpc3RlckFsbChbRmlsdGVyMTYsIFRyYXNoQ2FuMTZdKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldEluaXRpYWxQYXJhbXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgb25DbG9zZU1vZGFsRXZlbnQoKTogdm9pZCB7XG4gICAgdGhpcy5sb2dEZXRhaWxzT3BlbiQubmV4dChmYWxzZSk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRMb2dFdmVudCQubmV4dChudWxsKTtcbiAgICB9LCBDQVJCT05fQ09OU1RBTlRTLm1vZGFsQW5pbWF0aW9uTXMpO1xuICB9XG5cbiAgcHVibGljIG9uUGFnaW5hdGlvbkNsaWNrZWQocGFnZTogbnVtYmVyLCBsb2dJdGVtczogQ2FyYm9uTGlzdEl0ZW1bXSk6IHZvaWQge1xuICAgIGNvbnN0IGFjdGl2ZVBhZ2luYXRpb246IFBhZ2luYXRpb24gPSB0aGlzLnBhZ2luYXRpb24kLmdldFZhbHVlKCk7XG4gICAgY29uc3Qgc2VhcmNoUmVxdWVzdDogTG9nZ2luZ0V2ZW50U2VhcmNoUmVxdWVzdCA9IHRoaXMuc2VhcmNoUmVxdWVzdCQuZ2V0VmFsdWUoKTtcblxuICAgIGlmICghc2VhcmNoUmVxdWVzdC5iZWZvcmVUaW1lc3RhbXAgJiYgYWN0aXZlUGFnaW5hdGlvbi5wYWdlID09PSAxKVxuICAgICAgdGhpcy5zZWFyY2hSZXF1ZXN0JC5uZXh0KHsuLi5zZWFyY2hSZXF1ZXN0LCBiZWZvcmVUaW1lc3RhbXA6IGxvZ0l0ZW1zWzBdLnRpbWVzdGFtcH0pO1xuXG4gICAgdGhpcy5wYWdpbmF0aW9uJC5uZXh0KHsuLi5hY3RpdmVQYWdpbmF0aW9uLCBwYWdlfSk7XG4gIH1cblxuICBwdWJsaWMgb25QYWdpbmF0aW9uU2V0KHNpemU6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IHtjb2xsZWN0aW9uU2l6ZSwgcGFnZX0gPSB0aGlzLnBhZ2luYXRpb24kLmdldFZhbHVlKCk7XG4gICAgY29uc3QgcmVzZXRQYWdlOiBib29sZWFuID0gTWF0aC5jZWlsKCtjb2xsZWN0aW9uU2l6ZSAvIHNpemUpIDw9ICtwYWdlICYmICtjb2xsZWN0aW9uU2l6ZSA+IDA7XG5cbiAgICB0aGlzLnBhZ2luYXRpb24kLm5leHQoey4uLnRoaXMucGFnaW5hdGlvbiQuZ2V0VmFsdWUoKSwgc2l6ZSwgLi4uKHJlc2V0UGFnZSAmJiB7cGFnZTogMX0pfSk7XG4gIH1cblxuICBwdWJsaWMgb25Sb3dDbGlja2VkRXZlbnQocm93Q2xpY2tFdmVudDogTG9nZ2luZ0V2ZW50ICYge2N0cmxDbGljazogYm9vbGVhbn0pOiB2b2lkIHtcbiAgICBjb25zdCB7Y3RybENsaWNrOiBfLCAuLi5sb2dFdmVudH0gPSByb3dDbGlja0V2ZW50O1xuICAgIHRoaXMubG9nRGV0YWlsc09wZW4kLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5zZWxlY3RlZExvZ0V2ZW50JC5uZXh0KGxvZ0V2ZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBvblNlYXJjaFN1Ym1pdEV2ZW50KHNlYXJjaFJlcXVlc3Q6IExvZ2dpbmdFdmVudFNlYXJjaFJlcXVlc3QpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaFJlcXVlc3QkLm5leHQoc2VhcmNoUmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgb25DbGVhckZpbHRlcigpOiB2b2lkIHtcbiAgICB0aGlzLm9uU2VhcmNoU3VibWl0RXZlbnQoe30pO1xuICB9XG5cbiAgcHJpdmF0ZSBiYXNlNjRUb09iamVjdChiYXNlNjRzdHJpbmc6IHN0cmluZyk6IG9iamVjdCB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoYXRvYihiYXNlNjRzdHJpbmcpKTtcbiAgfVxuXG4gIHByaXZhdGUgb2JqZWN0VG9CYXNlNjQoanNPYmplY3Q6IG9iamVjdCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGJ0b2EoSlNPTi5zdHJpbmdpZnkoanNPYmplY3QpKTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlblF1ZXJ5UGFyYW1zU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgY29tYmluZUxhdGVzdChbdGhpcy5wYWdpbmF0aW9uJCwgdGhpcy5zZWFyY2hSZXF1ZXN0JF0pLnN1YnNjcmliZShcbiAgICAgICAgKFtwYWdpbmF0aW9uLCBzZWFyY2hSZXF1ZXN0XSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHtzaXplLCBwYWdlfSA9IHBhZ2luYXRpb247XG5cbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9sb2dnaW5nJ10sIHtcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgICAgICAgIHNpemUsXG4gICAgICAgICAgICAgIHBhZ2U6IHBhZ2UgLSAxLFxuICAgICAgICAgICAgICAuLi57XG4gICAgICAgICAgICAgICAgLi4uc2VhcmNoUmVxdWVzdCxcbiAgICAgICAgICAgICAgICAuLi4oISFzZWFyY2hSZXF1ZXN0LnByb3BlcnRpZXM/Lmxlbmd0aCAmJiB7XG4gICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB0aGlzLm9iamVjdFRvQmFzZTY0KHNlYXJjaFJlcXVlc3QucHJvcGVydGllcyksXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwUXVlcnlQYXJhbXNUb1NlYXJjaFJlcXVlc3QoXG4gICAgcXVlcnlQYXJhbXM6IExvZ2dpbmdFdmVudFF1ZXJ5UGFyYW1zXG4gICk6IExvZ2dpbmdFdmVudFNlYXJjaFJlcXVlc3Qge1xuICAgIHJldHVybiB7XG4gICAgICAuLi4oISFxdWVyeVBhcmFtcy5saWtlRm9ybWF0dGVkTWVzc2FnZSAmJiB7XG4gICAgICAgIGxpa2VGb3JtYXR0ZWRNZXNzYWdlOiBxdWVyeVBhcmFtcy5saWtlRm9ybWF0dGVkTWVzc2FnZSxcbiAgICAgIH0pLFxuICAgICAgLi4uKCEhcXVlcnlQYXJhbXMubGV2ZWwgJiYge2xldmVsOiBxdWVyeVBhcmFtcy5sZXZlbH0pLFxuICAgICAgLi4uKCEhcXVlcnlQYXJhbXMuYWZ0ZXJUaW1lc3RhbXAgJiYge2FmdGVyVGltZXN0YW1wOiBxdWVyeVBhcmFtcy5hZnRlclRpbWVzdGFtcH0pLFxuICAgICAgLi4uKCEhcXVlcnlQYXJhbXMuYmVmb3JlVGltZXN0YW1wICYmIHtiZWZvcmVUaW1lc3RhbXA6IHF1ZXJ5UGFyYW1zLmJlZm9yZVRpbWVzdGFtcH0pLFxuICAgICAgLi4uKCEhcXVlcnlQYXJhbXMucHJvcGVydGllcyAmJiB7XG4gICAgICAgIHByb3BlcnRpZXM6IHRoaXMuYmFzZTY0VG9PYmplY3QocXVlcnlQYXJhbXMucHJvcGVydGllcykgYXMgQXJyYXk8TG9nZ2luZ0V2ZW50UHJvcGVydHk+LFxuICAgICAgfSksXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0SW5pdGlhbFBhcmFtcygpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnF1ZXJ5UGFyYW1NYXBcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICBtYXAocXVlcnlQYXJhbXMgPT4ge1xuICAgICAgICAgIGNvbnN0IHtzaXplLCBwYWdlLCAuLi5zZWFyY2hSZXF1ZXN0fSA9IHF1ZXJ5UGFyYW1zWydwYXJhbXMnXTtcbiAgICAgICAgICByZXR1cm4ge3NpemUsIHBhZ2UsIHNlYXJjaFJlcXVlc3R9O1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoe3NpemUsIHBhZ2UsIHNlYXJjaFJlcXVlc3R9KSA9PiB7XG4gICAgICAgIHRoaXMuc2VhcmNoUmVxdWVzdCQubmV4dCh0aGlzLm1hcFF1ZXJ5UGFyYW1zVG9TZWFyY2hSZXF1ZXN0KHNlYXJjaFJlcXVlc3QpKTtcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uJC5uZXh0KHtcbiAgICAgICAgICAuLi50aGlzLnBhZ2luYXRpb24kLmdldFZhbHVlKCksXG4gICAgICAgICAgc2l6ZTogK3NpemUsXG4gICAgICAgICAgcGFnZTogKyhwYWdlID8/IDApICsgMSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5vcGVuUXVlcnlQYXJhbXNTdWJzY3JpcHRpb24oKTtcbiAgICAgIH0pO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjx2YWx0aW1vLWNhcmJvbi1saXN0XG4gICpuZ0lmPVwibG9nSXRlbXMkIHwgYXN5bmMgYXMgbG9nSXRlbXNcIlxuICBbaXRlbXNdPVwibG9nSXRlbXNcIlxuICBbZmllbGRzXT1cIkZJRUxEU1wiXG4gIFtsb2FkaW5nXT1cImxvYWRpbmckIHwgYXN5bmNcIlxuICBbcGFnaW5hdGlvbl09XCJwYWdpbmF0aW9uJCB8IGFzeW5jXCJcbiAgcGFnaW5hdGlvbklkZW50aWZpZXI9XCJsb2dnaW5nXCJcbiAgKHBhZ2luYXRpb25DbGlja2VkKT1cIm9uUGFnaW5hdGlvbkNsaWNrZWQoJGV2ZW50LCBsb2dJdGVtcylcIlxuICAocGFnaW5hdGlvblNldCk9XCJvblBhZ2luYXRpb25TZXQoJGV2ZW50KVwiXG4gIChyb3dDbGlja2VkKT1cIm9uUm93Q2xpY2tlZEV2ZW50KCRldmVudClcIlxuPlxuICA8dmFsdGltby1uby1yZXN1bHRzXG4gICAgW2FjdGlvbl09XCJjbGVhclNlYXJjaEJ1dHRvblwiXG4gICAgW2Rlc2NyaXB0aW9uXT1cIidsb2dnaW5nLm5vUmVzdWx0cy5kZXNjcmlwdGlvbicgfCB0cmFuc2xhdGVcIlxuICAgIFt0aXRsZV09XCInbG9nZ2luZy5ub1Jlc3VsdHMudGl0bGUnIHwgdHJhbnNsYXRlXCJcbiAgPjwvdmFsdGltby1uby1yZXN1bHRzPlxuXG4gIDxidXR0b25cbiAgICBjYXJib25Ub29sYmFyQ29udGVudFxuICAgIFtjZHNPdmVyZmxvd01lbnVdPVwibG9nU2VhcmNoXCJcbiAgICBbY3VzdG9tUGFuZV09XCJ0cnVlXCJcbiAgICBbaWNvbk9ubHldPVwidHJ1ZVwiXG4gICAgW2ZsaXBdPVwidHJ1ZVwiXG4gICAgW29mZnNldF09XCJ7eDogMCwgeTogNDd9XCJcbiAgICBjZHNCdXR0b249XCJnaG9zdFwiXG4gICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgPlxuICAgIDxzdmcgY2xhc3M9XCJjZHMtLWJ0bl9faWNvblwiIGNkc0ljb249XCJmaWx0ZXJcIiBzaXplPVwiMTZcIj48L3N2Zz5cbiAgPC9idXR0b24+XG48L3ZhbHRpbW8tY2FyYm9uLWxpc3Q+XG5cbjx2YWx0aW1vLWxvZy1kZXRhaWxzXG4gIFtvcGVuXT1cImxvZ0RldGFpbHNPcGVuJCB8IGFzeW5jXCJcbiAgW2xvZ0V2ZW50XT1cInNlbGVjdGVkTG9nRXZlbnQkIHwgYXN5bmNcIlxuICAoY2xvc2VNb2RhbEV2ZW50KT1cIm9uQ2xvc2VNb2RhbEV2ZW50KClcIlxuPjwvdmFsdGltby1sb2ctZGV0YWlscz5cblxuPG5nLXRlbXBsYXRlICNsb2dTZWFyY2g+XG4gIDx2YWx0aW1vLWxvZy1zZWFyY2hcbiAgICBbaW5pdFNlYXJjaFJlcXVlc3RdPVwic2VhcmNoUmVxdWVzdCQgfCBhc3luY1wiXG4gICAgKHNlYXJjaFN1Ym1pdEV2ZW50KT1cIm9uU2VhcmNoU3VibWl0RXZlbnQoJGV2ZW50KVwiXG4gID48L3ZhbHRpbW8tbG9nLXNlYXJjaD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjY2xlYXJTZWFyY2hCdXR0b24+XG4gIDxidXR0b24gY2RzQnV0dG9uPVwicHJpbWFyeVwiIChjbGljayk9XCJvbkNsZWFyRmlsdGVyKClcIj5cbiAgICB7eyAnaW50ZXJmYWNlLmNsZWFyJyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgPHN2ZyBjbGFzcz1cImNkcy0tYnRuX19pY29uXCIgY2RzSWNvbj1cInRyYXNoLWNhblwiIHNpemU9XCIxNlwiPjwvc3ZnPlxuICA8L2J1dHRvbj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -0,0 +1,18 @@
1
+ /*
2
+ * Copyright 2015-2024 Ritense BV, the Netherlands.
3
+ *
4
+ * Licensed under EUPL, Version 1.2 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" basis,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ export * from './logging.model';
17
+ export * from './search.model';
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2xvZ2dpbmcvc3JjL2xpYi9tb2RlbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsZ0JBQWdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2xvZ2dpbmcubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9zZWFyY2gubW9kZWwnO1xuIl19