i-tech-shared-components 1.0.9 → 1.0.11

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/README.md CHANGED
@@ -1,24 +1,60 @@
1
- # SharedComponents
2
-
3
- This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 18.2.0.
4
-
5
- ## Code scaffolding
6
-
7
- Run `ng generate component component-name --project shared-components` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project shared-components`.
8
- > Note: Don't forget to add `--project shared-components` or else it will be added to the default project in your `angular.json` file.
9
-
10
- ## Build
11
-
12
- Run `ng build shared-components` to build the project. The build artifacts will be stored in the `dist/` directory.
13
-
14
- ## Publishing
15
-
16
- After building your library with `ng build shared-components`, go to the dist folder `cd dist/shared-components` and run `npm publish`.
17
-
18
- ## Running unit tests
19
-
20
- Run `ng test shared-components` to execute the unit tests via [Karma](https://karma-runner.github.io).
21
-
22
- ## Further help
23
-
24
- To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.dev/tools/cli) page.
1
+ # i-tech-material-shared-components
2
+
3
+ A library of Angular Material-based components designed for seamless integration and scalability.
4
+
5
+ ## Installation
6
+
7
+ Install the library using npm:
8
+
9
+ ```bash
10
+ npm install i-tech-shared-components
11
+
12
+ #### **Code Blocks**
13
+ ```markdown
14
+ ### Button Component
15
+ ```html
16
+ <i-tech-button
17
+ (buttonClick)="handleClick()"
18
+ [customClass]="'your-custom-class'"
19
+ [text]="'Click me'"
20
+ [disabled]="false"
21
+ [submit]="false"
22
+ [icon]="'add'">
23
+ </i-tech-button>
24
+
25
+
26
+
27
+ #### **Tables**
28
+ ```markdown
29
+ | Input | Type | Default | Description |
30
+ |------------|-----------|----------|---------------------------------------------------------------------------------|
31
+ | `type` | `string` | `FILLED` | Button type (e.g., FILLED, TEXT). |
32
+ | `disabled` | `boolean` | `false` | Disables the button when true. |
33
+ | `icon` | `string` | `add` | Set a material or font icon, also you can register and submit your own SVG. |
34
+
35
+
36
+ ```html
37
+ <i-tech-icon-button
38
+ (buttonClick)="handleClick()"
39
+ [iconName]="'add'"
40
+ [tooltip]="'show info'"
41
+ [size]="'small'">
42
+ </i-tech-icon-button>
43
+
44
+
45
+
46
+ #### **Tables**
47
+ ```markdown
48
+ | Input | Type | Default | Description |
49
+ |------------|-----------|----------|---------------------------------------------------------------------------------|
50
+ | `type` | `string` | `FILLED` | Button type (e.g., FILLED, TEXT). |
51
+ | `size` | `string` | `FILLED` | Button size (medium, small). |
52
+ | `disabled` | `boolean` | `false` | Disables the button when true. |
53
+ | `iconName` | `string` | `add` | Set a material or font icon. |
54
+ | `iconSvg` | `string` | `add` | You can register and submit your own SVG. |
55
+ | `tooltip` | `string` | `add` | Information about work of icon button.
56
+
57
+ ```markdown
58
+ | Output | Type | Default | Description |
59
+ |--------------|------------|----------|------------------------------------------------------------------------------|
60
+ | `buttonClick`| `void` | `void` | For output and handle icon click. | |
@@ -21,6 +21,9 @@ import * as i4 from "@angular/material/form-field";
21
21
  import * as i5 from "@angular/material/select";
22
22
  import * as i6 from "@angular/material/core";
