@angular/cdk-experimental 14.0.0-next.11 → 14.0.0-next.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/column-resize/column-resize-directives/column-resize-flex.d.ts +1 -1
  2. package/column-resize/column-resize-directives/column-resize.d.ts +1 -1
  3. package/column-resize/column-resize-directives/default-enabled-column-resize-flex.d.ts +1 -1
  4. package/column-resize/column-resize-directives/default-enabled-column-resize.d.ts +1 -1
  5. package/column-resize/column-resize.d.ts +1 -1
  6. package/column-resize/overlay-handle.d.ts +1 -1
  7. package/column-resize/resizable.d.ts +1 -1
  8. package/combobox/combobox-popup.d.ts +1 -1
  9. package/combobox/combobox.d.ts +1 -1
  10. package/esm2020/column-resize/column-resize-directives/column-resize-flex.mjs +3 -3
  11. package/esm2020/column-resize/column-resize-directives/column-resize.mjs +3 -3
  12. package/esm2020/column-resize/column-resize-directives/default-enabled-column-resize-flex.mjs +3 -3
  13. package/esm2020/column-resize/column-resize-directives/default-enabled-column-resize.mjs +3 -3
  14. package/esm2020/column-resize/column-resize-module.mjs +8 -8
  15. package/esm2020/column-resize/column-resize-notifier.mjs +6 -6
  16. package/esm2020/column-resize/column-resize.mjs +3 -3
  17. package/esm2020/column-resize/column-size-store.mjs +3 -3
  18. package/esm2020/column-resize/event-dispatcher.mjs +3 -3
  19. package/esm2020/column-resize/overlay-handle.mjs +3 -3
  20. package/esm2020/column-resize/resizable.mjs +3 -3
  21. package/esm2020/column-resize/resize-strategy.mjs +9 -9
  22. package/esm2020/combobox/combobox-module.mjs +4 -4
  23. package/esm2020/combobox/combobox-popup.mjs +3 -3
  24. package/esm2020/combobox/combobox.mjs +3 -3
  25. package/esm2020/listbox/listbox-module.mjs +4 -4
  26. package/esm2020/listbox/listbox.mjs +6 -6
  27. package/esm2020/popover-edit/edit-event-dispatcher.mjs +3 -3
  28. package/esm2020/popover-edit/edit-ref.mjs +3 -3
  29. package/esm2020/popover-edit/edit-services.mjs +3 -3
  30. package/esm2020/popover-edit/focus-dispatcher.mjs +3 -3
  31. package/esm2020/popover-edit/focus-escape-notifier.mjs +3 -3
  32. package/esm2020/popover-edit/lens-directives.mjs +9 -9
  33. package/esm2020/popover-edit/popover-edit-module.mjs +4 -4
  34. package/esm2020/popover-edit/popover-edit-position-strategy-factory.mjs +6 -6
  35. package/esm2020/popover-edit/table-directives.mjs +15 -15
  36. package/esm2020/scrolling/auto-size-virtual-scroll.mjs +3 -3
  37. package/esm2020/scrolling/scrolling-module.mjs +4 -4
  38. package/esm2020/selection/row-selection.mjs +3 -3
  39. package/esm2020/selection/select-all.mjs +3 -3
  40. package/esm2020/selection/selection-column.mjs +9 -9
  41. package/esm2020/selection/selection-module.mjs +4 -4
  42. package/esm2020/selection/selection-toggle.mjs +3 -3
  43. package/esm2020/selection/selection.mjs +3 -3
  44. package/esm2020/table-scroll-container/table-scroll-container-module.mjs +4 -4
  45. package/esm2020/table-scroll-container/table-scroll-container.mjs +3 -3
  46. package/esm2020/version.mjs +1 -1
  47. package/fesm2015/cdk-experimental.mjs +1 -1
  48. package/fesm2015/cdk-experimental.mjs.map +1 -1
  49. package/fesm2015/column-resize.mjs +50 -50
  50. package/fesm2015/combobox.mjs +10 -10
  51. package/fesm2015/listbox.mjs +10 -10
  52. package/fesm2015/popover-edit.mjs +49 -49
  53. package/fesm2015/scrolling.mjs +7 -7
  54. package/fesm2015/selection.mjs +23 -23
  55. package/fesm2015/selection.mjs.map +1 -1
  56. package/fesm2015/table-scroll-container.mjs +7 -7
  57. package/fesm2020/cdk-experimental.mjs +1 -1
  58. package/fesm2020/cdk-experimental.mjs.map +1 -1
  59. package/fesm2020/column-resize.mjs +50 -50
  60. package/fesm2020/combobox.mjs +10 -10
  61. package/fesm2020/listbox.mjs +10 -10
  62. package/fesm2020/popover-edit.mjs +49 -49
  63. package/fesm2020/scrolling.mjs +7 -7
  64. package/fesm2020/selection.mjs +23 -23
  65. package/fesm2020/selection.mjs.map +1 -1
  66. package/fesm2020/table-scroll-container.mjs +7 -7
  67. package/listbox/listbox.d.ts +2 -2
  68. package/package.json +2 -18
  69. package/popover-edit/lens-directives.d.ts +3 -3
  70. package/popover-edit/table-directives.d.ts +5 -5
  71. package/scrolling/auto-size-virtual-scroll.d.ts +1 -1
  72. package/selection/row-selection.d.ts +1 -1
  73. package/selection/select-all.d.ts +1 -1
  74. package/selection/selection-column.d.ts +1 -1
  75. package/selection/selection-toggle.d.ts +1 -1
  76. package/selection/selection.d.ts +1 -1
  77. package/table-scroll-container/table-scroll-container.d.ts +1 -1
  78. package/dialog/dialog-config.d.ts +0 -111
  79. package/dialog/dialog-container.d.ts +0 -95
  80. package/dialog/dialog-injectors.d.ts +0 -24
  81. package/dialog/dialog-module.d.ts +0 -10
  82. package/dialog/dialog-ref.d.ts +0 -64
  83. package/dialog/dialog.d.ts +0 -103
  84. package/dialog/dialog_public_index.d.ts +0 -4
  85. package/dialog/index.d.ts +0 -8
  86. package/dialog/package.json +0 -9
  87. package/dialog/public-api.d.ts +0 -13
  88. package/esm2020/dialog/dialog-config.mjs +0 -54
  89. package/esm2020/dialog/dialog-container.mjs +0 -255
  90. package/esm2020/dialog/dialog-injectors.mjs +0 -26
  91. package/esm2020/dialog/dialog-module.mjs +0 -42
  92. package/esm2020/dialog/dialog-ref.mjs +0 -77
  93. package/esm2020/dialog/dialog.mjs +0 -285
  94. package/esm2020/dialog/dialog_public_index.mjs +0 -5
  95. package/esm2020/dialog/index.mjs +0 -9
  96. package/esm2020/dialog/public-api.mjs +0 -14
  97. package/esm2020/menu/context-menu-trigger.mjs +0 -227
  98. package/esm2020/menu/index.mjs +0 -9
  99. package/esm2020/menu/menu-aim.mjs +0 -204
  100. package/esm2020/menu/menu-bar.mjs +0 -159
  101. package/esm2020/menu/menu-base.mjs +0 -203
  102. package/esm2020/menu/menu-errors.mjs +0 -22
  103. package/esm2020/menu/menu-group.mjs +0 -30
  104. package/esm2020/menu/menu-interface.mjs +0 -11
  105. package/esm2020/menu/menu-item-checkbox.mjs +0 -48
  106. package/esm2020/menu/menu-item-radio.mjs +0 -114
  107. package/esm2020/menu/menu-item-selectable.mjs +0 -42
  108. package/esm2020/menu/menu-item.mjs +0 -289
  109. package/esm2020/menu/menu-module.mjs +0 -62
  110. package/esm2020/menu/menu-stack.mjs +0 -156
  111. package/esm2020/menu/menu-trigger-base.mjs +0 -114
  112. package/esm2020/menu/menu-trigger.mjs +0 -302
  113. package/esm2020/menu/menu.mjs +0 -168
  114. package/esm2020/menu/menu_public_index.mjs +0 -5
  115. package/esm2020/menu/pointer-focus-tracker.mjs +0 -51
  116. package/esm2020/menu/public-api.mjs +0 -24
  117. package/fesm2015/dialog.mjs +0 -736
  118. package/fesm2015/dialog.mjs.map +0 -1
  119. package/fesm2015/menu.mjs +0 -2131
  120. package/fesm2015/menu.mjs.map +0 -1
  121. package/fesm2020/dialog.mjs +0 -740
  122. package/fesm2020/dialog.mjs.map +0 -1
  123. package/fesm2020/menu.mjs +0 -2104
  124. package/fesm2020/menu.mjs.map +0 -1
  125. package/menu/context-menu-trigger.d.ts +0 -98
  126. package/menu/index.d.ts +0 -8
  127. package/menu/menu-aim.d.ts +0 -107
  128. package/menu/menu-bar.d.ts +0 -52
  129. package/menu/menu-base.d.ts +0 -104
  130. package/menu/menu-errors.d.ts +0 -17
  131. package/menu/menu-group.d.ts +0 -8
  132. package/menu/menu-interface.d.ts +0 -25
  133. package/menu/menu-item-checkbox.d.ts +0 -18
  134. package/menu/menu-item-radio.d.ts +0 -59
  135. package/menu/menu-item-selectable.d.ts +0 -21
  136. package/menu/menu-item.d.ts +0 -140
  137. package/menu/menu-module.d.ts +0 -17
  138. package/menu/menu-stack.d.ts +0 -122
  139. package/menu/menu-trigger-base.d.ts +0 -77
  140. package/menu/menu-trigger.d.ts +0 -104
  141. package/menu/menu.d.ts +0 -60
  142. package/menu/menu_public_index.d.ts +0 -4
  143. package/menu/package.json +0 -9
  144. package/menu/pointer-focus-tracker.d.ts +0 -47
  145. package/menu/public-api.d.ts +0 -23
