imm-element-ui 2.0.1 → 2.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/README.md +24 -24
  2. package/esm2022/lib/am/am.component.mjs +6 -6
  3. package/esm2022/lib/crumb-action/crumb-action.component.mjs +3 -3
  4. package/esm2022/lib/form/form/form.component.mjs +5 -5
  5. package/esm2022/lib/form/form-field/context-menu.mjs +35 -35
  6. package/esm2022/lib/form/form-field/field-control.mjs +1 -1
  7. package/esm2022/lib/form/form-field/field-utils.mjs +2 -2
  8. package/esm2022/lib/form/form-field/form-field.mjs +135 -135
  9. package/esm2022/lib/form/form-field/form-type.mjs +85 -85
  10. package/esm2022/lib/form/form-field/index.mjs +1 -1
  11. package/esm2022/lib/form/form-field/label.directive.mjs +1 -1
  12. package/esm2022/lib/form/form-type/autocomplete.type.mjs +151 -151
  13. package/esm2022/lib/form/form-type/codemirror.type.mjs +6 -3
  14. package/esm2022/lib/form/form-type/datepicker.type.mjs +183 -183
  15. package/esm2022/lib/form/form-type/image.type.mjs +221 -221
  16. package/esm2022/lib/form/form-type/index.mjs +1 -1
  17. package/esm2022/lib/form/form-type/inputnumber.type.mjs +91 -91
  18. package/esm2022/lib/form/form-type/inputtext.type.mjs +19 -19
  19. package/esm2022/lib/form/form-type/multiselect.type.mjs +165 -163
  20. package/esm2022/lib/form/form-type/radio.type.mjs +78 -78
  21. package/esm2022/lib/form/form-type/rowselector.type.mjs +29 -29
  22. package/esm2022/lib/form/form-type/select.type.mjs +135 -133
  23. package/esm2022/lib/form/form-type/textarea.type.mjs +25 -25
  24. package/esm2022/lib/form/form-type/treeselect.type.mjs +115 -115
  25. package/esm2022/lib/form/form-type/upload.type.mjs +133 -133
  26. package/esm2022/lib/grid/actions/actions.component.mjs +1 -1
  27. package/esm2022/lib/grid/cell-edit/cell-edit-autoComplete.component.mjs +27 -27
  28. package/esm2022/lib/grid/cell-edit/cell-edit-datePicker.compoent.mjs +140 -140
  29. package/esm2022/lib/grid/cell-edit/cell-edit-inputDate.component.mjs +27 -27
  30. package/esm2022/lib/grid/cell-edit/cell-edit-inputNumber.component.mjs +75 -75
  31. package/esm2022/lib/grid/cell-edit/cell-edit-inputText.compoent.mjs +1 -1
  32. package/esm2022/lib/grid/cell-edit/cell-edit-select.component.mjs +126 -122
  33. package/esm2022/lib/grid/cell-edit/index.mjs +1 -1
  34. package/esm2022/lib/grid/cell-render/async-renderer.mjs +1 -1
  35. package/esm2022/lib/grid/cell-render/chip-render.mjs +21 -21
  36. package/esm2022/lib/grid/cell-render/img-renderer.mjs +25 -25
  37. package/esm2022/lib/grid/cell-render/link-render.mjs +13 -13
  38. package/esm2022/lib/grid/cell-render/row-span.mjs +5 -5
  39. package/esm2022/lib/grid/grid/grid.component.mjs +5 -5
  40. package/esm2022/lib/grid/grid-utils.mjs +1 -1
  41. package/esm2022/lib/grid/mock-data.mjs +1 -1
  42. package/esm2022/lib/grid/pager/pager.component.mjs +3 -3
  43. package/esm2022/lib/head/head.component.mjs +4 -4
  44. package/esm2022/lib/href-btn-list/href-btn-list.component.mjs +7 -7
  45. package/esm2022/lib/import/import.component.mjs +3 -3
  46. package/esm2022/lib/loading/loading.component.mjs +4 -4
  47. package/esm2022/lib/log/log.component.mjs +3 -3
  48. package/esm2022/lib/page-form/page-form.component.mjs +7 -7
  49. package/esm2022/lib/page-form/page-form.interface.mjs +1 -1
  50. package/esm2022/lib/page-grid-list/page-grid-list.component.mjs +3 -3
  51. package/esm2022/lib/row-selector/row-selector.component.mjs +3 -3
  52. package/esm2022/lib/search/mock-data.mjs +1 -1
  53. package/esm2022/lib/search/pop-date/pop-date.component.mjs +3 -3
  54. package/esm2022/lib/search/pop-list/pop-list.component.mjs +3 -3
  55. package/esm2022/lib/search/pop-panel/pop-panel.component.mjs +3 -3
  56. package/esm2022/lib/search/pop-select/pop-select.component.mjs +3 -3
  57. package/esm2022/lib/search/pop-self/pop-self.component.mjs +3 -3
  58. package/esm2022/lib/search/pop-sort/pop-sort.component.mjs +3 -3
  59. package/esm2022/lib/search/pop-tree/pop-tree.component.mjs +3 -3
  60. package/esm2022/lib/search/search/search.component.mjs +4 -4
  61. package/esm2022/lib/search/search-tip/search-tip.component.mjs +3 -3
  62. package/esm2022/lib/search/search-utils.mjs +1 -1
  63. package/esm2022/lib/search/text-panel/text-panel.component.mjs +3 -3
  64. package/esm2022/lib/service/i18n.service.mjs +1 -1
  65. package/esm2022/lib/service/loading.service.mjs +1 -1
  66. package/esm2022/lib/service/themeConfig.service.mjs +1 -1
  67. package/esm2022/lib/share/utils.mjs +11 -1
  68. package/esm2022/lib/steps/steps.component.mjs +4 -4
  69. package/esm2022/lib/theme-config/theme-config-panel.compoent.mjs +39 -39
  70. package/esm2022/lib/theme-config/theme-config.compoent.mjs +29 -29
  71. package/esm2022/public-api.mjs +1 -1
  72. package/fesm2022/imm-element-ui.mjs +3485 -3467
  73. package/fesm2022/imm-element-ui.mjs.map +1 -1
  74. package/lib/crumb-action/crumb-action.component.d.ts +1 -1
  75. package/lib/form/form-type/codemirror.type.d.ts +1 -1
  76. package/lib/form/form-type/multiselect.type.d.ts +1 -0
  77. package/lib/form/form-type/select.type.d.ts +1 -0
  78. package/lib/grid/cell-edit/cell-edit-select.component.d.ts +1 -0
  79. package/lib/grid/grid-utils.d.ts +529 -2
  80. package/lib/share/utils.d.ts +2 -0
  81. package/lib/steps/steps.component.d.ts +1 -1
  82. package/package.json +1 -1
  83. package/src/lib/crumb-action/crumb-action.component.scss +60 -60
  84. package/src/lib/grid/grid/grid.component.scss +45 -45
  85. package/src/lib/grid/pager/pager.component.scss +3 -3
  86. package/src/lib/head/head.component.scss +3 -3
  87. package/src/lib/href-btn-list/href-btn-list.component.scss +51 -51
  88. package/src/lib/import/import.component.scss +10 -10
  89. package/src/lib/loading/loading.component.scss +31 -31
  90. package/src/lib/log/log.component.scss +26 -26
  91. package/src/lib/page-form/page-form.component.scss +31 -31
  92. package/src/lib/page-grid-list/page-grid-list.component.scss +12 -12
  93. package/src/lib/row-selector/row-selector.component.scss +1 -1
  94. package/src/lib/search/dynamic-search/dynamic-search.component.scss +70 -70
  95. package/src/lib/search/pop-date/pop-date.component.scss +67 -67
  96. package/src/lib/search/pop-list/pop-list.component.scss +23 -23
  97. package/src/lib/search/pop-panel/pop-panel.component.scss +32 -32
  98. package/src/lib/search/pop-select/pop-select.component.scss +39 -39
  99. package/src/lib/search/pop-self/pop-self.component.scss +80 -80
  100. package/src/lib/search/pop-sort/pop-sort.component.scss +49 -49
  101. package/src/lib/search/pop-tree/pop-tree.component.scss +37 -37
  102. package/src/lib/search/search/search.component.scss +70 -70
  103. package/src/lib/search/search-tip/search-tip.component.scss +50 -50
  104. package/src/lib/search/text-panel/text-panel.component.scss +24 -24
  105. package/src/lib/steps/steps.component.scss +97 -97
  106. package/src/lib/styles/styles.scss +232 -232
package/README.md CHANGED
@@ -1,24 +1,24 @@
1
- # ImmElementUi
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 imm-element-ui` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project imm-element-ui`.
8
- > Note: Don't forget to add `--project imm-element-ui` or else it will be added to the default project in your `angular.json` file.
9
-
10
- ## Build
11
-
12
- Run `ng build imm-element-ui` 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 imm-element-ui`, go to the dist folder `cd dist/imm-element-ui` and run `npm publish`.
17
-
18
- ## Running unit tests
19
-
20
- Run `ng test imm-element-ui` 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
+ # ImmElementUi
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 imm-element-ui` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project imm-element-ui`.
8
+ > Note: Don't forget to add `--project imm-element-ui` or else it will be added to the default project in your `angular.json` file.
9
+
10
+ ## Build
11
+
12
+ Run `ng build imm-element-ui` 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 imm-element-ui`, go to the dist folder `cd dist/imm-element-ui` and run `npm publish`.
17
+
18
+ ## Running unit tests
19
+
20
+ Run `ng test imm-element-ui` 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.
@@ -104,7 +104,7 @@ export class AmComponent {
104
104
  delete param.addData;
105
105
  }
106
106
  let updData = param.updData;
107
- console.log('param----', param.updData);
107
+ // console.log('param----', param.updData);
108
108
  if (Object.keys(updData).length == 0) {
109
109
  delete param.updData;
110
110
  }
@@ -115,7 +115,7 @@ export class AmComponent {
115
115
  if (!param?.addData && !param.updData) {
116
116
  param = { updData: { id: this.id }, ...param };
117
117
  }
118
- console.log('this.isLog----', this.isLog);
118
+ // console.log('this.isLog----', this.isLog);
119
119
  if (!this.isLog) {
120
120
  delete param.log;
121
121
  }
@@ -137,7 +137,7 @@ export class AmComponent {
137
137
  });
138
138
  param = { ...param, log: { ...param.log, subContent: lg } };
139
139
  }