23
23
  export class AutocompleteSelectComponent {
24
+ /**
25
+ * For working configs.
26
+ */
24
27
  set configs(data) {
25
28
  this.selectConfig = data;
26
29
  if (!data) {
@@ -91,6 +94,12 @@ export class AutocompleteSelectComponent {
91
94
  hardReload() {
92
95
  this.getData('', true);
93
96
  }
97
+ /**
98
+ * Dynamic request for select data.
99
+ * @param searchText - The input value to search options by.
100
+ * @param fromSearch - Access for search .
101
+ * @returns Select data.
102
+ */
94
103
  getData(searchText, fromSearch) {
95
104
  if (!fromSearch && !this.accessToNextRequest) {
96
105
  return;
@@ -183,6 +192,10 @@ export class AutocompleteSelectComponent {
183
192
  this.isNeededForRecall = true;
184
193
  this.emitAction.emit();
185
194
  }
195
+ /**
196
+ * Filter and show.
197
+ * @param data - Existing chosen data.
198
+ */
186
199
  setShowingValue(data) {
187
200
  if (!data) {
188
201
  return;
@@ -220,6 +233,10 @@ export class AutocompleteSelectComponent {
220
233
  this.showingValue = include;
221
234
  this.blockRecallDefaultValueSetter = true;
222
235
  }
236
+ /**
237
+ * Block another events.
238
+ * @param event - Element click event.
239
+ */
223
240
  preventDefault(event) {
224
241
  if (!this.selectConfig.multiple) {
225
242
  return;
@@ -389,4 +406,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
389
406
  type: HostListener,
390
407
  args: ['document:visibilitychange']
391
408
  }] } });
392
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlLXNlbGVjdC9hdXRvY29tcGxldGUtc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9hdXRvY29tcGxldGUtc2VsZWN0L2F1dG9jb21wbGV0ZS1zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBR0EsWUFBWSxFQUMzQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQVksZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFFcEUsT0FBTyxFQUFrQixtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXBFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNoRSxPQUFPLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDckQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSwrQ0FBK0MsQ0FBQztBQUMxRixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxrQ0FB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O3FCQUNuQixjQUNXLElBQUk7aUZBR1UsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUNJLFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYTtnQkFDZixTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ08sT0FBTztzQkFBbkIsS0FBSztnQkFtQkcsYUFBYTtzQkFBckIsS0FBSztnQkFDSSxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ21CLFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYTtnQkFxQnhCLHNCQUFzQjtzQkFEckIsWUFBWTt1QkFBQywyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgVmlld0NoaWxkLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBPbkNoYW5nZXMsXHJcbiAgICBTaW1wbGVDaGFuZ2VzLFxyXG4gICAgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBBZnRlclZpZXdJbml0XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7TWF0U2VsZWN0LCBNYXRTZWxlY3RNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3RcIjtcclxuaW1wb3J0IHtBdXRvY29tcGxldGVDb25maWdzSW50ZXJmYWNlfSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlcy9hdXRvY29tcGxldGUtY29uZmlncy5pbnRlcmZhY2VcIjtcclxuaW1wb3J0IHtGb3JtQ29udHJvbE5hbWUsIFJlYWN0aXZlRm9ybXNNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBJbnB1dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9pbnB1dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQnV0dG9uVHlwZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYnV0dG9uLXR5cGVzLmVudW0nO1xyXG5pbXBvcnQge05nQ2xhc3MsIE5nRm9yLCBOZ0lmLCBOZ09wdGltaXplZEltYWdlfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7TWF0VG9vbHRpcH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXBcIjtcclxuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGV9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XHJcbmltcG9ydCB7SWNvbkJ1dHRvbkNvbXBvbmVudH0gZnJvbSBcIi4uL2ljb24tYnV0dG9uL2ljb24tYnV0dG9uLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge0J1dHRvbkNvbXBvbmVudH0gZnJvbSBcIi4uL2J1dHRvbi9idXR0b24uY29tcG9uZW50XCI7XHJcbmltcG9ydCB7R2V0VmFsdWVCeUtleUZyb21PYmplY3RQaXBlfSBmcm9tIFwiLi4vLi4vcGlwZXMvZ2V0LXZhbHVlLWJ5LWtleS1mcm9tLW9iamVjdC5waXBlXCI7XHJcbmltcG9ydCB7QXJyYXlUb1N0cmluZ1BpcGV9IGZyb20gXCIuLi8uLi9waXBlcy9hcnJheS10by1zdHJpbmcucGlwZVwiO1xyXG5pbXBvcnQge01hdEljb259IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pY29uXCI7XHJcbmltcG9ydCB7R2VuZXJhdGVFcnJvck1lc3NhZ2VzUGlwZX0gZnJvbSBcIi4uLy4uL3BpcGVzL2dlbmVyYXRlLWVycm9yLW1lc3NhZ2VzLnBpcGVcIjtcclxuaW1wb3J0IHtDbGVhclZhbHVlQ29tcG9uZW50fSBmcm9tIFwiLi4vY2xlYXItdmFsdWUvY2xlYXItdmFsdWUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7TWF0Rm9ybUZpZWxkTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpLXRlY2gtYXV0b2NvbXBsZXRlLXNlbGVjdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2F1dG9jb21wbGV0ZS1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2F1dG9jb21wbGV0ZS1zZWxlY3QuY29tcG9uZW50LnNjc3MnXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBOZ0NsYXNzLFxyXG4gICAgTWF0VG9vbHRpcCxcclxuICAgIE5nSWYsXHJcbiAgICBOZ0ZvcixcclxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcclxuICAgIEljb25CdXR0b25Db21wb25lbnQsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgTWF0U2VsZWN0TW9kdWxlLFxyXG4gICAgQnV0dG9uQ29tcG9uZW50LFxyXG4gICAgR2V0VmFsdWVCeUtleUZyb21PYmplY3RQaXBlLFxyXG4gICAgQXJyYXlUb1N0cmluZ1BpcGUsXHJcbiAgICBOZ09wdGltaXplZEltYWdlLFxyXG4gICAgTWF0SWNvbixcclxuICAgIEdlbmVyYXRlRXJyb3JNZXNzYWdlc1BpcGUsXHJcbiAgICBDbGVhclZhbHVlQ29tcG9uZW50LFxyXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlXHJcbiAgXSxcclxuICBzdGFuZGFsb25lOiB0cnVlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdXRvY29tcGxldGVTZWxlY3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xyXG4gICAgQFZpZXdDaGlsZCgnbWF0U2VsZWN0JykgbWF0U2VsZWN0ITogTWF0U2VsZWN0O1xyXG4gICAgQFZpZXdDaGlsZCgnc2VhcmNoSW5wdXQnKSBzZWFyY2hJbnB1dCE6IEVsZW1lbnRSZWY7XHJcbiAgICBASW5wdXQoKSBjbGFzc05hbWUhOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBzdWJtaXRWYWx1ZSE6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBzZXQgY29uZmlncyhkYXRhOiBBdXRvY29tcGxldGVDb25maWdzSW50ZXJmYWNlKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RDb25maWcgPSBkYXRhO1xyXG4gICAgICAgIGlmICghZGF0YSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoKHR5cGVvZiB0aGlzLnNlbGVjdENvbmZpZy5wYWdpbmF0ZSkgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZmlyc3RSZXF1ZXN0KSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5nZXREYXRhKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZmlyc3RSZXF1ZXN0ID0gdHJ1ZVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmRhdGEgPSB0aGlzLnNlbGVjdENvbmZpZy5wYWdpbmF0ZTtcclxuICAgICAgICB0aGlzLmZpbmRBbmRTZXREZWZhdWx0VmFsdWVGcm9tRGF0YSgpO1xyXG4gICAgfTtcclxuXHJcbiAgICBASW5wdXQoKSBkZXRlY3RDaGFuZ2VzITogYm9vbGVhbjtcclxuICAgIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBPdXRwdXQoKSBlbWl0QWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBAVmlld0NoaWxkKCdhbGxTZWxlY3RlZCcpIGFsbFNlbGVjdGVkITogTWF0U2VsZWN0O1xyXG4gICAgcGVuZGluZyA9IGZhbHNlO1xyXG4gICAgZGVmYXVsdFZhbHVlITogYW55O1xyXG4gICAgZGF0YTogQXJyYXk8YW55PiA9IFtdO1xyXG4gICAgcGFnaW5hdGlvbkRhdGE6IGFueSA9IHtjdXJyZW50OiAxLCBsYXN0OiAwfTtcclxuICAgIG5nQ29udHJvbDogRm9ybUNvbnRyb2xOYW1lO1xyXG4gICAgc2VsZWN0Q29uZmlnITogQXV0b2NvbXBsZXRlQ29uZmlnc0ludGVyZmFjZTtcclxuICAgIGZpcnN0UmVxdWVzdCA9IGZhbHNlO1xyXG4gICAgc2hvd1BsYWNlaG9sZGVyID0gdHJ1ZTtcclxuICAgIGlzTmVlZGVkRm9yUmVjYWxsID0gZmFsc2U7XHJcbiAgICBzaG93aW5nVmFsdWU6IGFueTtcclxuICAgIHNlYXJjaFRpbWVvdXRJZDogYW55O1xyXG4gICAgdGFiVmlzaWJpbGl0eSE6IGJvb2xlYW47XHJcbiAgICBhY2Nlc3NUb05leHRSZXF1ZXN0ID0gdHJ1ZTtcclxuICAgIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgICBibG9ja1JlY2FsbERlZmF1bHRWYWx1ZVNldHRlciA9IGZhbHNlO1xyXG4gICAgYmFzZURhdGE6IGFueTtcclxuICAgIHJlcXVlc3RMb2FkaW5nID0gZmFsc2U7XHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgQnV0dG9uVHlwZSA9IEJ1dHRvblR5cGU7XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6dmlzaWJpbGl0eWNoYW5nZScpXHJcbiAgICBoYW5kbGVWaXNpYmlsaXR5Q2hhbmdlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudGFiVmlzaWJpbGl0eSA9ICFkb2N1bWVudC5oaWRkZW47XHJcbiAgICAgICAgaWYgKHRoaXMubmdDb250cm9sLmNvbnRyb2wudmFsdWUpIHsgcmV0dXJuO31cclxuICAgICAgICB0aGlzLmNsb3NlUGFuZWxBbmRVbnNldEZvY3VzKCk7XHJcbiAgICAgICAgaWYgKCFkb2N1bWVudC5oaWRkZW4pIHtcclxuICAgICAgICAgICAgdGhpcy5pc05lZWRlZEZvclJlY2FsbCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMucGVuZGluZyA9IHRydWU7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wZW5kaW5nID0gZmFsc2VcclxuICAgICAgICAgICAgfSwgNDAwMClcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBpbnB1dFNlcnZpY2U6IElucHV0U2VydmljZSkge1xyXG4gICAgICAgIHRoaXMubmdDb250cm9sID0gdGhpcy5pbnB1dFNlcnZpY2UuaW5qZWN0TmdDb250cm9sKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgICAgIGlmIChjaGFuZ2VzWydzZWxlY3RDb25maWcnXSAmJiB0aGlzLnNlbGVjdENvbmZpZykge1xyXG4gICAgICAgICAgICBpZiAoKHR5cGVvZiB0aGlzLnNlbGVjdENvbmZpZy5wYWdpbmF0ZSkgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0RGF0YSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgICAgICB0aGlzLm5nQ29udHJvbC5jb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmRhdGEubGVuZ3RoICYmIHJlcyAmJiAhdGhpcy5ibG9ja1JlY2FsbERlZmF1bHRWYWx1ZVNldHRlcikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5maW5kQW5kU2V0RGVmYXVsdFZhbHVlRnJvbURhdGEoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgaGFyZFJlbG9hZCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmdldERhdGEoJycsIHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldERhdGEoc2VhcmNoVGV4dD86IHN0cmluZywgZnJvbVNlYXJjaD86IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICBpZiAoIWZyb21TZWFyY2ggJiYgIXRoaXMuYWNjZXNzVG9OZXh0UmVxdWVzdCkgeyByZXR1cm47IH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMucmVxdWVzdExvYWRpbmcpIHsgcmV0dXJuOyB9XHJcblxyXG4gICAgICAgIGlmIChmcm9tU2VhcmNoKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGFnaW5hdGlvbkRhdGEuY3VycmVudCA9IDE7XHJcbiAgICAgICAgICAgIHRoaXMuYWNjZXNzVG9OZXh0UmVxdWVzdCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBmdW5jdGlvblRvRG8gPSB0aGlzLnNlbGVjdENvbmZpZy5wYWdpbmF0ZSh0aGlzLnBhZ2luYXRpb25EYXRhLmN1cnJlbnQsIHNlYXJjaFRleHQpO1xyXG5cclxuICAgICAgICB0aGlzLnJlcXVlc3RMb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICBmdW5jdGlvblRvRG8/LnN1YnNjcmliZSgoZGF0YTogQXJyYXk8YW55PiB8IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBkYXRhVG9BZGQgPSAoJ2NvbnRlbnQnIGluIGRhdGEpID8gZGF0YS5jb250ZW50IDogZGF0YTtcclxuXHJcbiAgICAgICAgICAgIGlmICgnY29udGVudCcgaW4gZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hY2Nlc3NUb05leHRSZXF1ZXN0ID0gIWRhdGEubGFzdCB8fCAoZGF0YS50b3RhbFBhZ2VzID4gdGhpcy5wYWdpbmF0aW9uRGF0YS5jdXJyZW50KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5kYXRhID0gKGZyb21TZWFyY2ggfHwgdGhpcy5zZWxlY3RDb25maWc/LmJsb2NrUGFnaW5hdGlvbikgPyBkYXRhVG9BZGQgOiBbLi4udGhpcy5kYXRhLCAuLi5kYXRhVG9BZGRdO1xyXG4gICAgICAgICAgICB0aGlzLnBlbmRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5yZXF1ZXN0TG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgICAgaWYgKCFkYXRhVG9BZGQubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2luYXRpb25EYXRhLmxhc3QgPSB0aGlzLnBhZ2luYXRpb25EYXRhLmN1cnJlbnQ7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMucGFnaW5hdGlvbkRhdGEuY3VycmVudCArPSAxO1xyXG4gICAgICAgICAgICB0aGlzLnBhZ2luYXRpb25EYXRhLmxhc3QgKz0gMTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpbmRBbmRTZXREZWZhdWx0VmFsdWVGcm9tRGF0YSgpO1xyXG4gICAgICAgICAgICB9LDEwKVxyXG4gICAgICAgIH0sICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wZW5kaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMucmVxdWVzdExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIGZpbmRBbmRTZXREZWZhdWx0VmFsdWVGcm9tRGF0YSgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5zZWxlY3RDb25maWcubXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMubmdDb250cm9sLnZhbHVlICYmIHRoaXMubmdDb250cm9sLnZhbHVlLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFNob3dpbmdWYWx1ZSh0aGlzLmRhdGEuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gdGhpcy5uZ0NvbnRyb2wudmFsdWVbMF0pKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgaXNEaXNhYmxlZCA9IHRoaXMubmdDb250cm9sLmRpc2FibGVkO1xyXG4gICAgICAgICAgICBpZiAoaXNEaXNhYmxlZCkge1xyXG4gICAgICAgICAgICAgICAgLy8gVE9ETyBSZW1vdmUgYWZ0ZXIgbWlncmF0aW5nIGFsbCBzZWxlY3RzXHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLm5nQ29udHJvbC5jb250cm9sLmVuYWJsZSgpO1xyXG4gICAgICAgICAgICAgICAgLy8gaWYgKCF0aGlzLm5nQ29udHJvbC52YWx1ZSAmJiAhdGhpcy5kYXRhLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgLy8gICAgIHRoaXMubmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZSgpO1xyXG4gICAgICAgICAgICAgICAgLy8gICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgICAgIC8vIHRoaXMuc2V0RGVmYXVsdFZhbHVlKCk7XHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLm5nQ29udHJvbC5jb250cm9sLmRpc2FibGUoKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5uZ0NvbnRyb2wudmFsdWUgJiYgIXRoaXMuZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGVmYXVsdFZhbHVlKCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNldERlZmF1bHRWYWx1ZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRlZmF1bHRWYWx1ZSA9IHRoaXMuZGF0YS5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSB0aGlzLm5nQ29udHJvbC52YWx1ZSk7XHJcbiAgICAgICAgdGhpcy5iYXNlRGF0YSA9IHRoaXMuZGVmYXVsdFZhbHVlXHJcbiAgICAgICAgaWYgKCF0aGlzLmRlZmF1bHRWYWx1ZSkgeyByZXR1cm47fVxyXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQoKVxyXG4gICAgICAgIHRoaXMuc2V0U2hvd2luZ1ZhbHVlKHRoaXMuZGVmYXVsdFZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBvcHRpb25DbGljayhzaG93aW5nRGF0YTogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5iYXNlRGF0YSA9IHNob3dpbmdEYXRhXHJcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdENvbmZpZy5tdWx0aXBsZSkge1xyXG4gICAgICAgICAgICB0aGlzLnNldFNob3dpbmdWYWx1ZShzaG93aW5nRGF0YSk7XHJcbiAgICAgICAgICAgIHRoaXMubWF0U2VsZWN0LmNsb3NlKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoSW5wdXQpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0Q29uZmlnLm11bHRpcGxlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaElucHV0Py5uYXRpdmVFbGVtZW50Py5mb2N1cygpXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0Rm9jdXNPdXQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zZXRTaG93aW5nVmFsdWUoc2hvd2luZ0RhdGEpO1xyXG4gICAgICAgIHRoaXMuc2hvd1BsYWNlaG9sZGVyID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkTmV3SXRlbUV2ZW50KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaXNOZWVkZWRGb3JSZWNhbGwgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZW1pdEFjdGlvbi5lbWl0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0U2hvd2luZ1ZhbHVlKGRhdGE6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGlmICghZGF0YSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIFRPRE8gcmVmYWN0b3IgdGhpcyBwYXJ0IGZ1bGx5XHJcbiAgICAgICAgbGV0IGluY2x1ZGUgPSBkYXRhO1xyXG4gICAgICAgIGxldCBpbmNsdWRlT3B0aW9uYWwgPSBkYXRhO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5zZWxlY3RDb25maWcudmFsdWVUb1Nob3dCeUtleSkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdENvbmZpZy52YWx1ZVRvU2hvd0J5S2V5LmZvckVhY2goKHBhcmFtOiBBcnJheTxzdHJpbmcgfCBudW1iZXI+IHwgc3RyaW5nKSA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwYXJhbSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgICAgICAgICAgICBwYXJhbS5mb3JFYWNoKChrZXk6IHN0cmluZyB8IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlID0gKGluY2x1ZGUpID8gaW5jbHVkZVtrZXldIDogbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpbmNsdWRlID0gaW5jbHVkZVtwYXJhbV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdENvbmZpZy5zaG93RnVsbFRleHRXaXRoT3B0aW9uYWxPblNlbGVjdGVkVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0Q29uZmlnLnZhbHVlVG9TaG93QnlQYXJhbT8uZm9yRWFjaCgocGFyYW06IEFycmF5PHN0cmluZyB8IG51bWJlcj4gfCBzdHJpbmcpID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwYXJhbSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0uZm9yRWFjaCgoa2V5OiBzdHJpbmcgfCBudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVPcHRpb25hbCA9IChpbmNsdWRlT3B0aW9uYWwpID8gaW5jbHVkZU9wdGlvbmFsW2tleV0gOiBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVPcHRpb25hbCA9IGluY2x1ZGVPcHRpb25hbFtwYXJhbV07XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdENvbmZpZy52YWx1ZVRvU2hvd0J5UGFyYW0gJiYgdHlwZW9mIGluY2x1ZGVPcHRpb25hbCA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgICAgICAgICBpbmNsdWRlICs9ICh0aGlzLnNlbGVjdENvbmZpZy53aXRoUGFyYW1TeW1ib2wgfHwgJycpICsgaW5jbHVkZU9wdGlvbmFsXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2hvd2luZ1ZhbHVlID0gaW5jbHVkZTtcclxuICAgICAgICB0aGlzLmJsb2NrUmVjYWxsRGVmYXVsdFZhbHVlU2V0dGVyID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBwcmV2ZW50RGVmYXVsdChldmVudDogYW55KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdENvbmZpZy5tdWx0aXBsZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcclxuICAgIH1cclxuXHJcbiAgICByZWdpc3RlclBhbmVsU2Nyb2xsRXZlbnQoZWxlbWVudDogTWF0U2VsZWN0KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0Q29uZmlnLnBhZ2luYXRlT25TY3JvbGwgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHBhbmVsID0gZWxlbWVudC5wYW5lbC5uYXRpdmVFbGVtZW50O1xyXG4gICAgICAgIHBhbmVsLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIChldmVudDogYW55KSA9PiB0aGlzLmxvYWREYXRhT25TY3JvbGwoZXZlbnQpKTtcclxuICAgIH1cclxuXHJcbiAgICBsb2FkRGF0YU9uU2Nyb2xsKGV2ZW50OiBhbnkpIHtcclxuICAgICAgICBjb25zdCBwb3MgPSAoZXZlbnQudGFyZ2V0LnNjcm9sbFRvcCB8fCBldmVudC50YXJnZXQuc2Nyb2xsVG9wKSArIGV2ZW50LnRhcmdldC5vZmZzZXRIZWlnaHQ7XHJcbiAgICAgICAgY29uc3QgbWF4ID0gZXZlbnQudGFyZ2V0LnNjcm9sbEhlaWdodDtcclxuICAgICAgICBpZiAoKHBvcyArIDEpID49IG1heCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5wYWdpbmF0aW9uRGF0YS5jdXJyZW50ID09PSB0aGlzLnBhZ2luYXRpb25EYXRhLmxhc3QgfHwgdGhpcy5zZWxlY3RDb25maWcuYmxvY2tQYWdpbmF0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5nZXREYXRhKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGZvY3VzU2VhcmNoSW5wdXQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0Q29uZmlnLnNlYXJjaCAmJiB0aGlzLnNlYXJjaElucHV0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpbnB1dEZvY3VzT3V0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaXNOZWVkZWRGb3JSZWNhbGwgPSAhIXRoaXMuc2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZTtcclxuICAgICAgICB0aGlzLnNlYXJjaElucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcclxuICAgICAgICB0aGlzLnNob3dQbGFjZWhvbGRlciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jbGVhclRpbWVvdXRGb3JTZWFyY2goKTtcclxuICAgIH1cclxuXHJcbiAgICByZXNldFZhbHVlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQobnVsbCk7XHJcbiAgICAgICAgdGhpcy5uZ0NvbnRyb2wucmVzZXQobnVsbCk7XHJcbiAgICAgICAgdGhpcy5pbnB1dEZvY3VzT3V0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RGF0YVdpdGhTZWFyY2godmFsdWU6IGFueSwgZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY2xlYXJUaW1lb3V0Rm9yU2VhcmNoKCk7XHJcbiAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA+PSAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoVGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdldERhdGEodmFsdWUsIHRydWUpXHJcbiAgICAgICAgICAgIH0sIDgwMCk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS5sZW5ndGggPD0gMSAmJiBldmVudC5rZXlDb2RlID09PSA4KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RGF0YSh2YWx1ZSwgdHJ1ZSlcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY2xlYXJUaW1lb3V0Rm9yU2VhcmNoKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnNlYXJjaFRpbWVvdXRJZCkge1xyXG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5zZWFyY2hUaW1lb3V0SWQpO1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaFRpbWVvdXRJZCA9IDA7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9wZW5TZWxlY3Rpb24oKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0Q29uZmlnLmRpc2FibGVkIHx8IHRoaXMubmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNob3dQbGFjZWhvbGRlciA/IHRoaXMubWF0U2VsZWN0Lm9wZW4oKSA6IHRoaXMuY2xvc2VQYW5lbEFuZFVuc2V0Rm9jdXMoKTtcclxuICAgICAgICB0aGlzLnNob3dQbGFjZWhvbGRlciA9ICF0aGlzLnNob3dQbGFjZWhvbGRlcjtcclxuICAgICAgICBpZiAoIXRoaXMuc2hvd1BsYWNlaG9sZGVyKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVDYWxsRGF0YSgpXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNsb3NlUGFuZWxBbmRVbnNldEZvY3VzKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMubWF0U2VsZWN0LmNsb3NlKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoSW5wdXQpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hJbnB1dC5uYXRpdmVFbGVtZW50LmJsdXIoKVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvcGVuZWRDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgICAgIGlmIChldmVudCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5pc05lZWRlZEZvclJlY2FsbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZUNhbGxEYXRhKCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCF0aGlzLnNlbGVjdENvbmZpZy5zZWFyY2gpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucGVuZGluZyA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlQ2FsbERhdGEoKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zaG93UGxhY2Vob2xkZXIgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJlQ2FsbERhdGEoKTogdm9pZCB7XHJcbiAgICAgICAgLy8gVE9ETyByZWZhY3RvciB0aGlzIHBhcnRcclxuICAgICAgICBpZiAoIXRoaXMuaXNOZWVkZWRGb3JSZWNhbGwpIHsgcmV0dXJuOyB9XHJcbiAgICAgICAgdGhpcy5kYXRhID0gW107XHJcbiAgICAgICAgdGhpcy5wZW5kaW5nID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnBhZ2luYXRpb25EYXRhID0ge1xyXG4gICAgICAgICAgICBjdXJyZW50OiAxLFxyXG4gICAgICAgICAgICBsYXN0OiAwXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmFjY2Vzc1RvTmV4dFJlcXVlc3QgPSB0cnVlO1xyXG4gICAgICAgIGlmICgodHlwZW9mIHRoaXMuc2VsZWN0Q29uZmlnLnBhZ2luYXRlKSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICB0aGlzLmdldERhdGEoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnBlbmRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5kYXRhID0gdGhpcy5zZWxlY3RDb25maWcucGFnaW5hdGU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaXNOZWVkZWRGb3JSZWNhbGwgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBlbWl0U2VsZWN0aW9uQ2hhbmdlQW5kQ2xvc2UoZXZlbnQ6IGFueSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQoZXZlbnQudmFsdWUpO1xyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdENvbmZpZy5tdWx0aXBsZSkge1xyXG4gICAgICAgICAgICBpZiAoIWV2ZW50LnZhbHVlPy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubmdDb250cm9sLmNvbnRyb2wucmVzZXQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubWF0U2VsZWN0LmNsb3NlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWNvbkNsaWNrKG1hdFNlbGVjdDogTWF0U2VsZWN0LCBzZWFyY2hJbnB1dD86IEVsZW1lbnRSZWYpOiB2b2lkIHtcclxuICAgICAgICBtYXRTZWxlY3Qub3BlbigpO1xyXG4gICAgICAgIHNlYXJjaElucHV0Py5uYXRpdmVFbGVtZW50Py5mb2N1cygpO1xyXG4gICAgfVxyXG5cclxuICAgIGN1c3RvbUVycm9yU3RhdGVNYXRjaGVyID0ge1xyXG4gICAgICAgIGlzRXJyb3JTdGF0ZTogKGNvbnRyb2w6IGFueSwgZm9ybTogYW55KTogYm9vbGVhbiA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiAhIShjb250cm9sICYmIGNvbnRyb2wuaW52YWxpZCAmJiB0aGlzLnN1Ym1pdFZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJuZXctbWF0LWF1dG9jb21wbGV0ZVwiIGlkPVwibWF0X2F1dG9jb21wbGV0ZVwiXHJcbiAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAnbWF0LXNlbGVjdC13aXRob3V0X2ljb24nOiAhc2VsZWN0Q29uZmlnLmljb25VcmwgJiYgIXNlbGVjdENvbmZpZy5hY3RpdmVTdGF0ZUljb25VcmwsXHJcbiAgICAgICAgICAgICdtYXQtc2VsZWN0LXdpdGgtc2VhcmNoJzogc2VsZWN0Q29uZmlnLnNlYXJjaCxcclxuICAgICAgICAgICAgJ3dpdGhvdXQtbGFiZWwnOiBzZWxlY3RDb25maWcuaGlkZUxhYmVsLFxyXG4gICAgICAgICAgICAnaW52YWxpZF9maWVsZCc6IG5nQ29udHJvbC5jb250cm9sLmVycm9ycyAmJiBzdWJtaXRWYWx1ZSxcclxuICAgICAgICAgICAgJ3JlYWRvbmx5LWZpZWxkJzogc2VsZWN0Q29uZmlnLnJlYWRPbmx5IHx8IG5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkXHJcbiAgICAgICAgIH1cIlxyXG4gICAgIFttYXRUb29sdGlwXT1cIihzZWxlY3RDb25maWcuaG92ZXIgJiYgIW5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkID8gKChzZWxlY3RDb25maWcuaG92ZXIgfHwgJycpIHwgdHJhbnNsYXRlKSA6ICcnKVwiXHJcbiAgICAgW21hdFRvb2x0aXBDbGFzc109XCInbWF0LW1kYy10b29sdGlwIGJpZy10ZC1tYXQtdG9vbHRpcCdcIlxyXG4gICAgIFttYXRUb29sdGlwUG9zaXRpb25dPVwiJ2Fib3ZlJ1wiXHJcbiAgICAgKm5nSWY9XCJzZWxlY3RDb25maWcgJiYgbmdDb250cm9sXCI+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJ3LTEwMFwiICpuZ0lmPVwiIXNlbGVjdENvbmZpZy5oaWRlTGFiZWxcIj5cclxuICAgIDxtYXQtbGFiZWwgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgJ3JlYWRvbmx5LWNvbG9yJyA6IHNlbGVjdENvbmZpZy5yZWFkT25seSB8fCBuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZCxcclxuICAgICAgICAgICdpbnZhbGlkLWxhYmVsLWNvbG9yJzogISEobmdDb250cm9sLmNvbnRyb2wuZXJyb3JzICYmIHN1Ym1pdFZhbHVlKVxyXG4gICAgICAgIH1cIj5cclxuICAgICAge3sgc2VsZWN0Q29uZmlnLmxhYmVsIHwgdHJhbnNsYXRlIH19XHJcbiAgICA8L21hdC1sYWJlbD5cclxuICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0Q29uZmlnLnJlcXVpcmVkXCIgY2xhc3M9XCJyZXF1aXJlZC1pbnB1dFwiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7J3JlYWRvbmx5LWNvbG9yJyA6IG5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkfVwiPio8L3NwYW4+XHJcbiAgPC9kaXY+XHJcblxyXG5cclxuICA8IS0tIFNlYXJjaCBJbnB1dCAtLT5cclxuICA8ZGl2IGNsYXNzPVwic2VhcmNoLWlucHV0IHctMTAwXCJcclxuICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7JGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxyXG4gICAgICAgW25nQ2xhc3NdPVwieyBoaWRlX2lucHV0X3BsYWNlaG9sZGVyOiBzaG93UGxhY2Vob2xkZXIgfHwgbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQgfVwiXHJcbiAgICAgICAqbmdJZj1cInNlbGVjdENvbmZpZy5zZWFyY2hcIlxyXG4gID5cclxuICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgIGlkPVwic2VhcmNoSW5wdXRcIlxyXG4gICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICBbbmdDbGFzc109XCJ7J3ByLTI1JzogIXNlbGVjdENvbmZpZy5pY29uVXJsfVwiXHJcbiAgICAgICAgICAgI3NlYXJjaElucHV0XHJcbiAgICAgICAgICAgW2Rpc2FibGVkXT1cIm5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkIHx8IHNlbGVjdENvbmZpZy5ob3ZlclwiXHJcbiAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIihuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZCB8fCBzZWxlY3RDb25maWcuaG92ZXIpID8gJycgOiAnU2VhcmNoJ1wiXHJcbiAgICAgICAgICAgKGZvY3Vzb3V0KT1cImlucHV0Rm9jdXNPdXQoKVwiXHJcbiAgICAgICAgICAgKGZvY3VzKT1cIm9wZW5TZWxlY3Rpb24oKVwiXHJcbiAgICAgICAgICAgKGtleWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgICAoa2V5dXApPVwiZ2V0RGF0YVdpdGhTZWFyY2goc2VhcmNoSW5wdXQudmFsdWUsJGV2ZW50KVwiPlxyXG5cclxuICAgIDwhLS0gU2VhcmNoIEljb24gLS0+XHJcbiAgICA8c3BhbiBjbGFzcz1cInNlYXJjaC1pY29uXCI+XHJcbiAgICAgICAgICAgIDxpLXRlY2gtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgICBjbGFzcz1cIm1yLTEwXCJcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJzZWxlY3RDb25maWcucmVhZE9ubHkgfHwgbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQgPyAncmVhZG9ubHktY29sb3InIDogJ2RlZmF1bHQtZm9ybS1pY29uLWNvbG9yJ1wiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJzZWxlY3RDb25maWcuaWNvblByZWZpeCAmJiAhc2hvd1BsYWNlaG9sZGVyXCJcclxuICAgICAgICAgICAgICBbaWNvbk5hbWVdPVwic2VsZWN0Q29uZmlnLmljb25QcmVmaXggfHwgJydcIlxyXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzZWxlY3RDb25maWcucmVhZE9ubHkgfHwgZmFsc2VcIlxyXG4gICAgICAgICAgICAgIG1hdFByZWZpeFxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwvaS10ZWNoLWljb24tYnV0dG9uPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBQbGFjZWhvbGRlci9TZWxlY3RlZCBWYWx1ZSBEaXNwbGF5IC0tPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93UGxhY2Vob2xkZXIgJiYgc2VsZWN0Q29uZmlnLnNlYXJjaFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImN1c3RvbS1wbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICpuZ0lmPVwiKCFuZ0NvbnRyb2w/LnZhbHVlICYmICFuZ0NvbnRyb2w/LnZhbHVlPy5sZW5ndGgpIHx8XHJcbiAgICAgICAgICAgICAgICAgKHNlbGVjdENvbmZpZy5tdWx0aXBsZSAmJiBuZ0NvbnRyb2w/LnZhbHVlICYmICFuZ0NvbnRyb2w/LnZhbHVlPy5sZW5ndGgpXCJcclxuICAgICAgICAgW25nQ2xhc3NdPVwic2VsZWN0Q29uZmlnLnJlYWRPbmx5IHx8IG5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkID8gJ3JlYWRvbmx5LWNvbG9yJyA6ICdkZWZhdWx0LWZvcm0taWNvbi1jb2xvcidcIlxyXG4gICAgPlxyXG4gICAgICB7eyAoKHNlbGVjdENvbmZpZy5wbGFjZWhvbGRlciB8fCAnJykgfCB0cmFuc2xhdGUpIH19XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tcGxhY2Vob2xkZXIgY3VzdG9tLXZhbHVlIGVsbGlwc2lzXCJcclxuICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgJ3ByLTQyJzogc2VsZWN0Q29uZmlnLmljb25VcmwsXHJcbiAgICAgICAgICAgICAgICAncmVhZG9ubHktY29sb3InOiBzZWxlY3RDb25maWcucmVhZE9ubHkgfHwgbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQsXHJcbiAgICAgICAgICAgICAgICAnZGVmYXVsdC1mb3JtLWljb24tY29sb3InOiAhKHNlbGVjdENvbmZpZy5yZWFkT25seSB8fCBuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZClcclxuICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAqbmdJZj1cIm5nQ29udHJvbD8udmFsdWVcIlxyXG4gICAgPlxyXG4gICAgICB7eyBzZWxlY3RDb25maWc/Lm11bHRpcGxlID8gKG5nQ29udHJvbC52YWx1ZSB8IGFycmF5VG9TdHJpbmcpIDogc2hvd2luZ1ZhbHVlIH19XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPCEtLSBDdXN0b20gSWNvbiAtLT5cclxuICA8aW1nIGNsYXNzPVwibGVmdF9pY29uX25ldyBwb2ludGVyXCJcclxuICAgICAgIChjbGljayk9XCJpY29uQ2xpY2sobWF0U2VsZWN0LCBzZWFyY2hJbnB1dClcIlxyXG4gICAgICAgKm5nSWY9XCIhc2VsZWN0Q29uZmlnLm1hdEljb25OYW1lICYmIChzZWxlY3RDb25maWcuaWNvblVybCB8fCBzZWxlY3RDb25maWcuYWN0aXZlU3RhdGVJY29uVXJsKVwiXHJcbiAgICAgICBbc3JjXT1cIidhc3NldHMvaW1hZ2VzL2ljb25zL2dsb2JhbC8nICsgKG5nQ29udHJvbC5jb250cm9sPy52YWx1ZSAmJiBzZWxlY3RDb25maWc/LmFjdGl2ZVN0YXRlSWNvblVybCA/IHNlbGVjdENvbmZpZy5hY3RpdmVTdGF0ZUljb25VcmwgOiBzZWxlY3RDb25maWcuaWNvblVybClcIj5cclxuXHJcbiAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJ3LTEwMFwiIChjbGljayk9XCJzZWxlY3RDb25maWc/LnNlYXJjaCA/IGZvY3VzU2VhcmNoSW5wdXQoKSA6IG51bGxcIj5cclxuICAgIDwhLS0gTWF0ZXJpYWwgU2VsZWN0IC0tPlxyXG4gICAgPG1hdC1zZWxlY3QgI21hdFNlbGVjdD1cIm1hdFNlbGVjdFwiXHJcbiAgICAgICAgICAgICAgICBbcGFuZWxDbGFzc109XCInYXV0b2NvbXBsZXRlLXRyYW5zZm9ybS1wYW5lbC1sb2NhdGlvbidcIlxyXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1wbGFjZWhvbGRlcl09XCIoc2VsZWN0Q29uZmlnLnBsYWNlaG9sZGVyIHx8ICcnKSB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICBbYXJpYS1sYWJlbF09XCJzZWxlY3RDb25maWcubGFiZWwgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgW2lkXT1cInNlbGVjdENvbmZpZy5maWx0cmF0aW9uS2V5IHx8ICcnXCJcclxuICAgICAgICAgICAgICAgIChvcGVuZWQpPVwicmVnaXN0ZXJQYW5lbFNjcm9sbEV2ZW50KG1hdFNlbGVjdClcIlxyXG4gICAgICAgICAgICAgICAgKG9wZW5lZENoYW5nZSk9XCJvcGVuZWRDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwibmdDb250cm9sLmNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgW211bHRpcGxlXT1cInNlbGVjdENvbmZpZy5tdWx0aXBsZVwiXHJcbiAgICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cImVtaXRTZWxlY3Rpb25DaGFuZ2VBbmRDbG9zZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIFtlcnJvclN0YXRlTWF0Y2hlcl09XCJjdXN0b21FcnJvclN0YXRlTWF0Y2hlclwiXHJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiKHNlbGVjdENvbmZpZy5wbGFjZWhvbGRlciB8fCAnJykgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkXCJcclxuICAgID5cclxuXHJcbiAgICAgIDwhLS0gTG9hZGluZyBTdGF0ZSAtLT5cclxuICAgICAgPG1hdC1vcHRpb24gKm5nSWY9XCJwZW5kaW5nXCIgY2xhc3M9XCJvcHRpb25fbG9hZGluZyByZWxhdGl2ZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZXF1ZXN0X2xvYWRpbmdcIj5cclxuICAgICAgICAgIDxpbWcgbmdTcmM9XCIuL2xvYWRlci5zdmdcIiBhbHQ9XCJcIiBoZWlnaHQ9XCIyMDBcIiB3aWR0aD1cIjIwMFwiLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9tYXQtb3B0aW9uPlxyXG5cclxuICAgICAgPCEtLSBPcHRpb25zIC0tPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YT8ubGVuZ3RoICYmICFwZW5kaW5nXCI+XHJcbiAgICAgICAgPCEtLSBBZGQgTmV3IE9wdGlvbiAtLT5cclxuICAgICAgICA8bWF0LW9wdGlvbiAqbmdJZj1cInNlbGVjdENvbmZpZy5hY3Rpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBvaW50ZXIgYWRkX25ld1wiXHJcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWRcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xvc2VQYW5lbEFuZFVuc2V0Rm9jdXMoKTthZGROZXdJdGVtRXZlbnQoKVwiPlxyXG4gICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibmdDb250cm9sLmNvbnRyb2wucmVzZXQobnVsbCk7bWF0U2VsZWN0Ll9vbkJsdXIoKTtjbG9zZVBhbmVsQW5kVW5zZXRGb2N1cygpO2FkZE5ld0l0ZW1FdmVudCgpXCI+LS0+XHJcbiAgICAgICAgICA8aS10ZWNoLWJ1dHRvblxyXG4gICAgICAgICAgICBbdHlwZV09XCJCdXR0b25UeXBlLk9VVExJTkVcIlxyXG4gICAgICAgICAgICBbZm9udEljb25dPVwiJ2FkZCdcIlxyXG4gICAgICAgICAgICBbdGV4dF09XCIoJ2Ryb3Bkb3duX2FkZF9pdGVtJyB8IHRyYW5zbGF0ZSA6IHtJTlBVVF9OQU1FOiAoc2VsZWN0Q29uZmlnLmxhYmVsIHwgdHJhbnNsYXRlKX0pIFwiXHJcbiAgICAgICAgICAgIFtjdXN0b21DbGFzc109XCIndy0xMDAgbWF0LWF1dG9jb21wbGV0ZS1zZWxlY3QtYnV0dG9uJ1wiPlxyXG4gICAgICAgICAgPC9pLXRlY2gtYnV0dG9uPlxyXG4gICAgICAgIDwvbWF0LW9wdGlvbj5cclxuXHJcbiAgICAgICAgPCEtLSBSZWd1bGFyIE9wdGlvbnMgLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzZWxlY3RDb25maWc/LmNoYW5nZVRleHQgJiYgZGF0YS5sZW5ndGhcIj5cclxuICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIGRhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInNlbGVjdENvbmZpZy52YWx1ZUJ5S2V5IHwgZ2V0VmFsdWVCeUtleUZyb21PYmplY3QgOiBpdGVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChtb3VzZXVwKT1cIm9wdGlvbkNsaWNrKGl0ZW0pXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwicHJldmVudERlZmF1bHQoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICB7eyAoKHNlbGVjdENvbmZpZy52YWx1ZVRvU2hvd0J5S2V5IHwgZ2V0VmFsdWVCeUtleUZyb21PYmplY3QgOiBpdGVtIDogc2VsZWN0Q29uZmlnLnZhbHVlVG9TaG93QnlQYXJhbSA6IHNlbGVjdENvbmZpZy53aXRoUGFyYW1TeW1ib2wpIHx8ICcnKSB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8IS0tIEN1c3RvbSBUZXh0IE9wdGlvbnMgLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdENvbmZpZz8uY2hhbmdlVGV4dCAmJiBkYXRhLmxlbmd0aFwiPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgZGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwic2VsZWN0Q29uZmlnLnZhbHVlQnlLZXkgfCBnZXRWYWx1ZUJ5S2V5RnJvbU9iamVjdCA6IGl0ZW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKG1vdXNldXApPVwib3B0aW9uQ2xpY2soaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJwcmV2ZW50RGVmYXVsdCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzZWxlY3RDb25maWc/LmNoYW5nZVRleHRbaXRlbV0uZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAge3sgc2VsZWN0Q29uZmlnPy5jaGFuZ2VUZXh0W2l0ZW1dLnRleHQgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8IS0tIEVtcHR5IFN0YXRlIC0tPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXBlbmRpbmcgJiYgIWRhdGEubGVuZ3RoXCI+XHJcbiAgICAgICAgPG1hdC1vcHRpb24gZGlzYWJsZWQgY2xhc3M9XCJlbXB0eV9zZWxlY3Rpb25fc3RhdGVcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25zX2FuZF90aWxlIGFkZF9uZXcgZmxleF9jb2x1bW4gdy0xMDAgZmxleF9jZW50ZXJfYWxpZ25fY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxzcGFuPnt7ICdkcm9wZG93bl9ub19pdGVtcycgfCB0cmFuc2xhdGUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0xMFwiPlxyXG4gICAgICAgICAgICAgIDxpLXRlY2gtYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInNlbGVjdENvbmZpZz8uYWN0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICBbdHlwZV09XCJCdXR0b25UeXBlLk9VVExJTkVcIlxyXG4gICAgICAgICAgICAgICAgKGJ1dHRvbkNsaWNrKT1cImNsb3NlUGFuZWxBbmRVbnNldEZvY3VzKCk7YWRkTmV3SXRlbUV2ZW50KClcIlxyXG4gICAgICAgICAgICAgICAgW2N1c3RvbUNsYXNzXT1cIidtYXQtYXV0b2NvbXBsZXRlLXNlbGVjdC1idXR0b24nXCJcclxuICAgICAgICAgICAgICAgIFtmb250SWNvbl09XCInYWRkJ1wiXHJcbiAgICAgICAgICAgICAgICBbdGV4dF09XCIoJ2Ryb3Bkb3duX2FkZF9pdGVtJyB8IHRyYW5zbGF0ZSA6IHtJTlBVVF9OQU1FOiAoc2VsZWN0Q29uZmlnLmxhYmVsIHwgdHJhbnNsYXRlKX0pIFwiPlxyXG4gICAgICAgICAgICAgIDwvaS10ZWNoLWJ1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgPG1hdC1pY29uICpuZ0lmPVwic2VsZWN0Q29uZmlnLmljb25QcmVmaXhcIlxyXG4gICAgICAgICAgICAgIG1hdFByZWZpeFxyXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAncmVhZG9ubHktY29sb3InIDogIXNlbGVjdENvbmZpZ1snaWNvblByZWZpeENvbG9yJ10gJiYgKHNlbGVjdENvbmZpZy5yZWFkT25seSB8fCBuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZCksXHJcbiAgICAgICAgICAgICAgICAgICAgJ2RlZmF1bHQtZm9ybS1pY29uLWNvbG9yJyA6ICFzZWxlY3RDb25maWdbJ2ljb25QcmVmaXhDb2xvciddICYmICEoc2VsZWN0Q29uZmlnLnJlYWRPbmx5IHx8IG5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIigoc2VsZWN0Q29uZmlnPy5bJ2ljb25QcmVmaXhUb29sdGlwJ10gfHwgJycpIHwgdHJhbnNsYXRlKVwiXHJcbiAgICA+e3sgc2VsZWN0Q29uZmlnLmljb25QcmVmaXggfX1cclxuICAgIDwvbWF0LWljb24+XHJcblxyXG4gICAgPG1hdC1pY29uICpuZ0lmPVwic2VsZWN0Q29uZmlnWydpY29uUHJlZml4U3ZnJ11cIlxyXG4gICAgICAgICAgICAgIG1hdFByZWZpeFxyXG4gICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIigoc2VsZWN0Q29uZmlnPy5bJ2ljb25QcmVmaXhUb29sdGlwJ10gfHwgJycpIHwgdHJhbnNsYXRlKVwiXHJcbiAgICAgICAgICAgICAgW3N2Z0ljb25dPVwic2VsZWN0Q29uZmlnWydpY29uUHJlZml4U3ZnJ10gfHwgJydcIlxyXG4gICAgPjwvbWF0LWljb24+XHJcblxyXG4gICAgPGktdGVjaC1pY29uLWJ1dHRvblxyXG4gICAgICAqbmdJZj1cInNlbGVjdENvbmZpZy5zZWFyY2ggJiYgc2VsZWN0Q29uZmlnLmNsZWFyYWJsZSAmJiAhbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQgJiYgISFuZ0NvbnRyb2wuY29udHJvbC52YWx1ZVwiXHJcbiAgICAgIGljb25OYW1lPVwiY2FuY2VsXCJcclxuICAgICAgbWF0U3VmZml4XHJcbiAgICAgIFtkaXNhYmxlZF09XCJzZWxlY3RDb25maWcucmVhZE9ubHkgfHwgZmFsc2VcIlxyXG4gICAgICBbbmdDbGFzc109XCJzZWxlY3RDb25maWcucmVhZE9ubHkgfHwgbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQgPyAncmVhZG9ubHktY29sb3InIDogJ2RlZmF1bHQtZm9ybS1pY29uLWNvbG9yJ1wiXHJcbiAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7JGV2ZW50LnByZXZlbnREZWZhdWx0KCk7bmdDb250cm9sLmNvbnRyb2wucmVzZXQobnVsbCk7bWF0U2VsZWN0Ll9vbkJsdXIoKTtjbG9zZVBhbmVsQW5kVW5zZXRGb2N1cygpXCJcclxuICAgID5cclxuICAgIDwvaS10ZWNoLWljb24tYnV0dG9uPlxyXG4gICAgPG1hdC1pY29uXHJcbiAgICAgIG1hdFN1ZmZpeFxyXG4gICAgICBjbGFzcz1cInNlbGVjdC1hcnJvd1wiXHJcbiAgICAgIFtjbGFzcy5vcGVuXT1cIm1hdFNlbGVjdC5wYW5lbE9wZW5cIlxyXG4gICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICdyZWFkb25seS1jb2xvcic6IHNlbGVjdENvbmZpZy5yZWFkT25seSB8fCBuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZCxcclxuICAgICAgICAgICAgJ2RlZmF1bHQtZm9ybS1pY29uLWNvbG9yJzogIShzZWxlY3RDb25maWcucmVhZE9ubHkgfHwgbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQpLFxyXG4gICAgICAgICAgICAnbXQtOCc6ICEhbmdDb250cm9sLmNvbnRyb2wudmFsdWUgJiYgc2VsZWN0Q29uZmlnLmNsZWFyYWJsZVxyXG4gICAgICAgICB9XCJcclxuICAgID5cclxuICAgICAga2V5Ym9hcmRfYXJyb3dfZG93blxyXG4gICAgPC9tYXQtaWNvbj5cclxuICAgIDwhLS0gRXJyb3IgTWVzc2FnZSAtLT5cclxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCIhIShuZ0NvbnRyb2wuY29udHJvbC5lcnJvcnMgJiYgc3VibWl0VmFsdWUpXCI+XHJcbiAgICAgIHt7IG5nQ29udHJvbC5jb250cm9sIHwgZ2VuZXJhdGVFcnJvck1lc3NhZ2VzIDogc2VsZWN0Q29uZmlnLmxhYmVsIDogc2VsZWN0Q29uZmlnLmRlZmF1bHRQYXR0ZXJuS2V5IH19XHJcbiAgICA8L21hdC1lcnJvcj5cclxuICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuICA8IS0tIFJlc2V0IEJ1dHRvbiAtLT5cclxuICA8aS10ZWNoLWNsZWFyLXZhbHVlICpuZ0lmPVwic2VsZWN0Q29uZmlnLnJlc2V0XCIgKHJlc2V0KT1cInJlc2V0VmFsdWUoKVwiPjwvaS10ZWNoLWNsZWFyLXZhbHVlPlxyXG48L2Rpdj5cclxuIl19
409
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlLXNlbGVjdC9hdXRvY29tcGxldGUtc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9hdXRvY29tcGxldGUtc2VsZWN0L2F1dG9jb21wbGV0ZS1zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBR0EsWUFBWSxFQUMzQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQVksZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFFcEUsT0FBTyxFQUFrQixtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXBFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNoRSxPQUFPLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDckQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSwrQ0FBK0MsQ0FBQztBQUMxRixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxrQ0FB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Q2hCLE9BQU87d0JBQ1AseUJBQXlCO3dCQUN6QixtQkFBbUI7d0JBQ25CLGtCQUFrQjtxQkFDbkIsY0FDVyxJQUFJO2lGQUdVLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDSSxXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWE7Z0JBQ2YsU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUlPLE9BQU87c0JBQW5CLEtBQUs7Z0JBbUJHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0ksZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNtQixXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWE7Z0JBcUJ4QixzQkFBc0I7c0JBRHJCLFlBQVk7dUJBQUMsMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIENvbXBvbmVudCxcclxuICAgIFZpZXdDaGlsZCxcclxuICAgIElucHV0LFxyXG4gICAgT3V0cHV0LFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgT25DaGFuZ2VzLFxyXG4gICAgU2ltcGxlQ2hhbmdlcyxcclxuICAgIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgQWZ0ZXJWaWV3SW5pdFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge01hdFNlbGVjdCwgTWF0U2VsZWN0TW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0XCI7XHJcbmltcG9ydCB7QXV0b2NvbXBsZXRlQ29uZmlnc0ludGVyZmFjZX0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXMvYXV0b2NvbXBsZXRlLWNvbmZpZ3MuaW50ZXJmYWNlXCI7XHJcbmltcG9ydCB7Rm9ybUNvbnRyb2xOYW1lLCBSZWFjdGl2ZUZvcm1zTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgSW5wdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaW5wdXQuc2VydmljZSc7XHJcbmltcG9ydCB7IEJ1dHRvblR5cGUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2J1dHRvbi10eXBlcy5lbnVtJztcclxuaW1wb3J0IHtOZ0NsYXNzLCBOZ0ZvciwgTmdJZiwgTmdPcHRpbWl6ZWRJbWFnZX0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge01hdFRvb2x0aXB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwXCI7XHJcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xyXG5pbXBvcnQge0ljb25CdXR0b25Db21wb25lbnR9IGZyb20gXCIuLi9pY29uLWJ1dHRvbi9pY29uLWJ1dHRvbi5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtCdXR0b25Db21wb25lbnR9IGZyb20gXCIuLi9idXR0b24vYnV0dG9uLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge0dldFZhbHVlQnlLZXlGcm9tT2JqZWN0UGlwZX0gZnJvbSBcIi4uLy4uL3BpcGVzL2dldC12YWx1ZS1ieS1rZXktZnJvbS1vYmplY3QucGlwZVwiO1xyXG5pbXBvcnQge0FycmF5VG9TdHJpbmdQaXBlfSBmcm9tIFwiLi4vLi4vcGlwZXMvYXJyYXktdG8tc3RyaW5nLnBpcGVcIjtcclxuaW1wb3J0IHtNYXRJY29ufSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvblwiO1xyXG5pbXBvcnQge0dlbmVyYXRlRXJyb3JNZXNzYWdlc1BpcGV9IGZyb20gXCIuLi8uLi9waXBlcy9nZW5lcmF0ZS1lcnJvci1tZXNzYWdlcy5waXBlXCI7XHJcbmltcG9ydCB7Q2xlYXJWYWx1ZUNvbXBvbmVudH0gZnJvbSBcIi4uL2NsZWFyLXZhbHVlL2NsZWFyLXZhbHVlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge01hdEZvcm1GaWVsZE1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGRcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaS10ZWNoLWF1dG9jb21wbGV0ZS1zZWxlY3QnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hdXRvY29tcGxldGUtc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9hdXRvY29tcGxldGUtc2VsZWN0LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgTmdDbGFzcyxcclxuICAgIE1hdFRvb2x0aXAsXHJcbiAgICBOZ0lmLFxyXG4gICAgTmdGb3IsXHJcbiAgICBUcmFuc2xhdGVNb2R1bGUsXHJcbiAgICBJY29uQnV0dG9uQ29tcG9uZW50LFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIE1hdFNlbGVjdE1vZHVsZSxcclxuICAgIEJ1dHRvbkNvbXBvbmVudCxcclxuICAgIEdldFZhbHVlQnlLZXlGcm9tT2JqZWN0UGlwZSxcclxuICAgIEFycmF5VG9TdHJpbmdQaXBlLFxyXG4gICAgTmdPcHRpbWl6ZWRJbWFnZSxcclxuICAgIE1hdEljb24sXHJcbiAgICBHZW5lcmF0ZUVycm9yTWVzc2FnZXNQaXBlLFxyXG4gICAgQ2xlYXJWYWx1ZUNvbXBvbmVudCxcclxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZVxyXG4gIF0sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXV0b2NvbXBsZXRlU2VsZWN0Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcclxuICAgIEBWaWV3Q2hpbGQoJ21hdFNlbGVjdCcpIG1hdFNlbGVjdCE6IE1hdFNlbGVjdDtcclxuICAgIEBWaWV3Q2hpbGQoJ3NlYXJjaElucHV0Jykgc2VhcmNoSW5wdXQhOiBFbGVtZW50UmVmO1xyXG4gICAgQElucHV0KCkgY2xhc3NOYW1lITogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgc3VibWl0VmFsdWUhOiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEZvciB3b3JraW5nIGNvbmZpZ3MuXHJcbiAgICovXHJcbiAgICBASW5wdXQoKSBzZXQgY29uZmlncyhkYXRhOiBBdXRvY29tcGxldGVDb25maWdzSW50ZXJmYWNlKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RDb25maWcgPSBkYXRhO1xyXG4gICAgICAgIGlmICghZGF0YSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoKHR5cGVvZiB0aGlzLnNlbGVjdENvbmZpZy5wYWdpbmF0ZSkgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZmlyc3RSZXF1ZXN0KSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5nZXREYXRhKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZmlyc3RSZXF1ZXN0ID0gdHJ1ZVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmRhdGEgPSB0aGlzLnNlbGVjdENvbmZpZy5wYWdpbmF0ZTtcclxuICAgICAgICB0aGlzLmZpbmRBbmRTZXREZWZhdWx0VmFsdWVGcm9tRGF0YSgpO1xyXG4gICAgfTtcclxuXHJcbiAgICBASW5wdXQoKSBkZXRlY3RDaGFuZ2VzITogYm9vbGVhbjtcclxuICAgIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBPdXRwdXQoKSBlbWl0QWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBAVmlld0NoaWxkKCdhbGxTZWxlY3RlZCcpIGFsbFNlbGVjdGVkITogTWF0U2VsZWN0O1xyXG4gICAgcGVuZGluZyA9IGZhbHNlO1xyXG4gICAgZGVmYXVsdFZhbHVlITogYW55O1xyXG4gICAgZGF0YTogQXJyYXk8YW55PiA9IFtdO1xyXG4gICAgcGFnaW5hdGlvbkRhdGE6IGFueSA9IHtjdXJyZW50OiAxLCBsYXN0OiAwfTtcclxuICAgIG5nQ29udHJvbDogRm9ybUNvbnRyb2xOYW1lO1xyXG4gICAgc2VsZWN0Q29uZmlnITogQXV0b2NvbXBsZXRlQ29uZmlnc0ludGVyZmFjZTtcclxuICAgIGZpcnN0UmVxdWVzdCA9IGZhbHNlO1xyXG4gICAgc2hvd1BsYWNlaG9sZGVyID0gdHJ1ZTtcclxuICAgIGlzTmVlZGVkRm9yUmVjYWxsID0gZmFsc2U7XHJcbiAgICBzaG93aW5nVmFsdWU6IGFueTtcclxuICAgIHNlYXJjaFRpbWVvdXRJZDogYW55O1xyXG4gICAgdGFiVmlzaWJpbGl0eSE6IGJvb2xlYW47XHJcbiAgICBhY2Nlc3NUb05leHRSZXF1ZXN0ID0gdHJ1ZTtcclxuICAgIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgICBibG9ja1JlY2FsbERlZmF1bHRWYWx1ZVNldHRlciA9IGZhbHNlO1xyXG4gICAgYmFzZURhdGE6IGFueTtcclxuICAgIHJlcXVlc3RMb2FkaW5nID0gZmFsc2U7XHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgQnV0dG9uVHlwZSA9IEJ1dHRvblR5cGU7XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6dmlzaWJpbGl0eWNoYW5nZScpXHJcbiAgICBoYW5kbGVWaXNpYmlsaXR5Q2hhbmdlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudGFiVmlzaWJpbGl0eSA9ICFkb2N1bWVudC5oaWRkZW47XHJcbiAgICAgICAgaWYgKHRoaXMubmdDb250cm9sLmNvbnRyb2wudmFsdWUpIHsgcmV0dXJuO31cclxuICAgICAgICB0aGlzLmNsb3NlUGFuZWxBbmRVbnNldEZvY3VzKCk7XHJcbiAgICAgICAgaWYgKCFkb2N1bWVudC5oaWRkZW4pIHtcclxuICAgICAgICAgICAgdGhpcy5pc05lZWRlZEZvclJlY2FsbCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMucGVuZGluZyA9IHRydWU7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wZW5kaW5nID0gZmFsc2VcclxuICAgICAgICAgICAgfSwgNDAwMClcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBpbnB1dFNlcnZpY2U6IElucHV0U2VydmljZSkge1xyXG4gICAgICAgIHRoaXMubmdDb250cm9sID0gdGhpcy5pbnB1dFNlcnZpY2UuaW5qZWN0TmdDb250cm9sKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgICAgIGlmIChjaGFuZ2VzWydzZWxlY3RDb25maWcnXSAmJiB0aGlzLnNlbGVjdENvbmZpZykge1xyXG4gICAgICAgICAgICBpZiAoKHR5cGVvZiB0aGlzLnNlbGVjdENvbmZpZy5wYWdpbmF0ZSkgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0RGF0YSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgICAgICB0aGlzLm5nQ29udHJvbC5jb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmRhdGEubGVuZ3RoICYmIHJlcyAmJiAhdGhpcy5ibG9ja1JlY2FsbERlZmF1bHRWYWx1ZVNldHRlcikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5maW5kQW5kU2V0RGVmYXVsdFZhbHVlRnJvbURhdGEoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgaGFyZFJlbG9hZCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmdldERhdGEoJycsIHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAvKipcclxuICAgKiBEeW5hbWljIHJlcXVlc3QgZm9yIHNlbGVjdCBkYXRhLlxyXG4gICAqIEBwYXJhbSBzZWFyY2hUZXh0IC0gVGhlIGlucHV0IHZhbHVlIHRvIHNlYXJjaCBvcHRpb25zIGJ5LlxyXG4gICAqIEBwYXJhbSBmcm9tU2VhcmNoIC0gQWNjZXNzIGZvciBzZWFyY2ggLlxyXG4gICAqIEByZXR1cm5zIFNlbGVjdCBkYXRhLlxyXG4gICAqL1xyXG4gICAgZ2V0RGF0YShzZWFyY2hUZXh0Pzogc3RyaW5nLCBmcm9tU2VhcmNoPzogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIGlmICghZnJvbVNlYXJjaCAmJiAhdGhpcy5hY2Nlc3NUb05leHRSZXF1ZXN0KSB7IHJldHVybjsgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5yZXF1ZXN0TG9hZGluZykgeyByZXR1cm47IH1cclxuXHJcbiAgICAgICAgaWYgKGZyb21TZWFyY2gpIHtcclxuICAgICAgICAgICAgdGhpcy5wYWdpbmF0aW9uRGF0YS5jdXJyZW50ID0gMTtcclxuICAgICAgICAgICAgdGhpcy5hY2Nlc3NUb05leHRSZXF1ZXN0ID0gdHJ1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGZ1bmN0aW9uVG9EbyA9IHRoaXMuc2VsZWN0Q29uZmlnLnBhZ2luYXRlKHRoaXMucGFnaW5hdGlvbkRhdGEuY3VycmVudCwgc2VhcmNoVGV4dCk7XHJcblxyXG4gICAgICAgIHRoaXMucmVxdWVzdExvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgIGZ1bmN0aW9uVG9Ebz8uc3Vic2NyaWJlKChkYXRhOiBBcnJheTxhbnk+IHwgYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRhdGFUb0FkZCA9ICgnY29udGVudCcgaW4gZGF0YSkgPyBkYXRhLmNvbnRlbnQgOiBkYXRhO1xyXG5cclxuICAgICAgICAgICAgaWYgKCdjb250ZW50JyBpbiBkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFjY2Vzc1RvTmV4dFJlcXVlc3QgPSAhZGF0YS5sYXN0IHx8IChkYXRhLnRvdGFsUGFnZXMgPiB0aGlzLnBhZ2luYXRpb25EYXRhLmN1cnJlbnQpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLmRhdGEgPSAoZnJvbVNlYXJjaCB8fCB0aGlzLnNlbGVjdENvbmZpZz8uYmxvY2tQYWdpbmF0aW9uKSA/IGRhdGFUb0FkZCA6IFsuLi50aGlzLmRhdGEsIC4uLmRhdGFUb0FkZF07XHJcbiAgICAgICAgICAgIHRoaXMucGVuZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnJlcXVlc3RMb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgICBpZiAoIWRhdGFUb0FkZC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucGFnaW5hdGlvbkRhdGEubGFzdCA9IHRoaXMucGFnaW5hdGlvbkRhdGEuY3VycmVudDtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5wYWdpbmF0aW9uRGF0YS5jdXJyZW50ICs9IDE7XHJcbiAgICAgICAgICAgIHRoaXMucGFnaW5hdGlvbkRhdGEubGFzdCArPSAxO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZmluZEFuZFNldERlZmF1bHRWYWx1ZUZyb21EYXRhKCk7XHJcbiAgICAgICAgICAgIH0sMTApXHJcbiAgICAgICAgfSwgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBlbmRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5yZXF1ZXN0TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgZmluZEFuZFNldERlZmF1bHRWYWx1ZUZyb21EYXRhKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdENvbmZpZy5tdWx0aXBsZSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wudmFsdWUgJiYgdGhpcy5uZ0NvbnRyb2wudmFsdWUubGVuZ3RoID09IDEpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U2hvd2luZ1ZhbHVlKHRoaXMuZGF0YS5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSB0aGlzLm5nQ29udHJvbC52YWx1ZVswXSkpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBpc0Rpc2FibGVkID0gdGhpcy5uZ0NvbnRyb2wuZGlzYWJsZWQ7XHJcbiAgICAgICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBUT0RPIFJlbW92ZSBhZnRlciBtaWdyYXRpbmcgYWxsIHNlbGVjdHNcclxuICAgICAgICAgICAgICAgIC8vIHRoaXMubmdDb250cm9sLmNvbnRyb2wuZW5hYmxlKCk7XHJcbiAgICAgICAgICAgICAgICAvLyBpZiAoIXRoaXMubmdDb250cm9sLnZhbHVlICYmICF0aGlzLmRhdGEubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAvLyAgICAgdGhpcy5uZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlKCk7XHJcbiAgICAgICAgICAgICAgICAvLyAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy5zZXREZWZhdWx0VmFsdWUoKTtcclxuICAgICAgICAgICAgICAgIC8vIHRoaXMubmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZSgpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLm5nQ29udHJvbC52YWx1ZSAmJiAhdGhpcy5kYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXREZWZhdWx0VmFsdWUoKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2V0RGVmYXVsdFZhbHVlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZGVmYXVsdFZhbHVlID0gdGhpcy5kYXRhLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IHRoaXMubmdDb250cm9sLnZhbHVlKTtcclxuICAgICAgICB0aGlzLmJhc2VEYXRhID0gdGhpcy5kZWZhdWx0VmFsdWVcclxuICAgICAgICBpZiAoIXRoaXMuZGVmYXVsdFZhbHVlKSB7IHJldHVybjt9XHJcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCgpXHJcbiAgICAgICAgdGhpcy5zZXRTaG93aW5nVmFsdWUodGhpcy5kZWZhdWx0VmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIG9wdGlvbkNsaWNrKHNob3dpbmdEYXRhOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmJhc2VEYXRhID0gc2hvd2luZ0RhdGFcclxuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0Q29uZmlnLm11bHRpcGxlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U2hvd2luZ1ZhbHVlKHNob3dpbmdEYXRhKTtcclxuICAgICAgICAgICAgdGhpcy5tYXRTZWxlY3QuY2xvc2UoKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5zZWFyY2hJbnB1dCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RDb25maWcubXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoSW5wdXQ/Lm5hdGl2ZUVsZW1lbnQ/LmZvY3VzKClcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRGb2N1c091dCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnNldFNob3dpbmdWYWx1ZShzaG93aW5nRGF0YSk7XHJcbiAgICAgICAgdGhpcy5zaG93UGxhY2Vob2xkZXIgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBhZGROZXdJdGVtRXZlbnQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5pc05lZWRlZEZvclJlY2FsbCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5lbWl0QWN0aW9uLmVtaXQoKTtcclxuICAgIH1cclxuICAvKipcclxuICAgKiBGaWx0ZXIgYW5kIHNob3cuXHJcbiAgICogQHBhcmFtIGRhdGEgLSBFeGlzdGluZyBjaG9zZW4gZGF0YS5cclxuICAgKi9cclxuICAgIHNldFNob3dpbmdWYWx1ZShkYXRhOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIWRhdGEpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBUT0RPIHJlZmFjdG9yIHRoaXMgcGFydCBmdWxseVxyXG4gICAgICAgIGxldCBpbmNsdWRlID0gZGF0YTtcclxuICAgICAgICBsZXQgaW5jbHVkZU9wdGlvbmFsID0gZGF0YTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0Q29uZmlnLnZhbHVlVG9TaG93QnlLZXkpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RDb25maWcudmFsdWVUb1Nob3dCeUtleS5mb3JFYWNoKChwYXJhbTogQXJyYXk8c3RyaW5nIHwgbnVtYmVyPiB8IHN0cmluZykgPT4ge1xyXG5cclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcGFyYW0gPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFyYW0uZm9yRWFjaCgoa2V5OiBzdHJpbmcgfCBudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSA9IChpbmNsdWRlKSA/IGluY2x1ZGVba2V5XSA6IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSA9IGluY2x1ZGVbcGFyYW1dO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RDb25maWcuc2hvd0Z1bGxUZXh0V2l0aE9wdGlvbmFsT25TZWxlY3RlZFZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdENvbmZpZy52YWx1ZVRvU2hvd0J5UGFyYW0/LmZvckVhY2goKHBhcmFtOiBBcnJheTxzdHJpbmcgfCBudW1iZXI+IHwgc3RyaW5nKSA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcGFyYW0gPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtLmZvckVhY2goKGtleTogc3RyaW5nIHwgbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlT3B0aW9uYWwgPSAoaW5jbHVkZU9wdGlvbmFsKSA/IGluY2x1ZGVPcHRpb25hbFtrZXldIDogbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlT3B0aW9uYWwgPSBpbmNsdWRlT3B0aW9uYWxbcGFyYW1dO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RDb25maWcudmFsdWVUb1Nob3dCeVBhcmFtICYmIHR5cGVvZiBpbmNsdWRlT3B0aW9uYWwgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSArPSAodGhpcy5zZWxlY3RDb25maWcud2l0aFBhcmFtU3ltYm9sIHx8ICcnKSArIGluY2x1ZGVPcHRpb25hbFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNob3dpbmdWYWx1ZSA9IGluY2x1ZGU7XHJcbiAgICAgICAgdGhpcy5ibG9ja1JlY2FsbERlZmF1bHRWYWx1ZVNldHRlciA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEJsb2NrIGFub3RoZXIgZXZlbnRzLlxyXG4gICAqIEBwYXJhbSBldmVudCAtIEVsZW1lbnQgY2xpY2sgZXZlbnQuXHJcbiAgICovXHJcbiAgICBwcmV2ZW50RGVmYXVsdChldmVudDogYW55KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdENvbmZpZy5tdWx0aXBsZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcclxuICAgIH1cclxuXHJcbiAgICByZWdpc3RlclBhbmVsU2Nyb2xsRXZlbnQoZWxlbWVudDogTWF0U2VsZWN0KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0Q29uZmlnLnBhZ2luYXRlT25TY3JvbGwgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHBhbmVsID0gZWxlbWVudC5wYW5lbC5uYXRpdmVFbGVtZW50O1xyXG4gICAgICAgIHBhbmVsLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIChldmVudDogYW55KSA9PiB0aGlzLmxvYWREYXRhT25TY3JvbGwoZXZlbnQpKTtcclxuICAgIH1cclxuXHJcbiAgICBsb2FkRGF0YU9uU2Nyb2xsKGV2ZW50OiBhbnkpIHtcclxuICAgICAgICBjb25zdCBwb3MgPSAoZXZlbnQudGFyZ2V0LnNjcm9sbFRvcCB8fCBldmVudC50YXJnZXQuc2Nyb2xsVG9wKSArIGV2ZW50LnRhcmdldC5vZmZzZXRIZWlnaHQ7XHJcbiAgICAgICAgY29uc3QgbWF4ID0gZXZlbnQudGFyZ2V0LnNjcm9sbEhlaWdodDtcclxuICAgICAgICBpZiAoKHBvcyArIDEpID49IG1heCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5wYWdpbmF0aW9uRGF0YS5jdXJyZW50ID09PSB0aGlzLnBhZ2luYXRpb25EYXRhLmxhc3QgfHwgdGhpcy5zZWxlY3RDb25maWcuYmxvY2tQYWdpbmF0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5nZXREYXRhKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGZvY3VzU2VhcmNoSW5wdXQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0Q29uZmlnLnNlYXJjaCAmJiB0aGlzLnNlYXJjaElucHV0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpbnB1dEZvY3VzT3V0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaXNOZWVkZWRGb3JSZWNhbGwgPSAhIXRoaXMuc2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZTtcclxuICAgICAgICB0aGlzLnNlYXJjaElucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcclxuICAgICAgICB0aGlzLnNob3dQbGFjZWhvbGRlciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jbGVhclRpbWVvdXRGb3JTZWFyY2goKTtcclxuICAgIH1cclxuXHJcbiAgICByZXNldFZhbHVlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQobnVsbCk7XHJcbiAgICAgICAgdGhpcy5uZ0NvbnRyb2wucmVzZXQobnVsbCk7XHJcbiAgICAgICAgdGhpcy5pbnB1dEZvY3VzT3V0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RGF0YVdpdGhTZWFyY2godmFsdWU6IGFueSwgZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY2xlYXJUaW1lb3V0Rm9yU2VhcmNoKCk7XHJcbiAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA+PSAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoVGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdldERhdGEodmFsdWUsIHRydWUpXHJcbiAgICAgICAgICAgIH0sIDgwMCk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS5sZW5ndGggPD0gMSAmJiBldmVudC5rZXlDb2RlID09PSA4KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RGF0YSh2YWx1ZSwgdHJ1ZSlcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY2xlYXJUaW1lb3V0Rm9yU2VhcmNoKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnNlYXJjaFRpbWVvdXRJZCkge1xyXG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5zZWFyY2hUaW1lb3V0SWQpO1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaFRpbWVvdXRJZCA9IDA7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9wZW5TZWxlY3Rpb24oKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0Q29uZmlnLmRpc2FibGVkIHx8IHRoaXMubmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNob3dQbGFjZWhvbGRlciA/IHRoaXMubWF0U2VsZWN0Lm9wZW4oKSA6IHRoaXMuY2xvc2VQYW5lbEFuZFVuc2V0Rm9jdXMoKTtcclxuICAgICAgICB0aGlzLnNob3dQbGFjZWhvbGRlciA9ICF0aGlzLnNob3dQbGFjZWhvbGRlcjtcclxuICAgICAgICBpZiAoIXRoaXMuc2hvd1BsYWNlaG9sZGVyKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVDYWxsRGF0YSgpXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNsb3NlUGFuZWxBbmRVbnNldEZvY3VzKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMubWF0U2VsZWN0LmNsb3NlKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoSW5wdXQpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hJbnB1dC5uYXRpdmVFbGVtZW50LmJsdXIoKVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvcGVuZWRDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgICAgIGlmIChldmVudCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5pc05lZWRlZEZvclJlY2FsbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZUNhbGxEYXRhKCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCF0aGlzLnNlbGVjdENvbmZpZy5zZWFyY2gpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucGVuZGluZyA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlQ2FsbERhdGEoKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zaG93UGxhY2Vob2xkZXIgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJlQ2FsbERhdGEoKTogdm9pZCB7XHJcbiAgICAgICAgLy8gVE9ETyByZWZhY3RvciB0aGlzIHBhcnRcclxuICAgICAgICBpZiAoIXRoaXMuaXNOZWVkZWRGb3JSZWNhbGwpIHsgcmV0dXJuOyB9XHJcbiAgICAgICAgdGhpcy5kYXRhID0gW107XHJcbiAgICAgICAgdGhpcy5wZW5kaW5nID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnBhZ2luYXRpb25EYXRhID0ge1xyXG4gICAgICAgICAgICBjdXJyZW50OiAxLFxyXG4gICAgICAgICAgICBsYXN0OiAwXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmFjY2Vzc1RvTmV4dFJlcXVlc3QgPSB0cnVlO1xyXG4gICAgICAgIGlmICgodHlwZW9mIHRoaXMuc2VsZWN0Q29uZmlnLnBhZ2luYXRlKSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICB0aGlzLmdldERhdGEoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnBlbmRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5kYXRhID0gdGhpcy5zZWxlY3RDb25maWcucGFnaW5hdGU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaXNOZWVkZWRGb3JSZWNhbGwgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBlbWl0U2VsZWN0aW9uQ2hhbmdlQW5kQ2xvc2UoZXZlbnQ6IGFueSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQoZXZlbnQudmFsdWUpO1xyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdENvbmZpZy5tdWx0aXBsZSkge1xyXG4gICAgICAgICAgICBpZiAoIWV2ZW50LnZhbHVlPy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubmdDb250cm9sLmNvbnRyb2wucmVzZXQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubWF0U2VsZWN0LmNsb3NlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWNvbkNsaWNrKG1hdFNlbGVjdDogTWF0U2VsZWN0LCBzZWFyY2hJbnB1dD86IEVsZW1lbnRSZWYpOiB2b2lkIHtcclxuICAgICAgICBtYXRTZWxlY3Qub3BlbigpO1xyXG4gICAgICAgIHNlYXJjaElucHV0Py5uYXRpdmVFbGVtZW50Py5mb2N1cygpO1xyXG4gICAgfVxyXG5cclxuICAgIGN1c3RvbUVycm9yU3RhdGVNYXRjaGVyID0ge1xyXG4gICAgICAgIGlzRXJyb3JTdGF0ZTogKGNvbnRyb2w6IGFueSwgZm9ybTogYW55KTogYm9vbGVhbiA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiAhIShjb250cm9sICYmIGNvbnRyb2wuaW52YWxpZCAmJiB0aGlzLnN1Ym1pdFZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJuZXctbWF0LWF1dG9jb21wbGV0ZVwiIGlkPVwibWF0X2F1dG9jb21wbGV0ZVwiXHJcbiAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAnbWF0LXNlbGVjdC13aXRob3V0X2ljb24nOiAhc2VsZWN0Q29uZmlnLmljb25VcmwgJiYgIXNlbGVjdENvbmZpZy5hY3RpdmVTdGF0ZUljb25VcmwsXHJcbiAgICAgICAgICAgICdtYXQtc2VsZWN0LXdpdGgtc2VhcmNoJzogc2VsZWN0Q29uZmlnLnNlYXJjaCxcclxuICAgICAgICAgICAgJ3dpdGhvdXQtbGFiZWwnOiBzZWxlY3RDb25maWcuaGlkZUxhYmVsLFxyXG4gICAgICAgICAgICAnaW52YWxpZF9maWVsZCc6IG5nQ29udHJvbC5jb250cm9sLmVycm9ycyAmJiBzdWJtaXRWYWx1ZSxcclxuICAgICAgICAgICAgJ3JlYWRvbmx5LWZpZWxkJzogc2VsZWN0Q29uZmlnLnJlYWRPbmx5IHx8IG5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkXHJcbiAgICAgICAgIH1cIlxyXG4gICAgIFttYXRUb29sdGlwXT1cIihzZWxlY3RDb25maWcuaG92ZXIgJiYgIW5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkID8gKChzZWxlY3RDb25maWcuaG92ZXIgfHwgJycpIHwgdHJhbnNsYXRlKSA6ICcnKVwiXHJcbiAgICAgW21hdFRvb2x0aXBDbGFzc109XCInbWF0LW1kYy10b29sdGlwIGJpZy10ZC1tYXQtdG9vbHRpcCdcIlxyXG4gICAgIFttYXRUb29sdGlwUG9zaXRpb25dPVwiJ2Fib3ZlJ1wiXHJcbiAgICAgKm5nSWY9XCJzZWxlY3RDb25maWcgJiYgbmdDb250cm9sXCI+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJ3LTEwMFwiICpuZ0lmPVwiIXNlbGVjdENvbmZpZy5oaWRlTGFiZWxcIj5cclxuICAgIDxtYXQtbGFiZWwgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgJ3JlYWRvbmx5LWNvbG9yJyA6IHNlbGVjdENvbmZpZy5yZWFkT25seSB8fCBuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZCxcclxuICAgICAgICAgICdpbnZhbGlkLWxhYmVsLWNvbG9yJzogISEobmdDb250cm9sLmNvbnRyb2wuZXJyb3JzICYmIHN1Ym1pdFZhbHVlKVxyXG4gICAgICAgIH1cIj5cclxuICAgICAge3sgc2VsZWN0Q29uZmlnLmxhYmVsIHwgdHJhbnNsYXRlIH19XHJcbiAgICA8L21hdC1sYWJlbD5cclxuICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0Q29uZmlnLnJlcXVpcmVkXCIgY2xhc3M9XCJyZXF1aXJlZC1pbnB1dFwiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7J3JlYWRvbmx5LWNvbG9yJyA6IG5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkfVwiPio8L3NwYW4+XHJcbiAgPC9kaXY+XHJcblxyXG5cclxuICA8IS0tIFNlYXJjaCBJbnB1dCAtLT5cclxuICA8ZGl2IGNsYXNzPVwic2VhcmNoLWlucHV0IHctMTAwXCJcclxuICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7JGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxyXG4gICAgICAgW25nQ2xhc3NdPVwieyBoaWRlX2lucHV0X3BsYWNlaG9sZGVyOiBzaG93UGxhY2Vob2xkZXIgfHwgbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQgfVwiXHJcbiAgICAgICAqbmdJZj1cInNlbGVjdENvbmZpZy5zZWFyY2hcIlxyXG4gID5cclxuICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgIGlkPVwic2VhcmNoSW5wdXRcIlxyXG4gICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICBbbmdDbGFzc109XCJ7J3ByLTI1JzogIXNlbGVjdENvbmZpZy5pY29uVXJsfVwiXHJcbiAgICAgICAgICAgI3NlYXJjaElucHV0XHJcbiAgICAgICAgICAgW2Rpc2FibGVkXT1cIm5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkIHx8IHNlbGVjdENvbmZpZy5ob3ZlclwiXHJcbiAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIihuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZCB8fCBzZWxlY3RDb25maWcuaG92ZXIpID8gJycgOiAnU2VhcmNoJ1wiXHJcbiAgICAgICAgICAgKGZvY3Vzb3V0KT1cImlucHV0Rm9jdXNPdXQoKVwiXHJcbiAgICAgICAgICAgKGZvY3VzKT1cIm9wZW5TZWxlY3Rpb24oKVwiXHJcbiAgICAgICAgICAgKGtleWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgICAoa2V5dXApPVwiZ2V0RGF0YVdpdGhTZWFyY2goc2VhcmNoSW5wdXQudmFsdWUsJGV2ZW50KVwiPlxyXG5cclxuICAgIDwhLS0gU2VhcmNoIEljb24gLS0+XHJcbiAgICA8c3BhbiBjbGFzcz1cInNlYXJjaC1pY29uXCI+XHJcbiAgICAgICAgICAgIDxpLXRlY2gtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgICBjbGFzcz1cIm1yLTEwXCJcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJzZWxlY3RDb25maWcucmVhZE9ubHkgfHwgbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQgPyAncmVhZG9ubHktY29sb3InIDogJ2RlZmF1bHQtZm9ybS1pY29uLWNvbG9yJ1wiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJzZWxlY3RDb25maWcuaWNvblByZWZpeCAmJiAhc2hvd1BsYWNlaG9sZGVyXCJcclxuICAgICAgICAgICAgICBbaWNvbk5hbWVdPVwic2VsZWN0Q29uZmlnLmljb25QcmVmaXggfHwgJydcIlxyXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzZWxlY3RDb25maWcucmVhZE9ubHkgfHwgZmFsc2VcIlxyXG4gICAgICAgICAgICAgIG1hdFByZWZpeFxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwvaS10ZWNoLWljb24tYnV0dG9uPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBQbGFjZWhvbGRlci9TZWxlY3RlZCBWYWx1ZSBEaXNwbGF5IC0tPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93UGxhY2Vob2xkZXIgJiYgc2VsZWN0Q29uZmlnLnNlYXJjaFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImN1c3RvbS1wbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICpuZ0lmPVwiKCFuZ0NvbnRyb2w/LnZhbHVlICYmICFuZ0NvbnRyb2w/LnZhbHVlPy5sZW5ndGgpIHx8XHJcbiAgICAgICAgICAgICAgICAgKHNlbGVjdENvbmZpZy5tdWx0aXBsZSAmJiBuZ0NvbnRyb2w/LnZhbHVlICYmICFuZ0NvbnRyb2w/LnZhbHVlPy5sZW5ndGgpXCJcclxuICAgICAgICAgW25nQ2xhc3NdPVwic2VsZWN0Q29uZmlnLnJlYWRPbmx5IHx8IG5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkID8gJ3JlYWRvbmx5LWNvbG9yJyA6ICdkZWZhdWx0LWZvcm0taWNvbi1jb2xvcidcIlxyXG4gICAgPlxyXG4gICAgICB7eyAoKHNlbGVjdENvbmZpZy5wbGFjZWhvbGRlciB8fCAnJykgfCB0cmFuc2xhdGUpIH19XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tcGxhY2Vob2xkZXIgY3VzdG9tLXZhbHVlIGVsbGlwc2lzXCJcclxuICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgJ3ByLTQyJzogc2VsZWN0Q29uZmlnLmljb25VcmwsXHJcbiAgICAgICAgICAgICAgICAncmVhZG9ubHktY29sb3InOiBzZWxlY3RDb25maWcucmVhZE9ubHkgfHwgbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQsXHJcbiAgICAgICAgICAgICAgICAnZGVmYXVsdC1mb3JtLWljb24tY29sb3InOiAhKHNlbGVjdENvbmZpZy5yZWFkT25seSB8fCBuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZClcclxuICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAqbmdJZj1cIm5nQ29udHJvbD8udmFsdWVcIlxyXG4gICAgPlxyXG4gICAgICB7eyBzZWxlY3RDb25maWc/Lm11bHRpcGxlID8gKG5nQ29udHJvbC52YWx1ZSB8IGFycmF5VG9TdHJpbmcpIDogc2hvd2luZ1ZhbHVlIH19XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPCEtLSBDdXN0b20gSWNvbiAtLT5cclxuICA8aW1nIGNsYXNzPVwibGVmdF9pY29uX25ldyBwb2ludGVyXCJcclxuICAgICAgIChjbGljayk9XCJpY29uQ2xpY2sobWF0U2VsZWN0LCBzZWFyY2hJbnB1dClcIlxyXG4gICAgICAgKm5nSWY9XCIhc2VsZWN0Q29uZmlnLm1hdEljb25OYW1lICYmIChzZWxlY3RDb25maWcuaWNvblVybCB8fCBzZWxlY3RDb25maWcuYWN0aXZlU3RhdGVJY29uVXJsKVwiXHJcbiAgICAgICBbc3JjXT1cIidhc3NldHMvaW1hZ2VzL2ljb25zL2dsb2JhbC8nICsgKG5nQ29udHJvbC5jb250cm9sPy52YWx1ZSAmJiBzZWxlY3RDb25maWc/LmFjdGl2ZVN0YXRlSWNvblVybCA/IHNlbGVjdENvbmZpZy5hY3RpdmVTdGF0ZUljb25VcmwgOiBzZWxlY3RDb25maWcuaWNvblVybClcIj5cclxuXHJcbiAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJ3LTEwMFwiIChjbGljayk9XCJzZWxlY3RDb25maWc/LnNlYXJjaCA/IGZvY3VzU2VhcmNoSW5wdXQoKSA6IG51bGxcIj5cclxuICAgIDwhLS0gTWF0ZXJpYWwgU2VsZWN0IC0tPlxyXG4gICAgPG1hdC1zZWxlY3QgI21hdFNlbGVjdD1cIm1hdFNlbGVjdFwiXHJcbiAgICAgICAgICAgICAgICBbcGFuZWxDbGFzc109XCInYXV0b2NvbXBsZXRlLXRyYW5zZm9ybS1wYW5lbC1sb2NhdGlvbidcIlxyXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1wbGFjZWhvbGRlcl09XCIoc2VsZWN0Q29uZmlnLnBsYWNlaG9sZGVyIHx8ICcnKSB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICBbYXJpYS1sYWJlbF09XCJzZWxlY3RDb25maWcubGFiZWwgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgW2lkXT1cInNlbGVjdENvbmZpZy5maWx0cmF0aW9uS2V5IHx8ICcnXCJcclxuICAgICAgICAgICAgICAgIChvcGVuZWQpPVwicmVnaXN0ZXJQYW5lbFNjcm9sbEV2ZW50KG1hdFNlbGVjdClcIlxyXG4gICAgICAgICAgICAgICAgKG9wZW5lZENoYW5nZSk9XCJvcGVuZWRDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwibmdDb250cm9sLmNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgW211bHRpcGxlXT1cInNlbGVjdENvbmZpZy5tdWx0aXBsZVwiXHJcbiAgICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cImVtaXRTZWxlY3Rpb25DaGFuZ2VBbmRDbG9zZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIFtlcnJvclN0YXRlTWF0Y2hlcl09XCJjdXN0b21FcnJvclN0YXRlTWF0Y2hlclwiXHJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiKHNlbGVjdENvbmZpZy5wbGFjZWhvbGRlciB8fCAnJykgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkXCJcclxuICAgID5cclxuXHJcbiAgICAgIDwhLS0gTG9hZGluZyBTdGF0ZSAtLT5cclxuICAgICAgPG1hdC1vcHRpb24gKm5nSWY9XCJwZW5kaW5nXCIgY2xhc3M9XCJvcHRpb25fbG9hZGluZyByZWxhdGl2ZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZXF1ZXN0X2xvYWRpbmdcIj5cclxuICAgICAgICAgIDxpbWcgbmdTcmM9XCIuL2xvYWRlci5zdmdcIiBhbHQ9XCJcIiBoZWlnaHQ9XCIyMDBcIiB3aWR0aD1cIjIwMFwiLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9tYXQtb3B0aW9uPlxyXG5cclxuICAgICAgPCEtLSBPcHRpb25zIC0tPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YT8ubGVuZ3RoICYmICFwZW5kaW5nXCI+XHJcbiAgICAgICAgPCEtLSBBZGQgTmV3IE9wdGlvbiAtLT5cclxuICAgICAgICA8bWF0LW9wdGlvbiAqbmdJZj1cInNlbGVjdENvbmZpZy5hY3Rpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBvaW50ZXIgYWRkX25ld1wiXHJcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWRcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xvc2VQYW5lbEFuZFVuc2V0Rm9jdXMoKTthZGROZXdJdGVtRXZlbnQoKVwiPlxyXG4gICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibmdDb250cm9sLmNvbnRyb2wucmVzZXQobnVsbCk7bWF0U2VsZWN0Ll9vbkJsdXIoKTtjbG9zZVBhbmVsQW5kVW5zZXRGb2N1cygpO2FkZE5ld0l0ZW1FdmVudCgpXCI+LS0+XHJcbiAgICAgICAgICA8aS10ZWNoLWJ1dHRvblxyXG4gICAgICAgICAgICBbdHlwZV09XCJCdXR0b25UeXBlLk9VVExJTkVcIlxyXG4gICAgICAgICAgICBbZm9udEljb25dPVwiJ2FkZCdcIlxyXG4gICAgICAgICAgICBbdGV4dF09XCIoJ2Ryb3Bkb3duX2FkZF9pdGVtJyB8IHRyYW5zbGF0ZSA6IHtJTlBVVF9OQU1FOiAoc2VsZWN0Q29uZmlnLmxhYmVsIHwgdHJhbnNsYXRlKX0pIFwiXHJcbiAgICAgICAgICAgIFtjdXN0b21DbGFzc109XCIndy0xMDAgbWF0LWF1dG9jb21wbGV0ZS1zZWxlY3QtYnV0dG9uJ1wiPlxyXG4gICAgICAgICAgPC9pLXRlY2gtYnV0dG9uPlxyXG4gICAgICAgIDwvbWF0LW9wdGlvbj5cclxuXHJcbiAgICAgICAgPCEtLSBSZWd1bGFyIE9wdGlvbnMgLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzZWxlY3RDb25maWc/LmNoYW5nZVRleHQgJiYgZGF0YS5sZW5ndGhcIj5cclxuICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIGRhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInNlbGVjdENvbmZpZy52YWx1ZUJ5S2V5IHwgZ2V0VmFsdWVCeUtleUZyb21PYmplY3QgOiBpdGVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChtb3VzZXVwKT1cIm9wdGlvbkNsaWNrKGl0ZW0pXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwicHJldmVudERlZmF1bHQoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICB7eyAoKHNlbGVjdENvbmZpZy52YWx1ZVRvU2hvd0J5S2V5IHwgZ2V0VmFsdWVCeUtleUZyb21PYmplY3QgOiBpdGVtIDogc2VsZWN0Q29uZmlnLnZhbHVlVG9TaG93QnlQYXJhbSA6IHNlbGVjdENvbmZpZy53aXRoUGFyYW1TeW1ib2wpIHx8ICcnKSB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8IS0tIEN1c3RvbSBUZXh0IE9wdGlvbnMgLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdENvbmZpZz8uY2hhbmdlVGV4dCAmJiBkYXRhLmxlbmd0aFwiPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgZGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwic2VsZWN0Q29uZmlnLnZhbHVlQnlLZXkgfCBnZXRWYWx1ZUJ5S2V5RnJvbU9iamVjdCA6IGl0ZW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKG1vdXNldXApPVwib3B0aW9uQ2xpY2soaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJwcmV2ZW50RGVmYXVsdCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzZWxlY3RDb25maWc/LmNoYW5nZVRleHRbaXRlbV0uZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAge3sgc2VsZWN0Q29uZmlnPy5jaGFuZ2VUZXh0W2l0ZW1dLnRleHQgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8IS0tIEVtcHR5IFN0YXRlIC0tPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXBlbmRpbmcgJiYgIWRhdGEubGVuZ3RoXCI+XHJcbiAgICAgICAgPG1hdC1vcHRpb24gZGlzYWJsZWQgY2xhc3M9XCJlbXB0eV9zZWxlY3Rpb25fc3RhdGVcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25zX2FuZF90aWxlIGFkZF9uZXcgZmxleF9jb2x1bW4gdy0xMDAgZmxleF9jZW50ZXJfYWxpZ25fY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxzcGFuPnt7ICdkcm9wZG93bl9ub19pdGVtcycgfCB0cmFuc2xhdGUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0xMFwiPlxyXG4gICAgICAgICAgICAgIDxpLXRlY2gtYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInNlbGVjdENvbmZpZz8uYWN0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICBbdHlwZV09XCJCdXR0b25UeXBlLk9VVExJTkVcIlxyXG4gICAgICAgICAgICAgICAgKGJ1dHRvbkNsaWNrKT1cImNsb3NlUGFuZWxBbmRVbnNldEZvY3VzKCk7YWRkTmV3SXRlbUV2ZW50KClcIlxyXG4gICAgICAgICAgICAgICAgW2N1c3RvbUNsYXNzXT1cIidtYXQtYXV0b2NvbXBsZXRlLXNlbGVjdC1idXR0b24nXCJcclxuICAgICAgICAgICAgICAgIFtmb250SWNvbl09XCInYWRkJ1wiXHJcbiAgICAgICAgICAgICAgICBbdGV4dF09XCIoJ2Ryb3Bkb3duX2FkZF9pdGVtJyB8IHRyYW5zbGF0ZSA6IHtJTlBVVF9OQU1FOiAoc2VsZWN0Q29uZmlnLmxhYmVsIHwgdHJhbnNsYXRlKX0pIFwiPlxyXG4gICAgICAgICAgICAgIDwvaS10ZWNoLWJ1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgPG1hdC1pY29uICpuZ0lmPVwic2VsZWN0Q29uZmlnLmljb25QcmVmaXhcIlxyXG4gICAgICAgICAgICAgIG1hdFByZWZpeFxyXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAncmVhZG9ubHktY29sb3InIDogIXNlbGVjdENvbmZpZ1snaWNvblByZWZpeENvbG9yJ10gJiYgKHNlbGVjdENvbmZpZy5yZWFkT25seSB8fCBuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZCksXHJcbiAgICAgICAgICAgICAgICAgICAgJ2RlZmF1bHQtZm9ybS1pY29uLWNvbG9yJyA6ICFzZWxlY3RDb25maWdbJ2ljb25QcmVmaXhDb2xvciddICYmICEoc2VsZWN0Q29uZmlnLnJlYWRPbmx5IHx8IG5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIigoc2VsZWN0Q29uZmlnPy5bJ2ljb25QcmVmaXhUb29sdGlwJ10gfHwgJycpIHwgdHJhbnNsYXRlKVwiXHJcbiAgICA+e3sgc2VsZWN0Q29uZmlnLmljb25QcmVmaXggfX1cclxuICAgIDwvbWF0LWljb24+XHJcblxyXG4gICAgPG1hdC1pY29uICpuZ0lmPVwic2VsZWN0Q29uZmlnWydpY29uUHJlZml4U3ZnJ11cIlxyXG4gICAgICAgICAgICAgIG1hdFByZWZpeFxyXG4gICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIigoc2VsZWN0Q29uZmlnPy5bJ2ljb25QcmVmaXhUb29sdGlwJ10gfHwgJycpIHwgdHJhbnNsYXRlKVwiXHJcbiAgICAgICAgICAgICAgW3N2Z0ljb25dPVwic2VsZWN0Q29uZmlnWydpY29uUHJlZml4U3ZnJ10gfHwgJydcIlxyXG4gICAgPjwvbWF0LWljb24+XHJcblxyXG4gICAgPGktdGVjaC1pY29uLWJ1dHRvblxyXG4gICAgICAqbmdJZj1cInNlbGVjdENvbmZpZy5zZWFyY2ggJiYgc2VsZWN0Q29uZmlnLmNsZWFyYWJsZSAmJiAhbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQgJiYgISFuZ0NvbnRyb2wuY29udHJvbC52YWx1ZVwiXHJcbiAgICAgIGljb25OYW1lPVwiY2FuY2VsXCJcclxuICAgICAgbWF0U3VmZml4XHJcbiAgICAgIFtkaXNhYmxlZF09XCJzZWxlY3RDb25maWcucmVhZE9ubHkgfHwgZmFsc2VcIlxyXG4gICAgICBbbmdDbGFzc109XCJzZWxlY3RDb25maWcucmVhZE9ubHkgfHwgbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQgPyAncmVhZG9ubHktY29sb3InIDogJ2RlZmF1bHQtZm9ybS1pY29uLWNvbG9yJ1wiXHJcbiAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7JGV2ZW50LnByZXZlbnREZWZhdWx0KCk7bmdDb250cm9sLmNvbnRyb2wucmVzZXQobnVsbCk7bWF0U2VsZWN0Ll9vbkJsdXIoKTtjbG9zZVBhbmVsQW5kVW5zZXRGb2N1cygpXCJcclxuICAgID5cclxuICAgIDwvaS10ZWNoLWljb24tYnV0dG9uPlxyXG4gICAgPG1hdC1pY29uXHJcbiAgICAgIG1hdFN1ZmZpeFxyXG4gICAgICBjbGFzcz1cInNlbGVjdC1hcnJvd1wiXHJcbiAgICAgIFtjbGFzcy5vcGVuXT1cIm1hdFNlbGVjdC5wYW5lbE9wZW5cIlxyXG4gICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICdyZWFkb25seS1jb2xvcic6IHNlbGVjdENvbmZpZy5yZWFkT25seSB8fCBuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZCxcclxuICAgICAgICAgICAgJ2RlZmF1bHQtZm9ybS1pY29uLWNvbG9yJzogIShzZWxlY3RDb25maWcucmVhZE9ubHkgfHwgbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQpLFxyXG4gICAgICAgICAgICAnbXQtOCc6ICEhbmdDb250cm9sLmNvbnRyb2wudmFsdWUgJiYgc2VsZWN0Q29uZmlnLmNsZWFyYWJsZVxyXG4gICAgICAgICB9XCJcclxuICAgID5cclxuICAgICAga2V5Ym9hcmRfYXJyb3dfZG93blxyXG4gICAgPC9tYXQtaWNvbj5cclxuICAgIDwhLS0gRXJyb3IgTWVzc2FnZSAtLT5cclxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCIhIShuZ0NvbnRyb2wuY29udHJvbC5lcnJvcnMgJiYgc3VibWl0VmFsdWUpXCI+XHJcbiAgICAgIHt7IG5nQ29udHJvbC5jb250cm9sIHwgZ2VuZXJhdGVFcnJvck1lc3NhZ2VzIDogc2VsZWN0Q29uZmlnLmxhYmVsIDogc2VsZWN0Q29uZmlnLmRlZmF1bHRQYXR0ZXJuS2V5IH19XHJcbiAgICA8L21hdC1lcnJvcj5cclxuICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuICA8IS0tIFJlc2V0IEJ1dHRvbiAtLT5cclxuICA8aS10ZWNoLWNsZWFyLXZhbHVlICpuZ0lmPVwic2VsZWN0Q29uZmlnLnJlc2V0XCIgKHJlc2V0KT1cInJlc2V0VmFsdWUoKVwiPjwvaS10ZWNoLWNsZWFyLXZhbHVlPlxyXG48L2Rpdj5cclxuIl19
@@ -9,20 +9,65 @@ import { NgxMaskDirective, NgxMaskPipe } from 'ngx-mask';
9
9
  import * as i0 from "@angular/core";
10
10
  import * as i1 from "@angular/material/icon";
11
11
  import * as i2 from "@ngx-translate/core";
12
+ /**
13
+ * A reusable button component with Material Design styling and custom functionality.
14
+ */
12
15
  export class ButtonComponent {
13
16
  constructor() {
17
+ /**
18
+ * The text displayed inside the button.
19
+ */
14
20
  this.text = '';
21
+ /**
22
+ * Data attribute used for Cypress or other testing frameworks.
23
+ */
15
24
  this.data_cy = '';
25
+ /**
26
+ * Font icon class for displaying an icon (e.g., Material Icons).
27
+ */
16
28
  this.fontIcon = '';
29
+ /**
30
+ * SVG icon name for displaying an SVG icon.
31
+ */
17
32
  this.svgIcon = '';
33
+ /**
34
+ * Defines the type of button (e.g., `FILLED`, `OUTLINED`).
35
+ */
18
36
  this.type = ButtonType.FILLED;
37
+ /**
38
+ * Additional custom classes to style the button.
39
+ */
40
+ this.customClass = '';
41
+ /**
42
+ * If true, the button acts as a submit button.
43
+ */
19
44
  this.submit = false;
45
+ /**
46
+ * If true, the button is disabled and cannot be clicked.
47
+ */
20
48
  this.disabled = false;
49
+ /**
50
+ * Indicates whether the button is currently activated.
51
+ */
21
52
  this.activated = false;
53
+ /**
54
+ * The color of the button (e.g., `primary`, `warn`).
55
+ */
22
56
  this.color = 'primary';
57
+ /**
58
+ * Emits an event when the button is clicked.
59
+ */
23
60
  this.buttonClick = new EventEmitter();
61
+ /**
62
+ * Enum reference for `ButtonType` to use in templates.
63
+ */
24
64
  this.ButtonType = ButtonType;
25
65
  }
66
+ /**
67
+ * Handles the button click event.
68
+ *
69
+ * @param event - The mouse event triggered by clicking the button.
70
+ */
26
71
  onClick(event) {
27
72
  if (!this.disabled && !this.submit) {
28
73
  this.buttonClick.emit();
@@ -74,4 +119,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
74
119
  }], buttonClick: [{
75
120
  type: Output
76
121
  }] } });
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9idXR0b24vYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9idXR0b24vYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDdEUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDckYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2hFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7QUFzQnhELE1BQU0sT0FBTyxlQUFlO0lBYzFCO1FBYlMsU0FBSSxHQUFXLEVBQUUsQ0FBQztRQUNsQixZQUFPLEdBQVcsRUFBRSxDQUFDO1FBQ3JCLGFBQVEsR0FBVyxFQUFFLENBQUM7UUFDdEIsWUFBTyxHQUFXLEVBQUUsQ0FBQztRQUNyQixTQUFJLEdBQWUsVUFBVSxDQUFDLE1BQU0sQ0FBQztRQUVyQyxXQUFNLEdBQVksS0FBSyxDQUFDO1FBQ3hCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixVQUFLLEdBQXVCLFNBQVMsQ0FBQztRQUNyQyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDOUIsZUFBVSxHQUFHLFVBQVUsQ0FBQztJQUU1QixDQUFDO0lBRWhCLE9BQU8sQ0FBQyxLQUFpQjtRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDOytHQXBCVSxlQUFlO21HQUFmLGVBQWUsdVRBUGY7WUFDVCxnQkFBZ0I7WUFDaEIsV0FBVztZQUNYLGFBQWE7WUFDYixnQkFBZ0I7U0FDakIsMEJDM0JILHlpRUFnREEsMEREbkNJLFNBQVMsaUxBQ1QsT0FBTyxvRkFDUCxrQkFBa0IsK0tBQ2xCLElBQUksNEZBQ0osYUFBYSxtTEFDYixlQUFlOzs0RkFXTixlQUFlO2tCQXBCM0IsU0FBUzsrQkFDRSxlQUFlLGNBQ2IsSUFBSSxXQUNQO3dCQUNQLFNBQVM7d0JBQ1QsT0FBTzt3QkFDUCxrQkFBa0I7d0JBQ2xCLElBQUk7d0JBQ0osYUFBYTt3QkFDYixlQUFlO3FCQUNoQixhQUdVO3dCQUNULGdCQUFnQjt3QkFDaEIsV0FBVzt3QkFDWCxhQUFhO3dCQUNiLGdCQUFnQjtxQkFDakI7d0RBR1EsSUFBSTtzQkFBWixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7TWF0QnV0dG9ufSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uXCI7XHJcbmltcG9ydCB7TmdDbGFzcywgTmdJZn0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge01hdFByb2dyZXNzU3Bpbm5lcn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXJcIjtcclxuaW1wb3J0IHtNYXRJY29uTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvblwiO1xyXG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlUGlwZSwgVHJhbnNsYXRlU2VydmljZX0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcclxuaW1wb3J0IHsgQnV0dG9uVHlwZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYnV0dG9uLXR5cGVzLmVudW0nO1xyXG5pbXBvcnQge05neE1hc2tEaXJlY3RpdmUsIE5neE1hc2tQaXBlIH0gZnJvbSAnbmd4LW1hc2snO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpLXRlY2gtYnV0dG9uJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE1hdEJ1dHRvbixcclxuICAgIE5nQ2xhc3MsXHJcbiAgICBNYXRQcm9ncmVzc1NwaW5uZXIsXHJcbiAgICBOZ0lmLFxyXG4gICAgTWF0SWNvbk1vZHVsZSxcclxuICAgIFRyYW5zbGF0ZU1vZHVsZVxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2J1dHRvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2J1dHRvbi5jb21wb25lbnQuY3NzJyxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIE5neE1hc2tEaXJlY3RpdmUsXHJcbiAgICBOZ3hNYXNrUGlwZSxcclxuICAgIFRyYW5zbGF0ZVBpcGUsXHJcbiAgICBUcmFuc2xhdGVTZXJ2aWNlXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQnV0dG9uQ29tcG9uZW50IHtcclxuICBASW5wdXQoKSB0ZXh0OiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKSBkYXRhX2N5OiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKSBmb250SWNvbjogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgc3ZnSWNvbjogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgdHlwZTogQnV0dG9uVHlwZSA9IEJ1dHRvblR5cGUuRklMTEVEO1xyXG4gIEBJbnB1dCgpIGN1c3RvbUNsYXNzITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHN1Ym1pdDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgYWN0aXZhdGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgY29sb3I6ICdwcmltYXJ5JyB8ICd3YXJuJyA9ICdwcmltYXJ5JztcclxuICBAT3V0cHV0KCkgYnV0dG9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IEJ1dHRvblR5cGUgPSBCdXR0b25UeXBlO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHt9XHJcblxyXG4gIG9uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5kaXNhYmxlZCAmJiAhdGhpcy5zdWJtaXQpIHtcclxuICAgICAgdGhpcy5idXR0b25DbGljay5lbWl0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxidXR0b24gKm5nSWY9XCJbQnV0dG9uVHlwZS5GSUxMRUQsQnV0dG9uVHlwZS5XQVJOSU5HXS5pbmNsdWRlcyh0eXBlKVwiXHJcbiAgICAgICAgbWF0LWZsYXQtYnV0dG9uXHJcbiAgICAgICAgW2F0dHIuZGF0YS1jeV09XCJkYXRhX2N5XCJcclxuICAgICAgICBbY29sb3JdPVwidHlwZSA9PT0gQnV0dG9uVHlwZS5XQVJOSU5HID8gJ3dhcm4nIDogY29sb3JcIlxyXG4gICAgICAgIFtjbGFzcy5hY3RpdmF0ZWRdPVwiYWN0aXZhdGVkXCJcclxuICAgICAgICBbbmdDbGFzc109XCIoY3VzdG9tQ2xhc3MgfHwgJycpXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgc3VibWl0XCJcclxuICAgICAgICAoY2xpY2spPVwib25DbGljaygkZXZlbnQpXCJcclxuPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwic3VibWl0XCIgY2xhc3M9XCJzcGlubmVyLW92ZXJsYXlcIj5cclxuICAgICAgICAgICAgPG1hdC1zcGlubmVyIGRpYW1ldGVyPVwiMTZcIj48L21hdC1zcGlubmVyPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICA8bWF0LWljb24gKm5nSWY9XCJmb250SWNvbiAmJiAhc3VibWl0XCI+e3tmb250SWNvbn19PC9tYXQtaWNvbj5cclxuICA8bWF0LWljb24gKm5nSWY9XCJzdmdJY29uICYmICFzdWJtaXRcIiBbc3ZnSWNvbl09XCJzdmdJY29uXCI+PC9tYXQtaWNvbj5cclxuICA8c3Bhbj57e3RleHQgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuPC9idXR0b24+XHJcbjxidXR0b24gKm5nSWY9XCJbQnV0dG9uVHlwZS5UT05BTCxCdXR0b25UeXBlLlRFWFRdLmluY2x1ZGVzKHR5cGUpXCJcclxuICAgICAgICBtYXQtYnV0dG9uXHJcbiAgICAgICAgW2F0dHIuZGF0YS1jeV09XCJkYXRhX2N5XCJcclxuICAgICAgICBbbmdDbGFzc109XCIodHlwZSA9PT0gQnV0dG9uVHlwZS5UT05BTCA/ICd0ZXJ0aWFyeSAnIDogJycpICsgKGN1c3RvbUNsYXNzIHx8ICcnKVwiXHJcbiAgICAgICAgW2NsYXNzLmFjdGl2YXRlZF09XCJhY3RpdmF0ZWRcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBzdWJtaXRcIlxyXG4gICAgICAgIChjbGljayk9XCJvbkNsaWNrKCRldmVudClcIlxyXG4+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJzdWJtaXRcIiAgY2xhc3M9XCJzcGlubmVyLW92ZXJsYXlcIj5cclxuICAgICAgICAgICAgPG1hdC1zcGlubmVyIGRpYW1ldGVyPVwiMTZcIj48L21hdC1zcGlubmVyPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICA8bWF0LWljb24gKm5nSWY9XCJmb250SWNvbiAmJiAhc3VibWl0XCI+e3tmb250SWNvbn19PC9tYXQtaWNvbj5cclxuICA8bWF0LWljb24gKm5nSWY9XCJzdmdJY29uICYmICFzdWJtaXRcIiBbc3ZnSWNvbl09XCJzdmdJY29uXCI+PC9tYXQtaWNvbj5cclxuXHJcbiAgPHNwYW4+e3t0ZXh0IHwgdHJhbnNsYXRlfX08L3NwYW4+XHJcbjwvYnV0dG9uPlxyXG48YnV0dG9uICpuZ0lmPVwidHlwZSA9PT0gQnV0dG9uVHlwZS5PVVRMSU5FXCJcclxuICAgICAgICBbY29sb3JdPVwiY29sb3JcIlxyXG4gICAgICAgIG1hdC1zdHJva2VkLWJ1dHRvblxyXG4gICAgICAgIFthdHRyLmRhdGEtY3ldPVwiZGF0YV9jeVwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwiKGN1c3RvbUNsYXNzIHx8ICcnKSBcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBzdWJtaXRcIlxyXG4gICAgICAgIChjbGljayk9XCJvbkNsaWNrKCRldmVudClcIlxyXG4gICAgICAgIFtjbGFzcy5hY3RpdmF0ZWRdPVwiYWN0aXZhdGVkXCJcclxuPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwic3VibWl0XCIgIGNsYXNzPVwic3Bpbm5lci1vdmVybGF5XCI+XHJcbiAgICAgICAgICAgIDxtYXQtc3Bpbm5lciBkaWFtZXRlcj1cIjE2XCI+PC9tYXQtc3Bpbm5lcj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgPG1hdC1pY29uICpuZ0lmPVwiZm9udEljb24gJiYgIXN1Ym1pdFwiID57e2ZvbnRJY29ufX08L21hdC1pY29uPlxyXG4gIDxtYXQtaWNvbiAqbmdJZj1cInN2Z0ljb24gJiYgIXN1Ym1pdFwiIFtzdmdJY29uXT1cInN2Z0ljb25cIj48L21hdC1pY29uPlxyXG4gIDxzcGFuPnt7dGV4dCB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG48L2J1dHRvbj5cclxuIl19
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9idXR0b24vYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9idXR0b24vYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDdEUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDckYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2hFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7QUFFeEQ7O0dBRUc7QUFxQkgsTUFBTSxPQUFPLGVBQWU7SUE2RDFCO1FBNURBOztXQUVHO1FBQ00sU0FBSSxHQUFXLEVBQUUsQ0FBQztRQUUzQjs7V0FFRztRQUNNLFlBQU8sR0FBVyxFQUFFLENBQUM7UUFFOUI7O1dBRUc7UUFDTSxhQUFRLEdBQVcsRUFBRSxDQUFDO1FBRS9COztXQUVHO1FBQ00sWUFBTyxHQUFXLEVBQUUsQ0FBQztRQUU5Qjs7V0FFRztRQUNNLFNBQUksR0FBZSxVQUFVLENBQUMsTUFBTSxDQUFDO1FBRTlDOztXQUVHO1FBQ00sZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFFbEM7O1dBRUc7UUFDTSxXQUFNLEdBQVksS0FBSyxDQUFDO1FBRWpDOztXQUVHO1FBQ00sYUFBUSxHQUFZLEtBQUssQ0FBQztRQUVuQzs7V0FFRztRQUNNLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFFcEM7O1dBRUc7UUFDTSxVQUFLLEdBQXVCLFNBQVMsQ0FBQztRQUUvQzs7V0FFRztRQUNPLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUVqRDs7V0FFRztRQUNnQixlQUFVLEdBQUcsVUFBVSxDQUFDO0lBRTVCLENBQUM7SUFFaEI7Ozs7T0FJRztJQUNILE9BQU8sQ0FBQyxLQUFpQjtRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDOytHQXhFVSxlQUFlO21HQUFmLGVBQWUsdVRBUGY7WUFDVCxnQkFBZ0I7WUFDaEIsV0FBVztZQUNYLGFBQWE7WUFDYixnQkFBZ0I7U0FDakIsMEJDOUJILHlpRUFnREEsMEREaENJLFNBQVMsaUxBQ1QsT0FBTyxvRkFDUCxrQkFBa0IsK0tBQ2xCLElBQUksNEZBQ0osYUFBYSxtTEFDYixlQUFlOzs0RkFXTixlQUFlO2tCQXBCM0IsU0FBUzsrQkFDRSxlQUFlLGNBQ2IsSUFBSSxXQUNQO3dCQUNQLFNBQVM7d0JBQ1QsT0FBTzt3QkFDUCxrQkFBa0I7d0JBQ2xCLElBQUk7d0JBQ0osYUFBYTt3QkFDYixlQUFlO3FCQUNoQixhQUdVO3dCQUNULGdCQUFnQjt3QkFDaEIsV0FBVzt3QkFDWCxhQUFhO3dCQUNiLGdCQUFnQjtxQkFDakI7d0RBTVEsSUFBSTtzQkFBWixLQUFLO2dCQUtHLE9BQU87c0JBQWYsS0FBSztnQkFLRyxRQUFRO3NCQUFoQixLQUFLO2dCQUtHLE9BQU87c0JBQWYsS0FBSztnQkFLRyxJQUFJO3NCQUFaLEtBQUs7Z0JBS0csV0FBVztzQkFBbkIsS0FBSztnQkFLRyxNQUFNO3NCQUFkLEtBQUs7Z0JBS0csUUFBUTtzQkFBaEIsS0FBSztnQkFLRyxTQUFTO3NCQUFqQixLQUFLO2dCQUtHLEtBQUs7c0JBQWIsS0FBSztnQkFLSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7TWF0QnV0dG9ufSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uXCI7XHJcbmltcG9ydCB7TmdDbGFzcywgTmdJZn0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge01hdFByb2dyZXNzU3Bpbm5lcn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXJcIjtcclxuaW1wb3J0IHtNYXRJY29uTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvblwiO1xyXG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlUGlwZSwgVHJhbnNsYXRlU2VydmljZX0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcclxuaW1wb3J0IHsgQnV0dG9uVHlwZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYnV0dG9uLXR5cGVzLmVudW0nO1xyXG5pbXBvcnQge05neE1hc2tEaXJlY3RpdmUsIE5neE1hc2tQaXBlIH0gZnJvbSAnbmd4LW1hc2snO1xyXG5cclxuLyoqXHJcbiAqIEEgcmV1c2FibGUgYnV0dG9uIGNvbXBvbmVudCB3aXRoIE1hdGVyaWFsIERlc2lnbiBzdHlsaW5nIGFuZCBjdXN0b20gZnVuY3Rpb25hbGl0eS5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaS10ZWNoLWJ1dHRvbicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBNYXRCdXR0b24sXHJcbiAgICBOZ0NsYXNzLFxyXG4gICAgTWF0UHJvZ3Jlc3NTcGlubmVyLFxyXG4gICAgTmdJZixcclxuICAgIE1hdEljb25Nb2R1bGUsXHJcbiAgICBUcmFuc2xhdGVNb2R1bGVcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9idXR0b24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9idXR0b24uY29tcG9uZW50LmNzcycsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICBOZ3hNYXNrRGlyZWN0aXZlLFxyXG4gICAgTmd4TWFza1BpcGUsXHJcbiAgICBUcmFuc2xhdGVQaXBlLFxyXG4gICAgVHJhbnNsYXRlU2VydmljZVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEJ1dHRvbkNvbXBvbmVudCB7XHJcbiAgLyoqXHJcbiAgICogVGhlIHRleHQgZGlzcGxheWVkIGluc2lkZSB0aGUgYnV0dG9uLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHRleHQ6IHN0cmluZyA9ICcnO1xyXG5cclxuICAvKipcclxuICAgKiBEYXRhIGF0dHJpYnV0ZSB1c2VkIGZvciBDeXByZXNzIG9yIG90aGVyIHRlc3RpbmcgZnJhbWV3b3Jrcy5cclxuICAgKi9cclxuICBASW5wdXQoKSBkYXRhX2N5OiBzdHJpbmcgPSAnJztcclxuXHJcbiAgLyoqXHJcbiAgICogRm9udCBpY29uIGNsYXNzIGZvciBkaXNwbGF5aW5nIGFuIGljb24gKGUuZy4sIE1hdGVyaWFsIEljb25zKS5cclxuICAgKi9cclxuICBASW5wdXQoKSBmb250SWNvbjogc3RyaW5nID0gJyc7XHJcblxyXG4gIC8qKlxyXG4gICAqIFNWRyBpY29uIG5hbWUgZm9yIGRpc3BsYXlpbmcgYW4gU1ZHIGljb24uXHJcbiAgICovXHJcbiAgQElucHV0KCkgc3ZnSWNvbjogc3RyaW5nID0gJyc7XHJcblxyXG4gIC8qKlxyXG4gICAqIERlZmluZXMgdGhlIHR5cGUgb2YgYnV0dG9uIChlLmcuLCBgRklMTEVEYCwgYE9VVExJTkVEYCkuXHJcbiAgICovXHJcbiAgQElucHV0KCkgdHlwZTogQnV0dG9uVHlwZSA9IEJ1dHRvblR5cGUuRklMTEVEO1xyXG5cclxuICAvKipcclxuICAgKiBBZGRpdGlvbmFsIGN1c3RvbSBjbGFzc2VzIHRvIHN0eWxlIHRoZSBidXR0b24uXHJcbiAgICovXHJcbiAgQElucHV0KCkgY3VzdG9tQ2xhc3M6IHN0cmluZyA9ICcnO1xyXG5cclxuICAvKipcclxuICAgKiBJZiB0cnVlLCB0aGUgYnV0dG9uIGFjdHMgYXMgYSBzdWJtaXQgYnV0dG9uLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHN1Ym1pdDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBJZiB0cnVlLCB0aGUgYnV0dG9uIGlzIGRpc2FibGVkIGFuZCBjYW5ub3QgYmUgY2xpY2tlZC5cclxuICAgKi9cclxuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgYnV0dG9uIGlzIGN1cnJlbnRseSBhY3RpdmF0ZWQuXHJcbiAgICovXHJcbiAgQElucHV0KCkgYWN0aXZhdGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBjb2xvciBvZiB0aGUgYnV0dG9uIChlLmcuLCBgcHJpbWFyeWAsIGB3YXJuYCkuXHJcbiAgICovXHJcbiAgQElucHV0KCkgY29sb3I6ICdwcmltYXJ5JyB8ICd3YXJuJyA9ICdwcmltYXJ5JztcclxuXHJcbiAgLyoqXHJcbiAgICogRW1pdHMgYW4gZXZlbnQgd2hlbiB0aGUgYnV0dG9uIGlzIGNsaWNrZWQuXHJcbiAgICovXHJcbiAgQE91dHB1dCgpIGJ1dHRvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAvKipcclxuICAgKiBFbnVtIHJlZmVyZW5jZSBmb3IgYEJ1dHRvblR5cGVgIHRvIHVzZSBpbiB0ZW1wbGF0ZXMuXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IEJ1dHRvblR5cGUgPSBCdXR0b25UeXBlO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHt9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgdGhlIGJ1dHRvbiBjbGljayBldmVudC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBldmVudCAtIFRoZSBtb3VzZSBldmVudCB0cmlnZ2VyZWQgYnkgY2xpY2tpbmcgdGhlIGJ1dHRvbi5cclxuICAgKi9cclxuICBvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQgJiYgIXRoaXMuc3VibWl0KSB7XHJcbiAgICAgIHRoaXMuYnV0dG9uQ2xpY2suZW1pdCgpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8YnV0dG9uICpuZ0lmPVwiW0J1dHRvblR5cGUuRklMTEVELEJ1dHRvblR5cGUuV0FSTklOR10uaW5jbHVkZXModHlwZSlcIlxyXG4gICAgICAgIG1hdC1mbGF0LWJ1dHRvblxyXG4gICAgICAgIFthdHRyLmRhdGEtY3ldPVwiZGF0YV9jeVwiXHJcbiAgICAgICAgW2NvbG9yXT1cInR5cGUgPT09IEJ1dHRvblR5cGUuV0FSTklORyA/ICd3YXJuJyA6IGNvbG9yXCJcclxuICAgICAgICBbY2xhc3MuYWN0aXZhdGVkXT1cImFjdGl2YXRlZFwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwiKGN1c3RvbUNsYXNzIHx8ICcnKVwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHN1Ym1pdFwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50KVwiXHJcbj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cInN1Ym1pdFwiIGNsYXNzPVwic3Bpbm5lci1vdmVybGF5XCI+XHJcbiAgICAgICAgICAgIDxtYXQtc3Bpbm5lciBkaWFtZXRlcj1cIjE2XCI+PC9tYXQtc3Bpbm5lcj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgPG1hdC1pY29uICpuZ0lmPVwiZm9udEljb24gJiYgIXN1Ym1pdFwiPnt7Zm9udEljb259fTwvbWF0LWljb24+XHJcbiAgPG1hdC1pY29uICpuZ0lmPVwic3ZnSWNvbiAmJiAhc3VibWl0XCIgW3N2Z0ljb25dPVwic3ZnSWNvblwiPjwvbWF0LWljb24+XHJcbiAgPHNwYW4+e3t0ZXh0IHwgdHJhbnNsYXRlfX08L3NwYW4+XHJcbjwvYnV0dG9uPlxyXG48YnV0dG9uICpuZ0lmPVwiW0J1dHRvblR5cGUuVE9OQUwsQnV0dG9uVHlwZS5URVhUXS5pbmNsdWRlcyh0eXBlKVwiXHJcbiAgICAgICAgbWF0LWJ1dHRvblxyXG4gICAgICAgIFthdHRyLmRhdGEtY3ldPVwiZGF0YV9jeVwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwiKHR5cGUgPT09IEJ1dHRvblR5cGUuVE9OQUwgPyAndGVydGlhcnkgJyA6ICcnKSArIChjdXN0b21DbGFzcyB8fCAnJylcIlxyXG4gICAgICAgIFtjbGFzcy5hY3RpdmF0ZWRdPVwiYWN0aXZhdGVkXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgc3VibWl0XCJcclxuICAgICAgICAoY2xpY2spPVwib25DbGljaygkZXZlbnQpXCJcclxuPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwic3VibWl0XCIgIGNsYXNzPVwic3Bpbm5lci1vdmVybGF5XCI+XHJcbiAgICAgICAgICAgIDxtYXQtc3Bpbm5lciBkaWFtZXRlcj1cIjE2XCI+PC9tYXQtc3Bpbm5lcj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgPG1hdC1pY29uICpuZ0lmPVwiZm9udEljb24gJiYgIXN1Ym1pdFwiPnt7Zm9udEljb259fTwvbWF0LWljb24+XHJcbiAgPG1hdC1pY29uICpuZ0lmPVwic3ZnSWNvbiAmJiAhc3VibWl0XCIgW3N2Z0ljb25dPVwic3ZnSWNvblwiPjwvbWF0LWljb24+XHJcblxyXG4gIDxzcGFuPnt7dGV4dCB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG48L2J1dHRvbj5cclxuPGJ1dHRvbiAqbmdJZj1cInR5cGUgPT09IEJ1dHRvblR5cGUuT1VUTElORVwiXHJcbiAgICAgICAgW2NvbG9yXT1cImNvbG9yXCJcclxuICAgICAgICBtYXQtc3Ryb2tlZC1idXR0b25cclxuICAgICAgICBbYXR0ci5kYXRhLWN5XT1cImRhdGFfY3lcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cIihjdXN0b21DbGFzcyB8fCAnJykgXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgc3VibWl0XCJcclxuICAgICAgICAoY2xpY2spPVwib25DbGljaygkZXZlbnQpXCJcclxuICAgICAgICBbY2xhc3MuYWN0aXZhdGVkXT1cImFjdGl2YXRlZFwiXHJcbj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cInN1Ym1pdFwiICBjbGFzcz1cInNwaW5uZXItb3ZlcmxheVwiPlxyXG4gICAgICAgICAgICA8bWF0LXNwaW5uZXIgZGlhbWV0ZXI9XCIxNlwiPjwvbWF0LXNwaW5uZXI+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gIDxtYXQtaWNvbiAqbmdJZj1cImZvbnRJY29uICYmICFzdWJtaXRcIiA+e3tmb250SWNvbn19PC9tYXQtaWNvbj5cclxuICA8bWF0LWljb24gKm5nSWY9XCJzdmdJY29uICYmICFzdWJtaXRcIiBbc3ZnSWNvbl09XCJzdmdJY29uXCI+PC9tYXQtaWNvbj5cclxuICA8c3Bhbj57e3RleHQgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuPC9idXR0b24+XHJcbiJdfQ==
@@ -1,9 +1,17 @@
1
+ /**
2
+ * Enum representing different types of buttons.
3
+ */
1
4
  export var ButtonType;
2
5
  (function (ButtonType) {
6
+ /** A filled button with solid background, typically used for primary actions. */
3
7
  ButtonType["FILLED"] = "FILLED";
8
+ /** A tonal button with lighter background, used for secondary actions. */
4
9
  ButtonType["TONAL"] = "TONAL";
10
+ /** An outlined button with a border and no background. */
5
11
  ButtonType["OUTLINE"] = "OUTLINE";
12
+ /** A text button with no background or border, ideal for minimal UI. */
6
13
  ButtonType["TEXT"] = "TEXT";
14
+ /** A warning button with special styling to indicate caution or alert actions. */
7
15
  ButtonType["WARNING"] = "WARNING";
8
16
  })(ButtonType || (ButtonType = {}));
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLXR5cGVzLmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQtY29tcG9uZW50cy9zcmMvbGliL2ludGVyZmFjZXMvYnV0dG9uLXR5cGVzLmVudW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksVUFNWDtBQU5ELFdBQVksVUFBVTtJQUNwQiwrQkFBaUIsQ0FBQTtJQUNqQiw2QkFBZSxDQUFBO0lBQ2YsaUNBQW1CLENBQUE7SUFDbkIsMkJBQWEsQ0FBQTtJQUNiLGlDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFOVyxVQUFVLEtBQVYsVUFBVSxRQU1yQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIEJ1dHRvblR5cGUge1xyXG4gIEZJTExFRCA9ICdGSUxMRUQnICxcclxuICBUT05BTCA9ICdUT05BTCcsXHJcbiAgT1VUTElORSA9ICdPVVRMSU5FJyxcclxuICBURVhUID0gJ1RFWFQnLFxyXG4gIFdBUk5JTkcgPSAnV0FSTklORycsXHJcbn1cclxuIl19
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLXR5cGVzLmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQtY29tcG9uZW50cy9zcmMvbGliL2ludGVyZmFjZXMvYnV0dG9uLXR5cGVzLmVudW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSxVQWVYO0FBZkQsV0FBWSxVQUFVO0lBQ3BCLGlGQUFpRjtJQUNqRiwrQkFBaUIsQ0FBQTtJQUVqQiwwRUFBMEU7SUFDMUUsNkJBQWUsQ0FBQTtJQUVmLDBEQUEwRDtJQUMxRCxpQ0FBbUIsQ0FBQTtJQUVuQix3RUFBd0U7SUFDeEUsMkJBQWEsQ0FBQTtJQUViLGtGQUFrRjtJQUNsRixpQ0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBZlcsVUFBVSxLQUFWLFVBQVUsUUFlckIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogRW51bSByZXByZXNlbnRpbmcgZGlmZmVyZW50IHR5cGVzIG9mIGJ1dHRvbnMuXHJcbiAqL1xyXG5leHBvcnQgZW51bSBCdXR0b25UeXBlIHtcclxuICAvKiogQSBmaWxsZWQgYnV0dG9uIHdpdGggc29saWQgYmFja2dyb3VuZCwgdHlwaWNhbGx5IHVzZWQgZm9yIHByaW1hcnkgYWN0aW9ucy4gKi9cclxuICBGSUxMRUQgPSAnRklMTEVEJyxcclxuXHJcbiAgLyoqIEEgdG9uYWwgYnV0dG9uIHdpdGggbGlnaHRlciBiYWNrZ3JvdW5kLCB1c2VkIGZvciBzZWNvbmRhcnkgYWN0aW9ucy4gKi9cclxuICBUT05BTCA9ICdUT05BTCcsXHJcblxyXG4gIC8qKiBBbiBvdXRsaW5lZCBidXR0b24gd2l0aCBhIGJvcmRlciBhbmQgbm8gYmFja2dyb3VuZC4gKi9cclxuICBPVVRMSU5FID0gJ09VVExJTkUnLFxyXG5cclxuICAvKiogQSB0ZXh0IGJ1dHRvbiB3aXRoIG5vIGJhY2tncm91bmQgb3IgYm9yZGVyLCBpZGVhbCBmb3IgbWluaW1hbCBVSS4gKi9cclxuICBURVhUID0gJ1RFWFQnLFxyXG5cclxuICAvKiogQSB3YXJuaW5nIGJ1dHRvbiB3aXRoIHNwZWNpYWwgc3R5bGluZyB0byBpbmRpY2F0ZSBjYXV0aW9uIG9yIGFsZXJ0IGFjdGlvbnMuICovXHJcbiAgV0FSTklORyA9ICdXQVJOSU5HJyxcclxufVxyXG4iXX0=
@@ -132,12 +132,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
132
132
  }]
133
133
  }] });
