@fundamental-ngx/core 0.33.5-rc.45 → 0.33.5-rc.46

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 (101) hide show
  1. package/action-bar/package.json +1 -1
  2. package/action-sheet/package.json +1 -1
  3. package/alert/package.json +1 -1
  4. package/avatar/package.json +1 -1
  5. package/avatar-group/package.json +1 -1
  6. package/bar/package.json +1 -1
  7. package/breadcrumb/package.json +1 -1
  8. package/busy-indicator/package.json +1 -1
  9. package/button/package.json +1 -1
  10. package/calendar/package.json +1 -1
  11. package/card/package.json +1 -1
  12. package/carousel/package.json +1 -1
  13. package/checkbox/package.json +1 -1
  14. package/combobox/package.json +1 -1
  15. package/date-picker/package.json +1 -1
  16. package/datetime/package.json +1 -1
  17. package/datetime-picker/package.json +1 -1
  18. package/dialog/package.json +1 -1
  19. package/dynamic-page/package.json +1 -1
  20. package/dynamic-side-content/package.json +1 -1
  21. package/esm2020/menu/services/menu.service.mjs +18 -8
  22. package/facets/package.json +1 -1
  23. package/feed-input/package.json +1 -1
  24. package/feed-list-item/package.json +1 -1
  25. package/fesm2015/fundamental-ngx-core-menu.mjs +18 -6
  26. package/fesm2015/fundamental-ngx-core-menu.mjs.map +1 -1
  27. package/fesm2020/fundamental-ngx-core-menu.mjs +15 -6
  28. package/fesm2020/fundamental-ngx-core-menu.mjs.map +1 -1
  29. package/file-uploader/package.json +1 -1
  30. package/fixed-card-layout/package.json +1 -1
  31. package/flexible-column-layout/package.json +1 -1
  32. package/form/package.json +1 -1
  33. package/formatted-text/package.json +1 -1
  34. package/grid-list/package.json +1 -1
  35. package/icon/package.json +1 -1
  36. package/illustrated-message/package.json +1 -1
  37. package/infinite-scroll/package.json +1 -1
  38. package/info-label/package.json +1 -1
  39. package/inline-help/package.json +1 -1
  40. package/input-group/package.json +1 -1
  41. package/layout-grid/package.json +1 -1
  42. package/layout-panel/package.json +1 -1
  43. package/link/package.json +1 -1
  44. package/list/package.json +1 -1
  45. package/menu/esm2020/services/menu.service.mjs +18 -8
  46. package/menu/fesm2015/fundamental-ngx-core-menu.mjs +18 -6
  47. package/menu/fesm2015/fundamental-ngx-core-menu.mjs.map +1 -1
  48. package/menu/fesm2020/fundamental-ngx-core-menu.mjs +15 -6
  49. package/menu/fesm2020/fundamental-ngx-core-menu.mjs.map +1 -1
  50. package/menu/package.json +1 -1
  51. package/menu/services/menu.service.d.ts +6 -2
  52. package/message-box/package.json +1 -1
  53. package/message-strip/package.json +1 -1
  54. package/message-toast/package.json +1 -1
  55. package/micro-process-flow/package.json +1 -1
  56. package/mobile-mode/package.json +1 -1
  57. package/multi-input/package.json +1 -1
  58. package/nested-list/package.json +1 -1
  59. package/notification/package.json +1 -1
  60. package/object-identifier/package.json +1 -1
  61. package/object-marker/package.json +1 -1
  62. package/object-number/package.json +1 -1
  63. package/object-status/package.json +1 -1
  64. package/package.json +1 -1
  65. package/pagination/package.json +1 -1
  66. package/panel/package.json +1 -1
  67. package/popover/package.json +1 -1
  68. package/product-switch/package.json +1 -1
  69. package/progress-indicator/package.json +1 -1
  70. package/quick-view/package.json +1 -1
  71. package/radio/package.json +1 -1
  72. package/rating-indicator/package.json +1 -1
  73. package/resizable-card-layout/package.json +1 -1
  74. package/scroll-spy/package.json +1 -1
  75. package/scrollbar/package.json +1 -1
  76. package/segmented-button/package.json +1 -1
  77. package/select/package.json +1 -1
  78. package/shared/package.json +1 -1
  79. package/shellbar/package.json +1 -1
  80. package/side-navigation/package.json +1 -1
  81. package/slider/package.json +1 -1
  82. package/split-button/package.json +1 -1
  83. package/splitter/package.json +1 -1
  84. package/status-indicator/package.json +1 -1
  85. package/step-input/package.json +1 -1
  86. package/switch/package.json +1 -1
  87. package/table/package.json +1 -1
  88. package/tabs/package.json +1 -1
  89. package/text/package.json +1 -1
  90. package/tile/package.json +1 -1
  91. package/time/package.json +1 -1
  92. package/time-picker/package.json +1 -1
  93. package/timeline/package.json +1 -1
  94. package/title/package.json +1 -1
  95. package/token/package.json +1 -1
  96. package/toolbar/package.json +1 -1
  97. package/tree/package.json +1 -1
  98. package/upload-collection/package.json +1 -1
  99. package/utils/package.json +1 -1
  100. package/vertical-navigation/package.json +1 -1
  101. package/wizard/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/action-bar",
3
- "version": "0.33.5-rc.45",
3
+ "version": "0.33.5-rc.46",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/action-sheet",
3
- "version": "0.33.5-rc.45",
3
+ "version": "0.33.5-rc.46",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/alert",
3
- "version": "0.33.5-rc.45",
3
+ "version": "0.33.5-rc.46",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/avatar",
3
- "version": "0.33.5-rc.45",
3
+ "version": "0.33.5-rc.46",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/avatar-group",
3
- "version": "0.33.5-rc.45",
3
+ "version": "0.33.5-rc.46",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
package/bar/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/bar",
3
- "version": "0.33.5-rc.45",
3
+ "version": "0.33.5-rc.46",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/breadcrumb",
3
- "version": "0.33.5-rc.45",
3
+ "version": "0.33.5-rc.46",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/busy-indicator",
3
- "version": "0.33.5-rc.45",
3
+ "version": "0.33.5-rc.46",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/button",
3
- "version": "0.33.5-rc.45",
3
+ "version": "0.33.5-rc.46",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/calendar",
3
- "version": "0.33.5-rc.45",
3
+ "version": "0.33.5-rc.46",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
package/card/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/card",
3
- "version": "0.33.5-rc.45",
3
+ "version": "0.33.5-rc.46",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/carousel",
3
- "version": "0.33.5-rc.45",
3
+ "version": "0.33.5-rc.46",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/checkbox",
3
- "version": "0.33.5-rc.45",
3
+ "version": "0.33.5-rc.46",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/combobox",
3
- "version": "0.33.5-rc.45",
3
+ "version": "0.33.5-rc.46",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/date-picker",
3
- "version": "0.33.5-rc.45",
3
+ "version": "0.33.5-rc.46",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/datetime",
3
- "version": "0.33.5-rc.45",
3
+ "version": "0.33.5-rc.46",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/datetime-picker",
3
- "version": "0.33.5-rc.45",
3
+ "version": "0.33.5-rc.46",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/dialog",
3
- "version": "0.33.5-rc.45",
3
+ "version": "0.33.5-rc.46",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/dynamic-page",
3
- "version": "0.33.5-rc.45",
3
+ "version": "0.33.5-rc.46",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/dynamic-side-content",
3
- "version": "0.33.5-rc.45",
3
+ "version": "0.33.5-rc.46",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,17 +1,23 @@
1
- import { Injectable, Renderer2 } from '@angular/core';
2
- import { KeyUtil } from '@fundamental-ngx/core/utils';
1
+ import { Injectable, Optional, Renderer2 } from '@angular/core';
2
+ import { KeyUtil, RtlService } from '@fundamental-ngx/core/utils';
3
3
  import { Subject } from 'rxjs';
