@fundamental-ngx/btp 0.46.0-rc.100

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 (124) hide show
  1. package/README.md +7 -0
  2. package/esm2022/fundamental-ngx-btp.mjs +5 -0
  3. package/esm2022/index.mjs +3 -0
  4. package/esm2022/navigation/directives/navigation-home.directive.mjs +19 -0
  5. package/esm2022/navigation/directives/navigation-list-spacer.directive.mjs +24 -0
  6. package/esm2022/navigation/fundamental-ngx-btp-navigation.mjs +5 -0
  7. package/esm2022/navigation/index.mjs +11 -0
  8. package/esm2022/navigation/navigation-component.token.mjs +22 -0
  9. package/esm2022/navigation/navigation-content-end.component.mjs +62 -0
  10. package/esm2022/navigation/navigation-content-start.component.mjs +207 -0
  11. package/esm2022/navigation/navigation-content.token.mjs +3 -0
  12. package/esm2022/navigation/navigation-link.component.mjs +188 -0
  13. package/esm2022/navigation/navigation-list/navigation-list-item.component.mjs +423 -0
  14. package/esm2022/navigation/navigation-list/navigation-list-overflow-item.component.mjs +57 -0
  15. package/esm2022/navigation/navigation-list/navigation-list.component.mjs +125 -0
  16. package/esm2022/navigation/navigation-list-component.token.mjs +3 -0
  17. package/esm2022/navigation/navigation-list-item-component.token.mjs +90 -0
  18. package/esm2022/navigation/navigation.component.mjs +251 -0
  19. package/esm2022/navigation/navigation.service.mjs +14 -0
  20. package/esm2022/navigation/navigation.types.mjs +2 -0
  21. package/esm2022/navigation-menu/fundamental-ngx-btp-navigation-menu.mjs +5 -0
  22. package/esm2022/navigation-menu/index.mjs +6 -0
  23. package/esm2022/navigation-menu/lib/navigation-menu-item.component.mjs +48 -0
  24. package/esm2022/navigation-menu/lib/navigation-menu-popover-control.directive.mjs +19 -0
  25. package/esm2022/navigation-menu/lib/navigation-menu-popover.component.mjs +38 -0
  26. package/esm2022/navigation-menu/lib/navigation-menu.component.mjs +13 -0
  27. package/esm2022/navigation-menu/lib/navigation-menu.module.mjs +17 -0
  28. package/esm2022/search-field/fundamental-ngx-btp-search-field.mjs +5 -0
  29. package/esm2022/search-field/index.mjs +2 -0
  30. package/esm2022/search-field/search-field.component.mjs +62 -0
  31. package/esm2022/shared/fundamental-ngx-btp-shared.mjs +5 -0
  32. package/esm2022/shared/index.mjs +2 -0
  33. package/esm2022/tool-header/components/tool-header/tool-header.component.mjs +227 -0
  34. package/esm2022/tool-header/components/tool-header-product-switch.component.mjs +102 -0
  35. package/esm2022/tool-header/directives/tool-header-action.directive.mjs +43 -0
  36. package/esm2022/tool-header/directives/tool-header-actions.directive.mjs +63 -0
  37. package/esm2022/tool-header/directives/tool-header-auto-mode.directive.mjs +114 -0
  38. package/esm2022/tool-header/directives/tool-header-button.directive.mjs +51 -0
  39. package/esm2022/tool-header/directives/tool-header-element.directive.mjs +17 -0
  40. package/esm2022/tool-header/directives/tool-header-group.directive.mjs +26 -0
  41. package/esm2022/tool-header/directives/tool-header-logo.directive.mjs +19 -0
  42. package/esm2022/tool-header/directives/tool-header-user.directive.mjs +14 -0
  43. package/esm2022/tool-header/fundamental-ngx-btp-tool-header.mjs +5 -0
  44. package/esm2022/tool-header/index.mjs +10 -0
  45. package/esm2022/tool-header/tool-header-action-button.type.mjs +2 -0
  46. package/esm2022/tool-header/tool-header-component.class.mjs +74 -0
  47. package/esm2022/tool-header/tool-header-state.type.mjs +2 -0
  48. package/esm2022/tool-layout/directives/tool-layout-container.directive.mjs +17 -0
  49. package/esm2022/tool-layout/directives/tool-layout-content-container.directive.mjs +50 -0
  50. package/esm2022/tool-layout/directives/tool-layout-header-container.directive.mjs +17 -0
  51. package/esm2022/tool-layout/directives/tool-layout-navigation-container.directive.mjs +37 -0
  52. package/esm2022/tool-layout/fundamental-ngx-btp-tool-layout.mjs +5 -0
  53. package/esm2022/tool-layout/index.mjs +7 -0
  54. package/esm2022/tool-layout/tool-layout.component.mjs +43 -0
  55. package/esm2022/tool-layout/tool-layout.module.mjs +40 -0
  56. package/fesm2022/fundamental-ngx-btp-navigation-menu.mjs +130 -0
  57. package/fesm2022/fundamental-ngx-btp-navigation-menu.mjs.map +1 -0
  58. package/fesm2022/fundamental-ngx-btp-navigation.mjs +1409 -0
  59. package/fesm2022/fundamental-ngx-btp-navigation.mjs.map +1 -0
  60. package/fesm2022/fundamental-ngx-btp-search-field.mjs +69 -0
  61. package/fesm2022/fundamental-ngx-btp-search-field.mjs.map +1 -0
  62. package/fesm2022/fundamental-ngx-btp-shared.mjs +4 -0
  63. package/fesm2022/fundamental-ngx-btp-shared.mjs.map +1 -0
  64. package/fesm2022/fundamental-ngx-btp-tool-header.mjs +717 -0
  65. package/fesm2022/fundamental-ngx-btp-tool-header.mjs.map +1 -0
  66. package/fesm2022/fundamental-ngx-btp-tool-layout.mjs +194 -0
  67. package/fesm2022/fundamental-ngx-btp-tool-layout.mjs.map +1 -0
  68. package/fesm2022/fundamental-ngx-btp.mjs +7 -0
  69. package/fesm2022/fundamental-ngx-btp.mjs.map +1 -0
  70. package/fundamental-ngx-btp-v0.46.0-rc.100.tgz +0 -0
  71. package/index.d.ts +2 -0
  72. package/navigation/README.md +3 -0
  73. package/navigation/directives/navigation-home.directive.d.ts +10 -0
  74. package/navigation/directives/navigation-list-spacer.directive.d.ts +8 -0
  75. package/navigation/index.d.ts +10 -0
  76. package/navigation/navigation-component.token.d.ts +34 -0
  77. package/navigation/navigation-content-end.component.d.ts +23 -0
  78. package/navigation/navigation-content-start.component.d.ts +54 -0
  79. package/navigation/navigation-content.token.d.ts +11 -0
  80. package/navigation/navigation-link.component.d.ts +49 -0
  81. package/navigation/navigation-list/navigation-list-item.component.d.ts +142 -0
  82. package/navigation/navigation-list/navigation-list-overflow-item.component.d.ts +16 -0
  83. package/navigation/navigation-list/navigation-list.component.d.ts +60 -0
  84. package/navigation/navigation-list-component.token.d.ts +17 -0
  85. package/navigation/navigation-list-item-component.token.d.ts +68 -0
  86. package/navigation/navigation.component.d.ts +82 -0
  87. package/navigation/navigation.service.d.ts +8 -0
  88. package/navigation/navigation.types.d.ts +2 -0
  89. package/navigation-menu/README.md +3 -0
  90. package/navigation-menu/index.d.ts +5 -0
  91. package/navigation-menu/lib/navigation-menu-item.component.d.ts +13 -0
  92. package/navigation-menu/lib/navigation-menu-popover-control.directive.d.ts +10 -0
  93. package/navigation-menu/lib/navigation-menu-popover.component.d.ts +11 -0
  94. package/navigation-menu/lib/navigation-menu.component.d.ts +5 -0
  95. package/navigation-menu/lib/navigation-menu.module.d.ts +8 -0
  96. package/package.json +63 -0
  97. package/search-field/README.md +3 -0
  98. package/search-field/index.d.ts +1 -0
  99. package/search-field/search-field.component.d.ts +34 -0
  100. package/shared/README.md +3 -0
  101. package/shared/index.d.ts +1 -0
  102. package/tool-header/README.md +3 -0
  103. package/tool-header/components/tool-header/tool-header.component.d.ts +91 -0
  104. package/tool-header/components/tool-header-product-switch.component.d.ts +11 -0
  105. package/tool-header/directives/tool-header-action.directive.d.ts +35 -0
  106. package/tool-header/directives/tool-header-actions.directive.d.ts +27 -0
  107. package/tool-header/directives/tool-header-auto-mode.directive.d.ts +68 -0
  108. package/tool-header/directives/tool-header-button.directive.d.ts +22 -0
  109. package/tool-header/directives/tool-header-element.directive.d.ts +5 -0
  110. package/tool-header/directives/tool-header-group.directive.d.ts +12 -0
  111. package/tool-header/directives/tool-header-logo.directive.d.ts +5 -0
  112. package/tool-header/directives/tool-header-user.directive.d.ts +5 -0
  113. package/tool-header/index.d.ts +9 -0
  114. package/tool-header/tool-header-action-button.type.d.ts +10 -0
  115. package/tool-header/tool-header-component.class.d.ts +20 -0
  116. package/tool-header/tool-header-state.type.d.ts +14 -0
  117. package/tool-layout/README.md +3 -0
  118. package/tool-layout/directives/tool-layout-container.directive.d.ts +5 -0
  119. package/tool-layout/directives/tool-layout-content-container.directive.d.ts +29 -0
  120. package/tool-layout/directives/tool-layout-header-container.directive.d.ts +5 -0
  121. package/tool-layout/directives/tool-layout-navigation-container.directive.d.ts +13 -0
  122. package/tool-layout/index.d.ts +6 -0
  123. package/tool-layout/tool-layout.component.d.ts +27 -0
  124. package/tool-layout/tool-layout.module.d.ts +11 -0