134
134
 
135
+ /**
136
+ * Enum representing different types of buttons.
137
+ */
135
138
  var ButtonType;
136
139
  (function (ButtonType) {
140
+ /** A filled button with solid background, typically used for primary actions. */
137
141
  ButtonType["FILLED"] = "FILLED";
142
+ /** A tonal button with lighter background, used for secondary actions. */
138
143
  ButtonType["TONAL"] = "TONAL";
144
+ /** An outlined button with a border and no background. */
139
145
  ButtonType["OUTLINE"] = "OUTLINE";
146
+ /** A text button with no background or border, ideal for minimal UI. */
140
147
  ButtonType["TEXT"] = "TEXT";
148
+ /** A warning button with special styling to indicate caution or alert actions. */
141
149
  ButtonType["WARNING"] = "WARNING";
142
150
  })(ButtonType || (ButtonType = {}));
143
151
 
@@ -328,20 +336,65 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
328
336
  type: Output
329
337
  }] } });
330
338
 
339
+ /**
340
+ * A reusable button component with Material Design styling and custom functionality.
341
+ */
331
342
  class ButtonComponent {
332
343
  constructor() {
344
+ /**
345
+ * The text displayed inside the button.
346
+ */
333
347
  this.text = '';
348
+ /**
349
+ * Data attribute used for Cypress or other testing frameworks.
350
+ */
334
351
  this.data_cy = '';
352
+ /**
353
+ * Font icon class for displaying an icon (e.g., Material Icons).
354
+ */
335
355
  this.fontIcon = '';
356
+ /**
357
+ * SVG icon name for displaying an SVG icon.
358
+ */
336
359
  this.svgIcon = '';
360
+ /**
361
+ * Defines the type of button (e.g., `FILLED`, `OUTLINED`).
362
+ */
337
363
  this.type = ButtonType.FILLED;
364
+ /**
365
+ * Additional custom classes to style the button.
366
+ */
367
+ this.customClass = '';
368
+ /**
369
+ * If true, the button acts as a submit button.
370
+ */
338
371
  this.submit = false;
372
+ /**
373
+ * If true, the button is disabled and cannot be clicked.
374
+ */
339
375
  this.disabled = false;
376
+ /**
377
+ * Indicates whether the button is currently activated.
378
+ */
340
379
  this.activated = false;
380
+ /**
381
+ * The color of the button (e.g., `primary`, `warn`).
382
+ */
341
383
  this.color = 'primary';
384
+ /**
385
+ * Emits an event when the button is clicked.
386
+ */
342
387
  this.buttonClick = new EventEmitter();
388
+ /**
389
+ * Enum reference for `ButtonType` to use in templates.
390
+ */
343
391
  this.ButtonType = ButtonType;
344
392
  }
393
+ /**
394
+ * Handles the button click event.
395
+ *
396
+ * @param event - The mouse event triggered by clicking the button.
397
+ */
345
398
  onClick(event) {
346
399
  if (!this.disabled && !this.submit) {
347
400
  this.buttonClick.emit();
@@ -426,6 +479,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
426
479
  }] } });