4
4
  import { distinctUntilChanged } from 'rxjs/operators';
5
5
  import { DOWN_ARROW, ENTER, ESCAPE, LEFT_ARROW, RIGHT_ARROW, SPACE, UP_ARROW } from '@angular/cdk/keycodes';
6
6
  import * as i0 from "@angular/core";
7
+ import * as i1 from "@fundamental-ngx/core/utils";
7
8
  export class MenuService {
8
- constructor(_renderer) {
9
+ constructor(_renderer, _rtlService) {
9
10
  this._renderer = _renderer;
11
+ this._rtlService = _rtlService;
10
12
  /** Collection of active menu nodes */
11
13
  this.activeNodePath = [];
12
14
  /** Collection of active menu nodes */
13
15
  this._isMobileMode = new Subject();
14
16
  }
17
+ /** @hidden */
18
+ get _isRtl() {
19
+ return this._rtlService?.rtl.value;
20
+ }
15
21
  /** Reference to menu component */
16
22
  get menu() {
17
23
  return this._menu;
@@ -170,13 +176,15 @@ export class MenuService {
170
176
  setTimeout(() => this.setFocused(node.children[0].item));
171
177
  };
172
178
  let matched = true;
173
- if (KeyUtil.isKeyCode(event, RIGHT_ARROW)) {
179
+ if ((KeyUtil.isKeyCode(event, RIGHT_ARROW) && !this._isRtl) ||
180
+ (KeyUtil.isKeyCode(event, LEFT_ARROW) && this._isRtl)) {
174
181
  if (this.focusedNode.children.length) {
175
182
  this.setActive(true, this.focusedNode.item);
176
183
  focusRight(this.focusedNode);
177
184
  }
178
185
  }
179
- else if (KeyUtil.isKeyCode(event, LEFT_ARROW)) {
186
+ else if ((KeyUtil.isKeyCode(event, LEFT_ARROW) && !this._isRtl) ||
187
+ (KeyUtil.isKeyCode(event, RIGHT_ARROW) && this._isRtl)) {
180
188
  if (this.focusedNode.parent.item) {
181
189
  this.setActive(false, this.focusedNode.parent.item);
182
190
  this.setFocused(this.focusedNode.parent.item);
@@ -228,9 +236,11 @@ export class MenuService {
228
236
  return null;
229
237
  }
230
238
  }
231
- MenuService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: MenuService, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Injectable });
239
+ MenuService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: MenuService, deps: [{ token: i0.Renderer2 }, { token: i1.RtlService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
232
240
  MenuService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: MenuService });
233
241
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: MenuService, decorators: [{
234
242
  type: Injectable
235
- }], ctorParameters: function () { return [{ type: i0.Renderer2 }]; } });
236
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvbWVudS9zZXJ2aWNlcy9tZW51LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHbEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RELE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQVc1RyxNQUFNLE9BQU8sV0FBVztJQW1CcEIsWUFBb0IsU0FBb0I7UUFBcEIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQVp4QyxzQ0FBc0M7UUFDdEMsbUJBQWMsR0FBZSxFQUFFLENBQUM7UUFFaEMsc0NBQXNDO1FBQzlCLGtCQUFhLEdBQXFCLElBQUksT0FBTyxFQUFFLENBQUM7SUFRYixDQUFDO0lBRTVDLGtDQUFrQztJQUNsQyxJQUFJLElBQUk7UUFDSixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUVELG1DQUFtQztJQUNuQyxJQUFJLFlBQVk7UUFDWixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQscUJBQXFCO0lBQ3JCLFdBQVcsQ0FBQyxLQUFjO1FBQ3RCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxzQ0FBc0M7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VSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVELG1GQUFtRjtJQUMzRSxlQUFlLENBQUMsSUFBYyxFQUFFLFNBQXdCO1FBQzVELE1BQU0sUUFBUSxHQUFHLFNBQVMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFekcsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFOUMsS0FBSyxJQUFJLENBQUMsR0FBRyxVQUFVLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDL0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUM1QixPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUN0QjtTQUNKO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQzs7d0dBNVFRLFdBQVc7NEdBQVgsV0FBVzsyRkFBWCxXQUFXO2tCQUR2QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgSW5qZWN0YWJsZSwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNZW51SXRlbUNvbXBvbmVudCB9IGZyb20gJy4uL21lbnUtaXRlbS9tZW51LWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IE1lbnVDb21wb25lbnQgfSBmcm9tICcuLi9tZW51LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBLZXlVdGlsIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3V0aWxzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRE9XTl9BUlJPVywgRU5URVIsIEVTQ0FQRSwgTEVGVF9BUlJPVywgUklHSFRfQVJST1csIFNQQUNFLCBVUF9BUlJPVyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5cbmludGVyZmFjZSBNZW51Tm9kZSB7XG4gICAgaXRlbTogTWVudUl0ZW1Db21wb25lbnQ7XG4gICAgcGFyZW50OiBNZW51Tm9kZTtcbiAgICBjaGlsZHJlbjogTWVudU5vZGVbXTtcbn1cblxudHlwZSBNZW51TWFwID0gTWFwPE1lbnVJdGVtQ29tcG9uZW50LCBNZW51Tm9kZT47XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBNZW51U2VydmljZSB7XG4gICAgLyoqIE1hcCBvZiBtZW51IGl0ZW1zIHRvIG1lbnUgbm9kZXMgKi9cbiAgICBtZW51TWFwOiBNZW51TWFwO1xuXG4gICAgLyoqIEN1cnJlbnRseSBmb2N1c2VkIG5vZGUgKi9cbiAgICBmb2N1c2VkTm9kZTogTWVudU5vZGU7XG5cbiAgICAvKiogQ29sbGVjdGlvbiBvZiBhY3RpdmUgbWVudSBub2RlcyAqL1xuICAgIGFjdGl2ZU5vZGVQYXRoOiBNZW51Tm9kZVtdID0gW107XG5cbiAgICAvKiogQ29sbGVjdGlvbiBvZiBhY3RpdmUgbWVudSBub2RlcyAqL1xuICAgIHByaXZhdGUgX2lzTW9iaWxlTW9kZTogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX21lbnU6IE1lbnVDb21wb25lbnQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2Rlc3Ryb3lLZXlib2FyZEhhbmRsZXJMaXN0ZW5lcjogKCkgPT4gdm9pZDtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIpIHt9XG5cbiAgICAvKiogUmVmZXJlbmNlIHRvIG1lbnUgY29tcG9uZW50ICovXG4gICAgZ2V0IG1lbnUoKTogTWVudUNvbXBvbmVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tZW51O1xuICAgIH1cblxuICAgIC8qKiBSZXR1cm5zIG1lbnUgbW9kZSBvYnNlcnZhYmxlICovXG4gICAgZ2V0IGlzTW9iaWxlTW9kZSgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzTW9iaWxlTW9kZS5hc09ic2VydmFibGUoKS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuICAgIH1cblxuICAgIC8qKiBTZXRzIG1lbnUgbW9kZSAqL1xuICAgIHNldE1lbnVNb2RlKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2lzTW9iaWxlTW9kZS5uZXh0KHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKiogU2V0cyBnaXZlbiBtZW51IGl0ZW0gYXMgZm9jdXNlZCAqL1xuICAgIHNldEZvY3VzZWQobWVudUl0ZW06IE1lbnVJdGVtQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9jdXNlZE5vZGUgPSB0aGlzLm1lbnVNYXAuZ2V0KG1lbnVJdGVtKTtcbiAgICAgICAgdGhpcy5mb2N1c2VkTm9kZS5pdGVtLmZvY3VzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyBzdGF0ZSBvZiBhIGdpdmVuIG1lbnUgaXRlbVxuICAgICAqIEBwYXJhbSBpc0FjdGl2ZSAtIFdoZXRoZXIgc2hvdWxkIGJlIHNldCBhcyBhY3RpdmUgb3IgaW5hY3RpdmVcbiAgICAgKiBAcGFyYW0gbWVudUl0ZW0gYE1lbnVJdGVtQ29tcG9uZW50YCB0aGF0IHNob3VsZCBiZSBzZXQgYXMgYWN0aXZlIG9yIGluYWN0aXZlXG4gICAgICovXG4gICAgc2V0QWN0aXZlKGlzQWN0aXZlOiBib29sZWFuLCBtZW51SXRlbTogTWVudUl0ZW1Db21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGlzQWN0aXZlICYmIG1lbnVJdGVtLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNBY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMuX2FkZFRvQWN0aXZlUGF0aChtZW51SXRlbSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9yZW1vdmVGcm9tQWN0aXZlUGF0aChtZW51SXRlbSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fZW1pdEFjdGl2ZVBhdGgoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbG9zZSBhY3RpdmUgc2libGluZyBzdWJtZW51IGlmIGFueVxuICAgICAqIEBwYXJhbSBtZW51SXRlbSB0byBsb29rIGZvciBhY3RpdmUgc2libGluZ3NcbiAgICAgKi9cbiAgICBzZXRJbmFjdGl2ZVNpYmxpbmdNZW51SXRlbShtZW51SXRlbTogTWVudUl0ZW1Db21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcmVtb3ZlQWN0aXZlU2libGluZyhtZW51SXRlbSk7XG4gICAgICAgIHRoaXMuX2VtaXRBY3RpdmVQYXRoKCk7XG4gICAgfVxuXG4gICAgLyoqIEluaXRpYWxpemVzIG1lbnUgc2VydmljZSBiYXNlZCBvbiBnaXZlbiBNZW51IENvbXBvbmVudCAqL1xuICAgIHNldE1lbnVSb290KG1lbnU6IE1lbnVDb21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbWVudSA9IG1lbnU7XG4gICAgICAgIHRoaXMubWVudU1hcCA9IHRoaXMuX2J1aWxkTWVudU1hcCh0aGlzLl9tZW51KTtcbiAgICB9XG5cbiAgICAvKiogQ2xlYXJzIEFjdGl2ZSBOb2RlIFBhdGggYW5kIHJlc2V0cyBGb2N1c2VkIE5vZGUgKi9cbiAgICByZXNldE1lbnVTdGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2xlYXJBY3RpdmVQYXRoKCk7XG4gICAgICAgIHRoaXMuZm9jdXNlZE5vZGUgPSBudWxsO1xuICAgICAgICB0aGlzLl9lbWl0QWN0aXZlUGF0aCgpO1xuICAgIH1cblxuICAgIC8qKiAtIFVwZGF0ZXMgdGhlIHN0cnVjdHVyZSBvZiB0aGUgbWVudVxuICAgICAqICAtIFZhbGlkYXRlcyBBY3RpdmUgTm9kZSBQYXRoXG4gICAgICogIC0gVmFsaWRhdGVzIEZvY3VzZWQgTm9kZSAqL1xuICAgIHJlYnVpbGRNZW51KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1lbnVNYXAgPSB0aGlzLl9idWlsZE1lbnVNYXAodGhpcy5fbWVudSk7XG5cbiAgICAgICAgY29uc3QgZGVhZE5vZGUgPSB0aGlzLmFjdGl2ZU5vZGVQYXRoLmZpbmQoKG5vZGUpID0+ICF0aGlzLm1lbnVNYXAuaGFzKG5vZGUuaXRlbSkpO1xuICAgICAgICBpZiAoZGVhZE5vZGUpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0QWN0aXZlKGZhbHNlLCBkZWFkTm9kZS5pdGVtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGludmFsaWRGb2N1c2VkRWxlbWVudCA9IHRoaXMuZm9jdXNlZE5vZGUgJiYgIXRoaXMubWVudU1hcC5nZXQodGhpcy5mb2N1c2VkTm9kZS5pdGVtKTtcbiAgICAgICAgaWYgKGludmFsaWRGb2N1c2VkRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c2VkTm9kZSA9XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVOb2RlUGF0aFt0aGlzLmFjdGl2ZU5vZGVQYXRoLmxlbmd0aCAtIDFdIHx8IHRoaXMubWVudU1hcC5nZXQobnVsbCkuY2hpbGRyZW5bMF07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQWRkcyBNZW51IGtleWJvYXJkIHN1cHBvcnQgKi9cbiAgICBhZGRLZXlib2FyZFN1cHBvcnQoZWxlbWVudFJlZjogRWxlbWVudFJlZik6IHZvaWQge1xuICAgICAgICB0aGlzLnJlbW92ZUtleWJvYXJkU3VwcG9ydCgpO1xuICAgICAgICB0aGlzLl9zZXRLZXlib2FyZFN1cHBvcnQoZWxlbWVudFJlZik7XG4gICAgfVxuXG4gICAgLyoqIFJlbW92ZXMgTWVudSBrZXlib2FyZCBzdXBwb3J0ICovXG4gICAgcmVtb3ZlS2V5Ym9hcmRTdXBwb3J0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fZGVzdHJveUtleWJvYXJkSGFuZGxlckxpc3RlbmVyKSB7XG4gICAgICAgICAgICB0aGlzLl9kZXN0cm95S2V5Ym9hcmRIYW5kbGVyTGlzdGVuZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZW1vdmVLZXlib2FyZFN1cHBvcnQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBSZXR1cm5zIHNpYmxpbmdzIG9mIGdpdmVuIG5vZGUgKi9cbiAgICBwcml2YXRlIF9ub2RlU2libGluZ3Mobm9kZTogTWVudU5vZGUpOiBNZW51Tm9kZVtdIHtcbiAgICAgICAgcmV0dXJuIG5vZGUucGFyZW50ID8gbm9kZS5wYXJlbnQuY2hpbGRyZW4gOiB0aGlzLm1lbnVNYXAuZ2V0KG51bGwpLmNoaWxkcmVuO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEFkZHMgZ2l2ZW4gZWxlbWVudCB0byB0aGUgQWN0aXZlIE5vZGUgUGF0aCBhbmQgc2V0dHMgYXMgYWN0aXZlKi9cbiAgICBwcml2YXRlIF9hZGRUb0FjdGl2ZVBhdGgobWVudUl0ZW06IE1lbnVJdGVtQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG1lbnVOb2RlID0gdGhpcy5tZW51TWFwLmdldChtZW51SXRlbSk7XG4gICAgICAgIHRoaXMuX3JlbW92ZUFjdGl2ZVNpYmxpbmcobWVudUl0ZW0pO1xuICAgICAgICB0aGlzLmFjdGl2ZU5vZGVQYXRoLnB1c2gobWVudU5vZGUpO1xuICAgICAgICBtZW51Tm9kZS5pdGVtLnNldFNlbGVjdGVkKHRydWUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFJlbW92ZXMgZ2l2ZW4gZWxlbWVudCBhbmQgYWxsIGl0cyBzdWNjZXNzb3JzIGZyb20gdGhlIEFjdGl2ZSBOb2RlIFBhdGggYW5kIHNldHRzIGFzIGluYWN0aXZlKi9cbiAgICBwcml2YXRlIF9yZW1vdmVGcm9tQWN0aXZlUGF0aChtZW51SXRlbTogTWVudUl0ZW1Db21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbWVudU5vZGUgPSB0aGlzLm1lbnVNYXAuZ2V0KG1lbnVJdGVtKTtcbiAgICAgICAgY29uc3QgcGF0aEluZGV4ID0gdGhpcy5hY3RpdmVOb2RlUGF0aC5maW5kSW5kZXgoKGkpID0+IGkuaXRlbSA9PT0gbWVudU5vZGUuaXRlbSk7XG5cbiAgICAgICAgaWYgKHBhdGhJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlTm9kZVBhdGhcbiAgICAgICAgICAgICAgICAuc3BsaWNlKHBhdGhJbmRleClcbiAgICAgICAgICAgICAgICAuZm9yRWFjaCgocmVtb3ZlZEFjdGl2ZU5vZGUpID0+IHJlbW92ZWRBY3RpdmVOb2RlLml0ZW0uc2V0U2VsZWN0ZWQoZmFsc2UpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFJlbW92ZXMgYWxsIGVsZW1lbnRzIGZyb20gdGhlIEFjdGl2ZSBOb2RlIFBhdGggYW5kIHNldHMgdGhlbSBhcyBjbG9zZWQgKi9cbiAgICBwcml2YXRlIF9jbGVhckFjdGl2ZVBhdGgoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZU5vZGVQYXRoLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5fcmVtb3ZlRnJvbUFjdGl2ZVBhdGgodGhpcy5hY3RpdmVOb2RlUGF0aFswXS5pdGVtKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuXG4gICAgICogLSBCdWlsZHMgTWVudSBOb2RlcyBiYXNlZCBvbiBNZW51IEl0ZW1zXG4gICAgICogLSBDcmVhdGVzIE1hcCBvZiB0aGUgTWVudSBOb2RlcyAqL1xuICAgIHByaXZhdGUgX2J1aWxkTWVudU1hcChtZW51OiBNZW51Q29tcG9uZW50KTogTWVudU1hcCB7XG4gICAgICAgIGZ1bmN0aW9uIGJ1aWxkTm9kZShtZW51SXRlbTogTWVudUl0ZW1Db21wb25lbnQpOiBNZW51Tm9kZSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGl0ZW06IG1lbnVJdGVtLFxuICAgICAgICAgICAgICAgIHBhcmVudDogbnVsbCxcbiAgICAgICAgICAgICAgICBjaGlsZHJlbjogbWVudUl0ZW0uc3VibWVudVxuICAgICAgICAgICAgICAgICAgICA/IG1lbnVJdGVtLnN1Ym1lbnUubWVudUl0ZW1zLnRvQXJyYXkoKS5tYXAoKHN1Yk1lbnVJdGVtKSA9PiBidWlsZE5vZGUoc3ViTWVudUl0ZW0pKVxuICAgICAgICAgICAgICAgICAgICA6IFtdXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gc2V0UGFyZW50cyhub2RlOiBNZW51Tm9kZSwgcGFyZW50OiBNZW51Tm9kZSk6IHZvaWQge1xuICAgICAgICAgICAgbm9kZS5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgICAgICAgICBub2RlLmNoaWxkcmVuLmZvckVhY2goKGNoaWxkTm9kZSkgPT4gc2V0UGFyZW50cyhjaGlsZE5vZGUsIG5vZGUpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIHRvTWFwKG5vZGU6IE1lbnVOb2RlLCBtYXAgPSBuZXcgTWFwKCkgYXMgTWVudU1hcCk6IE1lbnVNYXAge1xuICAgICAgICAgICAgbWFwLnNldChub2RlLml0ZW0sIG5vZGUpO1xuICAgICAgICAgICAgbm9kZS5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZE5vZGUpID0+IHRvTWFwKGNoaWxkTm9kZSwgbWFwKSk7XG4gICAgICAgICAgICByZXR1cm4gbWFwO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbWVudVRyZWU6IE1lbnVOb2RlID0ge1xuICAgICAgICAgICAgaXRlbTogbnVsbCxcbiAgICAgICAgICAgIHBhcmVudDogbnVsbCxcbiAgICAgICAgICAgIGNoaWxkcmVuOiBtZW51Lm1lbnVJdGVtcy50b0FycmF5KCkubWFwKChpdGVtKSA9PiBidWlsZE5vZGUoaXRlbSkpXG4gICAgICAgIH07XG5cbiAgICAgICAgc2V0UGFyZW50cyhtZW51VHJlZSwgbnVsbCk7XG5cbiAgICAgICAgcmV0dXJuIHRvTWFwKG1lbnVUcmVlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBSZW1vdmVzIGFjdGl2ZSBzaWJsaW5nIG9mIGEgZ2l2ZW4gbWVudSBpdGVtIGZyb20gdGhlIEFjdGl2ZSBQYXRoICovXG4gICAgcHJpdmF0ZSBfcmVtb3ZlQWN0aXZlU2libGluZyhtZW51SXRlbTogTWVudUl0ZW1Db21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbWVudU5vZGUgPSB0aGlzLm1lbnVNYXAuZ2V0KG1lbnVJdGVtKTtcbiAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBtZW51Tm9kZS5wYXJlbnQuY2hpbGRyZW4ubWFwKChpKSA9PiBpLml0ZW0pO1xuICAgICAgICBjb25zdCBhY3RpdmVTaWJsaW5nID0gdGhpcy5hY3RpdmVOb2RlUGF0aC5maW5kKChpKSA9PiBjaGlsZHJlbi5pbmNsdWRlcyhpLml0ZW0pKTtcbiAgICAgICAgY29uc3QgYWN0aXZlUGFyZW50SW5kZXggPSB0aGlzLmFjdGl2ZU5vZGVQYXRoLmluZGV4T2YobWVudU5vZGUucGFyZW50KTtcblxuICAgICAgICBpZiAoYWN0aXZlU2libGluZykge1xuICAgICAgICAgICAgdGhpcy5fcmVtb3ZlRnJvbUFjdGl2ZVBhdGgoYWN0aXZlUGFyZW50SW5kZXggIT09IC0xID8gYWN0aXZlU2libGluZy5pdGVtIDogdGhpcy5hY3RpdmVOb2RlUGF0aFswXS5pdGVtKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEFkZHMga2V5Ym9hcmQgc3VwcG9ydCAqL1xuICAgIHByaXZhdGUgX3NldEtleWJvYXJkU3VwcG9ydChlbGVtZW50UmVmOiBFbGVtZW50UmVmKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3lLZXlib2FyZEhhbmRsZXJMaXN0ZW5lciA9IHRoaXMuX3JlbmRlcmVyLmxpc3RlbihcbiAgICAgICAgICAgIGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICdrZXlkb3duJyxcbiAgICAgICAgICAgIChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4gdGhpcy5faGFuZGxlS2V5KGV2ZW50KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2hhbmRsZUtleShldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBmb2N1c1JpZ2h0ID0gKG5vZGUpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zZXRGb2N1c2VkKG5vZGUuY2hpbGRyZW5bMF0uaXRlbSkpO1xuICAgICAgICB9O1xuICAgICAgICBsZXQgbWF0Y2hlZCA9IHRydWU7XG5cbiAgICAgICAgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBSSUdIVF9BUlJPVykpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmZvY3VzZWROb2RlLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0QWN0aXZlKHRydWUsIHRoaXMuZm9jdXNlZE5vZGUuaXRlbSk7XG4gICAgICAgICAgICAgICAgZm9jdXNSaWdodCh0aGlzLmZvY3VzZWROb2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgTEVGVF9BUlJPVykpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmZvY3VzZWROb2RlLnBhcmVudC5pdGVtKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRBY3RpdmUoZmFsc2UsIHRoaXMuZm9jdXNlZE5vZGUucGFyZW50Lml0ZW0pO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0Rm9jdXNlZCh0aGlzLmZvY3VzZWROb2RlLnBhcmVudC5pdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgRE9XTl9BUlJPVykpIHtcbiAgICAgICAgICAgIGNvbnN0IGNsb3Nlc3QgPSB0aGlzLl9jbG9zZXN0RW5hYmxlZCh0aGlzLmZvY3VzZWROb2RlLCAnZG93bicpO1xuICAgICAgICAgICAgaWYgKGNsb3Nlc3QpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldEZvY3VzZWQoY2xvc2VzdC5pdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgVVBfQVJST1cpKSB7XG4gICAgICAgICAgICBjb25zdCBjbG9zZXN0ID0gdGhpcy5fY2xvc2VzdEVuYWJsZWQodGhpcy5mb2N1c2VkTm9kZSwgJ3VwJyk7XG4gICAgICAgICAgICBpZiAoY2xvc2VzdCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0Rm9jdXNlZChjbG9zZXN0Lml0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBbU1BBQ0UsIEVOVEVSXSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGZvY3VzZWROb2RlID0gdGhpcy5mb2N1c2VkTm9kZTtcbiAgICAgICAgICAgIHRoaXMuc2V0QWN0aXZlKHRydWUsIGZvY3VzZWROb2RlLml0ZW0pO1xuICAgICAgICAgICAgZm9jdXNlZE5vZGUuaXRlbS5jbGljaygpO1xuICAgICAgICAgICAgaWYgKGZvY3VzZWROb2RlLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGZvY3VzUmlnaHQoZm9jdXNlZE5vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBFU0NBUEUpICYmIHRoaXMubWVudS5jbG9zZU9uRXNjYXBlS2V5KSB7XG4gICAgICAgICAgICB0aGlzLm1lbnUuY2xvc2UoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1hdGNoZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtYXRjaGVkKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gRW1pdHMgYW4gYXJyYXkgb2YgYWN0aXZlIG1lbnUgaXRlbXMgKi9cbiAgICBwcml2YXRlIF9lbWl0QWN0aXZlUGF0aCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tZW51LmFjdGl2ZVBhdGguZW1pdCh0aGlzLmFjdGl2ZU5vZGVQYXRoLm1hcCgobm9kZSkgPT4gbm9kZS5pdGVtKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gRGVwZW5kaW5nIG9uIGRpcmVjdGlvbiByZXR1cm5zIGNsb3Nlc3QgZW5hYmxlZCBzaWJsaW5nIG9mIGdpdmVuIG5vZGUgKi9cbiAgICBwcml2YXRlIF9jbG9zZXN0RW5hYmxlZChub2RlOiBNZW51Tm9kZSwgZGlyZWN0aW9uOiAndXAnIHwgJ2Rvd24nKTogTWVudU5vZGUgfCBudWxsIHtcbiAgICAgICAgY29uc3Qgc2libGluZ3MgPSBkaXJlY3Rpb24gPT09ICd1cCcgPyBbLi4udGhpcy5fbm9kZVNpYmxpbmdzKG5vZGUpXS5yZXZlcnNlKCkgOiB0aGlzLl9ub2RlU2libGluZ3Mobm9kZSk7XG5cbiAgICAgICAgY29uc3Qgc3RhcnRJbmRleCA9IHNpYmxpbmdzLmluZGV4T2Yobm9kZSkgKyAxO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSBzdGFydEluZGV4OyBpIDwgc2libGluZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmICghc2libGluZ3NbaV0uaXRlbS5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzaWJsaW5nc1tpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbn1cbiJdfQ==
243
+ }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i1.RtlService, decorators: [{
244
+ type: Optional
245
+ }] }]; } });
246
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvbWVudS9zZXJ2aWNlcy9tZW51LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzVFLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbEUsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7OztBQVc1RyxNQUFNLE9BQU8sV0FBVztJQXdCcEIsWUFBb0IsU0FBb0IsRUFBK0IsV0FBdUI7UUFBMUUsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUErQixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQWpCOUYsc0NBQXNDO1FBQ3RDLG1CQUFjLEdBQWUsRUFBRSxDQUFDO1FBRWhDLHNDQUFzQztRQUM5QixrQkFBYSxHQUFxQixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBYXlDLENBQUM7SUFMbEcsY0FBYztJQUNkLElBQUksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDO0lBQ3ZDLENBQUM7SUFJRCxrQ0FBa0M7SUFDbEMsSUFBSSxJQUFJO1FBQ0osT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxtQ0FBbUM7SUFDbkMsSUFBSSxZQUFZO1FBQ1osT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDLElB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NUIsT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDdEI7U0FDSjtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7O3dHQXZSUSxXQUFXOzRHQUFYLFdBQVc7MkZBQVgsV0FBVztrQkFEdkIsVUFBVTs7MEJBeUJvQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgSW5qZWN0YWJsZSwgT3B0aW9uYWwsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWVudUl0ZW1Db21wb25lbnQgfSBmcm9tICcuLi9tZW51LWl0ZW0vbWVudS1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNZW51Q29tcG9uZW50IH0gZnJvbSAnLi4vbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHsgS2V5VXRpbCwgUnRsU2VydmljZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS91dGlscyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IERPV05fQVJST1csIEVOVEVSLCBFU0NBUEUsIExFRlRfQVJST1csIFJJR0hUX0FSUk9XLCBTUEFDRSwgVVBfQVJST1cgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuXG5pbnRlcmZhY2UgTWVudU5vZGUge1xuICAgIGl0ZW06IE1lbnVJdGVtQ29tcG9uZW50O1xuICAgIHBhcmVudDogTWVudU5vZGU7XG4gICAgY2hpbGRyZW46IE1lbnVOb2RlW107XG59XG5cbnR5cGUgTWVudU1hcCA9IE1hcDxNZW51SXRlbUNvbXBvbmVudCwgTWVudU5vZGU+O1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTWVudVNlcnZpY2Uge1xuICAgIC8qKiBNYXAgb2YgbWVudSBpdGVtcyB0byBtZW51IG5vZGVzICovXG4gICAgbWVudU1hcDogTWVudU1hcDtcblxuICAgIC8qKiBDdXJyZW50bHkgZm9jdXNlZCBub2RlICovXG4gICAgZm9jdXNlZE5vZGU6IE1lbnVOb2RlO1xuXG4gICAgLyoqIENvbGxlY3Rpb24gb2YgYWN0aXZlIG1lbnUgbm9kZXMgKi9cbiAgICBhY3RpdmVOb2RlUGF0aDogTWVudU5vZGVbXSA9IFtdO1xuXG4gICAgLyoqIENvbGxlY3Rpb24gb2YgYWN0aXZlIG1lbnUgbm9kZXMgKi9cbiAgICBwcml2YXRlIF9pc01vYmlsZU1vZGU6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9tZW51OiBNZW51Q29tcG9uZW50O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kZXN0cm95S2V5Ym9hcmRIYW5kbGVyTGlzdGVuZXI6ICgpID0+IHZvaWQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBfaXNSdGwoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ydGxTZXJ2aWNlPy5ydGwudmFsdWU7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMiwgQE9wdGlvbmFsKCkgcHJpdmF0ZSByZWFkb25seSBfcnRsU2VydmljZTogUnRsU2VydmljZSkge31cblxuICAgIC8qKiBSZWZlcmVuY2UgdG8gbWVudSBjb21wb25lbnQgKi9cbiAgICBnZXQgbWVudSgpOiBNZW51Q29tcG9uZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21lbnU7XG4gICAgfVxuXG4gICAgLyoqIFJldHVybnMgbWVudSBtb2RlIG9ic2VydmFibGUgKi9cbiAgICBnZXQgaXNNb2JpbGVNb2RlKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNNb2JpbGVNb2RlLmFzT2JzZXJ2YWJsZSgpLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG4gICAgfVxuXG4gICAgLyoqIFNldHMgbWVudSBtb2RlICovXG4gICAgc2V0TWVudU1vZGUodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faXNNb2JpbGVNb2RlLm5leHQodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKiBTZXRzIGdpdmVuIG1lbnUgaXRlbSBhcyBmb2N1c2VkICovXG4gICAgc2V0Rm9jdXNlZChtZW51SXRlbTogTWVudUl0ZW1Db21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb2N1c2VkTm9kZSA9IHRoaXMubWVudU1hcC5nZXQobWVudUl0ZW0pO1xuICAgICAgICB0aGlzLmZvY3VzZWROb2RlLml0ZW0uZm9jdXMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHN0YXRlIG9mIGEgZ2l2ZW4gbWVudSBpdGVtXG4gICAgICogQHBhcmFtIGlzQWN0aXZlIC0gV2hldGhlciBzaG91bGQgYmUgc2V0IGFzIGFjdGl2ZSBvciBpbmFjdGl2ZVxuICAgICAqIEBwYXJhbSBtZW51SXRlbSBgTWVudUl0ZW1Db21wb25lbnRgIHRoYXQgc2hvdWxkIGJlIHNldCBhcyBhY3RpdmUgb3IgaW5hY3RpdmVcbiAgICAgKi9cbiAgICBzZXRBY3RpdmUoaXNBY3RpdmU6IGJvb2xlYW4sIG1lbnVJdGVtOiBNZW51SXRlbUNvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoaXNBY3RpdmUgJiYgbWVudUl0ZW0uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0FjdGl2ZSkge1xuICAgICAgICAgICAgdGhpcy5fYWRkVG9BY3RpdmVQYXRoKG1lbnVJdGVtKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3JlbW92ZUZyb21BY3RpdmVQYXRoKG1lbnVJdGVtKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9lbWl0QWN0aXZlUGF0aCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsb3NlIGFjdGl2ZSBzaWJsaW5nIHN1Ym1lbnUgaWYgYW55XG4gICAgICogQHBhcmFtIG1lbnVJdGVtIHRvIGxvb2sgZm9yIGFjdGl2ZSBzaWJsaW5nc1xuICAgICAqL1xuICAgIHNldEluYWN0aXZlU2libGluZ01lbnVJdGVtKG1lbnVJdGVtOiBNZW51SXRlbUNvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9yZW1vdmVBY3RpdmVTaWJsaW5nKG1lbnVJdGVtKTtcbiAgICAgICAgdGhpcy5fZW1pdEFjdGl2ZVBhdGgoKTtcbiAgICB9XG5cbiAgICAvKiogSW5pdGlhbGl6ZXMgbWVudSBzZXJ2aWNlIGJhc2VkIG9uIGdpdmVuIE1lbnUgQ29tcG9uZW50ICovXG4gICAgc2V0TWVudVJvb3QobWVudTogTWVudUNvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9tZW51ID0gbWVudTtcbiAgICAgICAgdGhpcy5tZW51TWFwID0gdGhpcy5fYnVpbGRNZW51TWFwKHRoaXMuX21lbnUpO1xuICAgIH1cblxuICAgIC8qKiBDbGVhcnMgQWN0aXZlIE5vZGUgUGF0aCBhbmQgcmVzZXRzIEZvY3VzZWQgTm9kZSAqL1xuICAgIHJlc2V0TWVudVN0YXRlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jbGVhckFjdGl2ZVBhdGgoKTtcbiAgICAgICAgdGhpcy5mb2N1c2VkTm9kZSA9IG51bGw7XG4gICAgICAgIHRoaXMuX2VtaXRBY3RpdmVQYXRoKCk7XG4gICAgfVxuXG4gICAgLyoqIC0gVXBkYXRlcyB0aGUgc3RydWN0dXJlIG9mIHRoZSBtZW51XG4gICAgICogIC0gVmFsaWRhdGVzIEFjdGl2ZSBOb2RlIFBhdGhcbiAgICAgKiAgLSBWYWxpZGF0ZXMgRm9jdXNlZCBOb2RlICovXG4gICAgcmVidWlsZE1lbnUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubWVudU1hcCA9IHRoaXMuX2J1aWxkTWVudU1hcCh0aGlzLl9tZW51KTtcblxuICAgICAgICBjb25zdCBkZWFkTm9kZSA9IHRoaXMuYWN0aXZlTm9kZVBhdGguZmluZCgobm9kZSkgPT4gIXRoaXMubWVudU1hcC5oYXMobm9kZS5pdGVtKSk7XG4gICAgICAgIGlmIChkZWFkTm9kZSkge1xuICAgICAgICAgICAgdGhpcy5zZXRBY3RpdmUoZmFsc2UsIGRlYWROb2RlLml0ZW0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaW52YWxpZEZvY3VzZWRFbGVtZW50ID0gdGhpcy5mb2N1c2VkTm9kZSAmJiAhdGhpcy5tZW51TWFwLmdldCh0aGlzLmZvY3VzZWROb2RlLml0ZW0pO1xuICAgICAgICBpZiAoaW52YWxpZEZvY3VzZWRFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzZWROb2RlID1cbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZU5vZGVQYXRoW3RoaXMuYWN0aXZlTm9kZVBhdGgubGVuZ3RoIC0gMV0gfHwgdGhpcy5tZW51TWFwLmdldChudWxsKS5jaGlsZHJlblswXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBBZGRzIE1lbnUga2V5Ym9hcmQgc3VwcG9ydCAqL1xuICAgIGFkZEtleWJvYXJkU3VwcG9ydChlbGVtZW50UmVmOiBFbGVtZW50UmVmKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVtb3ZlS2V5Ym9hcmRTdXBwb3J0KCk7XG4gICAgICAgIHRoaXMuX3NldEtleWJvYXJkU3VwcG9ydChlbGVtZW50UmVmKTtcbiAgICB9XG5cbiAgICAvKiogUmVtb3ZlcyBNZW51IGtleWJvYXJkIHN1cHBvcnQgKi9cbiAgICByZW1vdmVLZXlib2FyZFN1cHBvcnQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9kZXN0cm95S2V5Ym9hcmRIYW5kbGVyTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMuX2Rlc3Ryb3lLZXlib2FyZEhhbmRsZXJMaXN0ZW5lcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlbW92ZUtleWJvYXJkU3VwcG9ydCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFJldHVybnMgc2libGluZ3Mgb2YgZ2l2ZW4gbm9kZSAqL1xuICAgIHByaXZhdGUgX25vZGVTaWJsaW5ncyhub2RlOiBNZW51Tm9kZSk6IE1lbnVOb2RlW10ge1xuICAgICAgICByZXR1cm4gbm9kZS5wYXJlbnQgPyBub2RlLnBhcmVudC5jaGlsZHJlbiA6IHRoaXMubWVudU1hcC5nZXQobnVsbCkuY2hpbGRyZW47XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQWRkcyBnaXZlbiBlbGVtZW50IHRvIHRoZSBBY3RpdmUgTm9kZSBQYXRoIGFuZCBzZXR0cyBhcyBhY3RpdmUqL1xuICAgIHByaXZhdGUgX2FkZFRvQWN0aXZlUGF0aChtZW51SXRlbTogTWVudUl0ZW1Db21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbWVudU5vZGUgPSB0aGlzLm1lbnVNYXAuZ2V0KG1lbnVJdGVtKTtcbiAgICAgICAgdGhpcy5fcmVtb3ZlQWN0aXZlU2libGluZyhtZW51SXRlbSk7XG4gICAgICAgIHRoaXMuYWN0aXZlTm9kZVBhdGgucHVzaChtZW51Tm9kZSk7XG4gICAgICAgIG1lbnVOb2RlLml0ZW0uc2V0U2VsZWN0ZWQodHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gUmVtb3ZlcyBnaXZlbiBlbGVtZW50IGFuZCBhbGwgaXRzIHN1Y2Nlc3NvcnMgZnJvbSB0aGUgQWN0aXZlIE5vZGUgUGF0aCBhbmQgc2V0dHMgYXMgaW5hY3RpdmUqL1xuICAgIHByaXZhdGUgX3JlbW92ZUZyb21BY3RpdmVQYXRoKG1lbnVJdGVtOiBNZW51SXRlbUNvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBtZW51Tm9kZSA9IHRoaXMubWVudU1hcC5nZXQobWVudUl0ZW0pO1xuICAgICAgICBjb25zdCBwYXRoSW5kZXggPSB0aGlzLmFjdGl2ZU5vZGVQYXRoLmZpbmRJbmRleCgoaSkgPT4gaS5pdGVtID09PSBtZW51Tm9kZS5pdGVtKTtcblxuICAgICAgICBpZiAocGF0aEluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVOb2RlUGF0aFxuICAgICAgICAgICAgICAgIC5zcGxpY2UocGF0aEluZGV4KVxuICAgICAgICAgICAgICAgIC5mb3JFYWNoKChyZW1vdmVkQWN0aXZlTm9kZSkgPT4gcmVtb3ZlZEFjdGl2ZU5vZGUuaXRlbS5zZXRTZWxlY3RlZChmYWxzZSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gUmVtb3ZlcyBhbGwgZWxlbWVudHMgZnJvbSB0aGUgQWN0aXZlIE5vZGUgUGF0aCBhbmQgc2V0cyB0aGVtIGFzIGNsb3NlZCAqL1xuICAgIHByaXZhdGUgX2NsZWFyQWN0aXZlUGF0aCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuYWN0aXZlTm9kZVBhdGgubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLl9yZW1vdmVGcm9tQWN0aXZlUGF0aCh0aGlzLmFjdGl2ZU5vZGVQYXRoWzBdLml0ZW0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiAtIEJ1aWxkcyBNZW51IE5vZGVzIGJhc2VkIG9uIE1lbnUgSXRlbXNcbiAgICAgKiAtIENyZWF0ZXMgTWFwIG9mIHRoZSBNZW51IE5vZGVzICovXG4gICAgcHJpdmF0ZSBfYnVpbGRNZW51TWFwKG1lbnU6IE1lbnVDb21wb25lbnQpOiBNZW51TWFwIHtcbiAgICAgICAgZnVuY3Rpb24gYnVpbGROb2RlKG1lbnVJdGVtOiBNZW51SXRlbUNvbXBvbmVudCk6IE1lbnVOb2RlIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgaXRlbTogbWVudUl0ZW0sXG4gICAgICAgICAgICAgICAgcGFyZW50OiBudWxsLFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBtZW51SXRlbS5zdWJtZW51XG4gICAgICAgICAgICAgICAgICAgID8gbWVudUl0ZW0uc3VibWVudS5tZW51SXRlbXMudG9BcnJheSgpLm1hcCgoc3ViTWVudUl0ZW0pID0+IGJ1aWxkTm9kZShzdWJNZW51SXRlbSkpXG4gICAgICAgICAgICAgICAgICAgIDogW11cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBzZXRQYXJlbnRzKG5vZGU6IE1lbnVOb2RlLCBwYXJlbnQ6IE1lbnVOb2RlKTogdm9pZCB7XG4gICAgICAgICAgICBub2RlLnBhcmVudCA9IHBhcmVudDtcbiAgICAgICAgICAgIG5vZGUuY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGROb2RlKSA9PiBzZXRQYXJlbnRzKGNoaWxkTm9kZSwgbm9kZSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gdG9NYXAobm9kZTogTWVudU5vZGUsIG1hcCA9IG5ldyBNYXAoKSBhcyBNZW51TWFwKTogTWVudU1hcCB7XG4gICAgICAgICAgICBtYXAuc2V0KG5vZGUuaXRlbSwgbm9kZSk7XG4gICAgICAgICAgICBub2RlLmNoaWxkcmVuLmZvckVhY2goKGNoaWxkTm9kZSkgPT4gdG9NYXAoY2hpbGROb2RlLCBtYXApKTtcbiAgICAgICAgICAgIHJldHVybiBtYXA7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtZW51VHJlZTogTWVudU5vZGUgPSB7XG4gICAgICAgICAgICBpdGVtOiBudWxsLFxuICAgICAgICAgICAgcGFyZW50OiBudWxsLFxuICAgICAgICAgICAgY2hpbGRyZW46IG1lbnUubWVudUl0ZW1zLnRvQXJyYXkoKS5tYXAoKGl0ZW0pID0+IGJ1aWxkTm9kZShpdGVtKSlcbiAgICAgICAgfTtcblxuICAgICAgICBzZXRQYXJlbnRzKG1lbnVUcmVlLCBudWxsKTtcblxuICAgICAgICByZXR1cm4gdG9NYXAobWVudVRyZWUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFJlbW92ZXMgYWN0aXZlIHNpYmxpbmcgb2YgYSBnaXZlbiBtZW51IGl0ZW0gZnJvbSB0aGUgQWN0aXZlIFBhdGggKi9cbiAgICBwcml2YXRlIF9yZW1vdmVBY3RpdmVTaWJsaW5nKG1lbnVJdGVtOiBNZW51SXRlbUNvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBtZW51Tm9kZSA9IHRoaXMubWVudU1hcC5nZXQobWVudUl0ZW0pO1xuICAgICAgICBjb25zdCBjaGlsZHJlbiA9IG1lbnVOb2RlLnBhcmVudC5jaGlsZHJlbi5tYXAoKGkpID0+IGkuaXRlbSk7XG4gICAgICAgIGNvbnN0IGFjdGl2ZVNpYmxpbmcgPSB0aGlzLmFjdGl2ZU5vZGVQYXRoLmZpbmQoKGkpID0+IGNoaWxkcmVuLmluY2x1ZGVzKGkuaXRlbSkpO1xuICAgICAgICBjb25zdCBhY3RpdmVQYXJlbnRJbmRleCA9IHRoaXMuYWN0aXZlTm9kZVBhdGguaW5kZXhPZihtZW51Tm9kZS5wYXJlbnQpO1xuXG4gICAgICAgIGlmIChhY3RpdmVTaWJsaW5nKSB7XG4gICAgICAgICAgICB0aGlzLl9yZW1vdmVGcm9tQWN0aXZlUGF0aChhY3RpdmVQYXJlbnRJbmRleCAhPT0gLTEgPyBhY3RpdmVTaWJsaW5nLml0ZW0gOiB0aGlzLmFjdGl2ZU5vZGVQYXRoWzBdLml0ZW0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQWRkcyBrZXlib2FyZCBzdXBwb3J0ICovXG4gICAgcHJpdmF0ZSBfc2V0S2V5Ym9hcmRTdXBwb3J0KGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZGVzdHJveUtleWJvYXJkSGFuZGxlckxpc3RlbmVyID0gdGhpcy5fcmVuZGVyZXIubGlzdGVuKFxuICAgICAgICAgICAgZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgJ2tleWRvd24nLFxuICAgICAgICAgICAgKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB0aGlzLl9oYW5kbGVLZXkoZXZlbnQpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaGFuZGxlS2V5KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZvY3VzUmlnaHQgPSAobm9kZSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNldEZvY3VzZWQobm9kZS5jaGlsZHJlblswXS5pdGVtKSk7XG4gICAgICAgIH07XG4gICAgICAgIGxldCBtYXRjaGVkID0gdHJ1ZTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFJJR0hUX0FSUk9XKSAmJiAhdGhpcy5faXNSdGwpIHx8XG4gICAgICAgICAgICAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIExFRlRfQVJST1cpICYmIHRoaXMuX2lzUnRsKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmZvY3VzZWROb2RlLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0QWN0aXZlKHRydWUsIHRoaXMuZm9jdXNlZE5vZGUuaXRlbSk7XG4gICAgICAgICAgICAgICAgZm9jdXNSaWdodCh0aGlzLmZvY3VzZWROb2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgTEVGVF9BUlJPVykgJiYgIXRoaXMuX2lzUnRsKSB8fFxuICAgICAgICAgICAgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBSSUdIVF9BUlJPVykgJiYgdGhpcy5faXNSdGwpXG4gICAgICAgICkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZm9jdXNlZE5vZGUucGFyZW50Lml0ZW0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldEFjdGl2ZShmYWxzZSwgdGhpcy5mb2N1c2VkTm9kZS5wYXJlbnQuaXRlbSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRGb2N1c2VkKHRoaXMuZm9jdXNlZE5vZGUucGFyZW50Lml0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBET1dOX0FSUk9XKSkge1xuICAgICAgICAgICAgY29uc3QgY2xvc2VzdCA9IHRoaXMuX2Nsb3Nlc3RFbmFibGVkKHRoaXMuZm9jdXNlZE5vZGUsICdkb3duJyk7XG4gICAgICAgICAgICBpZiAoY2xvc2VzdCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0Rm9jdXNlZChjbG9zZXN0Lml0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBVUF9BUlJPVykpIHtcbiAgICAgICAgICAgIGNvbnN0IGNsb3Nlc3QgPSB0aGlzLl9jbG9zZXN0RW5hYmxlZCh0aGlzLmZvY3VzZWROb2RlLCAndXAnKTtcbiAgICAgICAgICAgIGlmIChjbG9zZXN0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRGb2N1c2VkKGNsb3Nlc3QuaXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFtTUEFDRSwgRU5URVJdKSkge1xuICAgICAgICAgICAgY29uc3QgZm9jdXNlZE5vZGUgPSB0aGlzLmZvY3VzZWROb2RlO1xuICAgICAgICAgICAgdGhpcy5zZXRBY3RpdmUodHJ1ZSwgZm9jdXNlZE5vZGUuaXRlbSk7XG4gICAgICAgICAgICBmb2N1c2VkTm9kZS5pdGVtLmNsaWNrKCk7XG4gICAgICAgICAgICBpZiAoZm9jdXNlZE5vZGUuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgZm9jdXNSaWdodChmb2N1c2VkTm9kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIEVTQ0FQRSkgJiYgdGhpcy5tZW51LmNsb3NlT25Fc2NhcGVLZXkpIHtcbiAgICAgICAgICAgIHRoaXMubWVudS5jbG9zZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbWF0Y2hlZCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1hdGNoZWQpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBFbWl0cyBhbiBhcnJheSBvZiBhY3RpdmUgbWVudSBpdGVtcyAqL1xuICAgIHByaXZhdGUgX2VtaXRBY3RpdmVQYXRoKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1lbnUuYWN0aXZlUGF0aC5lbWl0KHRoaXMuYWN0aXZlTm9kZVBhdGgubWFwKChub2RlKSA9PiBub2RlLml0ZW0pKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBEZXBlbmRpbmcgb24gZGlyZWN0aW9uIHJldHVybnMgY2xvc2VzdCBlbmFibGVkIHNpYmxpbmcgb2YgZ2l2ZW4gbm9kZSAqL1xuICAgIHByaXZhdGUgX2Nsb3Nlc3RFbmFibGVkKG5vZGU6IE1lbnVOb2RlLCBkaXJlY3Rpb246ICd1cCcgfCAnZG93bicpOiBNZW51Tm9kZSB8IG51bGwge1xuICAgICAgICBjb25zdCBzaWJsaW5ncyA9IGRpcmVjdGlvbiA9PT0gJ3VwJyA/IFsuLi50aGlzLl9ub2RlU2libGluZ3Mobm9kZSldLnJldmVyc2UoKSA6IHRoaXMuX25vZGVTaWJsaW5ncyhub2RlKTtcblxuICAgICAgICBjb25zdCBzdGFydEluZGV4ID0gc2libGluZ3MuaW5kZXhPZihub2RlKSArIDE7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IHN0YXJ0SW5kZXg7IGkgPCBzaWJsaW5ncy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKCFzaWJsaW5nc1tpXS5pdGVtLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNpYmxpbmdzW2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxufVxuIl19
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/facets",
3
- "version": "0.33.5-rc.45",
3
+ "version": "0.33.5-rc.46",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/feed-input",
3
- "version": "0.33.5-rc.45",
3
+ "version": "0.33.5-rc.46",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/feed-list-item",
3
- "version": "0.33.5-rc.45",
3
+ "version": "0.33.5-rc.46",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Directive, HostBinding, Injectable, InjectionToken, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Optional, Inject, Input, Output, ContentChild, TemplateRef, ViewChild, ContentChildren, NgModule, Injector } from '@angular/core';
2
+ import { Directive, HostBinding, Injectable, Optional, InjectionToken, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, Input, Output, ContentChild, TemplateRef, ViewChild, ContentChildren, NgModule, Injector } from '@angular/core';
3
3
  import { Subject, Subscription, fromEvent, defer, timer, of } from 'rxjs';