@@ -0,0 +1,188 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ /* eslint-disable @angular-eslint/no-host-metadata-property */
3
+ import { AsyncPipe, NgIf, NgTemplateOutlet } from '@angular/common';
4
+ import { ChangeDetectionStrategy, Component, ElementRef, HostBinding, HostListener, Input, TemplateRef, ViewChild, ViewEncapsulation, inject } from '@angular/core';
5
+ import { toSignal } from '@angular/core/rxjs-interop';
6
+ import { RouterLink, RouterLinkActive } from '@angular/router';
7
+ import { applyCssClass } from '@fundamental-ngx/cdk/utils';
8
+ import { IconComponent } from '@fundamental-ngx/core/icon';
9
+ import { FdbNavigationComponent } from './navigation-component.token';
10
+ import { FdbNavigationListItemComponent } from './navigation-list-item-component.token';
11
+ import * as i0 from "@angular/core";
12
+ import * as i1 from "@angular/router";
13
+ export class NavigationLinkComponent {
14
+ /** @hidden */
15
+ constructor() {
16
+ /** Whether the link is for the external resource. */
17
+ this.external = false;
18
+ /** @hidden */
19
+ this._tabindex = 0;
20
+ /** @hidden */
21
+ this.elementRef = inject(ElementRef);
22
+ /** @hidden */
23
+ this._routerLink = inject(RouterLink, {
24
+ optional: true,
25
+ self: true
26
+ });
27
+ /** @hidden */
28
+ this._routerLinkActive = inject(RouterLinkActive, { optional: true });
29
+ /**
30
+ * If user applies RouterLink, we need to check if the link is active
31
+ * @hidden
32
+ **/
33
+ this.isActive = toSignal(inject(RouterLinkActive).isActiveChange);
34
+ /** @hidden */
35
+ this.navigationListItemComponent = inject(FdbNavigationListItemComponent);
36
+ /** @hidden */
37
+ this._navigationComponent = inject(FdbNavigationComponent);
38
+ this.navigationListItemComponent.linkComponent = this;
39
+ this.navigationListItemComponent.routerLink.set(this._routerLink);
40
+ this.navigationListItemComponent.routerLinkActive.set(this._routerLinkActive);
41
+ }
42
+ /** @hidden */
43
+ buildComponentCssClass() {
44
+ return [this.class || '', 'fd-navigation__link'];
45
+ }
46
+ /** @hidden */
47
+ _onClick() {
48
+ if (this.navigationListItemComponent.childNavigationListComponent()) {
49
+ this.navigationListItemComponent.toggle();
50
+ }
51
+ }
52
+ /** @hidden */
53
+ _focusHandler() {
54
+ this._navigationComponent.setActiveItem(this.navigationListItemComponent);
55
+ }
56
+ /** @hidden */
57
+ ngOnChanges() {
58
+ this.buildComponentCssClass();
59
+ }
60
+ /** @hidden */
61
+ ngOnInit() {
62
+ this.buildComponentCssClass();
63
+ }
64
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: NavigationLinkComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
65
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: NavigationLinkComponent, isStandalone: true, selector: "a[fdb-navigation-link]", inputs: { class: "class", glyph: "glyph", label: "label", external: "external" }, host: { attributes: { "role": "link" }, listeners: { "click": "_onClick()", "focus": "_focusHandler()" }, properties: { "attr.tabindex": "this._tabindex" } }, viewQueries: [{ propertyName: "textRenderer", first: true, predicate: ["textRenderer"], descendants: true }], usesOnChanges: true, hostDirectives: [{ directive: i1.RouterLinkActive }], ngImport: i0, template: `
66
+ <ng-container *ngIf="glyph">
67
+ <fd-icon
68
+ [glyph]="glyph"
69
+ class="fd-navigation__icon"
70
+ [attr.role]="'presentation'"
71
+ [ariaHidden]="true"
72
+ ></fd-icon>
73
+ </ng-container>
74
+ <ng-template #textRenderer>
75
+ <span class="fd-navigation__text">{{ label }}</span>
76
+ <span
77
+ class="fd-navigation__external-link-indicator"
78
+ role="presentation"
79
+ aria-hidden="true"
80
+ aria-label="external link indicator"
81
+ *ngIf="external"
82
+ ></span>
83
+ </ng-template>
84
+ <ng-container *ngTemplateOutlet="textRenderer" />
85
+ <span
86
+ class="fd-navigation__selection-indicator"
87
+ role="presentation"
88
+ aria-hidden="true"
89
+ aria-label="selection indicator"
90
+ >
91
+ </span>
92
+ <span
93
+ *ngIf="
94
+ navigationListItemComponent?.childNavigationListComponent() &&
95
+ navigationListItemComponent?.normalizedLevel() !== 3 &&
96
+ !_routerLink
97
+ "
98
+ class="fd-navigation__has-children-indicator"
99
+ role="presentation"
100
+ aria-hidden="true"
101
+ aria-label="has children indicator, expanded"
102
+ >
103
+ </span>
104
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "class", "ariaLabel", "ariaHidden"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
105
+ }
106
+ __decorate([
107
+ applyCssClass,
108
+ __metadata("design:type", Function),
109
+ __metadata("design:paramtypes", []),
110
+ __metadata("design:returntype", Array)
111
+ ], NavigationLinkComponent.prototype, "buildComponentCssClass", null);
112
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: NavigationLinkComponent, decorators: [{
113
+ type: Component,
114
+ args: [{
115
+ // eslint-disable-next-line @angular-eslint/component-selector
116
+ selector: 'a[fdb-navigation-link]',
117
+ template: `
118
+ <ng-container *ngIf="glyph">
119
+ <fd-icon
120
+ [glyph]="glyph"
121
+ class="fd-navigation__icon"
122
+ [attr.role]="'presentation'"
123
+ [ariaHidden]="true"
124
+ ></fd-icon>
125
+ </ng-container>
126
+ <ng-template #textRenderer>
127
+ <span class="fd-navigation__text">{{ label }}</span>
128
+ <span
129
+ class="fd-navigation__external-link-indicator"
130
+ role="presentation"
131
+ aria-hidden="true"
132
+ aria-label="external link indicator"
133
+ *ngIf="external"
134
+ ></span>
135
+ </ng-template>
136
+ <ng-container *ngTemplateOutlet="textRenderer" />
137
+ <span
138
+ class="fd-navigation__selection-indicator"
139
+ role="presentation"
140
+ aria-hidden="true"
141
+ aria-label="selection indicator"
142
+ >
143
+ </span>
144
+ <span
145
+ *ngIf="
146
+ navigationListItemComponent?.childNavigationListComponent() &&
147
+ navigationListItemComponent?.normalizedLevel() !== 3 &&
148
+ !_routerLink
149
+ "
150
+ class="fd-navigation__has-children-indicator"
151
+ role="presentation"
152
+ aria-hidden="true"
153
+ aria-label="has children indicator, expanded"
154
+ >
155
+ </span>
156
+ `,
157
+ imports: [NgIf, IconComponent, AsyncPipe, NgTemplateOutlet],
158
+ hostDirectives: [RouterLinkActive],
159
+ standalone: true,
160
+ changeDetection: ChangeDetectionStrategy.OnPush,
161
+ encapsulation: ViewEncapsulation.None,
162
+ host: {
163
+ role: 'link'
164
+ }
165
+ }]
166
+ }], ctorParameters: function () { return []; }, propDecorators: { class: [{
167
+ type: Input
168
+ }], glyph: [{
169
+ type: Input
170
+ }], label: [{
171
+ type: Input,
172
+ args: [{ required: true }]
173
+ }], external: [{
174
+ type: Input
175
+ }], textRenderer: [{
176
+ type: ViewChild,
177
+ args: ['textRenderer']
178
+ }], _tabindex: [{
179
+ type: HostBinding,
180
+ args: ['attr.tabindex']
181
+ }], buildComponentCssClass: [], _onClick: [{
182
+ type: HostListener,
183
+ args: ['click']
184
+ }], _focusHandler: [{
185
+ type: HostListener,
186
+ args: ['focus']
187
+ }] } });
188
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi1saW5rLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvYnRwL25hdmlnYXRpb24vbmF2aWdhdGlvbi1saW5rLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsOERBQThEO0FBQzlELE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEUsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUdMLFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9ELE9BQU8sRUFBa0MsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0YsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDOzs7QUFzRHhGLE1BQU0sT0FBTyx1QkFBdUI7SUFpRGhDLGNBQWM7SUFDZDtRQXJDQSxxREFBcUQ7UUFFckQsYUFBUSxHQUFHLEtBQUssQ0FBQztRQU1qQixjQUFjO1FBRWQsY0FBUyxHQUFHLENBQUMsQ0FBQztRQUVkLGNBQWM7UUFDTCxlQUFVLEdBQTRCLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVsRSxjQUFjO1FBQ0wsZ0JBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFO1lBQ3RDLFFBQVEsRUFBRSxJQUFJO1lBQ2QsSUFBSSxFQUFFLElBQUk7U0FDYixDQUFDLENBQUM7UUFFSCxjQUFjO1FBQ0wsc0JBQWlCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFMUU7OztZQUdJO1FBQ00sYUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUV2RSxjQUFjO1FBQ0osZ0NBQTJCLEdBQUcsTUFBTSxDQUFDLDhCQUE4QixDQUFDLENBQUM7UUFFL0UsY0FBYztRQUNHLHlCQUFvQixHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBSW5FLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQ3RELElBQUksQ0FBQywyQkFBMkIsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNsRSxJQUFJLENBQUMsMkJBQTJCLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFRCxjQUFjO0lBRWQsc0JBQXNCO1FBQ2xCLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxjQUFjO0lBRU4sUUFBUTtRQUNaLElBQUksSUFBSSxDQUFDLDJCQUEyQixDQUFDLDRCQUE0QixFQUFFLEVBQUU7WUFDakUsSUFBSSxDQUFDLDJCQUEyQixDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQzdDO0lBQ0wsQ0FBQztJQUVELGNBQWM7SUFFTixhQUFhO1FBQ2pCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVELGNBQWM7SUFDZCxXQUFXO1FBQ1AsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELGNBQWM7SUFDZCxRQUFRO1FBQ0osSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDbEMsQ0FBQzs4R0FwRlEsdUJBQXVCO2tHQUF2Qix1QkFBdUIsNGZBakR0Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBdUNULDREQUNTLElBQUksNkZBQUUsYUFBYSxtSEFBYSxnQkFBZ0I7O0FBbUUxRDtJQURDLGFBQWE7Ozs7cUVBR2I7MkZBNURRLHVCQUF1QjtrQkFwRG5DLFNBQVM7bUJBQUM7b0JBQ1AsOERBQThEO29CQUM5RCxRQUFRLEVBQUUsd0JBQXdCO29CQUNsQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQXVDVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQztvQkFDM0QsY0FBYyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7b0JBQ2xDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7b0JBQ3JDLElBQUksRUFBRTt3QkFDRixJQUFJLEVBQUUsTUFBTTtxQkFDZjtpQkFDSjswRUFJRyxLQUFLO3NCQURKLEtBQUs7Z0JBS04sS0FBSztzQkFESixLQUFLO2dCQUtOLEtBQUs7c0JBREosS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBS3pCLFFBQVE7c0JBRFAsS0FBSztnQkFLTixZQUFZO3NCQURYLFNBQVM7dUJBQUMsY0FBYztnQkFLekIsU0FBUztzQkFEUixXQUFXO3VCQUFDLGVBQWU7Z0JBb0M1QixzQkFBc0IsTUFNZCxRQUFRO3NCQURmLFlBQVk7dUJBQUMsT0FBTztnQkFTYixhQUFhO3NCQURwQixZQUFZO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvbm8taG9zdC1tZXRhZGF0YS1wcm9wZXJ0eSAqL1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkluaXQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIGluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgUm91dGVyTGluaywgUm91dGVyTGlua0FjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBDc3NDbGFzc0J1aWxkZXIsIEhhc0VsZW1lbnRSZWYsIGFwcGx5Q3NzQ2xhc3MgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2ljb24nO1xuaW1wb3J0IHsgRmRiTmF2aWdhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vbmF2aWdhdGlvbi1jb21wb25lbnQudG9rZW4nO1xuaW1wb3J0IHsgRmRiTmF2aWdhdGlvbkxpc3RJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9uYXZpZ2F0aW9uLWxpc3QtaXRlbS1jb21wb25lbnQudG9rZW4nO1xuXG5AQ29tcG9uZW50KHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiAnYVtmZGItbmF2aWdhdGlvbi1saW5rXScsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImdseXBoXCI+XG4gICAgICAgICAgICA8ZmQtaWNvblxuICAgICAgICAgICAgICAgIFtnbHlwaF09XCJnbHlwaFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1uYXZpZ2F0aW9uX19pY29uXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5yb2xlXT1cIidwcmVzZW50YXRpb24nXCJcbiAgICAgICAgICAgICAgICBbYXJpYUhpZGRlbl09XCJ0cnVlXCJcbiAgICAgICAgICAgID48L2ZkLWljb24+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI3RleHRSZW5kZXJlcj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmQtbmF2aWdhdGlvbl9fdGV4dFwiPnt7IGxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImZkLW5hdmlnYXRpb25fX2V4dGVybmFsLWxpbmstaW5kaWNhdG9yXCJcbiAgICAgICAgICAgICAgICByb2xlPVwicHJlc2VudGF0aW9uXCJcbiAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJleHRlcm5hbCBsaW5rIGluZGljYXRvclwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJleHRlcm5hbFwiXG4gICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGV4dFJlbmRlcmVyXCIgLz5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwiZmQtbmF2aWdhdGlvbl9fc2VsZWN0aW9uLWluZGljYXRvclwiXG4gICAgICAgICAgICByb2xlPVwicHJlc2VudGF0aW9uXCJcbiAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwic2VsZWN0aW9uIGluZGljYXRvclwiXG4gICAgICAgID5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICBuYXZpZ2F0aW9uTGlzdEl0ZW1Db21wb25lbnQ/LmNoaWxkTmF2aWdhdGlvbkxpc3RDb21wb25lbnQoKSAmJlxuICAgICAgICAgICAgICAgIG5hdmlnYXRpb25MaXN0SXRlbUNvbXBvbmVudD8ubm9ybWFsaXplZExldmVsKCkgIT09IDMgJiZcbiAgICAgICAgICAgICAgICAhX3JvdXRlckxpbmtcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBjbGFzcz1cImZkLW5hdmlnYXRpb25fX2hhcy1jaGlsZHJlbi1pbmRpY2F0b3JcIlxuICAgICAgICAgICAgcm9sZT1cInByZXNlbnRhdGlvblwiXG4gICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cImhhcyBjaGlsZHJlbiBpbmRpY2F0b3IsIGV4cGFuZGVkXCJcbiAgICAgICAgPlxuICAgICAgICA8L3NwYW4+XG4gICAgYCxcbiAgICBpbXBvcnRzOiBbTmdJZiwgSWNvbkNvbXBvbmVudCwgQXN5bmNQaXBlLCBOZ1RlbXBsYXRlT3V0bGV0XSxcbiAgICBob3N0RGlyZWN0aXZlczogW1JvdXRlckxpbmtBY3RpdmVdLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7XG4gICAgICAgIHJvbGU6ICdsaW5rJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgTmF2aWdhdGlvbkxpbmtDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQ3NzQ2xhc3NCdWlsZGVyLCBIYXNFbGVtZW50UmVmIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBJbnB1dCgpXG4gICAgY2xhc3M6IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQElucHV0KClcbiAgICBnbHlwaDogc3RyaW5nO1xuXG4gICAgLyoqIExhYmVsIHRvIGJlIGRpc3BsYXllZCBhcyBhIGxpbmsgdGV4dC4gKi9cbiAgICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICAgIGxhYmVsOiBzdHJpbmc7XG5cbiAgICAvKiogV2hldGhlciB0aGUgbGluayBpcyBmb3IgdGhlIGV4dGVybmFsIHJlc291cmNlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZXh0ZXJuYWwgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgndGV4dFJlbmRlcmVyJylcbiAgICB0ZXh0UmVuZGVyZXI6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci50YWJpbmRleCcpXG4gICAgX3RhYmluZGV4ID0gMDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gPSBpbmplY3QoRWxlbWVudFJlZik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IF9yb3V0ZXJMaW5rID0gaW5qZWN0KFJvdXRlckxpbmssIHtcbiAgICAgICAgb3B0aW9uYWw6IHRydWUsXG4gICAgICAgIHNlbGY6IHRydWVcbiAgICB9KTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgX3JvdXRlckxpbmtBY3RpdmUgPSBpbmplY3QoUm91dGVyTGlua0FjdGl2ZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICAgIC8qKlxuICAgICAqIElmIHVzZXIgYXBwbGllcyBSb3V0ZXJMaW5rLCB3ZSBuZWVkIHRvIGNoZWNrIGlmIHRoZSBsaW5rIGlzIGFjdGl2ZVxuICAgICAqIEBoaWRkZW5cbiAgICAgKiovXG4gICAgcHJvdGVjdGVkIGlzQWN0aXZlID0gdG9TaWduYWwoaW5qZWN0KFJvdXRlckxpbmtBY3RpdmUpLmlzQWN0aXZlQ2hhbmdlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIG5hdmlnYXRpb25MaXN0SXRlbUNvbXBvbmVudCA9IGluamVjdChGZGJOYXZpZ2F0aW9uTGlzdEl0ZW1Db21wb25lbnQpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9uYXZpZ2F0aW9uQ29tcG9uZW50ID0gaW5qZWN0KEZkYk5hdmlnYXRpb25Db21wb25lbnQpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5uYXZpZ2F0aW9uTGlzdEl0ZW1Db21wb25lbnQubGlua0NvbXBvbmVudCA9IHRoaXM7XG4gICAgICAgIHRoaXMubmF2aWdhdGlvbkxpc3RJdGVtQ29tcG9uZW50LnJvdXRlckxpbmsuc2V0KHRoaXMuX3JvdXRlckxpbmspO1xuICAgICAgICB0aGlzLm5hdmlnYXRpb25MaXN0SXRlbUNvbXBvbmVudC5yb3V0ZXJMaW5rQWN0aXZlLnNldCh0aGlzLl9yb3V0ZXJMaW5rQWN0aXZlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBhcHBseUNzc0NsYXNzXG4gICAgYnVpbGRDb21wb25lbnRDc3NDbGFzcygpOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiBbdGhpcy5jbGFzcyB8fCAnJywgJ2ZkLW5hdmlnYXRpb25fX2xpbmsnXTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgICBwcml2YXRlIF9vbkNsaWNrKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5uYXZpZ2F0aW9uTGlzdEl0ZW1Db21wb25lbnQuY2hpbGROYXZpZ2F0aW9uTGlzdENvbXBvbmVudCgpKSB7XG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRpb25MaXN0SXRlbUNvbXBvbmVudC50b2dnbGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RMaXN0ZW5lcignZm9jdXMnKVxuICAgIHByaXZhdGUgX2ZvY3VzSGFuZGxlcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkNvbXBvbmVudC5zZXRBY3RpdmVJdGVtKHRoaXMubmF2aWdhdGlvbkxpc3RJdGVtQ29tcG9uZW50KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmJ1aWxkQ29tcG9uZW50Q3NzQ2xhc3MoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmJ1aWxkQ29tcG9uZW50Q3NzQ2xhc3MoKTtcbiAgICB9XG59XG4iXX0=