427
480
 
428
481
  class AutocompleteSelectComponent {
482
+ /**
483
+ * For working configs.
484
+ */
429
485
  set configs(data) {
430
486
  this.selectConfig = data;
431
487
  if (!data) {
@@ -496,6 +552,12 @@ class AutocompleteSelectComponent {
496
552
  hardReload() {
497
553
  this.getData('', true);
498
554
  }
555
+ /**
556
+ * Dynamic request for select data.
557
+ * @param searchText - The input value to search options by.
558
+ * @param fromSearch - Access for search .
559
+ * @returns Select data.
560
+ */
499
561
  getData(searchText, fromSearch) {
500
562
  if (!fromSearch && !this.accessToNextRequest) {
501
563
  return;
@@ -588,6 +650,10 @@ class AutocompleteSelectComponent {
588
650
  this.isNeededForRecall = true;
589
651
  this.emitAction.emit();
590
652
  }
653
+ /**
654
+ * Filter and show.
655
+ * @param data - Existing chosen data.
656
+ */
591
657
  setShowingValue(data) {
592
658
  if (!data) {
593
659
  return;
@@ -625,6 +691,10 @@ class AutocompleteSelectComponent {
625
691
  this.showingValue = include;
626
692
  this.blockRecallDefaultValueSetter = true;
627
693
  }
694
+ /**
695
+ * Block another events.
696
+ * @param event - Element click event.
697
+ */
628
698
  preventDefault(event) {
629
699
  if (!this.selectConfig.multiple) {
630
700
  return;