4
4
  import { distinctUntilChanged, takeUntil, filter, switchMap, startWith, map } from 'rxjs/operators';
5
5
  import * as i4 from '@fundamental-ngx/core/utils';
@@ -117,13 +117,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImpor
117
117
  }] } });
118
118
 
119
119
  class MenuService {
120
- constructor(_renderer) {
120
+ constructor(_renderer, _rtlService) {
121
121
  this._renderer = _renderer;
122
+ this._rtlService = _rtlService;
122
123
  /** Collection of active menu nodes */
123
124
  this.activeNodePath = [];
124
125
  /** Collection of active menu nodes */
125
126
  this._isMobileMode = new Subject();
126
127
  }
128
+ /** @hidden */
129
+ get _isRtl() {
130
+ var _a;
131
+ return (_a = this._rtlService) === null || _a === void 0 ? void 0 : _a.rtl.value;
132
+ }
127
133
  /** Reference to menu component */
128
134
  get menu() {
129
135
  return this._menu;
@@ -282,13 +288,15 @@ class MenuService {
282
288
  setTimeout(() => this.setFocused(node.children[0].item));
283
289
  };
284
290
  let matched = true;
285
- if (KeyUtil.isKeyCode(event, RIGHT_ARROW)) {
291
+ if ((KeyUtil.isKeyCode(event, RIGHT_ARROW) && !this._isRtl) ||
292
+ (KeyUtil.isKeyCode(event, LEFT_ARROW) && this._isRtl)) {
286
293
  if (this.focusedNode.children.length) {
287
294
  this.setActive(true, this.focusedNode.item);
288
295
  focusRight(this.focusedNode);
289
296
  }
290
297
  }
291
- else if (KeyUtil.isKeyCode(event, LEFT_ARROW)) {
298
+ else if ((KeyUtil.isKeyCode(event, LEFT_ARROW) && !this._isRtl) ||
299
+ (KeyUtil.isKeyCode(event, RIGHT_ARROW) && this._isRtl)) {
292
300
  if (this.focusedNode.parent.item) {
293
301
  this.setActive(false, this.focusedNode.parent.item);
294
302
  this.setFocused(this.focusedNode.parent.item);
@@ -340,11 +348,15 @@ class MenuService {
340
348
  return null;
341
349
  }
342
350
  }
343
- MenuService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: MenuService, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Injectable });
351
+ MenuService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: MenuService, deps: [{ token: i0.Renderer2 }, { token: i4.RtlService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
344
352
  MenuService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: MenuService });
345
353
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: MenuService, decorators: [{
346
354
  type: Injectable
347
- }], ctorParameters: function () { return [{ type: i0.Renderer2 }]; } });
355
+ }], ctorParameters: function () {
356
+ return [{ type: i0.Renderer2 }, { type: i4.RtlService, decorators: [{
357
+ type: Optional
358
+ }] }];
359
+ } });
348
360
 
349
361
  let menuUniqueId$1 = 0;
350
362
  const SUBMENU = new InjectionToken('Submenu component dependency');