igniteui-angular 15.1.30 → 15.1.31
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.
- package/esm2020/lib/action-strip/action-strip.component.mjs +3 -3
- package/esm2020/lib/action-strip/grid-actions/grid-action-button.component.mjs +3 -3
- package/esm2020/lib/banner/banner.component.mjs +8 -8
- package/esm2020/lib/card/card.component.mjs +3 -3
- package/esm2020/lib/carousel/carousel.component.mjs +7 -7
- package/esm2020/lib/combo/combo-dropdown.component.mjs +3 -3
- package/esm2020/lib/combo/combo.common.mjs +5 -5
- package/esm2020/lib/combo/combo.component.mjs +3 -3
- package/esm2020/lib/combo/combo.directives.mjs +2 -2
- package/esm2020/lib/core/navigation/directives.mjs +3 -3
- package/esm2020/lib/date-common/calendar-container/calendar-container.component.mjs +3 -3
- package/esm2020/lib/date-picker/date-picker.component.mjs +7 -7
- package/esm2020/lib/date-range-picker/date-range-picker.component.mjs +6 -6
- package/esm2020/lib/dialog/dialog.component.mjs +5 -5
- package/esm2020/lib/directives/button/button.directive.mjs +8 -8
- package/esm2020/lib/directives/ripple/ripple.directive.mjs +6 -6
- package/esm2020/lib/directives/tooltip/tooltip-target.directive.mjs +7 -9
- package/esm2020/lib/directives/tooltip/tooltip.directive.mjs +2 -2
- package/esm2020/lib/drop-down/drop-down.component.mjs +3 -3
- package/esm2020/lib/expansion-panel/expansion-panel.component.mjs +4 -4
- package/esm2020/lib/grids/column-actions/column-actions.component.mjs +3 -3
- package/esm2020/lib/grids/common/crud.service.mjs +2 -2
- package/esm2020/lib/grids/filtering/base/grid-filtering-row.component.mjs +3 -3
- package/esm2020/lib/grids/filtering/excel-style/excel-style-custom-dialog.component.mjs +3 -3
- package/esm2020/lib/grids/filtering/excel-style/excel-style-date-expression.component.mjs +3 -3
- package/esm2020/lib/grids/filtering/excel-style/excel-style-default-expression.component.mjs +3 -3
- package/esm2020/lib/grids/filtering/excel-style/excel-style-header.component.mjs +3 -3
- package/esm2020/lib/grids/filtering/excel-style/excel-style-moving.component.mjs +3 -3
- package/esm2020/lib/grids/filtering/excel-style/excel-style-search.component.mjs +3 -3
- package/esm2020/lib/grids/filtering/excel-style/excel-style-sorting.component.mjs +3 -3
- package/esm2020/lib/grids/grid/grid.component.mjs +3 -3
- package/esm2020/lib/grids/grid-base.directive.mjs +4 -4
- package/esm2020/lib/grids/hierarchical-grid/hierarchical-grid.component.mjs +3 -3
- package/esm2020/lib/grids/tree-grid/tree-grid.component.mjs +3 -3
- package/esm2020/lib/query-builder/query-builder.component.mjs +3 -3
- package/esm2020/lib/simple-combo/simple-combo.component.mjs +3 -3
- package/esm2020/lib/snackbar/snackbar.component.mjs +4 -4
- package/esm2020/lib/tabs/tabs/tabs.component.mjs +3 -3
- package/esm2020/lib/time-picker/time-picker.component.mjs +6 -5
- package/esm2020/lib/toast/toast.component.mjs +2 -2
- package/esm2020/lib/tree/tree-node/tree-node.component.mjs +4 -4
- package/fesm2015/igniteui-angular.mjs +117 -118
- package/fesm2015/igniteui-angular.mjs.map +1 -1
- package/fesm2020/igniteui-angular.mjs +117 -118
- package/fesm2020/igniteui-angular.mjs.map +1 -1
- package/lib/banner/banner.component.d.ts +5 -5
- package/lib/card/card.component.d.ts +2 -2
- package/lib/carousel/carousel.component.d.ts +6 -6
- package/lib/combo/combo.common.d.ts +4 -4
- package/lib/combo/combo.directives.d.ts +1 -1
- package/lib/core/navigation/directives.d.ts +2 -2
- package/lib/date-picker/date-picker.component.d.ts +4 -4
- package/lib/date-range-picker/date-range-picker.component.d.ts +3 -3
- package/lib/dialog/dialog.component.d.ts +4 -4
- package/lib/directives/button/button.directive.d.ts +7 -7
- package/lib/directives/ripple/ripple.directive.d.ts +6 -6
- package/lib/directives/tooltip/tooltip-target.directive.d.ts +6 -8
- package/lib/directives/tooltip/tooltip.directive.d.ts +1 -1
- package/lib/expansion-panel/expansion-panel.component.d.ts +3 -3
- package/lib/grids/common/crud.service.d.ts +1 -1
- package/lib/grids/grid-base.directive.d.ts +3 -3
- package/lib/snackbar/snackbar.component.d.ts +1 -1
- package/lib/time-picker/time-picker.component.d.ts +1 -1
- package/lib/toast/toast.component.d.ts +1 -1
- package/lib/tree/tree-node/tree-node.component.d.ts +3 -3
- package/migrations/common/UpdateChanges.js +1 -1
- package/package.json +1 -1
|
@@ -19,7 +19,7 @@ import * as i1 from "../../core/navigation";
|
|
|
19
19
|
*
|
|
20
20
|
* Example:
|
|
21
21
|
* ```html
|
|
22
|
-
* <button [igxTooltipTarget]="tooltipRef">Hover me</button>
|
|
22
|
+
* <button type="button" igxButton [igxTooltipTarget]="tooltipRef">Hover me</button>
|
|
23
23
|
* <span #tooltipRef="tooltip" igxTooltip>Hello there, I am a tooltip!</span>
|
|
24
24
|
* ```
|
|
25
25
|
*/
|
|
@@ -86,7 +86,7 @@ export class IgxTooltipTargetDirective extends IgxToggleActionDirective {
|
|
|
86
86
|
*
|
|
87
87
|
* ```html
|
|
88
88
|
* <!--set-->
|
|
89
|
-
* <button [igxTooltipTarget]="tooltipRef" showDelay="1500">Hover me</button>
|
|
89
|
+
* <button type="button" igxButton [igxTooltipTarget]="tooltipRef" [showDelay]="1500">Hover me</button>
|
|
90
90
|
* <span #tooltipRef="tooltip" igxTooltip>Hello there, I am a tooltip!</span>
|
|
91
91
|
* ```
|
|
92
92
|
*/
|
|
@@ -101,7 +101,7 @@ export class IgxTooltipTargetDirective extends IgxToggleActionDirective {
|
|
|
101
101
|
*
|
|
102
102
|
* ```html
|
|
103
103
|
* <!--set-->
|
|
104
|
-
* <button [igxTooltipTarget]="tooltipRef" hideDelay="1500">Hover me</button>
|
|
104
|
+
* <button type="button" igxButton [igxTooltipTarget]="tooltipRef" [hideDelay]="1500">Hover me</button>
|
|
105
105
|
* <span #tooltipRef="tooltip" igxTooltip>Hello there, I am a tooltip!</span>
|
|
106
106
|
* ```
|
|
107
107
|
*/
|
|
@@ -118,7 +118,7 @@ export class IgxTooltipTargetDirective extends IgxToggleActionDirective {
|
|
|
118
118
|
*
|
|
119
119
|
* ```html
|
|
120
120
|
* <!--set-->
|
|
121
|
-
* <button [igxTooltipTarget]="tooltipRef" [tooltipDisabled]="true">Hover me</button>
|
|
121
|
+
* <button type="button" igxButton [igxTooltipTarget]="tooltipRef" [tooltipDisabled]="true">Hover me</button>
|
|
122
122
|
* <span #tooltipRef="tooltip" igxTooltip>Hello there, I am a tooltip!</span>
|
|
123
123
|
* ```
|
|
124
124
|
*/
|
|
@@ -134,8 +134,7 @@ export class IgxTooltipTargetDirective extends IgxToggleActionDirective {
|
|
|
134
134
|
* ```
|
|
135
135
|
*
|
|
136
136
|
* ```html
|
|
137
|
-
* <button [igxTooltipTarget]="tooltipRef"
|
|
138
|
-
* (tooltipShow)='tooltipShowing($event)'>Hover me</button>
|
|
137
|
+
* <button type="button" igxButton [igxTooltipTarget]="tooltipRef" (tooltipShow)='tooltipShowing($event)'>Hover me</button>
|
|
139
138
|
* <span #tooltipRef="tooltip" igxTooltip>Hello there, I am a tooltip!</span>
|
|
140
139
|
* ```
|
|
141
140
|
*/
|
|
@@ -151,8 +150,7 @@ export class IgxTooltipTargetDirective extends IgxToggleActionDirective {
|
|
|
151
150
|
* ```
|
|
152
151
|
*
|
|
153
152
|
* ```html
|
|
154
|
-
* <button [igxTooltipTarget]="tooltipRef"
|
|
155
|
-
* (tooltipHide)='tooltipHiding($event)'>Hover me</button>
|
|
153
|
+
* <button type="button" igxButton [igxTooltipTarget]="tooltipRef" (tooltipHide)='tooltipHiding($event)'>Hover me</button>
|
|
156
154
|
* <span #tooltipRef="tooltip" igxTooltip>Hello there, I am a tooltip!</span>
|
|
157
155
|
* ```
|
|
158
156
|
*/
|
|
@@ -383,4 +381,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
383
381
|
type: HostListener,
|
|
384
382
|
args: ['document:touchstart', ['$event']]
|
|
385
383
|
}] } });
|
|
386
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC10YXJnZXQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2RpcmVjdGl2ZXMvdG9vbHRpcC90b29sdGlwLXRhcmdldC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sRUFBYyxRQUFRLEVBQW9CLFlBQVksRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hKLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHdkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLG1CQUFtQixFQUFvQixNQUFNLDJCQUEyQixDQUFDO0FBQ3hHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUFjMUQ7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUtILE1BQU0sT0FBTyx5QkFBMEIsU0FBUSx3QkFBd0I7SUFzRG5FOztPQUVHO0lBQ0gsSUFDb0IsTUFBTSxDQUFDLE1BQVc7UUFDbEMsSUFBSSxNQUFNLEtBQUssSUFBSSxJQUFJLE1BQU0sS0FBSyxFQUFFLEVBQUU7WUFDbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7U0FDekI7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFvQixNQUFNO1FBQ3RCLElBQUksT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLFFBQVEsRUFBRTtZQUNsQyxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3BEO1FBQ0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFFQTs7TUFFRTtJQUNILElBQ1csT0FBTyxDQUFDLE9BQVk7UUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLE9BQU8sS0FBSyxRQUFRLElBQUksT0FBTyxZQUFZLE1BQU0sQ0FBQyxFQUFFO1lBQzVFLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBQ3JGLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxPQUFPLEdBQUcsT0FBaUIsQ0FBQztZQUV0RCxJQUFJLENBQUMsT0FBTyxHQUFHLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7U0FDcEQ7SUFDTCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsSUFBVyxhQUFhO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUM7SUFDdkMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILElBQVcsYUFBYTtRQUNwQixPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztJQUNqRCxDQUFDO0lBMENELFlBQW9CLFFBQW9CLEVBQ2hCLGtCQUF3QyxFQUFVLGlCQUFtQztRQUN6RyxLQUFLLENBQUMsUUFBUSxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFGcEIsYUFBUSxHQUFSLFFBQVEsQ0FBWTtRQUNoQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQXNCO1FBQVUsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjtRQXJKN0c7Ozs7Ozs7Ozs7Ozs7V0FhRztRQUVJLGNBQVMsR0FBRyxHQUFHLENBQUM7UUFFdkI7Ozs7Ozs7Ozs7Ozs7V0FhRztRQUVJLGNBQVMsR0FBRyxHQUFHLENBQUM7UUFFdkI7Ozs7Ozs7Ozs7Ozs7OztXQWVHO1FBRUksb0JBQWUsR0FBRyxLQUFLLENBQUM7UUF5RC9COzs7Ozs7Ozs7Ozs7Ozs7V0FlRztRQUVJLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQXlCLENBQUM7UUFFL0Q7Ozs7Ozs7Ozs7Ozs7OztXQWVHO1FBRUksZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBeUIsQ0FBQztRQUV2RCxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUtqQyxDQUFDO0lBRUQ7O09BRUc7SUFFYSxPQUFPO1FBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRTtZQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztTQUN0RDtJQUNMLENBQUM7SUFFRDs7T0FFRztJQUVJLFlBQVk7UUFDZixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDdEIsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7UUFDbEMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDL0MsSUFBSSxZQUFZLEVBQUU7WUFDZCxPQUFPO1NBQ1Y7UUFFRCxNQUFNLFdBQVcsR0FBRyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQzFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRW5DLElBQUksV0FBVyxDQUFDLE1BQU0sRUFBRTtZQUNwQixPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNwQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLHFDQUFxQztZQUNuRixJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEMsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFFSSxZQUFZO1FBQ2YsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3RCLE9BQU87U0FDVjtRQUVELElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1FBQ2xDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQy9DLElBQUksWUFBWSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFO1lBQ3ZDLE9BQU87U0FDVjtRQUVELElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUM5QixJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ3BDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxzQ0FBc0M7WUFDM0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25DLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFHdkIsQ0FBQztJQUVEOztPQUVHO0lBRUksWUFBWTtRQUNmLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN0QixPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVEOztPQUVHO0lBRUksb0JBQW9CLENBQUMsS0FBSztRQUM3QixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDdEIsT0FBTztTQUNWO1FBRUQsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLEtBQUssQ0FBQyxNQUFNO1lBQ25DLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUM1QztZQUNFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN0QjtJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNhLFFBQVE7UUFDcEIsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWpCLE1BQU0sZ0JBQWdCLEdBQXFCO1lBQ3ZDLG1CQUFtQixFQUFFLG1CQUFtQixDQUFDLE1BQU07WUFDL0Msb0JBQW9CLEVBQUUsbUJBQW1CLENBQUMsTUFBTTtZQUNoRCxhQUFhLEVBQUUsWUFBWSxDQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQzdFLGNBQWMsRUFBRSxZQUFZLENBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUM7U0FDMUUsQ0FBQztRQUVGLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLG9CQUFvQixDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDcEYsSUFBSSxDQUFDLGdCQUFnQixDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztRQUNsRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUUzQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ25FLE1BQU0sVUFBVSxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDekUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFFbEMsSUFBSSxVQUFVLENBQUMsTUFBTSxFQUFFO2dCQUNuQixLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQzthQUN2QjtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOztPQUVHO0lBQ0ksV0FBVztRQUNkLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksV0FBVztRQUNkLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXBDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRTtZQUN4QixvRkFBb0Y7WUFDcEYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7WUFDbkQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1NBQ2xDO1FBRUQsTUFBTSxXQUFXLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUMxRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUVuQyxJQUFJLFdBQVcsQ0FBQyxNQUFNLEVBQUU7WUFDcEIsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQzdCLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDcEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxxQ0FBcUM7WUFDbkYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xDLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLFdBQVc7UUFDZCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFO1lBQ2hELFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ3ZDO1FBRUQsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRTtZQUNqRCxPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDOUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNwQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsc0NBQXNDO1lBQzNELElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFTywwQkFBMEI7UUFDOUIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1NBQzlDO0lBQ0wsQ0FBQztJQUVELElBQVkscUJBQXFCO1FBQzdCLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQsc0ZBQXNGO0lBQzlFLGtCQUFrQjtRQUN0QixtQ0FBbUM7UUFDbkMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRTtZQUN2QixZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNwQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7U0FDakM7UUFFRCw2Q0FBNkM7UUFDN0MsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFO1lBQ2xELFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBRXBDLG9GQUFvRjtZQUNwRixJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUNuRCxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7U0FDbEM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsc0ZBQXNGO0lBQzlFLGtCQUFrQjtRQUN0QixZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVwQyxtQ0FBbUM7UUFDbkMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRTtZQUN2QixJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDOUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1lBQy9CLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDOztzSEF2WFEseUJBQXlCOzBHQUF6Qix5QkFBeUI7MkZBQXpCLHlCQUF5QjtrQkFKcEMsU0FBUzttQkFBQztvQkFDUixRQUFRLEVBQUUsZUFBZTtvQkFDekIsUUFBUSxFQUFFLG9CQUFvQjtpQkFDakM7OzBCQXVKUSxRQUFROzJFQXRJTixTQUFTO3NCQURmLEtBQUs7dUJBQUMsV0FBVztnQkFrQlgsU0FBUztzQkFEZixLQUFLO3VCQUFDLFdBQVc7Z0JBb0JYLGVBQWU7c0JBRHJCLEtBQUs7dUJBQUMsaUJBQWlCO2dCQU9KLE1BQU07c0JBRHpCLEtBQUs7dUJBQUMsa0JBQWtCO2dCQXFCZCxPQUFPO3NCQURqQixLQUFLO2dCQWlEQyxXQUFXO3NCQURqQixNQUFNO2dCQW9CQSxXQUFXO3NCQURqQixNQUFNO2dCQWNTLE9BQU87c0JBRHRCLFlBQVk7dUJBQUMsT0FBTztnQkFXZCxZQUFZO3NCQURsQixZQUFZO3VCQUFDLFlBQVk7Z0JBOEJuQixZQUFZO3NCQURsQixZQUFZO3VCQUFDLFlBQVk7Z0JBeUJuQixZQUFZO3NCQURsQixZQUFZO3VCQUFDLFlBQVk7Z0JBYW5CLG9CQUFvQjtzQkFEMUIsWUFBWTt1QkFBQyxxQkFBcUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUFuaW1hdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBPbkluaXQsIE9uRGVzdHJveSwgT3V0cHV0LCBFbGVtZW50UmVmLCBPcHRpb25hbCwgVmlld0NvbnRhaW5lclJlZiwgSG9zdExpc3RlbmVyLCBJbnB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBmYWRlT3V0IH0gZnJvbSAnLi4vLi4vYW5pbWF0aW9ucy9mYWRlJztcbmltcG9ydCB7IHNjYWxlSW5DZW50ZXIgfSBmcm9tICcuLi8uLi9hbmltYXRpb25zL3NjYWxlJztcbmltcG9ydCB7IElneE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9uYXZpZ2F0aW9uJztcbmltcG9ydCB7IElCYXNlRXZlbnRBcmdzIH0gZnJvbSAnLi4vLi4vY29yZS91dGlscyc7XG5pbXBvcnQgeyBBdXRvUG9zaXRpb25TdHJhdGVneSwgSG9yaXpvbnRhbEFsaWdubWVudCwgUG9zaXRpb25TZXR0aW5ncyB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3B1YmxpY19hcGknO1xuaW1wb3J0IHsgSWd4VG9nZ2xlQWN0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vdG9nZ2xlL3RvZ2dsZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSWd4VG9vbHRpcENvbXBvbmVudCB9IGZyb20gJy4vdG9vbHRpcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWd4VG9vbHRpcERpcmVjdGl2ZSB9IGZyb20gJy4vdG9vbHRpcC5kaXJlY3RpdmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElUb29sdGlwU2hvd0V2ZW50QXJncyBleHRlbmRzIElCYXNlRXZlbnRBcmdzIHtcbiAgICB0YXJnZXQ6IElneFRvb2x0aXBUYXJnZXREaXJlY3RpdmU7XG4gICAgdG9vbHRpcDogSWd4VG9vbHRpcERpcmVjdGl2ZTtcbiAgICBjYW5jZWw6IGJvb2xlYW47XG59XG5leHBvcnQgaW50ZXJmYWNlIElUb29sdGlwSGlkZUV2ZW50QXJncyBleHRlbmRzIElCYXNlRXZlbnRBcmdzIHtcbiAgICB0YXJnZXQ6IElneFRvb2x0aXBUYXJnZXREaXJlY3RpdmU7XG4gICAgdG9vbHRpcDogSWd4VG9vbHRpcERpcmVjdGl2ZTtcbiAgICBjYW5jZWw6IGJvb2xlYW47XG59XG5cbi8qKlxuICogKipJZ25pdGUgVUkgZm9yIEFuZ3VsYXIgVG9vbHRpcCBUYXJnZXQqKiAtXG4gKiBbRG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly93d3cuaW5mcmFnaXN0aWNzLmNvbS9wcm9kdWN0cy9pZ25pdGUtdWktYW5ndWxhci9hbmd1bGFyL2NvbXBvbmVudHMvdG9vbHRpcClcbiAqXG4gKiBUaGUgSWduaXRlIFVJIGZvciBBbmd1bGFyIFRvb2x0aXAgVGFyZ2V0IGRpcmVjdGl2ZSBpcyB1c2VkIHRvIG1hcmsgYW4gSFRNTCBlbGVtZW50IGluIHRoZSBtYXJrdXAgYXMgb25lIHRoYXQgaGFzIGEgdG9vbHRpcC5cbiAqIFRoZSB0b29sdGlwIHRhcmdldCBpcyB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggdGhlIElnbml0ZSBVSSBmb3IgQW5ndWxhciBUb29sdGlwIGJ5IGFzc2lnbmluZyB0aGUgZXhwb3J0ZWQgdG9vbHRpcCByZWZlcmVuY2UgdG8gdGhlXG4gKiB0YXJnZXQncyBzZWxlY3RvciBwcm9wZXJ0eS5cbiAqXG4gKiBFeGFtcGxlOlxuICogYGBgaHRtbFxuICogPGJ1dHRvbiBbaWd4VG9vbHRpcFRhcmdldF09XCJ0b29sdGlwUmVmXCI+SG92ZXIgbWU8L2J1dHRvbj5cbiAqIDxzcGFuICN0b29sdGlwUmVmPVwidG9vbHRpcFwiIGlneFRvb2x0aXA+SGVsbG8gdGhlcmUsIEkgYW0gYSB0b29sdGlwITwvc3Bhbj5cbiAqIGBgYFxuICovXG4gQERpcmVjdGl2ZSh7XG4gICAgZXhwb3J0QXM6ICd0b29sdGlwVGFyZ2V0JyxcbiAgICBzZWxlY3RvcjogJ1tpZ3hUb29sdGlwVGFyZ2V0XScsXG59KVxuZXhwb3J0IGNsYXNzIElneFRvb2x0aXBUYXJnZXREaXJlY3RpdmUgZXh0ZW5kcyBJZ3hUb2dnbGVBY3Rpb25EaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqXG4gICAgICogR2V0cy9zZXRzIHRoZSBhbW91bnQgb2YgbWlsbGlzZWNvbmRzIHRoYXQgc2hvdWxkIHBhc3MgYmVmb3JlIHNob3dpbmcgdGhlIHRvb2x0aXAuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogLy8gZ2V0XG4gICAgICogbGV0IHRvb2x0aXBTaG93RGVsYXkgPSB0aGlzLnRvb2x0aXBUYXJnZXQuc2hvd0RlbGF5O1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDwhLS1zZXQtLT5cbiAgICAgKiA8YnV0dG9uIFtpZ3hUb29sdGlwVGFyZ2V0XT1cInRvb2x0aXBSZWZcIiBzaG93RGVsYXk9XCIxNTAwXCI+SG92ZXIgbWU8L2J1dHRvbj5cbiAgICAgKiA8c3BhbiAjdG9vbHRpcFJlZj1cInRvb2x0aXBcIiBpZ3hUb29sdGlwPkhlbGxvIHRoZXJlLCBJIGFtIGEgdG9vbHRpcCE8L3NwYW4+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KCdzaG93RGVsYXknKVxuICAgIHB1YmxpYyBzaG93RGVsYXkgPSA1MDA7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzL3NldHMgdGhlIGFtb3VudCBvZiBtaWxsaXNlY29uZHMgdGhhdCBzaG91bGQgcGFzcyBiZWZvcmUgaGlkaW5nIHRoZSB0b29sdGlwLlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIC8vIGdldFxuICAgICAqIGxldCB0b29sdGlwSGlkZURlbGF5ID0gdGhpcy50b29sdGlwVGFyZ2V0LmhpZGVEZWxheTtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8IS0tc2V0LS0+XG4gICAgICogPGJ1dHRvbiBbaWd4VG9vbHRpcFRhcmdldF09XCJ0b29sdGlwUmVmXCIgaGlkZURlbGF5PVwiMTUwMFwiPkhvdmVyIG1lPC9idXR0b24+XG4gICAgICogPHNwYW4gI3Rvb2x0aXBSZWY9XCJ0b29sdGlwXCIgaWd4VG9vbHRpcD5IZWxsbyB0aGVyZSwgSSBhbSBhIHRvb2x0aXAhPC9zcGFuPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgnaGlkZURlbGF5JylcbiAgICBwdWJsaWMgaGlkZURlbGF5ID0gNTAwO1xuXG4gICAgLyoqXG4gICAgICogU3BlY2lmaWVzIGlmIHRoZSB0b29sdGlwIHNob3VsZCBub3Qgc2hvdyB3aGVuIGhvdmVyaW5nIGl0cyB0YXJnZXQgd2l0aCB0aGUgbW91c2UuIChkZWZhdWx0cyB0byBmYWxzZSlcbiAgICAgKiBXaGlsZSBzZXR0aW5nIHRoaXMgcHJvcGVydHkgdG8gJ3RydWUnIHdpbGwgZGlzYWJsZSB0aGUgdXNlciBpbnRlcmFjdGlvbnMgdGhhdCBzaG93cy9oaWRlcyB0aGUgdG9vbHRpcCxcbiAgICAgKiB0aGUgZGV2ZWxvcGVyIHdpbGwgc3RpbGwgYmUgYWJsZSB0byBzaG93L2hpZGUgdGhlIHRvb2x0aXAgdGhyb3VnaCB0aGUgQVBJLlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIC8vIGdldFxuICAgICAqIGxldCB0b29sdGlwRGlzYWJsZWRWYWx1ZSA9IHRoaXMudG9vbHRpcFRhcmdldC50b29sdGlwRGlzYWJsZWQ7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPCEtLXNldC0tPlxuICAgICAqIDxidXR0b24gW2lneFRvb2x0aXBUYXJnZXRdPVwidG9vbHRpcFJlZlwiIFt0b29sdGlwRGlzYWJsZWRdPVwidHJ1ZVwiPkhvdmVyIG1lPC9idXR0b24+XG4gICAgICogPHNwYW4gI3Rvb2x0aXBSZWY9XCJ0b29sdGlwXCIgaWd4VG9vbHRpcD5IZWxsbyB0aGVyZSwgSSBhbSBhIHRvb2x0aXAhPC9zcGFuPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgndG9vbHRpcERpc2FibGVkJylcbiAgICBwdWJsaWMgdG9vbHRpcERpc2FibGVkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQElucHV0KCdpZ3hUb29sdGlwVGFyZ2V0JylcbiAgICBwdWJsaWMgb3ZlcnJpZGUgc2V0IHRhcmdldCh0YXJnZXQ6IGFueSkge1xuICAgICAgICBpZiAodGFyZ2V0ICE9PSBudWxsICYmIHRhcmdldCAhPT0gJycpIHtcbiAgICAgICAgICAgIHRoaXMuX3RhcmdldCA9IHRhcmdldDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IHRhcmdldCgpOiBhbnkge1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMuX3RhcmdldCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9uYXZpZ2F0aW9uU2VydmljZS5nZXQodGhpcy5fdGFyZ2V0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fdGFyZ2V0O1xuICAgIH1cblxuICAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IHRvb2x0aXAoY29udGVudDogYW55KSB7XG4gICAgICAgIGlmICghdGhpcy50YXJnZXQgJiYgKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJyB8fCBjb250ZW50IGluc3RhbmNlb2YgU3RyaW5nKSkge1xuICAgICAgICAgICAgY29uc3QgdG9vbHRpcENvbXBvbmVudCA9IHRoaXMuX3ZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KElneFRvb2x0aXBDb21wb25lbnQpO1xuICAgICAgICAgICAgdG9vbHRpcENvbXBvbmVudC5pbnN0YW5jZS5jb250ZW50ID0gY29udGVudCBhcyBzdHJpbmc7XG5cbiAgICAgICAgICAgIHRoaXMuX3RhcmdldCA9IHRvb2x0aXBDb21wb25lbnQuaW5zdGFuY2UudG9vbHRpcDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHJlc3BlY3RpdmUgbmF0aXZlIGVsZW1lbnQgb2YgdGhlIGRpcmVjdGl2ZS5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgdG9vbHRpcFRhcmdldEVsZW1lbnQgPSB0aGlzLnRvb2x0aXBUYXJnZXQubmF0aXZlRWxlbWVudDtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IG5hdGl2ZUVsZW1lbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5kaWNhdGVzIGlmIHRoZSB0b29sdGlwIHRoYXQgaXMgaXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgdGFyZ2V0IGlzIGN1cnJlbnRseSBoaWRkZW4uXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IHRvb2x0aXBIaWRkZW5WYWx1ZSA9IHRoaXMudG9vbHRpcFRhcmdldC50b29sdGlwSGlkZGVuO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgdG9vbHRpcEhpZGRlbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLnRhcmdldCB8fCB0aGlzLnRhcmdldC5jb2xsYXBzZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRW1pdHMgYW4gZXZlbnQgd2hlbiB0aGUgdG9vbHRpcCB0aGF0IGlzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHRhcmdldCBzdGFydHMgc2hvd2luZy5cbiAgICAgKiBUaGlzIGV2ZW50IGlzIGZpcmVkIGJlZm9yZSB0aGUgc3RhcnQgb2YgdGhlIGNvdW50ZG93biB0byBzaG93aW5nIHRoZSB0b29sdGlwLlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHRvb2x0aXBTaG93aW5nKGFyZ3M6IElUb29sdGlwU2hvd0V2ZW50QXJncykge1xuICAgICAqICAgIGFsZXJ0KFwiVG9vbHRpcCBzdGFydGVkIHNob3dpbmchXCIpO1xuICAgICAqIH1cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8YnV0dG9uIFtpZ3hUb29sdGlwVGFyZ2V0XT1cInRvb2x0aXBSZWZcIlxuICAgICAqICAgICAgICAgKHRvb2x0aXBTaG93KT0ndG9vbHRpcFNob3dpbmcoJGV2ZW50KSc+SG92ZXIgbWU8L2J1dHRvbj5cbiAgICAgKiA8c3BhbiAjdG9vbHRpcFJlZj1cInRvb2x0aXBcIiBpZ3hUb29sdGlwPkhlbGxvIHRoZXJlLCBJIGFtIGEgdG9vbHRpcCE8L3NwYW4+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHRvb2x0aXBTaG93ID0gbmV3IEV2ZW50RW1pdHRlcjxJVG9vbHRpcFNob3dFdmVudEFyZ3M+KCk7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0cyBhbiBldmVudCB3aGVuIHRoZSB0b29sdGlwIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgdGFyZ2V0IHN0YXJ0cyBoaWRpbmcuXG4gICAgICogVGhpcyBldmVudCBpcyBmaXJlZCBiZWZvcmUgdGhlIHN0YXJ0IG9mIHRoZSBjb3VudGRvd24gdG8gaGlkaW5nIHRoZSB0b29sdGlwLlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHRvb2x0aXBIaWRpbmcoYXJnczogSVRvb2x0aXBIaWRlRXZlbnRBcmdzKSB7XG4gICAgICogICAgYWxlcnQoXCJUb29sdGlwIHN0YXJ0ZWQgaGlkaW5nIVwiKTtcbiAgICAgKiB9XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGJ1dHRvbiBbaWd4VG9vbHRpcFRhcmdldF09XCJ0b29sdGlwUmVmXCJcbiAgICAgKiAgICAgICAgICh0b29sdGlwSGlkZSk9J3Rvb2x0aXBIaWRpbmcoJGV2ZW50KSc+SG92ZXIgbWU8L2J1dHRvbj5cbiAgICAgKiA8c3BhbiAjdG9vbHRpcFJlZj1cInRvb2x0aXBcIiBpZ3hUb29sdGlwPkhlbGxvIHRoZXJlLCBJIGFtIGEgdG9vbHRpcCE8L3NwYW4+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHRvb2x0aXBIaWRlID0gbmV3IEV2ZW50RW1pdHRlcjxJVG9vbHRpcEhpZGVFdmVudEFyZ3M+KCk7XG5cbiAgICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2VsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX25hdmlnYXRpb25TZXJ2aWNlOiBJZ3hOYXZpZ2F0aW9uU2VydmljZSwgcHJpdmF0ZSBfdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge1xuICAgICAgICBzdXBlcihfZWxlbWVudCwgX25hdmlnYXRpb25TZXJ2aWNlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxuICAgIHB1YmxpYyBvdmVycmlkZSBvbkNsaWNrKCkge1xuICAgICAgICBpZiAoIXRoaXMudGFyZ2V0LmNvbGxhcHNlZCkge1xuICAgICAgICAgICAgdGhpcy50YXJnZXQuZm9yY2VDbG9zZSh0aGlzLm1lcmdlZE92ZXJsYXlTZXR0aW5ncyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicpXG4gICAgcHVibGljIG9uTW91c2VFbnRlcigpIHtcbiAgICAgICAgaWYgKHRoaXMudG9vbHRpcERpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNoZWNrT3V0bGV0QW5kT3V0c2lkZUNsaWNrKCk7XG4gICAgICAgIGNvbnN0IHNob3VsZFJldHVybiA9IHRoaXMucHJlTW91c2VFbnRlckNoZWNrKCk7XG4gICAgICAgIGlmIChzaG91bGRSZXR1cm4pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNob3dpbmdBcmdzID0geyB0YXJnZXQ6IHRoaXMsIHRvb2x0aXA6IHRoaXMudGFyZ2V0LCBjYW5jZWw6IGZhbHNlIH07XG4gICAgICAgIHRoaXMudG9vbHRpcFNob3cuZW1pdChzaG93aW5nQXJncyk7XG5cbiAgICAgICAgaWYgKHNob3dpbmdBcmdzLmNhbmNlbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy50YXJnZXQudG9CZVNob3duID0gdHJ1ZTtcbiAgICAgICAgdGhpcy50YXJnZXQudGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRhcmdldC5vcGVuKHRoaXMubWVyZ2VkT3ZlcmxheVNldHRpbmdzKTsgLy8gQ2FsbCBvcGVuKCkgb2YgSWd4VG9vbHRpcERpcmVjdGl2ZVxuICAgICAgICAgICAgdGhpcy50YXJnZXQudG9CZVNob3duID0gZmFsc2U7XG4gICAgICAgIH0sIHRoaXMuc2hvd0RlbGF5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScpXG4gICAgcHVibGljIG9uTW91c2VMZWF2ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMudG9vbHRpcERpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNoZWNrT3V0bGV0QW5kT3V0c2lkZUNsaWNrKCk7XG4gICAgICAgIGNvbnN0IHNob3VsZFJldHVybiA9IHRoaXMucHJlTW91c2VMZWF2ZUNoZWNrKCk7XG4gICAgICAgIGlmIChzaG91bGRSZXR1cm4gfHwgdGhpcy50YXJnZXQuY29sbGFwc2VkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRhcmdldC50b0JlSGlkZGVuID0gdHJ1ZTtcbiAgICAgICAgdGhpcy50YXJnZXQudGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRhcmdldC5jbG9zZSgpOyAvLyBDYWxsIGNsb3NlKCkgb2YgSWd4VG9vbHRpcERpcmVjdGl2ZVxuICAgICAgICAgICAgdGhpcy50YXJnZXQudG9CZUhpZGRlbiA9IGZhbHNlO1xuICAgICAgICB9LCB0aGlzLmhpZGVEZWxheSk7XG5cblxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCd0b3VjaHN0YXJ0JylcbiAgICBwdWJsaWMgb25Ub3VjaFN0YXJ0KCkge1xuICAgICAgICBpZiAodGhpcy50b29sdGlwRGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2hvd1Rvb2x0aXAoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6dG91Y2hzdGFydCcsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uRG9jdW1lbnRUb3VjaFN0YXJ0KGV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLnRvb2x0aXBEaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubmF0aXZlRWxlbWVudCAhPT0gZXZlbnQudGFyZ2V0ICYmXG4gICAgICAgICAgICAhdGhpcy5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmhpZGVUb29sdGlwKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgICAgIGNvbnN0IHBvc2l0aW9uU2V0dGluZ3M6IFBvc2l0aW9uU2V0dGluZ3MgPSB7XG4gICAgICAgICAgICBob3Jpem9udGFsRGlyZWN0aW9uOiBIb3Jpem9udGFsQWxpZ25tZW50LkNlbnRlcixcbiAgICAgICAgICAgIGhvcml6b250YWxTdGFydFBvaW50OiBIb3Jpem9udGFsQWxpZ25tZW50LkNlbnRlcixcbiAgICAgICAgICAgIG9wZW5BbmltYXRpb246IHVzZUFuaW1hdGlvbihzY2FsZUluQ2VudGVyLCB7IHBhcmFtczogeyBkdXJhdGlvbjogJzE1MG1zJyB9IH0pLFxuICAgICAgICAgICAgY2xvc2VBbmltYXRpb246IHVzZUFuaW1hdGlvbihmYWRlT3V0LCB7IHBhcmFtczogeyBkdXJhdGlvbjogJzc1bXMnIH0gfSlcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLl9vdmVybGF5RGVmYXVsdHMucG9zaXRpb25TdHJhdGVneSA9IG5ldyBBdXRvUG9zaXRpb25TdHJhdGVneShwb3NpdGlvblNldHRpbmdzKTtcbiAgICAgICAgdGhpcy5fb3ZlcmxheURlZmF1bHRzLmNsb3NlT25PdXRzaWRlQ2xpY2sgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fb3ZlcmxheURlZmF1bHRzLmNsb3NlT25Fc2NhcGUgPSB0cnVlO1xuXG4gICAgICAgIHRoaXMudGFyZ2V0LmNsb3NpbmcucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGhpZGluZ0FyZ3MgPSB7IHRhcmdldDogdGhpcywgdG9vbHRpcDogdGhpcy50YXJnZXQsIGNhbmNlbDogZmFsc2UgfTtcbiAgICAgICAgICAgIHRoaXMudG9vbHRpcEhpZGUuZW1pdChoaWRpbmdBcmdzKTtcblxuICAgICAgICAgICAgaWYgKGhpZGluZ0FyZ3MuY2FuY2VsKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQuY2FuY2VsID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTaG93cyB0aGUgdG9vbHRpcCBieSByZXNwZWN0aW5nIHRoZSAnc2hvd0RlbGF5JyBwcm9wZXJ0eS5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLnRvb2x0aXBUYXJnZXQuc2hvd1Rvb2x0aXAoKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgc2hvd1Rvb2x0aXAoKSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRhcmdldC50aW1lb3V0SWQpO1xuXG4gICAgICAgIGlmICghdGhpcy50YXJnZXQuY29sbGFwc2VkKSB7XG4gICAgICAgICAgICAvLyAgaWYgY2xvc2UgYW5pbWF0aW9uIGhhcyBzdGFydGVkIGZpbmlzaCBpdCwgb3IgY2xvc2UgdGhlIHRvb2x0aXAgd2l0aCBubyBhbmltYXRpb25cbiAgICAgICAgICAgIHRoaXMudGFyZ2V0LmZvcmNlQ2xvc2UodGhpcy5tZXJnZWRPdmVybGF5U2V0dGluZ3MpO1xuICAgICAgICAgICAgdGhpcy50YXJnZXQudG9CZUhpZGRlbiA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2hvd2luZ0FyZ3MgPSB7IHRhcmdldDogdGhpcywgdG9vbHRpcDogdGhpcy50YXJnZXQsIGNhbmNlbDogZmFsc2UgfTtcbiAgICAgICAgdGhpcy50b29sdGlwU2hvdy5lbWl0KHNob3dpbmdBcmdzKTtcblxuICAgICAgICBpZiAoc2hvd2luZ0FyZ3MuY2FuY2VsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRhcmdldC50b0JlU2hvd24gPSB0cnVlO1xuICAgICAgICB0aGlzLnRhcmdldC50aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudGFyZ2V0Lm9wZW4odGhpcy5tZXJnZWRPdmVybGF5U2V0dGluZ3MpOyAvLyBDYWxsIG9wZW4oKSBvZiBJZ3hUb29sdGlwRGlyZWN0aXZlXG4gICAgICAgICAgICB0aGlzLnRhcmdldC50b0JlU2hvd24gPSBmYWxzZTtcbiAgICAgICAgfSwgdGhpcy5zaG93RGVsYXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhpZGVzIHRoZSB0b29sdGlwIGJ5IHJlc3BlY3RpbmcgdGhlICdoaWRlRGVsYXknIHByb3BlcnR5LlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHRoaXMudG9vbHRpcFRhcmdldC5oaWRlVG9vbHRpcCgpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBoaWRlVG9vbHRpcCgpIHtcbiAgICAgICAgaWYgKHRoaXMudGFyZ2V0LmNvbGxhcHNlZCAmJiB0aGlzLnRhcmdldC50b0JlU2hvd24pIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRhcmdldC50aW1lb3V0SWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudGFyZ2V0LmNvbGxhcHNlZCB8fCB0aGlzLnRhcmdldC50b0JlSGlkZGVuKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRhcmdldC50b0JlSGlkZGVuID0gdHJ1ZTtcbiAgICAgICAgdGhpcy50YXJnZXQudGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRhcmdldC5jbG9zZSgpOyAvLyBDYWxsIGNsb3NlKCkgb2YgSWd4VG9vbHRpcERpcmVjdGl2ZVxuICAgICAgICAgICAgdGhpcy50YXJnZXQudG9CZUhpZGRlbiA9IGZhbHNlO1xuICAgICAgICB9LCB0aGlzLmhpZGVEZWxheSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja091dGxldEFuZE91dHNpZGVDbGljaygpIHtcbiAgICAgICAgaWYgKHRoaXMub3V0bGV0KSB7XG4gICAgICAgICAgICB0aGlzLl9vdmVybGF5RGVmYXVsdHMub3V0bGV0ID0gdGhpcy5vdXRsZXQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBtZXJnZWRPdmVybGF5U2V0dGluZ3MoKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCB0aGlzLl9vdmVybGF5RGVmYXVsdHMsIHRoaXMub3ZlcmxheVNldHRpbmdzKTtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGUgZXhlY3V0aW9uIGluIG9uTW91c2VFbnRlciBzaG91bGQgYmUgdGVybWluYXRlZCBhZnRlciB0aGlzIG1ldGhvZFxuICAgIHByaXZhdGUgcHJlTW91c2VFbnRlckNoZWNrKCkge1xuICAgICAgICAvLyBJZiB0b29sdGlwIGlzIGFib3V0IHRvIGJlIG9wZW5lZFxuICAgICAgICBpZiAodGhpcy50YXJnZXQudG9CZVNob3duKSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50YXJnZXQudGltZW91dElkKTtcbiAgICAgICAgICAgIHRoaXMudGFyZ2V0LnRvQmVTaG93biA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgVG9vbHRpcCBpcyBvcGVuZWQgb3IgYWJvdXQgdG8gYmUgaGlkZGVuXG4gICAgICAgIGlmICghdGhpcy50YXJnZXQuY29sbGFwc2VkIHx8IHRoaXMudGFyZ2V0LnRvQmVIaWRkZW4pIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRhcmdldC50aW1lb3V0SWQpO1xuXG4gICAgICAgICAgICAvLyAgaWYgY2xvc2UgYW5pbWF0aW9uIGhhcyBzdGFydGVkIGZpbmlzaCBpdCwgb3IgY2xvc2UgdGhlIHRvb2x0aXAgd2l0aCBubyBhbmltYXRpb25cbiAgICAgICAgICAgIHRoaXMudGFyZ2V0LmZvcmNlQ2xvc2UodGhpcy5tZXJnZWRPdmVybGF5U2V0dGluZ3MpO1xuICAgICAgICAgICAgdGhpcy50YXJnZXQudG9CZUhpZGRlbiA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIFJldHVybiB0cnVlIGlmIHRoZSBleGVjdXRpb24gaW4gb25Nb3VzZUxlYXZlIHNob3VsZCBiZSB0ZXJtaW5hdGVkIGFmdGVyIHRoaXMgbWV0aG9kXG4gICAgcHJpdmF0ZSBwcmVNb3VzZUxlYXZlQ2hlY2soKTogYm9vbGVhbiB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRhcmdldC50aW1lb3V0SWQpO1xuXG4gICAgICAgIC8vIElmIHRvb2x0aXAgaXMgYWJvdXQgdG8gYmUgb3BlbmVkXG4gICAgICAgIGlmICh0aGlzLnRhcmdldC50b0JlU2hvd24pIHtcbiAgICAgICAgICAgIHRoaXMudGFyZ2V0LnRvQmVTaG93biA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy50YXJnZXQudG9CZUhpZGRlbiA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuIl19
|
|
384
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC10YXJnZXQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2RpcmVjdGl2ZXMvdG9vbHRpcC90b29sdGlwLXRhcmdldC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sRUFBYyxRQUFRLEVBQW9CLFlBQVksRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hKLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHdkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLG1CQUFtQixFQUFvQixNQUFNLDJCQUEyQixDQUFDO0FBQ3hHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUFjMUQ7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUtILE1BQU0sT0FBTyx5QkFBMEIsU0FBUSx3QkFBd0I7SUFzRG5FOztPQUVHO0lBQ0gsSUFDb0IsTUFBTSxDQUFDLE1BQVc7UUFDbEMsSUFBSSxNQUFNLEtBQUssSUFBSSxJQUFJLE1BQU0sS0FBSyxFQUFFLEVBQUU7WUFDbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7U0FDekI7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFvQixNQUFNO1FBQ3RCLElBQUksT0FBTyxJ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QUR0QixZQUFZO3VCQUFDLE9BQU87Z0JBV2QsWUFBWTtzQkFEbEIsWUFBWTt1QkFBQyxZQUFZO2dCQThCbkIsWUFBWTtzQkFEbEIsWUFBWTt1QkFBQyxZQUFZO2dCQXlCbkIsWUFBWTtzQkFEbEIsWUFBWTt1QkFBQyxZQUFZO2dCQWFuQixvQkFBb0I7c0JBRDFCLFlBQVk7dUJBQUMscUJBQXFCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VBbmltYXRpb24gfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IERpcmVjdGl2ZSwgT25Jbml0LCBPbkRlc3Ryb3ksIE91dHB1dCwgRWxlbWVudFJlZiwgT3B0aW9uYWwsIFZpZXdDb250YWluZXJSZWYsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgZmFkZU91dCB9IGZyb20gJy4uLy4uL2FuaW1hdGlvbnMvZmFkZSc7XG5pbXBvcnQgeyBzY2FsZUluQ2VudGVyIH0gZnJvbSAnLi4vLi4vYW5pbWF0aW9ucy9zY2FsZSc7XG5pbXBvcnQgeyBJZ3hOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvbmF2aWdhdGlvbic7XG5pbXBvcnQgeyBJQmFzZUV2ZW50QXJncyB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgQXV0b1Bvc2l0aW9uU3RyYXRlZ3ksIEhvcml6b250YWxBbGlnbm1lbnQsIFBvc2l0aW9uU2V0dGluZ3MgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wdWJsaWNfYXBpJztcbmltcG9ydCB7IElneFRvZ2dsZUFjdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4uL3RvZ2dsZS90b2dnbGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IElneFRvb2x0aXBDb21wb25lbnQgfSBmcm9tICcuL3Rvb2x0aXAuY29tcG9uZW50JztcbmltcG9ydCB7IElneFRvb2x0aXBEaXJlY3RpdmUgfSBmcm9tICcuL3Rvb2x0aXAuZGlyZWN0aXZlJztcblxuZXhwb3J0IGludGVyZmFjZSBJVG9vbHRpcFNob3dFdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncyB7XG4gICAgdGFyZ2V0OiBJZ3hUb29sdGlwVGFyZ2V0RGlyZWN0aXZlO1xuICAgIHRvb2x0aXA6IElneFRvb2x0aXBEaXJlY3RpdmU7XG4gICAgY2FuY2VsOiBib29sZWFuO1xufVxuZXhwb3J0IGludGVyZmFjZSBJVG9vbHRpcEhpZGVFdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncyB7XG4gICAgdGFyZ2V0OiBJZ3hUb29sdGlwVGFyZ2V0RGlyZWN0aXZlO1xuICAgIHRvb2x0aXA6IElneFRvb2x0aXBEaXJlY3RpdmU7XG4gICAgY2FuY2VsOiBib29sZWFuO1xufVxuXG4vKipcbiAqICoqSWduaXRlIFVJIGZvciBBbmd1bGFyIFRvb2x0aXAgVGFyZ2V0KiogLVxuICogW0RvY3VtZW50YXRpb25dKGh0dHBzOi8vd3d3LmluZnJhZ2lzdGljcy5jb20vcHJvZHVjdHMvaWduaXRlLXVpLWFuZ3VsYXIvYW5ndWxhci9jb21wb25lbnRzL3Rvb2x0aXApXG4gKlxuICogVGhlIElnbml0ZSBVSSBmb3IgQW5ndWxhciBUb29sdGlwIFRhcmdldCBkaXJlY3RpdmUgaXMgdXNlZCB0byBtYXJrIGFuIEhUTUwgZWxlbWVudCBpbiB0aGUgbWFya3VwIGFzIG9uZSB0aGF0IGhhcyBhIHRvb2x0aXAuXG4gKiBUaGUgdG9vbHRpcCB0YXJnZXQgaXMgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIHRoZSBJZ25pdGUgVUkgZm9yIEFuZ3VsYXIgVG9vbHRpcCBieSBhc3NpZ25pbmcgdGhlIGV4cG9ydGVkIHRvb2x0aXAgcmVmZXJlbmNlIHRvIHRoZVxuICogdGFyZ2V0J3Mgc2VsZWN0b3IgcHJvcGVydHkuXG4gKlxuICogRXhhbXBsZTpcbiAqIGBgYGh0bWxcbiAqIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGlneEJ1dHRvbiBbaWd4VG9vbHRpcFRhcmdldF09XCJ0b29sdGlwUmVmXCI+SG92ZXIgbWU8L2J1dHRvbj5cbiAqIDxzcGFuICN0b29sdGlwUmVmPVwidG9vbHRpcFwiIGlneFRvb2x0aXA+SGVsbG8gdGhlcmUsIEkgYW0gYSB0b29sdGlwITwvc3Bhbj5cbiAqIGBgYFxuICovXG4gQERpcmVjdGl2ZSh7XG4gICAgZXhwb3J0QXM6ICd0b29sdGlwVGFyZ2V0JyxcbiAgICBzZWxlY3RvcjogJ1tpZ3hUb29sdGlwVGFyZ2V0XScsXG59KVxuZXhwb3J0IGNsYXNzIElneFRvb2x0aXBUYXJnZXREaXJlY3RpdmUgZXh0ZW5kcyBJZ3hUb2dnbGVBY3Rpb25EaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqXG4gICAgICogR2V0cy9zZXRzIHRoZSBhbW91bnQgb2YgbWlsbGlzZWNvbmRzIHRoYXQgc2hvdWxkIHBhc3MgYmVmb3JlIHNob3dpbmcgdGhlIHRvb2x0aXAuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogLy8gZ2V0XG4gICAgICogbGV0IHRvb2x0aXBTaG93RGVsYXkgPSB0aGlzLnRvb2x0aXBUYXJnZXQuc2hvd0RlbGF5O1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDwhLS1zZXQtLT5cbiAgICAgKiA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBpZ3hCdXR0b24gW2lneFRvb2x0aXBUYXJnZXRdPVwidG9vbHRpcFJlZlwiIFtzaG93RGVsYXldPVwiMTUwMFwiPkhvdmVyIG1lPC9idXR0b24+XG4gICAgICogPHNwYW4gI3Rvb2x0aXBSZWY9XCJ0b29sdGlwXCIgaWd4VG9vbHRpcD5IZWxsbyB0aGVyZSwgSSBhbSBhIHRvb2x0aXAhPC9zcGFuPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgnc2hvd0RlbGF5JylcbiAgICBwdWJsaWMgc2hvd0RlbGF5ID0gNTAwO1xuXG4gICAgLyoqXG4gICAgICogR2V0cy9zZXRzIHRoZSBhbW91bnQgb2YgbWlsbGlzZWNvbmRzIHRoYXQgc2hvdWxkIHBhc3MgYmVmb3JlIGhpZGluZyB0aGUgdG9vbHRpcC5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBnZXRcbiAgICAgKiBsZXQgdG9vbHRpcEhpZGVEZWxheSA9IHRoaXMudG9vbHRpcFRhcmdldC5oaWRlRGVsYXk7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPCEtLXNldC0tPlxuICAgICAqIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGlneEJ1dHRvbiBbaWd4VG9vbHRpcFRhcmdldF09XCJ0b29sdGlwUmVmXCIgW2hpZGVEZWxheV09XCIxNTAwXCI+SG92ZXIgbWU8L2J1dHRvbj5cbiAgICAgKiA8c3BhbiAjdG9vbHRpcFJlZj1cInRvb2x0aXBcIiBpZ3hUb29sdGlwPkhlbGxvIHRoZXJlLCBJIGFtIGEgdG9vbHRpcCE8L3NwYW4+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KCdoaWRlRGVsYXknKVxuICAgIHB1YmxpYyBoaWRlRGVsYXkgPSA1MDA7XG5cbiAgICAvKipcbiAgICAgKiBTcGVjaWZpZXMgaWYgdGhlIHRvb2x0aXAgc2hvdWxkIG5vdCBzaG93IHdoZW4gaG92ZXJpbmcgaXRzIHRhcmdldCB3aXRoIHRoZSBtb3VzZS4gKGRlZmF1bHRzIHRvIGZhbHNlKVxuICAgICAqIFdoaWxlIHNldHRpbmcgdGhpcyBwcm9wZXJ0eSB0byAndHJ1ZScgd2lsbCBkaXNhYmxlIHRoZSB1c2VyIGludGVyYWN0aW9ucyB0aGF0IHNob3dzL2hpZGVzIHRoZSB0b29sdGlwLFxuICAgICAqIHRoZSBkZXZlbG9wZXIgd2lsbCBzdGlsbCBiZSBhYmxlIHRvIHNob3cvaGlkZSB0aGUgdG9vbHRpcCB0aHJvdWdoIHRoZSBBUEkuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogLy8gZ2V0XG4gICAgICogbGV0IHRvb2x0aXBEaXNhYmxlZFZhbHVlID0gdGhpcy50b29sdGlwVGFyZ2V0LnRvb2x0aXBEaXNhYmxlZDtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8IS0tc2V0LS0+XG4gICAgICogPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWd4QnV0dG9uIFtpZ3hUb29sdGlwVGFyZ2V0XT1cInRvb2x0aXBSZWZcIiBbdG9vbHRpcERpc2FibGVkXT1cInRydWVcIj5Ib3ZlciBtZTwvYnV0dG9uPlxuICAgICAqIDxzcGFuICN0b29sdGlwUmVmPVwidG9vbHRpcFwiIGlneFRvb2x0aXA+SGVsbG8gdGhlcmUsIEkgYW0gYSB0b29sdGlwITwvc3Bhbj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoJ3Rvb2x0aXBEaXNhYmxlZCcpXG4gICAgcHVibGljIHRvb2x0aXBEaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBJbnB1dCgnaWd4VG9vbHRpcFRhcmdldCcpXG4gICAgcHVibGljIG92ZXJyaWRlIHNldCB0YXJnZXQodGFyZ2V0OiBhbnkpIHtcbiAgICAgICAgaWYgKHRhcmdldCAhPT0gbnVsbCAmJiB0YXJnZXQgIT09ICcnKSB7XG4gICAgICAgICAgICB0aGlzLl90YXJnZXQgPSB0YXJnZXQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIGdldCB0YXJnZXQoKTogYW55IHtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLl90YXJnZXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbmF2aWdhdGlvblNlcnZpY2UuZ2V0KHRoaXMuX3RhcmdldCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhcmdldDtcbiAgICB9XG5cbiAgICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCB0b29sdGlwKGNvbnRlbnQ6IGFueSkge1xuICAgICAgICBpZiAoIXRoaXMudGFyZ2V0ICYmICh0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycgfHwgY29udGVudCBpbnN0YW5jZW9mIFN0cmluZykpIHtcbiAgICAgICAgICAgIGNvbnN0IHRvb2x0aXBDb21wb25lbnQgPSB0aGlzLl92aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChJZ3hUb29sdGlwQ29tcG9uZW50KTtcbiAgICAgICAgICAgIHRvb2x0aXBDb21wb25lbnQuaW5zdGFuY2UuY29udGVudCA9IGNvbnRlbnQgYXMgc3RyaW5nO1xuXG4gICAgICAgICAgICB0aGlzLl90YXJnZXQgPSB0b29sdGlwQ29tcG9uZW50Lmluc3RhbmNlLnRvb2x0aXA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSByZXNwZWN0aXZlIG5hdGl2ZSBlbGVtZW50IG9mIHRoZSBkaXJlY3RpdmUuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IHRvb2x0aXBUYXJnZXRFbGVtZW50ID0gdGhpcy50b29sdGlwVGFyZ2V0Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldCBuYXRpdmVFbGVtZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluZGljYXRlcyBpZiB0aGUgdG9vbHRpcCB0aGF0IGlzIGlzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHRhcmdldCBpcyBjdXJyZW50bHkgaGlkZGVuLlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCB0b29sdGlwSGlkZGVuVmFsdWUgPSB0aGlzLnRvb2x0aXBUYXJnZXQudG9vbHRpcEhpZGRlbjtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHRvb2x0aXBIaWRkZW4oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy50YXJnZXQgfHwgdGhpcy50YXJnZXQuY29sbGFwc2VkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVtaXRzIGFuIGV2ZW50IHdoZW4gdGhlIHRvb2x0aXAgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggdGhpcyB0YXJnZXQgc3RhcnRzIHNob3dpbmcuXG4gICAgICogVGhpcyBldmVudCBpcyBmaXJlZCBiZWZvcmUgdGhlIHN0YXJ0IG9mIHRoZSBjb3VudGRvd24gdG8gc2hvd2luZyB0aGUgdG9vbHRpcC5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0b29sdGlwU2hvd2luZyhhcmdzOiBJVG9vbHRpcFNob3dFdmVudEFyZ3MpIHtcbiAgICAgKiAgICBhbGVydChcIlRvb2x0aXAgc3RhcnRlZCBzaG93aW5nIVwiKTtcbiAgICAgKiB9XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWd4QnV0dG9uIFtpZ3hUb29sdGlwVGFyZ2V0XT1cInRvb2x0aXBSZWZcIiAodG9vbHRpcFNob3cpPSd0b29sdGlwU2hvd2luZygkZXZlbnQpJz5Ib3ZlciBtZTwvYnV0dG9uPlxuICAgICAqIDxzcGFuICN0b29sdGlwUmVmPVwidG9vbHRpcFwiIGlneFRvb2x0aXA+SGVsbG8gdGhlcmUsIEkgYW0gYSB0b29sdGlwITwvc3Bhbj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgdG9vbHRpcFNob3cgPSBuZXcgRXZlbnRFbWl0dGVyPElUb29sdGlwU2hvd0V2ZW50QXJncz4oKTtcblxuICAgIC8qKlxuICAgICAqIEVtaXRzIGFuIGV2ZW50IHdoZW4gdGhlIHRvb2x0aXAgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggdGhpcyB0YXJnZXQgc3RhcnRzIGhpZGluZy5cbiAgICAgKiBUaGlzIGV2ZW50IGlzIGZpcmVkIGJlZm9yZSB0aGUgc3RhcnQgb2YgdGhlIGNvdW50ZG93biB0byBoaWRpbmcgdGhlIHRvb2x0aXAuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdG9vbHRpcEhpZGluZyhhcmdzOiBJVG9vbHRpcEhpZGVFdmVudEFyZ3MpIHtcbiAgICAgKiAgICBhbGVydChcIlRvb2x0aXAgc3RhcnRlZCBoaWRpbmchXCIpO1xuICAgICAqIH1cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBpZ3hCdXR0b24gW2lneFRvb2x0aXBUYXJnZXRdPVwidG9vbHRpcFJlZlwiICh0b29sdGlwSGlkZSk9J3Rvb2x0aXBIaWRpbmcoJGV2ZW50KSc+SG92ZXIgbWU8L2J1dHRvbj5cbiAgICAgKiA8c3BhbiAjdG9vbHRpcFJlZj1cInRvb2x0aXBcIiBpZ3hUb29sdGlwPkhlbGxvIHRoZXJlLCBJIGFtIGEgdG9vbHRpcCE8L3NwYW4+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHRvb2x0aXBIaWRlID0gbmV3IEV2ZW50RW1pdHRlcjxJVG9vbHRpcEhpZGVFdmVudEFyZ3M+KCk7XG5cbiAgICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2VsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX25hdmlnYXRpb25TZXJ2aWNlOiBJZ3hOYXZpZ2F0aW9uU2VydmljZSwgcHJpdmF0ZSBfdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge1xuICAgICAgICBzdXBlcihfZWxlbWVudCwgX25hdmlnYXRpb25TZXJ2aWNlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxuICAgIHB1YmxpYyBvdmVycmlkZSBvbkNsaWNrKCkge1xuICAgICAgICBpZiAoIXRoaXMudGFyZ2V0LmNvbGxhcHNlZCkge1xuICAgICAgICAgICAgdGhpcy50YXJnZXQuZm9yY2VDbG9zZSh0aGlzLm1lcmdlZE92ZXJsYXlTZXR0aW5ncyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicpXG4gICAgcHVibGljIG9uTW91c2VFbnRlcigpIHtcbiAgICAgICAgaWYgKHRoaXMudG9vbHRpcERpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNoZWNrT3V0bGV0QW5kT3V0c2lkZUNsaWNrKCk7XG4gICAgICAgIGNvbnN0IHNob3VsZFJldHVybiA9IHRoaXMucHJlTW91c2VFbnRlckNoZWNrKCk7XG4gICAgICAgIGlmIChzaG91bGRSZXR1cm4pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNob3dpbmdBcmdzID0geyB0YXJnZXQ6IHRoaXMsIHRvb2x0aXA6IHRoaXMudGFyZ2V0LCBjYW5jZWw6IGZhbHNlIH07XG4gICAgICAgIHRoaXMudG9vbHRpcFNob3cuZW1pdChzaG93aW5nQXJncyk7XG5cbiAgICAgICAgaWYgKHNob3dpbmdBcmdzLmNhbmNlbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy50YXJnZXQudG9CZVNob3duID0gdHJ1ZTtcbiAgICAgICAgdGhpcy50YXJnZXQudGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRhcmdldC5vcGVuKHRoaXMubWVyZ2VkT3ZlcmxheVNldHRpbmdzKTsgLy8gQ2FsbCBvcGVuKCkgb2YgSWd4VG9vbHRpcERpcmVjdGl2ZVxuICAgICAgICAgICAgdGhpcy50YXJnZXQudG9CZVNob3duID0gZmFsc2U7XG4gICAgICAgIH0sIHRoaXMuc2hvd0RlbGF5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScpXG4gICAgcHVibGljIG9uTW91c2VMZWF2ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMudG9vbHRpcERpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNoZWNrT3V0bGV0QW5kT3V0c2lkZUNsaWNrKCk7XG4gICAgICAgIGNvbnN0IHNob3VsZFJldHVybiA9IHRoaXMucHJlTW91c2VMZWF2ZUNoZWNrKCk7XG4gICAgICAgIGlmIChzaG91bGRSZXR1cm4gfHwgdGhpcy50YXJnZXQuY29sbGFwc2VkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRhcmdldC50b0JlSGlkZGVuID0gdHJ1ZTtcbiAgICAgICAgdGhpcy50YXJnZXQudGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRhcmdldC5jbG9zZSgpOyAvLyBDYWxsIGNsb3NlKCkgb2YgSWd4VG9vbHRpcERpcmVjdGl2ZVxuICAgICAgICAgICAgdGhpcy50YXJnZXQudG9CZUhpZGRlbiA9IGZhbHNlO1xuICAgICAgICB9LCB0aGlzLmhpZGVEZWxheSk7XG5cblxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCd0b3VjaHN0YXJ0JylcbiAgICBwdWJsaWMgb25Ub3VjaFN0YXJ0KCkge1xuICAgICAgICBpZiAodGhpcy50b29sdGlwRGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2hvd1Rvb2x0aXAoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6dG91Y2hzdGFydCcsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uRG9jdW1lbnRUb3VjaFN0YXJ0KGV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLnRvb2x0aXBEaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubmF0aXZlRWxlbWVudCAhPT0gZXZlbnQudGFyZ2V0ICYmXG4gICAgICAgICAgICAhdGhpcy5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmhpZGVUb29sdGlwKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgICAgIGNvbnN0IHBvc2l0aW9uU2V0dGluZ3M6IFBvc2l0aW9uU2V0dGluZ3MgPSB7XG4gICAgICAgICAgICBob3Jpem9udGFsRGlyZWN0aW9uOiBIb3Jpem9udGFsQWxpZ25tZW50LkNlbnRlcixcbiAgICAgICAgICAgIGhvcml6b250YWxTdGFydFBvaW50OiBIb3Jpem9udGFsQWxpZ25tZW50LkNlbnRlcixcbiAgICAgICAgICAgIG9wZW5BbmltYXRpb246IHVzZUFuaW1hdGlvbihzY2FsZUluQ2VudGVyLCB7IHBhcmFtczogeyBkdXJhdGlvbjogJzE1MG1zJyB9IH0pLFxuICAgICAgICAgICAgY2xvc2VBbmltYXRpb246IHVzZUFuaW1hdGlvbihmYWRlT3V0LCB7IHBhcmFtczogeyBkdXJhdGlvbjogJzc1bXMnIH0gfSlcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLl9vdmVybGF5RGVmYXVsdHMucG9zaXRpb25TdHJhdGVneSA9IG5ldyBBdXRvUG9zaXRpb25TdHJhdGVneShwb3NpdGlvblNldHRpbmdzKTtcbiAgICAgICAgdGhpcy5fb3ZlcmxheURlZmF1bHRzLmNsb3NlT25PdXRzaWRlQ2xpY2sgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fb3ZlcmxheURlZmF1bHRzLmNsb3NlT25Fc2NhcGUgPSB0cnVlO1xuXG4gICAgICAgIHRoaXMudGFyZ2V0LmNsb3NpbmcucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGhpZGluZ0FyZ3MgPSB7IHRhcmdldDogdGhpcywgdG9vbHRpcDogdGhpcy50YXJnZXQsIGNhbmNlbDogZmFsc2UgfTtcbiAgICAgICAgICAgIHRoaXMudG9vbHRpcEhpZGUuZW1pdChoaWRpbmdBcmdzKTtcblxuICAgICAgICAgICAgaWYgKGhpZGluZ0FyZ3MuY2FuY2VsKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQuY2FuY2VsID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTaG93cyB0aGUgdG9vbHRpcCBieSByZXNwZWN0aW5nIHRoZSAnc2hvd0RlbGF5JyBwcm9wZXJ0eS5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLnRvb2x0aXBUYXJnZXQuc2hvd1Rvb2x0aXAoKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgc2hvd1Rvb2x0aXAoKSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRhcmdldC50aW1lb3V0SWQpO1xuXG4gICAgICAgIGlmICghdGhpcy50YXJnZXQuY29sbGFwc2VkKSB7XG4gICAgICAgICAgICAvLyAgaWYgY2xvc2UgYW5pbWF0aW9uIGhhcyBzdGFydGVkIGZpbmlzaCBpdCwgb3IgY2xvc2UgdGhlIHRvb2x0aXAgd2l0aCBubyBhbmltYXRpb25cbiAgICAgICAgICAgIHRoaXMudGFyZ2V0LmZvcmNlQ2xvc2UodGhpcy5tZXJnZWRPdmVybGF5U2V0dGluZ3MpO1xuICAgICAgICAgICAgdGhpcy50YXJnZXQudG9CZUhpZGRlbiA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2hvd2luZ0FyZ3MgPSB7IHRhcmdldDogdGhpcywgdG9vbHRpcDogdGhpcy50YXJnZXQsIGNhbmNlbDogZmFsc2UgfTtcbiAgICAgICAgdGhpcy50b29sdGlwU2hvdy5lbWl0KHNob3dpbmdBcmdzKTtcblxuICAgICAgICBpZiAoc2hvd2luZ0FyZ3MuY2FuY2VsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRhcmdldC50b0JlU2hvd24gPSB0cnVlO1xuICAgICAgICB0aGlzLnRhcmdldC50aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudGFyZ2V0Lm9wZW4odGhpcy5tZXJnZWRPdmVybGF5U2V0dGluZ3MpOyAvLyBDYWxsIG9wZW4oKSBvZiBJZ3hUb29sdGlwRGlyZWN0aXZlXG4gICAgICAgICAgICB0aGlzLnRhcmdldC50b0JlU2hvd24gPSBmYWxzZTtcbiAgICAgICAgfSwgdGhpcy5zaG93RGVsYXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhpZGVzIHRoZSB0b29sdGlwIGJ5IHJlc3BlY3RpbmcgdGhlICdoaWRlRGVsYXknIHByb3BlcnR5LlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHRoaXMudG9vbHRpcFRhcmdldC5oaWRlVG9vbHRpcCgpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBoaWRlVG9vbHRpcCgpIHtcbiAgICAgICAgaWYgKHRoaXMudGFyZ2V0LmNvbGxhcHNlZCAmJiB0aGlzLnRhcmdldC50b0JlU2hvd24pIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRhcmdldC50aW1lb3V0SWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudGFyZ2V0LmNvbGxhcHNlZCB8fCB0aGlzLnRhcmdldC50b0JlSGlkZGVuKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRhcmdldC50b0JlSGlkZGVuID0gdHJ1ZTtcbiAgICAgICAgdGhpcy50YXJnZXQudGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRhcmdldC5jbG9zZSgpOyAvLyBDYWxsIGNsb3NlKCkgb2YgSWd4VG9vbHRpcERpcmVjdGl2ZVxuICAgICAgICAgICAgdGhpcy50YXJnZXQudG9CZUhpZGRlbiA9IGZhbHNlO1xuICAgICAgICB9LCB0aGlzLmhpZGVEZWxheSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja091dGxldEFuZE91dHNpZGVDbGljaygpIHtcbiAgICAgICAgaWYgKHRoaXMub3V0bGV0KSB7XG4gICAgICAgICAgICB0aGlzLl9vdmVybGF5RGVmYXVsdHMub3V0bGV0ID0gdGhpcy5vdXRsZXQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBtZXJnZWRPdmVybGF5U2V0dGluZ3MoKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCB0aGlzLl9vdmVybGF5RGVmYXVsdHMsIHRoaXMub3ZlcmxheVNldHRpbmdzKTtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGUgZXhlY3V0aW9uIGluIG9uTW91c2VFbnRlciBzaG91bGQgYmUgdGVybWluYXRlZCBhZnRlciB0aGlzIG1ldGhvZFxuICAgIHByaXZhdGUgcHJlTW91c2VFbnRlckNoZWNrKCkge1xuICAgICAgICAvLyBJZiB0b29sdGlwIGlzIGFib3V0IHRvIGJlIG9wZW5lZFxuICAgICAgICBpZiAodGhpcy50YXJnZXQudG9CZVNob3duKSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50YXJnZXQudGltZW91dElkKTtcbiAgICAgICAgICAgIHRoaXMudGFyZ2V0LnRvQmVTaG93biA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgVG9vbHRpcCBpcyBvcGVuZWQgb3IgYWJvdXQgdG8gYmUgaGlkZGVuXG4gICAgICAgIGlmICghdGhpcy50YXJnZXQuY29sbGFwc2VkIHx8IHRoaXMudGFyZ2V0LnRvQmVIaWRkZW4pIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRhcmdldC50aW1lb3V0SWQpO1xuXG4gICAgICAgICAgICAvLyAgaWYgY2xvc2UgYW5pbWF0aW9uIGhhcyBzdGFydGVkIGZpbmlzaCBpdCwgb3IgY2xvc2UgdGhlIHRvb2x0aXAgd2l0aCBubyBhbmltYXRpb25cbiAgICAgICAgICAgIHRoaXMudGFyZ2V0LmZvcmNlQ2xvc2UodGhpcy5tZXJnZWRPdmVybGF5U2V0dGluZ3MpO1xuICAgICAgICAgICAgdGhpcy50YXJnZXQudG9CZUhpZGRlbiA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIFJldHVybiB0cnVlIGlmIHRoZSBleGVjdXRpb24gaW4gb25Nb3VzZUxlYXZlIHNob3VsZCBiZSB0ZXJtaW5hdGVkIGFmdGVyIHRoaXMgbWV0aG9kXG4gICAgcHJpdmF0ZSBwcmVNb3VzZUxlYXZlQ2hlY2soKTogYm9vbGVhbiB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRhcmdldC50aW1lb3V0SWQpO1xuXG4gICAgICAgIC8vIElmIHRvb2x0aXAgaXMgYWJvdXQgdG8gYmUgb3BlbmVkXG4gICAgICAgIGlmICh0aGlzLnRhcmdldC50b0JlU2hvd24pIHtcbiAgICAgICAgICAgIHRoaXMudGFyZ2V0LnRvQmVTaG93biA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy50YXJnZXQudG9CZUhpZGRlbiA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuIl19
|
|
@@ -15,7 +15,7 @@ let NEXT_ID = 0;
|
|
|
15
15
|
*
|
|
16
16
|
* Example:
|
|
17
17
|
* ```html
|
|
18
|
-
* <button [igxTooltipTarget]="tooltipRef">Hover me</button>
|
|
18
|
+
* <button type="button" igxButton [igxTooltipTarget]="tooltipRef">Hover me</button>
|
|
19
19
|
* <span #tooltipRef="tooltip" igxTooltip>Hello there, I am a tooltip!</span>
|
|
20
20
|
* ```
|
|
21
21
|
*/
|
|
@@ -140,4 +140,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
140
140
|
type: HostBinding,
|
|
141
141
|
args: ['attr.role']
|
|
142
142
|
}] } });
|
|
143
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZGlyZWN0aXZlcy90b29sdGlwL3Rvb2x0aXAuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQWMsS0FBSyxFQUFxQixRQUFRLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFDakYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHbkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7QUFFaEUsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO0FBQ2hCOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFLSCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsa0JBQWtCO0lBQ3ZEOztPQUVHO0lBQ0gsSUFDb0IsV0FBVztRQUMzQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFDb0IsWUFBWTtRQUM1QixPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMzQixDQUFDO0lBZ0NEOzs7Ozs7T0FNRztJQUNILElBQ1csSUFBSTtRQUNYLE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7SUFtQkQsY0FBYztJQUNkLFlBQ0ksVUFBc0IsRUFDdEIsR0FBc0IsRUFDSyxjQUFpQyxFQUNoRCxpQkFBdUM7UUFDbkQsdUZBQXVGO1FBQ3ZGLEtBQUssQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLGNBQWMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBaEQ5RDs7Ozs7OztXQU9HO1FBR2EsT0FBRSxHQUFHLGVBQWUsT0FBTyxFQUFFLEVBQUUsQ0FBQztRQW1CaEQ7OztXQUdHO1FBQ0ksZUFBVSxHQUFHLEtBQUssQ0FBQztRQUUxQjs7O1dBR0c7UUFDSSxjQUFTLEdBQUcsS0FBSyxDQUFDO0lBVXpCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNPLFNBQVMsQ0FBQyxlQUFpQztRQUNqRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDakUsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ2pFLElBQUksZ0JBQWdCLEVBQUU7WUFDbEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1NBQ25DO2FBQU0sSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ3ZCLE1BQU0sU0FBUyxHQUFHLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDO1lBQzFFLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztZQUMvRCxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzNCLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQztTQUN2RTtJQUNMLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNPLFVBQVUsQ0FBQyxlQUFpQztRQUNsRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDakUsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBRW5FLElBQUksaUJBQWlCLEVBQUU7WUFDbkIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO1NBQ3BDO2FBQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDeEIsTUFBTSxTQUFTLEdBQUcsZUFBZSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUM7WUFDM0UsZUFBZSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1lBQ2hFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNiLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsY0FBYyxHQUFHLFNBQVMsQ0FBQztTQUN4RTtJQUNMLENBQUM7O2dIQS9IUSxtQkFBbUIsNkVBZ0ZoQixpQkFBaUI7b0dBaEZwQixtQkFBbUI7MkZBQW5CLG1CQUFtQjtrQkFKL0IsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsU0FBUztvQkFDbkIsUUFBUSxFQUFFLGNBQWM7aUJBQzNCOzswQkFpRlEsTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUN4QixRQUFROzRDQTVFTyxXQUFXO3NCQUQ5QixXQUFXO3VCQUFDLDJCQUEyQjtnQkFTcEIsWUFBWTtzQkFEL0IsV0FBVzt1QkFBQyw0QkFBNEI7Z0JBcUJsQyxPQUFPO3NCQURiLEtBQUs7dUJBQUMsU0FBUztnQkFhQSxFQUFFO3NCQUZqQixXQUFXO3VCQUFDLFNBQVM7O3NCQUNyQixLQUFLO2dCQVdLLElBQUk7c0JBRGQsV0FBVzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBDaGFuZ2VEZXRlY3RvclJlZiwgT3B0aW9uYWwsIEhvc3RCaW5kaW5nLCBJbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJZ3hPdmVybGF5U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL292ZXJsYXkvb3ZlcmxheSc7XG5pbXBvcnQgeyBPdmVybGF5U2V0dGluZ3MgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wdWJsaWNfYXBpJztcbmltcG9ydCB7IElneE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9uYXZpZ2F0aW9uJztcbmltcG9ydCB7IElneFRvZ2dsZURpcmVjdGl2ZSB9IGZyb20gJy4uL3RvZ2dsZS90b2dnbGUuZGlyZWN0aXZlJztcblxubGV0IE5FWFRfSUQgPSAwO1xuLyoqXG4gKiAqKklnbml0ZSBVSSBmb3IgQW5ndWxhciBUb29sdGlwKiogLVxuICogW0RvY3VtZW50YXRpb25dKGh0dHBzOi8vd3d3LmluZnJhZ2lzdGljcy5jb20vcHJvZHVjdHMvaWduaXRlLXVpLWFuZ3VsYXIvYW5ndWxhci9jb21wb25lbnRzL3Rvb2x0aXApXG4gKlxuICogVGhlIElnbml0ZSBVSSBmb3IgQW5ndWxhciBUb29sdGlwIGRpcmVjdGl2ZSBpcyB1c2VkIHRvIG1hcmsgYW4gSFRNTCBlbGVtZW50IGluIHRoZSBtYXJrdXAgYXMgb25lIHRoYXQgc2hvdWxkIGJlaGF2ZSBhcyBhIHRvb2x0aXAuXG4gKiBUaGUgdG9vbHRpcCBpcyB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggdGhlIElnbml0ZSBVSSBmb3IgQW5ndWxhciBUb29sdGlwIFRhcmdldCBieSBhc3NpZ25pbmcgdGhlIGV4cG9ydGVkIHRvb2x0aXAgcmVmZXJlbmNlIHRvIHRoZVxuICogcmVzcGVjdGl2ZSB0YXJnZXQncyBzZWxlY3RvciBwcm9wZXJ0eS5cbiAqXG4gKiBFeGFtcGxlOlxuICogYGBgaHRtbFxuICogPGJ1dHRvbiBbaWd4VG9vbHRpcFRhcmdldF09XCJ0b29sdGlwUmVmXCI+SG92ZXIgbWU8L2J1dHRvbj5cbiAqIDxzcGFuICN0b29sdGlwUmVmPVwidG9vbHRpcFwiIGlneFRvb2x0aXA+SGVsbG8gdGhlcmUsIEkgYW0gYSB0b29sdGlwITwvc3Bhbj5cbiAqIGBgYFxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBleHBvcnRBczogJ3Rvb2x0aXAnLFxuICAgIHNlbGVjdG9yOiAnW2lneFRvb2x0aXBdJ1xufSlcbmV4cG9ydCBjbGFzcyBJZ3hUb29sdGlwRGlyZWN0aXZlIGV4dGVuZHMgSWd4VG9nZ2xlRGlyZWN0aXZlIHtcbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtdG9vbHRpcC0taGlkZGVuJylcbiAgICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IGhpZGRlbkNsYXNzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb2xsYXBzZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LXRvb2x0aXAtLWRlc2t0b3AnKVxuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgZGVmYXVsdENsYXNzKCkge1xuICAgICAgICByZXR1cm4gIXRoaXMuY29sbGFwc2VkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMvc2V0cyBhbnkgdG9vbHRpcCByZWxhdGVkIGRhdGEuXG4gICAgICogVGhlICdjb250ZXh0JyBjYW4gYmUgdXNlZCBmb3Igc3RvcmluZyBhbnkgaW5mb3JtYXRpb24gdGhhdCBpcyBuZWNlc3NhcnlcbiAgICAgKiB0byBhY2Nlc3Mgd2hlbiB3b3JraW5nIHdpdGggdGhlIHRvb2x0aXAuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogLy8gZ2V0XG4gICAgICogbGV0IHRvb2x0aXBDb250ZXh0ID0gdGhpcy50b29sdGlwLmNvbnRleHQ7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogLy8gc2V0XG4gICAgICogdGhpcy50b29sdGlwLmNvbnRleHQgPSBcIlRvb2x0aXAncyBjb250ZXh0XCI7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KCdjb250ZXh0JylcbiAgICBwdWJsaWMgY29udGV4dDtcblxuICAgIC8qKlxuICAgICAqIElkZW50aWZpZXIgZm9yIHRoZSB0b29sdGlwLlxuICAgICAqIElmIHRoaXMgaXMgcHJvcGVydHkgaXMgbm90IGV4cGxpY2l0bHkgc2V0LCBpdCB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkLlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCB0b29sdGlwSWQgPSB0aGlzLnRvb2x0aXAuaWQ7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmlkJylcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBvdmVycmlkZSBpZCA9IGBpZ3gtdG9vbHRpcC0ke05FWFRfSUQrK31gO1xuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSByb2xlIGF0dHJpYnV0ZSBvZiB0aGUgdG9vbHRpcC5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgdG9vbHRpcFJvbGUgPSB0aGlzLnRvb2x0aXAucm9sZTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIucm9sZScpXG4gICAgcHVibGljIGdldCByb2xlKCkge1xuICAgICAgICByZXR1cm4gJ3Rvb2x0aXAnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgdGltZW91dElkO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFJldHVybnMgd2hldGhlciBjbG9zZSB0aW1lIG91dCBoYXMgc3RhcnRlZFxuICAgICAqL1xuICAgIHB1YmxpYyB0b0JlSGlkZGVuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogUmV0dXJucyB3aGV0aGVyIG9wZW4gdGltZSBvdXQgaGFzIHN0YXJ0ZWRcbiAgICAgKi9cbiAgICBwdWJsaWMgdG9CZVNob3duID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBASW5qZWN0KElneE92ZXJsYXlTZXJ2aWNlKSBvdmVybGF5U2VydmljZTogSWd4T3ZlcmxheVNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIG5hdmlnYXRpb25TZXJ2aWNlOiBJZ3hOYXZpZ2F0aW9uU2VydmljZSkge1xuICAgICAgICAvLyBELlAuIGNvbnN0cnVjdG9yIGR1cGxpY2F0aW9uIGR1ZSB0byBlczYgY29tcGlsYXRpb24sIG1pZ2h0IGJlIG9ic29sZXRlIGluIHRoZSBmdXR1cmVcbiAgICAgICAgc3VwZXIoZWxlbWVudFJlZiwgY2RyLCBvdmVybGF5U2VydmljZSwgbmF2aWdhdGlvblNlcnZpY2UpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIElmIHRoZXJlIGlzIG9wZW4gYW5pbWF0aW9uIGluIHByb2dyZXNzIHRoaXMgbWV0aG9kIHdpbGwgZmluaXNoIGlzLlxuICAgICAqIElmIHRoZXJlIGlzIG5vIG9wZW4gYW5pbWF0aW9uIGluIHByb2dyZXNzIHRoaXMgbWV0aG9kIHdpbGwgb3BlbiB0aGUgdG9nZ2xlIHdpdGggbm8gYW5pbWF0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIG92ZXJsYXlTZXR0aW5ncyBzZXR0aW5nIHRvIHVzZSBmb3Igb3BlbmluZyB0aGUgdG9nZ2xlXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGZvcmNlT3BlbihvdmVybGF5U2V0dGluZ3M/OiBPdmVybGF5U2V0dGluZ3MpIHtcbiAgICAgICAgY29uc3QgaW5mbyA9IHRoaXMub3ZlcmxheVNlcnZpY2UuZ2V0T3ZlcmxheUJ5SWQodGhpcy5fb3ZlcmxheUlkKTtcbiAgICAgICAgY29uc3QgaGFzT3BlbkFuaW1hdGlvbiA9IGluZm8gPyBpbmZvLm9wZW5BbmltYXRpb25QbGF5ZXIgOiBmYWxzZTtcbiAgICAgICAgaWYgKGhhc09wZW5BbmltYXRpb24pIHtcbiAgICAgICAgICAgIGluZm8ub3BlbkFuaW1hdGlvblBsYXllci5maW5pc2goKTtcbiAgICAgICAgICAgIGluZm8ub3BlbkFuaW1hdGlvblBsYXllci5yZXNldCgpO1xuICAgICAgICAgICAgaW5mby5vcGVuQW5pbWF0aW9uUGxheWVyID0gbnVsbDtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNvbGxhcHNlZCkge1xuICAgICAgICAgICAgY29uc3QgYW5pbWF0aW9uID0gb3ZlcmxheVNldHRpbmdzLnBvc2l0aW9uU3RyYXRlZ3kuc2V0dGluZ3Mub3BlbkFuaW1hdGlvbjtcbiAgICAgICAgICAgIG92ZXJsYXlTZXR0aW5ncy5wb3NpdGlvblN0cmF0ZWd5LnNldHRpbmdzLm9wZW5BbmltYXRpb24gPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5vcGVuKG92ZXJsYXlTZXR0aW5ncyk7XG4gICAgICAgICAgICBvdmVybGF5U2V0dGluZ3MucG9zaXRpb25TdHJhdGVneS5zZXR0aW5ncy5vcGVuQW5pbWF0aW9uID0gYW5pbWF0aW9uO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSWYgdGhlcmUgaXMgY2xvc2UgYW5pbWF0aW9uIGluIHByb2dyZXNzIHRoaXMgbWV0aG9kIHdpbGwgZmluaXNoIGlzLlxuICAgICAqIElmIHRoZXJlIGlzIG5vIGNsb3NlIGFuaW1hdGlvbiBpbiBwcm9ncmVzcyB0aGlzIG1ldGhvZCB3aWxsIGNsb3NlIHRoZSB0b2dnbGUgd2l0aCBubyBhbmltYXRpb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb3ZlcmxheVNldHRpbmdzIHNldHRpbmdzIHRvIHVzZSBmb3IgY2xvc2luZyB0aGUgdG9nZ2xlXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGZvcmNlQ2xvc2Uob3ZlcmxheVNldHRpbmdzPzogT3ZlcmxheVNldHRpbmdzKSB7XG4gICAgICAgIGNvbnN0IGluZm8gPSB0aGlzLm92ZXJsYXlTZXJ2aWNlLmdldE92ZXJsYXlCeUlkKHRoaXMuX292ZXJsYXlJZCk7XG4gICAgICAgIGNvbnN0IGhhc0Nsb3NlQW5pbWF0aW9uID0gaW5mbyA/IGluZm8uY2xvc2VBbmltYXRpb25QbGF5ZXIgOiBmYWxzZTtcblxuICAgICAgICBpZiAoaGFzQ2xvc2VBbmltYXRpb24pIHtcbiAgICAgICAgICAgIGluZm8uY2xvc2VBbmltYXRpb25QbGF5ZXIuZmluaXNoKCk7XG4gICAgICAgICAgICBpbmZvLmNsb3NlQW5pbWF0aW9uUGxheWVyLnJlc2V0KCk7XG4gICAgICAgICAgICBpbmZvLmNsb3NlQW5pbWF0aW9uUGxheWVyID0gbnVsbDtcbiAgICAgICAgfSBlbHNlIGlmICghdGhpcy5jb2xsYXBzZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGFuaW1hdGlvbiA9IG92ZXJsYXlTZXR0aW5ncy5wb3NpdGlvblN0cmF0ZWd5LnNldHRpbmdzLmNsb3NlQW5pbWF0aW9uO1xuICAgICAgICAgICAgb3ZlcmxheVNldHRpbmdzLnBvc2l0aW9uU3RyYXRlZ3kuc2V0dGluZ3MuY2xvc2VBbmltYXRpb24gPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICAgICAgb3ZlcmxheVNldHRpbmdzLnBvc2l0aW9uU3RyYXRlZ3kuc2V0dGluZ3MuY2xvc2VBbmltYXRpb24gPSBhbmltYXRpb247XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
143
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZGlyZWN0aXZlcy90b29sdGlwL3Rvb2x0aXAuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQWMsS0FBSyxFQUFxQixRQUFRLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFDakYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHbkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7QUFFaEUsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO0FBQ2hCOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFLSCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsa0JBQWtCO0lBQ3ZEOztPQUVHO0lBQ0gsSUFDb0IsV0FBVztRQUMzQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFDb0IsWUFBWTtRQUM1QixPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMzQixDQUFDO0lBZ0NEOzs7Ozs7T0FNRztJQUNILElBQ1csSUFBSTtRQUNYLE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7SUFtQkQsY0FBYztJQUNkLFlBQ0ksVUFBc0IsRUFDdEIsR0FBc0IsRUFDSyxjQUFpQyxFQUNoRCxpQkFBdUM7UUFDbkQsdUZBQXVGO1FBQ3ZGLEtBQUssQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLGNBQWMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBaEQ5RDs7Ozs7OztXQU9HO1FBR2EsT0FBRSxHQUFHLGVBQWUsT0FBTyxFQUFFLEVBQUUsQ0FBQztRQW1CaEQ7OztXQUdHO1FBQ0ksZUFBVSxHQUFHLEtBQUssQ0FBQztRQUUxQjs7O1dBR0c7UUFDSSxjQUFTLEdBQUcsS0FBSyxDQUFDO0lBVXpCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNPLFNBQVMsQ0FBQyxlQUFpQztRQUNqRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDakUsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ2pFLElBQUksZ0JBQWdCLEVBQUU7WUFDbEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1NBQ25DO2FBQU0sSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ3ZCLE1BQU0sU0FBUyxHQUFHLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDO1lBQzFFLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztZQUMvRCxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzNCLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQztTQUN2RTtJQUNMLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNPLFVBQVUsQ0FBQyxlQUFpQztRQUNsRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDakUsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBRW5FLElBQUksaUJBQWlCLEVBQUU7WUFDbkIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO1NBQ3BDO2FBQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDeEIsTUFBTSxTQUFTLEdBQUcsZUFBZSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUM7WUFDM0UsZUFBZSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1lBQ2hFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNiLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsY0FBYyxHQUFHLFNBQVMsQ0FBQztTQUN4RTtJQUNMLENBQUM7O2dIQS9IUSxtQkFBbUIsNkVBZ0ZoQixpQkFBaUI7b0dBaEZwQixtQkFBbUI7MkZBQW5CLG1CQUFtQjtrQkFKL0IsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsU0FBUztvQkFDbkIsUUFBUSxFQUFFLGNBQWM7aUJBQzNCOzswQkFpRlEsTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUN4QixRQUFROzRDQTVFTyxXQUFXO3NCQUQ5QixXQUFXO3VCQUFDLDJCQUEyQjtnQkFTcEIsWUFBWTtzQkFEL0IsV0FBVzt1QkFBQyw0QkFBNEI7Z0JBcUJsQyxPQUFPO3NCQURiLEtBQUs7dUJBQUMsU0FBUztnQkFhQSxFQUFFO3NCQUZqQixXQUFXO3VCQUFDLFNBQVM7O3NCQUNyQixLQUFLO2dCQVdLLElBQUk7c0JBRGQsV0FBVzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBDaGFuZ2VEZXRlY3RvclJlZiwgT3B0aW9uYWwsIEhvc3RCaW5kaW5nLCBJbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJZ3hPdmVybGF5U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL292ZXJsYXkvb3ZlcmxheSc7XG5pbXBvcnQgeyBPdmVybGF5U2V0dGluZ3MgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wdWJsaWNfYXBpJztcbmltcG9ydCB7IElneE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9uYXZpZ2F0aW9uJztcbmltcG9ydCB7IElneFRvZ2dsZURpcmVjdGl2ZSB9IGZyb20gJy4uL3RvZ2dsZS90b2dnbGUuZGlyZWN0aXZlJztcblxubGV0IE5FWFRfSUQgPSAwO1xuLyoqXG4gKiAqKklnbml0ZSBVSSBmb3IgQW5ndWxhciBUb29sdGlwKiogLVxuICogW0RvY3VtZW50YXRpb25dKGh0dHBzOi8vd3d3LmluZnJhZ2lzdGljcy5jb20vcHJvZHVjdHMvaWduaXRlLXVpLWFuZ3VsYXIvYW5ndWxhci9jb21wb25lbnRzL3Rvb2x0aXApXG4gKlxuICogVGhlIElnbml0ZSBVSSBmb3IgQW5ndWxhciBUb29sdGlwIGRpcmVjdGl2ZSBpcyB1c2VkIHRvIG1hcmsgYW4gSFRNTCBlbGVtZW50IGluIHRoZSBtYXJrdXAgYXMgb25lIHRoYXQgc2hvdWxkIGJlaGF2ZSBhcyBhIHRvb2x0aXAuXG4gKiBUaGUgdG9vbHRpcCBpcyB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggdGhlIElnbml0ZSBVSSBmb3IgQW5ndWxhciBUb29sdGlwIFRhcmdldCBieSBhc3NpZ25pbmcgdGhlIGV4cG9ydGVkIHRvb2x0aXAgcmVmZXJlbmNlIHRvIHRoZVxuICogcmVzcGVjdGl2ZSB0YXJnZXQncyBzZWxlY3RvciBwcm9wZXJ0eS5cbiAqXG4gKiBFeGFtcGxlOlxuICogYGBgaHRtbFxuICogPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWd4QnV0dG9uIFtpZ3hUb29sdGlwVGFyZ2V0XT1cInRvb2x0aXBSZWZcIj5Ib3ZlciBtZTwvYnV0dG9uPlxuICogPHNwYW4gI3Rvb2x0aXBSZWY9XCJ0b29sdGlwXCIgaWd4VG9vbHRpcD5IZWxsbyB0aGVyZSwgSSBhbSBhIHRvb2x0aXAhPC9zcGFuPlxuICogYGBgXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIGV4cG9ydEFzOiAndG9vbHRpcCcsXG4gICAgc2VsZWN0b3I6ICdbaWd4VG9vbHRpcF0nXG59KVxuZXhwb3J0IGNsYXNzIElneFRvb2x0aXBEaXJlY3RpdmUgZXh0ZW5kcyBJZ3hUb2dnbGVEaXJlY3RpdmUge1xuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC10b29sdGlwLS1oaWRkZW4nKVxuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgaGlkZGVuQ2xhc3MoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbGxhcHNlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtdG9vbHRpcC0tZGVza3RvcCcpXG4gICAgcHVibGljIG92ZXJyaWRlIGdldCBkZWZhdWx0Q2xhc3MoKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy5jb2xsYXBzZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cy9zZXRzIGFueSB0b29sdGlwIHJlbGF0ZWQgZGF0YS5cbiAgICAgKiBUaGUgJ2NvbnRleHQnIGNhbiBiZSB1c2VkIGZvciBzdG9yaW5nIGFueSBpbmZvcm1hdGlvbiB0aGF0IGlzIG5lY2Vzc2FyeVxuICAgICAqIHRvIGFjY2VzcyB3aGVuIHdvcmtpbmcgd2l0aCB0aGUgdG9vbHRpcC5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBnZXRcbiAgICAgKiBsZXQgdG9vbHRpcENvbnRleHQgPSB0aGlzLnRvb2x0aXAuY29udGV4dDtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBzZXRcbiAgICAgKiB0aGlzLnRvb2x0aXAuY29udGV4dCA9IFwiVG9vbHRpcCdzIGNvbnRleHRcIjtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoJ2NvbnRleHQnKVxuICAgIHB1YmxpYyBjb250ZXh0O1xuXG4gICAgLyoqXG4gICAgICogSWRlbnRpZmllciBmb3IgdGhlIHRvb2x0aXAuXG4gICAgICogSWYgdGhpcyBpcyBwcm9wZXJ0eSBpcyBub3QgZXhwbGljaXRseSBzZXQsIGl0IHdpbGwgYmUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IHRvb2x0aXBJZCA9IHRoaXMudG9vbHRpcC5pZDtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuaWQnKVxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG92ZXJyaWRlIGlkID0gYGlneC10b29sdGlwLSR7TkVYVF9JRCsrfWA7XG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIHJvbGUgYXR0cmlidXRlIG9mIHRoZSB0b29sdGlwLlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCB0b29sdGlwUm9sZSA9IHRoaXMudG9vbHRpcC5yb2xlO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5yb2xlJylcbiAgICBwdWJsaWMgZ2V0IHJvbGUoKSB7XG4gICAgICAgIHJldHVybiAndG9vbHRpcCc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyB0aW1lb3V0SWQ7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogUmV0dXJucyB3aGV0aGVyIGNsb3NlIHRpbWUgb3V0IGhhcyBzdGFydGVkXG4gICAgICovXG4gICAgcHVibGljIHRvQmVIaWRkZW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgb3BlbiB0aW1lIG91dCBoYXMgc3RhcnRlZFxuICAgICAqL1xuICAgIHB1YmxpYyB0b0JlU2hvd24gPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBJbmplY3QoSWd4T3ZlcmxheVNlcnZpY2UpIG92ZXJsYXlTZXJ2aWNlOiBJZ3hPdmVybGF5U2VydmljZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgbmF2aWdhdGlvblNlcnZpY2U6IElneE5hdmlnYXRpb25TZXJ2aWNlKSB7XG4gICAgICAgIC8vIEQuUC4gY29uc3RydWN0b3IgZHVwbGljYXRpb24gZHVlIHRvIGVzNiBjb21waWxhdGlvbiwgbWlnaHQgYmUgb2Jzb2xldGUgaW4gdGhlIGZ1dHVyZVxuICAgICAgICBzdXBlcihlbGVtZW50UmVmLCBjZHIsIG92ZXJsYXlTZXJ2aWNlLCBuYXZpZ2F0aW9uU2VydmljZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSWYgdGhlcmUgaXMgb3BlbiBhbmltYXRpb24gaW4gcHJvZ3Jlc3MgdGhpcyBtZXRob2Qgd2lsbCBmaW5pc2ggaXMuXG4gICAgICogSWYgdGhlcmUgaXMgbm8gb3BlbiBhbmltYXRpb24gaW4gcHJvZ3Jlc3MgdGhpcyBtZXRob2Qgd2lsbCBvcGVuIHRoZSB0b2dnbGUgd2l0aCBubyBhbmltYXRpb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb3ZlcmxheVNldHRpbmdzIHNldHRpbmcgdG8gdXNlIGZvciBvcGVuaW5nIHRoZSB0b2dnbGVcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZm9yY2VPcGVuKG92ZXJsYXlTZXR0aW5ncz86IE92ZXJsYXlTZXR0aW5ncykge1xuICAgICAgICBjb25zdCBpbmZvID0gdGhpcy5vdmVybGF5U2VydmljZS5nZXRPdmVybGF5QnlJZCh0aGlzLl9vdmVybGF5SWQpO1xuICAgICAgICBjb25zdCBoYXNPcGVuQW5pbWF0aW9uID0gaW5mbyA/IGluZm8ub3BlbkFuaW1hdGlvblBsYXllciA6IGZhbHNlO1xuICAgICAgICBpZiAoaGFzT3BlbkFuaW1hdGlvbikge1xuICAgICAgICAgICAgaW5mby5vcGVuQW5pbWF0aW9uUGxheWVyLmZpbmlzaCgpO1xuICAgICAgICAgICAgaW5mby5vcGVuQW5pbWF0aW9uUGxheWVyLnJlc2V0KCk7XG4gICAgICAgICAgICBpbmZvLm9wZW5BbmltYXRpb25QbGF5ZXIgPSBudWxsO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY29sbGFwc2VkKSB7XG4gICAgICAgICAgICBjb25zdCBhbmltYXRpb24gPSBvdmVybGF5U2V0dGluZ3MucG9zaXRpb25TdHJhdGVneS5zZXR0aW5ncy5vcGVuQW5pbWF0aW9uO1xuICAgICAgICAgICAgb3ZlcmxheVNldHRpbmdzLnBvc2l0aW9uU3RyYXRlZ3kuc2V0dGluZ3Mub3BlbkFuaW1hdGlvbiA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLm9wZW4ob3ZlcmxheVNldHRpbmdzKTtcbiAgICAgICAgICAgIG92ZXJsYXlTZXR0aW5ncy5wb3NpdGlvblN0cmF0ZWd5LnNldHRpbmdzLm9wZW5BbmltYXRpb24gPSBhbmltYXRpb247XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJZiB0aGVyZSBpcyBjbG9zZSBhbmltYXRpb24gaW4gcHJvZ3Jlc3MgdGhpcyBtZXRob2Qgd2lsbCBmaW5pc2ggaXMuXG4gICAgICogSWYgdGhlcmUgaXMgbm8gY2xvc2UgYW5pbWF0aW9uIGluIHByb2dyZXNzIHRoaXMgbWV0aG9kIHdpbGwgY2xvc2UgdGhlIHRvZ2dsZSB3aXRoIG5vIGFuaW1hdGlvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvdmVybGF5U2V0dGluZ3Mgc2V0dGluZ3MgdG8gdXNlIGZvciBjbG9zaW5nIHRoZSB0b2dnbGVcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZm9yY2VDbG9zZShvdmVybGF5U2V0dGluZ3M/OiBPdmVybGF5U2V0dGluZ3MpIHtcbiAgICAgICAgY29uc3QgaW5mbyA9IHRoaXMub3ZlcmxheVNlcnZpY2UuZ2V0T3ZlcmxheUJ5SWQodGhpcy5fb3ZlcmxheUlkKTtcbiAgICAgICAgY29uc3QgaGFzQ2xvc2VBbmltYXRpb24gPSBpbmZvID8gaW5mby5jbG9zZUFuaW1hdGlvblBsYXllciA6IGZhbHNlO1xuXG4gICAgICAgIGlmIChoYXNDbG9zZUFuaW1hdGlvbikge1xuICAgICAgICAgICAgaW5mby5jbG9zZUFuaW1hdGlvblBsYXllci5maW5pc2goKTtcbiAgICAgICAgICAgIGluZm8uY2xvc2VBbmltYXRpb25QbGF5ZXIucmVzZXQoKTtcbiAgICAgICAgICAgIGluZm8uY2xvc2VBbmltYXRpb25QbGF5ZXIgPSBudWxsO1xuICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLmNvbGxhcHNlZCkge1xuICAgICAgICAgICAgY29uc3QgYW5pbWF0aW9uID0gb3ZlcmxheVNldHRpbmdzLnBvc2l0aW9uU3RyYXRlZ3kuc2V0dGluZ3MuY2xvc2VBbmltYXRpb247XG4gICAgICAgICAgICBvdmVybGF5U2V0dGluZ3MucG9zaXRpb25TdHJhdGVneS5zZXR0aW5ncy5jbG9zZUFuaW1hdGlvbiA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgICAgICBvdmVybGF5U2V0dGluZ3MucG9zaXRpb25TdHJhdGVneS5zZXR0aW5ncy5jbG9zZUFuaW1hdGlvbiA9IGFuaW1hdGlvbjtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
@@ -522,10 +522,10 @@ export class IgxDropDownComponent extends IgxDropDownBaseDirective {
|
|
|
522
522
|
}
|
|
523
523
|
}
|
|
524
524
|
IgxDropDownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: IgxDropDownComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.IgxSelectionAPIService }, { token: DisplayDensityToken, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
525
|
-
IgxDropDownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: IgxDropDownComponent, selector: "igx-drop-down", inputs: { allowItemsFocus: "allowItemsFocus", labelledBy: "labelledBy" }, outputs: { opening: "opening", opened: "opened", closing: "closing", closed: "closed" }, providers: [{ provide: IGX_DROPDOWN_BASE, useExisting: IgxDropDownComponent }], queries: [{ propertyName: "virtDir", first: true, predicate: IgxForOfDirective, descendants: true, read: IgxForOfDirective }, { propertyName: "children", predicate: i0.forwardRef(function () { return IgxDropDownItemComponent; }), descendants: true }], viewQueries: [{ propertyName: "toggleDirective", first: true, predicate: IgxToggleDirective, descendants: true, static: true }, { propertyName: "scrollContainerRef", first: true, predicate: ["scrollContainer"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"igx-drop-down__list\" [style.width]=\"width\"\
|
|
525
|
+
IgxDropDownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: IgxDropDownComponent, selector: "igx-drop-down", inputs: { allowItemsFocus: "allowItemsFocus", labelledBy: "labelledBy" }, outputs: { opening: "opening", opened: "opened", closing: "closing", closed: "closed" }, providers: [{ provide: IGX_DROPDOWN_BASE, useExisting: IgxDropDownComponent }], queries: [{ propertyName: "virtDir", first: true, predicate: IgxForOfDirective, descendants: true, read: IgxForOfDirective }, { propertyName: "children", predicate: i0.forwardRef(function () { return IgxDropDownItemComponent; }), descendants: true }], viewQueries: [{ propertyName: "toggleDirective", first: true, predicate: IgxToggleDirective, descendants: true, static: true }, { propertyName: "scrollContainerRef", first: true, predicate: ["scrollContainer"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"igx-drop-down__list\" [style.width]=\"width\"\n igxToggle\n (appended)=\"onToggleContentAppended($event)\"\n (opening)=\"onToggleOpening($event)\" (opened)=\"onToggleOpened()\"\n (closing)=\"onToggleClosing($event)\" (closed)=\"onToggleClosed()\">\n <div class=\"igx-drop-down__list-scroll\" #scrollContainer [attr.id]=\"listId\" role=\"listbox\" [attr.aria-labelledby]=\"labelledBy\"\n [style.height]=\"height\"\n [style.maxHeight]=\"maxHeight\">\n <ng-container *ngIf=\"!collapsed\">\n <ng-content></ng-content>\n </ng-container>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.IgxToggleDirective, selector: "[igxToggle]", inputs: ["id"], outputs: ["opened", "opening", "closed", "closing", "appended"], exportAs: ["toggle"] }] });
|
|
526
526
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: IgxDropDownComponent, decorators: [{
|
|
527
527
|
type: Component,
|
|
528
|
-
args: [{ selector: 'igx-drop-down', providers: [{ provide: IGX_DROPDOWN_BASE, useExisting: IgxDropDownComponent }], template: "<div class=\"igx-drop-down__list\" [style.width]=\"width\"\
|
|
528
|
+
args: [{ selector: 'igx-drop-down', providers: [{ provide: IGX_DROPDOWN_BASE, useExisting: IgxDropDownComponent }], template: "<div class=\"igx-drop-down__list\" [style.width]=\"width\"\n igxToggle\n (appended)=\"onToggleContentAppended($event)\"\n (opening)=\"onToggleOpening($event)\" (opened)=\"onToggleOpened()\"\n (closing)=\"onToggleClosing($event)\" (closed)=\"onToggleClosed()\">\n <div class=\"igx-drop-down__list-scroll\" #scrollContainer [attr.id]=\"listId\" role=\"listbox\" [attr.aria-labelledby]=\"labelledBy\"\n [style.height]=\"height\"\n [style.maxHeight]=\"maxHeight\">\n <ng-container *ngIf=\"!collapsed\">\n <ng-content></ng-content>\n </ng-container>\n </div>\n</div>\n" }]
|
|
529
529
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.IgxSelectionAPIService }, { type: undefined, decorators: [{
|
|
530
530
|
type: Optional
|
|
531
531
|
}, {
|
|
@@ -556,4 +556,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
556
556
|
type: ViewChild,
|
|
557
557
|
args: ['scrollContainer', { static: true }]
|
|
558
558
|
}] } });
|
|
559
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcC1kb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9kcm9wLWRvd24vZHJvcC1kb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9kcm9wLWRvd24vZHJvcC1kb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxTQUFTLEVBQ1QsZUFBZSxFQUVmLFVBQVUsRUFHVixLQUFLLEVBRUwsU0FBUyxFQUNULFlBQVksRUFFWixNQUFNLEVBQ04sWUFBWSxFQUNaLFFBQVEsRUFDUixNQUFNLEVBRVQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUF1QixNQUFNLHVDQUF1QyxDQUFDO0FBQ2hHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVELE9BQU8sRUFBcUIsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDakUsT0FBTyxFQUFFLGlCQUFpQixFQUFpQixNQUFNLG9CQUFvQixDQUFDO0FBSXRFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDMUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxtQkFBbUIsRUFBMEIsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7QUFHOUU7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBTUgsTUFBTSxPQUFPLG9CQUFxQixTQUFRLHdC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b3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBmb3J3YXJkUmVmLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBPbkNoYW5nZXMsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIFZpZXdDaGlsZCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIE9wdGlvbmFsLFxuICAgIEluamVjdCxcbiAgICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSWd4VG9nZ2xlRGlyZWN0aXZlLCBUb2dnbGVWaWV3RXZlbnRBcmdzIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy90b2dnbGUvdG9nZ2xlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJZ3hEcm9wRG93bkl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2Ryb3AtZG93bi1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hEcm9wRG93bkJhc2VEaXJlY3RpdmUgfSBmcm9tICcuL2Ryb3AtZG93bi5iYXNlJztcbmltcG9ydCB7IERyb3BEb3duQWN0aW9uS2V5LCBOYXZpZ2F0ZSB9IGZyb20gJy4vZHJvcC1kb3duLmNvbW1vbic7XG5pbXBvcnQgeyBJR1hfRFJPUERPV05fQkFTRSwgSURyb3BEb3duQmFzZSB9IGZyb20gJy4vZHJvcC1kb3duLmNvbW1vbic7XG5pbXBvcnQgeyBJU2VsZWN0aW9uRXZlbnRBcmdzIH0gZnJvbSAnLi9kcm9wLWRvd24uY29tbW9uJztcbmltcG9ydCB7IElCYXNlQ2FuY2VsYWJsZUJyb3dzZXJFdmVudEFyZ3MsIElCYXNlRXZlbnRBcmdzIH0gZnJvbSAnLi4vY29yZS91dGlscyc7XG5pbXBvcnQgeyBJZ3hTZWxlY3Rpb25BUElTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS9zZWxlY3Rpb24nO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSWd4RHJvcERvd25JdGVtQmFzZURpcmVjdGl2ZSB9IGZyb20gJy4vZHJvcC1kb3duLWl0ZW0uYmFzZSc7XG5pbXBvcnQgeyBJZ3hGb3JPZkRpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvZm9yLW9mL2Zvcl9vZi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IERpc3BsYXlEZW5zaXR5VG9rZW4sIElEaXNwbGF5RGVuc2l0eU9wdGlvbnMgfSBmcm9tICcuLi9jb3JlL2RlbnNpdHknO1xuaW1wb3J0IHsgT3ZlcmxheVNldHRpbmdzIH0gZnJvbSAnLi4vc2VydmljZXMvb3ZlcmxheS91dGlsaXRpZXMnO1xuXG4vKipcbiAqICoqSWduaXRlIFVJIGZvciBBbmd1bGFyIERyb3BEb3duKiogLVxuICogW0RvY3VtZW50YXRpb25dKGh0dHBzOi8vd3d3LmluZnJhZ2lzdGljcy5jb20vcHJvZHVjdHMvaWduaXRlLXVpLWFuZ3VsYXIvYW5ndWxhci9jb21wb25lbnRzL2Ryb3AtZG93bilcbiAqXG4gKiBUaGUgSWduaXRlIFVJIGZvciBBbmd1bGFyIERyb3AgRG93biBkaXNwbGF5cyBhIHNjcm9sbGFibGUgbGlzdCBvZiBpdGVtcyB3aGljaCBtYXkgYmUgdmlzdWFsbHkgZ3JvdXBlZCBhbmRcbiAqIHN1cHBvcnRzIHNlbGVjdGlvbiBvZiBhIHNpbmdsZSBpdGVtLiBDbGlja2luZyBvciB0YXBwaW5nIGFuIGl0ZW0gc2VsZWN0cyBpdCBhbmQgY2xvc2VzIHRoZSBEcm9wIERvd25cbiAqXG4gKiBFeGFtcGxlOlxuICogYGBgaHRtbFxuICogPGlneC1kcm9wLWRvd24+XG4gKiAgIDxpZ3gtZHJvcC1kb3duLWl0ZW0gKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXNcIiBkaXNhYmxlZD17e2l0ZW0uZGlzYWJsZWR9fSBpc0hlYWRlcj17e2l0ZW0uaGVhZGVyfX0+XG4gKiAgICAge3sgaXRlbS52YWx1ZSB9fVxuICogICA8L2lneC1kcm9wLWRvd24taXRlbT5cbiAqIDwvaWd4LWRyb3AtZG93bj5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2lneC1kcm9wLWRvd24nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kcm9wLWRvd24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogSUdYX0RST1BET1dOX0JBU0UsIHVzZUV4aXN0aW5nOiBJZ3hEcm9wRG93bkNvbXBvbmVudCB9XVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hEcm9wRG93bkNvbXBvbmVudCBleHRlbmRzIElneERyb3BEb3duQmFzZURpcmVjdGl2ZSBpbXBsZW1lbnRzIElEcm9wRG93bkJhc2UsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IElneERyb3BEb3duSXRlbUNvbXBvbmVudCksIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgICBwdWJsaWMgb3ZlcnJpZGUgY2hpbGRyZW46IFF1ZXJ5TGlzdDxJZ3hEcm9wRG93bkl0ZW1CYXNlRGlyZWN0aXZlPjtcblxuICAgIC8qKlxuICAgICAqIEVtaXR0ZWQgYmVmb3JlIHRoZSBkcm9wZG93biBpcyBvcGVuZWRcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWRyb3AtZG93biAob3BlbmluZyk9J2hhbmRsZU9wZW5pbmcoJGV2ZW50KSc+PC9pZ3gtZHJvcC1kb3duPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBvcGVuaW5nID0gbmV3IEV2ZW50RW1pdHRlcjxJQmFzZUNhbmNlbGFibGVCcm93c2VyRXZlbnRBcmdzPigpO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHRlZCBhZnRlciB0aGUgZHJvcGRvd24gaXMgb3BlbmVkXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kcm9wLWRvd24gKG9wZW5lZCk9J2hhbmRsZU9wZW5lZCgkZXZlbnQpJz48L2lneC1kcm9wLWRvd24+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG9wZW5lZCA9IG5ldyBFdmVudEVtaXR0ZXI8SUJhc2VFdmVudEFyZ3M+KCk7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0dGVkIGJlZm9yZSB0aGUgZHJvcGRvd24gaXMgY2xvc2VkXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kcm9wLWRvd24gKGNsb3NpbmcpPSdoYW5kbGVDbG9zaW5nKCRldmVudCknPjwvaWd4LWRyb3AtZG93bj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgY2xvc2luZyA9IG5ldyBFdmVudEVtaXR0ZXI8SUJhc2VDYW5jZWxhYmxlQnJvd3NlckV2ZW50QXJncz4oKTtcblxuICAgIC8qKlxuICAgICAqIEVtaXR0ZWQgYWZ0ZXIgdGhlIGRyb3Bkb3duIGlzIGNsb3NlZFxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZHJvcC1kb3duIChjbG9zZWQpPSdoYW5kbGVDbG9zZWQoJGV2ZW50KSc+PC9pZ3gtZHJvcC1kb3duPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjbG9zZWQgPSBuZXcgRXZlbnRFbWl0dGVyPElCYXNlRXZlbnRBcmdzPigpO1xuXG4gICAgLyoqXG4gICAgICogR2V0cy9zZXRzIHdoZXRoZXIgaXRlbXMgdGFrZSBmb2N1cy4gRGlzYWJsZWQgYnkgZGVmYXVsdC5cbiAgICAgKiBXaGVuIGVuYWJsZWQsIGRyb3AgZG93biBpdGVtcyBnYWluIHRhYiBpbmRleCBhbmQgYXJlIGZvY3VzZWQgd2hlbiBhY3RpdmUgLVxuICAgICAqIHRoaXMgaW5jbHVkZXMgYWN0aXZhdGluZyB0aGUgc2VsZWN0ZWQgaXRlbSB3aGVuIG9wZW5pbmcgdGhlIGRyb3AgZG93biBhbmQgbW92aW5nIHdpdGgga2V5Ym9hcmQgbmF2aWdhdGlvbi5cbiAgICAgKlxuICAgICAqIE5vdGU6IEtlZXAgdGhhdCBmb2N1cyBzaGlmdCBpbiBtaW5kIHdoZW4gdXNpbmcgdGhlIGlneERyb3BEb3duSXRlbU5hdmlnYXRpb24gZGlyZWN0aXZlXG4gICAgICogYW5kIGVuc3VyZSBpdCdzIHBsYWNlZCBlaXRoZXIgb24gZWFjaCBmb2N1c2FibGUgaXRlbSBvciBhIGNvbW1vbiBhbmNlc3RvciB0byBhbGxvdyBpdCB0byBoYW5kbGUga2V5Ym9hcmQgZXZlbnRzLlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIC8vIGdldFxuICAgICAqIGxldCBkcm9wRG93bkFsbG93c0l0ZW1Gb2N1cyA9IHRoaXMuZHJvcGRvd24uYWxsb3dJdGVtc0ZvY3VzO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDwhLS1zZXQtLT5cbiAgICAgKiA8aWd4LWRyb3AtZG93biBbYWxsb3dJdGVtc0ZvY3VzXT0ndHJ1ZSc+PC9pZ3gtZHJvcC1kb3duPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGFsbG93SXRlbXNGb2N1cyA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQW4gQElucHV0IHByb3BlcnR5IHRoYXQgc2V0IGFyaWEtbGFiZWxsZWRieSBhdHRyaWJ1dGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kcm9wLWRvd24gW2xhYmVsbGVkYnldPVwibGFiZWxJZFwiPjwvaWd4LWRyb3AtZG93bj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBsYWJlbGxlZEJ5OiBzdHJpbmc7XG5cbiAgICBAQ29udGVudENoaWxkKElneEZvck9mRGlyZWN0aXZlLCB7IHJlYWQ6IElneEZvck9mRGlyZWN0aXZlIH0pXG4gICAgcHJvdGVjdGVkIHZpcnREaXI6IElneEZvck9mRGlyZWN0aXZlPGFueT47XG5cbiAgICBAVmlld0NoaWxkKElneFRvZ2dsZURpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBwcm90ZWN0ZWQgdG9nZ2xlRGlyZWN0aXZlOiBJZ3hUb2dnbGVEaXJlY3RpdmU7XG5cbiAgICBAVmlld0NoaWxkKCdzY3JvbGxDb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHByb3RlY3RlZCBzY3JvbGxDb250YWluZXJSZWY6IEVsZW1lbnRSZWY7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgZm9jdXNlZEl0ZW0oKTogSWd4RHJvcERvd25JdGVtQmFzZURpcmVjdGl2ZSB7XG4gICAgICAgIGlmICh0aGlzLnZpcnREaXIpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9mb2N1c2VkSXRlbSAmJiB0aGlzLl9mb2N1c2VkSXRlbS5pbmRleCAhPT0gLTEgP1xuICAgICAgICAgICAgICAgICh0aGlzLmNoaWxkcmVuLmZpbmQoZSA9PiBlLmluZGV4ID09PSB0aGlzLl9mb2N1c2VkSXRlbS5pbmRleCkgfHwgbnVsbCkgOlxuICAgICAgICAgICAgICAgIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZvY3VzZWRJdGVtO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBzZXQgZm9jdXNlZEl0ZW0odmFsdWU6IElneERyb3BEb3duSXRlbUJhc2VEaXJlY3RpdmUpIHtcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24uY2xlYXIoYCR7dGhpcy5pZH0tYWN0aXZlYCk7XG4gICAgICAgICAgICB0aGlzLl9mb2N1c2VkSXRlbSA9IG51bGw7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fZm9jdXNlZEl0ZW0gPSB2YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMudmlydERpcikge1xuICAgICAgICAgICAgdGhpcy5fZm9jdXNlZEl0ZW0gPSB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlLnZhbHVlLFxuICAgICAgICAgICAgICAgIGluZGV4OiB2YWx1ZS5pbmRleFxuICAgICAgICAgICAgfSBhcyBJZ3hEcm9wRG93bkl0ZW1CYXNlRGlyZWN0aXZlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uLnNldChgJHt0aGlzLmlkfS1hY3RpdmVgLCBuZXcgU2V0KFt0aGlzLl9mb2N1c2VkSXRlbV0pKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pZDtcbiAgICB9XG4gICAgcHVibGljIG92ZXJyaWRlIHNldCBpZCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uLnNldCh2YWx1ZSwgdGhpcy5zZWxlY3Rpb24uZ2V0KHRoaXMuaWQpKTtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24uY2xlYXIodGhpcy5pZCk7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uLnNldCh2YWx1ZSwgdGhpcy5zZWxlY3Rpb24uZ2V0KGAke3RoaXMuaWR9LWFjdGl2ZWApKTtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24uY2xlYXIoYCR7dGhpcy5pZH0tYWN0aXZlYCk7XG4gICAgICAgIHRoaXMuX2lkID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIElkIG9mIHRoZSBpbnRlcm5hbCBsaXN0Ym94IG9mIHRoZSBkcm9wIGRvd24gKi9cbiAgICBwdWJsaWMgZ2V0IGxpc3RJZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaWQgKyAnLWxpc3QnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBjdXJyZW50bHkgc2VsZWN0ZWQgaXRlbVxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBjdXJyZW50SXRlbSA9IHRoaXMuZHJvcGRvd24uc2VsZWN0ZWRJdGVtO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgc2VsZWN0ZWRJdGVtKCk6IElneERyb3BEb3duSXRlbUJhc2VEaXJlY3RpdmUge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSB0aGlzLnNlbGVjdGlvbi5maXJzdF9pdGVtKHRoaXMuaWQpO1xuICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtKSB7XG4gICAgICAgICAgICByZXR1cm4gc2VsZWN0ZWRJdGVtO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgaWYgdGhlIGRyb3Bkb3duIGlzIGNvbGxhcHNlZFxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBpc0NvbGxhcHNlZCA9IHRoaXMuZHJvcGRvd24uY29sbGFwc2VkO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgY29sbGFwc2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy50b2dnbGVEaXJlY3RpdmUuY29sbGFwc2VkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgc2Nyb2xsQ29udGFpbmVyKCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2Nyb2xsQ29udGFpbmVyUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBjb2xsZWN0aW9uTGVuZ3RoKCkge1xuICAgICAgICBpZiAodGhpcy52aXJ0RGlyKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy52aXJ0RGlyLnRvdGFsSXRlbUNvdW50IHx8IHRoaXMudmlydERpci5pZ3hGb3JPZi5sZW5ndGg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZGVzdHJveSQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICAgIHByb3RlY3RlZCBfc2Nyb2xsUG9zaXRpb246IG51bWJlcjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcm90ZWN0ZWQgc2VsZWN0aW9uOiBJZ3hTZWxlY3Rpb25BUElTZXJ2aWNlLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KERpc3BsYXlEZW5zaXR5VG9rZW4pIF9kaXNwbGF5RGVuc2l0eU9wdGlvbnM6IElEaXNwbGF5RGVuc2l0eU9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIoZWxlbWVudFJlZiwgY2RyLCBfZGlzcGxheURlbnNpdHlPcHRpb25zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPcGVucyB0aGUgZHJvcGRvd25cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLmRyb3Bkb3duLm9wZW4oKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgb3BlbihvdmVybGF5U2V0dGluZ3M/OiBPdmVybGF5U2V0dGluZ3MpIHtcbiAgICAgICAgdGhpcy50b2dnbGVEaXJlY3RpdmUub3BlbihvdmVybGF5U2V0dGluZ3MpO1xuICAgICAgICB0aGlzLnVwZGF0ZVNjcm9sbFBvc2l0aW9uKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xvc2VzIHRoZSBkcm9wZG93blxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHRoaXMuZHJvcGRvd24uY2xvc2UoKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgY2xvc2UoZXZlbnQ/OiBFdmVudCkge1xuICAgICAgICB0aGlzLnRvZ2dsZURpcmVjdGl2ZS5jbG9zZShldmVudCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVG9nZ2xlcyB0aGUgZHJvcGRvd25cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLmRyb3Bkb3duLnRvZ2dsZSgpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyB0b2dnbGUob3ZlcmxheVNldHRpbmdzPzogT3ZlcmxheVNldHRpbmdzKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbGxhcHNlZCB8fCB0aGlzLnRvZ2dsZURpcmVjdGl2ZS5pc0Nsb3NpbmcpIHtcbiAgICAgICAgICAgIHRoaXMub3BlbihvdmVybGF5U2V0dGluZ3MpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VsZWN0IGFuIGl0ZW0gYnkgaW5kZXhcbiAgICAgKlxuICAgICAqIEBwYXJhbSBpbmRleCBvZiB0aGUgaXRlbSB0byBzZWxlY3Q7IElmIHRoZSBkcm9wIGRvd24gdXNlcyAqaWd4Rm9yLCBwYXNzIHRoZSBpbmRleCBpbiBkYXRhXG4gICAgICovXG4gICAgcHVibGljIHNldFNlbGVjdGVkSXRlbShpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gdGhpcy5pdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgbmV3U2VsZWN0aW9uOiBJZ3hEcm9wRG93bkl0ZW1CYXNlRGlyZWN0aXZlO1xuICAgICAgICBpZiAodGhpcy52aXJ0RGlyKSB7XG4gICAgICAgICAgICBuZXdTZWxlY3Rpb24gPSB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMudmlydERpci5pZ3hGb3JPZltpbmRleF0sXG4gICAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgIH0gYXMgSWd4RHJvcERvd25JdGVtQmFzZURpcmVjdGl2ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5ld1NlbGVjdGlvbiA9IHRoaXMuaXRlbXNbaW5kZXhdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VsZWN0SXRlbShuZXdTZWxlY3Rpb24pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE5hdmlnYXRlcyB0byB0aGUgaXRlbSBvbiB0aGUgc3BlY2lmaWVkIGluZGV4XG4gICAgICogSWYgdGhlIGRhdGEgaW4gdGhlIGRyb3AtZG93biBpcyB2aXJ0dWFsaXplZCwgcGFzcyB0aGUgaW5kZXggb2YgdGhlIGl0ZW0gaW4gdGhlIHZpcnR1YWxpemVkIGRhdGEuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbmV3SW5kZXggbnVtYmVyXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIG5hdmlnYXRlSXRlbShpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIGlmICh0aGlzLnZpcnREaXIpIHtcbiAgICAgICAgICAgIGlmIChpbmRleCA9PT0gLTEgfHwgaW5kZXggPj0gdGhpcy5jb2xsZWN0aW9uTGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZGlyZWN0aW9uID0gaW5kZXggPiAodGhpcy5mb2N1c2VkSXRlbSA/IHRoaXMuZm9jdXNlZEl0ZW0uaW5kZXggOiAtMSkgPyBOYXZpZ2F0ZS5Eb3duIDogTmF2aWdhdGUuVXA7XG4gICAgICAgICAgICBjb25zdCBzdWJSZXF1aXJlZCA9IHRoaXMuaXNJbmRleE91dE9mQm91bmRzKGluZGV4LCBkaXJlY3Rpb24pO1xuICAgICAgICAgICAgdGhpcy5mb2N1c2VkSXRlbSA9IHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogdGhpcy52aXJ0RGlyLmlneEZvck9mW2luZGV4XSxcbiAgICAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgfSBhcyBJZ3hEcm9wRG93bkl0ZW1CYXNlRGlyZWN0aXZlO1xuICAgICAgICAgICAgaWYgKHN1YlJlcXVpcmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52aXJ0RGlyLnNjcm9sbFRvKGluZGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzdWJSZXF1aXJlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMudmlydERpci5jaHVua0xvYWQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNraXBIZWFkZXIoZGlyZWN0aW9uKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5za2lwSGVhZGVyKGRpcmVjdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdXBlci5uYXZpZ2F0ZUl0ZW0oaW5kZXgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmFsbG93SXRlbXNGb2N1cyAmJiB0aGlzLmZvY3VzZWRJdGVtKSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzZWRJdGVtLmVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyB1cGRhdGVTY3JvbGxQb3NpdGlvbigpIHtcbiAgICAgICAgaWYgKCF0aGlzLnZpcnREaXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRJdGVtKSB7XG4gICAgICAgICAgICB0aGlzLnZpcnREaXIuc2Nyb2xsVG8oMCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHRhcmdldFNjcm9sbCA9IHRoaXMudmlydERpci5nZXRTY3JvbGxGb3JJbmRleCh0aGlzLnNlbGVjdGVkSXRlbS5pbmRleCk7XG4gICAgICAgIGNvbnN0IGl0ZW1zSW5WaWV3ID0gdGhpcy52aXJ0RGlyLmlneEZvckNvbnRhaW5lclNpemUgLyB0aGlzLnZpcnREaXIuaWd4Rm9ySXRlbVNpemU7XG4gICAgICAgIHRhcmdldFNjcm9sbCAtPSAoaXRlbXNJblZpZXcgLyAyIC0gMSkgKiB0aGlzLnZpcnREaXIuaWd4Rm9ySXRlbVNpemU7XG4gICAgICAgIHRoaXMudmlydERpci5nZXRTY3JvbGwoKS5zY3JvbGxUb3AgPSB0YXJnZXRTY3JvbGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb25Ub2dnbGVPcGVuaW5nKGU6IElCYXNlQ2FuY2VsYWJsZUJyb3dzZXJFdmVudEFyZ3MpIHtcbiAgICAgICAgY29uc3QgYXJnczogSUJhc2VDYW5jZWxhYmxlQnJvd3NlckV2ZW50QXJncyA9IHsgb3duZXI6IHRoaXMsIGV2ZW50OiBlLmV2ZW50LCBjYW5jZWw6IGZhbHNlIH07XG4gICAgICAgIHRoaXMub3BlbmluZy5lbWl0KGFyZ3MpO1xuICAgICAgICBlLmNhbmNlbCA9IGFyZ3MuY2FuY2VsO1xuICAgICAgICBpZiAoZS5jYW5jZWwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnZpcnREaXIpIHtcbiAgICAgICAgICAgIHRoaXMudmlydERpci5zY3JvbGxQb3NpdGlvbiA9IHRoaXMuX3Njcm9sbFBvc2l0aW9uO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb25Ub2dnbGVDb250ZW50QXBwZW5kZWQoX2V2ZW50OiBUb2dnbGVWaWV3RXZlbnRBcmdzKSB7XG4gICAgICAgIGlmICghdGhpcy52aXJ0RGlyICYmIHRoaXMuc2VsZWN0ZWRJdGVtKSB7XG4gICAgICAgICAgIHRoaXMuc2Nyb2xsVG9JdGVtKHRoaXMuc2VsZWN0ZWRJdGVtKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG9uVG9nZ2xlT3BlbmVkKCkge1xuICAgICAgICB0aGlzLnVwZGF0ZUl0ZW1Gb2N1cygpO1xuICAgICAgICB0aGlzLm9wZW5lZC5lbWl0KHsgb3duZXI6IHRoaXMgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb25Ub2dnbGVDbG9zaW5nKGU6IElCYXNlQ2FuY2VsYWJsZUJyb3dzZXJFdmVudEFyZ3MpIHtcbiAgICAgICAgY29uc3QgYXJnczogSUJhc2VDYW5jZWxhYmxlQnJvd3NlckV2ZW50QXJncyA9IHsgb3duZXI6IHRoaXMsIGV2ZW50OiBlLmV2ZW50LCBjYW5jZWw6IGZhbHNlIH07XG4gICAgICAgIHRoaXMuY2xvc2luZy5lbWl0KGFyZ3MpO1xuICAgICAgICBlLmNhbmNlbCA9IGFyZ3MuY2FuY2VsO1xuICAgICAgICBpZiAoZS5jYW5jZWwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy52aXJ0RGlyKSB7XG4gICAgICAgICAgICB0aGlzLl9zY3JvbGxQb3NpdGlvbiA9IHRoaXMudmlydERpci5zY3JvbGxQb3NpdGlvbjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG9uVG9nZ2xlQ2xvc2VkKCkge1xuICAgICAgICB0aGlzLmZvY3VzSXRlbShmYWxzZSk7XG4gICAgICAgIHRoaXMuY2xvc2VkLmVtaXQoeyBvd25lcjogdGhpcyB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uLmNsZWFyKHRoaXMuaWQpO1xuICAgICAgICB0aGlzLnNlbGVjdGlvbi5jbGVhcihgJHt0aGlzLmlkfS1hY3RpdmVgKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgY2FsY3VsYXRlU2Nyb2xsUG9zaXRpb24oaXRlbTogSWd4RHJvcERvd25JdGVtQmFzZURpcmVjdGl2ZSk6IG51bWJlciB7XG4gICAgICAgIGlmICghaXRlbSkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBlbGVtZW50UmVjdCA9IGl0ZW0uZWxlbWVudC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCBwYXJlbnRSZWN0ID0gdGhpcy5zY3JvbGxDb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IHNjcm9sbERlbHRhID0gcGFyZW50UmVjdC50b3AgLSBlbGVtZW50UmVjdC50b3A7XG4gICAgICAgIGxldCBzY3JvbGxQb3NpdGlvbiA9IHRoaXMuc2Nyb2xsQ29udGFpbmVyLnNjcm9sbFRvcCAtIHNjcm9sbERlbHRhO1xuXG4gICAgICAgIGNvbnN0IGRyb3BEb3duSGVpZ2h0ID0gdGhpcy5zY3JvbGxDb250YWluZXIuY2xpZW50SGVpZ2h0O1xuICAgICAgICBzY3JvbGxQb3NpdGlvbiAtPSBkcm9wRG93bkhlaWdodCAvIDI7XG4gICAgICAgIHNjcm9sbFBvc2l0aW9uICs9IGl0ZW0uZWxlbWVudEhlaWdodCAvIDI7XG5cbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3Ioc2Nyb2xsUG9zaXRpb24pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgaWYgKGNoYW5nZXMuaWQpIHtcbiAgICAgICAgICAgIC8vIHRlbXAgd29ya2Fyb3VuZCB1bnRpbCBmaXggLS0+IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzM0OTkyXG4gICAgICAgICAgICB0aGlzLnRvZ2dsZURpcmVjdGl2ZS5pZCA9IGNoYW5nZXMuaWQuY3VycmVudFZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMudmlydERpcikge1xuICAgICAgICAgICAgdGhpcy52aXJ0RGlyLmlneEZvckl0ZW1TaXplID0gMjg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogS2V5ZG93biBIYW5kbGVyICovXG4gICAgcHVibGljIG92ZXJyaWRlIG9uSXRlbUFjdGlvbktleShrZXk6IERyb3BEb3duQWN0aW9uS2V5LCBldmVudD86IEV2ZW50KSB7XG4gICAgICAgIHN1cGVyLm9uSXRlbUFjdGlvbktleShrZXksIGV2ZW50KTtcbiAgICAgICAgdGhpcy5jbG9zZShldmVudCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVmlydHVhbCBzY3JvbGwgaW1wbGVtZW50YXRpb25cbiAgICAgKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIG5hdmlnYXRlRmlyc3QoKSB7XG4gICAgICAgIGlmICh0aGlzLnZpcnREaXIpIHtcbiAgICAgICAgICAgIHRoaXMubmF2aWdhdGVJdGVtKDApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3VwZXIubmF2aWdhdGVGaXJzdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgbmF2aWdhdGVMYXN0KCkge1xuICAgICAgICBpZiAodGhpcy52aXJ0RGlyKSB7XG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRlSXRlbSh0aGlzLnZpcnREaXIudG90YWxJdGVtQ291bnQgPyB0aGlzLnZpcnREaXIudG90YWxJdGVtQ291bnQgLSAxIDogdGhpcy52aXJ0RGlyLmlneEZvck9mLmxlbmd0aCAtIDEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3VwZXIubmF2aWdhdGVMYXN0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBuYXZpZ2F0ZU5leHQoKSB7XG4gICAgICAgIGlmICh0aGlzLnZpcnREaXIpIHtcbiAgICAgICAgICAgIHRoaXMubmF2aWdhdGVJdGVtKHRoaXMuX2ZvY3VzZWRJdGVtID8gdGhpcy5fZm9jdXNlZEl0ZW0uaW5kZXggKyAxIDogMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdXBlci5uYXZpZ2F0ZU5leHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIG5hdmlnYXRlUHJldigpIHtcbiAgICAgICAgaWYgKHRoaXMudmlydERpcikge1xuICAgICAgICAgICAgdGhpcy5uYXZpZ2F0ZUl0ZW0odGhpcy5fZm9jdXNlZEl0ZW0gPyB0aGlzLl9mb2N1c2VkSXRlbS5pbmRleCAtIDEgOiAwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN1cGVyLm5hdmlnYXRlUHJldigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlcyB0aGUgYHNlbGVjdGlvbkNoYW5naW5nYCBlbWl0IGFuZCB0aGUgZHJvcCBkb3duIHRvZ2dsZSB3aGVuIHNlbGVjdGlvbiBjaGFuZ2VzXG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICogQHBhcmFtIG5ld1NlbGVjdGlvblxuICAgICAqIEBwYXJhbSBldmVudFxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBzZWxlY3RJdGVtKG5ld1NlbGVjdGlvbj86IElneERyb3BEb3duSXRlbUJhc2VEaXJlY3RpdmUsIGV2ZW50PzogRXZlbnQpIHtcbiAgICAgICAgY29uc3Qgb2xkU2VsZWN0aW9uID0gdGhpcy5zZWxlY3RlZEl0ZW07XG4gICAgICAgIGlmICghbmV3U2VsZWN0aW9uKSB7XG4gICAgICAgICAgICBuZXdTZWxlY3Rpb24gPSB0aGlzLmZvY3VzZWRJdGVtO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuZXdTZWxlY3Rpb24gPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAobmV3U2VsZWN0aW9uIGluc3RhbmNlb2YgSWd4RHJvcERvd25JdGVtQmFzZURpcmVjdGl2ZSAmJiBuZXdTZWxlY3Rpb24uaXNIZWFkZXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy52aXJ0RGlyKSB7XG4gICAgICAgICAgICBuZXdTZWxlY3Rpb24gPSB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IG5ld1NlbGVjdGlvbi52YWx1ZSxcbiAgICAgICAgICAgICAgICBpbmRleDogbmV3U2VsZWN0aW9uLmluZGV4XG4gICAgICAgICAgICB9IGFzIElneERyb3BEb3duSXRlbUJhc2VEaXJlY3RpdmU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYXJnczogSVNlbGVjdGlvbkV2ZW50QXJncyA9IHsgb2xkU2VsZWN0aW9uLCBuZXdTZWxlY3Rpb24sIGNhbmNlbDogZmFsc2UsIG93bmVyOnRoaXMgfTtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2luZy5lbWl0KGFyZ3MpO1xuXG4gICAgICAgIGlmICghYXJncy5jYW5jZWwpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzU2VsZWN0aW9uVmFsaWQoYXJncy5uZXdTZWxlY3Rpb24pKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24uc2V0KHRoaXMuaWQsIG5ldyBTZXQoW2FyZ3MubmV3U2VsZWN0aW9uXSkpO1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy52aXJ0RGlyKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvbGRTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9sZFNlbGVjdGlvbi5zZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChhcmdzLm5ld1NlbGVjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXJncy5uZXdTZWxlY3Rpb24uc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChldmVudCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZURpcmVjdGl2ZS5jbG9zZShldmVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BsZWFzZSBwcm92aWRlIGEgdmFsaWQgZHJvcC1kb3duIGl0ZW0gZm9yIHRoZSBzZWxlY3Rpb24hJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbGVhcnMgdGhlIHNlbGVjdGlvbiBvZiB0aGUgZHJvcGRvd25cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy5kcm9wZG93bi5jbGVhclNlbGVjdGlvbigpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBjbGVhclNlbGVjdGlvbigpIHtcbiAgICAgICAgY29uc3Qgb2xkU2VsZWN0aW9uID0gdGhpcy5zZWxlY3RlZEl0ZW07XG4gICAgICAgIGNvbnN0IG5ld1NlbGVjdGlvbjogSWd4RHJvcERvd25JdGVtQmFzZURpcmVjdGl2ZSA9IG51bGw7XG4gICAgICAgIGNvbnN0IGFyZ3M6IElTZWxlY3Rpb25FdmVudEFyZ3MgPSB7IG9sZFNlbGVjdGlvbiwgbmV3U2VsZWN0aW9uLCBjYW5jZWw6IGZhbHNlLCBvd25lcjogdGhpcyB9O1xuICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5naW5nLmVtaXQoYXJncyk7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbSAmJiAhYXJncy5jYW5jZWwpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtLnNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbi5jbGVhcih0aGlzLmlkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyB3aGV0aGVyIHRoZSBzZWxlY3Rpb24gaXMgdmFsaWRcbiAgICAgKiBgbnVsbGAgLSB0aGUgc2VsZWN0aW9uIHNob3VsZCBiZSBlbXB0aWVkXG4gICAgICogVmlydHVhbD8gLSB0aGUgc2VsZWN0aW9uIHNob3VsZCBhdCBsZWFzdCBoYXZlIGFuZCBgaW5kZXhgIGFuZCBgdmFsdWVgIHByb3BlcnR5XG4gICAgICogTm9uLXZpcnR1YWw/IC0gdGhlIHNlbGVjdGlvbiBzaG91bGQgYmUgYSB2YWxpZCBkcm9wLWRvd24gaXRlbSBhbmQgKipub3QqKiBiZSBhIGhlYWRlclxuICAgICAqL1xuICAgIHByb3RlY3RlZCBpc1NlbGVjdGlvblZhbGlkKHNlbGVjdGlvbjogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBzZWxlY3Rpb24gPT09IG51bGxcbiAgICAgICAgfHwgKHRoaXMudmlydERpciAmJiBzZWxlY3Rpb24uaGFzT3duUHJvcGVydHkoJ3ZhbHVlJykgJiYgc2VsZWN0aW9uLmhhc093blByb3BlcnR5KCdpbmRleCcpKVxuICAgICAgICB8fCAoc2VsZWN0aW9uIGluc3RhbmNlb2YgSWd4RHJvcERvd25JdGVtQ29tcG9uZW50ICYmICFzZWxlY3Rpb24uaXNIZWFkZXIpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzY3JvbGxUb0l0ZW0oaXRlbTogSWd4RHJvcERvd25JdGVtQmFzZURpcmVjdGl2ZSkge1xuICAgICAgICB0aGlzLnNjcm9sbENvbnRhaW5lci5zY3JvbGxUb3AgPSB0aGlzLmNhbGN1bGF0ZVNjcm9sbFBvc2l0aW9uKGl0ZW0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBmb2N1c0l0ZW0odmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHZhbHVlIHx8IHRoaXMuX2ZvY3VzZWRJdGVtKSB7XG4gICAgICAgICAgICB0aGlzLl9mb2N1c2VkSXRlbS5mb2N1c2VkID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgdXBkYXRlSXRlbUZvY3VzKCkge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNlZEl0ZW0gPSB0aGlzLnNlbGVjdGVkSXRlbTtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNJdGVtKHRydWUpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYWxsb3dJdGVtc0ZvY3VzKSB7XG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRlRmlyc3QoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBza2lwSGVhZGVyKGRpcmVjdGlvbjogTmF2aWdhdGUpIHtcbiAgICAgICAgaWYgKCF0aGlzLmZvY3VzZWRJdGVtKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZm9jdXNlZEl0ZW0uaXNIZWFkZXIgfHwgdGhpcy5mb2N1c2VkSXRlbS5kaXNhYmxlZCkge1xuICAgICAgICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gTmF2aWdhdGUuVXApIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRlUHJldigpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRlTmV4dCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0luZGV4T3V0T2ZCb3VuZHMoaW5kZXg6IG51bWJlciwgZGlyZWN0aW9uOiBOYXZpZ2F0ZSkge1xuICAgICAgICBjb25zdCB2aXJ0U3RhdGUgPSB0aGlzLnZpcnREaXIuc3RhdGU7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRQb3NpdGlvbiA9IHRoaXMudmlydERpci5nZXRTY3JvbGwoKS5zY3JvbGxUb3A7XG4gICAgICAgIGNvbnN0IGl0ZW1Qb3NpdGlvbiA9IHRoaXMudmlydERpci5nZXRTY3JvbGxGb3JJbmRleChpbmRleCwgZGlyZWN0aW9uID09PSBOYXZpZ2F0ZS5Eb3duKTtcbiAgICAgICAgY29uc3QgaW5kZXhPdXRPZkNodW5rID0gaW5kZXggPCB2aXJ0U3RhdGUuc3RhcnRJbmRleCB8fCBpbmRleCA+IHZpcnRTdGF0ZS5jaHVua1NpemUgKyB2aXJ0U3RhdGUuc3RhcnRJbmRleDtcbiAgICAgICAgY29uc3Qgc2Nyb2xsTmVlZGVkID0gZGlyZWN0aW9uID09PSBOYXZpZ2F0ZS5Eb3duID8gY3VycmVudFBvc2l0aW9uIDwgaXRlbVBvc2l0aW9uIDogY3VycmVudFBvc2l0aW9uID4gaXRlbVBvc2l0aW9uO1xuICAgICAgICBjb25zdCBzdWJSZXF1aXJlZCA9IGluZGV4T3V0T2ZDaHVuayB8fCBzY3JvbGxOZWVkZWQ7XG4gICAgICAgIHJldHVybiBzdWJSZXF1aXJlZDtcbiAgICB9XG59XG5cbiIsIjxkaXYgY2xhc3M9XCJpZ3gtZHJvcC1kb3duX19saXN0XCIgW3N0eWxlLndpZHRoXT1cIndpZHRoXCJcbmlneFRvZ2dsZVxuKGFwcGVuZGVkKT1cIm9uVG9nZ2xlQ29udGVudEFwcGVuZGVkKCRldmVudClcIlxuKG9wZW5pbmcpPVwib25Ub2dnbGVPcGVuaW5nKCRldmVudClcIiAob3BlbmVkKT1cIm9uVG9nZ2xlT3BlbmVkKClcIlxuKGNsb3NpbmcpPVwib25Ub2dnbGVDbG9zaW5nKCRldmVudClcIiAoY2xvc2VkKT1cIm9uVG9nZ2xlQ2xvc2VkKClcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaWd4LWRyb3AtZG93bl9fbGlzdC1zY3JvbGxcIiAjc2Nyb2xsQ29udGFpbmVyIFthdHRyLmlkXT1cInRoaXMubGlzdElkXCIgcm9sZT1cImxpc3Rib3hcIiBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwidGhpcy5sYWJlbGxlZEJ5XCJcbiAgICBbc3R5bGUuaGVpZ2h0XT1cImhlaWdodFwiXG4gICAgW3N0eWxlLm1heEhlaWdodF09XCJtYXhIZWlnaHRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb2xsYXBzZWRcIj5cbiAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
559
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcC1kb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9kcm9wLWRvd24vZHJvcC1kb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9kcm9wLWRvd24vZHJvcC1kb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxTQUFTLEVBQ1QsZUFBZSxFQUVmLFVBQVUsRUFHVixLQUFLLEVBRUwsU0FBUyxFQUNULFlBQVksRUFFWixNQUFNLEVBQ04sWUFBWSxFQUNaLFFBQVEsRUFDUixNQUFNLEVBRVQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUF1QixNQUFNLHVDQUF1QyxDQUFDO0FBQ2hHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVELE9BQU8sRUFBcUIsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDakUsT0FBTyxFQUFFLGlCQUFpQixFQUFpQixNQUFNLG9CQUFvQixDQUFDO0FBSXRFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDMUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxtQkFBbUIsRUFBMEIsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7QUFHOUU7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBTUgsTUFBTSxPQUFPLG9CQUFxQixTQUFRLHdC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b3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBmb3J3YXJkUmVmLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBPbkNoYW5nZXMsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIFZpZXdDaGlsZCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIE9wdGlvbmFsLFxuICAgIEluamVjdCxcbiAgICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSWd4VG9nZ2xlRGlyZWN0aXZlLCBUb2dnbGVWaWV3RXZlbnRBcmdzIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy90b2dnbGUvdG9nZ2xlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJZ3hEcm9wRG93bkl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2Ryb3AtZG93bi1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hEcm9wRG93bkJhc2VEaXJlY3RpdmUgfSBmcm9tICcuL2Ryb3AtZG93bi5iYXNlJztcbmltcG9ydCB7IERyb3BEb3duQWN0aW9uS2V5LCBOYXZpZ2F0ZSB9IGZyb20gJy4vZHJvcC1kb3duLmNvbW1vbic7XG5pbXBvcnQgeyBJR1hfRFJPUERPV05fQkFTRSwgSURyb3BEb3duQmFzZSB9IGZyb20gJy4vZHJvcC1kb3duLmNvbW1vbic7XG5pbXBvcnQgeyBJU2VsZWN0aW9uRXZlbnRBcmdzIH0gZnJvbSAnLi9kcm9wLWRvd24uY29tbW9uJztcbmltcG9ydCB7IElCYXNlQ2FuY2VsYWJsZUJyb3dzZXJFdmVudEFyZ3MsIElCYXNlRXZlbnRBcmdzIH0gZnJvbSAnLi4vY29yZS91dGlscyc7XG5pbXBvcnQgeyBJZ3hTZWxlY3Rpb25BUElTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS9zZWxlY3Rpb24nO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSWd4RHJvcERvd25JdGVtQmFzZURpcmVjdGl2ZSB9IGZyb20gJy4vZHJvcC1kb3duLWl0ZW0uYmFzZSc7XG5pbXBvcnQgeyBJZ3hGb3JPZkRpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvZm9yLW9mL2Zvcl9vZi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IERpc3BsYXlEZW5zaXR5VG9rZW4sIElEaXNwbGF5RGVuc2l0eU9wdGlvbnMgfSBmcm9tICcuLi9jb3JlL2RlbnNpdHknO1xuaW1wb3J0IHsgT3ZlcmxheVNldHRpbmdzIH0gZnJvbSAnLi4vc2VydmljZXMvb3ZlcmxheS91dGlsaXRpZXMnO1xuXG4vKipcbiAqICoqSWduaXRlIFVJIGZvciBBbmd1bGFyIERyb3BEb3duKiogLVxuICogW0RvY3VtZW50YXRpb25dKGh0dHBzOi8vd3d3LmluZnJhZ2lzdGljcy5jb20vcHJvZHVjdHMvaWduaXRlLXVpLWFuZ3VsYXIvYW5ndWxhci9jb21wb25lbnRzL2Ryb3AtZG93bilcbiAqXG4gKiBUaGUgSWduaXRlIFVJIGZvciBBbmd1bGFyIERyb3AgRG93biBkaXNwbGF5cyBhIHNjcm9sbGFibGUgbGlzdCBvZiBpdGVtcyB3aGljaCBtYXkgYmUgdmlzdWFsbHkgZ3JvdXBlZCBhbmRcbiAqIHN1cHBvcnRzIHNlbGVjdGlvbiBvZiBhIHNpbmdsZSBpdGVtLiBDbGlja2luZyBvciB0YXBwaW5nIGFuIGl0ZW0gc2VsZWN0cyBpdCBhbmQgY2xvc2VzIHRoZSBEcm9wIERvd25cbiAqXG4gKiBFeGFtcGxlOlxuICogYGBgaHRtbFxuICogPGlneC1kcm9wLWRvd24+XG4gKiAgIDxpZ3gtZHJvcC1kb3duLWl0ZW0gKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXNcIiBkaXNhYmxlZD17e2l0ZW0uZGlzYWJsZWR9fSBpc0hlYWRlcj17e2l0ZW0uaGVhZGVyfX0+XG4gKiAgICAge3sgaXRlbS52YWx1ZSB9fVxuICogICA8L2lneC1kcm9wLWRvd24taXRlbT5cbiAqIDwvaWd4LWRyb3AtZG93bj5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2lneC1kcm9wLWRvd24nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kcm9wLWRvd24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogSUdYX0RST1BET1dOX0JBU0UsIHVzZUV4aXN0aW5nOiBJZ3hEcm9wRG93bkNvbXBvbmVudCB9XVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hEcm9wRG93bkNvbXBvbmVudCBleHRlbmRzIElneERyb3BEb3duQmFzZURpcmVjdGl2ZSBpbXBsZW1lbnRzIElEcm9wRG93bkJhc2UsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IElneERyb3BEb3duSXRlbUNvbXBvbmVudCksIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgICBwdWJsaWMgb3ZlcnJpZGUgY2hpbGRyZW46IFF1ZXJ5TGlzdDxJZ3hEcm9wRG93bkl0ZW1CYXNlRGlyZWN0aXZlPjtcblxuICAgIC8qKlxuICAgICAqIEVtaXR0ZWQgYmVmb3JlIHRoZSBkcm9wZG93biBpcyBvcGVuZWRcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWRyb3AtZG93biAob3BlbmluZyk9J2hhbmRsZU9wZW5pbmcoJGV2ZW50KSc+PC9pZ3gtZHJvcC1kb3duPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBvcGVuaW5nID0gbmV3IEV2ZW50RW1pdHRlcjxJQmFzZUNhbmNlbGFibGVCcm93c2VyRXZlbnRBcmdzPigpO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHRlZCBhZnRlciB0aGUgZHJvcGRvd24gaXMgb3BlbmVkXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kcm9wLWRvd24gKG9wZW5lZCk9J2hhbmRsZU9wZW5lZCgkZXZlbnQpJz48L2lneC1kcm9wLWRvd24+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG9wZW5lZCA9IG5ldyBFdmVudEVtaXR0ZXI8SUJhc2VFdmVudEFyZ3M+KCk7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0dGVkIGJlZm9yZSB0aGUgZHJvcGRvd24gaXMgY2xvc2VkXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kcm9wLWRvd24gKGNsb3NpbmcpPSdoYW5kbGVDbG9zaW5nKCRldmVudCknPjwvaWd4LWRyb3AtZG93bj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgY2xvc2luZyA9IG5ldyBFdmVudEVtaXR0ZXI8SUJhc2VDYW5jZWxhYmxlQnJvd3NlckV2ZW50QXJncz4oKTtcblxuICAgIC8qKlxuICAgICAqIEVtaXR0ZWQgYWZ0ZXIgdGhlIGRyb3Bkb3duIGlzIGNsb3NlZFxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZHJvcC1kb3duIChjbG9zZWQpPSdoYW5kbGVDbG9zZWQoJGV2ZW50KSc+PC9pZ3gtZHJvcC1kb3duPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjbG9zZWQgPSBuZXcgRXZlbnRFbWl0dGVyPElCYXNlRXZlbnRBcmdzPigpO1xuXG4gICAgLyoqXG4gICAgICogR2V0cy9zZXRzIHdoZXRoZXIgaXRlbXMgdGFrZSBmb2N1cy4gRGlzYWJsZWQgYnkgZGVmYXVsdC5cbiAgICAgKiBXaGVuIGVuYWJsZWQsIGRyb3AgZG93biBpdGVtcyBnYWluIHRhYiBpbmRleCBhbmQgYXJlIGZvY3VzZWQgd2hlbiBhY3RpdmUgLVxuICAgICAqIHRoaXMgaW5jbHVkZXMgYWN0aXZhdGluZyB0aGUgc2VsZWN0ZWQgaXRlbSB3aGVuIG9wZW5pbmcgdGhlIGRyb3AgZG93biBhbmQgbW92aW5nIHdpdGgga2V5Ym9hcmQgbmF2aWdhdGlvbi5cbiAgICAgKlxuICAgICAqIE5vdGU6IEtlZXAgdGhhdCBmb2N1cyBzaGlmdCBpbiBtaW5kIHdoZW4gdXNpbmcgdGhlIGlneERyb3BEb3duSXRlbU5hdmlnYXRpb24gZGlyZWN0aXZlXG4gICAgICogYW5kIGVuc3VyZSBpdCdzIHBsYWNlZCBlaXRoZXIgb24gZWFjaCBmb2N1c2FibGUgaXRlbSBvciBhIGNvbW1vbiBhbmNlc3RvciB0byBhbGxvdyBpdCB0byBoYW5kbGUga2V5Ym9hcmQgZXZlbnRzLlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIC8vIGdldFxuICAgICAqIGxldCBkcm9wRG93bkFsbG93c0l0ZW1Gb2N1cyA9IHRoaXMuZHJvcGRvd24uYWxsb3dJdGVtc0ZvY3VzO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDwhLS1zZXQtLT5cbiAgICAgKiA8aWd4LWRyb3AtZG93biBbYWxsb3dJdGVtc0ZvY3VzXT0ndHJ1ZSc+PC9pZ3gtZHJvcC1kb3duPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGFsbG93SXRlbXNGb2N1cyA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQW4gQElucHV0IHByb3BlcnR5IHRoYXQgc2V0IGFyaWEtbGFiZWxsZWRieSBhdHRyaWJ1dGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kcm9wLWRvd24gW2xhYmVsbGVkYnldPVwibGFiZWxJZFwiPjwvaWd4LWRyb3AtZG93bj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBsYWJlbGxlZEJ5OiBzdHJpbmc7XG5cbiAgICBAQ29udGVudENoaWxkKElneEZvck9mRGlyZWN0aXZlLCB7IHJlYWQ6IElneEZvck9mRGlyZWN0aXZlIH0pXG4gICAgcHJvdGVjdGVkIHZpcnREaXI6IElneEZvck9mRGlyZWN0aXZlPGFueT47XG5cbiAgICBAVmlld0NoaWxkKElneFRvZ2dsZURpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBwcm90ZWN0ZWQgdG9nZ2xlRGlyZWN0aXZlOiBJZ3hUb2dnbGVEaXJlY3RpdmU7XG5cbiAgICBAVmlld0NoaWxkKCdzY3JvbGxDb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHByb3RlY3RlZCBzY3JvbGxDb250YWluZXJSZWY6IEVsZW1lbnRSZWY7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgZm9jdXNlZEl0ZW0oKTogSWd4RHJvcERvd25JdGVtQmFzZURpcmVjdGl2ZSB7XG4gICAgICAgIGlmICh0aGlzLnZpcnREaXIpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9mb2N1c2VkSXRlbSAmJiB0aGlzLl9mb2N1c2VkSXRlbS5pbmRleCAhPT0gLTEgP1xuICAgICAgICAgICAgICAgICh0aGlzLmNoaWxkcmVuLmZpbmQoZSA9PiBlLmluZGV4ID09PSB0aGlzLl9mb2N1c2VkSXRlbS5pbmRleCkgfHwgbnVsbCkgOlxuICAgICAgICAgICAgICAgIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZvY3VzZWRJdGVtO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBzZXQgZm9jdXNlZEl0ZW0odmFsdWU6IElneERyb3BEb3duSXRlbUJhc2VEaXJlY3RpdmUpIHtcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24uY2xlYXIoYCR7dGhpcy5pZH0tYWN0aXZlYCk7XG4gICAgICAgICAgICB0aGlzLl9mb2N1c2VkSXRlbSA9IG51bGw7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fZm9jdXNlZEl0ZW0gPSB2YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMudmlydERpcikge1xuICAgICAgICAgICAgdGhpcy5fZm9jdXNlZEl0ZW0gPSB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlLnZhbHVlLFxuICAgICAgICAgICAgICAgIGluZGV4OiB2YWx1ZS5pbmRleFxuICAgICAgICAgICAgfSBhcyBJZ3hEcm9wRG93bkl0ZW1CYXNlRGlyZWN0aXZlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uLnNldChgJHt0aGlzLmlkfS1hY3RpdmVgLCBuZXcgU2V0KFt0aGlzLl9mb2N1c2VkSXRlbV0pKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pZDtcbiAgICB9XG4gICAgcHVibGljIG92ZXJyaWRlIHNldCBpZCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uLnNldCh2YWx1ZSwgdGhpcy5zZWxlY3Rpb24uZ2V0KHRoaXMuaWQpKTtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24uY2xlYXIodGhpcy5pZCk7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uLnNldCh2YWx1ZSwgdGhpcy5zZWxlY3Rpb24uZ2V0KGAke3RoaXMuaWR9LWFjdGl2ZWApKTtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24uY2xlYXIoYCR7dGhpcy5pZH0tYWN0aXZlYCk7XG4gICAgICAgIHRoaXMuX2lkID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIElkIG9mIHRoZSBpbnRlcm5hbCBsaXN0Ym94IG9mIHRoZSBkcm9wIGRvd24gKi9cbiAgICBwdWJsaWMgZ2V0IGxpc3RJZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaWQgKyAnLWxpc3QnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBjdXJyZW50bHkgc2VsZWN0ZWQgaXRlbVxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBjdXJyZW50SXRlbSA9IHRoaXMuZHJvcGRvd24uc2VsZWN0ZWRJdGVtO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgc2VsZWN0ZWRJdGVtKCk6IElneERyb3BEb3duSXRlbUJhc2VEaXJlY3RpdmUge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSB0aGlzLnNlbGVjdGlvbi5maXJzdF9pdGVtKHRoaXMuaWQpO1xuICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtKSB7XG4gICAgICAgICAgICByZXR1cm4gc2VsZWN0ZWRJdGVtO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgaWYgdGhlIGRyb3Bkb3duIGlzIGNvbGxhcHNlZFxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBpc0NvbGxhcHNlZCA9IHRoaXMuZHJvcGRvd24uY29sbGFwc2VkO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgY29sbGFwc2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy50b2dnbGVEaXJlY3RpdmUuY29sbGFwc2VkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgc2Nyb2xsQ29udGFpbmVyKCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2Nyb2xsQ29udGFpbmVyUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBjb2xsZWN0aW9uTGVuZ3RoKCkge1xuICAgICAgICBpZiAodGhpcy52aXJ0RGlyKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy52aXJ0RGlyLnRvdGFsSXRlbUNvdW50IHx8IHRoaXMudmlydERpci5pZ3hGb3JPZi5sZW5ndGg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZGVzdHJveSQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICAgIHByb3RlY3RlZCBfc2Nyb2xsUG9zaXRpb246IG51bWJlcjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcm90ZWN0ZWQgc2VsZWN0aW9uOiBJZ3hTZWxlY3Rpb25BUElTZXJ2aWNlLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KERpc3BsYXlEZW5zaXR5VG9rZW4pIF9kaXNwbGF5RGVuc2l0eU9wdGlvbnM6IElEaXNwbGF5RGVuc2l0eU9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIoZWxlbWVudFJlZiwgY2RyLCBfZGlzcGxheURlbnNpdHlPcHRpb25zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPcGVucyB0aGUgZHJvcGRvd25cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLmRyb3Bkb3duLm9wZW4oKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgb3BlbihvdmVybGF5U2V0dGluZ3M/OiBPdmVybGF5U2V0dGluZ3MpIHtcbiAgICAgICAgdGhpcy50b2dnbGVEaXJlY3RpdmUub3BlbihvdmVybGF5U2V0dGluZ3MpO1xuICAgICAgICB0aGlzLnVwZGF0ZVNjcm9sbFBvc2l0aW9uKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xvc2VzIHRoZSBkcm9wZG93blxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHRoaXMuZHJvcGRvd24uY2xvc2UoKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgY2xvc2UoZXZlbnQ/OiBFdmVudCkge1xuICAgICAgICB0aGlzLnRvZ2dsZURpcmVjdGl2ZS5jbG9zZShldmVudCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVG9nZ2xlcyB0aGUgZHJvcGRvd25cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLmRyb3Bkb3duLnRvZ2dsZSgpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyB0b2dnbGUob3ZlcmxheVNldHRpbmdzPzogT3ZlcmxheVNldHRpbmdzKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbGxhcHNlZCB8fCB0aGlzLnRvZ2dsZURpcmVjdGl2ZS5pc0Nsb3NpbmcpIHtcbiAgICAgICAgICAgIHRoaXMub3BlbihvdmVybGF5U2V0dGluZ3MpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VsZWN0IGFuIGl0ZW0gYnkgaW5kZXhcbiAgICAgKlxuICAgICAqIEBwYXJhbSBpbmRleCBvZiB0aGUgaXRlbSB0byBzZWxlY3Q7IElmIHRoZSBkcm9wIGRvd24gdXNlcyAqaWd4Rm9yLCBwYXNzIHRoZSBpbmRleCBpbiBkYXRhXG4gICAgICovXG4gICAgcHVibGljIHNldFNlbGVjdGVkSXRlbShpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gdGhpcy5pdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgbmV3U2VsZWN0aW9uOiBJZ3hEcm9wRG93bkl0ZW1CYXNlRGlyZWN0aXZlO1xuICAgICAgICBpZiAodGhpcy52aXJ0RGlyKSB7XG4gICAgICAgICAgICBuZXdTZWxlY3Rpb24gPSB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMudmlydERpci5pZ3hGb3JPZltpbmRleF0sXG4gICAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgIH0gYXMgSWd4RHJvcERvd25JdGVtQmFzZURpcmVjdGl2ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5ld1NlbGVjdGlvbiA9IHRoaXMuaXRlbXNbaW5kZXhdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VsZWN0SXRlbShuZXdTZWxlY3Rpb24pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE5hdmlnYXRlcyB0byB0aGUgaXRlbSBvbiB0aGUgc3BlY2lmaWVkIGluZGV4XG4gICAgICogSWYgdGhlIGRhdGEgaW4gdGhlIGRyb3AtZG93biBpcyB2aXJ0dWFsaXplZCwgcGFzcyB0aGUgaW5kZXggb2YgdGhlIGl0ZW0gaW4gdGhlIHZpcnR1YWxpemVkIGRhdGEuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbmV3SW5kZXggbnVtYmVyXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIG5hdmlnYXRlSXRlbShpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIGlmICh0aGlzLnZpcnREaXIpIHtcbiAgICAgICAgICAgIGlmIChpbmRleCA9PT0gLTEgfHwgaW5kZXggPj0gdGhpcy5jb2xsZWN0aW9uTGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZGlyZWN0aW9uID0gaW5kZXggPiAodGhpcy5mb2N1c2VkSXRlbSA/IHRoaXMuZm9jdXNlZEl0ZW0uaW5kZXggOiAtMSkgPyBOYXZpZ2F0ZS5Eb3duIDogTmF2aWdhdGUuVXA7XG4gICAgICAgICAgICBjb25zdCBzdWJSZXF1aXJlZCA9IHRoaXMuaXNJbmRleE91dE9mQm91bmRzKGluZGV4LCBkaXJlY3Rpb24pO1xuICAgICAgICAgICAgdGhpcy5mb2N1c2VkSXRlbSA9IHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogdGhpcy52aXJ0RGlyLmlneEZvck9mW2luZGV4XSxcbiAgICAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgfSBhcyBJZ3hEcm9wRG93bkl0ZW1CYXNlRGlyZWN0aXZlO1xuICAgICAgICAgICAgaWYgKHN1YlJlcXVpcmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52aXJ0RGlyLnNjcm9sbFRvKGluZGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzdWJSZXF1aXJlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMudmlydERpci5jaHVua0xvYWQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNraXBIZWFkZXIoZGlyZWN0aW9uKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5za2lwSGVhZGVyKGRpcmVjdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdXBlci5uYXZpZ2F0ZUl0ZW0oaW5kZXgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmFsbG93SXRlbXNGb2N1cyAmJiB0aGlzLmZvY3VzZWRJdGVtKSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzZWRJdGVtLmVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyB1cGRhdGVTY3JvbGxQb3NpdGlvbigpIHtcbiAgICAgICAgaWYgKCF0aGlzLnZpcnREaXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRJdGVtKSB7XG4gICAgICAgICAgICB0aGlzLnZpcnREaXIuc2Nyb2xsVG8oMCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHRhcmdldFNjcm9sbCA9IHRoaXMudmlydERpci5nZXRTY3JvbGxGb3JJbmRleCh0aGlzLnNlbGVjdGVkSXRlbS5pbmRleCk7XG4gICAgICAgIGNvbnN0IGl0ZW1zSW5WaWV3ID0gdGhpcy52aXJ0RGlyLmlneEZvckNvbnRhaW5lclNpemUgLyB0aGlzLnZpcnREaXIuaWd4Rm9ySXRlbVNpemU7XG4gICAgICAgIHRhcmdldFNjcm9sbCAtPSAoaXRlbXNJblZpZXcgLyAyIC0gMSkgKiB0aGlzLnZpcnREaXIuaWd4Rm9ySXRlbVNpemU7XG4gICAgICAgIHRoaXMudmlydERpci5nZXRTY3JvbGwoKS5zY3JvbGxUb3AgPSB0YXJnZXRTY3JvbGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb25Ub2dnbGVPcGVuaW5nKGU6IElCYXNlQ2FuY2VsYWJsZUJyb3dzZXJFdmVudEFyZ3MpIHtcbiAgICAgICAgY29uc3QgYXJnczogSUJhc2VDYW5jZWxhYmxlQnJvd3NlckV2ZW50QXJncyA9IHsgb3duZXI6IHRoaXMsIGV2ZW50OiBlLmV2ZW50LCBjYW5jZWw6IGZhbHNlIH07XG4gICAgICAgIHRoaXMub3BlbmluZy5lbWl0KGFyZ3MpO1xuICAgICAgICBlLmNhbmNlbCA9IGFyZ3MuY2FuY2VsO1xuICAgICAgICBpZiAoZS5jYW5jZWwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnZpcnREaXIpIHtcbiAgICAgICAgICAgIHRoaXMudmlydERpci5zY3JvbGxQb3NpdGlvbiA9IHRoaXMuX3Njcm9sbFBvc2l0aW9uO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb25Ub2dnbGVDb250ZW50QXBwZW5kZWQoX2V2ZW50OiBUb2dnbGVWaWV3RXZlbnRBcmdzKSB7XG4gICAgICAgIGlmICghdGhpcy52aXJ0RGlyICYmIHRoaXMuc2VsZWN0ZWRJdGVtKSB7XG4gICAgICAgICAgIHRoaXMuc2Nyb2xsVG9JdGVtKHRoaXMuc2VsZWN0ZWRJdGVtKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG9uVG9nZ2xlT3BlbmVkKCkge1xuICAgICAgICB0aGlzLnVwZGF0ZUl0ZW1Gb2N1cygpO1xuICAgICAgICB0aGlzLm9wZW5lZC5lbWl0KHsgb3duZXI6IHRoaXMgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb25Ub2dnbGVDbG9zaW5nKGU6IElCYXNlQ2FuY2VsYWJsZUJyb3dzZXJFdmVudEFyZ3MpIHtcbiAgICAgICAgY29uc3QgYXJnczogSUJhc2VDYW5jZWxhYmxlQnJvd3NlckV2ZW50QXJncyA9IHsgb3duZXI6IHRoaXMsIGV2ZW50OiBlLmV2ZW50LCBjYW5jZWw6IGZhbHNlIH07XG4gICAgICAgIHRoaXMuY2xvc2luZy5lbWl0KGFyZ3MpO1xuICAgICAgICBlLmNhbmNlbCA9IGFyZ3MuY2FuY2VsO1xuICAgICAgICBpZiAoZS5jYW5jZWwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy52aXJ0RGlyKSB7XG4gICAgICAgICAgICB0aGlzLl9zY3JvbGxQb3NpdGlvbiA9IHRoaXMudmlydERpci5zY3JvbGxQb3NpdGlvbjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG9uVG9nZ2xlQ2xvc2VkKCkge1xuICAgICAgICB0aGlzLmZvY3VzSXRlbShmYWxzZSk7XG4gICAgICAgIHRoaXMuY2xvc2VkLmVtaXQoeyBvd25lcjogdGhpcyB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uLmNsZWFyKHRoaXMuaWQpO1xuICAgICAgICB0aGlzLnNlbGVjdGlvbi5jbGVhcihgJHt0aGlzLmlkfS1hY3RpdmVgKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgY2FsY3VsYXRlU2Nyb2xsUG9zaXRpb24oaXRlbTogSWd4RHJvcERvd25JdGVtQmFzZURpcmVjdGl2ZSk6IG51bWJlciB7XG4gICAgICAgIGlmICghaXRlbSkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBlbGVtZW50UmVjdCA9IGl0ZW0uZWxlbWVudC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCBwYXJlbnRSZWN0ID0gdGhpcy5zY3JvbGxDb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IHNjcm9sbERlbHRhID0gcGFyZW50UmVjdC50b3AgLSBlbGVtZW50UmVjdC50b3A7XG4gICAgICAgIGxldCBzY3JvbGxQb3NpdGlvbiA9IHRoaXMuc2Nyb2xsQ29udGFpbmVyLnNjcm9sbFRvcCAtIHNjcm9sbERlbHRhO1xuXG4gICAgICAgIGNvbnN0IGRyb3BEb3duSGVpZ2h0ID0gdGhpcy5zY3JvbGxDb250YWluZXIuY2xpZW50SGVpZ2h0O1xuICAgICAgICBzY3JvbGxQb3NpdGlvbiAtPSBkcm9wRG93bkhlaWdodCAvIDI7XG4gICAgICAgIHNjcm9sbFBvc2l0aW9uICs9IGl0ZW0uZWxlbWVudEhlaWdodCAvIDI7XG5cbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3Ioc2Nyb2xsUG9zaXRpb24pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgaWYgKGNoYW5nZXMuaWQpIHtcbiAgICAgICAgICAgIC8vIHRlbXAgd29ya2Fyb3VuZCB1bnRpbCBmaXggLS0+IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzM0OTkyXG4gICAgICAgICAgICB0aGlzLnRvZ2dsZURpcmVjdGl2ZS5pZCA9IGNoYW5nZXMuaWQuY3VycmVudFZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMudmlydERpcikge1xuICAgICAgICAgICAgdGhpcy52aXJ0RGlyLmlneEZvckl0ZW1TaXplID0gMjg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogS2V5ZG93biBIYW5kbGVyICovXG4gICAgcHVibGljIG92ZXJyaWRlIG9uSXRlbUFjdGlvbktleShrZXk6IERyb3BEb3duQWN0aW9uS2V5LCBldmVudD86IEV2ZW50KSB7XG4gICAgICAgIHN1cGVyLm9uSXRlbUFjdGlvbktleShrZXksIGV2ZW50KTtcbiAgICAgICAgdGhpcy5jbG9zZShldmVudCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVmlydHVhbCBzY3JvbGwgaW1wbGVtZW50YXRpb25cbiAgICAgKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIG5hdmlnYXRlRmlyc3QoKSB7XG4gICAgICAgIGlmICh0aGlzLnZpcnREaXIpIHtcbiAgICAgICAgICAgIHRoaXMubmF2aWdhdGVJdGVtKDApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3VwZXIubmF2aWdhdGVGaXJzdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgbmF2aWdhdGVMYXN0KCkge1xuICAgICAgICBpZiAodGhpcy52aXJ0RGlyKSB7XG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRlSXRlbSh0aGlzLnZpcnREaXIudG90YWxJdGVtQ291bnQgPyB0aGlzLnZpcnREaXIudG90YWxJdGVtQ291bnQgLSAxIDogdGhpcy52aXJ0RGlyLmlneEZvck9mLmxlbmd0aCAtIDEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3VwZXIubmF2aWdhdGVMYXN0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBuYXZpZ2F0ZU5leHQoKSB7XG4gICAgICAgIGlmICh0aGlzLnZpcnREaXIpIHtcbiAgICAgICAgICAgIHRoaXMubmF2aWdhdGVJdGVtKHRoaXMuX2ZvY3VzZWRJdGVtID8gdGhpcy5fZm9jdXNlZEl0ZW0uaW5kZXggKyAxIDogMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdXBlci5uYXZpZ2F0ZU5leHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIG5hdmlnYXRlUHJldigpIHtcbiAgICAgICAgaWYgKHRoaXMudmlydERpcikge1xuICAgICAgICAgICAgdGhpcy5uYXZpZ2F0ZUl0ZW0odGhpcy5fZm9jdXNlZEl0ZW0gPyB0aGlzLl9mb2N1c2VkSXRlbS5pbmRleCAtIDEgOiAwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN1cGVyLm5hdmlnYXRlUHJldigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlcyB0aGUgYHNlbGVjdGlvbkNoYW5naW5nYCBlbWl0IGFuZCB0aGUgZHJvcCBkb3duIHRvZ2dsZSB3aGVuIHNlbGVjdGlvbiBjaGFuZ2VzXG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICogQHBhcmFtIG5ld1NlbGVjdGlvblxuICAgICAqIEBwYXJhbSBldmVudFxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBzZWxlY3RJdGVtKG5ld1NlbGVjdGlvbj86IElneERyb3BEb3duSXRlbUJhc2VEaXJlY3RpdmUsIGV2ZW50PzogRXZlbnQpIHtcbiAgICAgICAgY29uc3Qgb2xkU2VsZWN0aW9uID0gdGhpcy5zZWxlY3RlZEl0ZW07XG4gICAgICAgIGlmICghbmV3U2VsZWN0aW9uKSB7XG4gICAgICAgICAgICBuZXdTZWxlY3Rpb24gPSB0aGlzLmZvY3VzZWRJdGVtO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuZXdTZWxlY3Rpb24gPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAobmV3U2VsZWN0aW9uIGluc3RhbmNlb2YgSWd4RHJvcERvd25JdGVtQmFzZURpcmVjdGl2ZSAmJiBuZXdTZWxlY3Rpb24uaXNIZWFkZXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy52aXJ0RGlyKSB7XG4gICAgICAgICAgICBuZXdTZWxlY3Rpb24gPSB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IG5ld1NlbGVjdGlvbi52YWx1ZSxcbiAgICAgICAgICAgICAgICBpbmRleDogbmV3U2VsZWN0aW9uLmluZGV4XG4gICAgICAgICAgICB9IGFzIElneERyb3BEb3duSXRlbUJhc2VEaXJlY3RpdmU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYXJnczogSVNlbGVjdGlvbkV2ZW50QXJncyA9IHsgb2xkU2VsZWN0aW9uLCBuZXdTZWxlY3Rpb24sIGNhbmNlbDogZmFsc2UsIG93bmVyOnRoaXMgfTtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2luZy5lbWl0KGFyZ3MpO1xuXG4gICAgICAgIGlmICghYXJncy5jYW5jZWwpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzU2VsZWN0aW9uVmFsaWQoYXJncy5uZXdTZWxlY3Rpb24pKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24uc2V0KHRoaXMuaWQsIG5ldyBTZXQoW2FyZ3MubmV3U2VsZWN0aW9uXSkpO1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy52aXJ0RGlyKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvbGRTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9sZFNlbGVjdGlvbi5zZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChhcmdzLm5ld1NlbGVjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXJncy5uZXdTZWxlY3Rpb24uc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChldmVudCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZURpcmVjdGl2ZS5jbG9zZShldmVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BsZWFzZSBwcm92aWRlIGEgdmFsaWQgZHJvcC1kb3duIGl0ZW0gZm9yIHRoZSBzZWxlY3Rpb24hJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbGVhcnMgdGhlIHNlbGVjdGlvbiBvZiB0aGUgZHJvcGRvd25cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy5kcm9wZG93bi5jbGVhclNlbGVjdGlvbigpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBjbGVhclNlbGVjdGlvbigpIHtcbiAgICAgICAgY29uc3Qgb2xkU2VsZWN0aW9uID0gdGhpcy5zZWxlY3RlZEl0ZW07XG4gICAgICAgIGNvbnN0IG5ld1NlbGVjdGlvbjogSWd4RHJvcERvd25JdGVtQmFzZURpcmVjdGl2ZSA9IG51bGw7XG4gICAgICAgIGNvbnN0IGFyZ3M6IElTZWxlY3Rpb25FdmVudEFyZ3MgPSB7IG9sZFNlbGVjdGlvbiwgbmV3U2VsZWN0aW9uLCBjYW5jZWw6IGZhbHNlLCBvd25lcjogdGhpcyB9O1xuICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5naW5nLmVtaXQoYXJncyk7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbSAmJiAhYXJncy5jYW5jZWwpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtLnNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbi5jbGVhcih0aGlzLmlkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyB3aGV0aGVyIHRoZSBzZWxlY3Rpb24gaXMgdmFsaWRcbiAgICAgKiBgbnVsbGAgLSB0aGUgc2VsZWN0aW9uIHNob3VsZCBiZSBlbXB0aWVkXG4gICAgICogVmlydHVhbD8gLSB0aGUgc2VsZWN0aW9uIHNob3VsZCBhdCBsZWFzdCBoYXZlIGFuZCBgaW5kZXhgIGFuZCBgdmFsdWVgIHByb3BlcnR5XG4gICAgICogTm9uLXZpcnR1YWw/IC0gdGhlIHNlbGVjdGlvbiBzaG91bGQgYmUgYSB2YWxpZCBkcm9wLWRvd24gaXRlbSBhbmQgKipub3QqKiBiZSBhIGhlYWRlclxuICAgICAqL1xuICAgIHByb3RlY3RlZCBpc1NlbGVjdGlvblZhbGlkKHNlbGVjdGlvbjogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBzZWxlY3Rpb24gPT09IG51bGxcbiAgICAgICAgfHwgKHRoaXMudmlydERpciAmJiBzZWxlY3Rpb24uaGFzT3duUHJvcGVydHkoJ3ZhbHVlJykgJiYgc2VsZWN0aW9uLmhhc093blByb3BlcnR5KCdpbmRleCcpKVxuICAgICAgICB8fCAoc2VsZWN0aW9uIGluc3RhbmNlb2YgSWd4RHJvcERvd25JdGVtQ29tcG9uZW50ICYmICFzZWxlY3Rpb24uaXNIZWFkZXIpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzY3JvbGxUb0l0ZW0oaXRlbTogSWd4RHJvcERvd25JdGVtQmFzZURpcmVjdGl2ZSkge1xuICAgICAgICB0aGlzLnNjcm9sbENvbnRhaW5lci5zY3JvbGxUb3AgPSB0aGlzLmNhbGN1bGF0ZVNjcm9sbFBvc2l0aW9uKGl0ZW0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBmb2N1c0l0ZW0odmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHZhbHVlIHx8IHRoaXMuX2ZvY3VzZWRJdGVtKSB7XG4gICAgICAgICAgICB0aGlzLl9mb2N1c2VkSXRlbS5mb2N1c2VkID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgdXBkYXRlSXRlbUZvY3VzKCkge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNlZEl0ZW0gPSB0aGlzLnNlbGVjdGVkSXRlbTtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNJdGVtKHRydWUpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYWxsb3dJdGVtc0ZvY3VzKSB7XG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRlRmlyc3QoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBza2lwSGVhZGVyKGRpcmVjdGlvbjogTmF2aWdhdGUpIHtcbiAgICAgICAgaWYgKCF0aGlzLmZvY3VzZWRJdGVtKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZm9jdXNlZEl0ZW0uaXNIZWFkZXIgfHwgdGhpcy5mb2N1c2VkSXRlbS5kaXNhYmxlZCkge1xuICAgICAgICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gTmF2aWdhdGUuVXApIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRlUHJldigpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRlTmV4dCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0luZGV4T3V0T2ZCb3VuZHMoaW5kZXg6IG51bWJlciwgZGlyZWN0aW9uOiBOYXZpZ2F0ZSkge1xuICAgICAgICBjb25zdCB2aXJ0U3RhdGUgPSB0aGlzLnZpcnREaXIuc3RhdGU7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRQb3NpdGlvbiA9IHRoaXMudmlydERpci5nZXRTY3JvbGwoKS5zY3JvbGxUb3A7XG4gICAgICAgIGNvbnN0IGl0ZW1Qb3NpdGlvbiA9IHRoaXMudmlydERpci5nZXRTY3JvbGxGb3JJbmRleChpbmRleCwgZGlyZWN0aW9uID09PSBOYXZpZ2F0ZS5Eb3duKTtcbiAgICAgICAgY29uc3QgaW5kZXhPdXRPZkNodW5rID0gaW5kZXggPCB2aXJ0U3RhdGUuc3RhcnRJbmRleCB8fCBpbmRleCA+IHZpcnRTdGF0ZS5jaHVua1NpemUgKyB2aXJ0U3RhdGUuc3RhcnRJbmRleDtcbiAgICAgICAgY29uc3Qgc2Nyb2xsTmVlZGVkID0gZGlyZWN0aW9uID09PSBOYXZpZ2F0ZS5Eb3duID8gY3VycmVudFBvc2l0aW9uIDwgaXRlbVBvc2l0aW9uIDogY3VycmVudFBvc2l0aW9uID4gaXRlbVBvc2l0aW9uO1xuICAgICAgICBjb25zdCBzdWJSZXF1aXJlZCA9IGluZGV4T3V0T2ZDaHVuayB8fCBzY3JvbGxOZWVkZWQ7XG4gICAgICAgIHJldHVybiBzdWJSZXF1aXJlZDtcbiAgICB9XG59XG5cbiIsIjxkaXYgY2xhc3M9XCJpZ3gtZHJvcC1kb3duX19saXN0XCIgW3N0eWxlLndpZHRoXT1cIndpZHRoXCJcbiAgICBpZ3hUb2dnbGVcbiAgICAoYXBwZW5kZWQpPVwib25Ub2dnbGVDb250ZW50QXBwZW5kZWQoJGV2ZW50KVwiXG4gICAgKG9wZW5pbmcpPVwib25Ub2dnbGVPcGVuaW5nKCRldmVudClcIiAob3BlbmVkKT1cIm9uVG9nZ2xlT3BlbmVkKClcIlxuICAgIChjbG9zaW5nKT1cIm9uVG9nZ2xlQ2xvc2luZygkZXZlbnQpXCIgKGNsb3NlZCk9XCJvblRvZ2dsZUNsb3NlZCgpXCI+XG4gICAgPGRpdiBjbGFzcz1cImlneC1kcm9wLWRvd25fX2xpc3Qtc2Nyb2xsXCIgI3Njcm9sbENvbnRhaW5lciBbYXR0ci5pZF09XCJsaXN0SWRcIiByb2xlPVwibGlzdGJveFwiIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJsYWJlbGxlZEJ5XCJcbiAgICBbc3R5bGUuaGVpZ2h0XT1cImhlaWdodFwiXG4gICAgW3N0eWxlLm1heEhlaWdodF09XCJtYXhIZWlnaHRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb2xsYXBzZWRcIj5cbiAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -175,7 +175,7 @@ export class IgxExpansionPanelComponent extends ToggleAnimationPlayer {
|
|
|
175
175
|
* <igx-expansion-panel #myPanel>
|
|
176
176
|
* ...
|
|
177
177
|
* </igx-expansion-panel>
|
|
178
|
-
* <button (click)="myPanel.collapse($event)">Collpase Panel</button>
|
|
178
|
+
* <button type="button" igxButton (click)="myPanel.collapse($event)">Collpase Panel</button>
|
|
179
179
|
* ```
|
|
180
180
|
*/
|
|
181
181
|
collapse(evt) {
|
|
@@ -203,7 +203,7 @@ export class IgxExpansionPanelComponent extends ToggleAnimationPlayer {
|
|
|
203
203
|
* <igx-expansion-panel #myPanel>
|
|
204
204
|
* ...
|
|
205
205
|
* </igx-expansion-panel>
|
|
206
|
-
* <button (click)="myPanel.expand($event)">Expand Panel</button>
|
|
206
|
+
* <button type="button" igxButton (click)="myPanel.expand($event)">Expand Panel</button>
|
|
207
207
|
* ```
|
|
208
208
|
*/
|
|
209
209
|
expand(evt) {
|
|
@@ -230,7 +230,7 @@ export class IgxExpansionPanelComponent extends ToggleAnimationPlayer {
|
|
|
230
230
|
* <igx-expansion-panel #myPanel>
|
|
231
231
|
* ...
|
|
232
232
|
* </igx-expansion-panel>
|
|
233
|
-
* <button (click)="myPanel.toggle($event)">Expand Panel</button>
|
|
233
|
+
* <button type="button" igxButton (click)="myPanel.toggle($event)">Expand Panel</button>
|
|
234
234
|
* ```
|
|
235
235
|
*/
|
|
236
236
|
toggle(evt) {
|
|
@@ -291,4 +291,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
291
291
|
type: ContentChild,
|
|
292
292
|
args: [IgxExpansionPanelHeaderComponent, { read: IgxExpansionPanelHeaderComponent }]
|
|
293
293
|
}] } });
|
|
294
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwYW5zaW9uLXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9leHBhbnNpb24tcGFuZWwvZXhwYW5zaW9uLXBhbmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9leHBhbnNpb24tcGFuZWwvZXhwYW5zaW9uLXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHSCxTQUFTLEVBQ1QsWUFBWSxFQUVaLFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFFN0YsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbEYsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdEYsT0FBTyxFQUlILDZCQUE2QixFQUNoQyxNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxxQkFBcUIsRUFBMkIsTUFBTSw4QkFBOEIsQ0FBQzs7O0FBRTlGLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztBQU9oQixNQUFNLE9BQU8sMEJBQTJCLFNBQVEscUJBQXFCO0lBQ2pFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0E4Qkc7SUFDSCxJQUNvQixpQkFBaUI7UUFDakMsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDbkMsQ0FBQztJQUNELElBQW9CLGlCQUFpQixDQUFDLEtBQThCO1FBQ2hFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7SUFDcEMsQ0FBQztJQThCRDs7T0FFRztJQUNILElBQ1csYUFBYTtR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LDhCQUE4QixFQUFFO2dCQU8vRSxNQUFNO3NCQURaLFlBQVk7dUJBQUMsZ0NBQWdDLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0NBQWdDLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSWd4QW5ndWxhckFuaW1hdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hbmltYXRpb24vYW5ndWxhci1hbmltYXRpb24tc2VydmljZSc7XG5pbXBvcnQgeyBBbmltYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYW5pbWF0aW9uL2FuaW1hdGlvbic7XG5pbXBvcnQgeyBJZ3hFeHBhbnNpb25QYW5lbEJvZHlDb21wb25lbnQgfSBmcm9tICcuL2V4cGFuc2lvbi1wYW5lbC1ib2R5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hFeHBhbnNpb25QYW5lbEhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgICBJRXhwYW5zaW9uUGFuZWxDYW5jZWxhYmxlRXZlbnRBcmdzLFxuICAgIElFeHBhbnNpb25QYW5lbEV2ZW50QXJncyxcbiAgICBJZ3hFeHBhbnNpb25QYW5lbEJhc2UsXG4gICAgSUdYX0VYUEFOU0lPTl9QQU5FTF9DT01QT05FTlRcbn0gZnJvbSAnLi9leHBhbnNpb24tcGFuZWwuY29tbW9uJztcbmltcG9ydCB7IFRvZ2dsZUFuaW1hdGlvblBsYXllciwgVG9nZ2xlQW5pbWF0aW9uU2V0dGluZ3MgfSBmcm9tICcuL3RvZ2dsZS1hbmltYXRpb24tY29tcG9uZW50JztcblxubGV0IE5FWFRfSUQgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2lneC1leHBhbnNpb24tcGFuZWwnLFxuICAgIHRlbXBsYXRlVXJsOiAnZXhwYW5zaW9uLXBhbmVsLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IElHWF9FWFBBTlNJT05fUEFORUxfQ09NUE9ORU5ULCB1c2VFeGlzdGluZzogSWd4RXhwYW5zaW9uUGFuZWxDb21wb25lbnQgfV1cbn0pXG5leHBvcnQgY2xhc3MgSWd4RXhwYW5zaW9uUGFuZWxDb21wb25lbnQgZXh0ZW5kcyBUb2dnbGVBbmltYXRpb25QbGF5ZXIgaW1wbGVtZW50cyBJZ3hFeHBhbnNpb25QYW5lbEJhc2UsIEFmdGVyQ29udGVudEluaXQge1xuICAgIC8qKlxuICAgICAqIFNldHMvZ2V0cyB0aGUgYW5pbWF0aW9uIHNldHRpbmdzIG9mIHRoZSBleHBhbnNpb24gcGFuZWwgY29tcG9uZW50XG4gICAgICogT3BlbiBhbmQgQ2xvc2UgYW5pbWF0aW9uIHNob3VsZCBiZSBwYXNzZWRcbiAgICAgKlxuICAgICAqIEdldFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgY29uc3QgY3VycmVudEFuaW1hdGlvbnMgPSB0aGlzLnBhbmVsLmFuaW1hdGlvblNldHRpbmdzO1xuICAgICAqIGBgYFxuICAgICAqIFNldFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgaW1wb3J0IHsgc2xpZGVJbkxlZnQsIHNsaWRlT3V0UmlnaHQgfSBmcm9tICdpZ25pdGV1aS1hbmd1bGFyJztcbiAgICAgKiAgLi4uXG4gICAgICogIHRoaXMucGFuZWwuYW5pbWF0aW9uc1NldHRpbmdzID0ge1xuICAgICAqICAgICAgb3BlbkFuaW1hdGlvbjogc2xpZGVJbkxlZnQsXG4gICAgICogICAgICBjbG9zZUFuaW1hdGlvbjogc2xpZGVPdXRSaWdodFxuICAgICAqIH07XG4gICAgICogYGBgXG4gICAgICogb3IgdmlhIHRlbXBsYXRlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICBpbXBvcnQgeyBzbGlkZUluTGVmdCwgc2xpZGVPdXRSaWdodCB9IGZyb20gJ2lnbml0ZXVpLWFuZ3VsYXInO1xuICAgICAqICAuLi5cbiAgICAgKiAgbXlDdXN0b21BbmltYXRpb25PYmplY3QgPSB7XG4gICAgICogICAgICBvcGVuQW5pbWF0aW9uOiBzbGlkZUluTGVmdCxcbiAgICAgKiAgICAgIGNsb3NlQW5pbWF0aW9uOiBzbGlkZU91dFJpZ2h0XG4gICAgICogfTtcbiAgICAgKiBgYGBodG1sXG4gICAgICogIDxpZ3gtZXhwYW5zaW9uLXBhbmVsIFthbmltYXRpb25TZXR0aW5nc109J215Q3VzdG9tQW5pbWF0aW9uT2JqZWN0Jz5cbiAgICAgKiAgLi4uXG4gICAgICogIDwvaWd4LWV4cGFuc2lvbi1wYW5lbD5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgYW5pbWF0aW9uU2V0dGluZ3MoKTogVG9nZ2xlQW5pbWF0aW9uU2V0dGluZ3Mge1xuICAgICAgICByZXR1cm4gdGhpcy5fYW5pbWF0aW9uU2V0dGluZ3M7XG4gICAgfVxuICAgIHB1YmxpYyBvdmVycmlkZSBzZXQgYW5pbWF0aW9uU2V0dGluZ3ModmFsdWU6IFRvZ2dsZUFuaW1hdGlvblNldHRpbmdzKSB7XG4gICAgICAgIHRoaXMuX2FuaW1hdGlvblNldHRpbmdzID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cy9nZXRzIHRoZSBgaWRgIG9mIHRoZSBleHBhbnNpb24gcGFuZWwgY29tcG9uZW50LlxuICAgICAqIElmIG5vdCBzZXQsIGBpZGAgd2lsbCBoYXZlIHZhbHVlIGBcImlneC1leHBhbnNpb24tcGFuZWwtMFwiYDtcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1leHBhbnNpb24tcGFuZWwgaWQgPSBcIm15LWZpcnN0LWV4cGFuc2lvbi1wYW5lbFwiPjwvaWd4LWV4cGFuc2lvbi1wYW5lbD5cbiAgICAgKiBgYGBcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IHBhbmVsSWQgPSAgdGhpcy5wYW5lbC5pZDtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBJZ3hFeHBhbnNpb25QYW5lbENvbXBvbmVudFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5pZCcpXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaWQgPSBgaWd4LWV4cGFuc2lvbi1wYW5lbC0ke05FWFRfSUQrK31gO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWV4cGFuc2lvbi1wYW5lbCcpXG4gICAgcHVibGljIGNzc0NsYXNzID0gJ2lneC1leHBhbnNpb24tcGFuZWwnO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWV4cGFuc2lvbi1wYW5lbC0tZXhwYW5kZWQnKVxuICAgIHByaXZhdGUgb3BlbmVkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWV4cGFuZGVkJylcbiAgICBwdWJsaWMgZ2V0IHBhbmVsRXhwYW5kZWQoKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy5jb2xsYXBzZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cy9zZXRzIHdoZXRoZXIgdGhlIGNvbXBvbmVudCBpcyBjb2xsYXBzZWQgKGl0cyBjb250ZW50IGlzIGhpZGRlbilcbiAgICAgKiBHZXRcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogIGNvbnN0IG15UGFuZWxTdGF0ZTogYm9vbGVhbiA9IHRoaXMucGFuZWwuY29sbGFwc2VkO1xuICAgICAqIGBgYFxuICAgICAqIFNldFxuICAgICAqIGBgYGh0bWxcbiAgICAgKiAgdGhpcy5wYW5lbC5jb2xsYXBzZWQgPSB0cnVlO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogVHdvLXdheSBkYXRhIGJpbmRpbmc6XG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZXhwYW5zaW9uLXBhbmVsIFsoY29sbGFwc2VkKV09XCJtb2RlbC5pc0NvbGxhcHNlZFwiPjwvaWd4LWV4cGFuc2lvbi1wYW5lbD5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjb2xsYXBzZWQgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjb2xsYXBzZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0dGVkIHdoZW4gdGhlIGV4cGFuc2lvbiBwYW5lbCBzdGFydHMgY29sbGFwc2luZ1xuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgaGFuZGxlQ29sbGFwc2luZyhldmVudDogSUV4cGFuc2lvblBhbmVsQ2FuY2VsYWJsZUV2ZW50QXJncylcbiAgICAgKiBgYGBcbiAgICAgKiBgYGBodG1sXG4gICAgICogIDxpZ3gtZXhwYW5zaW9uLXBhbmVsIChjb250ZW50Q29sbGFwc2luZyk9XCJoYW5kbGVDb2xsYXBzaW5nKCRldmVudClcIj5cbiAgICAgKiAgICAgIC4uLlxuICAgICAqICA8L2lneC1leHBhbnNpb24tcGFuZWw+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgIEBPdXRwdXQoKVxuICAgICBwdWJsaWMgY29udGVudENvbGxhcHNpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPElFeHBhbnNpb25QYW5lbENhbmNlbGFibGVFdmVudEFyZ3M+KCk7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0dGVkIHdoZW4gdGhlIGV4cGFuc2lvbiBwYW5lbCBmaW5pc2hlcyBjb2xsYXBzaW5nXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICBoYW5kbGVDb2xsYXBzZWQoZXZlbnQ6IElFeHBhbnNpb25QYW5lbEV2ZW50QXJncylcbiAgICAgKiBgYGBcbiAgICAgKiBgYGBodG1sXG4gICAgICogIDxpZ3gtZXhwYW5zaW9uLXBhbmVsIChjb250ZW50Q29sbGFwc2VkKT1cImhhbmRsZUNvbGxhcHNlZCgkZXZlbnQpXCI+XG4gICAgICogICAgICAuLi5cbiAgICAgKiAgPC9pZ3gtZXhwYW5zaW9uLXBhbmVsPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjb250ZW50Q29sbGFwc2VkID0gbmV3IEV2ZW50RW1pdHRlcjxJRXhwYW5zaW9uUGFuZWxFdmVudEFyZ3M+KCk7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0dGVkIHdoZW4gdGhlIGV4cGFuc2lvbiBwYW5lbCBzdGFydHMgZXhwYW5kaW5nXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICBoYW5kbGVFeHBhbmRpbmcoZXZlbnQ6IElFeHBhbnNpb25QYW5lbENhbmNlbGFibGVFdmVudEFyZ3MpXG4gICAgICogYGBgXG4gICAgICogYGBgaHRtbFxuICAgICAqICA8aWd4LWV4cGFuc2lvbi1wYW5lbCAoY29udGVudEV4cGFuZGluZyk9XCJoYW5kbGVFeHBhbmRpbmcoJGV2ZW50KVwiPlxuICAgICAqICAgICAgLi4uXG4gICAgICogIDwvaWd4LWV4cGFuc2lvbi1wYW5lbD5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICAgQE91dHB1dCgpXG4gICAgIHB1YmxpYyBjb250ZW50RXhwYW5kaW5nID0gbmV3IEV2ZW50RW1pdHRlcjxJRXhwYW5zaW9uUGFuZWxDYW5jZWxhYmxlRXZlbnRBcmdzPigpO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHRlZCB3aGVuIHRoZSBleHBhbnNpb24gcGFuZWwgZmluaXNoZXMgZXhwYW5kaW5nXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICBoYW5kbGVFeHBhbmRlZChldmVudDogSUV4cGFuc2lvblBhbmVsRXZlbnRBcmdzKVxuICAgICAqIGBgYFxuICAgICAqIGBgYGh0bWxcbiAgICAgKiAgPGlneC1leHBhbnNpb24tcGFuZWwgKGNvbnRlbnRFeHBhbmRlZCk9XCJoYW5kbGVFeHBhbmRlZCgkZXZlbnQpXCI+XG4gICAgICogICAgICAuLi5cbiAgICAgKiAgPC9pZ3gtZXhwYW5zaW9uLXBhbmVsPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjb250ZW50RXhwYW5kZWQgPSBuZXcgRXZlbnRFbWl0dGVyPElFeHBhbnNpb25QYW5lbEV2ZW50QXJncz4oKTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGhlYWRlcklkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5oZWFkZXIgPyBgJHt0aGlzLmlkfS1oZWFkZXJgIDogJyc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IG5hdGl2ZUVsZW1lbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZChJZ3hFeHBhbnNpb25QYW5lbEJvZHlDb21wb25lbnQsIHsgcmVhZDogSWd4RXhwYW5zaW9uUGFuZWxCb2R5Q29tcG9uZW50IH0pXG4gICAgcHVibGljIGJvZHk6IElneEV4cGFuc2lvblBhbmVsQm9keUNvbXBvbmVudDtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKElneEV4cGFuc2lvblBhbmVsSGVhZGVyQ29tcG9uZW50LCB7IHJlYWQ6IElneEV4cGFuc2lvblBhbmVsSGVhZGVyQ29tcG9uZW50IH0pXG4gICAgcHVibGljIGhlYWRlcjogSWd4RXhwYW5zaW9uUGFuZWxIZWFkZXJDb21wb25lbnQ7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChJZ3hBbmd1bGFyQW5pbWF0aW9uU2VydmljZSkgYW5pbWF0aW9uU2VydmljZTogQW5pbWF0aW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIGVsZW1lbnRSZWY/OiBFbGVtZW50UmVmKSB7XG4gICAgICAgIHN1cGVyKGFuaW1hdGlvblNlcnZpY2UpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuYm9keSAmJiB0aGlzLmhlYWRlcikge1xuICAgICAgICAgICAgLy8gc2NoZWR1bGUgYXQgZW5kIG9mIHR1cm46XG4gICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmJvZHkubGFiZWxsZWRCeSA9IHRoaXMuYm9keS5sYWJlbGxlZEJ5IHx8IHRoaXMuaGVhZGVySWQ7XG4gICAgICAgICAgICAgICAgdGhpcy5ib2R5LmxhYmVsID0gdGhpcy5ib2R5LmxhYmVsIHx8IHRoaXMuaWQgKyAnLXJlZ2lvbic7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbGxhcHNlcyB0aGUgcGFuZWxcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiAgPGlneC1leHBhbnNpb24tcGFuZWwgI215UGFuZWw+XG4gICAgICogICAgICAuLi5cbiAgICAgKiAgPC9pZ3gtZXhwYW5zaW9uLXBhbmVsPlxuICAgICAqICA8YnV0dG9uIChjbGljayk9XCJteVBhbmVsLmNvbGxhcHNlKCRldmVudClcIj5Db2xscGFzZSBQYW5lbDwvYnV0dG9uPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBjb2xsYXBzZShldnQ/OiBFdmVudCkge1xuICAgICAgICAvLyBJZiBleHBhbnNpb24gcGFuZWwgaXMgYWxyZWFkeSBjb2xsYXBzZWQgb3IgaXMgY29sbGFwc2luZywgZG8gbm90aGluZ1xuICAgICAgICBpZiAodGhpcy5jb2xsYXBzZWQgfHwgdGhpcy5jbG9zZUFuaW1hdGlvblBsYXllcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFyZ3MgPSB7IGV2ZW50OiBldnQsIHBhbmVsOiB0aGlzLCBvd25lcjogdGhpcywgY2FuY2VsOiBmYWxzZSB9O1xuICAgICAgICB0aGlzLmNvbnRlbnRDb2xsYXBzaW5nLmVtaXQoYXJncyk7XG4gICAgICAgIGlmIChhcmdzLmNhbmNlbCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub3BlbmVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMucGxheUNsb3NlQW5pbWF0aW9uKFxuICAgICAgICAgICAgdGhpcy5ib2R5Py5lbGVtZW50LFxuICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY29udGVudENvbGxhcHNlZC5lbWl0KHsgZXZlbnQ6IGV2dCwgb3duZXI6IHRoaXMgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5jb2xsYXBzZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuY29sbGFwc2VkQ2hhbmdlLmVtaXQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXhwYW5kcyB0aGUgcGFuZWxcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiAgPGlneC1leHBhbnNpb24tcGFuZWwgI215UGFuZWw+XG4gICAgICogICAgICAuLi5cbiAgICAgKiAgPC9pZ3gtZXhwYW5zaW9uLXBhbmVsPlxuICAgICAqICA8YnV0dG9uIChjbGljayk9XCJteVBhbmVsLmV4cGFuZCgkZXZlbnQpXCI+RXhwYW5kIFBhbmVsPC9idXR0b24+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGV4cGFuZChldnQ/OiBFdmVudCkge1xuICAgICAgICBpZiAoIXRoaXMuY29sbGFwc2VkKSB7IC8vIElmIHRoZSBwYW5lbCBpcyBhbHJlYWR5IG9wZW5lZCwgZG8gbm90aGluZ1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFyZ3MgPSB7IGV2ZW50OiBldnQsIHBhbmVsOiB0aGlzLCBvd25lcjogdGhpcywgY2FuY2VsOiBmYWxzZSB9O1xuICAgICAgICB0aGlzLmNvbnRlbnRFeHBhbmRpbmcuZW1pdChhcmdzKTtcbiAgICAgICAgaWYgKGFyZ3MuY2FuY2VsID09PSB0cnVlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jb2xsYXBzZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5vcGVuZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLmNvbGxhcHNlZENoYW5nZS5lbWl0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB0aGlzLnBsYXlPcGVuQW5pbWF0aW9uKFxuICAgICAgICAgICAgdGhpcy5ib2R5Py5lbGVtZW50LFxuICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY29udGVudEV4cGFuZGVkLmVtaXQoeyBldmVudDogZXZ0LCBvd25lcjogdGhpcyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUb2dnbGVzIHRoZSBwYW5lbFxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqICA8aWd4LWV4cGFuc2lvbi1wYW5lbCAjbXlQYW5lbD5cbiAgICAgKiAgICAgIC4uLlxuICAgICAqICA8L2lneC1leHBhbnNpb24tcGFuZWw+XG4gICAgICogIDxidXR0b24gKGNsaWNrKT1cIm15UGFuZWwudG9nZ2xlKCRldmVudClcIj5FeHBhbmQgUGFuZWw8L2J1dHRvbj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgdG9nZ2xlKGV2dD86IEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmNvbGxhcHNlZCkge1xuICAgICAgICAgICAgdGhpcy5vcGVuKGV2dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlKGV2dCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb3BlbihldnQ/OiBFdmVudCkge1xuICAgICAgICB0aGlzLmV4cGFuZChldnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbG9zZShldnQ/OiBFdmVudCkge1xuICAgICAgICB0aGlzLmNvbGxhcHNlKGV2dCk7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRlbnQgc2VsZWN0PVwiaWd4LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJcIj48L25nLWNvbnRlbnQ+XG48bmctY29udGVudCAqbmdJZj1cIiFjb2xsYXBzZWRcIiBzZWxlY3Q9XCJpZ3gtZXhwYW5zaW9uLXBhbmVsLWJvZHlcIj48L25nLWNvbnRlbnQ+XG4iXX0=
|
|
294
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwYW5zaW9uLXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9leHBhbnNpb24tcGFuZWwvZXhwYW5zaW9uLXBhbmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9leHBhbnNpb24tcGFuZWwvZXhwYW5zaW9uLXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHSCxTQUFTLEVBQ1QsWUFBWSxFQUVaLFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFFN0YsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbEYsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdEYsT0FBTyxFQUlILDZCQUE2QixFQUNoQyxNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxxQkFBcUIsRUFBMkIsTUFBTSw4QkFBOEIsQ0FBQzs7O0FBRTlGLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztBQU9oQixNQUFNLE9BQU8sMEJBQTJCLFNBQVEscUJBQXFCO0lBQ2pFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0E4Qkc7SUFDSCxJQUNvQixpQkFBaUI7UUFDakMsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDbkMsQ0FBQztJQUNELElBQW9CLGlCQUFpQixDQUFDLEtBQThCO1FBQ2hFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7SUFDcEMsQ0FBQztJQThCRDs7T0FFRztJQUNILElBQ1csYUFBYTtR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LDhCQUE4QixFQUFFO2dCQU8vRSxNQUFNO3NCQURaLFlBQVk7dUJBQUMsZ0NBQWdDLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0NBQWdDLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSWd4QW5ndWxhckFuaW1hdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hbmltYXRpb24vYW5ndWxhci1hbmltYXRpb24tc2VydmljZSc7XG5pbXBvcnQgeyBBbmltYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYW5pbWF0aW9uL2FuaW1hdGlvbic7XG5pbXBvcnQgeyBJZ3hFeHBhbnNpb25QYW5lbEJvZHlDb21wb25lbnQgfSBmcm9tICcuL2V4cGFuc2lvbi1wYW5lbC1ib2R5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hFeHBhbnNpb25QYW5lbEhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgICBJRXhwYW5zaW9uUGFuZWxDYW5jZWxhYmxlRXZlbnRBcmdzLFxuICAgIElFeHBhbnNpb25QYW5lbEV2ZW50QXJncyxcbiAgICBJZ3hFeHBhbnNpb25QYW5lbEJhc2UsXG4gICAgSUdYX0VYUEFOU0lPTl9QQU5FTF9DT01QT05FTlRcbn0gZnJvbSAnLi9leHBhbnNpb24tcGFuZWwuY29tbW9uJztcbmltcG9ydCB7IFRvZ2dsZUFuaW1hdGlvblBsYXllciwgVG9nZ2xlQW5pbWF0aW9uU2V0dGluZ3MgfSBmcm9tICcuL3RvZ2dsZS1hbmltYXRpb24tY29tcG9uZW50JztcblxubGV0IE5FWFRfSUQgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2lneC1leHBhbnNpb24tcGFuZWwnLFxuICAgIHRlbXBsYXRlVXJsOiAnZXhwYW5zaW9uLXBhbmVsLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IElHWF9FWFBBTlNJT05fUEFORUxfQ09NUE9ORU5ULCB1c2VFeGlzdGluZzogSWd4RXhwYW5zaW9uUGFuZWxDb21wb25lbnQgfV1cbn0pXG5leHBvcnQgY2xhc3MgSWd4RXhwYW5zaW9uUGFuZWxDb21wb25lbnQgZXh0ZW5kcyBUb2dnbGVBbmltYXRpb25QbGF5ZXIgaW1wbGVtZW50cyBJZ3hFeHBhbnNpb25QYW5lbEJhc2UsIEFmdGVyQ29udGVudEluaXQge1xuICAgIC8qKlxuICAgICAqIFNldHMvZ2V0cyB0aGUgYW5pbWF0aW9uIHNldHRpbmdzIG9mIHRoZSBleHBhbnNpb24gcGFuZWwgY29tcG9uZW50XG4gICAgICogT3BlbiBhbmQgQ2xvc2UgYW5pbWF0aW9uIHNob3VsZCBiZSBwYXNzZWRcbiAgICAgKlxuICAgICAqIEdldFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgY29uc3QgY3VycmVudEFuaW1hdGlvbnMgPSB0aGlzLnBhbmVsLmFuaW1hdGlvblNldHRpbmdzO1xuICAgICAqIGBgYFxuICAgICAqIFNldFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgaW1wb3J0IHsgc2xpZGVJbkxlZnQsIHNsaWRlT3V0UmlnaHQgfSBmcm9tICdpZ25pdGV1aS1hbmd1bGFyJztcbiAgICAgKiAgLi4uXG4gICAgICogIHRoaXMucGFuZWwuYW5pbWF0aW9uc1NldHRpbmdzID0ge1xuICAgICAqICAgICAgb3BlbkFuaW1hdGlvbjogc2xpZGVJbkxlZnQsXG4gICAgICogICAgICBjbG9zZUFuaW1hdGlvbjogc2xpZGVPdXRSaWdodFxuICAgICAqIH07XG4gICAgICogYGBgXG4gICAgICogb3IgdmlhIHRlbXBsYXRlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICBpbXBvcnQgeyBzbGlkZUluTGVmdCwgc2xpZGVPdXRSaWdodCB9IGZyb20gJ2lnbml0ZXVpLWFuZ3VsYXInO1xuICAgICAqICAuLi5cbiAgICAgKiAgbXlDdXN0b21BbmltYXRpb25PYmplY3QgPSB7XG4gICAgICogICAgICBvcGVuQW5pbWF0aW9uOiBzbGlkZUluTGVmdCxcbiAgICAgKiAgICAgIGNsb3NlQW5pbWF0aW9uOiBzbGlkZU91dFJpZ2h0XG4gICAgICogfTtcbiAgICAgKiBgYGBodG1sXG4gICAgICogIDxpZ3gtZXhwYW5zaW9uLXBhbmVsIFthbmltYXRpb25TZXR0aW5nc109J215Q3VzdG9tQW5pbWF0aW9uT2JqZWN0Jz5cbiAgICAgKiAgLi4uXG4gICAgICogIDwvaWd4LWV4cGFuc2lvbi1wYW5lbD5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgYW5pbWF0aW9uU2V0dGluZ3MoKTogVG9nZ2xlQW5pbWF0aW9uU2V0dGluZ3Mge1xuICAgICAgICByZXR1cm4gdGhpcy5fYW5pbWF0aW9uU2V0dGluZ3M7XG4gICAgfVxuICAgIHB1YmxpYyBvdmVycmlkZSBzZXQgYW5pbWF0aW9uU2V0dGluZ3ModmFsdWU6IFRvZ2dsZUFuaW1hdGlvblNldHRpbmdzKSB7XG4gICAgICAgIHRoaXMuX2FuaW1hdGlvblNldHRpbmdzID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cy9nZXRzIHRoZSBgaWRgIG9mIHRoZSBleHBhbnNpb24gcGFuZWwgY29tcG9uZW50LlxuICAgICAqIElmIG5vdCBzZXQsIGBpZGAgd2lsbCBoYXZlIHZhbHVlIGBcImlneC1leHBhbnNpb24tcGFuZWwtMFwiYDtcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1leHBhbnNpb24tcGFuZWwgaWQgPSBcIm15LWZpcnN0LWV4cGFuc2lvbi1wYW5lbFwiPjwvaWd4LWV4cGFuc2lvbi1wYW5lbD5cbiAgICAgKiBgYGBcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IHBhbmVsSWQgPSAgdGhpcy5wYW5lbC5pZDtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBJZ3hFeHBhbnNpb25QYW5lbENvbXBvbmVudFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5pZCcpXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaWQgPSBgaWd4LWV4cGFuc2lvbi1wYW5lbC0ke05FWFRfSUQrK31gO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWV4cGFuc2lvbi1wYW5lbCcpXG4gICAgcHVibGljIGNzc0NsYXNzID0gJ2lneC1leHBhbnNpb24tcGFuZWwnO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWV4cGFuc2lvbi1wYW5lbC0tZXhwYW5kZWQnKVxuICAgIHByaXZhdGUgb3BlbmVkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWV4cGFuZGVkJylcbiAgICBwdWJsaWMgZ2V0IHBhbmVsRXhwYW5kZWQoKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy5jb2xsYXBzZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cy9zZXRzIHdoZXRoZXIgdGhlIGNvbXBvbmVudCBpcyBjb2xsYXBzZWQgKGl0cyBjb250ZW50IGlzIGhpZGRlbilcbiAgICAgKiBHZXRcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogIGNvbnN0IG15UGFuZWxTdGF0ZTogYm9vbGVhbiA9IHRoaXMucGFuZWwuY29sbGFwc2VkO1xuICAgICAqIGBgYFxuICAgICAqIFNldFxuICAgICAqIGBgYGh0bWxcbiAgICAgKiAgdGhpcy5wYW5lbC5jb2xsYXBzZWQgPSB0cnVlO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogVHdvLXdheSBkYXRhIGJpbmRpbmc6XG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZXhwYW5zaW9uLXBhbmVsIFsoY29sbGFwc2VkKV09XCJtb2RlbC5pc0NvbGxhcHNlZFwiPjwvaWd4LWV4cGFuc2lvbi1wYW5lbD5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjb2xsYXBzZWQgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjb2xsYXBzZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0dGVkIHdoZW4gdGhlIGV4cGFuc2lvbiBwYW5lbCBzdGFydHMgY29sbGFwc2luZ1xuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgaGFuZGxlQ29sbGFwc2luZyhldmVudDogSUV4cGFuc2lvblBhbmVsQ2FuY2VsYWJsZUV2ZW50QXJncylcbiAgICAgKiBgYGBcbiAgICAgKiBgYGBodG1sXG4gICAgICogIDxpZ3gtZXhwYW5zaW9uLXBhbmVsIChjb250ZW50Q29sbGFwc2luZyk9XCJoYW5kbGVDb2xsYXBzaW5nKCRldmVudClcIj5cbiAgICAgKiAgICAgIC4uLlxuICAgICAqICA8L2lneC1leHBhbnNpb24tcGFuZWw+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgIEBPdXRwdXQoKVxuICAgICBwdWJsaWMgY29udGVudENvbGxhcHNpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPElFeHBhbnNpb25QYW5lbENhbmNlbGFibGVFdmVudEFyZ3M+KCk7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0dGVkIHdoZW4gdGhlIGV4cGFuc2lvbiBwYW5lbCBmaW5pc2hlcyBjb2xsYXBzaW5nXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICBoYW5kbGVDb2xsYXBzZWQoZXZlbnQ6IElFeHBhbnNpb25QYW5lbEV2ZW50QXJncylcbiAgICAgKiBgYGBcbiAgICAgKiBgYGBodG1sXG4gICAgICogIDxpZ3gtZXhwYW5zaW9uLXBhbmVsIChjb250ZW50Q29sbGFwc2VkKT1cImhhbmRsZUNvbGxhcHNlZCgkZXZlbnQpXCI+XG4gICAgICogICAgICAuLi5cbiAgICAgKiAgPC9pZ3gtZXhwYW5zaW9uLXBhbmVsPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjb250ZW50Q29sbGFwc2VkID0gbmV3IEV2ZW50RW1pdHRlcjxJRXhwYW5zaW9uUGFuZWxFdmVudEFyZ3M+KCk7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0dGVkIHdoZW4gdGhlIGV4cGFuc2lvbiBwYW5lbCBzdGFydHMgZXhwYW5kaW5nXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICBoYW5kbGVFeHBhbmRpbmcoZXZlbnQ6IElFeHBhbnNpb25QYW5lbENhbmNlbGFibGVFdmVudEFyZ3MpXG4gICAgICogYGBgXG4gICAgICogYGBgaHRtbFxuICAgICAqICA8aWd4LWV4cGFuc2lvbi1wYW5lbCAoY29udGVudEV4cGFuZGluZyk9XCJoYW5kbGVFeHBhbmRpbmcoJGV2ZW50KVwiPlxuICAgICAqICAgICAgLi4uXG4gICAgICogIDwvaWd4LWV4cGFuc2lvbi1wYW5lbD5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICAgQE91dHB1dCgpXG4gICAgIHB1YmxpYyBjb250ZW50RXhwYW5kaW5nID0gbmV3IEV2ZW50RW1pdHRlcjxJRXhwYW5zaW9uUGFuZWxDYW5jZWxhYmxlRXZlbnRBcmdzPigpO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHRlZCB3aGVuIHRoZSBleHBhbnNpb24gcGFuZWwgZmluaXNoZXMgZXhwYW5kaW5nXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICBoYW5kbGVFeHBhbmRlZChldmVudDogSUV4cGFuc2lvblBhbmVsRXZlbnRBcmdzKVxuICAgICAqIGBgYFxuICAgICAqIGBgYGh0bWxcbiAgICAgKiAgPGlneC1leHBhbnNpb24tcGFuZWwgKGNvbnRlbnRFeHBhbmRlZCk9XCJoYW5kbGVFeHBhbmRlZCgkZXZlbnQpXCI+XG4gICAgICogICAgICAuLi5cbiAgICAgKiAgPC9pZ3gtZXhwYW5zaW9uLXBhbmVsPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjb250ZW50RXhwYW5kZWQgPSBuZXcgRXZlbnRFbWl0dGVyPElFeHBhbnNpb25QYW5lbEV2ZW50QXJncz4oKTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGhlYWRlcklkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5oZWFkZXIgPyBgJHt0aGlzLmlkfS1oZWFkZXJgIDogJyc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IG5hdGl2ZUVsZW1lbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZChJZ3hFeHBhbnNpb25QYW5lbEJvZHlDb21wb25lbnQsIHsgcmVhZDogSWd4RXhwYW5zaW9uUGFuZWxCb2R5Q29tcG9uZW50IH0pXG4gICAgcHVibGljIGJvZHk6IElneEV4cGFuc2lvblBhbmVsQm9keUNvbXBvbmVudDtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKElneEV4cGFuc2lvblBhbmVsSGVhZGVyQ29tcG9uZW50LCB7IHJlYWQ6IElneEV4cGFuc2lvblBhbmVsSGVhZGVyQ29tcG9uZW50IH0pXG4gICAgcHVibGljIGhlYWRlcjogSWd4RXhwYW5zaW9uUGFuZWxIZWFkZXJDb21wb25lbnQ7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChJZ3hBbmd1bGFyQW5pbWF0aW9uU2VydmljZSkgYW5pbWF0aW9uU2VydmljZTogQW5pbWF0aW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIGVsZW1lbnRSZWY/OiBFbGVtZW50UmVmKSB7XG4gICAgICAgIHN1cGVyKGFuaW1hdGlvblNlcnZpY2UpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuYm9keSAmJiB0aGlzLmhlYWRlcikge1xuICAgICAgICAgICAgLy8gc2NoZWR1bGUgYXQgZW5kIG9mIHR1cm46XG4gICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmJvZHkubGFiZWxsZWRCeSA9IHRoaXMuYm9keS5sYWJlbGxlZEJ5IHx8IHRoaXMuaGVhZGVySWQ7XG4gICAgICAgICAgICAgICAgdGhpcy5ib2R5LmxhYmVsID0gdGhpcy5ib2R5LmxhYmVsIHx8IHRoaXMuaWQgKyAnLXJlZ2lvbic7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbGxhcHNlcyB0aGUgcGFuZWxcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiAgPGlneC1leHBhbnNpb24tcGFuZWwgI215UGFuZWw+XG4gICAgICogICAgICAuLi5cbiAgICAgKiAgPC9pZ3gtZXhwYW5zaW9uLXBhbmVsPlxuICAgICAqICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBpZ3hCdXR0b24gKGNsaWNrKT1cIm15UGFuZWwuY29sbGFwc2UoJGV2ZW50KVwiPkNvbGxwYXNlIFBhbmVsPC9idXR0b24+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGNvbGxhcHNlKGV2dD86IEV2ZW50KSB7XG4gICAgICAgIC8vIElmIGV4cGFuc2lvbiBwYW5lbCBpcyBhbHJlYWR5IGNvbGxhcHNlZCBvciBpcyBjb2xsYXBzaW5nLCBkbyBub3RoaW5nXG4gICAgICAgIGlmICh0aGlzLmNvbGxhcHNlZCB8fCB0aGlzLmNsb3NlQW5pbWF0aW9uUGxheWVyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYXJncyA9IHsgZXZlbnQ6IGV2dCwgcGFuZWw6IHRoaXMsIG93bmVyOiB0aGlzLCBjYW5jZWw6IGZhbHNlIH07XG4gICAgICAgIHRoaXMuY29udGVudENvbGxhcHNpbmcuZW1pdChhcmdzKTtcbiAgICAgICAgaWYgKGFyZ3MuY2FuY2VsID09PSB0cnVlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vcGVuZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5wbGF5Q2xvc2VBbmltYXRpb24oXG4gICAgICAgICAgICB0aGlzLmJvZHk/LmVsZW1lbnQsXG4gICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZW50Q29sbGFwc2VkLmVtaXQoeyBldmVudDogZXZ0LCBvd25lcjogdGhpcyB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbGxhcHNlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5jb2xsYXBzZWRDaGFuZ2UuZW1pdCh0cnVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFeHBhbmRzIHRoZSBwYW5lbFxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqICA8aWd4LWV4cGFuc2lvbi1wYW5lbCAjbXlQYW5lbD5cbiAgICAgKiAgICAgIC4uLlxuICAgICAqICA8L2lneC1leHBhbnNpb24tcGFuZWw+XG4gICAgICogIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGlneEJ1dHRvbiAoY2xpY2spPVwibXlQYW5lbC5leHBhbmQoJGV2ZW50KVwiPkV4cGFuZCBQYW5lbDwvYnV0dG9uPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBleHBhbmQoZXZ0PzogRXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbGxhcHNlZCkgeyAvLyBJZiB0aGUgcGFuZWwgaXMgYWxyZWFkeSBvcGVuZWQsIGRvIG5vdGhpbmdcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhcmdzID0geyBldmVudDogZXZ0LCBwYW5lbDogdGhpcywgb3duZXI6IHRoaXMsIGNhbmNlbDogZmFsc2UgfTtcbiAgICAgICAgdGhpcy5jb250ZW50RXhwYW5kaW5nLmVtaXQoYXJncyk7XG4gICAgICAgIGlmIChhcmdzLmNhbmNlbCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29sbGFwc2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMub3BlbmVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5jb2xsYXBzZWRDaGFuZ2UuZW1pdChmYWxzZSk7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgdGhpcy5wbGF5T3BlbkFuaW1hdGlvbihcbiAgICAgICAgICAgIHRoaXMuYm9keT8uZWxlbWVudCxcbiAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRFeHBhbmRlZC5lbWl0KHsgZXZlbnQ6IGV2dCwgb3duZXI6IHRoaXMgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVG9nZ2xlcyB0aGUgcGFuZWxcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiAgPGlneC1leHBhbnNpb24tcGFuZWwgI215UGFuZWw+XG4gICAgICogICAgICAuLi5cbiAgICAgKiAgPC9pZ3gtZXhwYW5zaW9uLXBhbmVsPlxuICAgICAqICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBpZ3hCdXR0b24gKGNsaWNrKT1cIm15UGFuZWwudG9nZ2xlKCRldmVudClcIj5FeHBhbmQgUGFuZWw8L2J1dHRvbj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgdG9nZ2xlKGV2dD86IEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmNvbGxhcHNlZCkge1xuICAgICAgICAgICAgdGhpcy5vcGVuKGV2dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlKGV2dCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb3BlbihldnQ/OiBFdmVudCkge1xuICAgICAgICB0aGlzLmV4cGFuZChldnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbG9zZShldnQ/OiBFdmVudCkge1xuICAgICAgICB0aGlzLmNvbGxhcHNlKGV2dCk7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRlbnQgc2VsZWN0PVwiaWd4LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJcIj48L25nLWNvbnRlbnQ+XG48bmctY29udGVudCAqbmdJZj1cIiFjb2xsYXBzZWRcIiBzZWxlY3Q9XCJpZ3gtZXhwYW5zaW9uLXBhbmVsLWJvZHlcIj48L25nLWNvbnRlbnQ+XG4iXX0=
|