@@ -1,289 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- import { Directive, ElementRef, EventEmitter, Inject, Input, NgZone, Optional, Output, Self, } from '@angular/core';
9
- import { coerceBooleanProperty } from '@angular/cdk/coercion';
10
- import { ENTER, hasModifierKey, LEFT_ARROW, RIGHT_ARROW, SPACE } from '@angular/cdk/keycodes';
11
- import { Directionality } from '@angular/cdk/bidi';
12
- import { fromEvent, Subject } from 'rxjs';
13
- import { filter, takeUntil } from 'rxjs/operators';
14
- import { CdkMenuTrigger } from './menu-trigger';
15
- import { CDK_MENU } from './menu-interface';
16
- import { MENU_STACK, MenuStack } from './menu-stack';
17
- import { MENU_AIM } from './menu-aim';
18
- import * as i0 from "@angular/core";
19
- import * as i1 from "@angular/cdk/bidi";
20
- import * as i2 from "./menu-trigger";
21
- import * as i3 from "./menu-stack";
22
- /**
23
- * Directive which provides the ability for an element to be focused and navigated to using the
24
- * keyboard when residing in a CdkMenu, CdkMenuBar, or CdkMenuGroup. It performs user defined
25
- * behavior when clicked.
26
- */
27
- export class CdkMenuItem {
28
- constructor(
29
- /** The host element for this item. */
30
- _elementRef,
31
- /** The Angular zone. */
32
- _ngZone,
33
- /** The menu stack this item belongs to. */
34
- _menuStack,
35
- /** The parent menu this item belongs to. */
36
- _parentMenu,
37
- /** The menu aim service used for this item. */
38
- _menuAim,
39
- /** The directionality of the page. */
40
- _dir,
41
- /** Reference to the CdkMenuItemTrigger directive if one is added to the same element */
42
- // tslint:disable-next-line: lightweight-tokens
43
- _menuTrigger) {
44
- this._elementRef = _elementRef;
45
- this._ngZone = _ngZone;
46
- this._menuStack = _menuStack;
47
- this._parentMenu = _parentMenu;
48
- this._menuAim = _menuAim;
49
- this._dir = _dir;
50
- this._menuTrigger = _menuTrigger;
51
- this._disabled = false;
52
- /**
53
- * If this MenuItem is a regular MenuItem, outputs when it is triggered by a keyboard or mouse
54
- * event.
55
- */
56
- this.triggered = new EventEmitter();
57
- /** Whether the menu item opens a menu. */
58
- this.hasMenu = !!this._menuTrigger;
59
- /**
60
- * The tabindex for this menu item managed internally and used for implementing roving a
61
- * tab index.
62
- */
63
- this._tabindex = -1;
64
- /** Whether the item should close the menu if triggered by the spacebar. */
65
- this.closeOnSpacebarTrigger = true;
66
- /** Emits when the menu item is destroyed. */
67
- this.destroyed = new Subject();
68
- this._setupMouseEnter();
69
- if (this._isStandaloneItem()) {
70
- this._tabindex = 0;
71
- }
72
- }
73
- /** Whether the CdkMenuItem is disabled - defaults to false */
74
- get disabled() {
75
- return this._disabled;
76
- }
77
- set disabled(value) {
78
- this._disabled = coerceBooleanProperty(value);
79
- }
80
- ngOnDestroy() {
81
- this.destroyed.next();
82
- this.destroyed.complete();
83
- }
84
- /** Place focus on the element. */
85
- focus() {
86
- this._elementRef.nativeElement.focus();
87
- }
88
- /**
89
- * If the menu item is not disabled and the element does not have a menu trigger attached, emit
90
- * on the cdkMenuItemTriggered emitter and close all open menus.
91
- * @param options Options the configure how the item is triggered
92
- * - keepOpen: specifies that the menu should be kept open after triggering the item.
93
- */
94
- trigger(options) {
95
- const { keepOpen } = { ...options };
96
- if (!this.disabled && !this.hasMenu) {
97
- this.triggered.next();
98
- if (!keepOpen) {
99
- this._menuStack.closeAll({ focusParentTrigger: true });
100
- }
101
- }
102
- }
103
- /** Return true if this MenuItem has an attached menu and it is open. */
104
- isMenuOpen() {
105
- return !!this._menuTrigger?.isOpen();
106
- }
107
- /**
108
- * Get a reference to the rendered Menu if the Menu is open and it is visible in the DOM.
109
- * @return the menu if it is open, otherwise undefined.
110
- */
111
- getMenu() {
112
- return this._menuTrigger?.getMenu();
113
- }
114
- /** Get the CdkMenuTrigger associated with this element. */
115
- getMenuTrigger() {
116
- return this._menuTrigger;
117
- }
118
- /** Get the label for this element which is required by the FocusableOption interface. */
119
- getLabel() {
120
- return this.typeaheadLabel || this._elementRef.nativeElement.textContent?.trim() || '';
121
- }
122
- /** Reset the tabindex to -1. */
123
- _resetTabIndex() {
124
- if (!this._isStandaloneItem()) {
125
- this._tabindex = -1;
126
- }
127
- }
128
- /**
129
- * Set the tab index to 0 if not disabled and it's a focus event, or a mouse enter if this element
130
- * is not in a menu bar.
131
- */
132
- _setTabIndex(event) {
133
- if (this.disabled) {
134
- return;
135
- }
136
- // don't set the tabindex if there are no open sibling or parent menus
137
- if (!event || !this._menuStack.isEmpty()) {
138
- this._tabindex = 0;
139
- }
140
- }
141
- /**
142
- * Handles keyboard events for the menu item, specifically either triggering the user defined
143
- * callback or opening/closing the current menu based on whether the left or right arrow key was
144
- * pressed.
145
- * @param event the keyboard event to handle
146
- */
147
- _onKeydown(event) {
148
- switch (event.keyCode) {
149
- case SPACE:
150
- case ENTER:
151
- if (!hasModifierKey(event)) {
152
- event.preventDefault();
153
- this.trigger({ keepOpen: event.keyCode === SPACE && !this.closeOnSpacebarTrigger });
154
- }
155
- break;
156
- case RIGHT_ARROW:
157
- if (!hasModifierKey(event)) {
158
- if (this._parentMenu && this._isParentVertical()) {
159
- if (this._dir?.value !== 'rtl') {
160
- this._forwardArrowPressed(event);
161
- }
162
- else {
163
- this._backArrowPressed(event);
164
- }
165
- }
166
- }
167
- break;
168
- case LEFT_ARROW:
169
- if (!hasModifierKey(event)) {
170
- if (this._parentMenu && this._isParentVertical()) {
171
- if (this._dir?.value !== 'rtl') {
172
- this._backArrowPressed(event);
173
- }
174
- else {
175
- this._forwardArrowPressed(event);
176
- }
177
- }
178
- }
179
- break;
180
- }
181
- }
182
- /** Whether this menu item is standalone or within a menu or menu bar. */
183
- _isStandaloneItem() {
184
- return !this._parentMenu;
185
- }
186
- /**
187
- * Handles the user pressing the back arrow key.
188
- * @param event The keyboard event.
189
- */
190
- _backArrowPressed(event) {
191
- const parentMenu = this._parentMenu;
192
- if (this._menuStack.hasInlineMenu() || this._menuStack.length() > 1) {
193
- event.preventDefault();
194
- this._menuStack.close(parentMenu, {
195
- focusNextOnEmpty: this._menuStack.inlineMenuOrientation() === 'horizontal'
196
- ? 1 /* previousItem */
197
- : 2 /* currentItem */,
198
- focusParentTrigger: true,
199
- });
200
- }
201
- }
202
- /**
203
- * Handles the user pressing the forward arrow key.
204
- * @param event The keyboard event.
205
- */
206
- _forwardArrowPressed(event) {
207
- if (!this.hasMenu && this._menuStack.inlineMenuOrientation() === 'horizontal') {
208
- event.preventDefault();
209
- this._menuStack.closeAll({
210
- focusNextOnEmpty: 0 /* nextItem */,
211
- focusParentTrigger: true,
212
- });
213
- }
214
- }
215
- /**
216
- * Subscribe to the mouseenter events and close any sibling menu items if this element is moused
217
- * into.
218
- */
219
- _setupMouseEnter() {
220
- if (!this._isStandaloneItem()) {
221
- const closeOpenSiblings = () => this._ngZone.run(() => this._menuStack.closeSubMenuOf(this._parentMenu));
222
- this._ngZone.runOutsideAngular(() => fromEvent(this._elementRef.nativeElement, 'mouseenter')
223
- .pipe(filter(() => !this._menuStack.isEmpty() && !this.hasMenu), takeUntil(this.destroyed))
224
- .subscribe(() => {
225
- if (this._menuAim) {
226
- this._menuAim.toggle(closeOpenSiblings);
227
- }
228
- else {
229
- closeOpenSiblings();
230
- }
231
- }));
232
- }
233
- }
234
- /**
235
- * Return true if the enclosing parent menu is configured in a horizontal orientation, false
236
- * otherwise or if no parent.
237
- */
238
- _isParentVertical() {
239
- return this._parentMenu?.orientation === 'vertical';
240
- }
241
- }
242
- CdkMenuItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.13", ngImport: i0, type: CdkMenuItem, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: MENU_STACK }, { token: CDK_MENU, optional: true }, { token: MENU_AIM, optional: true }, { token: i1.Directionality, optional: true }, { token: i2.CdkMenuTrigger, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive });
243
- CdkMenuItem.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "14.0.0-next.13", type: CdkMenuItem, selector: "[cdkMenuItem]", inputs: { disabled: ["cdkMenuItemDisabled", "disabled"], typeaheadLabel: ["cdkMenuitemTypeaheadLabel", "typeaheadLabel"] }, outputs: { triggered: "cdkMenuItemTriggered" }, host: { attributes: { "role": "menuitem" }, listeners: { "blur": "_resetTabIndex()", "focus": "_setTabIndex()", "click": "trigger()", "keydown": "_onKeydown($event)" }, properties: { "tabindex": "_tabindex", "attr.aria-disabled": "disabled || null" }, classAttribute: "cdk-menu-item" }, exportAs: ["cdkMenuItem"], ngImport: i0 });
244
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.13", ngImport: i0, type: CdkMenuItem, decorators: [{
245
- type: Directive,
246
- args: [{
247
- selector: '[cdkMenuItem]',
248
- exportAs: 'cdkMenuItem',
249
- host: {
250
- 'role': 'menuitem',
251
- 'class': 'cdk-menu-item',
252
- '[tabindex]': '_tabindex',
253
- '[attr.aria-disabled]': 'disabled || null',
254
- '(blur)': '_resetTabIndex()',
255
- '(focus)': '_setTabIndex()',
256
- '(click)': 'trigger()',
257
- '(keydown)': '_onKeydown($event)',
258
- },
259
- }]
260
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i3.MenuStack, decorators: [{
261
- type: Inject,
262
- args: [MENU_STACK]
263
- }] }, { type: undefined, decorators: [{
264
- type: Optional
265
- }, {
266
- type: Inject,
267
- args: [CDK_MENU]
268
- }] }, { type: undefined, decorators: [{
269
- type: Optional
270
- }, {
271
- type: Inject,
272
- args: [MENU_AIM]
273
- }] }, { type: i1.Directionality, decorators: [{
274
- type: Optional
275
- }] }, { type: i2.CdkMenuTrigger, decorators: [{
276
- type: Self
277
- }, {
278
- type: Optional
279
- }] }]; }, propDecorators: { disabled: [{
280
- type: Input,
281
- args: ['cdkMenuItemDisabled']
282
- }], typeaheadLabel: [{
283
- type: Input,
284
- args: ['cdkMenuitemTypeaheadLabel']
285
- }], triggered: [{
286
- type: Output,
287
- args: ['cdkMenuItemTriggered']
288
- }] } });
289
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1pdGVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2Nkay1leHBlcmltZW50YWwvbWVudS9tZW51LWl0ZW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUVOLFFBQVEsRUFDUixNQUFNLEVBQ04sSUFBSSxHQUNMLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBZSxxQkFBcUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBRTFFLE9BQU8sRUFBQyxLQUFLLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDNUYsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxTQUFTLEVBQUUsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3hDLE9BQU8sRUFBQyxNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxRQUFRLEVBQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQVksVUFBVSxFQUFFLFNBQVMsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUU5RCxPQUFPLEVBQUMsUUFBUSxFQUFtQixNQUFNLFlBQVksQ0FBQzs7Ozs7QUFFdEQ7Ozs7R0FJRztBQWVILE1BQU0sT0FBTyxXQUFXO0lBc0N0QjtJQUNFLHNDQUFzQztJQUM3QixXQUFvQztJQUM3Qyx3QkFBd0I7SUFDUCxPQUFlO0lBQ2hDLDJDQUEyQztJQUNOLFVBQXFCO0lBQzFELDRDQUE0QztJQUNHLFdBQWtCO0lBQ2pFLCtDQUErQztJQUNBLFFBQWtCO0lB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QUN2QixJQUFJLEVBQUU7d0JBQ0osTUFBTSxFQUFFLFVBQVU7d0JBQ2xCLE9BQU8sRUFBRSxlQUFlO3dCQUN4QixZQUFZLEVBQUUsV0FBVzt3QkFDekIsc0JBQXNCLEVBQUUsa0JBQWtCO3dCQUMxQyxRQUFRLEVBQUUsa0JBQWtCO3dCQUM1QixTQUFTLEVBQUUsZ0JBQWdCO3dCQUMzQixTQUFTLEVBQUUsV0FBVzt3QkFDdEIsV0FBVyxFQUFFLG9CQUFvQjtxQkFDbEM7aUJBQ0Y7OzBCQTZDSSxNQUFNOzJCQUFDLFVBQVU7OzBCQUVqQixRQUFROzswQkFBSSxNQUFNOzJCQUFDLFFBQVE7OzBCQUUzQixRQUFROzswQkFBSSxNQUFNOzJCQUFDLFFBQVE7OzBCQUUzQixRQUFROzswQkFHUixJQUFJOzswQkFBSSxRQUFROzRDQWxEZixRQUFRO3NCQURYLEtBQUs7dUJBQUMscUJBQXFCO2dCQWFRLGNBQWM7c0JBQWpELEtBQUs7dUJBQUMsMkJBQTJCO2dCQU1PLFNBQVM7c0JBQWpELE1BQU07dUJBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgU2VsZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Jvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5fSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtGb2N1c2FibGVPcHRpb259IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7RU5URVIsIGhhc01vZGlmaWVyS2V5LCBMRUZUX0FSUk9XLCBSSUdIVF9BUlJPVywgU1BBQ0V9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQge0RpcmVjdGlvbmFsaXR5fSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XG5pbXBvcnQge2Zyb21FdmVudCwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2ZpbHRlciwgdGFrZVVudGlsfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0Nka01lbnVUcmlnZ2VyfSBmcm9tICcuL21lbnUtdHJpZ2dlcic7XG5pbXBvcnQge0NES19NRU5VLCBNZW51fSBmcm9tICcuL21lbnUtaW50ZXJmYWNlJztcbmltcG9ydCB7Rm9jdXNOZXh0LCBNRU5VX1NUQUNLLCBNZW51U3RhY2t9IGZyb20gJy4vbWVudS1zdGFjayc7XG5pbXBvcnQge0ZvY3VzYWJsZUVsZW1lbnR9IGZyb20gJy4vcG9pbnRlci1mb2N1cy10cmFja2VyJztcbmltcG9ydCB7TUVOVV9BSU0sIE1lbnVBaW0sIFRvZ2dsZXJ9IGZyb20gJy4vbWVudS1haW0nO1xuXG4vKipcbiAqIERpcmVjdGl2ZSB3aGljaCBwcm92aWRlcyB0aGUgYWJpbGl0eSBmb3IgYW4gZWxlbWVudCB0byBiZSBmb2N1c2VkIGFuZCBuYXZpZ2F0ZWQgdG8gdXNpbmcgdGhlXG4gKiBrZXlib2FyZCB3aGVuIHJlc2lkaW5nIGluIGEgQ2RrTWVudSwgQ2RrTWVudUJhciwgb3IgQ2RrTWVudUdyb3VwLiBJdCBwZXJmb3JtcyB1c2VyIGRlZmluZWRcbiAqIGJlaGF2aW9yIHdoZW4gY2xpY2tlZC5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2Nka01lbnVJdGVtXScsXG4gIGV4cG9ydEFzOiAnY2RrTWVudUl0ZW0nLFxuICBob3N0OiB7XG4gICAgJ3JvbGUnOiAnbWVudWl0ZW0nLFxuICAgICdjbGFzcyc6ICdjZGstbWVudS1pdGVtJyxcbiAgICAnW3RhYmluZGV4XSc6ICdfdGFiaW5kZXgnLFxuICAgICdbYXR0ci5hcmlhLWRpc2FibGVkXSc6ICdkaXNhYmxlZCB8fCBudWxsJyxcbiAgICAnKGJsdXIpJzogJ19yZXNldFRhYkluZGV4KCknLFxuICAgICcoZm9jdXMpJzogJ19zZXRUYWJJbmRleCgpJyxcbiAgICAnKGNsaWNrKSc6ICd0cmlnZ2VyKCknLFxuICAgICcoa2V5ZG93biknOiAnX29uS2V5ZG93bigkZXZlbnQpJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgQ2RrTWVudUl0ZW0gaW1wbGVtZW50cyBGb2N1c2FibGVPcHRpb24sIEZvY3VzYWJsZUVsZW1lbnQsIFRvZ2dsZXIsIE9uRGVzdHJveSB7XG4gIC8qKiAgV2hldGhlciB0aGUgQ2RrTWVudUl0ZW0gaXMgZGlzYWJsZWQgLSBkZWZhdWx0cyB0byBmYWxzZSAqL1xuICBASW5wdXQoJ2Nka01lbnVJdGVtRGlzYWJsZWQnKVxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG4gIHNldCBkaXNhYmxlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG4gIHByaXZhdGUgX2Rpc2FibGVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSB0ZXh0IHVzZWQgdG8gbG9jYXRlIHRoaXMgaXRlbSBkdXJpbmcgbWVudSB0eXBlYWhlYWQuIElmIG5vdCBzcGVjaWZpZWQsXG4gICAqIHRoZSBgdGV4dENvbnRlbnRgIG9mIHRoZSBpdGVtIHdpbGwgYmUgdXNlZC5cbiAgICovXG4gIEBJbnB1dCgnY2RrTWVudWl0ZW1UeXBlYWhlYWRMYWJlbCcpIHR5cGVhaGVhZExhYmVsOiBzdHJpbmcgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBJZiB0aGlzIE1lbnVJdGVtIGlzIGEgcmVndWxhciBNZW51SXRlbSwgb3V0cHV0cyB3aGVuIGl0IGlzIHRyaWdnZXJlZCBieSBhIGtleWJvYXJkIG9yIG1vdXNlXG4gICAqIGV2ZW50LlxuICAgKi9cbiAgQE91dHB1dCgnY2RrTWVudUl0ZW1UcmlnZ2VyZWQnKSByZWFkb25seSB0cmlnZ2VyZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKiogV2hldGhlciB0aGUgbWVudSBpdGVtIG9wZW5zIGEgbWVudS4gKi9cbiAgcmVhZG9ubHkgaGFzTWVudSA9ICEhdGhpcy5fbWVudVRyaWdnZXI7XG5cbiAgLyoqXG4gICAqIFRoZSB0YWJpbmRleCBmb3IgdGhpcyBtZW51IGl0ZW0gbWFuYWdlZCBpbnRlcm5hbGx5IGFuZCB1c2VkIGZvciBpbXBsZW1lbnRpbmcgcm92aW5nIGFcbiAgICogdGFiIGluZGV4LlxuICAgKi9cbiAgX3RhYmluZGV4OiAwIHwgLTEgPSAtMTtcblxuICAvKiogV2hldGhlciB0aGUgaXRlbSBzaG91bGQgY2xvc2UgdGhlIG1lbnUgaWYgdHJpZ2dlcmVkIGJ5IHRoZSBzcGFjZWJhci4gKi9cbiAgcHJvdGVjdGVkIGNsb3NlT25TcGFjZWJhclRyaWdnZXIgPSB0cnVlO1xuXG4gIC8qKiBFbWl0cyB3aGVuIHRoZSBtZW51IGl0ZW0gaXMgZGVzdHJveWVkLiAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVzdHJveWVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICAvKiogVGhlIGhvc3QgZWxlbWVudCBmb3IgdGhpcyBpdGVtLiAqL1xuICAgIHJlYWRvbmx5IF9lbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAvKiogVGhlIEFuZ3VsYXIgem9uZS4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9uZ1pvbmU6IE5nWm9uZSxcbiAgICAvKiogVGhlIG1lbnUgc3RhY2sgdGhpcyBpdGVtIGJlbG9uZ3MgdG8uICovXG4gICAgQEluamVjdChNRU5VX1NUQUNLKSBwcml2YXRlIHJlYWRvbmx5IF9tZW51U3RhY2s6IE1lbnVTdGFjayxcbiAgICAvKiogVGhlIHBhcmVudCBtZW51IHRoaXMgaXRlbSBiZWxvbmdzIHRvLiAqL1xuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQ0RLX01FTlUpIHByaXZhdGUgcmVhZG9ubHkgX3BhcmVudE1lbnU/OiBNZW51LFxuICAgIC8qKiBUaGUgbWVudSBhaW0gc2VydmljZSB1c2VkIGZvciB0aGlzIGl0ZW0uICovXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChNRU5VX0FJTSkgcHJpdmF0ZSByZWFkb25seSBfbWVudUFpbT86IE1lbnVBaW0sXG4gICAgLyoqIFRoZSBkaXJlY3Rpb25hbGl0eSBvZiB0aGUgcGFnZS4gKi9cbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IF9kaXI/OiBEaXJlY3Rpb25hbGl0eSxcbiAgICAvKiogUmVmZXJlbmNlIHRvIHRoZSBDZGtNZW51SXRlbVRyaWdnZXIgZGlyZWN0aXZlIGlmIG9uZSBpcyBhZGRlZCB0byB0aGUgc2FtZSBlbGVtZW50ICovXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBsaWdodHdlaWdodC10b2tlbnNcbiAgICBAU2VsZigpIEBPcHRpb25hbCgpIHByaXZhdGUgcmVhZG9ubHkgX21lbnVUcmlnZ2VyPzogQ2RrTWVudVRyaWdnZXIsXG4gICkge1xuICAgIHRoaXMuX3NldHVwTW91c2VFbnRlcigpO1xuXG4gICAgaWYgKHRoaXMuX2lzU3RhbmRhbG9uZUl0ZW0oKSkge1xuICAgICAgdGhpcy5fdGFiaW5kZXggPSAwO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveWVkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3llZC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqIFBsYWNlIGZvY3VzIG9uIHRoZSBlbGVtZW50LiAqL1xuICBmb2N1cygpIHtcbiAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB0aGUgbWVudSBpdGVtIGlzIG5vdCBkaXNhYmxlZCBhbmQgdGhlIGVsZW1lbnQgZG9lcyBub3QgaGF2ZSBhIG1lbnUgdHJpZ2dlciBhdHRhY2hlZCwgZW1pdFxuICAgKiBvbiB0aGUgY2RrTWVudUl0ZW1UcmlnZ2VyZWQgZW1pdHRlciBhbmQgY2xvc2UgYWxsIG9wZW4gbWVudXMuXG4gICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnMgdGhlIGNvbmZpZ3VyZSBob3cgdGhlIGl0ZW0gaXMgdHJpZ2dlcmVkXG4gICAqICAgLSBrZWVwT3Blbjogc3BlY2lmaWVzIHRoYXQgdGhlIG1lbnUgc2hvdWxkIGJlIGtlcHQgb3BlbiBhZnRlciB0cmlnZ2VyaW5nIHRoZSBpdGVtLlxuICAgKi9cbiAgdHJpZ2dlcihvcHRpb25zPzoge2tlZXBPcGVuOiBib29sZWFufSkge1xuICAgIGNvbnN0IHtrZWVwT3Blbn0gPSB7Li4ub3B0aW9uc307XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkICYmICF0aGlzLmhhc01lbnUpIHtcbiAgICAgIHRoaXMudHJpZ2dlcmVkLm5leHQoKTtcbiAgICAgIGlmICgha2VlcE9wZW4pIHtcbiAgICAgICAgdGhpcy5fbWVudVN0YWNrLmNsb3NlQWxsKHtmb2N1c1BhcmVudFRyaWdnZXI6IHRydWV9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKiogUmV0dXJuIHRydWUgaWYgdGhpcyBNZW51SXRlbSBoYXMgYW4gYXR0YWNoZWQgbWVudSBhbmQgaXQgaXMgb3Blbi4gKi9cbiAgaXNNZW51T3BlbigpIHtcbiAgICByZXR1cm4gISF0aGlzLl9tZW51VHJpZ2dlcj8uaXNPcGVuKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSByZW5kZXJlZCBNZW51IGlmIHRoZSBNZW51IGlzIG9wZW4gYW5kIGl0IGlzIHZpc2libGUgaW4gdGhlIERPTS5cbiAgICogQHJldHVybiB0aGUgbWVudSBpZiBpdCBpcyBvcGVuLCBvdGhlcndpc2UgdW5kZWZpbmVkLlxuICAgKi9cbiAgZ2V0TWVudSgpOiBNZW51IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fbWVudVRyaWdnZXI/LmdldE1lbnUoKTtcbiAgfVxuXG4gIC8qKiBHZXQgdGhlIENka01lbnVUcmlnZ2VyIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGVsZW1lbnQuICovXG4gIGdldE1lbnVUcmlnZ2VyKCk6IENka01lbnVUcmlnZ2VyIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fbWVudVRyaWdnZXI7XG4gIH1cblxuICAvKiogR2V0IHRoZSBsYWJlbCBmb3IgdGhpcyBlbGVtZW50IHdoaWNoIGlzIHJlcXVpcmVkIGJ5IHRoZSBGb2N1c2FibGVPcHRpb24gaW50ZXJmYWNlLiAqL1xuICBnZXRMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnR5cGVhaGVhZExhYmVsIHx8IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC50ZXh0Q29udGVudD8udHJpbSgpIHx8ICcnO1xuICB9XG5cbiAgLyoqIFJlc2V0IHRoZSB0YWJpbmRleCB0byAtMS4gKi9cbiAgX3Jlc2V0VGFiSW5kZXgoKSB7XG4gICAgaWYgKCF0aGlzLl9pc1N0YW5kYWxvbmVJdGVtKCkpIHtcbiAgICAgIHRoaXMuX3RhYmluZGV4ID0gLTE7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgdGFiIGluZGV4IHRvIDAgaWYgbm90IGRpc2FibGVkIGFuZCBpdCdzIGEgZm9jdXMgZXZlbnQsIG9yIGEgbW91c2UgZW50ZXIgaWYgdGhpcyBlbGVtZW50XG4gICAqIGlzIG5vdCBpbiBhIG1lbnUgYmFyLlxuICAgKi9cbiAgX3NldFRhYkluZGV4KGV2ZW50PzogTW91c2VFdmVudCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gZG9uJ3Qgc2V0IHRoZSB0YWJpbmRleCBpZiB0aGVyZSBhcmUgbm8gb3BlbiBzaWJsaW5nIG9yIHBhcmVudCBtZW51c1xuICAgIGlmICghZXZlbnQgfHwgIXRoaXMuX21lbnVTdGFjay5pc0VtcHR5KCkpIHtcbiAgICAgIHRoaXMuX3RhYmluZGV4ID0gMDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyBrZXlib2FyZCBldmVudHMgZm9yIHRoZSBtZW51IGl0ZW0sIHNwZWNpZmljYWxseSBlaXRoZXIgdHJpZ2dlcmluZyB0aGUgdXNlciBkZWZpbmVkXG4gICAqIGNhbGxiYWNrIG9yIG9wZW5pbmcvY2xvc2luZyB0aGUgY3VycmVudCBtZW51IGJhc2VkIG9uIHdoZXRoZXIgdGhlIGxlZnQgb3IgcmlnaHQgYXJyb3cga2V5IHdhc1xuICAgKiBwcmVzc2VkLlxuICAgKiBAcGFyYW0gZXZlbnQgdGhlIGtleWJvYXJkIGV2ZW50IHRvIGhhbmRsZVxuICAgKi9cbiAgX29uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIHN3aXRjaCAoZXZlbnQua2V5Q29kZSkge1xuICAgICAgY2FzZSBTUEFDRTpcbiAgICAgIGNhc2UgRU5URVI6XG4gICAgICAgIGlmICghaGFzTW9kaWZpZXJLZXkoZXZlbnQpKSB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICB0aGlzLnRyaWdnZXIoe2tlZXBPcGVuOiBldmVudC5rZXlDb2RlID09PSBTUEFDRSAmJiAhdGhpcy5jbG9zZU9uU3BhY2ViYXJUcmlnZ2VyfSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgUklHSFRfQVJST1c6XG4gICAgICAgIGlmICghaGFzTW9kaWZpZXJLZXkoZXZlbnQpKSB7XG4gICAgICAgICAgaWYgKHRoaXMuX3BhcmVudE1lbnUgJiYgdGhpcy5faXNQYXJlbnRWZXJ0aWNhbCgpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fZGlyPy52YWx1ZSAhPT0gJ3J0bCcpIHtcbiAgICAgICAgICAgICAgdGhpcy5fZm9yd2FyZEFycm93UHJlc3NlZChldmVudCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLl9iYWNrQXJyb3dQcmVzc2VkKGV2ZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgTEVGVF9BUlJPVzpcbiAgICAgICAgaWYgKCFoYXNNb2RpZmllcktleShldmVudCkpIHtcbiAgICAgICAgICBpZiAodGhpcy5fcGFyZW50TWVudSAmJiB0aGlzLl9pc1BhcmVudFZlcnRpY2FsKCkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9kaXI/LnZhbHVlICE9PSAncnRsJykge1xuICAgICAgICAgICAgICB0aGlzLl9iYWNrQXJyb3dQcmVzc2VkKGV2ZW50KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuX2ZvcndhcmRBcnJvd1ByZXNzZWQoZXZlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvKiogV2hldGhlciB0aGlzIG1lbnUgaXRlbSBpcyBzdGFuZGFsb25lIG9yIHdpdGhpbiBhIG1lbnUgb3IgbWVudSBiYXIuICovXG4gIHByaXZhdGUgX2lzU3RhbmRhbG9uZUl0ZW0oKSB7XG4gICAgcmV0dXJuICF0aGlzLl9wYXJlbnRNZW51O1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIHVzZXIgcHJlc3NpbmcgdGhlIGJhY2sgYXJyb3cga2V5LlxuICAgKiBAcGFyYW0gZXZlbnQgVGhlIGtleWJvYXJkIGV2ZW50LlxuICAgKi9cbiAgcHJpdmF0ZSBfYmFja0Fycm93UHJlc3NlZChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGNvbnN0IHBhcmVudE1lbnUgPSB0aGlzLl9wYXJlbnRNZW51ITtcbiAgICBpZiAodGhpcy5fbWVudVN0YWNrLmhhc0lubGluZU1lbnUoKSB8fCB0aGlzLl9tZW51U3RhY2subGVuZ3RoKCkgPiAxKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5fbWVudVN0YWNrLmNsb3NlKHBhcmVudE1lbnUsIHtcbiAgICAgICAgZm9jdXNOZXh0T25FbXB0eTpcbiAgICAgICAgICB0aGlzLl9tZW51U3RhY2suaW5saW5lTWVudU9yaWVudGF0aW9uKCkgPT09ICdob3Jpem9udGFsJ1xuICAgICAgICAgICAgPyBGb2N1c05leHQucHJldmlvdXNJdGVtXG4gICAgICAgICAgICA6IEZvY3VzTmV4dC5jdXJyZW50SXRlbSxcbiAgICAgICAgZm9jdXNQYXJlbnRUcmlnZ2VyOiB0cnVlLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIHVzZXIgcHJlc3NpbmcgdGhlIGZvcndhcmQgYXJyb3cga2V5LlxuICAgKiBAcGFyYW0gZXZlbnQgVGhlIGtleWJvYXJkIGV2ZW50LlxuICAgKi9cbiAgcHJpdmF0ZSBfZm9yd2FyZEFycm93UHJlc3NlZChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmICghdGhpcy5oYXNNZW51ICYmIHRoaXMuX21lbnVTdGFjay5pbmxpbmVNZW51T3JpZW50YXRpb24oKSA9PT0gJ2hvcml6b250YWwnKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5fbWVudVN0YWNrLmNsb3NlQWxsKHtcbiAgICAgICAgZm9jdXNOZXh0T25FbXB0eTogRm9jdXNOZXh0Lm5leHRJdGVtLFxuICAgICAgICBmb2N1c1BhcmVudFRyaWdnZXI6IHRydWUsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU3Vic2NyaWJlIHRvIHRoZSBtb3VzZWVudGVyIGV2ZW50cyBhbmQgY2xvc2UgYW55IHNpYmxpbmcgbWVudSBpdGVtcyBpZiB0aGlzIGVsZW1lbnQgaXMgbW91c2VkXG4gICAqIGludG8uXG4gICAqL1xuICBwcml2YXRlIF9zZXR1cE1vdXNlRW50ZXIoKSB7XG4gICAgaWYgKCF0aGlzLl9pc1N0YW5kYWxvbmVJdGVtKCkpIHtcbiAgICAgIGNvbnN0IGNsb3NlT3BlblNpYmxpbmdzID0gKCkgPT5cbiAgICAgICAgdGhpcy5fbmdab25lLnJ1bigoKSA9PiB0aGlzLl9tZW51U3RhY2suY2xvc2VTdWJNZW51T2YodGhpcy5fcGFyZW50TWVudSEpKTtcblxuICAgICAgdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+XG4gICAgICAgIGZyb21FdmVudCh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdtb3VzZWVudGVyJylcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIGZpbHRlcigoKSA9PiAhdGhpcy5fbWVudVN0YWNrLmlzRW1wdHkoKSAmJiAhdGhpcy5oYXNNZW51KSxcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCksXG4gICAgICAgICAgKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuX21lbnVBaW0pIHtcbiAgICAgICAgICAgICAgdGhpcy5fbWVudUFpbS50b2dnbGUoY2xvc2VPcGVuU2libGluZ3MpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY2xvc2VPcGVuU2libGluZ3MoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0cnVlIGlmIHRoZSBlbmNsb3NpbmcgcGFyZW50IG1lbnUgaXMgY29uZmlndXJlZCBpbiBhIGhvcml6b250YWwgb3JpZW50YXRpb24sIGZhbHNlXG4gICAqIG90aGVyd2lzZSBvciBpZiBubyBwYXJlbnQuXG4gICAqL1xuICBwcml2YXRlIF9pc1BhcmVudFZlcnRpY2FsKCkge1xuICAgIHJldHVybiB0aGlzLl9wYXJlbnRNZW51Py5vcmllbnRhdGlvbiA9PT0gJ3ZlcnRpY2FsJztcbiAgfVxufVxuIl19
@@ -1,62 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- import { NgModule } from '@angular/core';
9
- import { OverlayModule } from '@angular/cdk/overlay';
10
- import { CdkMenu } from './menu';
11
- import { CdkMenuBar } from './menu-bar';
12
- import { CdkMenuItem } from './menu-item';
13
- import { CdkMenuGroup } from './menu-group';
14
- import { CdkMenuItemRadio } from './menu-item-radio';
15
- import { CdkMenuItemCheckbox } from './menu-item-checkbox';
16
- import { CdkMenuTrigger } from './menu-trigger';
17
- import { CdkContextMenuTrigger } from './context-menu-trigger';
18
- import { CdkTargetMenuAim } from './menu-aim';
19
- import * as i0 from "@angular/core";
20
- /** The list of components and directives that should be declared and exported from this module. */
21
- const EXPORTED_DECLARATIONS = [
22
- CdkMenuBar,
23
- CdkMenu,
24
- CdkMenuItem,
25
- CdkMenuItemRadio,
26
- CdkMenuItemCheckbox,
27
- CdkMenuTrigger,
28
- CdkMenuGroup,
29
- CdkContextMenuTrigger,
30
- CdkTargetMenuAim,
31
- ];
32
- /** Module that declares components and directives for the CDK menu. */
33
- export class CdkMenuModule {
34
- }
35
- CdkMenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.13", ngImport: i0, type: CdkMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
36
- CdkMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "14.0.0-next.13", ngImport: i0, type: CdkMenuModule, declarations: [CdkMenuBar,
37
- CdkMenu,
38
- CdkMenuItem,
39
- CdkMenuItemRadio,
40
- CdkMenuItemCheckbox,
41
- CdkMenuTrigger,
42
- CdkMenuGroup,
43
- CdkContextMenuTrigger,
44
- CdkTargetMenuAim], imports: [OverlayModule], exports: [CdkMenuBar,
45
- CdkMenu,
46
- CdkMenuItem,
47
- CdkMenuItemRadio,
48
- CdkMenuItemCheckbox,
49
- CdkMenuTrigger,
50
- CdkMenuGroup,
51
- CdkContextMenuTrigger,
52
- CdkTargetMenuAim] });
53
- CdkMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.0-next.13", ngImport: i0, type: CdkMenuModule, imports: [[OverlayModule]] });
54
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.13", ngImport: i0, type: CdkMenuModule, decorators: [{
55
- type: NgModule,
56
- args: [{
57
- imports: [OverlayModule],
58
- exports: EXPORTED_DECLARATIONS,
59
- declarations: EXPORTED_DECLARATIONS,
60
- }]
61
- }] });
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2RrLWV4cGVyaW1lbnRhbC9tZW51L21lbnUtbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFDL0IsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLFlBQVksQ0FBQztBQUN0QyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ3hDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDMUMsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQzdELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLFlBQVksQ0FBQzs7QUFFNUMsbUdBQW1HO0FBQ25HLE1BQU0scUJBQXFCLEdBQUc7SUFDNUIsVUFBVTtJQUNWLE9BQU87SUFDUCxXQUFXO0lBQ1gsZ0JBQWdCO0lBQ2hCLG1CQUFtQjtJQUNuQixjQUFjO0lBQ2QsWUFBWTtJQUNaLHFCQUFxQjtJQUNyQixnQkFBZ0I7Q0FDakIsQ0FBQztBQUVGLHVFQUF1RTtBQU12RSxNQUFNLE9BQU8sYUFBYTs7a0hBQWIsYUFBYTttSEFBYixhQUFhLGlCQWpCeEIsVUFBVTtRQUNWLE9BQU87UUFDUCxXQUFXO1FBQ1gsZ0JBQWdCO1FBQ2hCLG1CQUFtQjtRQUNuQixjQUFjO1FBQ2QsWUFBWTtRQUNaLHFCQUFxQjtRQUNyQixnQkFBZ0IsYUFLTixhQUFhLGFBYnZCLFVBQVU7UUFDVixPQUFPO1FBQ1AsV0FBVztRQUNYLGdCQUFnQjtRQUNoQixtQkFBbUI7UUFDbkIsY0FBYztRQUNkLFlBQVk7UUFDWixxQkFBcUI7UUFDckIsZ0JBQWdCO21IQVNMLGFBQWEsWUFKZixDQUFDLGFBQWEsQ0FBQzttR0FJYixhQUFhO2tCQUx6QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLGFBQWEsQ0FBQztvQkFDeEIsT0FBTyxFQUFFLHFCQUFxQjtvQkFDOUIsWUFBWSxFQUFFLHFCQUFxQjtpQkFDcEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge092ZXJsYXlNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7Q2RrTWVudX0gZnJvbSAnLi9tZW51JztcbmltcG9ydCB7Q2RrTWVudUJhcn0gZnJvbSAnLi9tZW51LWJhcic7XG5pbXBvcnQge0Nka01lbnVJdGVtfSBmcm9tICcuL21lbnUtaXRlbSc7XG5pbXBvcnQge0Nka01lbnVHcm91cH0gZnJvbSAnLi9tZW51LWdyb3VwJztcbmltcG9ydCB7Q2RrTWVudUl0ZW1SYWRpb30gZnJvbSAnLi9tZW51LWl0ZW0tcmFkaW8nO1xuaW1wb3J0IHtDZGtNZW51SXRlbUNoZWNrYm94fSBmcm9tICcuL21lbnUtaXRlbS1jaGVja2JveCc7XG5pbXBvcnQge0Nka01lbnVUcmlnZ2VyfSBmcm9tICcuL21lbnUtdHJpZ2dlcic7XG5pbXBvcnQge0Nka0NvbnRleHRNZW51VHJpZ2dlcn0gZnJvbSAnLi9jb250ZXh0LW1lbnUtdHJpZ2dlcic7XG5pbXBvcnQge0Nka1RhcmdldE1lbnVBaW19IGZyb20gJy4vbWVudS1haW0nO1xuXG4vKiogVGhlIGxpc3Qgb2YgY29tcG9uZW50cyBhbmQgZGlyZWN0aXZlcyB0aGF0IHNob3VsZCBiZSBkZWNsYXJlZCBhbmQgZXhwb3J0ZWQgZnJvbSB0aGlzIG1vZHVsZS4gKi9cbmNvbnN0IEVYUE9SVEVEX0RFQ0xBUkFUSU9OUyA9IFtcbiAgQ2RrTWVudUJhcixcbiAgQ2RrTWVudSxcbiAgQ2RrTWVudUl0ZW0sXG4gIENka01lbnVJdGVtUmFkaW8sXG4gIENka01lbnVJdGVtQ2hlY2tib3gsXG4gIENka01lbnVUcmlnZ2VyLFxuICBDZGtNZW51R3JvdXAsXG4gIENka0NvbnRleHRNZW51VHJpZ2dlcixcbiAgQ2RrVGFyZ2V0TWVudUFpbSxcbl07XG5cbi8qKiBNb2R1bGUgdGhhdCBkZWNsYXJlcyBjb21wb25lbnRzIGFuZCBkaXJlY3RpdmVzIGZvciB0aGUgQ0RLIG1lbnUuICovXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbT3ZlcmxheU1vZHVsZV0sXG4gIGV4cG9ydHM6IEVYUE9SVEVEX0RFQ0xBUkFUSU9OUyxcbiAgZGVjbGFyYXRpb25zOiBFWFBPUlRFRF9ERUNMQVJBVElPTlMsXG59KVxuZXhwb3J0IGNsYXNzIENka01lbnVNb2R1bGUge31cbiJdfQ==
@@ -1,156 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- import { Inject, Injectable, InjectionToken, Optional, SkipSelf } from '@angular/core';
9
- import { Subject } from 'rxjs';
10
- import { debounceTime, distinctUntilChanged, startWith } from 'rxjs/operators';
11
- import * as i0 from "@angular/core";
12
- /** Injection token used for an implementation of MenuStack. */
13
- export const MENU_STACK = new InjectionToken('cdk-menu-stack');
14
- /** Provider that provides the parent menu stack, or a new menu stack if there is no parent one. */
15
- export const PARENT_OR_NEW_MENU_STACK_PROVIDER = {
16
- provide: MENU_STACK,
17
- deps: [[new Optional(), new SkipSelf(), new Inject(MENU_STACK)]],
18
- useFactory: (parentMenuStack) => parentMenuStack || new MenuStack(),
19
- };
20
- /** Provider that provides the parent menu stack, or a new inline menu stack if there is no parent one. */
21
- export const PARENT_OR_NEW_INLINE_MENU_STACK_PROVIDER = (orientation) => ({
22
- provide: MENU_STACK,
23
- deps: [[new Optional(), new SkipSelf(), new Inject(MENU_STACK)]],
24
- useFactory: (parentMenuStack) => parentMenuStack || MenuStack.inline(orientation),
25
- });
26
- /** The next available menu stack ID. */
27
- let nextId = 0;
28
- /**
29
- * MenuStack allows subscribers to listen for close events (when a MenuStackItem is popped off
30
- * of the stack) in order to perform closing actions. Upon the MenuStack being empty it emits
31
- * from the `empty` observable specifying the next focus action which the listener should perform
32
- * as requested by the closer.
33
- */
34
- export class MenuStack {
35
- constructor() {
36
- /** The ID of this menu stack. */
37
- this.id = `${nextId++}`;
38
- /** All MenuStackItems tracked by this MenuStack. */
39
- this._elements = [];
40
- /** Emits the element which was popped off of the stack when requested by a closer. */
41
- this._close = new Subject();
42
- /** Emits once the MenuStack has become empty after popping off elements. */
43
- this._empty = new Subject();
44
- /** Emits whether any menu in the menu stack has focus. */
45
- this._hasFocus = new Subject();
46
- /** Observable which emits the MenuStackItem which has been requested to close. */
47
- this.closed = this._close;
48
- /** Observable which emits whether any menu in the menu stack has focus. */
49
- this.hasFocus = this._hasFocus.pipe(startWith(false), debounceTime(0), distinctUntilChanged());
50
- /**
51
- * Observable which emits when the MenuStack is empty after popping off the last element. It
52
- * emits a FocusNext event which specifies the action the closer has requested the listener
53
- * perform.
54
- */
55
- this.emptied = this._empty;
56
- /**
57
- * Whether the inline menu associated with this menu stack is vertical or horizontal.
58
- * `null` indicates there is no inline menu associated with this menu stack.
59
- */
60
- this._inlineMenuOrientation = null;
61
- }
62
- /** Creates a menu stack that originates from an inline menu. */
63
- static inline(orientation) {
64
- const stack = new MenuStack();
65
- stack._inlineMenuOrientation = orientation;
66
- return stack;
67
- }
68
- /**
69
- * Adds an item to the menu stack.
70
- * @param menu the MenuStackItem to put on the stack.
71
- */
72
- push(menu) {
73
- this._elements.push(menu);
74
- }
75
- /**
76
- * Pop items off of the stack up to and including `lastItem` and emit each on the close
77
- * observable. If the stack is empty or `lastItem` is not on the stack it does nothing.
78
- * @param lastItem the last item to pop off the stack.
79
- * @param options Options that configure behavior on close.
80
- */
81
- close(lastItem, options) {
82
- const { focusNextOnEmpty, focusParentTrigger } = { ...options };
83
- if (this._elements.indexOf(lastItem) >= 0) {
84
- let poppedElement;
85
- do {
86
- poppedElement = this._elements.pop();
87
- this._close.next({ item: poppedElement, focusParentTrigger });
88
- } while (poppedElement !== lastItem);
89
- if (this.isEmpty()) {
90
- this._empty.next(focusNextOnEmpty);
91
- }
92
- }
93
- }
94
- /**
95
- * Pop items off of the stack up to but excluding `lastItem` and emit each on the close
96
- * observable. If the stack is empty or `lastItem` is not on the stack it does nothing.
97
- * @param lastItem the element which should be left on the stack
98
- * @return whether or not an item was removed from the stack
99
- */
100
- closeSubMenuOf(lastItem) {
101
- let removed = false;
102
- if (this._elements.indexOf(lastItem) >= 0) {
103
- removed = this.peek() !== lastItem;
104
- while (this.peek() !== lastItem) {
105
- this._close.next({ item: this._elements.pop() });
106
- }
107
- }
108
- return removed;
109
- }
110
- /**
111
- * Pop off all MenuStackItems and emit each one on the `close` observable one by one.
112
- * @param options Options that configure behavior on close.
113
- */
114
- closeAll(options) {
115
- const { focusNextOnEmpty, focusParentTrigger } = { ...options };
116
- if (!this.isEmpty()) {
117
- while (!this.isEmpty()) {
118
- const menuStackItem = this._elements.pop();
119
- if (menuStackItem) {
120
- this._close.next({ item: menuStackItem, focusParentTrigger });
121
- }
122
- }
123
- this._empty.next(focusNextOnEmpty);
124
- }
125
- }
126
- /** Return true if this stack is empty. */
127
- isEmpty() {
128
- return !this._elements.length;
129
- }
130
- /** Return the length of the stack. */
131
- length() {
132
- return this._elements.length;
133
- }
134
- /** Get the top most element on the stack. */
135
- peek() {
136
- return this._elements[this._elements.length - 1];
137
- }
138
- /** Whether the menu stack is associated with an inline menu. */
139
- hasInlineMenu() {
140
- return this._inlineMenuOrientation != null;
141
- }
142
- /** The orientation of the associated inline menu. */
143
- inlineMenuOrientation() {
144
- return this._inlineMenuOrientation;
145
- }
146
- /** Sets whether the menu stack contains the focused element. */
147
- setHasFocus(hasFocus) {
148
- this._hasFocus.next(hasFocus);
149
- }
150
- }
151
- MenuStack.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.13", ngImport: i0, type: MenuStack, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
152
- MenuStack.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.0-next.13", ngImport: i0, type: MenuStack });
153
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.13", ngImport: i0, type: MenuStack, decorators: [{
154
- type: Injectable
155
- }] });
156
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1zdGFjay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jZGstZXhwZXJpbWVudGFsL21lbnUvbWVudS1zdGFjay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNyRixPQUFPLEVBQWEsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7O0FBZTdFLCtEQUErRDtBQUMvRCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsSUFBSSxjQUFjLENBQVksZ0JBQWdCLENBQUMsQ0FBQztBQUUxRSxtR0FBbUc7QUFDbkcsTUFBTSxDQUFDLE1BQU0saUNBQWlDLEdBQUc7SUFDL0MsT0FBTyxFQUFFLFVBQVU7SUFDbkIsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLFFBQVEsRUFBRSxFQUFFLElBQUksUUFBUSxFQUFFLEVBQUUsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUNoRSxVQUFVLEVBQUUsQ0FBQyxlQUEyQixFQUFFLEVBQUUsQ0FBQyxlQUFlLElBQUksSUFBSSxTQUFTLEVBQUU7Q0FDaEYsQ0FBQztBQUVGLDBHQUEwRztBQUMxRyxNQUFNLENBQUMsTUFBTSx3Q0FBd0MsR0FBRyxDQUN0RCxXQUFzQyxFQUN0QyxFQUFFLENBQUMsQ0FBQztJQUNKLE9BQU8sRUFBRSxVQUFVO0lBQ25CLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRSxJQUFJLFFBQVEsRUFBRSxFQUFFLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDaEUsVUFBVSxFQUFFLENBQUMsZUFBMkIsRUFB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Q0FBQztJQUNoQyxDQUFDOzs4R0F6SVUsU0FBUztrSEFBVCxTQUFTO21HQUFULFNBQVM7a0JBRHJCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBPcHRpb25hbCwgU2tpcFNlbGZ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgc3RhcnRXaXRofSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbi8qKiBUaGUgcmVsYXRpdmUgaXRlbSBpbiB0aGUgaW5saW5lIG1lbnUgdG8gZm9jdXMgYWZ0ZXIgY2xvc2luZyBhbGwgcG9wdXAgbWVudXMuICovXG5leHBvcnQgY29uc3QgZW51bSBGb2N1c05leHQge1xuICBuZXh0SXRlbSxcbiAgcHJldmlvdXNJdGVtLFxuICBjdXJyZW50SXRlbSxcbn1cblxuLyoqIEEgc2luZ2xlIGl0ZW0gKG1lbnUpIGluIHRoZSBtZW51IHN0YWNrLiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZW51U3RhY2tJdGVtIHtcbiAgLyoqIEEgcmVmZXJlbmNlIHRvIHRoZSBtZW51IHN0YWNrIHRoaXMgbWVudSBzdGFjayBpdGVtIGJlbG9uZ3MgdG8uICovXG4gIG1lbnVTdGFjaz86IE1lbnVTdGFjaztcbn1cblxuLyoqIEluamVjdGlvbiB0b2tlbiB1c2VkIGZvciBhbiBpbXBsZW1lbnRhdGlvbiBvZiBNZW51U3RhY2suICovXG5leHBvcnQgY29uc3QgTUVOVV9TVEFDSyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxNZW51U3RhY2s+KCdjZGstbWVudS1zdGFjaycpO1xuXG4vKiogUHJvdmlkZXIgdGhhdCBwcm92aWRlcyB0aGUgcGFyZW50IG1lbnUgc3RhY2ssIG9yIGEgbmV3IG1lbnUgc3RhY2sgaWYgdGhlcmUgaXMgbm8gcGFyZW50IG9uZS4gKi9cbmV4cG9ydCBjb25zdCBQQVJFTlRfT1JfTkVXX01FTlVfU1RBQ0tfUFJPVklERVIgPSB7XG4gIHByb3ZpZGU6IE1FTlVfU1RBQ0ssXG4gIGRlcHM6IFtbbmV3IE9wdGlvbmFsKCksIG5ldyBTa2lwU2VsZigpLCBuZXcgSW5qZWN0KE1FTlVfU1RBQ0spXV0sXG4gIHVzZUZhY3Rvcnk6IChwYXJlbnRNZW51U3RhY2s/OiBNZW51U3RhY2spID0+IHBhcmVudE1lbnVTdGFjayB8fCBuZXcgTWVudVN0YWNrKCksXG59O1xuXG4vKiogUHJvdmlkZXIgdGhhdCBwcm92aWRlcyB0aGUgcGFyZW50IG1lbnUgc3RhY2ssIG9yIGEgbmV3IGlubGluZSBtZW51IHN0YWNrIGlmIHRoZXJlIGlzIG5vIHBhcmVudCBvbmUuICovXG5leHBvcnQgY29uc3QgUEFSRU5UX09SX05FV19JTkxJTkVfTUVOVV9TVEFDS19QUk9WSURFUiA9IChcbiAgb3JpZW50YXRpb246ICd2ZXJ0aWNhbCcgfCAnaG9yaXpvbnRhbCcsXG4pID0+ICh7XG4gIHByb3ZpZGU6IE1FTlVfU1RBQ0ssXG4gIGRlcHM6IFtbbmV3IE9wdGlvbmFsKCksIG5ldyBTa2lwU2VsZigpLCBuZXcgSW5qZWN0KE1FTlVfU1RBQ0spXV0sXG4gIHVzZUZhY3Rvcnk6IChwYXJlbnRNZW51U3RhY2s/OiBNZW51U3RhY2spID0+IHBhcmVudE1lbnVTdGFjayB8fCBNZW51U3RhY2suaW5saW5lKG9yaWVudGF0aW9uKSxcbn0pO1xuXG4vKiogT3B0aW9ucyB0aGF0IGNhbiBiZSBwcm92aWRlZCB0byB0aGUgY2xvc2Ugb3IgY2xvc2VBbGwgbWV0aG9kcy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2xvc2VPcHRpb25zIHtcbiAgLyoqIFRoZSBlbGVtZW50IHRvIGZvY3VzIG5leHQgaWYgdGhlIGNsb3NlIG9wZXJhdGlvbiBjYXVzZXMgdGhlIG1lbnUgc3RhY2sgdG8gYmVjb21lIGVtcHR5LiAqL1xuICBmb2N1c05leHRPbkVtcHR5PzogRm9jdXNOZXh0O1xuICAvKiogV2hldGhlciB0byBmb2N1cyB0aGUgcGFyZW50IHRyaWdnZXIgYWZ0ZXIgY2xvc2luZyB0aGUgbWVudS4gKi9cbiAgZm9jdXNQYXJlbnRUcmlnZ2VyPzogYm9vbGVhbjtcbn1cblxuLyoqIEV2ZW50IGRpc3BhdGNoZWQgd2hlbiBhIG1lbnUgaXMgY2xvc2VkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZW51U3RhY2tDbG9zZUV2ZW50IHtcbiAgLyoqIFRoZSBtZW51IGJlaW5nIGNsb3NlZC4gKi9cbiAgaXRlbTogTWVudVN0YWNrSXRlbTtcbiAgLyoqIFdoZXRoZXIgdG8gZm9jdXMgdGhlIHBhcmVudCB0cmlnZ2VyIGFmdGVyIGNsb3NpbmcgdGhlIG1lbnUuICovXG4gIGZvY3VzUGFyZW50VHJpZ2dlcj86IGJvb2xlYW47XG59XG5cbi8qKiBUaGUgbmV4dCBhdmFpbGFibGUgbWVudSBzdGFjayBJRC4gKi9cbmxldCBuZXh0SWQgPSAwO1xuXG4vKipcbiAqIE1lbnVTdGFjayBhbGxvd3Mgc3Vic2NyaWJlcnMgdG8gbGlzdGVuIGZvciBjbG9zZSBldmVudHMgKHdoZW4gYSBNZW51U3RhY2tJdGVtIGlzIHBvcHBlZCBvZmZcbiAqIG9mIHRoZSBzdGFjaykgaW4gb3JkZXIgdG8gcGVyZm9ybSBjbG9zaW5nIGFjdGlvbnMuIFVwb24gdGhlIE1lbnVTdGFjayBiZWluZyBlbXB0eSBpdCBlbWl0c1xuICogZnJvbSB0aGUgYGVtcHR5YCBvYnNlcnZhYmxlIHNwZWNpZnlpbmcgdGhlIG5leHQgZm9jdXMgYWN0aW9uIHdoaWNoIHRoZSBsaXN0ZW5lciBzaG91bGQgcGVyZm9ybVxuICogYXMgcmVxdWVzdGVkIGJ5IHRoZSBjbG9zZXIuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBNZW51U3RhY2sge1xuICAvKiogVGhlIElEIG9mIHRoaXMgbWVudSBzdGFjay4gKi9cbiAgcmVhZG9ubHkgaWQgPSBgJHtuZXh0SWQrK31gO1xuXG4gIC8qKiBBbGwgTWVudVN0YWNrSXRlbXMgdHJhY2tlZCBieSB0aGlzIE1lbnVTdGFjay4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBfZWxlbWVudHM6IE1lbnVTdGFja0l0ZW1bXSA9IFtdO1xuXG4gIC8qKiBFbWl0cyB0aGUgZWxlbWVudCB3aGljaCB3YXMgcG9wcGVkIG9mZiBvZiB0aGUgc3RhY2sgd2hlbiByZXF1ZXN0ZWQgYnkgYSBjbG9zZXIuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Nsb3NlID0gbmV3IFN1YmplY3Q8TWVudVN0YWNrQ2xvc2VFdmVudD4oKTtcblxuICAvKiogRW1pdHMgb25jZSB0aGUgTWVudVN0YWNrIGhhcyBiZWNvbWUgZW1wdHkgYWZ0ZXIgcG9wcGluZyBvZmYgZWxlbWVudHMuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX2VtcHR5ID0gbmV3IFN1YmplY3Q8Rm9jdXNOZXh0IHwgdW5kZWZpbmVkPigpO1xuXG4gIC8qKiBFbWl0cyB3aGV0aGVyIGFueSBtZW51IGluIHRoZSBtZW51IHN0YWNrIGhhcyBmb2N1cy4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBfaGFzRm9jdXMgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gIC8qKiBPYnNlcnZhYmxlIHdoaWNoIGVtaXRzIHRoZSBNZW51U3RhY2tJdGVtIHdoaWNoIGhhcyBiZWVuIHJlcXVlc3RlZCB0byBjbG9zZS4gKi9cbiAgcmVhZG9ubHkgY2xvc2VkOiBPYnNlcnZhYmxlPE1lbnVTdGFja0Nsb3NlRXZlbnQ+ID0gdGhpcy5fY2xvc2U7XG5cbiAgLyoqIE9ic2VydmFibGUgd2hpY2ggZW1pdHMgd2hldGhlciBhbnkgbWVudSBpbiB0aGUgbWVudSBzdGFjayBoYXMgZm9jdXMuICovXG4gIHJlYWRvbmx5IGhhc0ZvY3VzOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5faGFzRm9jdXMucGlwZShcbiAgICBzdGFydFdpdGgoZmFsc2UpLFxuICAgIGRlYm91bmNlVGltZSgwKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICApO1xuXG4gIC8qKlxuICAgKiBPYnNlcnZhYmxlIHdoaWNoIGVtaXRzIHdoZW4gdGhlIE1lbnVTdGFjayBpcyBlbXB0eSBhZnRlciBwb3BwaW5nIG9mZiB0aGUgbGFzdCBlbGVtZW50LiBJdFxuICAgKiBlbWl0cyBhIEZvY3VzTmV4dCBldmVudCB3aGljaCBzcGVjaWZpZXMgdGhlIGFjdGlvbiB0aGUgY2xvc2VyIGhhcyByZXF1ZXN0ZWQgdGhlIGxpc3RlbmVyXG4gICAqIHBlcmZvcm0uXG4gICAqL1xuICByZWFkb25seSBlbXB0aWVkOiBPYnNlcnZhYmxlPEZvY3VzTmV4dCB8IHVuZGVmaW5lZD4gPSB0aGlzLl9lbXB0eTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgaW5saW5lIG1lbnUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgbWVudSBzdGFjayBpcyB2ZXJ0aWNhbCBvciBob3Jpem9udGFsLlxuICAgKiBgbnVsbGAgaW5kaWNhdGVzIHRoZXJlIGlzIG5vIGlubGluZSBtZW51IGFzc29jaWF0ZWQgd2l0aCB0aGlzIG1lbnUgc3RhY2suXG4gICAqL1xuICBwcml2YXRlIF9pbmxpbmVNZW51T3JpZW50YXRpb246ICd2ZXJ0aWNhbCcgfCAnaG9yaXpvbnRhbCcgfCBudWxsID0gbnVsbDtcblxuICAvKiogQ3JlYXRlcyBhIG1lbnUgc3RhY2sgdGhhdCBvcmlnaW5hdGVzIGZyb20gYW4gaW5saW5lIG1lbnUuICovXG4gIHN0YXRpYyBpbmxpbmUob3JpZW50YXRpb246ICd2ZXJ0aWNhbCcgfCAnaG9yaXpvbnRhbCcpIHtcbiAgICBjb25zdCBzdGFjayA9IG5ldyBNZW51U3RhY2soKTtcbiAgICBzdGFjay5faW5saW5lTWVudU9yaWVudGF0aW9uID0gb3JpZW50YXRpb247XG4gICAgcmV0dXJuIHN0YWNrO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYW4gaXRlbSB0byB0aGUgbWVudSBzdGFjay5cbiAgICogQHBhcmFtIG1lbnUgdGhlIE1lbnVTdGFja0l0ZW0gdG8gcHV0IG9uIHRoZSBzdGFjay5cbiAgICovXG4gIHB1c2gobWVudTogTWVudVN0YWNrSXRlbSkge1xuICAgIHRoaXMuX2VsZW1lbnRzLnB1c2gobWVudSk7XG4gIH1cblxuICAvKipcbiAgICogUG9wIGl0ZW1zIG9mZiBvZiB0aGUgc3RhY2sgdXAgdG8gYW5kIGluY2x1ZGluZyBgbGFzdEl0ZW1gIGFuZCBlbWl0IGVhY2ggb24gdGhlIGNsb3NlXG4gICAqIG9ic2VydmFibGUuIElmIHRoZSBzdGFjayBpcyBlbXB0eSBvciBgbGFzdEl0ZW1gIGlzIG5vdCBvbiB0aGUgc3RhY2sgaXQgZG9lcyBub3RoaW5nLlxuICAgKiBAcGFyYW0gbGFzdEl0ZW0gdGhlIGxhc3QgaXRlbSB0byBwb3Agb2ZmIHRoZSBzdGFjay5cbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyB0aGF0IGNvbmZpZ3VyZSBiZWhhdmlvciBvbiBjbG9zZS5cbiAgICovXG4gIGNsb3NlKGxhc3RJdGVtOiBNZW51U3RhY2tJdGVtLCBvcHRpb25zPzogQ2xvc2VPcHRpb25zKSB7XG4gICAgY29uc3Qge2ZvY3VzTmV4dE9uRW1wdHksIGZvY3VzUGFyZW50VHJpZ2dlcn0gPSB7Li4ub3B0aW9uc307XG4gICAgaWYgKHRoaXMuX2VsZW1lbnRzLmluZGV4T2YobGFzdEl0ZW0pID49IDApIHtcbiAgICAgIGxldCBwb3BwZWRFbGVtZW50O1xuICAgICAgZG8ge1xuICAgICAgICBwb3BwZWRFbGVtZW50ID0gdGhpcy5fZWxlbWVudHMucG9wKCkhO1xuICAgICAgICB0aGlzLl9jbG9zZS5uZXh0KHtpdGVtOiBwb3BwZWRFbGVtZW50LCBmb2N1c1BhcmVudFRyaWdnZXJ9KTtcbiAgICAgIH0gd2hpbGUgKHBvcHBlZEVsZW1lbnQgIT09IGxhc3RJdGVtKTtcblxuICAgICAgaWYgKHRoaXMuaXNFbXB0eSgpKSB7XG4gICAgICAgIHRoaXMuX2VtcHR5Lm5leHQoZm9jdXNOZXh0T25FbXB0eSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFBvcCBpdGVtcyBvZmYgb2YgdGhlIHN0YWNrIHVwIHRvIGJ1dCBleGNsdWRpbmcgYGxhc3RJdGVtYCBhbmQgZW1pdCBlYWNoIG9uIHRoZSBjbG9zZVxuICAgKiBvYnNlcnZhYmxlLiBJZiB0aGUgc3RhY2sgaXMgZW1wdHkgb3IgYGxhc3RJdGVtYCBpcyBub3Qgb24gdGhlIHN0YWNrIGl0IGRvZXMgbm90aGluZy5cbiAgICogQHBhcmFtIGxhc3RJdGVtIHRoZSBlbGVtZW50IHdoaWNoIHNob3VsZCBiZSBsZWZ0IG9uIHRoZSBzdGFja1xuICAgKiBAcmV0dXJuIHdoZXRoZXIgb3Igbm90IGFuIGl0ZW0gd2FzIHJlbW92ZWQgZnJvbSB0aGUgc3RhY2tcbiAgICovXG4gIGNsb3NlU3ViTWVudU9mKGxhc3RJdGVtOiBNZW51U3RhY2tJdGVtKSB7XG4gICAgbGV0IHJlbW92ZWQgPSBmYWxzZTtcbiAgICBpZiAodGhpcy5fZWxlbWVudHMuaW5kZXhPZihsYXN0SXRlbSkgPj0gMCkge1xuICAgICAgcmVtb3ZlZCA9IHRoaXMucGVlaygpICE9PSBsYXN0SXRlbTtcbiAgICAgIHdoaWxlICh0aGlzLnBlZWsoKSAhPT0gbGFzdEl0ZW0pIHtcbiAgICAgICAgdGhpcy5fY2xvc2UubmV4dCh7aXRlbTogdGhpcy5fZWxlbWVudHMucG9wKCkhfSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZW1vdmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFBvcCBvZmYgYWxsIE1lbnVTdGFja0l0ZW1zIGFuZCBlbWl0IGVhY2ggb25lIG9uIHRoZSBgY2xvc2VgIG9ic2VydmFibGUgb25lIGJ5IG9uZS5cbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyB0aGF0IGNvbmZpZ3VyZSBiZWhhdmlvciBvbiBjbG9zZS5cbiAgICovXG4gIGNsb3NlQWxsKG9wdGlvbnM/OiBDbG9zZU9wdGlvbnMpIHtcbiAgICBjb25zdCB7Zm9jdXNOZXh0T25FbXB0eSwgZm9jdXNQYXJlbnRUcmlnZ2VyfSA9IHsuLi5vcHRpb25zfTtcbiAgICBpZiAoIXRoaXMuaXNFbXB0eSgpKSB7XG4gICAgICB3aGlsZSAoIXRoaXMuaXNFbXB0eSgpKSB7XG4gICAgICAgIGNvbnN0IG1lbnVTdGFja0l0ZW0gPSB0aGlzLl9lbGVtZW50cy5wb3AoKTtcbiAgICAgICAgaWYgKG1lbnVTdGFja0l0ZW0pIHtcbiAgICAgICAgICB0aGlzLl9jbG9zZS5uZXh0KHtpdGVtOiBtZW51U3RhY2tJdGVtLCBmb2N1c1BhcmVudFRyaWdnZXJ9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5fZW1wdHkubmV4dChmb2N1c05leHRPbkVtcHR5KTtcbiAgICB9XG4gIH1cblxuICAvKiogUmV0dXJuIHRydWUgaWYgdGhpcyBzdGFjayBpcyBlbXB0eS4gKi9cbiAgaXNFbXB0eSgpIHtcbiAgICByZXR1cm4gIXRoaXMuX2VsZW1lbnRzLmxlbmd0aDtcbiAgfVxuXG4gIC8qKiBSZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgc3RhY2suICovXG4gIGxlbmd0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZWxlbWVudHMubGVuZ3RoO1xuICB9XG5cbiAgLyoqIEdldCB0aGUgdG9wIG1vc3QgZWxlbWVudCBvbiB0aGUgc3RhY2suICovXG4gIHBlZWsoKTogTWVudVN0YWNrSXRlbSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRzW3RoaXMuX2VsZW1lbnRzLmxlbmd0aCAtIDFdO1xuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIG1lbnUgc3RhY2sgaXMgYXNzb2NpYXRlZCB3aXRoIGFuIGlubGluZSBtZW51LiAqL1xuICBoYXNJbmxpbmVNZW51KCkge1xuICAgIHJldHVybiB0aGlzLl9pbmxpbmVNZW51T3JpZW50YXRpb24gIT0gbnVsbDtcbiAgfVxuXG4gIC8qKiBUaGUgb3JpZW50YXRpb24gb2YgdGhlIGFzc29jaWF0ZWQgaW5saW5lIG1lbnUuICovXG4gIGlubGluZU1lbnVPcmllbnRhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5faW5saW5lTWVudU9yaWVudGF0aW9uO1xuICB9XG5cbiAgLyoqIFNldHMgd2hldGhlciB0aGUgbWVudSBzdGFjayBjb250YWlucyB0aGUgZm9jdXNlZCBlbGVtZW50LiAqL1xuICBzZXRIYXNGb2N1cyhoYXNGb2N1czogYm9vbGVhbikge1xuICAgIHRoaXMuX2hhc0ZvY3VzLm5leHQoaGFzRm9jdXMpO1xuICB9XG59XG4iXX0=