@syncfusion/ej2-angular-gantt 34.2.3 → 34.2.4
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/CHANGELOG.md +14 -1
- package/README.md +26 -25
- package/esm2020/src/gantt/columns.directive.mjs +8 -2
- package/esm2020/src/gantt/gantt.component.mjs +14 -2
- package/fesm2015/syncfusion-ej2-angular-gantt.mjs +20 -2
- package/fesm2015/syncfusion-ej2-angular-gantt.mjs.map +1 -1
- package/fesm2020/syncfusion-ej2-angular-gantt.mjs +20 -2
- package/fesm2020/syncfusion-ej2-angular-gantt.mjs.map +1 -1
- package/package.json +4 -4
- package/schematics/utils/lib-details.js +2 -2
- package/schematics/utils/lib-details.ts +2 -2
- package/src/gantt/columns.directive.d.ts +2 -1
- package/src/gantt/gantt.component.d.ts +3 -1
package/CHANGELOG.md
CHANGED
|
@@ -6,11 +6,24 @@
|
|
|
6
6
|
|
|
7
7
|
#### Bug fixes
|
|
8
8
|
|
|
9
|
+
- `#I863781` - Resolved an issue where the toolbar template was not rendered properly in the Gantt Chart.
|
|
10
|
+
- Updated Gantt Chart casing in telemetry to ensure consistent event tracking and reporting.
|
|
11
|
+
|
|
12
|
+
- `F159354` - Issue in locale text of predecessor tooltip has been fixed.
|
|
13
|
+
|
|
14
|
+
## 34.2.3 (2026-08-11)
|
|
15
|
+
|
|
16
|
+
### GanttChart
|
|
17
|
+
|
|
18
|
+
#### Bug fixes
|
|
19
|
+
|
|
9
20
|
- `#I859877` - Resolved the issue where cell editing did not function correctly when using keyboard tab navigation with remote data.
|
|
10
21
|
- `#I859904` - Resolved an issue where parent task dates were not updated when a scheduled child task was changed to an unscheduled task in the Gantt Chart.
|
|
11
22
|
- `#I859902` - Resolved an issue that prevented parent task dates from updating when an unscheduled child task was scheduled in the Gantt Chart.
|
|
23
|
+
- `#I837381` - Resolved an issue where the timeline was rendered incorrectly when both project dates and view dates were configured in the Gantt Chart.
|
|
12
24
|
|
|
13
|
-
- `
|
|
25
|
+
- `#I859904` - Resolved an issue where parent task dates were not updated when a scheduled child task was changed to an unscheduled task in the Gantt Chart.
|
|
26
|
+
- `#I859902` - Resolved an issue that prevented parent task dates from updating when an unscheduled child task was scheduled in the Gantt Chart.
|
|
14
27
|
|
|
15
28
|
## 34.1.33 (2026-07-28)
|
|
16
29
|
|
package/README.md
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
# Angular Gantt Component
|
|
2
2
|
|
|
3
|
-
The [Angular Gantt](https://www.syncfusion.com/
|
|
3
|
+
The [Angular Gantt](https://www.syncfusion.com/gantt-sdk/angular-gantt-chart?utm_source=npm&utm_medium=listing&utm_campaign=angular-gantt-npm) component is project planning and management tool used to display and manage hierarchical tasks with timeline details. It helps assess how long a project should take, determine the resources needed, manage the dependencies between tasks, and plan the order in which the tasks should be completed.
|
|
4
4
|
|
|
5
5
|
<p align="center">
|
|
6
|
-
<a href="https://
|
|
6
|
+
<a href="https://help.syncfusion.com/gantt-sdk/angular/gantt-chart/getting-started/?utm_source=npm&utm_medium=listing&utm_campaign=angular-gantt-npm">Getting Started</a> .
|
|
7
7
|
<a href="https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-gantt-npm#/bootstrap5/gantt/default">Online demos</a> .
|
|
8
|
-
<a href="https://www.syncfusion.com/
|
|
8
|
+
<a href="https://www.syncfusion.com/gantt-sdk/angular-gantt-chart?utm_source=npm&utm_medium=listing&utm_campaign=angular-gantt-npm">Learn more</a>
|
|
9
9
|
</p>
|
|
10
10
|
|
|
11
11
|
<p align="center">
|
|
12
|
-
<img alt="Angular Gantt Control" src="https://raw.githubusercontent.com/SyncfusionExamples/nuget-img/master/angular/angular-gantt-chart.
|
|
12
|
+
<img alt="Angular Gantt Control" src="https://raw.githubusercontent.com/SyncfusionExamples/nuget-img/master/angular/angular-gantt-chart.webp"> </p>
|
|
13
13
|
|
|
14
14
|
<p align="center">
|
|
15
|
-
Trusted by the world's leading companies
|
|
15
|
+
Trusted by the world's leading companies<br>
|
|
16
16
|
<a href="https://www.syncfusion.com">
|
|
17
17
|
<img src="https://ej2.syncfusion.com/home/images/trusted_companies.png" alt="Bootstrap logo">
|
|
18
18
|
</a>
|
|
@@ -57,10 +57,11 @@ In **src/app/app.component.ts**, use `<ejs-gantt>` selector in the `template` at
|
|
|
57
57
|
|
|
58
58
|
```typescript
|
|
59
59
|
import { Component, OnInit } from '@angular/core';
|
|
60
|
-
import { TaskFieldsModel } from '@syncfusion/ej2-angular-gantt';
|
|
60
|
+
import { GanttModule, TaskFieldsModel } from '@syncfusion/ej2-angular-gantt';
|
|
61
61
|
|
|
62
62
|
@Component({
|
|
63
63
|
selector: 'app-root',
|
|
64
|
+
imports: [GanttModule],
|
|
64
65
|
template: `<ejs-gantt [dataSource]="data" [taskFields]="taskSettings"></ejs-gantt>`
|
|
65
66
|
})
|
|
66
67
|
export class AppComponent implements OnInit {
|
|
@@ -76,23 +77,23 @@ export class AppComponent implements OnInit {
|
|
|
76
77
|
{
|
|
77
78
|
TaskID: 1,
|
|
78
79
|
TaskName: 'Project Initiation',
|
|
79
|
-
StartDate: new Date('04/02/
|
|
80
|
-
EndDate: new Date('04/21/
|
|
80
|
+
StartDate: new Date('04/02/2026'),
|
|
81
|
+
EndDate: new Date('04/21/2026'),
|
|
81
82
|
subtasks: [
|
|
82
|
-
{ TaskID: 2, TaskName: 'Identify Site location', StartDate: new Date('04/02/
|
|
83
|
-
{ TaskID: 3, TaskName: 'Perform Soil test', StartDate: new Date('04/02/
|
|
84
|
-
{ TaskID: 4, TaskName: 'Soil test approval', StartDate: new Date('04/02/
|
|
83
|
+
{ TaskID: 2, TaskName: 'Identify Site location', StartDate: new Date('04/02/2026'), Duration: 4, Progress: 50 },
|
|
84
|
+
{ TaskID: 3, TaskName: 'Perform Soil test', StartDate: new Date('04/02/2026'), Duration: 4, Progress: 50 },
|
|
85
|
+
{ TaskID: 4, TaskName: 'Soil test approval', StartDate: new Date('04/02/2026'), Duration: 4, Progress: 50 },
|
|
85
86
|
]
|
|
86
87
|
},
|
|
87
88
|
{
|
|
88
89
|
TaskID: 5,
|
|
89
90
|
TaskName: 'Project Estimation',
|
|
90
|
-
StartDate: new Date('04/02/
|
|
91
|
-
EndDate: new Date('04/21/
|
|
91
|
+
StartDate: new Date('04/02/2026'),
|
|
92
|
+
EndDate: new Date('04/21/2026'),
|
|
92
93
|
subtasks: [
|
|
93
|
-
{ TaskID: 6, TaskName: 'Develop floor plan for estimation', StartDate: new Date('04/04/
|
|
94
|
-
{ TaskID: 7, TaskName: 'List materials', StartDate: new Date('04/04/
|
|
95
|
-
{ TaskID: 8, TaskName: 'Estimation approval', StartDate: new Date('04/04/
|
|
94
|
+
{ TaskID: 6, TaskName: 'Develop floor plan for estimation', StartDate: new Date('04/04/2026'), Duration: 3, Progress: 50 },
|
|
95
|
+
{ TaskID: 7, TaskName: 'List materials', StartDate: new Date('04/04/2026'), Duration: 3, Progress: 50 },
|
|
96
|
+
{ TaskID: 8, TaskName: 'Estimation approval', StartDate: new Date('04/04/2026'), Duration: 3, Progress: 50 }
|
|
96
97
|
]
|
|
97
98
|
}];
|
|
98
99
|
}
|
|
@@ -103,16 +104,16 @@ export class AppComponent implements OnInit {
|
|
|
103
104
|
|
|
104
105
|
Gantt component is also offered in following list of frameworks.
|
|
105
106
|
|
|
106
|
-
| [<img src="https://ej2.syncfusion.com/github/images/js.svg" height="50" />](https://www.syncfusion.com/javascript-
|
|
107
|
+
| [<img src="https://ej2.syncfusion.com/github/images/js.svg" height="50" />](https://www.syncfusion.com/gantt-sdk/javascript-gantt-chart?utm_medium=listing&utm_source=github)<br/> [JavaScript](https://www.syncfusion.com/gantt-sdk/javascript-gantt-chart?utm_medium=listing&utm_source=github) | [<img src="https://ej2.syncfusion.com/github/images/react.svg" height="50" />](https://www.syncfusion.com/gantt-sdk/react-gantt-chart?utm_medium=listing&utm_source=github)<br/> [React](https://www.syncfusion.com/gantt-sdk/react-gantt-chart?utm_medium=listing&utm_source=github) | [<img src="https://ej2.syncfusion.com/github/images/vue.svg" height="50" />](https://www.syncfusion.com/gantt-sdk/vue-gantt-chart?utm_medium=listing&utm_source=github)<br/> [Vue](https://www.syncfusion.com/gantt-sdk/vue-gantt-chart?utm_medium=listing&utm_source=github) | [<img src="https://ej2.syncfusion.com/github/images/netcore.svg" height="50" />](https://www.syncfusion.com/gantt-sdk/aspnet-core-gantt-chart?utm_medium=listing&utm_source=github)<br/> [ASP.NET Core](https://www.syncfusion.com/gantt-sdk/aspnet-core-gantt-chart?utm_medium=listing&utm_source=github) | [<img src="https://ej2.syncfusion.com/github/images/netmvc.svg" height="50" />](https://www.syncfusion.com/gantt-sdk/aspnet-mvc-gantt-chart?utm_medium=listing&utm_source=github)<br/> [ASP.NET MVC](https://www.syncfusion.com/gantt-sdk/aspnet-mvc-gantt-chart?utm_medium=listing&utm_source=github) |
|
|
107
108
|
| :-----: | :-----: | :-----: | :-----: | :-----: |
|
|
108
109
|
|
|
109
110
|
## Key features
|
|
110
111
|
|
|
111
112
|
* [Data sources](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=angular-gantt-npm#/bootstrap5/gantt/local-data): Bind hierarchical or self-referential data to Gantt chart with an array of JSON objects or DataManager.
|
|
112
113
|
* [Timeline](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=angular-gantt-npm#/bootstrap5/gantt/timeline): Display timescale from minutes to decades easily, and also display custom texts in the timeline units. Timeline can be displayed in either one-tier or two-tier layout.
|
|
113
|
-
* [Task dependency](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=angular-gantt-npm#/bootstrap5/gantt/editing): Allows for the definition or update of dependencies between tasks in a project using four types of task dependencies: Finish – Start, Start – Finish, Finish – Finish, and Start – Start.
|
|
114
|
+
* [Task dependency](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=angular-gantt-npm#/bootstrap5/gantt/default-editing): Allows for the definition or update of dependencies between tasks in a project using four types of task dependencies: Finish – Start, Start – Finish, Finish – Finish, and Start – Start.
|
|
114
115
|
* [Resources](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=angular-gantt-npm#/bootstrap5/gantt/resource-view): Visualizes the list of tasks assigned to each resource in hierarchy manner and switch the resources as per user need by task editing.
|
|
115
|
-
* [Editing](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=angular-gantt-npm#/bootstrap5/gantt/editing): Provides the options to dynamically insert, delete and update tasks using columns, dialog and taskbar editing options.
|
|
116
|
+
* [Editing](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=angular-gantt-npm#/bootstrap5/gantt/default-editing): Provides the options to dynamically insert, delete and update tasks using columns, dialog and taskbar editing options.
|
|
116
117
|
* [Virtual scrolling](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=angular-gantt-npm#/bootstrap5/gantt/virtual-scroll): Improves the performance of the gantt control when binding large amounts of data by only rendering the currently visible parts of the user interface and rendering other elements as needed while scrolling.
|
|
117
118
|
* [Critical path](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=angular-gantt-npm#/bootstrap5/gantt/critical-path): The critical path in a project is displayed by a single task or a series of tasks. If a task in critical path is delayed, the entire project will be delayed. A task is considered to be critical if any delay to this task would affect the project end date.
|
|
118
119
|
* [Customizable taskbars](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=angular-gantt-npm#/bootstrap5/gantt/taskbar-template): Display various tasks in a project using parent and child taskbars, summary taskbars and milestone UI, which can be customized with templates.
|
|
@@ -128,13 +129,13 @@ Gantt component is also offered in following list of frameworks.
|
|
|
128
129
|
* [Row re-ordering](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=angular-gantt-npm#/bootstrap5/gantt/drag-and-drop): Allows rows to be rearranged through drag and drop actions, changing their position and hierarchy level. A child row can be moved as a sibling within the same parent row or as a child to a different parent row.
|
|
129
130
|
* [Selection](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=angular-gantt-npm#/bootstrap5/gantt/selection): Rows or cells can be selected in the Gantt Chart. One or more rows or cells can also be selected by holding Shift, Ctrl or Command, or programmatically.
|
|
130
131
|
* [Templates](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=angular-gantt-npm#/bootstrap5/gantt/column-template): Templates can be used to create custom user experiences in the gantt.
|
|
131
|
-
* [RTL support](https://
|
|
132
|
-
* [Localization](https://
|
|
132
|
+
* [RTL support](https://help.syncfusion.com/gantt-sdk/angular/gantt-chart/global-local#right-to-left-rtl-support): Provides the right-to-left mode which aligns content in the Gantt Chart component from right to left. This improves user experience and accessibility for those who work with RTL languages like Hebrew and Arabic.
|
|
133
|
+
* [Localization](https://help.syncfusion.com/gantt-sdk/angular/gantt-chart/global-local#localization-implementation): Provides inherent support to localize the UI.
|
|
133
134
|
|
|
134
135
|
## Resources
|
|
135
136
|
|
|
136
137
|
* [Theme Studio](https://ej2.syncfusion.com/themestudio/)
|
|
137
|
-
* [What's New](https://www.syncfusion.com/products/whatsnew/
|
|
138
|
+
* [What's New](https://www.syncfusion.com/products/whatsnew/gantt-sdk?utm_medium=listing&utm_source=github)
|
|
138
139
|
* [Road Map](https://www.syncfusion.com/products/roadmap/angular)
|
|
139
140
|
* [E-Books](https://www.syncfusion.com/succinctly-free-ebooks?searchkey=angular&type=all)
|
|
140
141
|
|
|
@@ -143,9 +144,9 @@ Gantt component is also offered in following list of frameworks.
|
|
|
143
144
|
Product support is available through following mediums.
|
|
144
145
|
|
|
145
146
|
* [Support ticket](https://support.syncfusion.com/support/tickets/create) - Guaranteed Response in 24 hours | Unlimited tickets | Holiday support
|
|
146
|
-
* [Community forum](https://www.syncfusion.com/forums/
|
|
147
|
+
* [Community forum](https://www.syncfusion.com/forums/gantt-sdk?utm_source=npm&utm_medium=listing&utm_campaign=angular-gantt-npm)
|
|
147
148
|
* [GitHub issues](https://github.com/syncfusion/ej2-angular-ui-components/issues/new)
|
|
148
|
-
* [Request feature or report bug](https://www.syncfusion.com/feedback/
|
|
149
|
+
* [Request feature or report bug](https://www.syncfusion.com/feedback/gantt-sdk?utm_source=npm&utm_medium=listing&utm_campaign=angular-gantt-npm)
|
|
149
150
|
* Live chat
|
|
150
151
|
|
|
151
152
|
## Changelog
|
|
@@ -160,4 +161,4 @@ Check the changelog [here](https://github.com/syncfusion/ej2-angular-ui-componen
|
|
|
160
161
|
|
|
161
162
|
See [LICENSE FILE](https://github.com/syncfusion/ej2-angular-ui-components/blob/master/license) for more info.
|
|
162
163
|
|
|
163
|
-
© Copyright 2026 Syncfusion<sup>®</sup> Inc. All Rights Reserved. The Syncfusion<sup>®</sup> Essential Studio<sup>®</sup> license and copyright applies to this distribution.
|
|
164
|
+
© Copyright 2026 Syncfusion<sup>®</sup> Inc. All Rights Reserved. The Syncfusion<sup>®</sup> Essential Studio<sup>®</sup> license and copyright applies to this distribution.
|
|
@@ -27,10 +27,13 @@ export class ColumnDirective extends ComplexBase {
|
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
29
|
ColumnDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ColumnDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
30
|
-
ColumnDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.3", type: ColumnDirective, selector: "ejs-gantt>e-columns>e-column", inputs: { allowEditing: "allowEditing", allowFiltering: "allowFiltering", allowReordering: "allowReordering", allowResizing: "allowResizing", allowSorting: "allowSorting", clipMode: "clipMode", customAttributes: "customAttributes", disableHtmlEncode: "disableHtmlEncode", displayAsCheckBox: "displayAsCheckBox", edit: "edit", editType: "editType", field: "field", filter: "filter", filterTemplate: "filterTemplate", format: "format", formatter: "formatter", freeze: "freeze", headerTemplate: "headerTemplate", headerText: "headerText", headerTextAlign: "headerTextAlign", hideAtMedia: "hideAtMedia", isFrozen: "isFrozen", isPrimaryKey: "isPrimaryKey", lockColumn: "lockColumn", maxWidth: "maxWidth", minWidth: "minWidth", showColumnMenu: "showColumnMenu", sortComparer: "sortComparer", template: "template", textAlign: "textAlign", type: "type", validationRules: "validationRules", valueAccessor: "valueAccessor", visible: "visible", width: "width" }, queries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true }, { propertyName: "headerTemplate", first: true, predicate: ["headerTemplate"], descendants: true }, { propertyName: "editTemplate", first: true, predicate: ["editTemplate"], descendants: true }, { propertyName: "filter_itemTemplate", first: true, predicate: ["filterItemTemplate"], descendants: true }, { propertyName: "filterTemplate", first: true, predicate: ["filterTemplate"], descendants: true }, { propertyName: "emptyRecordTemplate", first: true, predicate: ["emptyRecordTemplate"], descendants: true }], usesInheritance: true, ngImport: i0 });
|
|
30
|
+
ColumnDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.3", type: ColumnDirective, selector: "ejs-gantt>e-columns>e-column", inputs: { allowEditing: "allowEditing", allowFiltering: "allowFiltering", allowReordering: "allowReordering", allowResizing: "allowResizing", allowSorting: "allowSorting", clipMode: "clipMode", customAttributes: "customAttributes", disableHtmlEncode: "disableHtmlEncode", displayAsCheckBox: "displayAsCheckBox", edit: "edit", editType: "editType", field: "field", filter: "filter", filterTemplate: "filterTemplate", format: "format", formatter: "formatter", freeze: "freeze", headerTemplate: "headerTemplate", headerText: "headerText", headerTextAlign: "headerTextAlign", hideAtMedia: "hideAtMedia", isFrozen: "isFrozen", isPrimaryKey: "isPrimaryKey", lockColumn: "lockColumn", maxWidth: "maxWidth", minWidth: "minWidth", showColumnMenu: "showColumnMenu", sortComparer: "sortComparer", template: "template", textAlign: "textAlign", type: "type", validationRules: "validationRules", valueAccessor: "valueAccessor", visible: "visible", width: "width" }, queries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true }, { propertyName: "toolbarTemplate", first: true, predicate: ["toolbarTemplate"], descendants: true }, { propertyName: "headerTemplate", first: true, predicate: ["headerTemplate"], descendants: true }, { propertyName: "editTemplate", first: true, predicate: ["editTemplate"], descendants: true }, { propertyName: "filter_itemTemplate", first: true, predicate: ["filterItemTemplate"], descendants: true }, { propertyName: "filterTemplate", first: true, predicate: ["filterTemplate"], descendants: true }, { propertyName: "emptyRecordTemplate", first: true, predicate: ["emptyRecordTemplate"], descendants: true }], usesInheritance: true, ngImport: i0 });
|
|
31
31
|
__decorate([
|
|
32
32
|
Template()
|
|
33
33
|
], ColumnDirective.prototype, "template", void 0);
|
|
34
|
+
__decorate([
|
|
35
|
+
Template()
|
|
36
|
+
], ColumnDirective.prototype, "toolbarTemplate", void 0);
|
|
34
37
|
__decorate([
|
|
35
38
|
Template()
|
|
36
39
|
], ColumnDirective.prototype, "headerTemplate", void 0);
|
|
@@ -57,6 +60,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
57
60
|
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { template: [{
|
|
58
61
|
type: ContentChild,
|
|
59
62
|
args: ['template']
|
|
63
|
+
}], toolbarTemplate: [{
|
|
64
|
+
type: ContentChild,
|
|
65
|
+
args: ['toolbarTemplate']
|
|
60
66
|
}], headerTemplate: [{
|
|
61
67
|
type: ContentChild,
|
|
62
68
|
args: ['headerTemplate']
|
|
@@ -93,4 +99,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
93
99
|
},
|
|
94
100
|
}]
|
|
95
101
|
}], ctorParameters: function () { return []; } });
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1ucy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZ2FudHQvY29sdW1ucy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQW9CLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDhCQUE4QixDQUFDOztBQUd4RCxJQUFJLEtBQUssR0FBYSxDQUFDLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2hoQixJQUFJLE9BQU8sR0FBYSxFQUFFLENBQUM7QUFDM0I7Ozs7Ozs7Ozs7O0dBV0c7QUFTSCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxXQUE0QjtJQW9PN0QsWUFBb0IsZ0JBQWlDO1FBQ2pELEtBQUssRUFBRSxDQUFDO1FBRFEscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQjtRQUVqRCxRQUFRLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztJQUNuQyxDQUFDOzs0R0F6T1EsZUFBZTtnR0FBZixlQUFlO0FBME14QjtJQURDLFFBQVEsRUFBRTtpREFDVTtBQVFyQjtJQURDLFFBQVEsRUFBRTt1REFDZ0I7QUFHM0I7SUFEQyxRQUFRLEVBQUU7cURBQ2M7QUFHekI7SUFEQyxRQUFRLEVBQUU7NERBQ3FCO0FBT2hDO0lBREMsUUFBUSxFQUFFO3VEQUNnQjtBQUczQjtJQURDLFFBQVEsRUFBRTs0REFDcUI7MkZBbE92QixlQUFlO2tCQVIzQixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSw4QkFBOEI7b0JBQ3hDLE1BQU0sRUFBRSxLQUFLO29CQUNiLE9BQU8sRUFBRSxPQUFPO29CQUNoQixPQUFPLEVBQUUsRUFFUjtpQkFDSjt1R0EyTVUsUUFBUTtzQkFGZCxZQUFZO3VCQUFDLFVBQVU7Z0JBVWpCLGNBQWM7c0JBRnBCLFlBQVk7dUJBQUMsZ0JBQWdCO2dCQUt2QixZQUFZO3NCQUZsQixZQUFZO3VCQUFDLGNBQWM7Z0JBS3JCLG1CQUFtQjtzQkFGekIsWUFBWTt1QkFBQyxvQkFBb0I7Z0JBUzNCLGNBQWM7c0JBRnBCLFlBQVk7dUJBQUMsZ0JBQWdCO2dCQUt2QixtQkFBbUI7c0JBRnpCLFlBQVk7dUJBQUMscUJBQXFCOztBQVl2Qzs7O0dBR0c7QUFPSCxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsU0FBMkI7SUFDN0Q7UUFDSSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDckIsQ0FBQzs7NkdBSFEsZ0JBQWdCO2lHQUFoQixnQkFBZ0Isb0ZBSFMsZUFBZTsyRkFHeEMsZ0JBQWdCO2tCQU41QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLE9BQU8sRUFBRTt3QkFDTCxRQUFRLEVBQUUsSUFBSSxlQUFlLENBQUMsZUFBZSxDQUFDO3FCQUNqRDtpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgVmlld0NvbnRhaW5lclJlZiwgQ29udGVudENoaWxkcmVuLCBDb250ZW50Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbXBsZXhCYXNlLCBBcnJheUJhc2UsIHNldFZhbHVlIH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItYmFzZSc7XG5pbXBvcnQgeyBUZW1wbGF0ZSB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWJhc2UnO1xuXG5cbmxldCBpbnB1dDogc3RyaW5nW10gPSBbJ2FsbG93RWRpdGluZycsICdhbGxvd0ZpbHRlcmluZycsICdhbGxvd1Jlb3JkZXJpbmcnLCAnYWxsb3dSZXNpemluZycsICdhbGxvd1NvcnRpbmcnLCAnY2xpcE1vZGUnLCAnY3VzdG9tQXR0cmlidXRlcycsICdkaXNhYmxlSHRtbEVuY29kZScsICdkaXNwbGF5QXNDaGVja0JveCcsICdlZGl0JywgJ2VkaXRUeXBlJywgJ2ZpZWxkJywgJ2ZpbHRlcicsICdmaWx0ZXJUZW1wbGF0ZScsICdmb3JtYXQnLCAnZm9ybWF0dGVyJywgJ2ZyZWV6ZScsICdoZWFkZXJUZW1wbGF0ZScsICdoZWFkZXJUZXh0JywgJ2hlYWRlclRleHRBbGlnbicsICdoaWRlQXRNZWRpYScsICdpc0Zyb3plbicsICdpc1ByaW1hcnlLZXknLCAnbG9ja0NvbHVtbicsICdtYXhXaWR0aCcsICdtaW5XaWR0aCcsICdzaG93Q29sdW1uTWVudScsICdzb3J0Q29tcGFyZXInLCAndGVtcGxhdGUnLCAndGV4dEFsaWduJywgJ3R5cGUnLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlQWNjZXNzb3InLCAndmlzaWJsZScsICd3aWR0aCddO1xubGV0IG91dHB1dHM6IHN0cmluZ1tdID0gW107XG4vKipcbiAqIGBlLWNvbHVtbmAgZGlyZWN0aXZlIHJlcHJlc2VudCBhIGNvbHVtbiBvZiB0aGUgQW5ndWxhciBHYW50dC4gXG4gKiBJdCBtdXN0IGJlIGNvbnRhaW5lZCBpbiBhIEdhbnR0IGNvbXBvbmVudChgZWpzLWdhbnR0YCkuIFxuICogYGBgaHRtbFxuICogPGVqcy1nYW50dCBbZGF0YVNvdXJjZV09J2RhdGEnIGFsbG93U2VsZWN0aW9uPSd0cnVlJyBhbGxvd1NvcnRpbmc9J3RydWUnPiBcbiAqICAgPGUtY29sdW1ucz5cbiAqICAgIDxlLWNvbHVtbiBmaWVsZD0nSUQnIHdpZHRoPScxNTAnPjwvZS1jb2x1bW4+XG4gKiAgICA8ZS1jb2x1bW4gZmllbGQ9J3Rhc2tOYW1lJyBoZWFkZXJUZXh0PSdUYXNrIE5hbWUnIHdpZHRoPScyMDAnPjwvZS1jb2x1bW4+XG4gKiAgIDwvZS1jb2x1bW5zPlxuICogPC9lanMtZ2FudHQ+XG4gKiBgYGBcbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdlanMtZ2FudHQ+ZS1jb2x1bW5zPmUtY29sdW1uJyxcbiAgICBpbnB1dHM6IGlucHV0LFxuICAgIG91dHB1dHM6IG91dHB1dHMsICAgIFxuICAgIHF1ZXJpZXM6IHtcblxuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgQ29sdW1uRGlyZWN0aXZlIGV4dGVuZHMgQ29tcGxleEJhc2U8Q29sdW1uRGlyZWN0aXZlPiB7XG4gICAgcHVibGljIGRpcmVjdGl2ZVByb3BMaXN0OiBhbnk7XG5cdFxuXG5cbiAgICAvKiogXG4gICAgICogVG8gZGVmaW5lIGNvbHVtbiB0eXBlLlxuICAgICAqL1xuICAgIHB1YmxpYyB0eXBlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIElmIGBhbGxvd0VkaXRpbmdgIHNldCB0byBmYWxzZSwgdGhlbiBpdCBkaXNhYmxlcyBlZGl0aW5nIG9mIGEgcGFydGljdWxhciBjb2x1bW4uIFxuICAgICAqIEJ5IGRlZmF1bHQgYWxsIGNvbHVtbnMgYXJlIGVkaXRhYmxlLlxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBwdWJsaWMgYWxsb3dFZGl0aW5nOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIElmIGBhbGxvd0ZpbHRlcmluZ2Agc2V0IHRvIGZhbHNlLCB0aGVuIGl0IGRpc2FibGVzIGZpbHRlcmluZyBvcHRpb24gYW5kIGZpbHRlciBiYXIgZWxlbWVudCBvZiBhIHBhcnRpY3VsYXIgY29sdW1uLiBcbiAgICAgKiBCeSBkZWZhdWx0IGFsbCBjb2x1bW5zIGFyZSBmaWx0ZXJhYmxlLlxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBwdWJsaWMgYWxsb3dGaWx0ZXJpbmc6IGFueTtcbiAgICAvKiogXG4gICAgICogSWYgYGFsbG93UmVvcmRlcmluZ2Agc2V0IHRvIGZhbHNlLCB0aGVuIGl0IGRpc2FibGVzIHJlb3JkZXIgb2YgYSBwYXJ0aWN1bGFyIGNvbHVtbi4gXG4gICAgICogQnkgZGVmYXVsdCBhbGwgY29sdW1ucyBjYW4gYmUgcmVvcmRlci5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgcHVibGljIGFsbG93UmVvcmRlcmluZzogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJZiBgYWxsb3dSZXNpemluZ2AgaXMgc2V0IHRvIGZhbHNlLCBpdCBkaXNhYmxlcyByZXNpemUgb3B0aW9uIG9mIGEgcGFydGljdWxhciBjb2x1bW4uIFxuICAgICAqIEJ5IGRlZmF1bHQgYWxsIHRoZSBjb2x1bW5zIGNhbiBiZSByZXNpemVkLlxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBwdWJsaWMgYWxsb3dSZXNpemluZzogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJZiBgYWxsb3dTb3J0aW5nYCBzZXQgdG8gZmFsc2UsIHRoZW4gaXQgZGlzYWJsZXMgc29ydGluZyBvcHRpb24gb2YgYSBwYXJ0aWN1bGFyIGNvbHVtbi4gXG4gICAgICogQnkgZGVmYXVsdCBhbGwgY29sdW1ucyBhcmUgc29ydGFibGUuXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIHB1YmxpYyBhbGxvd1NvcnRpbmc6IGFueTtcbiAgICAvKiogXG4gICAgICogRGVmaW5lcyB0aGUgb3ZlcmZsb3cgbW9kZSBmb3IgY2VsbCBjb250ZW50LiBUaGUgYXZhaWxhYmxlIG1vZGVzIGFyZTogXG4gICAgICogKiBgQ2xpcGAgLSAgVHJ1bmNhdGVzIHRoZSBjZWxsIGNvbnRlbnQgd2hlbiBpdCBvdmVyZmxvd3MgaXRzIGFyZWEuIFxuICAgICAqICogYEVsbGlwc2lzYCAtICBEaXNwbGF5cyBhbiBlbGxpcHNpcyB3aGVuIHRoZSBjZWxsIGNvbnRlbnQgb3ZlcmZsb3dzIGl0cyBhcmVhLiBcbiAgICAgKiAqIGBFbGxpcHNpc1dpdGhUb29sdGlwYCAtIERpc3BsYXlzIGFuIGVsbGlwc2lzIHdoZW4gdGhlIGNlbGwgY29udGVudCBvdmVyZmxvd3MgaXRzIGFyZWEsIGFuZCBzaG93cyBhIHRvb2x0aXAgb24gaG92ZXIgb3ZlciB0aGUgZWxsaXBzaXMuXG4gICAgICogQGRlZmF1bHQgU3luY2Z1c2lvbi5FSjIuR3JpZHMuQ2xpcE1vZGUuRWxsaXBzaXNXaXRoVG9vbHRpcFxuICAgICAqIEBpc2VudW1lcmF0aW9uIHRydWVcbiAgICAgKiBAYXNwdHlwZSBTeW5jZnVzaW9uLkVKMi5Hcmlkcy5DbGlwTW9kZVxuICAgICAqL1xuICAgIHB1YmxpYyBjbGlwTW9kZTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBUaGUgQ1NTIHN0eWxlcyBhbmQgYXR0cmlidXRlcyBvZiB0aGUgY29udGVudCBjZWxscyBvZiBhIHBhcnRpY3VsYXIgY29sdW1uIGNhbiBiZSBjdXN0b21pemVkLlxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKi9cbiAgICBwdWJsaWMgY3VzdG9tQXR0cmlidXRlczogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJZiBgZGlzYWJsZUh0bWxFbmNvZGVgIGlzIHNldCB0byB0cnVlLCBpdCBkaXNhYmxlcyBIVE1MIGVuY29kaW5nIGZvciB0aGUgY29udGVudCBvZiBzcGVjaWZpYyBjb2x1bW4uXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBwdWJsaWMgZGlzYWJsZUh0bWxFbmNvZGU6IGFueTtcbiAgICAvKiogXG4gICAgICogSWYgYGRpc3BsYXlBc0NoZWNrQm94YCBpcyBzZXQgdG8gdHJ1ZSwgaXQgZGlzcGxheXMgdGhlIGNvbHVtbiB2YWx1ZSBhcyBhIGNoZWNrIGJveCBpbnN0ZWFkIG9mIEJvb2xlYW4gdmFsdWUuXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBwdWJsaWMgZGlzcGxheUFzQ2hlY2tCb3g6IGFueTtcbiAgICAvKiogXG4gICAgICogRGVmaW5lcyB0aGUgYElFZGl0Q2VsbGAgb2JqZWN0IHRvIGN1c3RvbWl6ZSBkZWZhdWx0IGVkaXQgY2VsbC5cbiAgICAgKiBAZGVmYXVsdCB7fVxuICAgICAqL1xuICAgIHB1YmxpYyBlZGl0OiBhbnk7XG4gICAgLyoqIFxuICAgICAqIERlZmluZXMgdGhlIHR5cGUgb2YgY29tcG9uZW50IHVzZWQgZm9yIGVkaXRpbmcgdGhlIGZpZWxkLlxuICAgICAqIEBkZWZhdWx0ICdzdHJpbmdlZGl0J1xuICAgICAqL1xuICAgIHB1YmxpYyBlZGl0VHlwZTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBEZWZpbmVzIHRoZSBmaWVsZCBuYW1lIG9mIGNvbHVtbiB3aGljaCBpcyBtYXBwZWQgd2l0aCBtYXBwaW5nIG5hbWUgb2YgRGF0YVNvdXJjZS4gXG4gICAgICogVGhlIGBmaWVsZGAgbmFtZSBtdXN0IGJlIGEgdmFsaWQgSmF2YVNjcmlwdCBpZGVudGlmaWVyLCBcbiAgICAgKiB0aGUgZmlyc3QgY2hhcmFjdGVyIG11c3QgYmUgYW4gYWxwaGFiZXQgYW5kIHNob3VsZCBub3QgY29udGFpbiBzcGFjZXMgYW5kIHNwZWNpYWwgY2hhcmFjdGVycy5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIGZpZWxkOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIEl0IGlzIHVzZWQgdG8gY3VzdG9taXplIHRoZSBkZWZhdWx0IGZpbHRlciBvcHRpb25zIGZvciBhIHNwZWNpZmljIGNvbHVtbnMuIFxuICAgICAqICogdWkgLSB0byByZW5kZXIgY3VzdG9tIGNvbXBvbmVudCBmb3Igc3BlY2lmaWMgY29sdW1uLiBJdCBoYXMgZm9sbG93aW5nIGZ1bmN0aW9uczogXG4gICAgICogKiB1aS5jcmVhdGUgLSBJdCBpcyB1c2VkIGZvciBjcmVhdGluZyBjdXN0b20gY29tcG9uZW50cy4gXG4gICAgICogKiB1aS5yZWFkIC0gSXQgaXMgdXNlZCBmb3IgcmVhZCB0aGUgdmFsdWUgZnJvbSB0aGUgY29tcG9uZW50LiBcbiAgICAgKiAqIHVpLndyaXRlIC0gSXQgaXMgdXNlZCB0byBhcHBseSBjb21wb25lbnQgbW9kZWwgYXMgZHluYW1pY2FsbHkuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqL1xuICAgIHB1YmxpYyBmaWx0ZXI6IGFueTtcbiAgICAvKiogXG4gICAgICogSXQgaXMgdXNlZCB0byBjaGFuZ2UgZGlzcGxheSB2YWx1ZSB3aXRoIHRoZSBnaXZlbiBmb3JtYXQgYW5kIGRvZXMgbm90IGFmZmVjdCB0aGUgb3JpZ2luYWwgZGF0YS4gXG4gICAgICogR2V0cyB0aGUgZm9ybWF0IGZyb20gdGhlIHVzZXIgd2hpY2ggY2FuIGJlIHN0YW5kYXJkIG9yIGN1c3RvbSBcbiAgICAgKiBbYG51bWJlcmBdKGh0dHBzOi8vZWoyLnN5bmNmdXNpb24uY29tL2RvY3VtZW50YXRpb24vY29tbW9uL2ludGVybmF0aW9uYWxpemF0aW9uLyNudW1iZXItZm9ybWF0dGluZykgXG4gICAgICogYW5kIFtgZGF0ZWBdKGh0dHBzOi8vZWoyLnN5bmNmdXNpb24uY29tL2RvY3VtZW50YXRpb24vY29tbW9uL2ludGVybmF0aW9uYWxpemF0aW9uLyNkYXRlLWZvcm1hdHRpbmcpIGZvcm1hdHMuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqIEBhc3B0eXBlIHN0cmluZ1xuICAgICAqL1xuICAgIHB1YmxpYyBmb3JtYXQ6IGFueTtcbiAgICAvKiogXG4gICAgICogRGVmaW5lcyB0aGUgbWV0aG9kIHdoaWNoIGlzIHVzZWQgdG8gYWNoaWV2ZSBjdXN0b20gZm9ybWF0dGluZyBmcm9tIGFuIGV4dGVybmFsIGZ1bmN0aW9uLiBcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIHRyaWdnZXJzIGJlZm9yZSByZW5kZXJpbmcgb2YgZWFjaCBjZWxsLlxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKi9cbiAgICBwdWJsaWMgZm9ybWF0dGVyOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIERldGVybWluZXMgd2hpY2ggc2lkZSAobGVmdCwgcmlnaHQsIG9yIGZpeGVkKSB0aGUgY29sdW1uIHNob3VsZCBiZSBmcm96ZW4gb24uXG4gICAgICogQGRlZmF1bHQgU3luY2Z1c2lvbi5FSjIuR3JpZHMuRnJlZXplRGlyZWN0aW9uLk5vbmVcbiAgICAgKiBAaXNlbnVtZXJhdGlvbiB0cnVlXG4gICAgICogQGFzcHR5cGUgU3luY2Z1c2lvbi5FSjIuR3JpZHMuRnJlZXplRGlyZWN0aW9uXG4gICAgICovXG4gICAgcHVibGljIGZyZWV6ZTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBEZWZpbmVzIHRoZSBoZWFkZXIgdGV4dCBvZiBjb2x1bW4gd2hpY2ggaXMgdXNlZCB0byBkaXNwbGF5IGluIGNvbHVtbiBoZWFkZXIuIFxuICAgICAqIElmIGBoZWFkZXJUZXh0YCBpcyBub3QgZGVmaW5lZCwgdGhlbiBmaWVsZCBuYW1lIHZhbHVlIHdpbGwgYmUgYXNzaWduZWQgdG8gaGVhZGVyIHRleHQuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqL1xuICAgIHB1YmxpYyBoZWFkZXJUZXh0OiBhbnk7XG4gICAgLyoqIFxuICAgICAqIERlZmluZSB0aGUgYWxpZ25tZW50IG9mIGNvbHVtbiBoZWFkZXIgd2hpY2ggaXMgdXNlZCB0byBhbGlnbiB0aGUgdGV4dCBvZiBjb2x1bW4gaGVhZGVyLlxuICAgICAqIEBkZWZhdWx0IFN5bmNmdXNpb24uRUoyLkdyaWRzLlRleHRBbGlnbi5MZWZ0XG4gICAgICogQGlzZW51bWVyYXRpb24gdHJ1ZVxuICAgICAqIEBhc3B0eXBlIFN5bmNmdXNpb24uRUoyLkdyaWRzLlRleHRBbGlnblxuICAgICAqL1xuICAgIHB1YmxpYyBoZWFkZXJUZXh0QWxpZ246IGFueTtcbiAgICAvKiogXG4gICAgICogQ29sdW1uIHZpc2liaWxpdHkgY2FuIGNoYW5nZSBiYXNlZCBvbiBbYE1lZGlhIFF1ZXJpZXNgXShodHRwOi8vY3NzbWVkaWFxdWVyaWVzLmNvbS93aGF0LWFyZS1jc3MtbWVkaWEtcXVlcmllcy5odG1sKS4gXG4gICAgICogYGhpZGVBdE1lZGlhYCBhY2NlcHRzIG9ubHkgdmFsaWQgTWVkaWEgUXVlcmllcy5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIGhpZGVBdE1lZGlhOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIEZyZWV6ZXMgdGhlIGNvbHVtbiBpZiBzZXQgdG8gYHRydWVgLlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgcHVibGljIGlzRnJvemVuOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIElmIGBpc1ByaW1hcnlLZXlgIGlzIHNldCB0byB0cnVlLCBjb25zaWRlcnMgdGhpcyBjb2x1bW4gYXMgdGhlIHByaW1hcnkga2V5IGNvbnN0cmFpbnQuXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNQcmltYXJ5S2V5OiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFByZXZlbnRzIGNvbHVtbiByZW9yZGVyaW5nIHdoZW4gc2V0IHRvIHRydWUsIGxvY2tpbmcgdGhlIGNvbHVtbiBpbnRvIGEgc2V0IHBvc2l0aW9uLlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgcHVibGljIGxvY2tDb2x1bW46IGFueTtcbiAgICAvKiogXG4gICAgICogRGVmaW5lcyB0aGUgbWF4aW11bSB3aWR0aCBvZiB0aGUgY29sdW1uIGluIHBpeGVsIG9yIHBlcmNlbnRhZ2UsIHdoaWNoIHdpbGwgcmVzdHJpY3QgcmVzaXppbmcgYmV5b25kIHRoaXMgcGl4ZWwgb3IgcGVyY2VudGFnZS5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIG1heFdpZHRoOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIERlZmluZXMgdGhlIG1pbmltdW0gd2lkdGggb2YgdGhlIGNvbHVtbiBpbiBwaXhlbHMgb3IgcGVyY2VudGFnZS5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIG1pbldpZHRoOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIERlY2lkZXMgaWYgdGhlIGNvbHVtbiBtZW51IHNob3VsZCBiZSBhdmFpbGFibGUsIHByb3ZpZGluZyBvcHRpb25zIGZvciBjb2x1bW4gY3VzdG9taXphdGlvbi5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgcHVibGljIHNob3dDb2x1bW5NZW51OiBhbnk7XG4gICAgLyoqIFxuICAgICAqIERlZmluZXMgdGhlIHNvcnQgY29tcGFyZXIgcHJvcGVydHkuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqL1xuICAgIHB1YmxpYyBzb3J0Q29tcGFyZXI6IGFueTtcbiAgICAvKiogXG4gICAgICogRGVmaW5lcyB0aGUgYWxpZ25tZW50IG9mIHRoZSBjb2x1bW4gaW4gYm90aCBoZWFkZXIgYW5kIGNvbnRlbnQgY2VsbHMuXG4gICAgICogQGRlZmF1bHQgU3luY2Z1c2lvbi5FSjIuR3JpZHMuVGV4dEFsaWduLkxlZnRcbiAgICAgKiBAaXNlbnVtZXJhdGlvbiB0cnVlXG4gICAgICogQGFzcHR5cGUgU3luY2Z1c2lvbi5FSjIuR3JpZHMuVGV4dEFsaWduXG4gICAgICovXG4gICAgcHVibGljIHRleHRBbGlnbjogYW55O1xuICAgIC8qKiBcbiAgICAgKiBEZWZpbmVzIHZhbGlkYXRpb24gcnVsZXMgZm9yIGRhdGEgYmVmb3JlIGNyZWF0aW5nIG9yIHVwZGF0aW5nIHJlY29yZHMuIFxuICAgICAqIFRoZSBydWxlcyBhcmUgdXNlZCB0byBlbnN1cmUgdGhhdCBkYXRhIG1lZXRzIHNwZWNpZmljIGNyaXRlcmlhIGJlZm9yZSBpdCBpcyBzYXZlZCBvciB1cGRhdGVkLlxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKi9cbiAgICBwdWJsaWMgdmFsaWRhdGlvblJ1bGVzOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIERlZmluZXMgdGhlIG1ldGhvZCB1c2VkIHRvIGFwcGx5IGN1c3RvbSBjZWxsIHZhbHVlcyBmcm9tIGV4dGVybmFsIGZ1bmN0aW9uIGFuZCBkaXNwbGF5IHRoaXMgb24gZWFjaCBjZWxsIHJlbmRlcmVkLlxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKi9cbiAgICBwdWJsaWMgdmFsdWVBY2Nlc3NvcjogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJZiBgdmlzaWJsZWAgaXMgc2V0IHRvIGZhbHNlLCBoaWRlcyB0aGUgcGFydGljdWxhciBjb2x1bW4uIEJ5IGRlZmF1bHQsIGNvbHVtbnMgYXJlIGRpc3BsYXllZC5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgcHVibGljIHZpc2libGU6IGFueTtcbiAgICAvKiogXG4gICAgICogRGVmaW5lcyB0aGUgd2lkdGggb2YgdGhlIGNvbHVtbiBpbiBwaXhlbHMgb3IgcGVyY2VudGFnZS5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIHdpZHRoOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIERlZmluZXMgdGhlIGNvbHVtbiB0ZW1wbGF0ZSB0aGF0IHJlbmRlcnMgY3VzdG9taXplZCBlbGVtZW50IGluIGVhY2ggY2VsbCBvZiB0aGUgY29sdW1uLiBcbiAgICAgKiBJdCBhY2NlcHRzIGVpdGhlciB0ZW1wbGF0ZSBzdHJpbmcgb3IgSFRNTCBlbGVtZW50IElELlxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKiBAYXNwdHlwZSBzdHJpbmdcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCd0ZW1wbGF0ZScpXG4gICAgQFRlbXBsYXRlKClcbiAgICBwdWJsaWMgdGVtcGxhdGU6IGFueTtcbiAgICAvKiogXG4gICAgICogRGVmaW5lcyB0aGUgaGVhZGVyIHRlbXBsYXRlIGFzIHN0cmluZyBvciBIVE1MIGVsZW1lbnQgSUQgd2hpY2ggaXMgdXNlZCB0byBhZGQgY3VzdG9taXplZCBlbGVtZW50IGluIHRoZSBjb2x1bW4gaGVhZGVyLlxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKiBAYXNwdHlwZSBzdHJpbmdcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdoZWFkZXJUZW1wbGF0ZScpXG4gICAgQFRlbXBsYXRlKClcbiAgICBwdWJsaWMgaGVhZGVyVGVtcGxhdGU6IGFueTtcbiAgICBAQ29udGVudENoaWxkKCdlZGl0VGVtcGxhdGUnKVxuICAgIEBUZW1wbGF0ZSgpXG4gICAgcHVibGljIGVkaXRUZW1wbGF0ZTogYW55O1xuICAgIEBDb250ZW50Q2hpbGQoJ2ZpbHRlckl0ZW1UZW1wbGF0ZScpXG4gICAgQFRlbXBsYXRlKClcbiAgICBwdWJsaWMgZmlsdGVyX2l0ZW1UZW1wbGF0ZTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBTcGVjaWZpZXMgYSBjdXN0b20gdGVtcGxhdGUgb3IgVUkgZm9yIGZpbHRlcmluZyB3aXRoaW4gdGhpcyBjb2x1bW4sIHV0aWxpemluZyBlaXRoZXIgc3RyaW5nIHRlbXBsYXRlcyBvciBIVE1MIGVsZW1lbnQgSURzLlxuICAgICAqIEBhc3BpZ25vcmUgXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnZmlsdGVyVGVtcGxhdGUnKVxuICAgIEBUZW1wbGF0ZSgpXG4gICAgcHVibGljIGZpbHRlclRlbXBsYXRlOiBhbnk7XG4gICAgQENvbnRlbnRDaGlsZCgnZW1wdHlSZWNvcmRUZW1wbGF0ZScpXG4gICAgQFRlbXBsYXRlKClcbiAgICBwdWJsaWMgZW1wdHlSZWNvcmRUZW1wbGF0ZTogYW55O1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOlZpZXdDb250YWluZXJSZWYpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgc2V0VmFsdWUoJ2N1cnJlbnRJbnN0YW5jZScsIHRoaXMsIHRoaXMudmlld0NvbnRhaW5lclJlZik7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJFdmVudHMob3V0cHV0cyk7XG4gICAgICAgIHRoaXMuZGlyZWN0aXZlUHJvcExpc3QgPSBpbnB1dDtcbiAgICB9XG59XG5cbi8qKlxuICogQ29sdW1uIEFycmF5IERpcmVjdGl2ZVxuICogQHByaXZhdGVcbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdlanMtZ2FudHQ+ZS1jb2x1bW5zJyxcbiAgICBxdWVyaWVzOiB7XG4gICAgICAgIGNoaWxkcmVuOiBuZXcgQ29udGVudENoaWxkcmVuKENvbHVtbkRpcmVjdGl2ZSlcbiAgICB9LFxufSlcbmV4cG9ydCBjbGFzcyBDb2x1bW5zRGlyZWN0aXZlIGV4dGVuZHMgQXJyYXlCYXNlPENvbHVtbnNEaXJlY3RpdmU+IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoJ2NvbHVtbnMnKTtcbiAgICB9XG59Il19
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1ucy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZ2FudHQvY29sdW1ucy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQW9CLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDhCQUE4QixDQUFDOztBQUd4RCxJQUFJLEtBQUssR0FBYSxDQUFDLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2hoQixJQUFJLE9BQU8sR0FBYSxFQUFFLENBQUM7QUFDM0I7Ozs7Ozs7Ozs7O0dBV0c7QUFTSCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxXQUE0QjtJQXVPN0QsWUFBb0IsZ0JBQWlDO1FBQ2pELEtBQUssRUFBRSxDQUFDO1FBRFEscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQjtRQUVqRCxRQUFRLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztJQUNuQyxDQUFDOzs0R0E1T1EsZUFBZTtnR0FBZixlQUFlO0FBME14QjtJQURDLFFBQVEsRUFBRTtpREFDVTtBQUdyQjtJQURDLFFBQVEsRUFBRTt3REFDaUI7QUFRNUI7SUFEQyxRQUFRLEVBQUU7dURBQ2dCO0FBRzNCO0lBREMsUUFBUSxFQUFFO3FEQUNjO0FBR3pCO0lBREMsUUFBUSxFQUFFOzREQUNxQjtBQU9oQztJQURDLFFBQVEsRUFBRTt1REFDZ0I7QUFHM0I7SUFEQyxRQUFRLEVBQUU7NERBQ3FCOzJGQXJPdkIsZUFBZTtrQkFSM0IsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsOEJBQThCO29CQUN4QyxNQUFNLEVBQUUsS0FBSztvQkFDYixPQUFPLEVBQUUsT0FBTztvQkFDaEIsT0FBTyxFQUFFLEVBRVI7aUJBQ0o7dUdBMk1VLFFBQVE7c0JBRmQsWUFBWTt1QkFBQyxVQUFVO2dCQUtqQixlQUFlO3NCQUZyQixZQUFZO3VCQUFDLGlCQUFpQjtnQkFVeEIsY0FBYztzQkFGcEIsWUFBWTt1QkFBQyxnQkFBZ0I7Z0JBS3ZCLFlBQVk7c0JBRmxCLFlBQVk7dUJBQUMsY0FBYztnQkFLckIsbUJBQW1CO3NCQUZ6QixZQUFZO3VCQUFDLG9CQUFvQjtnQkFTM0IsY0FBYztzQkFGcEIsWUFBWTt1QkFBQyxnQkFBZ0I7Z0JBS3ZCLG1CQUFtQjtzQkFGekIsWUFBWTt1QkFBQyxxQkFBcUI7O0FBWXZDOzs7R0FHRztBQU9ILE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxTQUEyQjtJQUM3RDtRQUNJLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNyQixDQUFDOzs2R0FIUSxnQkFBZ0I7aUdBQWhCLGdCQUFnQixvRkFIUyxlQUFlOzJGQUd4QyxnQkFBZ0I7a0JBTjVCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsT0FBTyxFQUFFO3dCQUNMLFFBQVEsRUFBRSxJQUFJLGVBQWUsQ0FBQyxlQUFlLENBQUM7cUJBQ2pEO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBWaWV3Q29udGFpbmVyUmVmLCBDb250ZW50Q2hpbGRyZW4sIENvbnRlbnRDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tcGxleEJhc2UsIEFycmF5QmFzZSwgc2V0VmFsdWUgfSBmcm9tICdAc3luY2Z1c2lvbi9lajItYW5ndWxhci1iYXNlJztcbmltcG9ydCB7IFRlbXBsYXRlIH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItYmFzZSc7XG5cblxubGV0IGlucHV0OiBzdHJpbmdbXSA9IFsnYWxsb3dFZGl0aW5nJywgJ2FsbG93RmlsdGVyaW5nJywgJ2FsbG93UmVvcmRlcmluZycsICdhbGxvd1Jlc2l6aW5nJywgJ2FsbG93U29ydGluZycsICdjbGlwTW9kZScsICdjdXN0b21BdHRyaWJ1dGVzJywgJ2Rpc2FibGVIdG1sRW5jb2RlJywgJ2Rpc3BsYXlBc0NoZWNrQm94JywgJ2VkaXQnLCAnZWRpdFR5cGUnLCAnZmllbGQnLCAnZmlsdGVyJywgJ2ZpbHRlclRlbXBsYXRlJywgJ2Zvcm1hdCcsICdmb3JtYXR0ZXInLCAnZnJlZXplJywgJ2hlYWRlclRlbXBsYXRlJywgJ2hlYWRlclRleHQnLCAnaGVhZGVyVGV4dEFsaWduJywgJ2hpZGVBdE1lZGlhJywgJ2lzRnJvemVuJywgJ2lzUHJpbWFyeUtleScsICdsb2NrQ29sdW1uJywgJ21heFdpZHRoJywgJ21pbldpZHRoJywgJ3Nob3dDb2x1bW5NZW51JywgJ3NvcnRDb21wYXJlcicsICd0ZW1wbGF0ZScsICd0ZXh0QWxpZ24nLCAndHlwZScsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWVBY2Nlc3NvcicsICd2aXNpYmxlJywgJ3dpZHRoJ107XG5sZXQgb3V0cHV0czogc3RyaW5nW10gPSBbXTtcbi8qKlxuICogYGUtY29sdW1uYCBkaXJlY3RpdmUgcmVwcmVzZW50IGEgY29sdW1uIG9mIHRoZSBBbmd1bGFyIEdhbnR0LiBcbiAqIEl0IG11c3QgYmUgY29udGFpbmVkIGluIGEgR2FudHQgY29tcG9uZW50KGBlanMtZ2FudHRgKS4gXG4gKiBgYGBodG1sXG4gKiA8ZWpzLWdhbnR0IFtkYXRhU291cmNlXT0nZGF0YScgYWxsb3dTZWxlY3Rpb249J3RydWUnIGFsbG93U29ydGluZz0ndHJ1ZSc+IFxuICogICA8ZS1jb2x1bW5zPlxuICogICAgPGUtY29sdW1uIGZpZWxkPSdJRCcgd2lkdGg9JzE1MCc+PC9lLWNvbHVtbj5cbiAqICAgIDxlLWNvbHVtbiBmaWVsZD0ndGFza05hbWUnIGhlYWRlclRleHQ9J1Rhc2sgTmFtZScgd2lkdGg9JzIwMCc+PC9lLWNvbHVtbj5cbiAqICAgPC9lLWNvbHVtbnM+XG4gKiA8L2Vqcy1nYW50dD5cbiAqIGBgYFxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ2Vqcy1nYW50dD5lLWNvbHVtbnM+ZS1jb2x1bW4nLFxuICAgIGlucHV0czogaW5wdXQsXG4gICAgb3V0cHV0czogb3V0cHV0cywgICAgXG4gICAgcXVlcmllczoge1xuXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBDb2x1bW5EaXJlY3RpdmUgZXh0ZW5kcyBDb21wbGV4QmFzZTxDb2x1bW5EaXJlY3RpdmU+IHtcbiAgICBwdWJsaWMgZGlyZWN0aXZlUHJvcExpc3Q6IGFueTtcblx0XG5cblxuICAgIC8qKiBcbiAgICAgKiBUbyBkZWZpbmUgY29sdW1uIHR5cGUuXG4gICAgICovXG4gICAgcHVibGljIHR5cGU6IGFueTtcbiAgICAvKiogXG4gICAgICogSWYgYGFsbG93RWRpdGluZ2Agc2V0IHRvIGZhbHNlLCB0aGVuIGl0IGRpc2FibGVzIGVkaXRpbmcgb2YgYSBwYXJ0aWN1bGFyIGNvbHVtbi4gXG4gICAgICogQnkgZGVmYXVsdCBhbGwgY29sdW1ucyBhcmUgZWRpdGFibGUuXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIHB1YmxpYyBhbGxvd0VkaXRpbmc6IGFueTtcbiAgICAvKiogXG4gICAgICogSWYgYGFsbG93RmlsdGVyaW5nYCBzZXQgdG8gZmFsc2UsIHRoZW4gaXQgZGlzYWJsZXMgZmlsdGVyaW5nIG9wdGlvbiBhbmQgZmlsdGVyIGJhciBlbGVtZW50IG9mIGEgcGFydGljdWxhciBjb2x1bW4uIFxuICAgICAqIEJ5IGRlZmF1bHQgYWxsIGNvbHVtbnMgYXJlIGZpbHRlcmFibGUuXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIHB1YmxpYyBhbGxvd0ZpbHRlcmluZzogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJZiBgYWxsb3dSZW9yZGVyaW5nYCBzZXQgdG8gZmFsc2UsIHRoZW4gaXQgZGlzYWJsZXMgcmVvcmRlciBvZiBhIHBhcnRpY3VsYXIgY29sdW1uLiBcbiAgICAgKiBCeSBkZWZhdWx0IGFsbCBjb2x1bW5zIGNhbiBiZSByZW9yZGVyLlxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBwdWJsaWMgYWxsb3dSZW9yZGVyaW5nOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIElmIGBhbGxvd1Jlc2l6aW5nYCBpcyBzZXQgdG8gZmFsc2UsIGl0IGRpc2FibGVzIHJlc2l6ZSBvcHRpb24gb2YgYSBwYXJ0aWN1bGFyIGNvbHVtbi4gXG4gICAgICogQnkgZGVmYXVsdCBhbGwgdGhlIGNvbHVtbnMgY2FuIGJlIHJlc2l6ZWQuXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIHB1YmxpYyBhbGxvd1Jlc2l6aW5nOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIElmIGBhbGxvd1NvcnRpbmdgIHNldCB0byBmYWxzZSwgdGhlbiBpdCBkaXNhYmxlcyBzb3J0aW5nIG9wdGlvbiBvZiBhIHBhcnRpY3VsYXIgY29sdW1uLiBcbiAgICAgKiBCeSBkZWZhdWx0IGFsbCBjb2x1bW5zIGFyZSBzb3J0YWJsZS5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgcHVibGljIGFsbG93U29ydGluZzogYW55O1xuICAgIC8qKiBcbiAgICAgKiBEZWZpbmVzIHRoZSBvdmVyZmxvdyBtb2RlIGZvciBjZWxsIGNvbnRlbnQuIFRoZSBhdmFpbGFibGUgbW9kZXMgYXJlOiBcbiAgICAgKiAqIGBDbGlwYCAtICBUcnVuY2F0ZXMgdGhlIGNlbGwgY29udGVudCB3aGVuIGl0IG92ZXJmbG93cyBpdHMgYXJlYS4gXG4gICAgICogKiBgRWxsaXBzaXNgIC0gIERpc3BsYXlzIGFuIGVsbGlwc2lzIHdoZW4gdGhlIGNlbGwgY29udGVudCBvdmVyZmxvd3MgaXRzIGFyZWEuIFxuICAgICAqICogYEVsbGlwc2lzV2l0aFRvb2x0aXBgIC0gRGlzcGxheXMgYW4gZWxsaXBzaXMgd2hlbiB0aGUgY2VsbCBjb250ZW50IG92ZXJmbG93cyBpdHMgYXJlYSwgYW5kIHNob3dzIGEgdG9vbHRpcCBvbiBob3ZlciBvdmVyIHRoZSBlbGxpcHNpcy5cbiAgICAgKiBAZGVmYXVsdCBTeW5jZnVzaW9uLkVKMi5Hcmlkcy5DbGlwTW9kZS5FbGxpcHNpc1dpdGhUb29sdGlwXG4gICAgICogQGlzZW51bWVyYXRpb24gdHJ1ZVxuICAgICAqIEBhc3B0eXBlIFN5bmNmdXNpb24uRUoyLkdyaWRzLkNsaXBNb2RlXG4gICAgICovXG4gICAgcHVibGljIGNsaXBNb2RlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoZSBDU1Mgc3R5bGVzIGFuZCBhdHRyaWJ1dGVzIG9mIHRoZSBjb250ZW50IGNlbGxzIG9mIGEgcGFydGljdWxhciBjb2x1bW4gY2FuIGJlIGN1c3RvbWl6ZWQuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqL1xuICAgIHB1YmxpYyBjdXN0b21BdHRyaWJ1dGVzOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIElmIGBkaXNhYmxlSHRtbEVuY29kZWAgaXMgc2V0IHRvIHRydWUsIGl0IGRpc2FibGVzIEhUTUwgZW5jb2RpbmcgZm9yIHRoZSBjb250ZW50IG9mIHNwZWNpZmljIGNvbHVtbi5cbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIHB1YmxpYyBkaXNhYmxlSHRtbEVuY29kZTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJZiBgZGlzcGxheUFzQ2hlY2tCb3hgIGlzIHNldCB0byB0cnVlLCBpdCBkaXNwbGF5cyB0aGUgY29sdW1uIHZhbHVlIGFzIGEgY2hlY2sgYm94IGluc3RlYWQgb2YgQm9vbGVhbiB2YWx1ZS5cbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIHB1YmxpYyBkaXNwbGF5QXNDaGVja0JveDogYW55O1xuICAgIC8qKiBcbiAgICAgKiBEZWZpbmVzIHRoZSBgSUVkaXRDZWxsYCBvYmplY3QgdG8gY3VzdG9taXplIGRlZmF1bHQgZWRpdCBjZWxsLlxuICAgICAqIEBkZWZhdWx0IHt9XG4gICAgICovXG4gICAgcHVibGljIGVkaXQ6IGFueTtcbiAgICAvKiogXG4gICAgICogRGVmaW5lcyB0aGUgdHlwZSBvZiBjb21wb25lbnQgdXNlZCBmb3IgZWRpdGluZyB0aGUgZmllbGQuXG4gICAgICogQGRlZmF1bHQgJ3N0cmluZ2VkaXQnXG4gICAgICovXG4gICAgcHVibGljIGVkaXRUeXBlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIERlZmluZXMgdGhlIGZpZWxkIG5hbWUgb2YgY29sdW1uIHdoaWNoIGlzIG1hcHBlZCB3aXRoIG1hcHBpbmcgbmFtZSBvZiBEYXRhU291cmNlLiBcbiAgICAgKiBUaGUgYGZpZWxkYCBuYW1lIG11c3QgYmUgYSB2YWxpZCBKYXZhU2NyaXB0IGlkZW50aWZpZXIsIFxuICAgICAqIHRoZSBmaXJzdCBjaGFyYWN0ZXIgbXVzdCBiZSBhbiBhbHBoYWJldCBhbmQgc2hvdWxkIG5vdCBjb250YWluIHNwYWNlcyBhbmQgc3BlY2lhbCBjaGFyYWN0ZXJzLlxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKi9cbiAgICBwdWJsaWMgZmllbGQ6IGFueTtcbiAgICAvKiogXG4gICAgICogSXQgaXMgdXNlZCB0byBjdXN0b21pemUgdGhlIGRlZmF1bHQgZmlsdGVyIG9wdGlvbnMgZm9yIGEgc3BlY2lmaWMgY29sdW1ucy4gXG4gICAgICogKiB1aSAtIHRvIHJlbmRlciBjdXN0b20gY29tcG9uZW50IGZvciBzcGVjaWZpYyBjb2x1bW4uIEl0IGhhcyBmb2xsb3dpbmcgZnVuY3Rpb25zOiBcbiAgICAgKiAqIHVpLmNyZWF0ZSAtIEl0IGlzIHVzZWQgZm9yIGNyZWF0aW5nIGN1c3RvbSBjb21wb25lbnRzLiBcbiAgICAgKiAqIHVpLnJlYWQgLSBJdCBpcyB1c2VkIGZvciByZWFkIHRoZSB2YWx1ZSBmcm9tIHRoZSBjb21wb25lbnQuIFxuICAgICAqICogdWkud3JpdGUgLSBJdCBpcyB1c2VkIHRvIGFwcGx5IGNvbXBvbmVudCBtb2RlbCBhcyBkeW5hbWljYWxseS5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIGZpbHRlcjogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJdCBpcyB1c2VkIHRvIGNoYW5nZSBkaXNwbGF5IHZhbHVlIHdpdGggdGhlIGdpdmVuIGZvcm1hdCBhbmQgZG9lcyBub3QgYWZmZWN0IHRoZSBvcmlnaW5hbCBkYXRhLiBcbiAgICAgKiBHZXRzIHRoZSBmb3JtYXQgZnJvbSB0aGUgdXNlciB3aGljaCBjYW4gYmUgc3RhbmRhcmQgb3IgY3VzdG9tIFxuICAgICAqIFtgbnVtYmVyYF0oaHR0cHM6Ly9lajIuc3luY2Z1c2lvbi5jb20vZG9jdW1lbnRhdGlvbi9jb21tb24vaW50ZXJuYXRpb25hbGl6YXRpb24vI251bWJlci1mb3JtYXR0aW5nKSBcbiAgICAgKiBhbmQgW2BkYXRlYF0oaHR0cHM6Ly9lajIuc3luY2Z1c2lvbi5jb20vZG9jdW1lbnRhdGlvbi9jb21tb24vaW50ZXJuYXRpb25hbGl6YXRpb24vI2RhdGUtZm9ybWF0dGluZykgZm9ybWF0cy5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICogQGFzcHR5cGUgc3RyaW5nXG4gICAgICovXG4gICAgcHVibGljIGZvcm1hdDogYW55O1xuICAgIC8qKiBcbiAgICAgKiBEZWZpbmVzIHRoZSBtZXRob2Qgd2hpY2ggaXMgdXNlZCB0byBhY2hpZXZlIGN1c3RvbSBmb3JtYXR0aW5nIGZyb20gYW4gZXh0ZXJuYWwgZnVuY3Rpb24uIFxuICAgICAqIFRoaXMgZnVuY3Rpb24gdHJpZ2dlcnMgYmVmb3JlIHJlbmRlcmluZyBvZiBlYWNoIGNlbGwuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqL1xuICAgIHB1YmxpYyBmb3JtYXR0ZXI6IGFueTtcbiAgICAvKiogXG4gICAgICogRGV0ZXJtaW5lcyB3aGljaCBzaWRlIChsZWZ0LCByaWdodCwgb3IgZml4ZWQpIHRoZSBjb2x1bW4gc2hvdWxkIGJlIGZyb3plbiBvbi5cbiAgICAgKiBAZGVmYXVsdCBTeW5jZnVzaW9uLkVKMi5Hcmlkcy5GcmVlemVEaXJlY3Rpb24uTm9uZVxuICAgICAqIEBpc2VudW1lcmF0aW9uIHRydWVcbiAgICAgKiBAYXNwdHlwZSBTeW5jZnVzaW9uLkVKMi5Hcmlkcy5GcmVlemVEaXJlY3Rpb25cbiAgICAgKi9cbiAgICBwdWJsaWMgZnJlZXplOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIERlZmluZXMgdGhlIGhlYWRlciB0ZXh0IG9mIGNvbHVtbiB3aGljaCBpcyB1c2VkIHRvIGRpc3BsYXkgaW4gY29sdW1uIGhlYWRlci4gXG4gICAgICogSWYgYGhlYWRlclRleHRgIGlzIG5vdCBkZWZpbmVkLCB0aGVuIGZpZWxkIG5hbWUgdmFsdWUgd2lsbCBiZSBhc3NpZ25lZCB0byBoZWFkZXIgdGV4dC5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIGhlYWRlclRleHQ6IGFueTtcbiAgICAvKiogXG4gICAgICogRGVmaW5lIHRoZSBhbGlnbm1lbnQgb2YgY29sdW1uIGhlYWRlciB3aGljaCBpcyB1c2VkIHRvIGFsaWduIHRoZSB0ZXh0IG9mIGNvbHVtbiBoZWFkZXIuXG4gICAgICogQGRlZmF1bHQgU3luY2Z1c2lvbi5FSjIuR3JpZHMuVGV4dEFsaWduLkxlZnRcbiAgICAgKiBAaXNlbnVtZXJhdGlvbiB0cnVlXG4gICAgICogQGFzcHR5cGUgU3luY2Z1c2lvbi5FSjIuR3JpZHMuVGV4dEFsaWduXG4gICAgICovXG4gICAgcHVibGljIGhlYWRlclRleHRBbGlnbjogYW55O1xuICAgIC8qKiBcbiAgICAgKiBDb2x1bW4gdmlzaWJpbGl0eSBjYW4gY2hhbmdlIGJhc2VkIG9uIFtgTWVkaWEgUXVlcmllc2BdKGh0dHA6Ly9jc3NtZWRpYXF1ZXJpZXMuY29tL3doYXQtYXJlLWNzcy1tZWRpYS1xdWVyaWVzLmh0bWwpLiBcbiAgICAgKiBgaGlkZUF0TWVkaWFgIGFjY2VwdHMgb25seSB2YWxpZCBNZWRpYSBRdWVyaWVzLlxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKi9cbiAgICBwdWJsaWMgaGlkZUF0TWVkaWE6IGFueTtcbiAgICAvKiogXG4gICAgICogRnJlZXplcyB0aGUgY29sdW1uIGlmIHNldCB0byBgdHJ1ZWAuXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNGcm96ZW46IGFueTtcbiAgICAvKiogXG4gICAgICogSWYgYGlzUHJpbWFyeUtleWAgaXMgc2V0IHRvIHRydWUsIGNvbnNpZGVycyB0aGlzIGNvbHVtbiBhcyB0aGUgcHJpbWFyeSBrZXkgY29uc3RyYWludC5cbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIHB1YmxpYyBpc1ByaW1hcnlLZXk6IGFueTtcbiAgICAvKiogXG4gICAgICogUHJldmVudHMgY29sdW1uIHJlb3JkZXJpbmcgd2hlbiBzZXQgdG8gdHJ1ZSwgbG9ja2luZyB0aGUgY29sdW1uIGludG8gYSBzZXQgcG9zaXRpb24uXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBwdWJsaWMgbG9ja0NvbHVtbjogYW55O1xuICAgIC8qKiBcbiAgICAgKiBEZWZpbmVzIHRoZSBtYXhpbXVtIHdpZHRoIG9mIHRoZSBjb2x1bW4gaW4gcGl4ZWwgb3IgcGVyY2VudGFnZSwgd2hpY2ggd2lsbCByZXN0cmljdCByZXNpemluZyBiZXlvbmQgdGhpcyBwaXhlbCBvciBwZXJjZW50YWdlLlxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKi9cbiAgICBwdWJsaWMgbWF4V2lkdGg6IGFueTtcbiAgICAvKiogXG4gICAgICogRGVmaW5lcyB0aGUgbWluaW11bSB3aWR0aCBvZiB0aGUgY29sdW1uIGluIHBpeGVscyBvciBwZXJjZW50YWdlLlxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKi9cbiAgICBwdWJsaWMgbWluV2lkdGg6IGFueTtcbiAgICAvKiogXG4gICAgICogRGVjaWRlcyBpZiB0aGUgY29sdW1uIG1lbnUgc2hvdWxkIGJlIGF2YWlsYWJsZSwgcHJvdmlkaW5nIG9wdGlvbnMgZm9yIGNvbHVtbiBjdXN0b21pemF0aW9uLlxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBwdWJsaWMgc2hvd0NvbHVtbk1lbnU6IGFueTtcbiAgICAvKiogXG4gICAgICogRGVmaW5lcyB0aGUgc29ydCBjb21wYXJlciBwcm9wZXJ0eS5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIHNvcnRDb21wYXJlcjogYW55O1xuICAgIC8qKiBcbiAgICAgKiBEZWZpbmVzIHRoZSBhbGlnbm1lbnQgb2YgdGhlIGNvbHVtbiBpbiBib3RoIGhlYWRlciBhbmQgY29udGVudCBjZWxscy5cbiAgICAgKiBAZGVmYXVsdCBTeW5jZnVzaW9uLkVKMi5Hcmlkcy5UZXh0QWxpZ24uTGVmdFxuICAgICAqIEBpc2VudW1lcmF0aW9uIHRydWVcbiAgICAgKiBAYXNwdHlwZSBTeW5jZnVzaW9uLkVKMi5Hcmlkcy5UZXh0QWxpZ25cbiAgICAgKi9cbiAgICBwdWJsaWMgdGV4dEFsaWduOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIERlZmluZXMgdmFsaWRhdGlvbiBydWxlcyBmb3IgZGF0YSBiZWZvcmUgY3JlYXRpbmcgb3IgdXBkYXRpbmcgcmVjb3Jkcy4gXG4gICAgICogVGhlIHJ1bGVzIGFyZSB1c2VkIHRvIGVuc3VyZSB0aGF0IGRhdGEgbWVldHMgc3BlY2lmaWMgY3JpdGVyaWEgYmVmb3JlIGl0IGlzIHNhdmVkIG9yIHVwZGF0ZWQuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqL1xuICAgIHB1YmxpYyB2YWxpZGF0aW9uUnVsZXM6IGFueTtcbiAgICAvKiogXG4gICAgICogRGVmaW5lcyB0aGUgbWV0aG9kIHVzZWQgdG8gYXBwbHkgY3VzdG9tIGNlbGwgdmFsdWVzIGZyb20gZXh0ZXJuYWwgZnVuY3Rpb24gYW5kIGRpc3BsYXkgdGhpcyBvbiBlYWNoIGNlbGwgcmVuZGVyZWQuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqL1xuICAgIHB1YmxpYyB2YWx1ZUFjY2Vzc29yOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIElmIGB2aXNpYmxlYCBpcyBzZXQgdG8gZmFsc2UsIGhpZGVzIHRoZSBwYXJ0aWN1bGFyIGNvbHVtbi4gQnkgZGVmYXVsdCwgY29sdW1ucyBhcmUgZGlzcGxheWVkLlxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBwdWJsaWMgdmlzaWJsZTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBEZWZpbmVzIHRoZSB3aWR0aCBvZiB0aGUgY29sdW1uIGluIHBpeGVscyBvciBwZXJjZW50YWdlLlxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKi9cbiAgICBwdWJsaWMgd2lkdGg6IGFueTtcbiAgICAvKiogXG4gICAgICogRGVmaW5lcyB0aGUgY29sdW1uIHRlbXBsYXRlIHRoYXQgcmVuZGVycyBjdXN0b21pemVkIGVsZW1lbnQgaW4gZWFjaCBjZWxsIG9mIHRoZSBjb2x1bW4uIFxuICAgICAqIEl0IGFjY2VwdHMgZWl0aGVyIHRlbXBsYXRlIHN0cmluZyBvciBIVE1MIGVsZW1lbnQgSUQuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqIEBhc3B0eXBlIHN0cmluZ1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ3RlbXBsYXRlJylcbiAgICBAVGVtcGxhdGUoKVxuICAgIHB1YmxpYyB0ZW1wbGF0ZTogYW55O1xuICAgIEBDb250ZW50Q2hpbGQoJ3Rvb2xiYXJUZW1wbGF0ZScpXG4gICAgQFRlbXBsYXRlKClcbiAgICBwdWJsaWMgdG9vbGJhclRlbXBsYXRlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIERlZmluZXMgdGhlIGhlYWRlciB0ZW1wbGF0ZSBhcyBzdHJpbmcgb3IgSFRNTCBlbGVtZW50IElEIHdoaWNoIGlzIHVzZWQgdG8gYWRkIGN1c3RvbWl6ZWQgZWxlbWVudCBpbiB0aGUgY29sdW1uIGhlYWRlci5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICogQGFzcHR5cGUgc3RyaW5nXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnaGVhZGVyVGVtcGxhdGUnKVxuICAgIEBUZW1wbGF0ZSgpXG4gICAgcHVibGljIGhlYWRlclRlbXBsYXRlOiBhbnk7XG4gICAgQENvbnRlbnRDaGlsZCgnZWRpdFRlbXBsYXRlJylcbiAgICBAVGVtcGxhdGUoKVxuICAgIHB1YmxpYyBlZGl0VGVtcGxhdGU6IGFueTtcbiAgICBAQ29udGVudENoaWxkKCdmaWx0ZXJJdGVtVGVtcGxhdGUnKVxuICAgIEBUZW1wbGF0ZSgpXG4gICAgcHVibGljIGZpbHRlcl9pdGVtVGVtcGxhdGU6IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIGEgY3VzdG9tIHRlbXBsYXRlIG9yIFVJIGZvciBmaWx0ZXJpbmcgd2l0aGluIHRoaXMgY29sdW1uLCB1dGlsaXppbmcgZWl0aGVyIHN0cmluZyB0ZW1wbGF0ZXMgb3IgSFRNTCBlbGVtZW50IElEcy5cbiAgICAgKiBAYXNwaWdub3JlIFxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ2ZpbHRlclRlbXBsYXRlJylcbiAgICBAVGVtcGxhdGUoKVxuICAgIHB1YmxpYyBmaWx0ZXJUZW1wbGF0ZTogYW55O1xuICAgIEBDb250ZW50Q2hpbGQoJ2VtcHR5UmVjb3JkVGVtcGxhdGUnKVxuICAgIEBUZW1wbGF0ZSgpXG4gICAgcHVibGljIGVtcHR5UmVjb3JkVGVtcGxhdGU6IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjpWaWV3Q29udGFpbmVyUmVmKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHNldFZhbHVlKCdjdXJyZW50SW5zdGFuY2UnLCB0aGlzLCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyRXZlbnRzKG91dHB1dHMpO1xuICAgICAgICB0aGlzLmRpcmVjdGl2ZVByb3BMaXN0ID0gaW5wdXQ7XG4gICAgfVxufVxuXG4vKipcbiAqIENvbHVtbiBBcnJheSBEaXJlY3RpdmVcbiAqIEBwcml2YXRlXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnZWpzLWdhbnR0PmUtY29sdW1ucycsXG4gICAgcXVlcmllczoge1xuICAgICAgICBjaGlsZHJlbjogbmV3IENvbnRlbnRDaGlsZHJlbihDb2x1bW5EaXJlY3RpdmUpXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgQ29sdW1uc0RpcmVjdGl2ZSBleHRlbmRzIEFycmF5QmFzZTxDb2x1bW5zRGlyZWN0aXZlPiB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCdjb2x1bW5zJyk7XG4gICAgfVxufSJdfQ==
|
|
@@ -187,10 +187,13 @@ let GanttComponent = class GanttComponent extends Gantt {
|
|
|
187
187
|
}
|
|
188
188
|
};
|
|
189
189
|
GanttComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: GanttComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ViewContainerRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
190
|
-
GanttComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: GanttComponent, selector: "ejs-gantt", inputs: { addDialogFields: "addDialogFields", allowExcelExport: "allowExcelExport", allowFiltering: "allowFiltering", allowKeyboard: "allowKeyboard", allowParentDependency: "allowParentDependency", allowPdfExport: "allowPdfExport", allowReordering: "allowReordering", allowResizing: "allowResizing", allowRowDragAndDrop: "allowRowDragAndDrop", allowSelection: "allowSelection", allowSorting: "allowSorting", allowTaskbarDragAndDrop: "allowTaskbarDragAndDrop", allowTaskbarOverlap: "allowTaskbarOverlap", allowUnscheduledTasks: "allowUnscheduledTasks", autoCalculateDateScheduling: "autoCalculateDateScheduling", autoFocusTasks: "autoFocusTasks", autoUpdatePredecessorOffset: "autoUpdatePredecessorOffset", baselineColor: "baselineColor", baselineTemplate: "baselineTemplate", calendarSettings: "calendarSettings", collapseAllParentTasks: "collapseAllParentTasks", columnMenuItems: "columnMenuItems", columns: "columns", connectorLineBackground: "connectorLineBackground", connectorLineWidth: "connectorLineWidth", contextMenuItems: "contextMenuItems", dataSource: "dataSource", dateFormat: "dateFormat", dayWorkingTime: "dayWorkingTime", disableHtmlEncode: "disableHtmlEncode", durationUnit: "durationUnit", editDialogFields: "editDialogFields", editSettings: "editSettings", emptyRecordTemplate: "emptyRecordTemplate", enableAdaptiveUI: "enableAdaptiveUI", enableAutoWbsUpdate: "enableAutoWbsUpdate", enableContextMenu: "enableContextMenu", enableCriticalPath: "enableCriticalPath", enableHover: "enableHover", enableHtmlSanitizer: "enableHtmlSanitizer", enableImmutableMode: "enableImmutableMode", enableInfiniteTimelineScroll: "enableInfiniteTimelineScroll", enableMultiTaskbar: "enableMultiTaskbar", enablePersistence: "enablePersistence", enablePredecessorValidation: "enablePredecessorValidation", enableRtl: "enableRtl", enableTimelineVirtualization: "enableTimelineVirtualization", enableUndoRedo: "enableUndoRedo", enableVirtualMaskRow: "enableVirtualMaskRow", enableVirtualization: "enableVirtualization", enableWBS: "enableWBS", eventMarkers: "eventMarkers", filterSettings: "filterSettings", frozenColumns: "frozenColumns", gridLines: "gridLines", height: "height", highlightWeekends: "highlightWeekends", holidays: "holidays", includeWeekend: "includeWeekend", labelSettings: "labelSettings", loadChildOnDemand: "loadChildOnDemand", loadingIndicator: "loadingIndicator", locale: "locale", milestoneTemplate: "milestoneTemplate", parentTaskbarTemplate: "parentTaskbarTemplate", projectEndDate: "projectEndDate", projectStartDate: "projectStartDate", query: "query", readOnly: "readOnly", renderBaseline: "renderBaseline", resourceFields: "resourceFields", resourceIDMapping: "resourceIDMapping", resourceNameMapping: "resourceNameMapping", resources: "resources", rowHeight: "rowHeight", searchSettings: "searchSettings", segmentData: "segmentData", selectedRowIndex: "selectedRowIndex", selectionSettings: "selectionSettings", showColumnMenu: "showColumnMenu", showInlineNotes: "showInlineNotes", showOverAllocation: "showOverAllocation", sortSettings: "sortSettings", splitterSettings: "splitterSettings", taskFields: "taskFields", taskMode: "taskMode", taskType: "taskType", taskbarHeight: "taskbarHeight", taskbarTemplate: "taskbarTemplate", timelineSettings: "timelineSettings", timelineTemplate: "timelineTemplate", timezone: "timezone", toolbar: "toolbar", tooltipSettings: "tooltipSettings", treeColumnIndex: "treeColumnIndex", undoRedoActions: "undoRedoActions", undoRedoStepsCount: "undoRedoStepsCount", updateOffsetOnTaskbarEdit: "updateOffsetOnTaskbarEdit", validateManualTasksOnLinking: "validateManualTasksOnLinking", viewType: "viewType", weekWorkingTime: "weekWorkingTime", width: "width", workUnit: "workUnit", workWeek: "workWeek", zoomingLevels: "zoomingLevels" }, outputs: { actionBegin: "actionBegin", actionComplete: "actionComplete", actionFailure: "actionFailure", beforeDataBound: "beforeDataBound", beforeExcelExport: "beforeExcelExport", beforePdfExport: "beforePdfExport", beforeTooltipRender: "beforeTooltipRender", cellDeselected: "cellDeselected", cellDeselecting: "cellDeselecting", cellEdit: "cellEdit", cellSave: "cellSave", cellSelected: "cellSelected", cellSelecting: "cellSelecting", collapsed: "collapsed", collapsing: "collapsing", columnDrag: "columnDrag", columnDragStart: "columnDragStart", columnDrop: "columnDrop", columnMenuClick: "columnMenuClick", columnMenuOpen: "columnMenuOpen", contextMenuClick: "contextMenuClick", contextMenuOpen: "contextMenuOpen", created: "created", dataBound: "dataBound", dataSourceChanged: "dataSourceChanged", dataStateChange: "dataStateChange", destroyed: "destroyed", endEdit: "endEdit", excelExportComplete: "excelExportComplete", excelHeaderQueryCellInfo: "excelHeaderQueryCellInfo", excelQueryCellInfo: "excelQueryCellInfo", expanded: "expanded", expanding: "expanding", headerCellInfo: "headerCellInfo", load: "load", onMouseMove: "onMouseMove", onTaskbarClick: "onTaskbarClick", pdfColumnHeaderQueryCellInfo: "pdfColumnHeaderQueryCellInfo", pdfExportComplete: "pdfExportComplete", pdfQueryCellInfo: "pdfQueryCellInfo", pdfQueryTaskbarInfo: "pdfQueryTaskbarInfo", pdfQueryTimelineCellInfo: "pdfQueryTimelineCellInfo", queryCellInfo: "queryCellInfo", queryTaskbarInfo: "queryTaskbarInfo", recordDoubleClick: "recordDoubleClick", resizeStart: "resizeStart", resizeStop: "resizeStop", resizing: "resizing", rowDataBound: "rowDataBound", rowDeselected: "rowDeselected", rowDeselecting: "rowDeselecting", rowDrag: "rowDrag", rowDragStart: "rowDragStart", rowDragStartHelper: "rowDragStartHelper", rowDrop: "rowDrop", rowSelected: "rowSelected", rowSelecting: "rowSelecting", splitterResizeStart: "splitterResizeStart", splitterResized: "splitterResized", splitterResizing: "splitterResizing", taskbarEdited: "taskbarEdited", taskbarEditing: "taskbarEditing", toolbarClick: "toolbarClick", dataSourceChange: "dataSourceChange" }, queries: [{ propertyName: "parentTaskbarTemplate", first: true, predicate: ["parentTaskbarTemplate"], descendants: true }, { propertyName: "timelineTemplate", first: true, predicate: ["timelineTemplate"], descendants: true }, { propertyName: "milestoneTemplate", first: true, predicate: ["milestoneTemplate"], descendants: true }, { propertyName: "baselineTemplate", first: true, predicate: ["baselineTemplate"], descendants: true }, { propertyName: "taskbarTemplate", first: true, predicate: ["taskbarTemplate"], descendants: true }, { propertyName: "editTemplate", first: true, predicate: ["editTemplate"], descendants: true }, { propertyName: "labelSettings_rightLabel", first: true, predicate: ["labelSettingsRightLabel"], descendants: true }, { propertyName: "labelSettings_leftLabel", first: true, predicate: ["labelSettingsLeftLabel"], descendants: true }, { propertyName: "labelSettings_taskLabel", first: true, predicate: ["labelSettingsTaskLabel"], descendants: true }, { propertyName: "tooltipSettings_taskbar", first: true, predicate: ["tooltipSettingsTaskbar"], descendants: true }, { propertyName: "tooltipSettings_baseline", first: true, predicate: ["tooltipSettingsBaseline"], descendants: true }, { propertyName: "tooltipSettings_connectorLine", first: true, predicate: ["tooltipSettingsConnectorLine"], descendants: true }, { propertyName: "tooltipSettings_editing", first: true, predicate: ["tooltipSettingsEditing"], descendants: true }, { propertyName: "tooltipSettings_timeline", first: true, predicate: ["tooltipSettingsTimeline"], descendants: true }, { propertyName: "filter_itemTemplate", first: true, predicate: ["filterItemTemplate"], descendants: true }, { propertyName: "filterTemplate", first: true, predicate: ["filterTemplate"], descendants: true }, { propertyName: "emptyRecordTemplate", first: true, predicate: ["emptyRecordTemplate"], descendants: true }, { propertyName: "childColumns", first: true, predicate: ColumnsDirective, descendants: true }, { propertyName: "childAddDialogFields", first: true, predicate: AddDialogFieldsDirective, descendants: true }, { propertyName: "childEditDialogFields", first: true, predicate: EditDialogFieldsDirective, descendants: true }, { propertyName: "childDayWorkingTime", first: true, predicate: DayWorkingTimeCollectionDirective, descendants: true }, { propertyName: "childWeekWorkingTime", first: true, predicate: WeekWorkingTimesDirective, descendants: true }, { propertyName: "childHolidays", first: true, predicate: HolidaysDirective, descendants: true }, { propertyName: "childEventMarkers", first: true, predicate: EventMarkersDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
190
|
+
GanttComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: GanttComponent, selector: "ejs-gantt", inputs: { addDialogFields: "addDialogFields", allowExcelExport: "allowExcelExport", allowFiltering: "allowFiltering", allowKeyboard: "allowKeyboard", allowParentDependency: "allowParentDependency", allowPdfExport: "allowPdfExport", allowReordering: "allowReordering", allowResizing: "allowResizing", allowRowDragAndDrop: "allowRowDragAndDrop", allowSelection: "allowSelection", allowSorting: "allowSorting", allowTaskbarDragAndDrop: "allowTaskbarDragAndDrop", allowTaskbarOverlap: "allowTaskbarOverlap", allowUnscheduledTasks: "allowUnscheduledTasks", autoCalculateDateScheduling: "autoCalculateDateScheduling", autoFocusTasks: "autoFocusTasks", autoUpdatePredecessorOffset: "autoUpdatePredecessorOffset", baselineColor: "baselineColor", baselineTemplate: "baselineTemplate", calendarSettings: "calendarSettings", collapseAllParentTasks: "collapseAllParentTasks", columnMenuItems: "columnMenuItems", columns: "columns", connectorLineBackground: "connectorLineBackground", connectorLineWidth: "connectorLineWidth", contextMenuItems: "contextMenuItems", dataSource: "dataSource", dateFormat: "dateFormat", dayWorkingTime: "dayWorkingTime", disableHtmlEncode: "disableHtmlEncode", durationUnit: "durationUnit", editDialogFields: "editDialogFields", editSettings: "editSettings", emptyRecordTemplate: "emptyRecordTemplate", enableAdaptiveUI: "enableAdaptiveUI", enableAutoWbsUpdate: "enableAutoWbsUpdate", enableContextMenu: "enableContextMenu", enableCriticalPath: "enableCriticalPath", enableHover: "enableHover", enableHtmlSanitizer: "enableHtmlSanitizer", enableImmutableMode: "enableImmutableMode", enableInfiniteTimelineScroll: "enableInfiniteTimelineScroll", enableMultiTaskbar: "enableMultiTaskbar", enablePersistence: "enablePersistence", enablePredecessorValidation: "enablePredecessorValidation", enableRtl: "enableRtl", enableTimelineVirtualization: "enableTimelineVirtualization", enableUndoRedo: "enableUndoRedo", enableVirtualMaskRow: "enableVirtualMaskRow", enableVirtualization: "enableVirtualization", enableWBS: "enableWBS", eventMarkers: "eventMarkers", filterSettings: "filterSettings", frozenColumns: "frozenColumns", gridLines: "gridLines", height: "height", highlightWeekends: "highlightWeekends", holidays: "holidays", includeWeekend: "includeWeekend", labelSettings: "labelSettings", loadChildOnDemand: "loadChildOnDemand", loadingIndicator: "loadingIndicator", locale: "locale", milestoneTemplate: "milestoneTemplate", parentTaskbarTemplate: "parentTaskbarTemplate", projectEndDate: "projectEndDate", projectStartDate: "projectStartDate", query: "query", readOnly: "readOnly", renderBaseline: "renderBaseline", resourceFields: "resourceFields", resourceIDMapping: "resourceIDMapping", resourceNameMapping: "resourceNameMapping", resources: "resources", rowHeight: "rowHeight", searchSettings: "searchSettings", segmentData: "segmentData", selectedRowIndex: "selectedRowIndex", selectionSettings: "selectionSettings", showColumnMenu: "showColumnMenu", showInlineNotes: "showInlineNotes", showOverAllocation: "showOverAllocation", sortSettings: "sortSettings", splitterSettings: "splitterSettings", taskFields: "taskFields", taskMode: "taskMode", taskType: "taskType", taskbarHeight: "taskbarHeight", taskbarTemplate: "taskbarTemplate", timelineSettings: "timelineSettings", timelineTemplate: "timelineTemplate", timezone: "timezone", toolbar: "toolbar", tooltipSettings: "tooltipSettings", treeColumnIndex: "treeColumnIndex", undoRedoActions: "undoRedoActions", undoRedoStepsCount: "undoRedoStepsCount", updateOffsetOnTaskbarEdit: "updateOffsetOnTaskbarEdit", validateManualTasksOnLinking: "validateManualTasksOnLinking", viewType: "viewType", weekWorkingTime: "weekWorkingTime", width: "width", workUnit: "workUnit", workWeek: "workWeek", zoomingLevels: "zoomingLevels" }, outputs: { actionBegin: "actionBegin", actionComplete: "actionComplete", actionFailure: "actionFailure", beforeDataBound: "beforeDataBound", beforeExcelExport: "beforeExcelExport", beforePdfExport: "beforePdfExport", beforeTooltipRender: "beforeTooltipRender", cellDeselected: "cellDeselected", cellDeselecting: "cellDeselecting", cellEdit: "cellEdit", cellSave: "cellSave", cellSelected: "cellSelected", cellSelecting: "cellSelecting", collapsed: "collapsed", collapsing: "collapsing", columnDrag: "columnDrag", columnDragStart: "columnDragStart", columnDrop: "columnDrop", columnMenuClick: "columnMenuClick", columnMenuOpen: "columnMenuOpen", contextMenuClick: "contextMenuClick", contextMenuOpen: "contextMenuOpen", created: "created", dataBound: "dataBound", dataSourceChanged: "dataSourceChanged", dataStateChange: "dataStateChange", destroyed: "destroyed", endEdit: "endEdit", excelExportComplete: "excelExportComplete", excelHeaderQueryCellInfo: "excelHeaderQueryCellInfo", excelQueryCellInfo: "excelQueryCellInfo", expanded: "expanded", expanding: "expanding", headerCellInfo: "headerCellInfo", load: "load", onMouseMove: "onMouseMove", onTaskbarClick: "onTaskbarClick", pdfColumnHeaderQueryCellInfo: "pdfColumnHeaderQueryCellInfo", pdfExportComplete: "pdfExportComplete", pdfQueryCellInfo: "pdfQueryCellInfo", pdfQueryTaskbarInfo: "pdfQueryTaskbarInfo", pdfQueryTimelineCellInfo: "pdfQueryTimelineCellInfo", queryCellInfo: "queryCellInfo", queryTaskbarInfo: "queryTaskbarInfo", recordDoubleClick: "recordDoubleClick", resizeStart: "resizeStart", resizeStop: "resizeStop", resizing: "resizing", rowDataBound: "rowDataBound", rowDeselected: "rowDeselected", rowDeselecting: "rowDeselecting", rowDrag: "rowDrag", rowDragStart: "rowDragStart", rowDragStartHelper: "rowDragStartHelper", rowDrop: "rowDrop", rowSelected: "rowSelected", rowSelecting: "rowSelecting", splitterResizeStart: "splitterResizeStart", splitterResized: "splitterResized", splitterResizing: "splitterResizing", taskbarEdited: "taskbarEdited", taskbarEditing: "taskbarEditing", toolbarClick: "toolbarClick", dataSourceChange: "dataSourceChange" }, queries: [{ propertyName: "parentTaskbarTemplate", first: true, predicate: ["parentTaskbarTemplate"], descendants: true }, { propertyName: "toolbarTemplate", first: true, predicate: ["toolbarTemplate"], descendants: true }, { propertyName: "timelineTemplate", first: true, predicate: ["timelineTemplate"], descendants: true }, { propertyName: "milestoneTemplate", first: true, predicate: ["milestoneTemplate"], descendants: true }, { propertyName: "baselineTemplate", first: true, predicate: ["baselineTemplate"], descendants: true }, { propertyName: "taskbarTemplate", first: true, predicate: ["taskbarTemplate"], descendants: true }, { propertyName: "editTemplate", first: true, predicate: ["editTemplate"], descendants: true }, { propertyName: "labelSettings_rightLabel", first: true, predicate: ["labelSettingsRightLabel"], descendants: true }, { propertyName: "labelSettings_leftLabel", first: true, predicate: ["labelSettingsLeftLabel"], descendants: true }, { propertyName: "labelSettings_taskLabel", first: true, predicate: ["labelSettingsTaskLabel"], descendants: true }, { propertyName: "tooltipSettings_taskbar", first: true, predicate: ["tooltipSettingsTaskbar"], descendants: true }, { propertyName: "tooltipSettings_baseline", first: true, predicate: ["tooltipSettingsBaseline"], descendants: true }, { propertyName: "tooltipSettings_connectorLine", first: true, predicate: ["tooltipSettingsConnectorLine"], descendants: true }, { propertyName: "tooltipSettings_editing", first: true, predicate: ["tooltipSettingsEditing"], descendants: true }, { propertyName: "tooltipSettings_timeline", first: true, predicate: ["tooltipSettingsTimeline"], descendants: true }, { propertyName: "filter_itemTemplate", first: true, predicate: ["filterItemTemplate"], descendants: true }, { propertyName: "filterTemplate", first: true, predicate: ["filterTemplate"], descendants: true }, { propertyName: "emptyRecordTemplate", first: true, predicate: ["emptyRecordTemplate"], descendants: true }, { propertyName: "template", first: true, predicate: ["template"], descendants: true }, { propertyName: "childColumns", first: true, predicate: ColumnsDirective, descendants: true }, { propertyName: "childAddDialogFields", first: true, predicate: AddDialogFieldsDirective, descendants: true }, { propertyName: "childEditDialogFields", first: true, predicate: EditDialogFieldsDirective, descendants: true }, { propertyName: "childDayWorkingTime", first: true, predicate: DayWorkingTimeCollectionDirective, descendants: true }, { propertyName: "childWeekWorkingTime", first: true, predicate: WeekWorkingTimesDirective, descendants: true }, { propertyName: "childHolidays", first: true, predicate: HolidaysDirective, descendants: true }, { propertyName: "childEventMarkers", first: true, predicate: EventMarkersDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
191
191
|
__decorate([
|
|
192
192
|
Template()
|
|
193
193
|
], GanttComponent.prototype, "parentTaskbarTemplate", void 0);
|
|
194
|
+
__decorate([
|
|
195
|
+
Template()
|
|
196
|
+
], GanttComponent.prototype, "toolbarTemplate", void 0);
|
|
194
197
|
__decorate([
|
|
195
198
|
Template()
|
|
196
199
|
], GanttComponent.prototype, "timelineTemplate", void 0);
|
|
@@ -239,6 +242,9 @@ __decorate([
|
|
|
239
242
|
__decorate([
|
|
240
243
|
Template()
|
|
241
244
|
], GanttComponent.prototype, "emptyRecordTemplate", void 0);
|
|
245
|
+
__decorate([
|
|
246
|
+
Template()
|
|
247
|
+
], GanttComponent.prototype, "template", void 0);
|
|
242
248
|
GanttComponent = __decorate([
|
|
243
249
|
ComponentMixins([ComponentBase])
|
|
244
250
|
], GanttComponent);
|
|
@@ -264,6 +270,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
264
270
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ViewContainerRef }, { type: i0.Injector }]; }, propDecorators: { parentTaskbarTemplate: [{
|
|
265
271
|
type: ContentChild,
|
|
266
272
|
args: ['parentTaskbarTemplate']
|
|
273
|
+
}], toolbarTemplate: [{
|
|
274
|
+
type: ContentChild,
|
|
275
|
+
args: ['toolbarTemplate']
|
|
267
276
|
}], timelineTemplate: [{
|
|
268
277
|
type: ContentChild,
|
|
269
278
|
args: ['timelineTemplate']
|
|
@@ -312,5 +321,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
312
321
|
}], emptyRecordTemplate: [{
|
|
313
322
|
type: ContentChild,
|
|
314
323
|
args: ['emptyRecordTemplate']
|
|
324
|
+
}], template: [{
|
|
325
|
+
type: ContentChild,
|
|
326
|
+
args: ['template']
|
|
315
327
|
}] } });
|
|
316
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FudHQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2dhbnR0L2dhbnR0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBZ0MsdUJBQXVCLEVBQWlELFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5SixPQUFPLEVBQUUsYUFBYSxFQUErQixlQUFlLEVBQTBCLFFBQVEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzdJLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdkUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDekUsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0UsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDeEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBRWpFLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBYSxDQUFDLGlCQUFpQixFQUFDLGtCQUFrQixFQUFDLGdCQUFnQixFQUFDLGVBQWUsRUFBQyx1QkFBdUIsRUFBQyxnQkFBZ0IsRUFBQyxpQkFBaUIsRUFBQyxlQUFlLEVBQUMscUJBQXFCLEVBQUMsZ0JBQWdCLEVBQUMsY0FBYyxFQUFDLHlCQUF5QixFQUFDLHFCQUFxQixFQUFDLHVCQUF1QixFQUFDLDZCQUE2QixFQUFDLGdCQUFnQixFQUFDLDZCQUE2QixFQUFD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O2dCQUsvQix3QkFBd0I7c0JBRjlCLFlBQVk7dUJBQUMseUJBQXlCO2dCQUtoQyxtQkFBbUI7c0JBRnpCLFlBQVk7dUJBQUMsb0JBQW9CO2dCQUszQixjQUFjO3NCQUZwQixZQUFZO3VCQUFDLGdCQUFnQjtnQkFjdkIsbUJBQW1CO3NCQUZ6QixZQUFZO3VCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgVmlld0NvbnRhaW5lclJlZiwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIFF1ZXJ5TGlzdCwgUmVuZGVyZXIyLCBJbmplY3RvciwgVmFsdWVQcm92aWRlciwgQ29udGVudENoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnRCYXNlLCBJQ29tcG9uZW50QmFzZSwgYXBwbHlNaXhpbnMsIENvbXBvbmVudE1peGlucywgUHJvcGVydHlDb2xsZWN0aW9uSW5mbywgc2V0VmFsdWUgfSBmcm9tICdAc3luY2Z1c2lvbi9lajItYW5ndWxhci1iYXNlJztcbmltcG9ydCB7IEdhbnR0IH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWdhbnR0JztcbmltcG9ydCB7IFRlbXBsYXRlIH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItYmFzZSc7XG5pbXBvcnQgeyBDb2x1bW5zRGlyZWN0aXZlIH0gZnJvbSAnLi9jb2x1bW5zLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBBZGREaWFsb2dGaWVsZHNEaXJlY3RpdmUgfSBmcm9tICcuL2FkZGRpYWxvZ2ZpZWxkcy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRWRpdERpYWxvZ0ZpZWxkc0RpcmVjdGl2ZSB9IGZyb20gJy4vZWRpdGRpYWxvZ2ZpZWxkcy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRGF5V29ya2luZ1RpbWVDb2xsZWN0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi9kYXl3b3JraW5ndGltZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgV2Vla1dvcmtpbmdUaW1lc0RpcmVjdGl2ZSB9IGZyb20gJy4vd2Vla3dvcmtpbmd0aW1lLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBIb2xpZGF5c0RpcmVjdGl2ZSB9IGZyb20gJy4vaG9saWRheXMuZGlyZWN0aXZlJztcbmltcG9ydCB7IEV2ZW50TWFya2Vyc0RpcmVjdGl2ZSB9IGZyb20gJy4vZXZlbnRtYXJrZXJzLmRpcmVjdGl2ZSc7XG5cbmV4cG9ydCBjb25zdCBpbnB1dHM6IHN0cmluZ1tdID0gWydhZGREaWFsb2dGaWVsZHMnLCdhbGxvd0V4Y2VsRXhwb3J0JywnYWxsb3dGaWx0ZXJpbmcnLCdhbGxvd0tleWJvYXJkJywnYWxsb3dQYXJlbnREZXBlbmRlbmN5JywnYWxsb3dQZGZFeHBvcnQnLCdhbGxvd1Jlb3JkZXJpbmcnLCdhbGxvd1Jlc2l6aW5nJywnYWxsb3dSb3dEcmFnQW5kRHJvcCcsJ2FsbG93U2VsZWN0aW9uJywnYWxsb3dTb3J0aW5nJywnYWxsb3dUYXNrYmFyRHJhZ0FuZERyb3AnLCdhbGxvd1Rhc2tiYXJPdmVybGFwJywnYWxsb3dVbnNjaGVkdWxlZFRhc2tzJywnYXV0b0NhbGN1bGF0ZURhdGVTY2hlZHVsaW5nJywnYXV0b0ZvY3VzVGFza3MnLCdhdXRvVXBkYXRlUHJlZGVjZXNzb3JPZmZzZXQnLCdiYXNlbGluZUNvbG9yJywnYmFzZWxpbmVUZW1wbGF0ZScsJ2NhbGVuZGFyU2V0dGluZ3MnLCdjb2xsYXBzZUFsbFBhcmVudFRhc2tzJywnY29sdW1uTWVudUl0ZW1zJywnY29sdW1ucycsJ2Nvbm5lY3RvckxpbmVCYWNrZ3JvdW5kJywnY29ubmVjdG9yTGluZVdpZHRoJywnY29udGV4dE1lbnVJdGVtcycsJ2RhdGFTb3VyY2UnLCdkYXRlRm9ybWF0JywnZGF5V29ya2luZ1RpbWUnLCdkaXNhYmxlSHRtbEVuY29kZScsJ2R1cmF0aW9uVW5pdCcsJ2VkaXREaWFsb2dGaWVsZHMnLCdlZGl0U2V0dGluZ3MnLCdlbXB0eVJlY29yZFRlbXBsYXRlJywnZW5hYmxlQWRhcHRpdmVVSScsJ2VuYWJsZUF1dG9XYnNVcGRhdGUnLCdlbmFibGVDb250ZXh0TWVudScsJ2VuYWJsZUNyaXRpY2FsUGF0aCcsJ2VuYWJsZUhvdmVyJywnZW5hYmxlSHRtbFNhbml0aXplcicsJ2VuYWJsZUltbXV0YWJsZU1vZGUnLCdlbmFibGVJbmZpbml0ZVRpbWVsaW5lU2Nyb2xsJywnZW5hYmxlTXVsdGlUYXNrYmFyJywnZW5hYmxlUGVyc2lzdGVuY2UnLCdlbmFibGVQcmVkZWNlc3NvclZhbGlkYXRpb24nLCdlbmFibGVSdGwnLCdlbmFibGVUaW1lbGluZVZpcnR1YWxpemF0aW9uJywnZW5hYmxlVW5kb1JlZG8nLCdlbmFibGVWaXJ0dWFsTWFza1JvdycsJ2VuYWJsZVZpcnR1YWxpemF0aW9uJywnZW5hYmxlV0JTJywnZXZlbnRNYXJrZXJzJywnZmlsdGVyU2V0dGluZ3MnLCdmcm96ZW5Db2x1bW5zJywnZ3JpZExpbmVzJywnaGVpZ2h0JywnaGlnaGxpZ2h0V2Vla2VuZHMnLCdob2xpZGF5cycsJ2luY2x1ZGVXZWVrZW5kJywnbGFiZWxTZXR0aW5ncycsJ2xvYWRDaGlsZE9uRGVtYW5kJywnbG9hZGluZ0luZGljYXRvcicsJ2xvY2FsZScsJ21pbGVzdG9uZVRlbXBsYXRlJywncGFyZW50VGFza2JhclRlbXBsYXRlJywncHJvamVjdEVuZERhdGUnLCdwcm9qZWN0U3RhcnREYXRlJywncXVlcnknLCdyZWFkT25seScsJ3JlbmRlckJhc2VsaW5lJywncmVzb3VyY2VGaWVsZHMnLCdyZXNvdXJjZUlETWFwcGluZycsJ3Jlc291cmNlTmFtZU1hcHBpbmcnLCdyZXNvdXJjZXMnLCdyb3dIZWlnaHQnLCdzZWFyY2hTZXR0aW5ncycsJ3NlZ21lbnREYXRhJywnc2VsZWN0ZWRSb3dJbmRleCcsJ3NlbGVjdGlvblNldHRpbmdzJywnc2hvd0NvbHVtbk1lbnUnLCdzaG93SW5saW5lTm90ZXMnLCdzaG93T3ZlckFsbG9jYXRpb24nLCdzb3J0U2V0dGluZ3MnLCdzcGxpdHRlclNldHRpbmdzJywndGFza0ZpZWxkcycsJ3Rhc2tNb2RlJywndGFza1R5cGUnLCd0YXNrYmFySGVpZ2h0JywndGFza2JhclRlbXBsYXRlJywndGltZWxpbmVTZXR0aW5ncycsJ3RpbWVsaW5lVGVtcGxhdGUnLCd0aW1lem9uZScsJ3Rvb2xiYXInLCd0b29sdGlwU2V0dGluZ3MnLCd0cmVlQ29sdW1uSW5kZXgnLCd1bmRvUmVkb0FjdGlvbnMnLCd1bmRvUmVkb1N0ZXBzQ291bnQnLCd1cGRhdGVPZmZzZXRPblRhc2tiYXJFZGl0JywndmFsaWRhdGVNYW51YWxUYXNrc09uTGlua2luZycsJ3ZpZXdUeXBlJywnd2Vla1dvcmtpbmdUaW1lJywnd2lkdGgnLCd3b3JrVW5pdCcsJ3dvcmtXZWVrJywnem9vbWluZ0xldmVscyddO1xuZXhwb3J0IGNvbnN0IG91dHB1dHM6IHN0cmluZ1tdID0gWydhY3Rpb25CZWdpbicsJ2FjdGlvbkNvbXBsZXRlJywnYWN0aW9uRmFpbHVyZScsJ2JlZm9yZURhdGFCb3VuZCcsJ2JlZm9yZUV4Y2VsRXhwb3J0JywnYmVmb3JlUGRmRXhwb3J0JywnYmVmb3JlVG9vbHRpcFJlbmRlcicsJ2NlbGxEZXNlbGVjdGVkJywnY2VsbERlc2VsZWN0aW5nJywnY2VsbEVkaXQnLCdjZWxsU2F2ZScsJ2NlbGxTZWxlY3RlZCcsJ2NlbGxTZWxlY3RpbmcnLCdjb2xsYXBzZWQnLCdjb2xsYXBzaW5nJywnY29sdW1uRHJhZycsJ2NvbHVtbkRyYWdTdGFydCcsJ2NvbHVtbkRyb3AnLCdjb2x1bW5NZW51Q2xpY2snLCdjb2x1bW5NZW51T3BlbicsJ2NvbnRleHRNZW51Q2xpY2snLCdjb250ZXh0TWVudU9wZW4nLCdjcmVhdGVkJywnZGF0YUJvdW5kJywnZGF0YVNvdXJjZUNoYW5nZWQnLCdkYXRhU3RhdGVDaGFuZ2UnLCdkZXN0cm95ZWQnLCdlbmRFZGl0JywnZXhjZWxFeHBvcnRDb21wbGV0ZScsJ2V4Y2VsSGVhZGVyUXVlcnlDZWxsSW5mbycsJ2V4Y2VsUXVlcnlDZWxsSW5mbycsJ2V4cGFuZGVkJywnZXhwYW5kaW5nJywnaGVhZGVyQ2VsbEluZm8nLCdsb2FkJywnb25Nb3VzZU1vdmUnLCdvblRhc2tiYXJDbGljaycsJ3BkZkNvbHVtbkhlYWRlclF1ZXJ5Q2VsbEluZm8nLCdwZGZFeHBvcnRDb21wbGV0ZScsJ3BkZlF1ZXJ5Q2VsbEluZm8nLCdwZGZRdWVyeVRhc2tiYXJJbmZvJywncGRmUXVlcnlUaW1lbGluZUNlbGxJbmZvJywncXVlcnlDZWxsSW5mbycsJ3F1ZXJ5VGFza2JhckluZm8nLCdyZWNvcmREb3VibGVDbGljaycsJ3Jlc2l6ZVN0YXJ0JywncmVzaXplU3RvcCcsJ3Jlc2l6aW5nJywncm93RGF0YUJvdW5kJywncm93RGVzZWxlY3RlZCcsJ3Jvd0Rlc2VsZWN0aW5nJywncm93RHJhZycsJ3Jvd0RyYWdTdGFydCcsJ3Jvd0RyYWdTdGFydEhlbHBlcicsJ3Jvd0Ryb3AnLCdyb3dTZWxlY3RlZCcsJ3Jvd1NlbGVjdGluZycsJ3NwbGl0dGVyUmVzaXplU3RhcnQnLCdzcGxpdHRlclJlc2l6ZWQnLCdzcGxpdHRlclJlc2l6aW5nJywndGFza2JhckVkaXRlZCcsJ3Rhc2tiYXJFZGl0aW5nJywndG9vbGJhckNsaWNrJywnZGF0YVNvdXJjZUNoYW5nZSddO1xuZXhwb3J0IGNvbnN0IHR3b1dheXM6IHN0cmluZ1tdID0gWydkYXRhU291cmNlJ107XG5cbi8qKlxuICogYGVqcy1nYW50dGAgcmVwcmVzZW50cyB0aGUgQW5ndWxhciBHYW50dCBDb21wb25lbnQuXG4gKiBgYGBodG1sXG4gKiA8ZWpzLWdhbnR0IFtkYXRhU291cmNlXT0nZGF0YScgYWxsb3dTZWxlY3Rpb249J3RydWUnIGFsbG93U29ydGluZz0ndHJ1ZSc+PC9lanMtZ2FudHQ+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdlanMtZ2FudHQnLFxuICAgIGlucHV0czogaW5wdXRzLFxuICAgIG91dHB1dHM6IG91dHB1dHMsXG4gICAgdGVtcGxhdGU6ICcnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHF1ZXJpZXM6IHtcbiAgICAgICAgY2hpbGRDb2x1bW5zOiBuZXcgQ29udGVudENoaWxkKENvbHVtbnNEaXJlY3RpdmUpLCBcbiAgICAgICAgY2hpbGRBZGREaWFsb2dGaWVsZHM6IG5ldyBDb250ZW50Q2hpbGQoQWRkRGlhbG9nRmllbGRzRGlyZWN0aXZlKSwgXG4gICAgICAgIGNoaWxkRWRpdERpYWxvZ0ZpZWxkczogbmV3IENvbnRlbnRDaGlsZChFZGl0RGlhbG9nRmllbGRzRGlyZWN0aXZlKSwgXG4gICAgICAgIGNoaWxkRGF5V29ya2luZ1RpbWU6IG5ldyBDb250ZW50Q2hpbGQoRGF5V29ya2luZ1RpbWVDb2xsZWN0aW9uRGlyZWN0aXZlKSwgXG4gICAgICAgIGNoaWxkV2Vla1dvcmtpbmdUaW1lOiBuZXcgQ29udGVudENoaWxkKFdlZWtXb3JraW5nVGltZXNEaXJlY3RpdmUpLCBcbiAgICAgICAgY2hpbGRIb2xpZGF5czogbmV3IENvbnRlbnRDaGlsZChIb2xpZGF5c0RpcmVjdGl2ZSksIFxuICAgICAgICBjaGlsZEV2ZW50TWFya2VyczogbmV3IENvbnRlbnRDaGlsZChFdmVudE1hcmtlcnNEaXJlY3RpdmUpXG4gICAgfVxufSlcbkBDb21wb25lbnRNaXhpbnMoW0NvbXBvbmVudEJhc2VdKVxuZXhwb3J0IGNsYXNzIEdhbnR0Q29tcG9uZW50IGV4dGVuZHMgR2FudHQgaW1wbGVtZW50cyBJQ29tcG9uZW50QmFzZSB7XG4gICAgcHVibGljIGNvbnRleHQgOiBhbnk7XG4gICAgcHVibGljIHRhZ09iamVjdHM6IGFueTtcblx0YWN0aW9uQmVnaW46IGFueTtcblx0YWN0aW9uQ29tcGxldGU6IGFueTtcblx0YWN0aW9uRmFpbHVyZTogYW55O1xuXHRiZWZvcmVEYXRhQm91bmQ6IGFueTtcblx0YmVmb3JlRXhjZWxFeHBvcnQ6IGFueTtcblx0YmVmb3JlUGRmRXhwb3J0OiBhbnk7XG5cdGJlZm9yZVRvb2x0aXBSZW5kZXI6IGFueTtcblx0Y2VsbERlc2VsZWN0ZWQ6IGFueTtcblx0Y2VsbERlc2VsZWN0aW5nOiBhbnk7XG5cdGNlbGxFZGl0OiBhbnk7XG5cdGNlbGxTYXZlOiBhbnk7XG5cdGNlbGxTZWxlY3RlZDogYW55O1xuXHRjZWxsU2VsZWN0aW5nOiBhbnk7XG5cdGNvbGxhcHNlZDogYW55O1xuXHRjb2xsYXBzaW5nOiBhbnk7XG5cdGNvbHVtbkRyYWc6IGFueTtcblx0Y29sdW1uRHJhZ1N0YXJ0OiBhbnk7XG5cdGNvbHVtbkRyb3A6IGFueTtcblx0Y29sdW1uTWVudUNsaWNrOiBhbnk7XG5cdGNvbHVtbk1lbnVPcGVuOiBhbnk7XG5cdGNvbnRleHRNZW51Q2xpY2s6IGFueTtcblx0Y29udGV4dE1lbnVPcGVuOiBhbnk7XG5cdGNyZWF0ZWQ6IGFueTtcblx0ZGF0YUJvdW5kOiBhbnk7XG5cdGRhdGFTb3VyY2VDaGFuZ2VkOiBhbnk7XG5cdGRhdGFTdGF0ZUNoYW5nZTogYW55O1xuXHRkZXN0cm95ZWQ6IGFueTtcblx0ZW5kRWRpdDogYW55O1xuXHRleGNlbEV4cG9ydENvbXBsZXRlOiBhbnk7XG5cdGV4Y2VsSGVhZGVyUXVlcnlDZWxsSW5mbzogYW55O1xuXHRleGNlbFF1ZXJ5Q2VsbEluZm86IGFueTtcblx0ZXhwYW5kZWQ6IGFueTtcblx0ZXhwYW5kaW5nOiBhbnk7XG5cdGhlYWRlckNlbGxJbmZvOiBhbnk7XG5cdGxvYWQ6IGFueTtcblx0b25Nb3VzZU1vdmU6IGFueTtcblx0b25UYXNrYmFyQ2xpY2s6IGFueTtcblx0cGRmQ29sdW1uSGVhZGVyUXVlcnlDZWxsSW5mbzogYW55O1xuXHRwZGZFeHBvcnRDb21wbGV0ZTogYW55O1xuXHRwZGZRdWVyeUNlbGxJbmZvOiBhbnk7XG5cdHBkZlF1ZXJ5VGFza2JhckluZm86IGFueTtcblx0cGRmUXVlcnlUaW1lbGluZUNlbGxJbmZvOiBhbnk7XG5cdHF1ZXJ5Q2VsbEluZm86IGFueTtcblx0cXVlcnlUYXNrYmFySW5mbzogYW55O1xuXHRyZWNvcmREb3VibGVDbGljazogYW55O1xuXHRyZXNpemVTdGFydDogYW55O1xuXHRyZXNpemVTdG9wOiBhbnk7XG5cdHJlc2l6aW5nOiBhbnk7XG5cdHJvd0RhdGFCb3VuZDogYW55O1xuXHRyb3dEZXNlbGVjdGVkOiBhbnk7XG5cdHJvd0Rlc2VsZWN0aW5nOiBhbnk7XG5cdHJvd0RyYWc6IGFueTtcblx0cm93RHJhZ1N0YXJ0OiBhbnk7XG5cdHJvd0RyYWdTdGFydEhlbHBlcjogYW55O1xuXHRyb3dEcm9wOiBhbnk7XG5cdHJvd1NlbGVjdGVkOiBhbnk7XG5cdHJvd1NlbGVjdGluZzogYW55O1xuXHRzcGxpdHRlclJlc2l6ZVN0YXJ0OiBhbnk7XG5cdHNwbGl0dGVyUmVzaXplZDogYW55O1xuXHRzcGxpdHRlclJlc2l6aW5nOiBhbnk7XG5cdHRhc2tiYXJFZGl0ZWQ6IGFueTtcblx0dGFza2JhckVkaXRpbmc6IGFueTtcblx0dG9vbGJhckNsaWNrOiBhbnk7XG5cdHB1YmxpYyBkYXRhU291cmNlQ2hhbmdlOiBhbnk7XG4gICAgcHVibGljIGNoaWxkQ29sdW1uczogUXVlcnlMaXN0PENvbHVtbnNEaXJlY3RpdmU+O1xuICAgIHB1YmxpYyBjaGlsZEFkZERpYWxvZ0ZpZWxkczogUXVlcnlMaXN0PEFkZERpYWxvZ0ZpZWxkc0RpcmVjdGl2ZT47XG4gICAgcHVibGljIGNoaWxkRWRpdERpYWxvZ0ZpZWxkczogUXVlcnlMaXN0PEVkaXREaWFsb2dGaWVsZHNEaXJlY3RpdmU+O1xuICAgIHB1YmxpYyBjaGlsZERheVdvcmtpbmdUaW1lOiBRdWVyeUxpc3Q8RGF5V29ya2luZ1RpbWVDb2xsZWN0aW9uRGlyZWN0aXZlPjtcbiAgICBwdWJsaWMgY2hpbGRXZWVrV29ya2luZ1RpbWU6IFF1ZXJ5TGlzdDxXZWVrV29ya2luZ1RpbWVzRGlyZWN0aXZlPjtcbiAgICBwdWJsaWMgY2hpbGRIb2xpZGF5czogUXVlcnlMaXN0PEhvbGlkYXlzRGlyZWN0aXZlPjtcbiAgICBwdWJsaWMgY2hpbGRFdmVudE1hcmtlcnM6IFF1ZXJ5TGlzdDxFdmVudE1hcmtlcnNEaXJlY3RpdmU+O1xuICAgIHB1YmxpYyB0YWdzOiBzdHJpbmdbXSA9IFsnY29sdW1ucycsICdhZGREaWFsb2dGaWVsZHMnLCAnZWRpdERpYWxvZ0ZpZWxkcycsICdkYXlXb3JraW5nVGltZScsICd3ZWVrV29ya2luZ1RpbWUnLCAnaG9saWRheXMnLCAnZXZlbnRNYXJrZXJzJ107XG4gICAgLyoqIFxuICAgICAqIERlZmluZXMgYSBjdXN0b20gdGVtcGxhdGUgZm9yIHJlbmRlcmluZyBwYXJlbnQgdGFzayBiYXJzIGluIHRoZSBHYW50dCBjaGFydC4gVGhpcyB0ZW1wbGF0ZSBhbGxvd3MgeW91IHRvIGN1c3RvbWl6ZSB0aGUgYXBwZWFyYW5jZSBvZiBwYXJlbnQgdGFzayBiYXJzLiBcbiAgICAgKiB7JSBjb2RlQmxvY2sgc3JjPSdnYW50dC9wYXJlbnRUYXNrYmFyVGVtcGxhdGUvaW5kZXgubWQnICV9eyUgZW5kY29kZUJsb2NrICV9XG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqIEBhc3B0eXBlIHN0cmluZ1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ3BhcmVudFRhc2tiYXJUZW1wbGF0ZScpXG4gICAgQFRlbXBsYXRlKClcbiAgICBwdWJsaWMgcGFyZW50VGFza2JhclRlbXBsYXRlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgdGVtcGxhdGUgdXNlZCB0byByZW5kZXIgY3VzdG9tIEhUTUwgY29udGVudCBpbiB0aW1lbGluZSBjZWxscy4gXG4gICAgICogeyUgY29kZUJsb2NrIHNyYz0nZ2FudHQvdGltZWxpbmVUZW1wbGF0ZS9pbmRleC5tZCcgJX17JSBlbmRjb2RlQmxvY2sgJX1cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICogQGFzcHR5cGUgc3RyaW5nXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgndGltZWxpbmVUZW1wbGF0ZScpXG4gICAgQFRlbXBsYXRlKClcbiAgICBwdWJsaWMgdGltZWxpbmVUZW1wbGF0ZTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBEZWZpbmVzIGEgY3VzdG9tIHRlbXBsYXRlIGZvciByZW5kZXJpbmcgbWlsZXN0b25lIHRhc2tzIGluIHRoZSBHYW50dCBjaGFydC4gVGhpcyB0ZW1wbGF0ZSBhbGxvd3MgeW91IHRvIGN1c3RvbWl6ZSB0aGUgYXBwZWFyYW5jZSBvZiBtaWxlc3RvbmUgdGFza3MuIFxuICAgICAqIHslIGNvZGVCbG9jayBzcmM9J2dhbnR0L21pbGVzdG9uZVRlbXBsYXRlL2luZGV4Lm1kJyAlfXslIGVuZGNvZGVCbG9jayAlfVxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKiBAYXNwdHlwZSBzdHJpbmdcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdtaWxlc3RvbmVUZW1wbGF0ZScpXG4gICAgQFRlbXBsYXRlKClcbiAgICBwdWJsaWMgbWlsZXN0b25lVGVtcGxhdGU6IGFueTtcbiAgICAvKiogXG4gICAgICogLiBcbiAgICAgKiBBY2NlcHRzIGFuIGVsZW1lbnQgSUQgc2VsZWN0b3IsIEhUTUwgc3RyaW5nLCBvciBmdW5jdGlvbiByZXR1cm5pbmcgYHN0cmluZ2Agb3IgYEhUTUxFbGVtZW50YC4gXG4gICAgICogRGVmaW5lcyBhIGN1c3RvbSB0ZW1wbGF0ZSBmb3IgcmVuZGVyaW5nIGJhc2VsaW5lIGJhcnMgaW4gdGhlIEdhbnR0IGNoYXJ0LlxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKiBAYXNwdHlwZSBzdHJpbmdcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdiYXNlbGluZVRlbXBsYXRlJylcbiAgICBAVGVtcGxhdGUoKVxuICAgIHB1YmxpYyBiYXNlbGluZVRlbXBsYXRlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoZSB0YXNrIGJhciB0ZW1wbGF0ZSB0aGF0IHJlbmRlcnMgY3VzdG9taXplZCBjaGlsZCB0YXNrIGJhcnMgZnJvbSB0aGUgZ2l2ZW4gdGVtcGxhdGUuIFxuICAgICAqIFRoaXMgcHJvcGVydHkgYWxsb3dzIHVzZXJzIHRvIGRlZmluZSBhIGN1c3RvbSB0ZW1wbGF0ZSBmb3IgcmVuZGVyaW5nIGNoaWxkIHRhc2sgYmFycyBpbiB0aGUgR2FudHQgY2hhcnQuIFxuICAgICAqIHslIGNvZGVCbG9jayBzcmM9J2dhbnR0L3Rhc2tiYXJUZW1wbGF0ZS9pbmRleC5tZCcgJX17JSBlbmRjb2RlQmxvY2sgJX1cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICogQGFzcHR5cGUgc3RyaW5nXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgndGFza2JhclRlbXBsYXRlJylcbiAgICBAVGVtcGxhdGUoKVxuICAgIHB1YmxpYyB0YXNrYmFyVGVtcGxhdGU6IGFueTtcbiAgICBAQ29udGVudENoaWxkKCdlZGl0VGVtcGxhdGUnKVxuICAgIEBUZW1wbGF0ZSgpXG4gICAgcHVibGljIGVkaXRUZW1wbGF0ZTogYW55O1xuICAgIEBDb250ZW50Q2hpbGQoJ2xhYmVsU2V0dGluZ3NSaWdodExhYmVsJylcbiAgICBAVGVtcGxhdGUoKVxuICAgIHB1YmxpYyBsYWJlbFNldHRpbmdzX3JpZ2h0TGFiZWw6IGFueTtcbiAgICBAQ29udGVudENoaWxkKCdsYWJlbFNldHRpbmdzTGVmdExhYmVsJylcbiAgICBAVGVtcGxhdGUoKVxuICAgIHB1YmxpYyBsYWJlbFNldHRpbmdzX2xlZnRMYWJlbDogYW55O1xuICAgIEBDb250ZW50Q2hpbGQoJ2xhYmVsU2V0dGluZ3NUYXNrTGFiZWwnKVxuICAgIEBUZW1wbGF0ZSgpXG4gICAgcHVibGljIGxhYmVsU2V0dGluZ3NfdGFza0xhYmVsOiBhbnk7XG4gICAgQENvbnRlbnRDaGlsZCgndG9vbHRpcFNldHRpbmdzVGFza2JhcicpXG4gICAgQFRlbXBsYXRlKClcbiAgICBwdWJsaWMgdG9vbHRpcFNldHRpbmdzX3Rhc2tiYXI6IGFueTtcbiAgICBAQ29udGVudENoaWxkKCd0b29sdGlwU2V0dGluZ3NCYXNlbGluZScpXG4gICAgQFRlbXBsYXRlKClcbiAgICBwdWJsaWMgdG9vbHRpcFNldHRpbmdzX2Jhc2VsaW5lOiBhbnk7XG4gICAgQENvbnRlbnRDaGlsZCgndG9vbHRpcFNldHRpbmdzQ29ubmVjdG9yTGluZScpXG4gICAgQFRlbXBsYXRlKClcbiAgICBwdWJsaWMgdG9vbHRpcFNldHRpbmdzX2Nvbm5lY3RvckxpbmU6IGFueTtcbiAgICBAQ29udGVudENoaWxkKCd0b29sdGlwU2V0dGluZ3NFZGl0aW5nJylcbiAgICBAVGVtcGxhdGUoKVxuICAgIHB1YmxpYyB0b29sdGlwU2V0dGluZ3NfZWRpdGluZzogYW55O1xuICAgIEBDb250ZW50Q2hpbGQoJ3Rvb2x0aXBTZXR0aW5nc1RpbWVsaW5lJylcbiAgICBAVGVtcGxhdGUoKVxuICAgIHB1YmxpYyB0b29sdGlwU2V0dGluZ3NfdGltZWxpbmU6IGFueTtcbiAgICBAQ29udGVudENoaWxkKCdmaWx0ZXJJdGVtVGVtcGxhdGUnKVxuICAgIEBUZW1wbGF0ZSgpXG4gICAgcHVibGljIGZpbHRlcl9pdGVtVGVtcGxhdGU6IGFueTtcbiAgICBAQ29udGVudENoaWxkKCdmaWx0ZXJUZW1wbGF0ZScpXG4gICAgQFRlbXBsYXRlKClcbiAgICBwdWJsaWMgZmlsdGVyVGVtcGxhdGU6IGFueTtcbiAgICAvKiogXG4gICAgICogRGVmaW5lcyBhIGN1c3RvbSB0ZW1wbGF0ZSB0byBkaXNwbGF5IHdoZW4gdGhlIEdhbnR0IGNoYXJ0IGhhcyBubyByZWNvcmRzLlxuICAgICAqIFxuICAgICAqIFRoaXMgdGVtcGxhdGUgcmVwbGFjZXMgdGhlIGRlZmF1bHQgZW1wdHkgcmVjb3JkIG1lc3NhZ2UgYW5kIGNhbiBpbmNsdWRlIHRleHQsIEhUTUwgZWxlbWVudHMsIG9yIGltYWdlcy5cbiAgICAgKkFjY2VwdHMgZWl0aGVyIGEgdGVtcGxhdGUgc3RyaW5nIG9yIGFuIEhUTUwgZWxlbWVudCBJRC5cbiAgICAgKiAgICAgXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqIEBhc3B0eXBlIHN0cmluZ1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ2VtcHR5UmVjb3JkVGVtcGxhdGUnKVxuICAgIEBUZW1wbGF0ZSgpXG4gICAgcHVibGljIGVtcHR5UmVjb3JkVGVtcGxhdGU6IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgbmdFbGU6IEVsZW1lbnRSZWYsIHByaXZhdGUgc3JlbmRlcmVyOiBSZW5kZXJlcjIsIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjpWaWV3Q29udGFpbmVyUmVmLCBwcml2YXRlIGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmVsZW1lbnQgPSB0aGlzLm5nRWxlLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzID0gdGhpcy5pbmplY3RlZE1vZHVsZXMgfHwgW107XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbGV0IG1vZCA9IHRoaXMuaW5qZWN0b3IuZ2V0KCdHYW50dEZpbHRlcicpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnR2FudHRTZWxlY3Rpb24nKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0dhbnR0U29ydCcpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnR2FudHRSZW9yZGVyJyk7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5pbmplY3RlZE1vZHVsZXMuaW5kZXhPZihtb2QpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluamVjdGVkTW9kdWxlcy5wdXNoKG1vZClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIHsgfVxuXHIgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbGV0IG1vZCA9IHRoaXMuaW5qZWN0b3IuZ2V0KCdHYW50dFJlc2l6ZScpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnR2FudHRFZGl0Jyk7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5pbmplY3RlZE1vZHVsZXMuaW5kZXhPZihtb2QpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluamVjdGVkTW9kdWxlcy5wdXNoKG1vZClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIHsgfVxuXHIgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbGV0IG1vZCA9IHRoaXMuaW5qZWN0b3IuZ2V0KCdHYW50dERheU1hcmtlcnMnKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0dhbnR0VG9vbGJhcicpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnR2FudHRDb250ZXh0TWVudScpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnR2FudHRFeGNlbEV4cG9ydCcpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnR2FudHRSb3dERCcpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnR2FudHRDb2x1bW5NZW51Jyk7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5pbmplY3RlZE1vZHVsZXMuaW5kZXhPZihtb2QpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluamVjdGVkTW9kdWxlcy5wdXNoKG1vZClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIHsgfVxuXHIgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbGV0IG1vZCA9IHRoaXMuaW5qZWN0b3IuZ2V0KCdHYW50dFBkZkV4cG9ydCcpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnR2FudHRWaXJ0dWFsU2Nyb2xsJyk7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5pbmplY3RlZE1vZHVsZXMuaW5kZXhPZihtb2QpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluamVjdGVkTW9kdWxlcy5wdXNoKG1vZClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIHsgfVxuXHIgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbGV0IG1vZCA9IHRoaXMuaW5qZWN0b3IuZ2V0KCdHYW50dENyaXRpY2FsUGF0aCcpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnR2FudHRVbmRvUmVkbycpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnR2FudHRGcmVlemUnKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cclxuICAgICAgICB0aGlzLnJlZ2lzdGVyRXZlbnRzKG91dHB1dHMpO1xuICAgICAgICB0aGlzLmFkZFR3b1dheS5jYWxsKHRoaXMsIHR3b1dheXMpO1xuICAgICAgICBzZXRWYWx1ZSgnY3VycmVudEluc3RhbmNlJywgdGhpcywgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcbiAgICAgICAgdGhpcy5jb250ZXh0ICA9IG5ldyBDb21wb25lbnRCYXNlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmNvbnRleHQubmdPbkluaXQodGhpcyk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb250ZXh0Lm5nQWZ0ZXJWaWV3SW5pdCh0aGlzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29udGV4dC5uZ09uRGVzdHJveSh0aGlzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdBZnRlckNvbnRlbnRDaGVja2VkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnRhZ09iamVjdHNbMF0uaW5zdGFuY2UgPSB0aGlzLmNoaWxkQ29sdW1ucztcbiAgICAgICAgXG5cdCAgICBpZiAodGhpcy5jaGlsZEFkZERpYWxvZ0ZpZWxkcykge1xuICAgICAgICAgICAgdGhpcy50YWdPYmplY3RzWzFdLmluc3RhbmNlID0gdGhpcy5jaGlsZEFkZERpYWxvZ0ZpZWxkcztcbiAgICAgICAgfVxuICAgICAgICBcblx0ICAgIGlmICh0aGlzLmNoaWxkRWRpdERpYWxvZ0ZpZWxkcykge1xuICAgICAgICAgICAgdGhpcy50YWdPYmplY3RzWzJdLmluc3RhbmNlID0gdGhpcy5jaGlsZEVkaXREaWFsb2dGaWVsZHM7XG4gICAgICAgIH1cbiAgICAgICAgXG5cdCAgICBpZiAodGhpcy5jaGlsZERheVdvcmtpbmdUaW1lKSB7XG4gICAgICAgICAgICB0aGlzLnRhZ09iamVjdHNbM10uaW5zdGFuY2UgPSB0aGlzLmNoaWxkRGF5V29ya2luZ1RpbWU7XG4gICAgICAgIH1cbiAgICAgICAgXG5cdCAgICBpZiAodGhpcy5jaGlsZFdlZWtXb3JraW5nVGltZSkge1xuICAgICAgICAgICAgdGhpcy50YWdPYmplY3RzWzRdLmluc3RhbmNlID0gdGhpcy5jaGlsZFdlZWtXb3JraW5nVGltZTtcbiAgICAgICAgfVxuICAgICAgICBcblx0ICAgIGlmICh0aGlzLmNoaWxkSG9saWRheXMpIHtcbiAgICAgICAgICAgIHRoaXMudGFnT2JqZWN0c1s1XS5pbnN0YW5jZSA9IHRoaXMuY2hpbGRIb2xpZGF5cztcbiAgICAgICAgfVxuICAgICAgICBcblx0ICAgIGlmICh0aGlzLmNoaWxkRXZlbnRNYXJrZXJzKSB7XG4gICAgICAgICAgICB0aGlzLnRhZ09iamVjdHNbNl0uaW5zdGFuY2UgPSB0aGlzLmNoaWxkRXZlbnRNYXJrZXJzO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29udGV4dC5uZ0FmdGVyQ29udGVudENoZWNrZWQodGhpcyk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyRXZlbnRzOiAoZXZlbnRMaXN0OiBzdHJpbmdbXSkgPT4gdm9pZDtcbiAgICBwdWJsaWMgYWRkVHdvV2F5OiAocHJvcExpc3Q6IHN0cmluZ1tdKSA9PiB2b2lkO1xufVxuXG4iXX0=
|
|
328
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FudHQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2dhbnR0L2dhbnR0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBZ0MsdUJBQXVCLEVBQWlELFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5SixPQUFPLEVBQUUsYUFBYSxFQUErQixlQUFlLEVBQTBCLFFBQVEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzdJLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdkUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDekUsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0UsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDeEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBRWpFLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBYSxDQUFDLGlCQUFpQixFQUFDLGtCQUFrQixFQUFDLGdCQUFnQixFQUFDLGVBQWUsRUFBQyx1QkFBdUIsRUFBQyxnQkFBZ0IsRUFBQyxpQkFBaUIsRUFBQyxlQUFlLEVBQUMscUJBQXFCLEVBQUMsZ0JBQWdCLEVBQUMsY0FBYyxFQUFDLHlCQUF5QixFQUFDLHFCQUFxQixFQUFDLHVCQUF1QixFQUFDLDZCQUE2QixFQUFDLGdCQUFnQixFQUFDLDZCQUE2QixFQUFDLGVBQWUsRUFBQyxrQkFBa0IsRUFBQyxrQkFBa0IsRUFBQyx3QkFBd0IsRUFBQyxpQkFBaUIsRUFBQyxTQUFTLEVBQUMseUJBQXlCLEVBQUMsb0JBQW9CLEVBQUMsa0JBQWtCLEVBQUMsWUFBWSxFQUFDLFlBQVksRUFBQyxnQkFBZ0IsRUFBQyxtQkFBbUIsRUFBQyxjQUFjLEVBQUMsa0JBQWtCLEVBQUMsY0FBYyxFQUFDLHFCQUFxQixFQUFDLGtCQUFrQixFQUFDLHFCQUFxQixFQUFDLG1CQUFtQixFQUFDLG9CQUFvQixFQUFDLGFBQWEsRUFBQyxxQkFBcUIsRUFBQyxxQkFBcUIsRUFBQyw4QkFBOEIsRUFBQyxvQkFBb0IsRUFBQyxtQkFBbUIsRUFBQyw2QkFBNkIsRUFBQyxXQUFXLEVBQUMsOEJBQThCLEVBQUMsZ0JBQWdCLEVBQUMsc0JBQXNCLEVBQUMsc0JBQXNCLEVBQUMsV0FBVyxFQUFDLGNBQWMsRUFBQyxnQkFBZ0IsRUFBQyxlQUFlLEVBQUMsV0FBVyxFQUFDLFFBQVEsRUFBQyxtQkFBbUIsRUFBQyxVQUFVLEVBQUMsZ0JBQWdCLEVBQUMsZUFBZSxFQUFDLG1CQUFtQixFQUFDLGtCQUFrQixFQUFDLFFBQVEsRUFBQyxtQkFBbUIsRUFBQyx1QkFBdUIsRUFBQyxnQkFBZ0IsRUFBQyxrQkFBa0IsRUFBQyxPQUFPLEVBQUMsVUFBVSxFQUFDLGdCQUFnQixFQUFDLGdCQUFnQixFQUFDLG1CQUFtQixFQUFDLHFCQUFxQixFQUFDLFdBQVcsRUFBQyxXQUFXLEVBQUMsZ0JBQWdCLEVBQUMsYUFBYSxFQUFDLGtCQUFrQixFQUFDLG1CQUFtQixFQUFDLGdCQUFnQixFQUFDLGlCQUFpQixFQUFDLG9CQUFvQixFQUFDLGNBQWMsRUFBQyxrQkFBa0IsRUFBQyxZQUFZLEVBQUMsVUFBVSxFQUFDLFVBQVUsRUFBQyxlQUFlLEVBQUMsaUJBQWlCLEVBQUMsa0JBQWtCLEVBQUMsa0JBQWtCLEVBQUMsVUFBVSxFQUFDLFNBQVMsRUFBQyxpQkFBaUIsRUFBQyxpQkFBaUIsRUFBQyxpQkFBaUIsRUFBQyxvQkFBb0IsRUFBQywyQkFBMkIsRUFBQyw4QkFBOEIsRUFBQyxVQUFVLEVBQUMsaUJBQWlCLEVBQUMsT0FBTyxFQUFDLFVBQVUsRUFBQyxVQUFVLEVBQUMsZUFBZSxDQUFDLENBQUM7QUFDdDRELE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBYSxDQUFDLGFBQWEsRUFBQyxnQkFBZ0IsRUFBQyxlQUFlLEVBQUMsaUJBQWlCLEVBQUMsbUJBQW1CLEVBQUMsaUJBQWlCLEVBQUMscUJBQXFCLEVBQUMsZ0JBQWdCLEVBQUMsaUJBQWlCLEVBQUMsVUFBVSxFQUFDLFVBQVUsRUFBQyxjQUFjLEVBQUMsZUFBZSxFQUFDLFdBQVcsRUFBQyxZQUFZLEVBQUMsWUFBWSxFQUFDLGlCQUFpQixFQUFDLFlBQVksRUFBQyxpQkFBaUIsRUFBQyxnQkFBZ0IsRUFBQyxrQkFBa0IsRUFBQyxpQkFBaUIsRUFBQyxTQUFTLEVBQUMsV0FBVyxFQUFDLG1CQUFtQixFQUFDLGlCQUFpQixFQUFDLFdBQVcsRUFBQyxTQUFTLEVBQUMscUJBQXFCLEVBQUMsMEJBQTBCLEVBQUMsb0JBQW9CLEVBQUMsVUFBVSxFQUFDLFdBQVcsRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLEVBQUMsYUFBYSxFQUFDLGdCQUFnQixFQUFDLDhCQUE4QixFQUFDLG1CQUFtQixFQUFDLGtCQUFrQixFQUFDLHFCQUFxQixFQUFDLDBCQUEwQixFQUFDLGVBQWUsRUFBQyxrQkFBa0IsRUFBQyxtQkFBbUIsRUFBQyxhQUFhLEVBQUMsWUFBWSxFQUFDLFVBQVUsRUFBQyxjQUFjLEVBQUMsZUFBZSxFQUFDLGdCQUFnQixFQUFDLFNBQVMsRUFBQyxjQUFjLEVBQUMsb0JBQW9CLEVBQUMsU0FBUyxFQUFDLGFBQWEsRUFBQyxjQUFjLEVBQUMscUJBQXFCLEVBQUMsaUJBQWlCLEVBQUMsa0JBQWtCLEVBQUMsZUFBZSxFQUFDLGdCQUFnQixFQUFDLGNBQWMsRUFBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBQ2xrQyxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUVoRDs7Ozs7R0FLRztJQWtCVSxjQUFjLFNBQWQsY0FBZSxTQUFRLEtBQUs7SUE4S3JDLFlBQW9CLEtBQWlCLEVBQVUsU0FBb0IsRUFBVSxnQkFBaUMsRUFBVSxRQUFrQjtRQUN0SSxLQUFLLEVBQUUsQ0FBQztRQURRLFVBQUssR0FBTCxLQUFLLENBQVk7UUFBVSxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQVUscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQjtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVU7UUFwR25JLFNBQUksR0FBYSxDQUFDLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFzR3hJLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUM7UUFDeEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQztRQUNsRCxJQUFJO1lBQ0ksSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDM0MsSUFBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDekMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7YUFDakM7U0FDSjtRQUFDLE1BQU0sR0FBRztRQUVmLElBQUk7WUFDSSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQzlDLElBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7Z0JBQ3pDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO2FBQ2pDO1NBQ0o7UUFBQyxNQUFNLEdBQUc7UUFFZixJQUFJO1lBQ0ksSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDekMsSUFBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDekMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7YUFDakM7U0FDSjtRQUFDLE1BQU0sR0FBRztRQUVmLElBQUk7WUFDSSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUM1QyxJQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO2dCQUN6QyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTthQUNqQztTQUNKO1FBQUMsTUFBTSxHQUFHO1FBRWYsSUFBSTtZQUNJLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzNDLElBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7Z0JBQ3pDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO2FBQ2pDO1NBQ0o7UUFBQyxNQUFNLEdBQUc7UUFFZixJQUFJO1lBQ0ksSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDekMsSUFBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDekMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7YUFDakM7U0FDSjtRQUFDLE1BQU0sR0FBRztRQUVmLElBQUk7WUFDSSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQy9DLElBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7Z0JBQ3pDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO2FBQ2pDO1NBQ0o7UUFBQyxNQUFNLEdBQUc7UUFFZixJQUFJO1lBQ0ksSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDNUMsSUFBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDekMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7YUFDakM7U0FDSjtRQUFDLE1BQU0sR0FBRztRQUVmLElBQUk7WUFDSSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQ2hELElBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7Z0JBQ3pDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO2FBQ2pDO1NBQ0o7UUFBQyxNQUFNLEdBQUc7UUFFZixJQUFJO1lBQ0ksSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUNoRCxJQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO2dCQUN6QyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTthQUNqQztTQUNKO1FBQUMsTUFBTSxHQUFHO1FBRWYsSUFBSTtZQUNJLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzFDLElBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7Z0JBQ3pDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO2FBQ2pDO1NBQ0o7UUFBQyxNQUFNLEdBQUc7UUFFZixJQUFJO1lBQ0ksSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUMvQyxJQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO2dCQUN6QyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTthQUNqQztTQUNKO1FBQUMsTUFBTSxHQUFHO1FBRWYsSUFBSTtZQUNJLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDOUMsSUFBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDekMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7YUFDakM7U0FDSjtRQUFDLE1BQU0sR0FBRztRQUVmLElBQUk7WUFDSSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQ2xELElBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7Z0JBQ3pDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO2FBQ2pDO1NBQ0o7UUFBQyxNQUFNLEdBQUc7UUFFZixJQUFJO1lBQ0ksSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUNqRCxJQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO2dCQUN6QyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTthQUNqQztTQUNKO1FBQUMsTUFBTSxHQUFHO1FBRWYsSUFBSTtZQUNJLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzdDLElBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7Z0JBQ3pDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO2FBQ2pDO1NBQ0o7UUFBQyxNQUFNLEdBQUc7UUFFZixJQUFJO1lBQ0ksSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDM0MsSUFBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDekMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7YUFDakM7U0FDSjtRQUFDLE1BQU0sR0FBRztRQUVmLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLE9BQU8sR0FBSSxJQUFJLGFBQWEsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFTSxRQUFRO1FBQ1gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVNLGVBQWU7UUFDbEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVNLFdBQVc7UUFDZCxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRU0scUJBQXFCO1FBQ3hCLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFFbkQsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFDeEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1NBQzNEO1FBRUosSUFBSSxJQUFJLENBQUMscUJBQXFCLEVBQUU7WUFDekIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDO1NBQzVEO1FBRUosSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUU7WUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDO1NBQzFEO1FBRUosSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFDeEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1NBQzNEO1FBRUosSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7U0FDcEQ7UUFFSixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUNyQixJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUM7U0FDeEQ7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdDLENBQUM7Q0FJSixDQUFBOzJHQTFWWSxjQUFjOytGQUFkLGNBQWMsZzVQQVZZLGdCQUFnQix1RkFDUix3QkFBd0Isd0ZBQ3ZCLHlCQUF5QixzRkFDM0IsaUNBQWlDLHVGQUNoQyx5QkFBeUIsZ0ZBQ2hDLGlCQUFpQixvRkFDYixxQkFBcUIsdUVBVG5ELEVBQUU7QUFnR1o7SUFEQyxRQUFRLEVBQUU7NkRBQ3VCO0FBR2xDO0lBREMsUUFBUSxFQUFFO3VEQUNpQjtBQVM1QjtJQURDLFFBQVEsRUFBRTt3REFDa0I7QUFTN0I7SUFEQyxRQUFRLEVBQUU7eURBQ21CO0FBVTlCO0lBREMsUUFBUSxFQUFFO3dEQUNrQjtBQVU3QjtJQURDLFFBQVEsRUFBRTt1REFDaUI7QUFHNUI7SUFEQyxRQUFRLEVBQUU7b0RBQ2M7QUFHekI7SUFEQyxRQUFRLEVBQUU7Z0VBQzBCO0FBR3JDO0lBREMsUUFBUSxFQUFFOytEQUN5QjtBQUdwQztJQURDLFFBQVEsRUFBRTsrREFDeUI7QUFHcEM7SUFEQyxRQUFRLEVBQUU7K0RBQ3lCO0FBR3BDO0lBREMsUUFBUSxFQUFFO2dFQUMwQjtBQUdyQztJQURDLFFBQVEsRUFBRTtxRUFDK0I7QUFHMUM7SUFEQyxRQUFRLEVBQUU7K0RBQ3lCO0FBR3BDO0lBREMsUUFBUSxFQUFFO2dFQUMwQjtBQUdyQztJQURDLFFBQVEsRUFBRTsyREFDcUI7QUFHaEM7SUFEQyxRQUFRLEVBQUU7c0RBQ2dCO0FBWTNCO0lBREMsUUFBUSxFQUFFOzJEQUNxQjtBQUdoQztJQURDLFFBQVEsRUFBRTtnREFDVTtBQTVLWixjQUFjO0lBRDFCLGVBQWUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0dBQ3BCLGNBQWMsQ0EwVjFCO1NBMVZZLGNBQWM7MkZBQWQsY0FBYztrQkFqQjFCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLE1BQU0sRUFBRSxNQUFNO29CQUNkLE9BQU8sRUFBRSxPQUFPO29CQUNoQixRQUFRLEVBQUUsRUFBRTtvQkFDWixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsT0FBTyxFQUFFO3dCQUNMLFlBQVksRUFBRSxJQUFJLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQzt3QkFDaEQsb0JBQW9CLEVBQUUsSUFBSSxZQUFZLENBQUMsd0JBQXdCLENBQUM7d0JBQ2hFLHFCQUFxQixFQUFFLElBQUksWUFBWSxDQUFDLHlCQUF5QixDQUFDO3dCQUNsRSxtQkFBbUIsRUFBRSxJQUFJLFlBQVksQ0FBQyxpQ0FBaUMsQ0FBQzt3QkFDeEUsb0JBQW9CLEVBQUUsSUFBSSxZQUFZLENBQUMseUJBQXlCLENBQUM7d0JBQ2pFLGFBQWEsRUFBRSxJQUFJLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQzt3QkFDbEQsaUJBQWlCLEVBQUUsSUFBSSxZQUFZLENBQUMscUJBQXFCLENBQUM7cUJBQzdEO2lCQUNKOytLQXFGVSxxQkFBcUI7c0JBRjNCLFlBQVk7dUJBQUMsdUJBQXVCO2dCQUs5QixlQUFlO3NCQUZyQixZQUFZO3VCQUFDLGlCQUFpQjtnQkFXeEIsZ0JBQWdCO3NCQUZ0QixZQUFZO3VCQUFDLGtCQUFrQjtnQkFXekIsaUJBQWlCO3NCQUZ2QixZQUFZO3VCQUFDLG1CQUFtQjtnQkFZMUIsZ0JBQWdCO3NCQUZ0QixZQUFZO3VCQUFDLGtCQUFrQjtnQkFZekIsZUFBZTtzQkFGckIsWUFBWTt1QkFBQyxpQkFBaUI7Z0JBS3hCLFlBQVk7c0JBRmxCLFlBQVk7dUJBQUMsY0FBYztnQkFLckIsd0JBQXdCO3NCQUY5QixZQUFZO3VCQUFDLHlCQUF5QjtnQkFLaEMsdUJBQXVCO3NCQUY3QixZQUFZO3VCQUFDLHdCQUF3QjtnQkFLL0IsdUJBQXVCO3NCQUY3QixZQUFZO3VCQUFDLHdCQUF3QjtnQkFLL0IsdUJBQXVCO3NCQUY3QixZQUFZO3VCQUFDLHdCQUF3QjtnQkFLL0Isd0JBQXdCO3NCQUY5QixZQUFZO3VCQUFDLHlCQUF5QjtnQkFLaEMsNkJBQTZCO3NCQUZuQyxZQUFZO3VCQUFDLDhCQUE4QjtnQkFLckMsdUJBQXVCO3NCQUY3QixZQUFZO3VCQUFDLHdCQUF3QjtnQkFLL0Isd0JBQXdCO3NCQUY5QixZQUFZO3VCQUFDLHlCQUF5QjtnQkFLaEMsbUJBQW1CO3NCQUZ6QixZQUFZO3VCQUFDLG9CQUFvQjtnQkFLM0IsY0FBYztzQkFGcEIsWUFBWTt1QkFBQyxnQkFBZ0I7Z0JBY3ZCLG1CQUFtQjtzQkFGekIsWUFBWTt1QkFBQyxxQkFBcUI7Z0JBSzVCLFFBQVE7c0JBRmQsWUFBWTt1QkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBWaWV3Q29udGFpbmVyUmVmLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgUXVlcnlMaXN0LCBSZW5kZXJlcjIsIEluamVjdG9yLCBWYWx1ZVByb3ZpZGVyLCBDb250ZW50Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbXBvbmVudEJhc2UsIElDb21wb25lbnRCYXNlLCBhcHBseU1peGlucywgQ29tcG9uZW50TWl4aW5zLCBQcm9wZXJ0eUNvbGxlY3Rpb25JbmZvLCBzZXRWYWx1ZSB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWJhc2UnO1xuaW1wb3J0IHsgR2FudHQgfSBmcm9tICdAc3luY2Z1c2lvbi9lajItZ2FudHQnO1xuaW1wb3J0IHsgVGVtcGxhdGUgfSBmcm9tICdAc3luY2Z1c2lvbi9lajItYW5ndWxhci1iYXNlJztcbmltcG9ydCB7IENvbHVtbnNEaXJlY3RpdmUgfSBmcm9tICcuL2NvbHVtbnMuZGlyZWN0aXZlJztcbmltcG9ydCB7IEFkZERpYWxvZ0ZpZWxkc0RpcmVjdGl2ZSB9IGZyb20gJy4vYWRkZGlhbG9nZmllbGRzLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBFZGl0RGlhbG9nRmllbGRzRGlyZWN0aXZlIH0gZnJvbSAnLi9lZGl0ZGlhbG9nZmllbGRzLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBEYXlXb3JraW5nVGltZUNvbGxlY3Rpb25EaXJlY3RpdmUgfSBmcm9tICcuL2RheXdvcmtpbmd0aW1lLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBXZWVrV29ya2luZ1RpbWVzRGlyZWN0aXZlIH0gZnJvbSAnLi93ZWVrd29ya2luZ3RpbWUuZGlyZWN0aXZlJztcbmltcG9ydCB7IEhvbGlkYXlzRGlyZWN0aXZlIH0gZnJvbSAnLi9ob2xpZGF5cy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRXZlbnRNYXJrZXJzRGlyZWN0aXZlIH0gZnJvbSAnLi9ldmVudG1hcmtlcnMuZGlyZWN0aXZlJztcblxuZXhwb3J0IGNvbnN0IGlucHV0czogc3RyaW5nW10gPSBbJ2FkZERpYWxvZ0ZpZWxkcycsJ2FsbG93RXhjZWxFeHBvcnQnLCdhbGxvd0ZpbHRlcmluZycsJ2FsbG93S2V5Ym9hcmQnLCdhbGxvd1BhcmVudERlcGVuZGVuY3knLCdhbGxvd1BkZkV4cG9ydCcsJ2FsbG93UmVvcmRlcmluZycsJ2FsbG93UmVzaXppbmcnLCdhbGxvd1Jvd0RyYWdBbmREcm9wJywnYWxsb3dTZWxlY3Rpb24nLCdhbGxvd1NvcnRpbmcnLCdhbGxvd1Rhc2tiYXJEcmFnQW5kRHJvcCcsJ2FsbG93VGFza2Jhck92ZXJsYXAnLCdhbGxvd1Vuc2NoZWR1bGVkVGFza3MnLCdhdXRvQ2FsY3VsYXRlRGF0ZVNjaGVkdWxpbmcnLCdhdXRvRm9jdXNUYXNrcycsJ2F1dG9VcGRhdGVQcmVkZWNlc3Nvck9mZnNldCcsJ2Jhc2VsaW5lQ29sb3InLCdiYXNlbGluZVRlbXBsYXRlJywnY2FsZW5kYXJTZXR0aW5ncycsJ2NvbGxhcHNlQWxsUGFyZW50VGFza3MnLCdjb2x1bW5NZW51SXRlbXMnLCdjb2x1bW5zJywnY29ubmVjdG9yTGluZUJhY2tncm91bmQnLCdjb25uZWN0b3JMaW5lV2lkdGgnLCdjb250ZXh0TWVudUl0ZW1zJywnZGF0YVNvdXJjZScsJ2RhdGVGb3JtYXQnLCdkYXlXb3JraW5nVGltZScsJ2Rpc2FibGVIdG1sRW5jb2RlJywnZHVyYXRpb25Vbml0JywnZWRpdERpYWxvZ0ZpZWxkcycsJ2VkaXRTZXR0aW5ncycsJ2VtcHR5UmVjb3JkVGVtcGxhdGUnLCdlbmFibGVBZGFwdGl2ZVVJJywnZW5hYmxlQXV0b1dic1VwZGF0ZScsJ2VuYWJsZUNvbnRleHRNZW51JywnZW5hYmxlQ3JpdGljYWxQYXRoJywnZW5hYmxlSG92ZXInLCdlbmFibGVIdG1sU2FuaXRpemVyJywnZW5hYmxlSW1tdXRhYmxlTW9kZScsJ2VuYWJsZUluZmluaXRlVGltZWxpbmVTY3JvbGwnLCdlbmFibGVNdWx0aVRhc2tiYXInLCdlbmFibGVQZXJzaXN0ZW5jZScsJ2VuYWJsZVByZWRlY2Vzc29yVmFsaWRhdGlvbicsJ2VuYWJsZVJ0bCcsJ2VuYWJsZVRpbWVsaW5lVmlydHVhbGl6YXRpb24nLCdlbmFibGVVbmRvUmVkbycsJ2VuYWJsZVZpcnR1YWxNYXNrUm93JywnZW5hYmxlVmlydHVhbGl6YXRpb24nLCdlbmFibGVXQlMnLCdldmVudE1hcmtlcnMnLCdmaWx0ZXJTZXR0aW5ncycsJ2Zyb3plbkNvbHVtbnMnLCdncmlkTGluZXMnLCdoZWlnaHQnLCdoaWdobGlnaHRXZWVrZW5kcycsJ2hvbGlkYXlzJywnaW5jbHVkZVdlZWtlbmQnLCdsYWJlbFNldHRpbmdzJywnbG9hZENoaWxkT25EZW1hbmQnLCdsb2FkaW5nSW5kaWNhdG9yJywnbG9jYWxlJywnbWlsZXN0b25lVGVtcGxhdGUnLCdwYXJlbnRUYXNrYmFyVGVtcGxhdGUnLCdwcm9qZWN0RW5kRGF0ZScsJ3Byb2plY3RTdGFydERhdGUnLCdxdWVyeScsJ3JlYWRPbmx5JywncmVuZGVyQmFzZWxpbmUnLCdyZXNvdXJjZUZpZWxkcycsJ3Jlc291cmNlSURNYXBwaW5nJywncmVzb3VyY2VOYW1lTWFwcGluZycsJ3Jlc291cmNlcycsJ3Jvd0hlaWdodCcsJ3NlYXJjaFNldHRpbmdzJywnc2VnbWVudERhdGEnLCdzZWxlY3RlZFJvd0luZGV4Jywnc2VsZWN0aW9uU2V0dGluZ3MnLCdzaG93Q29sdW1uTWVudScsJ3Nob3dJbmxpbmVOb3RlcycsJ3Nob3dPdmVyQWxsb2NhdGlvbicsJ3NvcnRTZXR0aW5ncycsJ3NwbGl0dGVyU2V0dGluZ3MnLCd0YXNrRmllbGRzJywndGFza01vZGUnLCd0YXNrVHlwZScsJ3Rhc2tiYXJIZWlnaHQnLCd0YXNrYmFyVGVtcGxhdGUnLCd0aW1lbGluZVNldHRpbmdzJywndGltZWxpbmVUZW1wbGF0ZScsJ3RpbWV6b25lJywndG9vbGJhcicsJ3Rvb2x0aXBTZXR0aW5ncycsJ3RyZWVDb2x1bW5JbmRleCcsJ3VuZG9SZWRvQWN0aW9ucycsJ3VuZG9SZWRvU3RlcHNDb3VudCcsJ3VwZGF0ZU9mZnNldE9uVGFza2JhckVkaXQnLCd2YWxpZGF0ZU1hbnVhbFRhc2tzT25MaW5raW5nJywndmlld1R5cGUnLCd3ZWVrV29ya2luZ1RpbWUnLCd3aWR0aCcsJ3dvcmtVbml0Jywnd29ya1dlZWsnLCd6b29taW5nTGV2ZWxzJ107XG5leHBvcnQgY29uc3Qgb3V0cHV0czogc3RyaW5nW10gPSBbJ2FjdGlvbkJlZ2luJywnYWN0aW9uQ29tcGxldGUnLCdhY3Rpb25GYWlsdXJlJywnYmVmb3JlRGF0YUJvdW5kJywnYmVmb3JlRXhjZWxFeHBvcnQnLCdiZWZvcmVQZGZFeHBvcnQnLCdiZWZvcmVUb29sdGlwUmVuZGVyJywnY2VsbERlc2VsZWN0ZWQnLCdjZWxsRGVzZWxlY3RpbmcnLCdjZWxsRWRpdCcsJ2NlbGxTYXZlJywnY2VsbFNlbGVjdGVkJywnY2VsbFNlbGVjdGluZycsJ2NvbGxhcHNlZCcsJ2NvbGxhcHNpbmcnLCdjb2x1bW5EcmFnJywnY29sdW1uRHJhZ1N0YXJ0JywnY29sdW1uRHJvcCcsJ2NvbHVtbk1lbnVDbGljaycsJ2NvbHVtbk1lbnVPcGVuJywnY29udGV4dE1lbnVDbGljaycsJ2NvbnRleHRNZW51T3BlbicsJ2NyZWF0ZWQnLCdkYXRhQm91bmQnLCdkYXRhU291cmNlQ2hhbmdlZCcsJ2RhdGFTdGF0ZUNoYW5nZScsJ2Rlc3Ryb3llZCcsJ2VuZEVkaXQnLCdleGNlbEV4cG9ydENvbXBsZXRlJywnZXhjZWxIZWFkZXJRdWVyeUNlbGxJbmZvJywnZXhjZWxRdWVyeUNlbGxJbmZvJywnZXhwYW5kZWQnLCdleHBhbmRpbmcnLCdoZWFkZXJDZWxsSW5mbycsJ2xvYWQnLCdvbk1vdXNlTW92ZScsJ29uVGFza2JhckNsaWNrJywncGRmQ29sdW1uSGVhZGVyUXVlcnlDZWxsSW5mbycsJ3BkZkV4cG9ydENvbXBsZXRlJywncGRmUXVlcnlDZWxsSW5mbycsJ3BkZlF1ZXJ5VGFza2JhckluZm8nLCdwZGZRdWVyeVRpbWVsaW5lQ2VsbEluZm8nLCdxdWVyeUNlbGxJbmZvJywncXVlcnlUYXNrYmFySW5mbycsJ3JlY29yZERvdWJsZUNsaWNrJywncmVzaXplU3RhcnQnLCdyZXNpemVTdG9wJywncmVzaXppbmcnLCdyb3dEYXRhQm91bmQnLCdyb3dEZXNlbGVjdGVkJywncm93RGVzZWxlY3RpbmcnLCdyb3dEcmFnJywncm93RHJhZ1N0YXJ0Jywncm93RHJhZ1N0YXJ0SGVscGVyJywncm93RHJvcCcsJ3Jvd1NlbGVjdGVkJywncm93U2VsZWN0aW5nJywnc3BsaXR0ZXJSZXNpemVTdGFydCcsJ3NwbGl0dGVyUmVzaXplZCcsJ3NwbGl0dGVyUmVzaXppbmcnLCd0YXNrYmFyRWRpdGVkJywndGFza2JhckVkaXRpbmcnLCd0b29sYmFyQ2xpY2snLCdkYXRhU291cmNlQ2hhbmdlJ107XG5leHBvcnQgY29uc3QgdHdvV2F5czogc3RyaW5nW10gPSBbJ2RhdGFTb3VyY2UnXTtcblxuLyoqXG4gKiBgZWpzLWdhbnR0YCByZXByZXNlbnRzIHRoZSBBbmd1bGFyIEdhbnR0IENvbXBvbmVudC5cbiAqIGBgYGh0bWxcbiAqIDxlanMtZ2FudHQgW2RhdGFTb3VyY2VdPSdkYXRhJyBhbGxvd1NlbGVjdGlvbj0ndHJ1ZScgYWxsb3dTb3J0aW5nPSd0cnVlJz48L2Vqcy1nYW50dD5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2Vqcy1nYW50dCcsXG4gICAgaW5wdXRzOiBpbnB1dHMsXG4gICAgb3V0cHV0czogb3V0cHV0cyxcbiAgICB0ZW1wbGF0ZTogJycsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcXVlcmllczoge1xuICAgICAgICBjaGlsZENvbHVtbnM6IG5ldyBDb250ZW50Q2hpbGQoQ29sdW1uc0RpcmVjdGl2ZSksIFxuICAgICAgICBjaGlsZEFkZERpYWxvZ0ZpZWxkczogbmV3IENvbnRlbnRDaGlsZChBZGREaWFsb2dGaWVsZHNEaXJlY3RpdmUpLCBcbiAgICAgICAgY2hpbGRFZGl0RGlhbG9nRmllbGRzOiBuZXcgQ29udGVudENoaWxkKEVkaXREaWFsb2dGaWVsZHNEaXJlY3RpdmUpLCBcbiAgICAgICAgY2hpbGREYXlXb3JraW5nVGltZTogbmV3IENvbnRlbnRDaGlsZChEYXlXb3JraW5nVGltZUNvbGxlY3Rpb25EaXJlY3RpdmUpLCBcbiAgICAgICAgY2hpbGRXZWVrV29ya2luZ1RpbWU6IG5ldyBDb250ZW50Q2hpbGQoV2Vla1dvcmtpbmdUaW1lc0RpcmVjdGl2ZSksIFxuICAgICAgICBjaGlsZEhvbGlkYXlzOiBuZXcgQ29udGVudENoaWxkKEhvbGlkYXlzRGlyZWN0aXZlKSwgXG4gICAgICAgIGNoaWxkRXZlbnRNYXJrZXJzOiBuZXcgQ29udGVudENoaWxkKEV2ZW50TWFya2Vyc0RpcmVjdGl2ZSlcbiAgICB9XG59KVxuQENvbXBvbmVudE1peGlucyhbQ29tcG9uZW50QmFzZV0pXG5leHBvcnQgY2xhc3MgR2FudHRDb21wb25lbnQgZXh0ZW5kcyBHYW50dCBpbXBsZW1lbnRzIElDb21wb25lbnRCYXNlIHtcbiAgICBwdWJsaWMgY29udGV4dCA6IGFueTtcbiAgICBwdWJsaWMgdGFnT2JqZWN0czogYW55O1xuXHRhY3Rpb25CZWdpbjogYW55O1xuXHRhY3Rpb25Db21wbGV0ZTogYW55O1xuXHRhY3Rpb25GYWlsdXJlOiBhbnk7XG5cdGJlZm9yZURhdGFCb3VuZDogYW55O1xuXHRiZWZvcmVFeGNlbEV4cG9ydDogYW55O1xuXHRiZWZvcmVQZGZFeHBvcnQ6IGFueTtcblx0YmVmb3JlVG9vbHRpcFJlbmRlcjogYW55O1xuXHRjZWxsRGVzZWxlY3RlZDogYW55O1xuXHRjZWxsRGVzZWxlY3Rpbmc6IGFueTtcblx0Y2VsbEVkaXQ6IGFueTtcblx0Y2VsbFNhdmU6IGFueTtcblx0Y2VsbFNlbGVjdGVkOiBhbnk7XG5cdGNlbGxTZWxlY3Rpbmc6IGFueTtcblx0Y29sbGFwc2VkOiBhbnk7XG5cdGNvbGxhcHNpbmc6IGFueTtcblx0Y29sdW1uRHJhZzogYW55O1xuXHRjb2x1bW5EcmFnU3RhcnQ6IGFueTtcblx0Y29sdW1uRHJvcDogYW55O1xuXHRjb2x1bW5NZW51Q2xpY2s6IGFueTtcblx0Y29sdW1uTWVudU9wZW46IGFueTtcblx0Y29udGV4dE1lbnVDbGljazogYW55O1xuXHRjb250ZXh0TWVudU9wZW46IGFueTtcblx0Y3JlYXRlZDogYW55O1xuXHRkYXRhQm91bmQ6IGFueTtcblx0ZGF0YVNvdXJjZUNoYW5nZWQ6IGFueTtcblx0ZGF0YVN0YXRlQ2hhbmdlOiBhbnk7XG5cdGRlc3Ryb3llZDogYW55O1xuXHRlbmRFZGl0OiBhbnk7XG5cdGV4Y2VsRXhwb3J0Q29tcGxldGU6IGFueTtcblx0ZXhjZWxIZWFkZXJRdWVyeUNlbGxJbmZvOiBhbnk7XG5cdGV4Y2VsUXVlcnlDZWxsSW5mbzogYW55O1xuXHRleHBhbmRlZDogYW55O1xuXHRleHBhbmRpbmc6IGFueTtcblx0aGVhZGVyQ2VsbEluZm86IGFueTtcblx0bG9hZDogYW55O1xuXHRvbk1vdXNlTW92ZTogYW55O1xuXHRvblRhc2tiYXJDbGljazogYW55O1xuXHRwZGZDb2x1bW5IZWFkZXJRdWVyeUNlbGxJbmZvOiBhbnk7XG5cdHBkZkV4cG9ydENvbXBsZXRlOiBhbnk7XG5cdHBkZlF1ZXJ5Q2VsbEluZm86IGFueTtcblx0cGRmUXVlcnlUYXNrYmFySW5mbzogYW55O1xuXHRwZGZRdWVyeVRpbWVsaW5lQ2VsbEluZm86IGFueTtcblx0cXVlcnlDZWxsSW5mbzogYW55O1xuXHRxdWVyeVRhc2tiYXJJbmZvOiBhbnk7XG5cdHJlY29yZERvdWJsZUNsaWNrOiBhbnk7XG5cdHJlc2l6ZVN0YXJ0OiBhbnk7XG5cdHJlc2l6ZVN0b3A6IGFueTtcblx0cmVzaXppbmc6IGFueTtcblx0cm93RGF0YUJvdW5kOiBhbnk7XG5cdHJvd0Rlc2VsZWN0ZWQ6IGFueTtcblx0cm93RGVzZWxlY3Rpbmc6IGFueTtcblx0cm93RHJhZzogYW55O1xuXHRyb3dEcmFnU3RhcnQ6IGFueTtcblx0cm93RHJhZ1N0YXJ0SGVscGVyOiBhbnk7XG5cdHJvd0Ryb3A6IGFueTtcblx0cm93U2VsZWN0ZWQ6IGFueTtcblx0cm93U2VsZWN0aW5nOiBhbnk7XG5cdHNwbGl0dGVyUmVzaXplU3RhcnQ6IGFueTtcblx0c3BsaXR0ZXJSZXNpemVkOiBhbnk7XG5cdHNwbGl0dGVyUmVzaXppbmc6IGFueTtcblx0dGFza2JhckVkaXRlZDogYW55O1xuXHR0YXNrYmFyRWRpdGluZzogYW55O1xuXHR0b29sYmFyQ2xpY2s6IGFueTtcblx0cHVibGljIGRhdGFTb3VyY2VDaGFuZ2U6IGFueTtcbiAgICBwdWJsaWMgY2hpbGRDb2x1bW5zOiBRdWVyeUxpc3Q8Q29sdW1uc0RpcmVjdGl2ZT47XG4gICAgcHVibGljIGNoaWxkQWRkRGlhbG9nRmllbGRzOiBRdWVyeUxpc3Q8QWRkRGlhbG9nRmllbGRzRGlyZWN0aXZlPjtcbiAgICBwdWJsaWMgY2hpbGRFZGl0RGlhbG9nRmllbGRzOiBRdWVyeUxpc3Q8RWRpdERpYWxvZ0ZpZWxkc0RpcmVjdGl2ZT47XG4gICAgcHVibGljIGNoaWxkRGF5V29ya2luZ1RpbWU6IFF1ZXJ5TGlzdDxEYXlXb3JraW5nVGltZUNvbGxlY3Rpb25EaXJlY3RpdmU+O1xuICAgIHB1YmxpYyBjaGlsZFdlZWtXb3JraW5nVGltZTogUXVlcnlMaXN0PFdlZWtXb3JraW5nVGltZXNEaXJlY3RpdmU+O1xuICAgIHB1YmxpYyBjaGlsZEhvbGlkYXlzOiBRdWVyeUxpc3Q8SG9saWRheXNEaXJlY3RpdmU+O1xuICAgIHB1YmxpYyBjaGlsZEV2ZW50TWFya2VyczogUXVlcnlMaXN0PEV2ZW50TWFya2Vyc0RpcmVjdGl2ZT47XG4gICAgcHVibGljIHRhZ3M6IHN0cmluZ1tdID0gWydjb2x1bW5zJywgJ2FkZERpYWxvZ0ZpZWxkcycsICdlZGl0RGlhbG9nRmllbGRzJywgJ2RheVdvcmtpbmdUaW1lJywgJ3dlZWtXb3JraW5nVGltZScsICdob2xpZGF5cycsICdldmVudE1hcmtlcnMnXTtcbiAgICAvKiogXG4gICAgICogRGVmaW5lcyBhIGN1c3RvbSB0ZW1wbGF0ZSBmb3IgcmVuZGVyaW5nIHBhcmVudCB0YXNrIGJhcnMgaW4gdGhlIEdhbnR0IGNoYXJ0LiBUaGlzIHRlbXBsYXRlIGFsbG93cyB5b3UgdG8gY3VzdG9taXplIHRoZSBhcHBlYXJhbmNlIG9mIHBhcmVudCB0YXNrIGJhcnMuIFxuICAgICAqIHslIGNvZGVCbG9jayBzcmM9J2dhbnR0L3BhcmVudFRhc2tiYXJUZW1wbGF0ZS9pbmRleC5tZCcgJX17JSBlbmRjb2RlQmxvY2sgJX1cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICogQGFzcHR5cGUgc3RyaW5nXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgncGFyZW50VGFza2JhclRlbXBsYXRlJylcbiAgICBAVGVtcGxhdGUoKVxuICAgIHB1YmxpYyBwYXJlbnRUYXNrYmFyVGVtcGxhdGU6IGFueTtcbiAgICBAQ29udGVudENoaWxkKCd0b29sYmFyVGVtcGxhdGUnKVxuICAgIEBUZW1wbGF0ZSgpXG4gICAgcHVibGljIHRvb2xiYXJUZW1wbGF0ZTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBTcGVjaWZpZXMgdGhlIHRlbXBsYXRlIHVzZWQgdG8gcmVuZGVyIGN1c3RvbSBIVE1MIGNvbnRlbnQgaW4gdGltZWxpbmUgY2VsbHMuIFxuICAgICAqIHslIGNvZGVCbG9jayBzcmM9J2dhbnR0L3RpbWVsaW5lVGVtcGxhdGUvaW5kZXgubWQnICV9eyUgZW5kY29kZUJsb2NrICV9XG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqIEBhc3B0eXBlIHN0cmluZ1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ3RpbWVsaW5lVGVtcGxhdGUnKVxuICAgIEBUZW1wbGF0ZSgpXG4gICAgcHVibGljIHRpbWVsaW5lVGVtcGxhdGU6IGFueTtcbiAgICAvKiogXG4gICAgICogRGVmaW5lcyBhIGN1c3RvbSB0ZW1wbGF0ZSBmb3IgcmVuZGVyaW5nIG1pbGVzdG9uZSB0YXNrcyBpbiB0aGUgR2FudHQgY2hhcnQuIFRoaXMgdGVtcGxhdGUgYWxsb3dzIHlvdSB0byBjdXN0b21pemUgdGhlIGFwcGVhcmFuY2Ugb2YgbWlsZXN0b25lIHRhc2tzLiBcbiAgICAgKiB7JSBjb2RlQmxvY2sgc3JjPSdnYW50dC9taWxlc3RvbmVUZW1wbGF0ZS9pbmRleC5tZCcgJX17JSBlbmRjb2RlQmxvY2sgJX1cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICogQGFzcHR5cGUgc3RyaW5nXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnbWlsZXN0b25lVGVtcGxhdGUnKVxuICAgIEBUZW1wbGF0ZSgpXG4gICAgcHVibGljIG1pbGVzdG9uZVRlbXBsYXRlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIC4gXG4gICAgICogQWNjZXB0cyBhbiBlbGVtZW50IElEIHNlbGVjdG9yLCBIVE1MIHN0cmluZywgb3IgZnVuY3Rpb24gcmV0dXJuaW5nIGBzdHJpbmdgIG9yIGBIVE1MRWxlbWVudGAuIFxuICAgICAqIERlZmluZXMgYSBjdXN0b20gdGVtcGxhdGUgZm9yIHJlbmRlcmluZyBiYXNlbGluZSBiYXJzIGluIHRoZSBHYW50dCBjaGFydC5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICogQGFzcHR5cGUgc3RyaW5nXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnYmFzZWxpbmVUZW1wbGF0ZScpXG4gICAgQFRlbXBsYXRlKClcbiAgICBwdWJsaWMgYmFzZWxpbmVUZW1wbGF0ZTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBUaGUgdGFzayBiYXIgdGVtcGxhdGUgdGhhdCByZW5kZXJzIGN1c3RvbWl6ZWQgY2hpbGQgdGFzayBiYXJzIGZyb20gdGhlIGdpdmVuIHRlbXBsYXRlLiBcbiAgICAgKiBUaGlzIHByb3BlcnR5IGFsbG93cyB1c2VycyB0byBkZWZpbmUgYSBjdXN0b20gdGVtcGxhdGUgZm9yIHJlbmRlcmluZyBjaGlsZCB0YXNrIGJhcnMgaW4gdGhlIEdhbnR0IGNoYXJ0LiBcbiAgICAgKiB7JSBjb2RlQmxvY2sgc3JjPSdnYW50dC90YXNrYmFyVGVtcGxhdGUvaW5kZXgubWQnICV9eyUgZW5kY29kZUJsb2NrICV9XG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqIEBhc3B0eXBlIHN0cmluZ1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ3Rhc2tiYXJUZW1wbGF0ZScpXG4gICAgQFRlbXBsYXRlKClcbiAgICBwdWJsaWMgdGFza2JhclRlbXBsYXRlOiBhbnk7XG4gICAgQENvbnRlbnRDaGlsZCgnZWRpdFRlbXBsYXRlJylcbiAgICBAVGVtcGxhdGUoKVxuICAgIHB1YmxpYyBlZGl0VGVtcGxhdGU6IGFueTtcbiAgICBAQ29udGVudENoaWxkKCdsYWJlbFNldHRpbmdzUmlnaHRMYWJlbCcpXG4gICAgQFRlbXBsYXRlKClcbiAgICBwdWJsaWMgbGFiZWxTZXR0aW5nc19yaWdodExhYmVsOiBhbnk7XG4gICAgQENvbnRlbnRDaGlsZCgnbGFiZWxTZXR0aW5nc0xlZnRMYWJlbCcpXG4gICAgQFRlbXBsYXRlKClcbiAgICBwdWJsaWMgbGFiZWxTZXR0aW5nc19sZWZ0TGFiZWw6IGFueTtcbiAgICBAQ29udGVudENoaWxkKCdsYWJlbFNldHRpbmdzVGFza0xhYmVsJylcbiAgICBAVGVtcGxhdGUoKVxuICAgIHB1YmxpYyBsYWJlbFNldHRpbmdzX3Rhc2tMYWJlbDogYW55O1xuICAgIEBDb250ZW50Q2hpbGQoJ3Rvb2x0aXBTZXR0aW5nc1Rhc2tiYXInKVxuICAgIEBUZW1wbGF0ZSgpXG4gICAgcHVibGljIHRvb2x0aXBTZXR0aW5nc190YXNrYmFyOiBhbnk7XG4gICAgQENvbnRlbnRDaGlsZCgndG9vbHRpcFNldHRpbmdzQmFzZWxpbmUnKVxuICAgIEBUZW1wbGF0ZSgpXG4gICAgcHVibGljIHRvb2x0aXBTZXR0aW5nc19iYXNlbGluZTogYW55O1xuICAgIEBDb250ZW50Q2hpbGQoJ3Rvb2x0aXBTZXR0aW5nc0Nvbm5lY3RvckxpbmUnKVxuICAgIEBUZW1wbGF0ZSgpXG4gICAgcHVibGljIHRvb2x0aXBTZXR0aW5nc19jb25uZWN0b3JMaW5lOiBhbnk7XG4gICAgQENvbnRlbnRDaGlsZCgndG9vbHRpcFNldHRpbmdzRWRpdGluZycpXG4gICAgQFRlbXBsYXRlKClcbiAgICBwdWJsaWMgdG9vbHRpcFNldHRpbmdzX2VkaXRpbmc6IGFueTtcbiAgICBAQ29udGVudENoaWxkKCd0b29sdGlwU2V0dGluZ3NUaW1lbGluZScpXG4gICAgQFRlbXBsYXRlKClcbiAgICBwdWJsaWMgdG9vbHRpcFNldHRpbmdzX3RpbWVsaW5lOiBhbnk7XG4gICAgQENvbnRlbnRDaGlsZCgnZmlsdGVySXRlbVRlbXBsYXRlJylcbiAgICBAVGVtcGxhdGUoKVxuICAgIHB1YmxpYyBmaWx0ZXJfaXRlbVRlbXBsYXRlOiBhbnk7XG4gICAgQENvbnRlbnRDaGlsZCgnZmlsdGVyVGVtcGxhdGUnKVxuICAgIEBUZW1wbGF0ZSgpXG4gICAgcHVibGljIGZpbHRlclRlbXBsYXRlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIERlZmluZXMgYSBjdXN0b20gdGVtcGxhdGUgdG8gZGlzcGxheSB3aGVuIHRoZSBHYW50dCBjaGFydCBoYXMgbm8gcmVjb3Jkcy5cbiAgICAgKiBcbiAgICAgKiBUaGlzIHRlbXBsYXRlIHJlcGxhY2VzIHRoZSBkZWZhdWx0IGVtcHR5IHJlY29yZCBtZXNzYWdlIGFuZCBjYW4gaW5jbHVkZSB0ZXh0LCBIVE1MIGVsZW1lbnRzLCBvciBpbWFnZXMuXG4gICAgICpBY2NlcHRzIGVpdGhlciBhIHRlbXBsYXRlIHN0cmluZyBvciBhbiBIVE1MIGVsZW1lbnQgSUQuXG4gICAgICogICAgIFxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKiBAYXNwdHlwZSBzdHJpbmdcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdlbXB0eVJlY29yZFRlbXBsYXRlJylcbiAgICBAVGVtcGxhdGUoKVxuICAgIHB1YmxpYyBlbXB0eVJlY29yZFRlbXBsYXRlOiBhbnk7XG4gICAgQENvbnRlbnRDaGlsZCgndGVtcGxhdGUnKVxuICAgIEBUZW1wbGF0ZSgpXG4gICAgcHVibGljIHRlbXBsYXRlOiBhbnk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5nRWxlOiBFbGVtZW50UmVmLCBwcml2YXRlIHNyZW5kZXJlcjogUmVuZGVyZXIyLCBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6Vmlld0NvbnRhaW5lclJlZiwgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5lbGVtZW50ID0gdGhpcy5uZ0VsZS5uYXRpdmVFbGVtZW50O1xuICAgICAgICB0aGlzLmluamVjdGVkTW9kdWxlcyA9IHRoaXMuaW5qZWN0ZWRNb2R1bGVzIHx8IFtdO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnR2FudHRGaWx0ZXInKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0dhbnR0U2VsZWN0aW9uJyk7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5pbmplY3RlZE1vZHVsZXMuaW5kZXhPZihtb2QpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluamVjdGVkTW9kdWxlcy5wdXNoKG1vZClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIHsgfVxuXHIgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbGV0IG1vZCA9IHRoaXMuaW5qZWN0b3IuZ2V0KCdHYW50dFNvcnQnKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0dhbnR0UmVvcmRlcicpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnR2FudHRSZXNpemUnKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0dhbnR0RWRpdCcpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnR2FudHREYXlNYXJrZXJzJyk7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5pbmplY3RlZE1vZHVsZXMuaW5kZXhPZihtb2QpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluamVjdGVkTW9kdWxlcy5wdXNoKG1vZClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIHsgfVxuXHIgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbGV0IG1vZCA9IHRoaXMuaW5qZWN0b3IuZ2V0KCdHYW50dFRvb2xiYXInKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0dhbnR0Q29udGV4dE1lbnUnKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0dhbnR0RXhjZWxFeHBvcnQnKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0dhbnR0Um93REQnKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0dhbnR0Q29sdW1uTWVudScpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnR2FudHRQZGZFeHBvcnQnKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0dhbnR0VmlydHVhbFNjcm9sbCcpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnR2FudHRDcml0aWNhbFBhdGgnKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0dhbnR0VW5kb1JlZG8nKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0dhbnR0RnJlZXplJyk7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5pbmplY3RlZE1vZHVsZXMuaW5kZXhPZihtb2QpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluamVjdGVkTW9kdWxlcy5wdXNoKG1vZClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIHsgfVxuXHJcbiAgICAgICAgdGhpcy5yZWdpc3RlckV2ZW50cyhvdXRwdXRzKTtcbiAgICAgICAgdGhpcy5hZGRUd29XYXkuY2FsbCh0aGlzLCB0d29XYXlzKTtcbiAgICAgICAgc2V0VmFsdWUoJ2N1cnJlbnRJbnN0YW5jZScsIHRoaXMsIHRoaXMudmlld0NvbnRhaW5lclJlZik7XG4gICAgICAgIHRoaXMuY29udGV4dCAgPSBuZXcgQ29tcG9uZW50QmFzZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5jb250ZXh0Lm5nT25Jbml0KHRoaXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29udGV4dC5uZ0FmdGVyVmlld0luaXQodGhpcyk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbnRleHQubmdPbkRlc3Ryb3kodGhpcyk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50YWdPYmplY3RzWzBdLmluc3RhbmNlID0gdGhpcy5jaGlsZENvbHVtbnM7XG4gICAgICAgIFxuXHQgICAgaWYgKHRoaXMuY2hpbGRBZGREaWFsb2dGaWVsZHMpIHtcbiAgICAgICAgICAgIHRoaXMudGFnT2JqZWN0c1sxXS5pbnN0YW5jZSA9IHRoaXMuY2hpbGRBZGREaWFsb2dGaWVsZHM7XG4gICAgICAgIH1cbiAgICAgICAgXG5cdCAgICBpZiAodGhpcy5jaGlsZEVkaXREaWFsb2dGaWVsZHMpIHtcbiAgICAgICAgICAgIHRoaXMudGFnT2JqZWN0c1syXS5pbnN0YW5jZSA9IHRoaXMuY2hpbGRFZGl0RGlhbG9nRmllbGRzO1xuICAgICAgICB9XG4gICAgICAgIFxuXHQgICAgaWYgKHRoaXMuY2hpbGREYXlXb3JraW5nVGltZSkge1xuICAgICAgICAgICAgdGhpcy50YWdPYmplY3RzWzNdLmluc3RhbmNlID0gdGhpcy5jaGlsZERheVdvcmtpbmdUaW1lO1xuICAgICAgICB9XG4gICAgICAgIFxuXHQgICAgaWYgKHRoaXMuY2hpbGRXZWVrV29ya2luZ1RpbWUpIHtcbiAgICAgICAgICAgIHRoaXMudGFnT2JqZWN0c1s0XS5pbnN0YW5jZSA9IHRoaXMuY2hpbGRXZWVrV29ya2luZ1RpbWU7XG4gICAgICAgIH1cbiAgICAgICAgXG5cdCAgICBpZiAodGhpcy5jaGlsZEhvbGlkYXlzKSB7XG4gICAgICAgICAgICB0aGlzLnRhZ09iamVjdHNbNV0uaW5zdGFuY2UgPSB0aGlzLmNoaWxkSG9saWRheXM7XG4gICAgICAgIH1cbiAgICAgICAgXG5cdCAgICBpZiAodGhpcy5jaGlsZEV2ZW50TWFya2Vycykge1xuICAgICAgICAgICAgdGhpcy50YWdPYmplY3RzWzZdLmluc3RhbmNlID0gdGhpcy5jaGlsZEV2ZW50TWFya2VycztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbnRleHQubmdBZnRlckNvbnRlbnRDaGVja2VkKHRoaXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3RlckV2ZW50czogKGV2ZW50TGlzdDogc3RyaW5nW10pID0+IHZvaWQ7XG4gICAgcHVibGljIGFkZFR3b1dheTogKHByb3BMaXN0OiBzdHJpbmdbXSkgPT4gdm9pZDtcbn1cblxuIl19
|