140
- console.log('param====', param);
140
+ // console.log('param====', param);
141
141
  return this.http.post(apiPath + 'upsert', param).pipe(map((response) => {
142
142
  if (param.log) {
143
143
  delete param.log;
@@ -246,7 +246,7 @@ export class AmComponent {
246
246
  // this.loadingService.setLoading(true);
247
247
  return this.http.post(apiPath + 'search', param).pipe(map((response) => {
248
248
  this.searchPrm = { ...response };
249
- console.log('upsey-----', this.upsertPrm);
249
+ // console.log('upsey-----', this.upsertPrm);
250
250
  return response;
251
251
  }), finalize(() => {
252
252
  // this.loadingService.setLoading(false);
@@ -264,7 +264,7 @@ export class AmComponent {
264
264
  // this.loadingService.setLoading(true);
265
265
  return this.http.post(apiPath + 'searchMap', param).pipe(map((response) => {
266
266
  this.searchPrm = { ...response };
267
- console.log('upsey-----', this.upsertPrm);
267
+ // console.log('upsey-----', this.upsertPrm);
268
268
  return response;
269
269
  }), finalize(() => {
270
270
  // this.loadingService.setLoading(false);
@@ -528,4 +528,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
528
528
  providers: [MessageService, ConfirmationService],
529
529
  }]
530
530
  }], ctorParameters: () => [] });
531
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW1tLWVsZW1lbnQtdWkvc3JjL2xpYi9hbS9hbS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBd0IsUUFBUSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJFLE9BQU8sS0FBSyxTQUFTLE1BQU0sWUFBWSxDQUFDO0FBR3hDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFNUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQXVJdEQsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDO0FBUW5CLE1BQU0sT0FBTyxXQUFXO0lBdUN2QjtRQXRDQSxRQUFRO1FBQ1IsVUFBSyxHQUFZLEtBQUssQ0FBQztRQUN2QixPQUFPO1FBQ1AsT0FBRSxHQUFXLENBQUMsQ0FBQztRQUNmLE1BQU07UUFDTixjQUFTLEdBQVcsRUFBRSxDQUFDO1FBQ3ZCLE1BQU07UUFDTixVQUFLLEdBQVUsRUFBRSxDQUFDO1FBQ2xCLFFBQUcsR0FBVyxFQUFFLENBQUM7UUFDakIsSUFBSTtRQUNKLGNBQVMsR0FBZ0IsRUFBRSxDQUFDO1FBQzVCLElBQUk7UUFDSixrQkFBYSxHQUFrQixFQUFFLENBQUM7UUFDbEMsTUFBTTtRQUNOLGdCQUFXLEdBQWdCLEVBQUUsQ0FBQztRQUM5QixRQUFRO1FBQ1IsY0FBUyxHQUFXLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQ3ZFLElBQUk7UUFDSixZQUFPLEdBQVMsRUFBRSxDQUFDO1FBQ25CLE9BQU87UUFDUCxhQUFRLEdBQVUsRUFBRSxDQUFDO1FBQ3JCLElBQUk7UUFDSixjQUFTLEdBQVcsRUFBRSxDQUFDO1FBQ3ZCLFFBQVE7UUFDUixXQUFNLEdBQVEsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFDM0IsTUFBTTtRQUNOLFdBQU0sR0FBaUIsRUFBRSxDQUFDO1FBQzFCLFFBQVE7UUFDUixjQUFTLEdBQVcsRUFBRSxDQUFDO1FBQ3ZCLGNBQVMsR0FBVyxFQUFFLENBQUM7UUFDdkIsYUFBUSxHQUFTLEVBQUUsQ0FBQztRQUNwQixTQUFJLEdBQWUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3RDLG1CQUFjLEdBQW1CLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN4RCx3QkFBbUIsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNsRCxtQkFBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN4QyxVQUFLLEdBQW1CLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMvQyxXQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hCLFNBQUksR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDWCxDQUFDO0lBRWhCLEdBQUcsQ0FBQyxHQUFRO1FBQ1gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FDL0MsR0FBRyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDckIsT0FBTyxRQUFRLENBQUM7UUFDakIsQ0FBQyxDQUFDLEVBQ0YsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNiLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxDQUNGLENBQUM7SUFDSCxDQUFDO0lBQ0QsTUFBTSxDQUFDLEtBQVk7UUFDbEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUM5RCxHQUFHLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUNyQixPQUFPLFFBQVEsQ0FBQztRQUNqQixDQUFDLENBQUMsRUFDRixRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ2IseUNBQXlDO1FBQzFDLENBQUMsQ0FBQyxDQUNGLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQVk7UUFDbkIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUMvRCxHQUFHLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUNyQixPQUFPLFFBQVEsQ0FBQztRQUNqQixDQUFDLENBQUMsRUFDRixRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ1QseUNBQXlDO1FBQzlDLENBQUMsQ0FBQyxDQUNGLENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQVk7UUFDbEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FDcEQsR0FBRyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDckIsT0FBTyxRQUFRLENBQUM7UUFDakIsQ0FBQyxDQUFDLEVBQ0YsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNULHlDQUF5QztRQUM5QyxDQUFDLENBQUMsQ0FDRixDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxHQUFTLEVBQUUsRUFBYTtRQUM5QixJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDdEMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDZCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3pCLENBQUMsQ0FBQyxDQUFDO1FBQ0osQ0FBQzthQUFNLENBQUM7WUFDUCxvQ0FBb0M7WUFDcEMsMEJBQTBCO1lBQzFCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNqRCxFQUFFLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNkLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDekIsQ0FBQyxDQUFDLENBQUM7UUFDSixDQUFDO0lBQ0YsQ0FBQztJQUNELGdCQUFnQjtJQUNoQixVQUFVLENBQUMsS0FBYTtRQUNyQix3Q0FBd0M7UUFDMUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN0QixLQUFLLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDO1FBQ2pELENBQUM7UUFDRCxJQUFJLE9BQU8sR0FBUSxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQ2pDLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDdEMsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQ3RCLENBQUM7UUFDRCxJQUFJLE9BQU8sR0FBUSxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQ2pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4QyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3RDLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUN0QixDQUFDO2FBQU0sQ0FBQztZQUNQLEtBQUssQ0FBQyxPQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUMvQixLQUFLLENBQUMsR0FBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQzFCLENBQUM7UUFDRCxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN2QyxLQUFLLEdBQUcsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUM7UUFDaEQsQ0FBQztRQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDakIsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDO1FBQ2xCLENBQUM7YUFBTSxDQUFDO1lBQ1AsSUFBSSxFQUFFLEdBQVcsRUFBRSxDQUFDO1lBQ3BCLGFBQWE7WUFDYixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFBO1lBQy9CLElBQUksU0FBUyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFBLElBQUksQ0FBQTtZQUM1RCxLQUFLLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUM1QixDQUFDLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtvQkFDMUIsSUFBSSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO3dCQUNoQixFQUFFLElBQUksR0FBRyxTQUFTLFFBQVEsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFBO3dCQUN2QyxzQ0FBc0M7b0JBQ3ZDLENBQUM7eUJBQU0sQ0FBQzt3QkFDUCxFQUFFLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQztvQkFDbEcsQ0FBQztnQkFDRixDQUFDLENBQUMsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1lBQ0gsS0FBSyxHQUFHLEVBQUUsR0FBRyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQzdELENBQUM7UUFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNoQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUNwRCxHQUFHLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUNyQixJQUFJLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDZixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUM7WUFDbEIsQ0FBQztZQUNELE9BQU8sUUFBUSxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxFQUNGLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDVCx5Q0FBeUM7UUFDOUMsQ0FBQyxDQUFDLENBQ0YsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPO0lBQ1AsSUFBSSxDQUFDLEdBQVU7UUFDZCxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNoQyxDQUFDO2FBQU0sQ0FBQztZQUNQLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3pDLENBQUM7SUFDRixDQUFDO0lBQ0QsUUFBUSxDQUFDLEtBQVc7UUFDakIsd0NBQXdDO1FBQzFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQ2xELEdBQUcsQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ25ELE9BQU8sUUFBUSxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxFQUNGLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDVCx5Q0FBeUM7UUFDOUMsQ0FBQyxDQUFDLENBQ0YsQ0FBQztJQUNILENBQUM7SUFDRCxvQkFBb0I7SUFDcEIsS0FBSyxDQUFDLEdBQVc7UUFDaEIsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDakMsQ0FBQzthQUFNLENBQUM7WUFDUCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUMzQyxDQUFDO0lBQ0YsQ0FBQztJQUNELFNBQVMsQ0FBQyxLQUFZO1FBQ25CLHdDQUF3QztRQUMxQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3RCLEtBQUssR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUM7UUFDakQsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQ25ELEdBQUcsQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBQ3JCLElBQUksS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNmLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQztZQUNsQixDQUFDO1lBQ0QsT0FBTyxRQUFRLENBQUM7UUFDakIsQ0FBQyxDQUFDLEVBQ0YsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNULHlDQUF5QztRQUM5QyxDQUFDLENBQUMsQ0FDRixDQUFDO0lBQ0gsQ0FBQztJQUNELFFBQVE7SUFDUixNQUFNLENBQUMsR0FBWTtRQUNsQixJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNsQyxDQUFDO2FBQU0sQ0FBQztZQUNQLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzdDLENBQUM7SUFDRixDQUFDO0lBQ0QsVUFBVSxDQUFDLEtBQWE7UUFDckIsd0NBQXdDO1FBQzFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQ3BELEdBQUcsQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBQ3JCLElBQUksS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNmLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQztZQUNsQixDQUFDO1lBQ0QsT0FBTyxRQUFRLENBQUM7UUFDakIsQ0FBQyxDQUFDLEVBQ0YsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNULHlDQUF5QztRQUM5QyxDQUFDLENBQUMsQ0FDRixDQUFDO0lBQ0gsQ0FBQztJQUNELFlBQVk7SUFDWixHQUFHLENBQUMsR0FBUztRQUNaLElBQUksR0FBRyxFQUFFLENBQUM7WUFDVCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQy9CLENBQUM7YUFBTSxDQUFDO1lBQ1AsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDdkMsQ0FBQztJQUNGLENBQUM7SUFDRCxPQUFPLENBQUMsS0FBVTtRQUNqQixJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQ3hDLEtBQUssQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUNsQyxDQUFDO1FBQ0Msd0NBQXdDO1FBQzFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQ2pELEdBQUcsQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQztZQUM1QixJQUFJLFFBQVEsQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztnQkFDN0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFRLENBQUMsS0FBSyxDQUFDLFVBQVcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVyxDQUFDLENBQUM7WUFDdkUsQ0FBQztZQUNELElBQUksQ0FBQyxFQUFFLEdBQUcsUUFBUSxFQUFFLEVBQUUsQ0FBQztZQUN2QixPQUFPLFFBQVEsQ0FBQztRQUNqQixDQUFDLENBQUMsRUFDRixRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ1QseUNBQXlDO1FBQzlDLENBQUMsQ0FBQyxDQUNGLENBQUM7SUFDSCxDQUFDO0lBQ0QsdUJBQXVCO0lBQ3ZCLE1BQU0sQ0FBQyxHQUFZO1FBQ2xCLElBQUksR0FBRyxFQUFFLENBQUM7WUFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2xDLENBQUM7YUFBTSxDQUFDO1lBQ1AsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDN0MsQ0FBQztJQUNGLENBQUM7SUFDRCxVQUFVLENBQUMsS0FBYTtRQUNyQix3Q0FBd0M7UUFDMUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FDcEQsR0FBRyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDckIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLEdBQUcsUUFBUSxFQUFFLENBQUM7WUFDakMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzFDLE9BQU8sUUFBUSxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxFQUNGLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDVCx5Q0FBeUM7UUFDOUMsQ0FBQyxDQUFDLENBQ0YsQ0FBQztJQUNILENBQUM7SUFDRCxTQUFTLENBQUMsR0FBWTtRQUNyQixJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNsQyxDQUFDO2FBQU0sQ0FBQztZQUNQLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzdDLENBQUM7SUFDRixDQUFDO0lBQ0QsYUFBYSxDQUFDLEtBQWE7UUFDeEIsd0NBQXdDO1FBQzFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQ3ZELEdBQUcsQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxHQUFHLFFBQVEsRUFBRSxDQUFDO1lBQ2pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUMxQyxPQUFPLFFBQVEsQ0FBQztRQUNqQixDQUFDLENBQUMsRUFDRixRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ1QseUNBQXlDO1FBQzlDLENBQUMsQ0FBQyxDQUNGLENBQUM7SUFDSCxDQUFDO0lBQ0QsdUJBQXVCO0lBQ3ZCLFdBQVcsQ0FBQyxHQUFZO1FBQ3ZCLElBQUksR0FBRyxFQUFFLENBQUM7WUFDVCxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3ZDLENBQUM7YUFBTSxDQUFDO1lBQ1AsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDbEQsQ0FBQztJQUNGLENBQUM7SUFDRCxlQUFlLENBQUMsS0FBYTtRQUMxQix3Q0FBd0M7UUFDMUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FDekQsR0FBRyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDckIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLEdBQUcsUUFBUSxFQUFFLENBQUM7WUFDakMsT0FBTyxRQUFRLENBQUM7UUFDakIsQ0FBQyxDQUFDLEVBQ0YsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNULHlDQUF5QztRQUM5QyxDQUFDLENBQUMsQ0FDRixDQUFDO0lBQ0gsQ0FBQztJQUNELFNBQVM7SUFDVCwrQ0FBK0M7SUFDL0MsOEJBQThCO0lBQzlCLHlEQUF5RDtJQUN6RCxXQUFXO0lBQ1gsOEJBQThCO0lBQzlCLG9DQUFvQztJQUNwQyxrQ0FBa0M7SUFDbEMseUJBQXlCO0lBQ3pCLFVBQVU7SUFDViw4QkFBOEI7SUFDOUIsMENBQTBDO0lBQzFDLG1DQUFtQztJQUNuQyxpQ0FBaUM7SUFDakMsd0NBQXdDO0lBQ3hDLFVBQVU7SUFDVix1QkFBdUI7SUFDdkIscUNBQXFDO0lBQ3JDLG1DQUFtQztJQUNuQyxTQUFTO0lBQ1QsT0FBTztJQUNQLElBQUk7SUFDSixZQUFZO0lBQ1osTUFBTSxDQUFDLEdBQVk7UUFDbEIsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDbEMsQ0FBQzthQUFNLENBQUM7WUFDUCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUM3QyxDQUFDO0lBQ0YsQ0FBQztJQUNELFVBQVUsQ0FBQyxLQUFhO1FBQ3ZCLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDdEIsS0FBSyxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQztRQUNqRCxDQUFDO1FBQ0Msd0NBQXdDO1FBQzFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQzlFLEdBQUcsQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBQ3JCLE1BQU0sSUFBSSxHQUFTLElBQUksSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQ3ZDLElBQUksRUFBRSxrRkFBa0Y7YUFDeEYsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUM7WUFDM0MsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDakMsT0FBTyxRQUFRLENBQUM7UUFDakIsQ0FBQyxDQUFDLEVBQ0YsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNULHlDQUF5QztRQUM5QyxDQUFDLENBQUMsQ0FDRixDQUFDO0lBQ0gsQ0FBQztJQUNELFFBQVE7SUFDUixVQUFVLENBQUMsR0FBZ0I7UUFDMUIsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDdkMsQ0FBQzthQUFNLENBQUM7WUFDUCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNsRCxDQUFDO0lBQ0YsQ0FBQztJQUNELGVBQWUsQ0FBQyxLQUFpQjtRQUNoQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3RCLEtBQUssR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUM7UUFDakQsQ0FBQztRQUNDLHdDQUF3QztRQUMxQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxZQUFZLEVBQUUsS0FBSyxFQUFFLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUNsRixHQUFHLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUNyQixNQUFNLElBQUksR0FBUyxJQUFJLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUN2QyxJQUFJLEVBQUUsa0ZBQWtGO2FBQ3hGLENBQUMsQ0FBQztZQUNILDhDQUE4QztZQUM5QyxNQUFNLFFBQVEsR0FBRyxHQUFHLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLE9BQU8sQ0FBQTtZQUM3RSxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNqQyxPQUFPLFFBQVEsQ0FBQztRQUNqQixDQUFDLENBQUMsRUFDRixRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ1QseUNBQXlDO1FBQzlDLENBQUMsQ0FBQyxDQUNGLENBQUM7SUFDSCxDQUFDO0lBQ0QsU0FBUztJQUNULGdCQUFnQixDQUFDLEdBQVU7UUFDMUIsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUM1QyxDQUFDO2FBQU0sQ0FBQztZQUNQLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDdEQsQ0FBQztJQUNGLENBQUM7SUFDRCxvQkFBb0IsQ0FBQyxLQUFXO1FBQzdCLHdDQUF3QztRQUMxQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxVQUFVLEVBQUUsS0FBSyxFQUFFLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUNoRixHQUFHLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUNyQixNQUFNLElBQUksR0FBUyxJQUFJLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUN2QyxJQUFJLEVBQUUsa0ZBQWtGO2FBQ3hGLENBQUMsQ0FBQztZQUNILE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1lBQzdDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ2pDLE9BQU8sUUFBUSxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxFQUNGLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDVCx5Q0FBeUM7UUFDOUMsQ0FBQyxDQUFDLENBQ0YsQ0FBQztJQUNILENBQUM7SUFDRCxNQUFNO0lBQ04sV0FBVyxDQUFDLEdBQVk7UUFDdkIsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDdkMsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDNUMsQ0FBQztJQUNGLENBQUM7SUFDRCxlQUFlLENBQUMsR0FBVztRQUN4Qix3Q0FBd0M7UUFDMUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsYUFBYSxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FDdkQsR0FBRyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDckIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDdkYsT0FBTyxRQUFRLENBQUM7UUFDakIsQ0FBQyxDQUFDLEVBQ0YsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNULHlDQUF5QztRQUM5QyxDQUFDLENBQUMsQ0FDRixDQUFDO0lBQ0gsQ0FBQztJQUNELE1BQU07SUFDTixXQUFXLENBQUMsR0FBWTtRQUN2QixJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN2QyxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUM1QyxDQUFDO0lBQ0YsQ0FBQztJQUNELGVBQWUsQ0FBQyxHQUFXO1FBQ3hCLHdDQUF3QztRQUMxQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxhQUFhLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUN2RCxHQUFHLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUNyQixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUN2RixPQUFPLFFBQVEsQ0FBQztRQUNqQixDQUFDLENBQUMsRUFDRixRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ2IseUNBQXlDO1FBQzFDLENBQUMsQ0FBQyxDQUNGLENBQUM7SUFDSCxDQUFDO0lBQ0QsU0FBUztJQUNULFlBQVksQ0FBQyxLQUFnQjtRQUM1QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxjQUFjLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUMxRCxHQUFHLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNuRCxPQUFPLFFBQVEsQ0FBQztRQUNqQixDQUFDLENBQUMsRUFDRixRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ1QseUNBQXlDO1FBQzlDLENBQUMsQ0FBQyxDQUNGLENBQUM7SUFDSCxDQUFDO0lBQ0QsS0FBSztJQUNMLFdBQVcsQ0FBQyxHQUFXO1FBQ3RCLElBQUksR0FBRyxFQUFFLENBQUM7WUFDVCxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3ZDLENBQUM7YUFBTSxDQUFDO1lBQ1AsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDOUMsQ0FBQztJQUNGLENBQUM7SUFDRCxlQUFlLENBQUMsS0FBWTtRQUN6Qix3Q0FBd0M7UUFDMUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FDekQsR0FBRyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDckIscUZBQXFGO1lBQ3JGLE9BQU8sUUFBUSxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxFQUNGLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDVCx5Q0FBeUM7UUFDOUMsQ0FBQyxDQUFDLENBQ0YsQ0FBQztJQUNILENBQUM7SUFDRCxpQkFBaUI7SUFDakIsUUFBUSxDQUFDLE1BQWU7UUFDdkIsUUFBUSxNQUFNLEVBQUUsQ0FBQztZQUNoQixLQUFLLFFBQVE7Z0JBQ1osSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO2dCQUM1QixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7b0JBQ3JDLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztvQkFDckIsQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO29CQUNyQixDQUFDLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztnQkFDaEIsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsTUFBTTtZQUNQO2dCQUNDLEVBQUUsQ0FBQztRQUNMLENBQUM7SUFDRixDQUFDO0lBQ0QsT0FBTztJQUNQLFNBQVMsQ0FBQyxHQUFVO1FBQ25CLElBQUksR0FBRyxFQUFFLENBQUM7WUFDVCxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3BDLENBQUM7YUFBTSxDQUFDO1lBQ1AsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDN0MsQ0FBQztJQUNGLENBQUM7SUFDRCxZQUFZLENBQUMsS0FBVztRQUNyQix3Q0FBd0M7UUFDMUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FDdkQsR0FBRyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbkQsT0FBTyxRQUFRLENBQUM7UUFDakIsQ0FBQyxDQUFDLEVBQ0YsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNULHlDQUF5QztRQUM5QyxDQUFDLENBQUMsQ0FDRixDQUFDO0lBQ0gsQ0FBQztJQUNELFVBQVUsQ0FBQyxHQUFVO1FBQ3BCLElBQUksR0FBRyxFQUFFLENBQUM7WUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3JDLENBQUM7YUFBTSxDQUFDO1lBQ1AsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDOUMsQ0FBQztJQUNGLENBQUM7SUFDRCxhQUFhLENBQUMsS0FBVztRQUN0Qix3Q0FBd0M7UUFDMUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FDeEQsR0FBRyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbkQsT0FBTyxRQUFRLENBQUM7UUFDakIsQ0FBQyxDQUFDLEVBQ0YsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNULHlDQUF5QztRQUM5QyxDQUFDLENBQUMsQ0FDRixDQUFDO0lBQ0gsQ0FBQztJQUNELFVBQVUsQ0FBQyxHQUFVO1FBQ3BCLElBQUksR0FBRyxFQUFFLENBQUM7WUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3JDLENBQUM7YUFBTSxDQUFDO1lBQ1AsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDOUMsQ0FBQztJQUNGLENBQUM7SUFDRCxhQUFhLENBQUMsS0FBVztRQUN0Qix3Q0FBd0M7UUFDMUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FDeEQsR0FBRyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbkQsT0FBTyxRQUFRLENBQUM7UUFDakIsQ0FBQyxDQUFDLEVBQ0YsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNULHlDQUF5QztRQUM5QyxDQUFDLENBQUMsQ0FDRixDQUFDO0lBQ0gsQ0FBQzsrR0EzaUJXLFdBQVc7bUdBQVgsV0FBVyxxREFGWixDQUFDLGNBQWMsRUFBRSxtQkFBbUIsQ0FBQywwQkFEdEMsRUFBRTs7NEZBR0EsV0FBVztrQkFQdkIsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsUUFBUTtvQkFDbEIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxFQUFFO29CQUNYLFFBQVEsRUFBRSxFQUFFO29CQUNaLFNBQVMsRUFBRSxDQUFDLGNBQWMsRUFBRSxtQkFBbUIsQ0FBQztpQkFDaEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGVmZmVjdCwgaW5qZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbmFsaXplLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0ICogYXMgRmlsZVNhdmVyIGZyb20gJ2ZpbGUtc2F2ZXInO1xyXG5pbXBvcnQgeyBGb3JtT3B0aW9ucyB9IGZyb20gJy4uL2Zvcm0vZm9ybS9mb3JtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNlYXJjaE9wdGlvbnMgfSBmcm9tICcuLi9zZWFyY2gvc2VhcmNoL3NlYXJjaC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb25maXJtYXRpb25TZXJ2aWNlLCBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgVG9hc3QgfSBmcm9tICdwcmltZW5nL3RvYXN0JztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IExvYWRpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZS9sb2FkaW5nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyB0b09ic2VydmFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XHJcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZS9pMThuLnNlcnZpY2UnO1xyXG5leHBvcnQgaW50ZXJmYWNlIFBhcmFtIHtcclxuXHRpZD86IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUcmFjZU1lc3NhZ2Uge1xyXG5cdGlkPzogbnVtYmVyO1xyXG5cdHBpZD86IG51bWJlcjsgLy8g6KGo5LitaWRcclxuXHRmdW5jPzogc3RyaW5nO1xyXG5cdG9wZXJhdG9yPzogc3RyaW5nO1xyXG5cdGNvbnRlbnQ/OiBzdHJpbmc7IC8vIOS4u+ihqOWPmOabtOaJgOacieWtl+auteaLvOaOpeS4gOWdl1xyXG5cdHN1YkNvbnRlbnQ/OiBzdHJpbmc7IC8vIOWtkOihqOWPmOabtOaLvOaOpeS4gOi1t1xyXG5cdGNyZWF0ZWRBdD86IHN0cmluZztcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIEltcG9ydEV4Y2VsIHtcclxuXHRtb2RlbE5hbWU/OiBzdHJpbmc7XHJcblx0b3JnSWQ/OiBudW1iZXI7XHJcblx0b3JnTmFtZT86IHN0cmluZztcclxuXHRvcmdJZEZlaWxkPzogc3RyaW5nO1xyXG5cdG9yZ05hbWVGZWlsZD86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBVcHNlcnQge1xyXG5cdG1vZGVsTmFtZT86IHN0cmluZztcclxuXHRhZGREYXRhPzogUmVjb3JkPHN0cmluZywgYW55PjtcclxuXHR1cGREYXRhPzogUmVjb3JkPHN0cmluZywgYW55PjtcclxuXHRzdWJzZXJ0PzogU3ViVXBzZXJ0W107XHJcblx0bG9nTW9kZWw/OiBzdHJpbmc7XHJcblx0bG9nPzogVHJhY2VNZXNzYWdlO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFN1YlVwc2VydCB7XHJcblx0c3ViTW9kZWxOYW1lPzogc3RyaW5nO1xyXG5cdGZrPzogc3RyaW5nO1xyXG5cdHN1YkRhdGE/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+W107XHJcblx0bWFwdG1wPzogTWFwPG51bWJlciwgYW55PjtcclxuXHRsb2d0bXA/OiBNYXA8c3RyaW5nLCBhbnk+O1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgRGVhbCB7XHJcblx0bW9kZWxOYW1lPzogc3RyaW5nO1xyXG5cdGRhdGE/OiBhbnk7XHJcbn1cclxuLy8g5pu05paw54m55a6a5a2X5q61XHJcbmV4cG9ydCBpbnRlcmZhY2UgV3JpdGUge1xyXG5cdG1vZGVsTmFtZT86IHN0cmluZztcclxuXHRkYXRhPzogUmVjb3JkPHN0cmluZywgYW55PjtcclxuXHRsb2dNb2RlbD86IHN0cmluZztcclxuXHRsb2c/OiBUcmFjZU1lc3NhZ2U7XHJcblx0dHJhbnNhY3Rpb24/OiBib29sZWFuO1xyXG59XHJcbi8vIOWIoOmZpOaOpeWPo+WjsOaYjlxyXG5leHBvcnQgaW50ZXJmYWNlIFJlbW92ZSB7XHJcblx0bW9kZWxOYW1lPzogc3RyaW5nO1xyXG5cdGlkcz86IG51bWJlcltdO1xyXG5cdGRhdGE/OiBhbnk7XHJcblx0bG9nTW9kZWw/OiBzdHJpbmc7XHJcblx0bG9nPzogVHJhY2VNZXNzYWdlO1xyXG5cdHRyYW5zYWN0aW9uPzogYm9vbGVhbjtcclxufVxyXG4vLyDojrflj5bljZXmnaHmlbDmja7or6bmg4VcclxuZXhwb3J0IGludGVyZmFjZSBHZXQge1xyXG5cdG1vZGVsTmFtZT86IHN0cmluZztcclxuXHR1c2VyQ29kZT86IHN0cmluZztcclxuXHRvcmdGaWVsZD86IHN0cmluZztcclxuXHRpZD86IG51bWJlcjtcclxuXHRwcmVsb2Fkcz86IHN0cmluZ1tdOyAvLyDogZTooajmn6Xor6LooajlkI3np7DvvIzpnIDlr7nlupTlkI7nq69zdHJ1Y3RcclxuXHRmaXRlclByZWxvYWRzPzogUHJlbG9hZFtdOyAvLyDlj6rog73liqDkuIDlsYIg57G75Ly8ICdtb2R1bGUgPScgbW9kdWxlXHJcblx0Z2V0TG9nPzogYm9vbGVhbjsgLy/ojrflj5bml6Xlv5dcclxuXHRkYXRhPzogYW55OyAvL+WQjuerr+i/lOWbnueahHJlc3BvbnNlXHJcblx0Y29sdW1uRmlsdGVycz86IENvbHVtbkZpbHRlcltdOyAvL+i/h+a7pOeahOWIl1xyXG5cdGZvcmVpZ25LZXk/OiBzdHJpbmc7IC8v55u05o6l5o+S5YWl5a2Q6KGo6ZyA6KaB5Lyg6YCS5aSW6ZSu5a2X5q615Lul5Y+K5aSW6ZSu5YC8XHJcblx0W3Byb3BOYW1lOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBQcmVsb2FkIHtcclxuXHRmZWlsZE5hbWU/OiBzdHJpbmc7XHJcblx0Zml0ZXJzPzogQ29sdW1uRmlsdGVyW107XHJcblx0c29ydHM/OiBTb3J0W107XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5GaWx0ZXIge1xyXG5cdGNvbHVtbkZpZWxkPzogc3RyaW5nO1xyXG5cdHR5cGU/OiBzdHJpbmc7XHJcblx0Zml0ZXI/OiBhbnk7XHJcblx0ZnJvbT86IHN0cmluZyB8IG51bWJlcjtcclxuXHR0bz86IHN0cmluZyB8IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTb3J0IHtcclxuXHRmaWVsZD86IHN0cmluZztcclxuXHRpc0FzYz86IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoIHtcclxuXHRtb2RlbE5hbWU/OiBzdHJpbmc7XHJcblx0dXNlckNvZGU/OiBzdHJpbmc7XHJcblx0b3JnRmllbGQ/OiBzdHJpbmc7XHJcblx0Y291bnQ/OiBib29sZWFuOyAvL+aYr+WQpui/lOWbnnRvdGFsTnVtXHJcblx0cHJlbG9hZHM/OiBzdHJpbmdbXTtcclxuXHRmaXRlclByZWxvYWRzPzogUHJlbG9hZFtdO1xyXG5cdG1vZGVsPzogYW55O1xyXG5cdGRhdGE/OiBhbnk7XHJcblx0Y29sdW1uRmlsdGVycz86IENvbHVtbkZpbHRlcltdOyAvL+i/h+a7pOeahOWIl1xyXG5cdHNvcnRzPzogU29ydFtdO1xyXG5cdGdyb3Vwcz86IHN0cmluZ1tdO1xyXG5cdHJlYWQ/OiBzdHJpbmdbXTsgLy9yZWFkIOaMh+WumuafpeivoueJueWumuWtl+autVxyXG5cdGZ1bmNzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjsgLy/pgI/op4booajlkI7mnJ/opoHnlKhcclxuXHRvZmZzZXQ/OiBudW1iZXI7XHJcblx0bGltaXQ/OiBudW1iZXI7XHJcblx0dG90YWxOdW0/OiBudW1iZXI7XHJcbn1cclxuaW50ZXJmYWNlIERlYWxFeHBvcnQgZXh0ZW5kcyBTZWFyY2h7XHJcblx0ZmlsZU5hbWU/OnN0cmluZ1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgVG9rZW5JbmZvIHtcclxuXHR0b2tlbj86IHN0cmluZztcclxuXHRleHBpcmVkPzogbnVtYmVyO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgYW1XZWIge1xyXG5cdGlkPzogbnVtYmVyO1xyXG5cdGNvZGU/OiBzdHJpbmc7XHJcblx0dHlwZT86IHN0cmluZztcclxuXHRuYW1lPzogc3RyaW5nO1xyXG5cdGFwcElkPzogbnVtYmVyO1xyXG5cdGNvbnRlbnQ/OiBzdHJpbmc7XHJcblx0Y3JlYXRlZEF0Pzogc3RyaW5nO1xyXG5cdHVwZGF0ZWRBdD86IHN0cmluZztcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIFJmZCB7XHJcblx0bW9kZWxOYW1lPzogc3RyaW5nO1xyXG5cdGxhYmVsRmllbGQ/OiBzdHJpbmc7XHJcblx0dmFsdWVGaWVsZD86IHN0cmluZztcclxuXHR3aGVyZUZpZWxkPzogc3RyaW5nO1xyXG5cdHR5cGU/OiBzdHJpbmc7XHJcblx0Zml0ZXI/OiBhbnk7XHJcblx0ZGF0YT86IGFueTtcclxufVxyXG5jb25zdCBhcGlQYXRoID0gJyc7XHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnYXBwLWFtJyxcclxuXHRzdGFuZGFsb25lOiB0cnVlLFxyXG5cdGltcG9ydHM6IFtdLFxyXG5cdHRlbXBsYXRlOiAnJyxcclxuXHRwcm92aWRlcnM6IFtNZXNzYWdlU2VydmljZSwgQ29uZmlybWF0aW9uU2VydmljZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBbUNvbXBvbmVudCB7XHJcblx0Ly/mmK/lkKbmj5DkuqTml6Xlv5dcclxuXHRpc0xvZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdC8v5Li75pWw5o2uaWRcclxuXHRpZDogbnVtYmVyID0gMDtcclxuXHQvL+S4u+ihqOaooeWei1xyXG5cdG1vZGVsTmFtZTogc3RyaW5nID0gJyc7XHJcblx0Ly9JROWPguaVsFxyXG5cdHBhcmFtOiBQYXJhbSA9IHt9O1xyXG5cdGZpZDogc3RyaW5nID0gJyc7XHJcblx0Ly/lr7zlhaVcclxuXHRpbXBvcnRQcm06IEltcG9ydEV4Y2VsID0ge307XHJcblx0Ly/mkJzntKBcclxuXHRzZWFyY2hPcHRpb25zOiBTZWFyY2hPcHRpb25zID0ge307XHJcblx0Ly9mb3JtXHJcblx0Zm9ybU9wdGlvbnM6IEZvcm1PcHRpb25zID0ge307XHJcblx0Ly/liJvlu7rmiJbogIXmm7TmlrBcclxuXHR1cHNlcnRQcm06IFVwc2VydCA9IHsgdXBkRGF0YToge30sIGFkZERhdGE6IHt9LCBzdWJzZXJ0OiBbXSwgbG9nOiB7fSB9O1xyXG5cdC8v5aSE55CGXHJcblx0ZGVhbFBybTogRGVhbCA9IHt9O1xyXG5cdC8vbWFw5pu05pawXHJcblx0d3JpdGVQcm06IFdyaXRlID0ge307XHJcblx0Ly/liKDpmaRcclxuXHRyZW1vdmVQcm06IFJlbW92ZSA9IHt9O1xyXG5cdC8v6I635Y+W5LiA5p2h5pWw5o2uXHJcblx0Z2V0UHJtOiBHZXQgPSB7IGRhdGE6IHt9IH07XHJcblx0Ly/mn6Xor6LmnaHku7ZcclxuXHRmaWx0ZXI6IENvbHVtbkZpbHRlciA9IHt9O1xyXG5cdC8v5p+l6K+i5YiX6KGo5pWw5o2uXHJcblx0c2VhcmNoUHJtOiBTZWFyY2ggPSB7fTtcclxuXHRleHBvcnRQcm06IFNlYXJjaCA9IHt9O1xyXG5cdHRhbXBsYXRlOiBEZWFsID0ge307XHJcblx0aHR0cDogSHR0cENsaWVudCA9IGluamVjdChIdHRwQ2xpZW50KTtcclxuXHRtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UgPSBpbmplY3QoTWVzc2FnZVNlcnZpY2UpO1xyXG5cdGNvbmZpcm1hdGlvblNlcnZpY2UgPSBpbmplY3QoQ29uZmlybWF0aW9uU2VydmljZSk7XHJcblx0bG9hZGluZ1NlcnZpY2UgPSBpbmplY3QoTG9hZGluZ1NlcnZpY2UpO1xyXG5cdHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XHJcblx0cm91dGVyID0gaW5qZWN0KFJvdXRlcik7XHJcblx0aTE4biA9IGluamVjdChJMThuU2VydmljZSlcclxuXHRjb25zdHJ1Y3RvcigpIHt9XHJcblxyXG5cdHJmZChwcm06IFJmZCk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwLnBvc3QoYXBpUGF0aCArICdSRkQnLCBwcm0pLnBpcGUoXHJcblx0XHRcdG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG5cdFx0XHRcdHJldHVybiByZXNwb25zZTtcclxuXHRcdFx0fSksXHJcblx0XHRcdGZpbmFsaXplKCgpID0+IHtcclxuXHRcdFx0XHR0aGlzLmxvYWRpbmdTZXJ2aWNlLnNldExvYWRpbmcoZmFsc2UpO1xyXG5cdFx0XHR9KSxcclxuXHRcdCk7XHJcblx0fVxyXG5cdHdlYmdldChwYXJhbTogYW1XZWIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cC5wb3N0KGFwaVBhdGggKyAnL2dvYW0vYXBpL3dlYmdldCcsIHBhcmFtKS5waXBlKFxyXG5cdFx0XHRtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuXHRcdFx0XHRyZXR1cm4gcmVzcG9uc2U7XHJcblx0XHRcdH0pLFxyXG5cdFx0XHRmaW5hbGl6ZSgoKSA9PiB7XHJcblx0XHRcdFx0Ly8gdGhpcy5sb2FkaW5nU2VydmljZS5zZXRMb2FkaW5nKGZhbHNlKTtcclxuXHRcdFx0fSksXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0d2Vic2F2ZShwYXJhbTogYW1XZWIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cC5wb3N0KGFwaVBhdGggKyAnL2dvYW0vYXBpL3dlYnNhdmUnLCBwYXJhbSkucGlwZShcclxuXHRcdFx0bWFwKChyZXNwb25zZTogYW55KSA9PiB7XHJcblx0XHRcdFx0cmV0dXJuIHJlc3BvbnNlO1xyXG5cdFx0XHR9KSxcclxuXHRcdFx0ZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgIC8vIHRoaXMubG9hZGluZ1NlcnZpY2Uuc2V0TG9hZGluZyhmYWxzZSk7XHJcblx0XHRcdH0pLFxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdHdlYmRlbChwYXJhbTogYW1XZWIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cC5wb3N0KGFwaVBhdGggKyAnd2ViZGVsJywgcGFyYW0pLnBpcGUoXHJcblx0XHRcdG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG5cdFx0XHRcdHJldHVybiByZXNwb25zZTtcclxuXHRcdFx0fSksXHJcblx0XHRcdGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAvLyB0aGlzLmxvYWRpbmdTZXJ2aWNlLnNldExvYWRpbmcoZmFsc2UpO1xyXG5cdFx0XHR9KSxcclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHR1cHNlcnQocHJtPzogYW55LCBjYj86IEZ1bmN0aW9uKSB7XHJcblx0XHRpZiAocHJtKSB7XHJcblx0XHRcdHRoaXMud2ViX3Vwc2VydChwcm0pLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcblx0XHRcdFx0Y2IgJiYgY2IocmVzKTtcclxuXHRcdFx0XHR0aGlzLnJlc2V0UHJtKCd1cHNlcnQnKTtcclxuXHRcdFx0fSk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHQvLyBjb25zdCBwbTogVXBzZXJ0ID0gdGhpcy51cHNlcnRzKClcclxuXHRcdFx0Ly8gY29uc29sZS5sb2coJzE9PT09JyxwbSlcclxuXHRcdFx0dGhpcy53ZWJfdXBzZXJ0KHRoaXMudXBzZXJ0UHJtKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG5cdFx0XHRcdGNiICYmIGNiKHJlcyk7XHJcblx0XHRcdFx0dGhpcy5yZXNldFBybSgndXBzZXJ0Jyk7XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHQvL+WFqOmDqOWIm+W7uuaIluabtOaWsO+8jOagueaNrklE5Yik5patXHJcblx0d2ViX3Vwc2VydChwYXJhbTogVXBzZXJ0KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIC8vIHRoaXMubG9hZGluZ1NlcnZpY2Uuc2V0TG9hZGluZyh0cnVlKTtcclxuXHRcdGlmICghcGFyYW0ubW9kZWxOYW1lKSB7XHJcblx0XHRcdHBhcmFtID0geyBtb2RlbE5hbWU6IHRoaXMubW9kZWxOYW1lLCAuLi5wYXJhbSB9O1xyXG5cdFx0fVxyXG5cdFx0bGV0IGFkZERhdGE6IGFueSA9IHBhcmFtLmFkZERhdGE7XHJcblx0XHRpZiAoT2JqZWN0LmtleXMoYWRkRGF0YSkubGVuZ3RoID09IDApIHtcclxuXHRcdFx0ZGVsZXRlIHBhcmFtLmFkZERhdGE7XHJcblx0XHR9XHJcblx0XHRsZXQgdXBkRGF0YTogYW55ID0gcGFyYW0udXBkRGF0YTtcclxuXHRcdGNvbnNvbGUubG9nKCdwYXJhbS0tLS0nLCBwYXJhbS51cGREYXRhKTtcclxuXHRcdGlmIChPYmplY3Qua2V5cyh1cGREYXRhKS5sZW5ndGggPT0gMCkge1xyXG5cdFx0XHRkZWxldGUgcGFyYW0udXBkRGF0YTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHBhcmFtLnVwZERhdGEhWydpZCddID0gdGhpcy5pZDtcclxuXHRcdFx0cGFyYW0ubG9nIS5waWQgPSB0aGlzLmlkO1xyXG5cdFx0fVxyXG5cdFx0aWYgKCFwYXJhbT8uYWRkRGF0YSAmJiAhcGFyYW0udXBkRGF0YSkge1xyXG5cdFx0XHRwYXJhbSA9IHsgdXBkRGF0YTogeyBpZDogdGhpcy5pZCB9LCAuLi5wYXJhbSB9O1xyXG5cdFx0fVxyXG5cdFx0Y29uc29sZS5sb2coJ3RoaXMuaXNMb2ctLS0tJywgdGhpcy5pc0xvZyk7XHJcblx0XHRpZiAoIXRoaXMuaXNMb2cpIHtcclxuXHRcdFx0ZGVsZXRlIHBhcmFtLmxvZztcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGxldCBsZzogc3RyaW5nID0gJyc7XHJcblx0XHRcdC8vIEB0cy1pZ25vcmVcclxuXHRcdFx0Y29uc3QgaXNJMThuID0gd2luZG93LmFwcElzSTE4blxyXG5cdFx0XHRsZXQgY3JlYXRlU3RyID0gaXNJMThuID8gdGhpcy5pMThuLmZhbnlpKCdhcHAuY3JlYXRlJykgOifmlrDlu7onXHJcblx0XHRcdHBhcmFtLnN1YnNlcnQ/LmZvckVhY2goKHYpID0+IHtcclxuXHRcdFx0XHR2LmxvZ3RtcD8uZm9yRWFjaCgodiwgaykgPT4ge1xyXG5cdFx0XHRcdFx0aWYgKHYuaWQgPT09IDApIHtcclxuXHRcdFx0XHRcdFx0bGcgKz0gYCR7Y3JlYXRlU3Ryfe+8miAtPiAke3YubmV3VmFsdWV9O2BcclxuXHRcdFx0XHRcdFx0Ly8gbGcgKz0gJ+aWsOW7uu+8miAtPiAnICsgdi5uZXdWYWx1ZSArICc7JztcclxuXHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdGxnICs9ICdbJyArIHYuaWQgKyAnLScgKyB2LmxhYmVsICsgJ10gJyArICh2Lm9sZFZhbHVlIHx8ICcnKSArICcgLT4gJyArICh2Lm5ld1ZhbHVlIHx8ICcnKSArICc7JztcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fSk7XHJcblx0XHRcdHBhcmFtID0geyAuLi5wYXJhbSwgbG9nOiB7IC4uLnBhcmFtLmxvZywgc3ViQ29udGVudDogbGcgfSB9O1xyXG5cdFx0fVxyXG5cdFx0Y29uc29sZS5sb2coJ3BhcmFtPT09PScsIHBhcmFtKTtcclxuXHRcdHJldHVybiB0aGlzLmh0dHAucG9zdChhcGlQYXRoICsgJ3Vwc2VydCcsIHBhcmFtKS5waXBlKFxyXG5cdFx0XHRtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuXHRcdFx0XHRpZiAocGFyYW0ubG9nKSB7XHJcblx0XHRcdFx0XHRkZWxldGUgcGFyYW0ubG9nO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRyZXR1cm4gcmVzcG9uc2U7XHJcblx0XHRcdH0pLFxyXG5cdFx0XHRmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgLy8gdGhpcy5sb2FkaW5nU2VydmljZS5zZXRMb2FkaW5nKGZhbHNlKTtcclxuXHRcdFx0fSksXHJcblx0XHQpO1xyXG5cdH1cclxuXHQvL+iHquWkhOeQhumAu+i+kVxyXG5cdGRlYWwocHJtPzogRGVhbCkge1xyXG5cdFx0aWYgKHBybSkge1xyXG5cdFx0XHR0aGlzLndlYl9kZWFsKHBybSkuc3Vic2NyaWJlKCk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLndlYl9kZWFsKHRoaXMuZGVhbFBybSkuc3Vic2NyaWJlKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cdHdlYl9kZWFsKHBhcmFtOiBEZWFsKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIC8vIHRoaXMubG9hZGluZ1NlcnZpY2Uuc2V0TG9hZGluZyh0cnVlKTtcclxuXHRcdHJldHVybiB0aGlzLmh0dHAucG9zdChhcGlQYXRoICsgJ2RlYWwnLCBwYXJhbSkucGlwZShcclxuXHRcdFx0bWFwKChyZXNwb25zZTogYW55KSA9PiB7XHJcblx0XHRcdFx0dGhpcy5kZWFsUHJtID0geyBkYXRhOiByZXNwb25zZSwgLi4udGhpcy5kZWFsUHJtIH07XHJcblx0XHRcdFx0cmV0dXJuIHJlc3BvbnNlO1xyXG5cdFx0XHR9KSxcclxuXHRcdFx0ZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgIC8vIHRoaXMubG9hZGluZ1NlcnZpY2Uuc2V0TG9hZGluZyhmYWxzZSk7XHJcblx0XHRcdH0pLFxyXG5cdFx0KTtcclxuXHR9XHJcblx0Ly/kvKDlhaVtYXDvvIzmoLnmja5JRO+8jOabtOaWsG1hcOaVsOaNrlxyXG5cdHdyaXRlKHBybT86IFdyaXRlKSB7XHJcblx0XHRpZiAocHJtKSB7XHJcblx0XHRcdHRoaXMud2ViX3dyaXRlKHBybSkuc3Vic2NyaWJlKCk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLndlYl93cml0ZSh0aGlzLndyaXRlUHJtKS5zdWJzY3JpYmUoKTtcclxuXHRcdH1cclxuXHR9XHJcblx0d2ViX3dyaXRlKHBhcmFtOiBXcml0ZSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAvLyB0aGlzLmxvYWRpbmdTZXJ2aWNlLnNldExvYWRpbmcodHJ1ZSk7XHJcblx0XHRpZiAoIXBhcmFtLm1vZGVsTmFtZSkge1xyXG5cdFx0XHRwYXJhbSA9IHsgbW9kZWxOYW1lOiB0aGlzLm1vZGVsTmFtZSwgLi4ucGFyYW0gfTtcclxuXHRcdH1cclxuXHRcdHJldHVybiB0aGlzLmh0dHAucG9zdChhcGlQYXRoICsgJ3dyaXRlJywgcGFyYW0pLnBpcGUoXHJcblx0XHRcdG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG5cdFx0XHRcdGlmIChwYXJhbS5sb2cpIHtcclxuXHRcdFx0XHRcdGRlbGV0ZSBwYXJhbS5sb2c7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHJldHVybiByZXNwb25zZTtcclxuXHRcdFx0fSksXHJcblx0XHRcdGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAvLyB0aGlzLmxvYWRpbmdTZXJ2aWNlLnNldExvYWRpbmcoZmFsc2UpO1xyXG5cdFx0XHR9KSxcclxuXHRcdCk7XHJcblx0fVxyXG5cdC8v5qC55o2uSUTliKDpmaRcclxuXHRyZW1vdmUocHJtPzogUmVtb3ZlKSB7XHJcblx0XHRpZiAocHJtKSB7XHJcblx0XHRcdHRoaXMud2ViX3JlbW92ZShwcm0pLnN1YnNjcmliZSgpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy53ZWJfcmVtb3ZlKHRoaXMucmVtb3ZlUHJtKS5zdWJzY3JpYmUoKTtcclxuXHRcdH1cclxuXHR9XHJcblx0d2ViX3JlbW92ZShwYXJhbTogUmVtb3ZlKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIC8vIHRoaXMubG9hZGluZ1NlcnZpY2Uuc2V0TG9hZGluZyh0cnVlKTtcclxuXHRcdHJldHVybiB0aGlzLmh0dHAucG9zdChhcGlQYXRoICsgJ3JlbW92ZScsIHBhcmFtKS5waXBlKFxyXG5cdFx0XHRtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuXHRcdFx0XHRpZiAocGFyYW0ubG9nKSB7XHJcblx0XHRcdFx0XHRkZWxldGUgcGFyYW0ubG9nO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRyZXR1cm4gcmVzcG9uc2U7XHJcblx0XHRcdH0pLFxyXG5cdFx0XHRmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgLy8gdGhpcy5sb2FkaW5nU2VydmljZS5zZXRMb2FkaW5nKGZhbHNlKTtcclxuXHRcdFx0fSksXHJcblx0XHQpO1xyXG5cdH1cclxuXHQvL+agueaNrklE6I635Y+W5LiA5p2h5pWw5o2uXHJcblx0Z2V0KHBybT86IEdldCkge1xyXG5cdFx0aWYgKHBybSkge1xyXG5cdFx0XHR0aGlzLndlYl9nZXQocHJtKS5zdWJzY3JpYmUoKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMud2ViX2dldCh0aGlzLmdldFBybSkuc3Vic2NyaWJlKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cdHdlYl9nZXQocGFyYW06IEdldCk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRpZiAoIXBhcmFtLmhhc093blByb3BlcnR5KCdtb2RlbE5hbWUnKSkge1xyXG5cdFx0XHRwYXJhbS5tb2RlbE5hbWUgPSB0aGlzLm1vZGVsTmFtZTtcclxuXHRcdH1cclxuICAgIC8vIHRoaXMubG9hZGluZ1NlcnZpY2Uuc2V0TG9hZGluZyh0cnVlKTtcclxuXHRcdHJldHVybiB0aGlzLmh0dHAucG9zdChhcGlQYXRoICsgJ2dldCcsIHBhcmFtKS5waXBlKFxyXG5cdFx0XHRtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuXHRcdFx0XHR0aGlzLmdldFBybS5kYXRhID0gcmVzcG9uc2U7XHJcblx0XHRcdFx0aWYgKHJlc3BvbnNlLmlkID09PSAwICYmIHBhcmFtLmhhc093blByb3BlcnR5KCdmb3JlaWduS2V5JykpIHtcclxuXHRcdFx0XHRcdHRoaXMudXBzZXJ0UHJtLmFkZERhdGEhW3BhcmFtLmZvcmVpZ25LZXkhXSA9IHBhcmFtW3BhcmFtLmZvcmVpZ25LZXkhXTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dGhpcy5pZCA9IHJlc3BvbnNlPy5pZDtcclxuXHRcdFx0XHRyZXR1cm4gcmVzcG9uc2U7XHJcblx0XHRcdH0pLFxyXG5cdFx0XHRmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgLy8gdGhpcy5sb2FkaW5nU2VydmljZS5zZXRMb2FkaW5nKGZhbHNlKTtcclxuXHRcdFx0fSksXHJcblx0XHQpO1xyXG5cdH1cclxuXHQvL+iOt+WPluWkmuadoeaVsOaNru+8jOagueaNruS8oOWFpeeahOadoeS7tuiHquWKqOe7hOe7h3NxbFxyXG5cdHNlYXJjaChwcm0/OiBTZWFyY2gpIHtcclxuXHRcdGlmIChwcm0pIHtcclxuXHRcdFx0dGhpcy53ZWJfc2VhcmNoKHBybSkuc3Vic2NyaWJlKCk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLndlYl9zZWFyY2godGhpcy5zZWFyY2hQcm0pLnN1YnNjcmliZSgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHR3ZWJfc2VhcmNoKHBhcmFtOiBTZWFyY2gpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgLy8gdGhpcy5sb2FkaW5nU2VydmljZS5zZXRMb2FkaW5nKHRydWUpO1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cC5wb3N0KGFwaVBhdGggKyAnc2VhcmNoJywgcGFyYW0pLnBpcGUoXHJcblx0XHRcdG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG5cdFx0XHRcdHRoaXMuc2VhcmNoUHJtID0geyAuLi5yZXNwb25zZSB9O1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKCd1cHNleS0tLS0tJywgdGhpcy51cHNlcnRQcm0pO1xyXG5cdFx0XHRcdHJldHVybiByZXNwb25zZTtcclxuXHRcdFx0fSksXHJcblx0XHRcdGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAvLyB0aGlzLmxvYWRpbmdTZXJ2aWNlLnNldExvYWRpbmcoZmFsc2UpO1xyXG5cdFx0XHR9KSxcclxuXHRcdCk7XHJcblx0fVxyXG5cdHNlYXJjaG1hcChwcm0/OiBTZWFyY2gpIHtcclxuXHRcdGlmIChwcm0pIHtcclxuXHRcdFx0dGhpcy53ZWJfc2VhcmNoKHBybSkuc3Vic2NyaWJlKCk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLndlYl9zZWFyY2godGhpcy5zZWFyY2hQcm0pLnN1YnNjcmliZSgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHR3ZWJfc2VhcmNobWFwKHBhcmFtOiBTZWFyY2gpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgLy8gdGhpcy5sb2FkaW5nU2VydmljZS5zZXRMb2FkaW5nKHRydWUpO1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cC5wb3N0KGFwaVBhdGggKyAnc2VhcmNoTWFwJywgcGFyYW0pLnBpcGUoXHJcblx0XHRcdG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG5cdFx0XHRcdHRoaXMuc2VhcmNoUHJtID0geyAuLi5yZXNwb25zZSB9O1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKCd1cHNleS0tLS0tJywgdGhpcy51cHNlcnRQcm0pO1xyXG5cdFx0XHRcdHJldHVybiByZXNwb25zZTtcclxuXHRcdFx0fSksXHJcblx0XHRcdGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAvLyB0aGlzLmxvYWRpbmdTZXJ2aWNlLnNldExvYWRpbmcoZmFsc2UpO1xyXG5cdFx0XHR9KSxcclxuXHRcdCk7XHJcblx0fVxyXG5cdC8v6I635Y+W5aSa5p2h5pWw5o2u77yM5qC55o2u5Lyg5YWl55qE5p2h5Lu26Ieq5Yqo57uE57uHc3FsXHJcblx0c2VhcmNoQ291bnQocHJtPzogU2VhcmNoKSB7XHJcblx0XHRpZiAocHJtKSB7XHJcblx0XHRcdHRoaXMud2ViX3NlYXJjaENvdW50KHBybSkuc3Vic2NyaWJlKCk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLndlYl9zZWFyY2hDb3VudCh0aGlzLnNlYXJjaFBybSkuc3Vic2NyaWJlKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cdHdlYl9zZWFyY2hDb3VudChwYXJhbTogU2VhcmNoKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIC8vIHRoaXMubG9hZGluZ1NlcnZpY2Uuc2V0TG9hZGluZyh0cnVlKTtcclxuXHRcdHJldHVybiB0aGlzLmh0dHAucG9zdChhcGlQYXRoICsgJ3NlYXJjaENvdW50JywgcGFyYW0pLnBpcGUoXHJcblx0XHRcdG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG5cdFx0XHRcdHRoaXMuc2VhcmNoUHJtID0geyAuLi5yZXNwb25zZSB9O1xyXG5cdFx0XHRcdHJldHVybiByZXNwb25zZTtcclxuXHRcdFx0fSksXHJcblx0XHRcdGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAvLyB0aGlzLmxvYWRpbmdTZXJ2aWNlLnNldExvYWRpbmcoZmFsc2UpO1xyXG5cdFx0XHR9KSxcclxuXHRcdCk7XHJcblx0fVxyXG5cdC8vZXhjZWzlr7zlhaVcclxuXHQvLyBpbXBvcnQocGFyYW06IEltcG9ydEV4Y2VsKTpPYnNlcnZhYmxlPGFueT4ge1xyXG5cdC8vICAgdGhpcy5pc0xvYWRpbmcuc2V0KHRydWUpO1xyXG5cdC8vICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFwiYW0vcmVtb3ZlXCIscGFyYW0saHR0cE9wdGlvbnMpXHJcblx0Ly8gICAucGlwZShcclxuXHQvLyAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PntcclxuXHQvLyAgICAgICB0aGlzLm1lc3NhZ2Uuc2V0KHJlc3BvbnNlKTtcclxuXHQvLyAgICAgICB0aGlzLmlzU3VjY2Vzcy5zZXQodHJ1ZSk7XHJcblx0Ly8gICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG5cdC8vICAgICB9KSxcclxuXHQvLyAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuXHQvLyAgICAgICAvLyDoi6Xor7fmsYLlh7rplJnvvIzorr7nva7or7fmsYLmiJDlip/nirbmgIHkuLogZmFsc2XvvIzlubblsIbplJnor6/ph43mlrDmipvlh7pcclxuXHQvLyAgICAgICB0aGlzLmlzU3VjY2Vzcy5zZXQoZmFsc2UpO1xyXG5cdC8vICAgICAgIHRoaXMubWVzc2FnZS5zZXQoZXJyb3IpO1xyXG5cdC8vICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcclxuXHQvLyAgICAgfSksXHJcblx0Ly8gICAgIGZpbmFsaXplKCgpID0+IHtcclxuXHQvLyAgICAgICAvLyDml6Dorrror7fmsYLmiJDlip/kuI7lkKbvvIzpg73lsIbliqDovb3kuK3nirbmgIHorr7nva7kuLogZmFsc2VcclxuXHQvLyAgICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xyXG5cdC8vICAgICB9KVxyXG5cdC8vICAgKTtcclxuXHQvLyB9XHJcblx0Ly8vL2V4Y2VsIOWvvOWHulxyXG5cdGV4cG9ydChwcm0/OiBTZWFyY2gpIHtcclxuXHRcdGlmIChwcm0pIHtcclxuXHRcdFx0dGhpcy53ZWJfZXhwb3J0KHBybSkuc3Vic2NyaWJlKCk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLndlYl9leHBvcnQodGhpcy5leHBvcnRQcm0pLnN1YnNjcmliZSgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHR3ZWJfZXhwb3J0KHBhcmFtOiBTZWFyY2gpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0aWYgKCFwYXJhbS5tb2RlbE5hbWUpIHtcclxuXHRcdFx0cGFyYW0gPSB7IG1vZGVsTmFtZTogdGhpcy5tb2RlbE5hbWUsIC4uLnBhcmFtIH07XHJcblx0XHR9XHJcbiAgICAvLyB0aGlzLmxvYWRpbmdTZXJ2aWNlLnNldExvYWRpbmcodHJ1ZSk7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwLnBvc3QoYXBpUGF0aCArICdleHBvcnQnLCBwYXJhbSwgeyByZXNwb25zZVR5cGU6ICdibG9iJyB9KS5waXBlKFxyXG5cdFx0XHRtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuXHRcdFx0XHRjb25zdCBkYXRhOiBCbG9iID0gbmV3IEJsb2IoW3Jlc3BvbnNlXSwge1xyXG5cdFx0XHRcdFx0dHlwZTogJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0OyBjaGFyc2V0PVVURi04JyxcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHRjb25zdCBmaWxlTmFtZSA9IHBhcmFtLm1vZGVsTmFtZSArICcueGxzeCc7XHJcblx0XHRcdFx0RmlsZVNhdmVyLnNhdmVBcyhkYXRhLCBmaWxlTmFtZSk7XHJcblx0XHRcdFx0cmV0dXJuIHJlc3BvbnNlO1xyXG5cdFx0XHR9KSxcclxuXHRcdFx0ZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgIC8vIHRoaXMubG9hZGluZ1NlcnZpY2Uuc2V0TG9hZGluZyhmYWxzZSk7XHJcblx0XHRcdH0pLFxyXG5cdFx0KTtcclxuXHR9XHJcblx0Ly/kurrlt6XlpITnkIblr7zlhaVcclxuXHRkZWFsRXhwb3J0KHBybT86IERlYWxFeHBvcnQpIHtcclxuXHRcdGlmIChwcm0pIHtcclxuXHRcdFx0dGhpcy53ZWJfZGVhbF9leHBvcnQocHJtKS5zdWJzY3JpYmUoKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMud2ViX2RlYWxfZXhwb3J0KHRoaXMuZXhwb3J0UHJtKS5zdWJzY3JpYmUoKTtcclxuXHRcdH1cclxuXHR9XHJcblx0d2ViX2RlYWxfZXhwb3J0KHBhcmFtOiBEZWFsRXhwb3J0KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHRcdGlmICghcGFyYW0ubW9kZWxOYW1lKSB7XHJcblx0XHRcdHBhcmFtID0geyBtb2RlbE5hbWU6IHRoaXMubW9kZWxOYW1lLCAuLi5wYXJhbSB9O1xyXG5cdFx0fVxyXG4gICAgLy8gdGhpcy5sb2FkaW5nU2VydmljZS5zZXRMb2FkaW5nKHRydWUpO1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cC5wb3N0KGFwaVBhdGggKyAnZGVhbEV4cG9ydCcsIHBhcmFtLCB7IHJlc3BvbnNlVHlwZTogJ2Jsb2InIH0pLnBpcGUoXHJcblx0XHRcdG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG5cdFx0XHRcdGNvbnN0IGRhdGE6IEJsb2IgPSBuZXcgQmxvYihbcmVzcG9uc2VdLCB7XHJcblx0XHRcdFx0XHR0eXBlOiAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQ7IGNoYXJzZXQ9VVRGLTgnLFxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdC8vIGNvbnN0IGZpbGVOYW1lID0gcGFyYW0ubW9kZWxOYW1lICsgJy54bHN4JztcclxuXHRcdFx0XHRjb25zdCBmaWxlTmFtZSA9IGAke3BhcmFtPy5maWxlTmFtZSA/IHBhcmFtLmZpbGVOYW1lIDogcGFyYW0ubW9kZWxOYW1lfS54bHN4YFxyXG5cdFx0XHRcdEZpbGVTYXZlci5zYXZlQXMoZGF0YSwgZmlsZU5hbWUpO1xyXG5cdFx0XHRcdHJldHVybiByZXNwb25zZTtcclxuXHRcdFx0fSksXHJcblx0XHRcdGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAvLyB0aGlzLmxvYWRpbmdTZXJ2aWNlLnNldExvYWRpbmcoZmFsc2UpO1xyXG5cdFx0XHR9KSxcclxuXHRcdCk7XHJcblx0fVxyXG5cdC8v5LiL6L295a+85YWl55qE5qih5p2/XHJcblx0ZG93bmxvYWRUZW1wbGF0ZShwcm0/OiBEZWFsKSB7XHJcblx0XHRpZiAocHJtKSB7XHJcblx0XHRcdHRoaXMud2ViX2Rvd25sb2FkVGVtcGxhdGUocHJtKS5zdWJzY3JpYmUoKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMud2ViX2Rvd25sb2FkVGVtcGxhdGUodGhpcy50YW1wbGF0ZSkuc3Vic2NyaWJlKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cdHdlYl9kb3dubG9hZFRlbXBsYXRlKHBhcmFtOiBEZWFsKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIC8vIHRoaXMubG9hZGluZ1NlcnZpY2Uuc2V0TG9hZGluZyh0cnVlKTtcclxuXHRcdHJldHVybiB0aGlzLmh0dHAucG9zdChhcGlQYXRoICsgJ2Rvd25sb2FkJywgcGFyYW0sIHsgcmVzcG9uc2VUeXBlOiAnYmxvYicgfSkucGlwZShcclxuXHRcdFx0bWFwKChyZXNwb25zZTogYW55KSA9PiB7XHJcblx0XHRcdFx0Y29uc3QgZGF0YTogQmxvYiA9IG5ldyBCbG9iKFtyZXNwb25zZV0sIHtcclxuXHRcdFx0XHRcdHR5cGU6ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldDsgY2hhcnNldD1VVEYtOCcsXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0Y29uc3QgZmlsZU5hbWUgPSBwYXJhbS5tb2RlbE5hbWUgKyAn5qih5p2/Lnhsc3gnO1xyXG5cdFx0XHRcdEZpbGVTYXZlci5zYXZlQXMoZGF0YSwgZmlsZU5hbWUpO1xyXG5cdFx0XHRcdHJldHVybiByZXNwb25zZTtcclxuXHRcdFx0fSksXHJcblx0XHRcdGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAvLyB0aGlzLmxvYWRpbmdTZXJ2aWNlLnNldExvYWRpbmcoZmFsc2UpO1xyXG5cdFx0XHR9KSxcclxuXHRcdCk7XHJcblx0fVxyXG5cdC8v5Yig6Zmk5Zu+54mHXHJcblx0aW1hZ2VEZWxldGUoZmlkPzogc3RyaW5nKSB7XHJcblx0XHRpZiAoZmlkKSB7XHJcblx0XHRcdHRoaXMud2ViX2ltYWdlRGVsZXRlKGZpZCkuc3Vic2NyaWJlKCk7XHJcblx0XHR9IGVsc2UgaWYgKHRoaXMuZmlkLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0dGhpcy53ZWJfaW1hZ2VEZWxldGUodGhpcy5maWQpLnN1YnNjcmliZSgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHR3ZWJfaW1hZ2VEZWxldGUoZmlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgLy8gdGhpcy5sb2FkaW5nU2VydmljZS5zZXRMb2FkaW5nKHRydWUpO1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cC5wb3N0KGFwaVBhdGggKyAnaW1hZ2VEZWxldGUnLCBmaWQpLnBpcGUoXHJcblx0XHRcdG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG5cdFx0XHRcdHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdzdWNjZXNzJywgc3VtbWFyeTogJ1N1Y2Nlc3MnLCBkZXRhaWw6IHJlc3BvbnNlIH0pO1xyXG5cdFx0XHRcdHJldHVybiByZXNwb25zZTtcclxuXHRcdFx0fSksXHJcblx0XHRcdGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAvLyB0aGlzLmxvYWRpbmdTZXJ2aWNlLnNldExvYWRpbmcoZmFsc2UpO1xyXG5cdFx0XHR9KSxcclxuXHRcdCk7XHJcblx0fVxyXG5cdC8v5Yig6Zmk5Zu+54mHXHJcblx0ZmlsZXJEZWxldGUoZmlkPzogc3RyaW5nKSB7XHJcblx0XHRpZiAoZmlkKSB7XHJcblx0XHRcdHRoaXMud2ViX2ZpbGVyRGVsZXRlKGZpZCkuc3Vic2NyaWJlKCk7XHJcblx0XHR9IGVsc2UgaWYgKHRoaXMuZmlkLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0dGhpcy53ZWJfZmlsZXJEZWxldGUodGhpcy5maWQpLnN1YnNjcmliZSgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHR3ZWJfZmlsZXJEZWxldGUoZmlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgLy8gdGhpcy5sb2FkaW5nU2VydmljZS5zZXRMb2FkaW5nKHRydWUpO1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cC5wb3N0KGFwaVBhdGggKyAnaW1hZ2VEZWxldGUnLCBmaWQpLnBpcGUoXHJcblx0XHRcdG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG5cdFx0XHRcdHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdzdWNjZXNzJywgc3VtbWFyeTogJ1N1Y2Nlc3MnLCBkZXRhaWw6IHJlc3BvbnNlIH0pO1xyXG5cdFx0XHRcdHJldHVybiByZXNwb25zZTtcclxuXHRcdFx0fSksXHJcblx0XHRcdGZpbmFsaXplKCgpID0+IHtcclxuXHRcdFx0XHQvLyB0aGlzLmxvYWRpbmdTZXJ2aWNlLnNldExvYWRpbmcoZmFsc2UpO1xyXG5cdFx0XHR9KSxcclxuXHRcdCk7XHJcblx0fVxyXG5cdC8v5Yi35pawdG9rZW5cclxuXHRyZWZyZXNoVG9rZW4ocGFyYW06IFRva2VuSW5mbyk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwLnBvc3QoYXBpUGF0aCArICdyZWZyZXNoVG9rZW4nLCBwYXJhbSkucGlwZShcclxuXHRcdFx0bWFwKChyZXNwb25zZTogYW55KSA9PiB7XHJcblx0XHRcdFx0dGhpcy5kZWFsUHJtID0geyBkYXRhOiByZXNwb25zZSwgLi4udGhpcy5kZWFsUHJtIH07XHJcblx0XHRcdFx0cmV0dXJuIHJlc3BvbnNlO1xyXG5cdFx0XHR9KSxcclxuXHRcdFx0ZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgIC8vIHRoaXMubG9hZGluZ1NlcnZpY2Uuc2V0TG9hZGluZyhmYWxzZSk7XHJcblx0XHRcdH0pLFxyXG5cdFx0KTtcclxuXHR9XHJcblx0Ly/liJvlu7rooahcclxuXHRjcmVhdGVUYWJsZShwcm0/OiBQYXJhbSkge1xyXG5cdFx0aWYgKHBybSkge1xyXG5cdFx0XHR0aGlzLndlYl9jcmVhdGVUYWJsZShwcm0pLnN1YnNjcmliZSgpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy53ZWJfY3JlYXRlVGFibGUodGhpcy5wYXJhbSkuc3Vic2NyaWJlKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cdHdlYl9jcmVhdGVUYWJsZShwYXJhbTogUGFyYW0pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgLy8gdGhpcy5sb2FkaW5nU2VydmljZS5zZXRMb2FkaW5nKHRydWUpO1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cC5wb3N0KGFwaVBhdGggKyAnY3JlYXRlVGFibGUnLCBwYXJhbSkucGlwZShcclxuXHRcdFx0bWFwKChyZXNwb25zZTogYW55KSA9PiB7XHJcblx0XHRcdFx0Ly8gdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe3NldmVyaXR5OiAnc3VjY2Vzcycsc3VtbWFyeTogJ1N1Y2Nlc3MnLGRldGFpbDogcmVzcG9uc2V9KVxyXG5cdFx0XHRcdHJldHVybiByZXNwb25zZTtcclxuXHRcdFx0fSksXHJcblx0XHRcdGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAvLyB0aGlzLmxvYWRpbmdTZXJ2aWNlLnNldExvYWRpbmcoZmFsc2UpO1xyXG5cdFx0XHR9KSxcclxuXHRcdCk7XHJcblx0fVxyXG5cdC8vIOaaguaXoOehruWumuaYr+WQpumHjee9ruWFtuS7luWFrOWFseWPmOmHj1xyXG5cdHJlc2V0UHJtKHNlYXJjaD86IHN0cmluZykge1xyXG5cdFx0c3dpdGNoIChzZWFyY2gpIHtcclxuXHRcdFx0Y2FzZSAndXBzZXJ0JzpcclxuXHRcdFx0XHR0aGlzLnVwc2VydFBybS5hZGREYXRhID0ge307XHJcblx0XHRcdFx0dGhpcy51cHNlcnRQcm0udXBkRGF0YSA9IHt9O1xyXG5cdFx0XHRcdHRoaXMudXBzZXJ0UHJtLmxvZyA9IHt9O1xyXG5cdFx0XHRcdHRoaXMudXBzZXJ0UHJtLnN1YnNlcnQ/LmZvckVhY2goKHYpID0+IHtcclxuXHRcdFx0XHRcdHYubG9ndG1wID0gbmV3IE1hcCgpO1xyXG5cdFx0XHRcdFx0di5tYXB0bXAgPSBuZXcgTWFwKCk7XHJcblx0XHRcdFx0XHR2LnN1YkRhdGEgPSBbXTtcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0ZGVmYXVsdDpcclxuXHRcdFx0XHQnJztcclxuXHRcdH1cclxuXHR9XHJcblx0Ly/oh6rlpITnkIbpgLvovpFcclxuXHRkZWFsUXVlcnkocHJtPzogRGVhbCkge1xyXG5cdFx0aWYgKHBybSkge1xyXG5cdFx0XHR0aGlzLndlYkRlYWxRdWVyeShwcm0pLnN1YnNjcmliZSgpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy53ZWJEZWFsUXVlcnkodGhpcy5kZWFsUHJtKS5zdWJzY3JpYmUoKTtcclxuXHRcdH1cclxuXHR9XHJcblx0d2ViRGVhbFF1ZXJ5KHBhcmFtOiBEZWFsKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIC8vIHRoaXMubG9hZGluZ1NlcnZpY2Uuc2V0TG9hZGluZyh0cnVlKTtcclxuXHRcdHJldHVybiB0aGlzLmh0dHAucG9zdChhcGlQYXRoICsgJ2RlYWxRdWVyeScsIHBhcmFtKS5waXBlKFxyXG5cdFx0XHRtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuXHRcdFx0XHR0aGlzLmRlYWxQcm0gPSB7IGRhdGE6IHJlc3BvbnNlLCAuLi50aGlzLmRlYWxQcm0gfTtcclxuXHRcdFx0XHRyZXR1cm4gcmVzcG9uc2U7XHJcblx0XHRcdH0pLFxyXG5cdFx0XHRmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgLy8gdGhpcy5sb2FkaW5nU2VydmljZS5zZXRMb2FkaW5nKGZhbHNlKTtcclxuXHRcdFx0fSksXHJcblx0XHQpO1xyXG5cdH1cclxuXHRkZWFsQ3VzdG9tKHBybT86IERlYWwpIHtcclxuXHRcdGlmIChwcm0pIHtcclxuXHRcdFx0dGhpcy53ZWJEZWFsQ3VzdG9tKHBybSkuc3Vic2NyaWJlKCk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLndlYkRlYWxDdXN0b20odGhpcy5kZWFsUHJtKS5zdWJzY3JpYmUoKTtcclxuXHRcdH1cclxuXHR9XHJcblx0d2ViRGVhbEN1c3RvbShwYXJhbTogRGVhbCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAvLyB0aGlzLmxvYWRpbmdTZXJ2aWNlLnNldExvYWRpbmcodHJ1ZSk7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwLnBvc3QoYXBpUGF0aCArICdkZWFsQ3VzdG9tJywgcGFyYW0pLnBpcGUoXHJcblx0XHRcdG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG5cdFx0XHRcdHRoaXMuZGVhbFBybSA9IHsgZGF0YTogcmVzcG9uc2UsIC4uLnRoaXMuZGVhbFBybSB9O1xyXG5cdFx0XHRcdHJldHVybiByZXNwb25zZTtcclxuXHRcdFx0fSksXHJcblx0XHRcdGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAvLyB0aGlzLmxvYWRpbmdTZXJ2aWNlLnNldExvYWRpbmcoZmFsc2UpO1xyXG5cdFx0XHR9KSxcclxuXHRcdCk7XHJcblx0fVxyXG5cdGRlYWxTdWJtaXQocHJtPzogRGVhbCkge1xyXG5cdFx0aWYgKHBybSkge1xyXG5cdFx0XHR0aGlzLndlYkRlYWxDdXN0b20ocHJtKS5zdWJzY3JpYmUoKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMud2ViRGVhbEN1c3RvbSh0aGlzLmRlYWxQcm0pLnN1YnNjcmliZSgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHR3ZWJEZWFsU3VibWl0KHBhcmFtOiBEZWFsKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIC8vIHRoaXMubG9hZGluZ1NlcnZpY2Uuc2V0TG9hZGluZyh0cnVlKTtcclxuXHRcdHJldHVybiB0aGlzLmh0dHAucG9zdChhcGlQYXRoICsgJ2RlYWxTdWJtaXQnLCBwYXJhbSkucGlwZShcclxuXHRcdFx0bWFwKChyZXNwb25zZTogYW55KSA9PiB7XHJcblx0XHRcdFx0dGhpcy5kZWFsUHJtID0geyBkYXRhOiByZXNwb25zZSwgLi4udGhpcy5kZWFsUHJtIH07XHJcblx0XHRcdFx0cmV0dXJuIHJlc3BvbnNlO1xyXG5cdFx0XHR9KSxcclxuXHRcdFx0ZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgIC8vIHRoaXMubG9hZGluZ1NlcnZpY2Uuc2V0TG9hZGluZyhmYWxzZSk7XHJcblx0XHRcdH0pLFxyXG5cdFx0KTtcclxuXHR9XHJcbn1cclxuIl19
531
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW1tLWVsZW1lbnQtdWkvc3JjL2xpYi9hbS9hbS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBd0IsUUFBUSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJFLE9BQU8sS0FBSyxTQUFTLE1BQU0sWUFBWSxDQUFDO0FBR3hDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFNUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQXVJdEQsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDO0FBUW5CLE1BQU0sT0FBTyxXQUFXO0lBdUN2QjtRQXRDQSxRQUFRO1FBQ1IsVUFBSyxHQUFZLEtBQUssQ0FBQztRQUN2QixPQUFPO1FBQ1AsT0FBRSxHQUFXLENBQUMsQ0FBQztRQUNmLE1BQU07UUFDTixjQUFTLEdBQVcsRUFBRSxDQUFDO1FBQ3ZCLE1BQU07UUFDTixVQUFLLEdBQVUsRUFBRSxDQUFDO1FBQ2xCLFFBQUcsR0FBVyxFQUFFLENBQUM7UUFDakIsSUFBSTtRQUNKLGNBQVMsR0FBZ0IsRUFBRSxDQUFDO1FBQzVCLElBQUk7UUFDSixrQkFBYSxHQUFrQixFQUFFLENBQUM7UUFDbEMsTUFBTTtRQUNOLGdCQUFXLEdBQWdCLEVBQUUsQ0FBQztRQUM5QixRQUFRO1FBQ1IsY0FBUyxHQUFX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LElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNuRCxPQUFPLFFBQVEsQ0FBQztRQUNqQixDQUFDLENBQUMsRUFDRixRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ1QseUNBQXlDO1FBQzlDLENBQUMsQ0FBQyxDQUNGLENBQUM7SUFDSCxDQUFDOytHQTNpQlcsV0FBVzttR0FBWCxXQUFXLHFEQUZaLENBQUMsY0FBYyxFQUFFLG1CQUFtQixDQUFDLDBCQUR0QyxFQUFFOzs0RkFHQSxXQUFXO2tCQVB2QixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxRQUFRO29CQUNsQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLEVBQUU7b0JBQ1gsUUFBUSxFQUFFLEVBQUU7b0JBQ1osU0FBUyxFQUFFLENBQUMsY0FBYyxFQUFFLG1CQUFtQixDQUFDO2lCQUNoRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgZWZmZWN0LCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmluYWxpemUsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgKiBhcyBGaWxlU2F2ZXIgZnJvbSAnZmlsZS1zYXZlcic7XHJcbmltcG9ydCB7IEZvcm1PcHRpb25zIH0gZnJvbSAnLi4vZm9ybS9mb3JtL2Zvcm0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2VhcmNoT3B0aW9ucyB9IGZyb20gJy4uL3NlYXJjaC9zZWFyY2gvc2VhcmNoLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvblNlcnZpY2UsIE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBUb2FzdCB9IGZyb20gJ3ByaW1lbmcvdG9hc3QnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgTG9hZGluZ1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlL2xvYWRpbmcuc2VydmljZSc7XHJcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlL2kxOG4uc2VydmljZSc7XHJcbmV4cG9ydCBpbnRlcmZhY2UgUGFyYW0ge1xyXG5cdGlkPzogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFRyYWNlTWVzc2FnZSB7XHJcblx0aWQ/OiBudW1iZXI7XHJcblx0cGlkPzogbnVtYmVyOyAvLyDooajkuK1pZFxyXG5cdGZ1bmM/OiBzdHJpbmc7XHJcblx0b3BlcmF0b3I/OiBzdHJpbmc7XHJcblx0Y29udGVudD86IHN0cmluZzsgLy8g5Li76KGo5Y+Y5pu05omA5pyJ5a2X5q615ou85o6l5LiA5Z2XXHJcblx0c3ViQ29udGVudD86IHN0cmluZzsgLy8g5a2Q6KGo5Y+Y5pu05ou85o6l5LiA6LW3XHJcblx0Y3JlYXRlZEF0Pzogc3RyaW5nO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgSW1wb3J0RXhjZWwge1xyXG5cdG1vZGVsTmFtZT86IHN0cmluZztcclxuXHRvcmdJZD86IG51bWJlcjtcclxuXHRvcmdOYW1lPzogc3RyaW5nO1xyXG5cdG9yZ0lkRmVpbGQ/OiBzdHJpbmc7XHJcblx0b3JnTmFtZUZlaWxkPzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFVwc2VydCB7XHJcblx0bW9kZWxOYW1lPzogc3RyaW5nO1xyXG5cdGFkZERhdGE/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG5cdHVwZERhdGE/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG5cdHN1YnNlcnQ/OiBTdWJVcHNlcnRbXTtcclxuXHRsb2dNb2RlbD86IHN0cmluZztcclxuXHRsb2c/OiBUcmFjZU1lc3NhZ2U7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU3ViVXBzZXJ0IHtcclxuXHRzdWJNb2RlbE5hbWU/OiBzdHJpbmc7XHJcblx0Zms/OiBzdHJpbmc7XHJcblx0c3ViRGF0YT86IFJlY29yZDxzdHJpbmcsIGFueT5bXTtcclxuXHRtYXB0bXA/OiBNYXA8bnVtYmVyLCBhbnk+O1xyXG5cdGxvZ3RtcD86IE1hcDxzdHJpbmcsIGFueT47XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBEZWFsIHtcclxuXHRtb2RlbE5hbWU/OiBzdHJpbmc7XHJcblx0ZGF0YT86IGFueTtcclxufVxyXG4vLyDmm7TmlrDnibnlrprlrZfmrrVcclxuZXhwb3J0IGludGVyZmFjZSBXcml0ZSB7XHJcblx0bW9kZWxOYW1lPzogc3RyaW5nO1xyXG5cdGRhdGE/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG5cdGxvZ01vZGVsPzogc3RyaW5nO1xyXG5cdGxvZz86IFRyYWNlTWVzc2FnZTtcclxuXHR0cmFuc2FjdGlvbj86IGJvb2xlYW47XHJcbn1cclxuLy8g5Yig6Zmk5o6l5Y+j5aOw5piOXHJcbmV4cG9ydCBpbnRlcmZhY2UgUmVtb3ZlIHtcclxuXHRtb2RlbE5hbWU/OiBzdHJpbmc7XHJcblx0aWRzPzogbnVtYmVyW107XHJcblx0ZGF0YT86IGFueTtcclxuXHRsb2dNb2RlbD86IHN0cmluZztcclxuXHRsb2c/OiBUcmFjZU1lc3NhZ2U7XHJcblx0dHJhbnNhY3Rpb24/OiBib29sZWFuO1xyXG59XHJcbi8vIOiOt+WPluWNleadoeaVsOaNruivpuaDhVxyXG5leHBvcnQgaW50ZXJmYWNlIEdldCB7XHJcblx0bW9kZWxOYW1lPzogc3RyaW5nO1xyXG5cdHVzZXJDb2RlPzogc3RyaW5nO1xyXG5cdG9yZ0ZpZWxkPzogc3RyaW5nO1xyXG5cdGlkPzogbnVtYmVyO1xyXG5cdHByZWxvYWRzPzogc3RyaW5nW107IC8vIOiBlOihqOafpeivouihqOWQjeensO+8jOmcgOWvueW6lOWQjuerr3N0cnVjdFxyXG5cdGZpdGVyUHJlbG9hZHM/OiBQcmVsb2FkW107IC8vIOWPquiDveWKoOS4gOWxgiDnsbvkvLwgJ21vZHVsZSA9JyBtb2R1bGVcclxuXHRnZXRMb2c/OiBib29sZWFuOyAvL+iOt+WPluaXpeW/l1xyXG5cdGRhdGE/OiBhbnk7IC8v5ZCO56uv6L+U5Zue55qEcmVzcG9uc2VcclxuXHRjb2x1bW5GaWx0ZXJzPzogQ29sdW1uRmlsdGVyW107IC8v6L+H5ruk55qE5YiXXHJcblx0Zm9yZWlnbktleT86IHN0cmluZzsgLy/nm7TmjqXmj5LlhaXlrZDooajpnIDopoHkvKDpgJLlpJbplK7lrZfmrrXku6Xlj4rlpJbplK7lgLxcclxuXHRbcHJvcE5hbWU6IHN0cmluZ106IGFueTtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIFByZWxvYWQge1xyXG5cdGZlaWxkTmFtZT86IHN0cmluZztcclxuXHRmaXRlcnM/OiBDb2x1bW5GaWx0ZXJbXTtcclxuXHRzb3J0cz86IFNvcnRbXTtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIENvbHVtbkZpbHRlciB7XHJcblx0Y29sdW1uRmllbGQ/OiBzdHJpbmc7XHJcblx0dHlwZT86IHN0cmluZztcclxuXHRmaXRlcj86IGFueTtcclxuXHRmcm9tPzogc3RyaW5nIHwgbnVtYmVyO1xyXG5cdHRvPzogc3RyaW5nIHwgbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNvcnQge1xyXG5cdGZpZWxkPzogc3RyaW5nO1xyXG5cdGlzQXNjPzogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTZWFyY2gge1xyXG5cdG1vZGVsTmFtZT86IHN0cmluZztcclxuXHR1c2VyQ29kZT86IHN0cmluZztcclxuXHRvcmdGaWVsZD86IHN0cmluZztcclxuXHRjb3VudD86IGJvb2xlYW47IC8v5piv5ZCm6L+U5ZuedG90YWxOdW1cclxuXHRwcmVsb2Fkcz86IHN0cmluZ1tdO1xyXG5cdGZpdGVyUHJlbG9hZHM/OiBQcmVsb2FkW107XHJcblx0bW9kZWw/OiBhbnk7XHJcblx0ZGF0YT86IGFueTtcclxuXHRjb2x1bW5GaWx0ZXJzPzogQ29sdW1uRmlsdGVyW107IC8v6L+H5ruk55qE5YiXXHJcblx0c29ydHM/OiBTb3J0W107XHJcblx0Z3JvdXBzPzogc3RyaW5nW107XHJcblx0cmVhZD86IHN0cmluZ1tdOyAvL3JlYWQg5oyH5a6a5p+l6K+i54m55a6a5a2X5q61XHJcblx0ZnVuY3M/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+OyAvL+mAj+inhuihqOWQjuacn+imgeeUqFxyXG5cdG9mZnNldD86IG51bWJlcjtcclxuXHRsaW1pdD86IG51bWJlcjtcclxuXHR0b3RhbE51bT86IG51bWJlcjtcclxufVxyXG5pbnRlcmZhY2UgRGVhbEV4cG9ydCBleHRlbmRzIFNlYXJjaHtcclxuXHRmaWxlTmFtZT86c3RyaW5nXHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBUb2tlbkluZm8ge1xyXG5cdHRva2VuPzogc3RyaW5nO1xyXG5cdGV4cGlyZWQ/OiBudW1iZXI7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBhbVdlYiB7XHJcblx0aWQ/OiBudW1iZXI7XHJcblx0Y29kZT86IHN0cmluZztcclxuXHR0eXBlPzogc3RyaW5nO1xyXG5cdG5hbWU/OiBzdHJpbmc7XHJcblx0YXBwSWQ/OiBudW1iZXI7XHJcblx0Y29udGVudD86IHN0cmluZztcclxuXHRjcmVhdGVkQXQ/OiBzdHJpbmc7XHJcblx0dXBkYXRlZEF0Pzogc3RyaW5nO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgUmZkIHtcclxuXHRtb2RlbE5hbWU/OiBzdHJpbmc7XHJcblx0bGFiZWxGaWVsZD86IHN0cmluZztcclxuXHR2YWx1ZUZpZWxkPzogc3RyaW5nO1xyXG5cdHdoZXJlRmllbGQ/OiBzdHJpbmc7XHJcblx0dHlwZT86IHN0cmluZztcclxuXHRmaXRlcj86IGFueTtcclxuXHRkYXRhPzogYW55O1xyXG59XHJcbmNvbnN0IGFwaVBhdGggPSAnJztcclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdhcHAtYW0nLFxyXG5cdHN0YW5kYWxvbmU6IHRydWUsXHJcblx0aW1wb3J0czogW10sXHJcblx0dGVtcGxhdGU6ICcnLFxyXG5cdHByb3ZpZGVyczogW01lc3NhZ2VTZXJ2aWNlLCBDb25maXJtYXRpb25TZXJ2aWNlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFtQ29tcG9uZW50IHtcclxuXHQvL+aYr+WQpuaPkOS6pOaXpeW/l1xyXG5cdGlzTG9nOiBib29sZWFuID0gZmFsc2U7XHJcblx0Ly/kuLvmlbDmja5pZFxyXG5cdGlkOiBudW1iZXIgPSAwO1xyXG5cdC8v5Li76KGo5qih5Z6LXHJcblx0bW9kZWxOYW1lOiBzdHJpbmcgPSAnJztcclxuXHQvL0lE5Y+C5pWwXHJcblx0cGFyYW06IFBhcmFtID0ge307XHJcblx0ZmlkOiBzdHJpbmcgPSAnJztcclxuXHQvL+WvvOWFpVxyXG5cdGltcG9ydFBybTogSW1wb3J0RXhjZWwgPSB7fTtcclxuXHQvL+aQnOe0oFxyXG5cdHNlYXJjaE9wdGlvbnM6IFNlYXJjaE9wdGlvbnMgPSB7fTtcclxuXHQvL2Zvcm1cclxuXHRmb3JtT3B0aW9uczogRm9ybU9wdGlvbnMgPSB7fTtcclxuXHQvL+WIm+W7uuaIluiAheabtOaWsFxyXG5cdHVwc2VydFBybTogVXBzZXJ0ID0geyB1cGREYXRhOiB7fSwgYWRkRGF0YToge30sIHN1YnNlcnQ6IFtdLCBsb2c6IHt9IH07XHJcblx0Ly/lpITnkIZcclxuXHRkZWFsUHJtOiBEZWFsID0ge307XHJcblx0Ly9tYXDmm7TmlrBcclxuXHR3cml0ZVBybTogV3JpdGUgPSB7fTtcclxuXHQvL+WIoOmZpFxyXG5cdHJlbW92ZVBybTogUmVtb3ZlID0ge307XHJcblx0Ly/ojrflj5bkuIDmnaHmlbDmja5cclxuXHRnZXRQcm06IEdldCA9IHsgZGF0YToge30gfTtcclxuXHQvL+afpeivouadoeS7tlxyXG5cdGZpbHRlcjogQ29sdW1uRmlsdGVyID0ge307XHJcblx0Ly/mn6Xor6LliJfooajmlbDmja5cclxuXHRzZWFyY2hQcm06IFNlYXJjaCA9IHt9O1xyXG5cdGV4cG9ydFBybTogU2VhcmNoID0ge307XHJcblx0dGFtcGxhdGU6IERlYWwgPSB7fTtcclxuXHRodHRwOiBIdHRwQ2xpZW50ID0gaW5qZWN0KEh0dHBDbGllbnQpO1xyXG5cdG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSA9IGluamVjdChNZXNzYWdlU2VydmljZSk7XHJcblx0Y29uZmlybWF0aW9uU2VydmljZSA9IGluamVjdChDb25maXJtYXRpb25TZXJ2aWNlKTtcclxuXHRsb2FkaW5nU2VydmljZSA9IGluamVjdChMb2FkaW5nU2VydmljZSk7XHJcblx0cm91dGU6IEFjdGl2YXRlZFJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcclxuXHRyb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcclxuXHRpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKVxyXG5cdGNvbnN0cnVjdG9yKCkge31cclxuXHJcblx0cmZkKHBybTogUmZkKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHRcdHJldHVybiB0aGlzLmh0dHAucG9zdChhcGlQYXRoICsgJ1JGRCcsIHBybSkucGlwZShcclxuXHRcdFx0bWFwKChyZXNwb25zZTogYW55KSA9PiB7XHJcblx0XHRcdFx0cmV0dXJuIHJlc3BvbnNlO1xyXG5cdFx0XHR9KSxcclxuXHRcdFx0ZmluYWxpemUoKCkgPT4ge1xyXG5cdFx0XHRcdHRoaXMubG9hZGluZ1NlcnZpY2Uuc2V0TG9hZGluZyhmYWxzZSk7XHJcblx0XHRcdH0pLFxyXG5cdFx0KTtcclxuXHR9XHJcblx0d2ViZ2V0KHBhcmFtOiBhbVdlYik6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwLnBvc3QoYXBpUGF0aCArICcvZ29hbS9hcGkvd2ViZ2V0JywgcGFyYW0pLnBpcGUoXHJcblx0XHRcdG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG5cdFx0XHRcdHJldHVybiByZXNwb25zZTtcclxuXHRcdFx0fSksXHJcblx0XHRcdGZpbmFsaXplKCgpID0+IHtcclxuXHRcdFx0XHQvLyB0aGlzLmxvYWRpbmdTZXJ2aWNlLnNldExvYWRpbmcoZmFsc2UpO1xyXG5cdFx0XHR9KSxcclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHR3ZWJzYXZlKHBhcmFtOiBhbVdlYik6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwLnBvc3QoYXBpUGF0aCArICcvZ29hbS9hcGkvd2Vic2F2ZScsIHBhcmFtKS5waXBlKFxyXG5cdFx0XHRtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuXHRcdFx0XHRyZXR1cm4gcmVzcG9uc2U7XHJcblx0XHRcdH0pLFxyXG5cdFx0XHRmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgLy8gdGhpcy5sb2FkaW5nU2VydmljZS5zZXRMb2FkaW5nKGZhbHNlKTtcclxuXHRcdFx0fSksXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0d2ViZGVsKHBhcmFtOiBhbVdlYik6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwLnBvc3QoYXBpUGF0aCArICd3ZWJkZWwnLCBwYXJhbSkucGlwZShcclxuXHRcdFx0bWFwKChyZXNwb25zZTogYW55KSA9PiB7XHJcblx0XHRcdFx0cmV0dXJuIHJlc3BvbnNlO1xyXG5cdFx0XHR9KSxcclxuXHRcdFx0ZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgIC8vIHRoaXMubG9hZGluZ1NlcnZpY2Uuc2V0TG9hZGluZyhmYWxzZSk7XHJcblx0XHRcdH0pLFxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdHVwc2VydChwcm0/OiBhbnksIGNiPzogRnVuY3Rpb24pIHtcclxuXHRcdGlmIChwcm0pIHtcclxuXHRcdFx0dGhpcy53ZWJfdXBzZXJ0KHBybSkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuXHRcdFx0XHRjYiAmJiBjYihyZXMpO1xyXG5cdFx0XHRcdHRoaXMucmVzZXRQcm0oJ3Vwc2VydCcpO1xyXG5cdFx0XHR9KTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdC8vIGNvbnN0IHBtOiBVcHNlcnQgPSB0aGlzLnVwc2VydHMoKVxyXG5cdFx0XHQvLyBjb25zb2xlLmxvZygnMT09PT0nLHBtKVxyXG5cdFx0XHR0aGlzLndlYl91cHNlcnQodGhpcy51cHNlcnRQcm0pLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcblx0XHRcdFx0Y2IgJiYgY2IocmVzKTtcclxuXHRcdFx0XHR0aGlzLnJlc2V0UHJtKCd1cHNlcnQnKTtcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0fVxyXG5cdC8v5YWo6YOo5Yib5bu65oiW5pu05paw77yM5qC55o2uSUTliKTmlq1cclxuXHR3ZWJfdXBzZXJ0KHBhcmFtOiBVcHNlcnQpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgLy8gdGhpcy5sb2FkaW5nU2VydmljZS5zZXRMb2FkaW5nKHRydWUpO1xyXG5cdFx0aWYgKCFwYXJhbS5tb2RlbE5hbWUpIHtcclxuXHRcdFx0cGFyYW0gPSB7IG1vZGVsTmFtZTogdGhpcy5tb2RlbE5hbWUsIC4uLnBhcmFtIH07XHJcblx0XHR9XHJcblx0XHRsZXQgYWRkRGF0YTogYW55ID0gcGFyYW0uYWRkRGF0YTtcclxuXHRcdGlmIChPYmplY3Qua2V5cyhhZGREYXRhKS5sZW5ndGggPT0gMCkge1xyXG5cdFx0XHRkZWxldGUgcGFyYW0uYWRkRGF0YTtcclxuXHRcdH1cclxuXHRcdGxldCB1cGREYXRhOiBhbnkgPSBwYXJhbS51cGREYXRhO1xyXG5cdFx0Ly8gY29uc29sZS5sb2coJ3BhcmFtLS0tLScsIHBhcmFtLnVwZERhdGEpO1xyXG5cdFx0aWYgKE9iamVjdC5rZXlzKHVwZERhdGEpLmxlbmd0aCA9PSAwKSB7XHJcblx0XHRcdGRlbGV0ZSBwYXJhbS51cGREYXRhO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0cGFyYW0udXBkRGF0YSFbJ2lkJ10gPSB0aGlzLmlkO1xyXG5cdFx0XHRwYXJhbS5sb2chLnBpZCA9IHRoaXMuaWQ7XHJcblx0XHR9XHJcblx0XHRpZiAoIXBhcmFtPy5hZGREYXRhICYmICFwYXJhbS51cGREYXRhKSB7XHJcblx0XHRcdHBhcmFtID0geyB1cGREYXRhOiB7IGlkOiB0aGlzLmlkIH0sIC4uLnBhcmFtIH07XHJcblx0XHR9XHJcblx0XHQvLyBjb25zb2xlLmxvZygndGhpcy5pc0xvZy0tLS0nLCB0aGlzLmlzTG9nKTtcclxuXHRcdGlmICghdGhpcy5pc0xvZykge1xyXG5cdFx0XHRkZWxldGUgcGFyYW0ubG9nO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0bGV0IGxnOiBzdHJpbmcgPSAnJztcclxuXHRcdFx0Ly8gQHRzLWlnbm9yZVxyXG5cdFx0XHRjb25zdCBpc0kxOG4gPSB3aW5kb3cuYXBwSXNJMThuXHJcblx0XHRcdGxldCBjcmVhdGVTdHIgPSBpc0kxOG4gPyB0aGlzLmkxOG4uZmFueWkoJ2FwcC5jcmVhdGUnKSA6J+aWsOW7uidcclxuXHRcdFx0cGFyYW0uc3Vic2VydD8uZm9yRWFjaCgodikgPT4ge1xyXG5cdFx0XHRcdHYubG9ndG1wPy5mb3JFYWNoKCh2LCBrKSA9PiB7XHJcblx0XHRcdFx0XHRpZiAodi5pZCA9PT0gMCkge1xyXG5cdFx0XHRcdFx0XHRsZyArPSBgJHtjcmVhdGVTdHJ977yaIC0+ICR7di5uZXdWYWx1ZX07YFxyXG5cdFx0XHRcdFx0XHQvLyBsZyArPSAn5paw5bu677yaIC0+ICcgKyB2Lm5ld1ZhbHVlICsgJzsnO1xyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0bGcgKz0gJ1snICsgdi5pZCArICctJyArIHYubGFiZWwgKyAnXSAnICsgKHYub2xkVmFsdWUgfHwgJycpICsgJyAtPiAnICsgKHYubmV3VmFsdWUgfHwgJycpICsgJzsnO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9KTtcclxuXHRcdFx0cGFyYW0gPSB7IC4uLnBhcmFtLCBsb2c6IHsgLi4ucGFyYW0ubG9nLCBzdWJDb250ZW50OiBsZyB9IH07XHJcblx0XHR9XHJcblx0XHQvLyBjb25zb2xlLmxvZygncGFyYW09PT09JywgcGFyYW0pO1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cC5wb3N0KGFwaVBhdGggKyAndXBzZXJ0JywgcGFyYW0pLnBpcGUoXHJcblx0XHRcdG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG5cdFx0XHRcdGlmIChwYXJhbS5sb2cpIHtcclxuXHRcdFx0XHRcdGRlbGV0ZSBwYXJhbS5sb2c7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHJldHVybiByZXNwb25zZTtcclxuXHRcdFx0fSksXHJcblx0XHRcdGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAvLyB0aGlzLmxvYWRpbmdTZXJ2aWNlLnNldExvYWRpbmcoZmFsc2UpO1xyXG5cdFx0XHR9KSxcclxuXHRcdCk7XHJcblx0fVxyXG5cdC8v6Ieq5aSE55CG6YC76L6RXHJcblx0ZGVhbChwcm0/OiBEZWFsKSB7XHJcblx0XHRpZiAocHJtKSB7XHJcblx0XHRcdHRoaXMud2ViX2RlYWwocHJtKS5zdWJzY3JpYmUoKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMud2ViX2RlYWwodGhpcy5kZWFsUHJtKS5zdWJzY3JpYmUoKTtcclxuXHRcdH1cclxuXHR9XHJcblx0d2ViX2RlYWwocGFyYW06IERlYWwpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgLy8gdGhpcy5sb2FkaW5nU2VydmljZS5zZXRMb2FkaW5nKHRydWUpO1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cC5wb3N0KGFwaVBhdGggKyAnZGVhbCcsIHBhcmFtKS5waXBlKFxyXG5cdFx0XHRtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuXHRcdFx0XHR0aGlzLmRlYWxQcm0gPSB7IGRhdGE6IHJlc3BvbnNlLCAuLi50aGlzLmRlYWxQcm0gfTtcclxuXHRcdFx0XHRyZXR1cm4gcmVzcG9uc2U7XHJcblx0XHRcdH0pLFxyXG5cdFx0XHRmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgLy8gdGhpcy5sb2FkaW5nU2VydmljZS5zZXRMb2FkaW5nKGZhbHNlKTtcclxuXHRcdFx0fSksXHJcblx0XHQpO1xyXG5cdH1cclxuXHQvL+S8oOWFpW1hcO+8jOagueaNrklE77yM5pu05pawbWFw5pWw5o2uXHJcblx0d3JpdGUocHJtPzogV3JpdGUpIHtcclxuXHRcdGlmIChwcm0pIHtcclxuXHRcdFx0dGhpcy53ZWJfd3JpdGUocHJtKS5zdWJzY3JpYmUoKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMud2ViX3dyaXRlKHRoaXMud3JpdGVQcm0pLnN1YnNjcmliZSgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHR3ZWJfd3JpdGUocGFyYW06IFdyaXRlKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIC8vIHRoaXMubG9hZGluZ1NlcnZpY2Uuc2V0TG9hZGluZyh0cnVlKTtcclxuXHRcdGlmICghcGFyYW0ubW9kZWxOYW1lKSB7XHJcblx0XHRcdHBhcmFtID0geyBtb2RlbE5hbWU6IHRoaXMubW9kZWxOYW1lLCAuLi5wYXJhbSB9O1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cC5wb3N0KGFwaVBhdGggKyAnd3JpdGUnLCBwYXJhbSkucGlwZShcclxuXHRcdFx0bWFwKChyZXNwb25zZTogYW55KSA9PiB7XHJcblx0XHRcdFx0aWYgKHBhcmFtLmxvZykge1xyXG5cdFx0XHRcdFx0ZGVsZXRlIHBhcmFtLmxvZztcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0cmV0dXJuIHJlc3BvbnNlO1xyXG5cdFx0XHR9KSxcclxuXHRcdFx0ZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgIC8vIHRoaXMubG9hZGluZ1NlcnZpY2Uuc2V0TG9hZGluZyhmYWxzZSk7XHJcblx0XHRcdH0pLFxyXG5cdFx0KTtcclxuXHR9XHJcblx0Ly/moLnmja5JROWIoOmZpFxyXG5cdHJlbW92ZShwcm0/OiBSZW1vdmUpIHtcclxuXHRcdGlmIChwcm0pIHtcclxuXHRcdFx0dGhpcy53ZWJfcmVtb3ZlKHBybSkuc3Vic2NyaWJlKCk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLndlYl9yZW1vdmUodGhpcy5yZW1vdmVQcm0pLnN1YnNjcmliZSgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHR3ZWJfcmVtb3ZlKHBhcmFtOiBSZW1vdmUpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgLy8gdGhpcy5sb2FkaW5nU2VydmljZS5zZXRMb2FkaW5nKHRydWUpO1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cC5wb3N0KGFwaVBhdGggKyAncmVtb3ZlJywgcGFyYW0pLnBpcGUoXHJcblx0XHRcdG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG5cdFx0XHRcdGlmIChwYXJhbS5sb2cpIHtcclxuXHRcdFx0XHRcdGRlbGV0ZSBwYXJhbS5sb2c7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHJldHVybiByZXNwb25zZTtcclxuXHRcdFx0fSksXHJcblx0XHRcdGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAvLyB0aGlzLmxvYWRpbmdTZXJ2aWNlLnNldExvYWRpbmcoZmFsc2UpO1xyXG5cdFx0XHR9KSxcclxuXHRcdCk7XHJcblx0fVxyXG5cdC8v5qC55o2uSUTojrflj5bkuIDmnaHmlbDmja5cclxuXHRnZXQocHJtPzogR2V0KSB7XHJcblx0XHRpZiAocHJtKSB7XHJcblx0XHRcdHRoaXMud2ViX2dldChwcm0pLnN1YnNjcmliZSgpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy53ZWJfZ2V0KHRoaXMuZ2V0UHJtKS5zdWJzY3JpYmUoKTtcclxuXHRcdH1cclxuXHR9XHJcblx0d2ViX2dldChwYXJhbTogR2V0KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHRcdGlmICghcGFyYW0uaGFzT3duUHJvcGVydHkoJ21vZGVsTmFtZScpKSB7XHJcblx0XHRcdHBhcmFtLm1vZGVsTmFtZSA9IHRoaXMubW9kZWxOYW1lO1xyXG5cdFx0fVxyXG4gICAgLy8gdGhpcy5sb2FkaW5nU2VydmljZS5zZXRMb2FkaW5nKHRydWUpO1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cC5wb3N0KGFwaVBhdGggKyAnZ2V0JywgcGFyYW0pLnBpcGUoXHJcblx0XHRcdG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG5cdFx0XHRcdHRoaXMuZ2V0UHJtLmRhdGEgPSByZXNwb25zZTtcclxuXHRcdFx0XHRpZiAocmVzcG9uc2UuaWQgPT09IDAgJiYgcGFyYW0uaGFzT3duUHJvcGVydHkoJ2ZvcmVpZ25LZXknKSkge1xyXG5cdFx0XHRcdFx0dGhpcy51cHNlcnRQcm0uYWRkRGF0YSFbcGFyYW0uZm9yZWlnbktleSFdID0gcGFyYW1bcGFyYW0uZm9yZWlnbktleSFdO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHR0aGlzLmlkID0gcmVzcG9uc2U/LmlkO1xyXG5cdFx0XHRcdHJldHVybiByZXNwb25zZTtcclxuXHRcdFx0fSksXHJcblx0XHRcdGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAvLyB0aGlzLmxvYWRpbmdTZXJ2aWNlLnNldExvYWRpbmcoZmFsc2UpO1xyXG5cdFx0XHR9KSxcclxuXHRcdCk7XHJcblx0fVxyXG5cdC8v6I635Y+W5aSa5p2h5pWw5o2u77yM5qC55o2u5Lyg5YWl55qE5p2h5Lu26Ieq5Yqo57uE57uHc3FsXHJcblx0c2VhcmNoKHBybT86IFNlYXJjaCkge1xyXG5cdFx0aWYgKHBybSkge1xyXG5cdFx0XHR0aGlzLndlYl9zZWFyY2gocHJtKS5zdWJzY3JpYmUoKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMud2ViX3NlYXJjaCh0aGlzLnNlYXJjaFBybSkuc3Vic2NyaWJlKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cdHdlYl9zZWFyY2gocGFyYW06IFNlYXJjaCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAvLyB0aGlzLmxvYWRpbmdTZXJ2aWNlLnNldExvYWRpbmcodHJ1ZSk7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwLnBvc3QoYXBpUGF0aCArICdzZWFyY2gnLCBwYXJhbSkucGlwZShcclxuXHRcdFx0bWFwKChyZXNwb25zZTogYW55KSA9PiB7XHJcblx0XHRcdFx0dGhpcy5zZWFyY2hQcm0gPSB7IC4uLnJlc3BvbnNlIH07XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coJ3Vwc2V5LS0tLS0nLCB0aGlzLnVwc2VydFBybSk7XHJcblx0XHRcdFx0cmV0dXJuIHJlc3BvbnNlO1xyXG5cdFx0XHR9KSxcclxuXHRcdFx0ZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgIC8vIHRoaXMubG9hZGluZ1NlcnZpY2Uuc2V0TG9hZGluZyhmYWxzZSk7XHJcblx0XHRcdH0pLFxyXG5cdFx0KTtcclxuXHR9XHJcblx0c2VhcmNobWFwKHBybT86IFNlYXJjaCkge1xyXG5cdFx0aWYgKHBybSkge1xyXG5cdFx0XHR0aGlzLndlYl9zZWFyY2gocHJtKS5zdWJzY3JpYmUoKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMud2ViX3NlYXJjaCh0aGlzLnNlYXJjaFBybSkuc3Vic2NyaWJlKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cdHdlYl9zZWFyY2htYXAocGFyYW06IFNlYXJjaCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAvLyB0aGlzLmxvYWRpbmdTZXJ2aWNlLnNldExvYWRpbmcodHJ1ZSk7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwLnBvc3QoYXBpUGF0aCArICdzZWFyY2hNYXAnLCBwYXJhbSkucGlwZShcclxuXHRcdFx0bWFwKChyZXNwb25zZTogYW55KSA9PiB7XHJcblx0XHRcdFx0dGhpcy5zZWFyY2hQcm0gPSB7IC4uLnJlc3BvbnNlIH07XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coJ3Vwc2V5LS0tLS0nLCB0aGlzLnVwc2VydFBybSk7XHJcblx0XHRcdFx0cmV0dXJuIHJlc3BvbnNlO1xyXG5cdFx0XHR9KSxcclxuXHRcdFx0ZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgIC8vIHRoaXMubG9hZGluZ1NlcnZpY2Uuc2V0TG9hZGluZyhmYWxzZSk7XHJcblx0XHRcdH0pLFxyXG5cdFx0KTtcclxuXHR9XHJcblx0Ly/ojrflj5blpJrmnaHmlbDmja7vvIzmoLnmja7kvKDlhaXnmoTmnaHku7boh6rliqjnu4Tnu4dzcWxcclxuXHRzZWFyY2hDb3VudChwcm0/OiBTZWFyY2gpIHtcclxuXHRcdGlmIChwcm0pIHtcclxuXHRcdFx0dGhpcy53ZWJfc2VhcmNoQ291bnQocHJtKS5zdWJzY3JpYmUoKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMud2ViX3NlYXJjaENvdW50KHRoaXMuc2VhcmNoUHJtKS5zdWJzY3JpYmUoKTtcclxuXHRcdH1cclxuXHR9XHJcblx0d2ViX3NlYXJjaENvdW50KHBhcmFtOiBTZWFyY2gpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgLy8gdGhpcy5sb2FkaW5nU2VydmljZS5zZXRMb2FkaW5nKHRydWUpO1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cC5wb3N0KGFwaVBhdGggKyAnc2VhcmNoQ291bnQnLCBwYXJhbSkucGlwZShcclxuXHRcdFx0bWFwKChyZXNwb25zZTogYW55KSA9PiB7XHJcblx0XHRcdFx0dGhpcy5zZWFyY2hQcm0gPSB7IC4uLnJlc3BvbnNlIH07XHJcblx0XHRcdFx0cmV0dXJuIHJlc3BvbnNlO1xyXG5cdFx0XHR9KSxcclxuXHRcdFx0ZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgIC8vIHRoaXMubG9hZGluZ1NlcnZpY2Uuc2V0TG9hZGluZyhmYWxzZSk7XHJcblx0XHRcdH0pLFxyXG5cdFx0KTtcclxuXHR9XHJcblx0Ly9leGNlbOWvvOWFpVxyXG5cdC8vIGltcG9ydChwYXJhbTogSW1wb3J0RXhjZWwpOk9ic2VydmFibGU8YW55PiB7XHJcblx0Ly8gICB0aGlzLmlzTG9hZGluZy5zZXQodHJ1ZSk7XHJcblx0Ly8gICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXCJhbS9yZW1vdmVcIixwYXJhbSxodHRwT3B0aW9ucylcclxuXHQvLyAgIC5waXBlKFxyXG5cdC8vICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+e1xyXG5cdC8vICAgICAgIHRoaXMubWVzc2FnZS5zZXQocmVzcG9uc2UpO1xyXG5cdC8vICAgICAgIHRoaXMuaXNTdWNjZXNzLnNldCh0cnVlKTtcclxuXHQvLyAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcblx0Ly8gICAgIH0pLFxyXG5cdC8vICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG5cdC8vICAgICAgIC8vIOiLpeivt+axguWHuumUme+8jOiuvue9ruivt+axguaIkOWKn+eKtuaAgeS4uiBmYWxzZe+8jOW5tuWwhumUmeivr+mHjeaWsOaKm+WHulxyXG5cdC8vICAgICAgIHRoaXMuaXNTdWNjZXNzLnNldChmYWxzZSk7XHJcblx0Ly8gICAgICAgdGhpcy5tZXNzYWdlLnNldChlcnJvcik7XHJcblx0Ly8gICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xyXG5cdC8vICAgICB9KSxcclxuXHQvLyAgICAgZmluYWxpemUoKCkgPT4ge1xyXG5cdC8vICAgICAgIC8vIOaXoOiuuuivt+axguaIkOWKn+S4juWQpu+8jOmDveWwhuWKoOi9veS4reeKtuaAgeiuvue9ruS4uiBmYWxzZVxyXG5cdC8vICAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XHJcblx0Ly8gICAgIH0pXHJcblx0Ly8gICApO1xyXG5cdC8vIH1cclxuXHQvLy8vZXhjZWwg5a+85Ye6XHJcblx0ZXhwb3J0KHBybT86IFNlYXJjaCkge1xyXG5cdFx0aWYgKHBybSkge1xyXG5cdFx0XHR0aGlzLndlYl9leHBvcnQocHJtKS5zdWJzY3JpYmUoKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMud2ViX2V4cG9ydCh0aGlzLmV4cG9ydFBybSkuc3Vic2NyaWJlKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cdHdlYl9leHBvcnQocGFyYW06IFNlYXJjaCk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRpZiAoIXBhcmFtLm1vZGVsTmFtZSkge1xyXG5cdFx0XHRwYXJhbSA9IHsgbW9kZWxOYW1lOiB0aGlzLm1vZGVsTmFtZSwgLi4ucGFyYW0gfTtcclxuXHRcdH1cclxuICAgIC8vIHRoaXMubG9hZGluZ1NlcnZpY2Uuc2V0TG9hZGluZyh0cnVlKTtcclxuXHRcdHJldHVybiB0aGlzLmh0dHAucG9zdChhcGlQYXRoICsgJ2V4cG9ydCcsIHBhcmFtLCB7IHJlc3BvbnNlVHlwZTogJ2Jsb2InIH0pLnBpcGUoXHJcblx0XHRcdG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG5cdFx0XHRcdGNvbnN0IGRhdGE6IEJsb2IgPSBuZXcgQmxvYihbcmVzcG9uc2VdLCB7XHJcblx0XHRcdFx0XHR0eXBlOiAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQ7IGNoYXJzZXQ9VVRGLTgnLFxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdGNvbnN0IGZpbGVOYW1lID0gcGFyYW0ubW9kZWxOYW1lICsgJy54bHN4JztcclxuXHRcdFx0XHRGaWxlU2F2ZXIuc2F2ZUFzKGRhdGEsIGZpbGVOYW1lKTtcclxuXHRcdFx0XHRyZXR1cm4gcmVzcG9uc2U7XHJcblx0XHRcdH0pLFxyXG5cdFx0XHRmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgLy8gdGhpcy5sb2FkaW5nU2VydmljZS5zZXRMb2FkaW5nKGZhbHNlKTtcclxuXHRcdFx0fSksXHJcblx0XHQpO1xyXG5cdH1cclxuXHQvL+S6uuW3peWkhOeQhuWvvOWFpVxyXG5cdGRlYWxFeHBvcnQocHJtPzogRGVhbEV4cG9ydCkge1xyXG5cdFx0aWYgKHBybSkge1xyXG5cdFx0XHR0aGlzLndlYl9kZWFsX2V4cG9ydChwcm0pLnN1YnNjcmliZSgpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy53ZWJfZGVhbF9leHBvcnQodGhpcy5leHBvcnRQcm0pLnN1YnNjcmliZSgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHR3ZWJfZGVhbF9leHBvcnQocGFyYW06IERlYWxFeHBvcnQpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0aWYgKCFwYXJhbS5tb2RlbE5hbWUpIHtcclxuXHRcdFx0cGFyYW0gPSB7IG1vZGVsTmFtZTogdGhpcy5tb2RlbE5hbWUsIC4uLnBhcmFtIH07XHJcblx0XHR9XHJcbiAgICAvLyB0aGlzLmxvYWRpbmdTZXJ2aWNlLnNldExvYWRpbmcodHJ1ZSk7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwLnBvc3QoYXBpUGF0aCArICdkZWFsRXhwb3J0JywgcGFyYW0sIHsgcmVzcG9uc2VUeXBlOiAnYmxvYicgfSkucGlwZShcclxuXHRcdFx0bWFwKChyZXNwb25zZTogYW55KSA9PiB7XHJcblx0XHRcdFx0Y29uc3QgZGF0YTogQmxvYiA9IG5ldyBCbG9iKFtyZXNwb25zZV0sIHtcclxuXHRcdFx0XHRcdHR5cGU6ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldDsgY2hhcnNldD1VVEYtOCcsXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0Ly8gY29uc3QgZmlsZU5hbWUgPSBwYXJhbS5tb2RlbE5hbWUgKyAnLnhsc3gnO1xyXG5cdFx0XHRcdGNvbnN0IGZpbGVOYW1lID0gYCR7cGFyYW0/LmZpbGVOYW1lID8gcGFyYW0uZmlsZU5hbWUgOiBwYXJhbS5tb2RlbE5hbWV9Lnhsc3hgXHJcblx0XHRcdFx0RmlsZVNhdmVyLnNhdmVBcyhkYXRhLCBmaWxlTmFtZSk7XHJcblx0XHRcdFx0cmV0dXJuIHJlc3BvbnNlO1xyXG5cdFx0XHR9KSxcclxuXHRcdFx0ZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgIC8vIHRoaXMubG9hZGluZ1NlcnZpY2Uuc2V0TG9hZGluZyhmYWxzZSk7XHJcblx0XHRcdH0pLFxyXG5cdFx0KTtcclxuXHR9XHJcblx0Ly/kuIvovb3lr7zlhaXnmoTmqKHmnb9cclxuXHRkb3dubG9hZFRlbXBsYXRlKHBybT86IERlYWwpIHtcclxuXHRcdGlmIChwcm0pIHtcclxuXHRcdFx0dGhpcy53ZWJfZG93bmxvYWRUZW1wbGF0ZShwcm0pLnN1YnNjcmliZSgpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy53ZWJfZG93bmxvYWRUZW1wbGF0ZSh0aGlzLnRhbXBsYXRlKS5zdWJzY3JpYmUoKTtcclxuXHRcdH1cclxuXHR9XHJcblx0d2ViX2Rvd25sb2FkVGVtcGxhdGUocGFyYW06IERlYWwpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgLy8gdGhpcy5sb2FkaW5nU2VydmljZS5zZXRMb2FkaW5nKHRydWUpO1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cC5wb3N0KGFwaVBhdGggKyAnZG93bmxvYWQnLCBwYXJhbSwgeyByZXNwb25zZVR5cGU6ICdibG9iJyB9KS5waXBlKFxyXG5cdFx0XHRtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuXHRcdFx0XHRjb25zdCBkYXRhOiBCbG9iID0gbmV3IEJsb2IoW3Jlc3BvbnNlXSwge1xyXG5cdFx0XHRcdFx0dHlwZTogJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0OyBjaGFyc2V0PVVURi04JyxcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHRjb25zdCBmaWxlTmFtZSA9IHBhcmFtLm1vZGVsTmFtZSArICfmqKHmnb8ueGxzeCc7XHJcblx0XHRcdFx0RmlsZVNhdmVyLnNhdmVBcyhkYXRhLCBmaWxlTmFtZSk7XHJcblx0XHRcdFx0cmV0dXJuIHJlc3BvbnNlO1xyXG5cdFx0XHR9KSxcclxuXHRcdFx0ZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgIC8vIHRoaXMubG9hZGluZ1NlcnZpY2Uuc2V0TG9hZGluZyhmYWxzZSk7XHJcblx0XHRcdH0pLFxyXG5cdFx0KTtcclxuXHR9XHJcblx0Ly/liKDpmaTlm77niYdcclxuXHRpbWFnZURlbGV0ZShmaWQ/OiBzdHJpbmcpIHtcclxuXHRcdGlmIChmaWQpIHtcclxuXHRcdFx0dGhpcy53ZWJfaW1hZ2VEZWxldGUoZmlkKS5zdWJzY3JpYmUoKTtcclxuXHRcdH0gZWxzZSBpZiAodGhpcy5maWQubGVuZ3RoID4gMCkge1xyXG5cdFx0XHR0aGlzLndlYl9pbWFnZURlbGV0ZSh0aGlzLmZpZCkuc3Vic2NyaWJlKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cdHdlYl9pbWFnZURlbGV0ZShmaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAvLyB0aGlzLmxvYWRpbmdTZXJ2aWNlLnNldExvYWRpbmcodHJ1ZSk7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwLnBvc3QoYXBpUGF0aCArICdpbWFnZURlbGV0ZScsIGZpZCkucGlwZShcclxuXHRcdFx0bWFwKChyZXNwb25zZTogYW55KSA9PiB7XHJcblx0XHRcdFx0dGhpcy5tZXNzYWdlU2VydmljZS5hZGQoeyBzZXZlcml0eTogJ3N1Y2Nlc3MnLCBzdW1tYXJ5OiAnU3VjY2VzcycsIGRldGFpbDogcmVzcG9uc2UgfSk7XHJcblx0XHRcdFx0cmV0dXJuIHJlc3BvbnNlO1xyXG5cdFx0XHR9KSxcclxuXHRcdFx0ZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgIC8vIHRoaXMubG9hZGluZ1NlcnZpY2Uuc2V0TG9hZGluZyhmYWxzZSk7XHJcblx0XHRcdH0pLFxyXG5cdFx0KTtcclxuXHR9XHJcblx0Ly/liKDpmaTlm77niYdcclxuXHRmaWxlckRlbGV0ZShmaWQ/OiBzdHJpbmcpIHtcclxuXHRcdGlmIChmaWQpIHtcclxuXHRcdFx0dGhpcy53ZWJfZmlsZXJEZWxldGUoZmlkKS5zdWJzY3JpYmUoKTtcclxuXHRcdH0gZWxzZSBpZiAodGhpcy5maWQubGVuZ3RoID4gMCkge1xyXG5cdFx0XHR0aGlzLndlYl9maWxlckRlbGV0ZSh0aGlzLmZpZCkuc3Vic2NyaWJlKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cdHdlYl9maWxlckRlbGV0ZShmaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAvLyB0aGlzLmxvYWRpbmdTZXJ2aWNlLnNldExvYWRpbmcodHJ1ZSk7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwLnBvc3QoYXBpUGF0aCArICdpbWFnZURlbGV0ZScsIGZpZCkucGlwZShcclxuXHRcdFx0bWFwKChyZXNwb25zZTogYW55KSA9PiB7XHJcblx0XHRcdFx0dGhpcy5tZXNzYWdlU2VydmljZS5hZGQoeyBzZXZlcml0eTogJ3N1Y2Nlc3MnLCBzdW1tYXJ5OiAnU3VjY2VzcycsIGRldGFpbDogcmVzcG9uc2UgfSk7XHJcblx0XHRcdFx0cmV0dXJuIHJlc3BvbnNlO1xyXG5cdFx0XHR9KSxcclxuXHRcdFx0ZmluYWxpemUoKCkgPT4ge1xyXG5cdFx0XHRcdC8vIHRoaXMubG9hZGluZ1NlcnZpY2Uuc2V0TG9hZGluZyhmYWxzZSk7XHJcblx0XHRcdH0pLFxyXG5cdFx0KTtcclxuXHR9XHJcblx0Ly/liLfmlrB0b2tlblxyXG5cdHJlZnJlc2hUb2tlbihwYXJhbTogVG9rZW5JbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHRcdHJldHVybiB0aGlzLmh0dHAucG9zdChhcGlQYXRoICsgJ3JlZnJlc2hUb2tlbicsIHBhcmFtKS5waXBlKFxyXG5cdFx0XHRtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuXHRcdFx0XHR0aGlzLmRlYWxQcm0gPSB7IGRhdGE6IHJlc3BvbnNlLCAuLi50aGlzLmRlYWxQcm0gfTtcclxuXHRcdFx0XHRyZXR1cm4gcmVzcG9uc2U7XHJcblx0XHRcdH0pLFxyXG5cdFx0XHRmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgLy8gdGhpcy5sb2FkaW5nU2VydmljZS5zZXRMb2FkaW5nKGZhbHNlKTtcclxuXHRcdFx0fSksXHJcblx0XHQpO1xyXG5cdH1cclxuXHQvL+WIm+W7uuihqFxyXG5cdGNyZWF0ZVRhYmxlKHBybT86IFBhcmFtKSB7XHJcblx0XHRpZiAocHJtKSB7XHJcblx0XHRcdHRoaXMud2ViX2NyZWF0ZVRhYmxlKHBybSkuc3Vic2NyaWJlKCk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLndlYl9jcmVhdGVUYWJsZSh0aGlzLnBhcmFtKS5zdWJzY3JpYmUoKTtcclxuXHRcdH1cclxuXHR9XHJcblx0d2ViX2NyZWF0ZVRhYmxlKHBhcmFtOiBQYXJhbSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAvLyB0aGlzLmxvYWRpbmdTZXJ2aWNlLnNldExvYWRpbmcodHJ1ZSk7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwLnBvc3QoYXBpUGF0aCArICdjcmVhdGVUYWJsZScsIHBhcmFtKS5waXBlKFxyXG5cdFx0XHRtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuXHRcdFx0XHQvLyB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7c2V2ZXJpdHk6ICdzdWNjZXNzJyxzdW1tYXJ5OiAnU3VjY2VzcycsZGV0YWlsOiByZXNwb25zZX0pXHJcblx0XHRcdFx0cmV0dXJuIHJlc3BvbnNlO1xyXG5cdFx0XHR9KSxcclxuXHRcdFx0ZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgIC8vIHRoaXMubG9hZGluZ1NlcnZpY2Uuc2V0TG9hZGluZyhmYWxzZSk7XHJcblx0XHRcdH0pLFxyXG5cdFx0KTtcclxuXHR9XHJcblx0Ly8g5pqC5peg56Gu5a6a5piv5ZCm6YeN572u5YW25LuW5YWs5YWx5Y+Y6YePXHJcblx0cmVzZXRQcm0oc2VhcmNoPzogc3RyaW5nKSB7XHJcblx0XHRzd2l0Y2ggKHNlYXJjaCkge1xyXG5cdFx0XHRjYXNlICd1cHNlcnQnOlxyXG5cdFx0XHRcdHRoaXMudXBzZXJ0UHJtLmFkZERhdGEgPSB7fTtcclxuXHRcdFx0XHR0aGlzLnVwc2VydFBybS51cGREYXRhID0ge307XHJcblx0XHRcdFx0dGhpcy51cHNlcnRQcm0ubG9nID0ge307XHJcblx0XHRcdFx0dGhpcy51cHNlcnRQcm0uc3Vic2VydD8uZm9yRWFjaCgodikgPT4ge1xyXG5cdFx0XHRcdFx0di5sb2d0bXAgPSBuZXcgTWFwKCk7XHJcblx0XHRcdFx0XHR2Lm1hcHRtcCA9IG5ldyBNYXAoKTtcclxuXHRcdFx0XHRcdHYuc3ViRGF0YSA9IFtdO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRkZWZhdWx0OlxyXG5cdFx0XHRcdCcnO1xyXG5cdFx0fVxyXG5cdH1cclxuXHQvL+iHquWkhOeQhumAu+i+kVxyXG5cdGRlYWxRdWVyeShwcm0/OiBEZWFsKSB7XHJcblx0XHRpZiAocHJtKSB7XHJcblx0XHRcdHRoaXMud2ViRGVhbFF1ZXJ5KHBybSkuc3Vic2NyaWJlKCk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLndlYkRlYWxRdWVyeSh0aGlzLmRlYWxQcm0pLnN1YnNjcmliZSgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHR3ZWJEZWFsUXVlcnkocGFyYW06IERlYWwpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgLy8gdGhpcy5sb2FkaW5nU2VydmljZS5zZXRMb2FkaW5nKHRydWUpO1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cC5wb3N0KGFwaVBhdGggKyAnZGVhbFF1ZXJ5JywgcGFyYW0pLnBpcGUoXHJcblx0XHRcdG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG5cdFx0XHRcdHRoaXMuZGVhbFBybSA9IHsgZGF0YTogcmVzcG9uc2UsIC4uLnRoaXMuZGVhbFBybSB9O1xyXG5cdFx0XHRcdHJldHVybiByZXNwb25zZTtcclxuXHRcdFx0fSksXHJcblx0XHRcdGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAvLyB0aGlzLmxvYWRpbmdTZXJ2aWNlLnNldExvYWRpbmcoZmFsc2UpO1xyXG5cdFx0XHR9KSxcclxuXHRcdCk7XHJcblx0fVxyXG5cdGRlYWxDdXN0b20ocHJtPzogRGVhbCkge1xyXG5cdFx0aWYgKHBybSkge1xyXG5cdFx0XHR0aGlzLndlYkRlYWxDdXN0b20ocHJtKS5zdWJzY3JpYmUoKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMud2ViRGVhbEN1c3RvbSh0aGlzLmRlYWxQcm0pLnN1YnNjcmliZSgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHR3ZWJEZWFsQ3VzdG9tKHBhcmFtOiBEZWFsKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIC8vIHRoaXMubG9hZGluZ1NlcnZpY2Uuc2V0TG9hZGluZyh0cnVlKTtcclxuXHRcdHJldHVybiB0aGlzLmh0dHAucG9zdChhcGlQYXRoICsgJ2RlYWxDdXN0b20nLCBwYXJhbSkucGlwZShcclxuXHRcdFx0bWFwKChyZXNwb25zZTogYW55KSA9PiB7XHJcblx0XHRcdFx0dGhpcy5kZWFsUHJtID0geyBkYXRhOiByZXNwb25zZSwgLi4udGhpcy5kZWFsUHJtIH07XHJcblx0XHRcdFx0cmV0dXJuIHJlc3BvbnNlO1xyXG5cdFx0XHR9KSxcclxuXHRcdFx0ZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgIC8vIHRoaXMubG9hZGluZ1NlcnZpY2Uuc2V0TG9hZGluZyhmYWxzZSk7XHJcblx0XHRcdH0pLFxyXG5cdFx0KTtcclxuXHR9XHJcblx0ZGVhbFN1Ym1pdChwcm0/OiBEZWFsKSB7XHJcblx0XHRpZiAocHJtKSB7XHJcblx0XHRcdHRoaXMud2ViRGVhbEN1c3RvbShwcm0pLnN1YnNjcmliZSgpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy53ZWJEZWFsQ3VzdG9tKHRoaXMuZGVhbFBybSkuc3Vic2NyaWJlKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cdHdlYkRlYWxTdWJtaXQocGFyYW06IERlYWwpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgLy8gdGhpcy5sb2FkaW5nU2VydmljZS5zZXRMb2FkaW5nKHRydWUpO1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cC5wb3N0KGFwaVBhdGggKyAnZGVhbFN1Ym1pdCcsIHBhcmFtKS5waXBlKFxyXG5cdFx0XHRtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuXHRcdFx0XHR0aGlzLmRlYWxQcm0gPSB7IGRhdGE6IHJlc3BvbnNlLCAuLi50aGlzLmRlYWxQcm0gfTtcclxuXHRcdFx0XHRyZXR1cm4gcmVzcG9uc2U7XHJcblx0XHRcdH0pLFxyXG5cdFx0XHRmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgLy8gdGhpcy5sb2FkaW5nU2VydmljZS5zZXRMb2FkaW5nKGZhbHNlKTtcclxuXHRcdFx0fSksXHJcblx0XHQpO1xyXG5cdH1cclxufVxyXG4iXX0=