ontimize-web-ngx 15.0.0-beta.1 → 15.0.0-beta.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 (75) hide show
  1. package/esm2020/lib/components/app-sidenav/o-app-sidenav.component.mjs +2 -2
  2. package/esm2020/lib/components/button-toggle/o-button-toggle-group/o-button-toggle-group.component.mjs +13 -15
  3. package/esm2020/lib/components/card-menu-item/o-card-menu-item.component.mjs +6 -8
  4. package/esm2020/lib/components/dual-list-selector/o-dual-list-selector.component.mjs +3 -3
  5. package/esm2020/lib/components/form/navigation/o-form.navigation.class.mjs +2 -2
  6. package/esm2020/lib/components/form-container/o-form-container.component.mjs +6 -8
  7. package/esm2020/lib/components/grid/o-grid.component.mjs +5 -5
  8. package/esm2020/lib/components/index.mjs +2 -3
  9. package/esm2020/lib/components/input/combo/o-combo.component.mjs +2 -2
  10. package/esm2020/lib/components/input/phone-input/o-phone-input.component.mjs +3 -3
  11. package/esm2020/lib/components/input/search-input/o-search-input.component.mjs +2 -2
  12. package/esm2020/lib/components/list/list-item/o-list-item.component.mjs +2 -2
  13. package/esm2020/lib/components/list/o-list.component.mjs +5 -14
  14. package/esm2020/lib/components/list/renderers/card/o-list-item-card.component.mjs +3 -3
  15. package/esm2020/lib/components/list/renderers/card-image/o-list-item-card-image.component.mjs +3 -3
  16. package/esm2020/lib/components/o-service-base-component.class.mjs +1 -1
  17. package/esm2020/lib/components/o-service-component.class.mjs +2 -1
  18. package/esm2020/lib/components/table/column/calculated/o-table-column-calculated.component.mjs +6 -7
  19. package/esm2020/lib/components/table/column/o-table-column.component.mjs +123 -129
  20. package/esm2020/lib/components/table/extensions/default-o-table.datasource.mjs +46 -9
  21. package/esm2020/lib/components/table/extensions/dialog/apply-configuration/o-table-apply-configuration-dialog.component.mjs +3 -3
  22. package/esm2020/lib/components/table/extensions/dialog/filter-by-column/o-table-filter-by-column-data-dialog.component.mjs +3 -3
  23. package/esm2020/lib/components/table/extensions/dialog/store-configuration/o-table-store-configuration-dialog.component.mjs +3 -3
  24. package/esm2020/lib/components/table/extensions/dialog/visible-columns/o-table-visible-columns-dialog.component.mjs +3 -3
  25. package/esm2020/lib/components/table/extensions/header/table-insertable-row/o-table-insertable-row.component.mjs +6 -7
  26. package/esm2020/lib/components/table/extensions/header/table-quickfilter/o-table-quickfilter.component.mjs +4 -4
  27. package/esm2020/lib/components/table/o-table.component.mjs +17 -18
  28. package/esm2020/lib/components/user-info/index.mjs +5 -0
  29. package/esm2020/lib/components/user-info/o-user-info.module.mjs +3 -3
  30. package/esm2020/lib/interfaces/o-table-column.interface.mjs +1 -1
  31. package/esm2020/lib/layouts/form-layout/dialog/o-form-layout-dialog.component.mjs +20 -22
  32. package/esm2020/lib/layouts/form-layout/dialog/options/o-form-layout-dialog-options.directive.mjs +7 -3
  33. package/esm2020/lib/layouts/form-layout/o-form-layout-manager.component.mjs +10 -4
  34. package/esm2020/lib/layouts/form-layout/split-pane/o-form-layout-split-pane.component.mjs +8 -9
  35. package/esm2020/lib/layouts/form-layout/tabgroup/o-form-layout-tabgroup.component.mjs +8 -10
  36. package/esm2020/lib/services/o-error-dialog-manager.service.mjs +8 -4
  37. package/esm2020/lib/services/translate/o-translate.service.mjs +3 -2
  38. package/esm2020/lib/shared/components/filter/load-filter/o-load-filter-dialog.component.mjs +3 -3
  39. package/esm2020/lib/util/util.mjs +5 -1
  40. package/fesm2015/ontimize-web-ngx.mjs +297 -272
  41. package/fesm2015/ontimize-web-ngx.mjs.map +1 -1
  42. package/fesm2020/ontimize-web-ngx.mjs +297 -272
  43. package/fesm2020/ontimize-web-ngx.mjs.map +1 -1
  44. package/lib/components/button-toggle/o-button-toggle-group/o-button-toggle-group.component.d.ts +1 -3
  45. package/lib/components/card-menu-item/o-card-menu-item.component.d.ts +2 -3
  46. package/lib/components/form-container/o-form-container.component.d.ts +1 -3
  47. package/lib/components/index.d.ts +1 -2
  48. package/lib/components/list/o-list.component.d.ts +1 -3
  49. package/lib/components/table/column/calculated/o-table-column-calculated.component.d.ts +2 -3
  50. package/lib/components/table/column/o-table-column.component.d.ts +3 -4
  51. package/lib/components/table/extensions/default-o-table.datasource.d.ts +1 -0
  52. package/lib/components/table/extensions/header/table-insertable-row/o-table-insertable-row.component.d.ts +2 -3
  53. package/lib/components/table/o-table.component.d.ts +5 -6
  54. package/lib/components/user-info/index.d.ts +4 -0
  55. package/lib/components/user-info/o-user-info.module.d.ts +1 -1
  56. package/lib/interfaces/o-table-column.interface.d.ts +2 -2
  57. package/lib/layouts/form-layout/dialog/o-form-layout-dialog.component.d.ts +4 -4
  58. package/lib/layouts/form-layout/dialog/options/o-form-layout-dialog-options.directive.d.ts +3 -1
  59. package/lib/layouts/form-layout/o-form-layout-manager.component.d.ts +2 -1
  60. package/lib/layouts/form-layout/split-pane/o-form-layout-split-pane.component.d.ts +2 -3
  61. package/lib/layouts/form-layout/tabgroup/o-form-layout-tabgroup.component.d.ts +2 -3
  62. package/lib/services/o-error-dialog-manager.service.d.ts +2 -2
  63. package/lib/services/translate/o-translate.service.d.ts +1 -0
  64. package/lib/util/util.d.ts +1 -0
  65. package/ontimize.scss +2 -72
  66. package/package.json +1 -1
  67. package/theme.scss +84 -99
  68. package/theming/addons/report-on-demand.scss +5 -1
  69. package/theming/ontimize-style-v8.scss +23 -1
  70. package/theming/ontimize-style.scss +2 -1
  71. package/theming/styles/density.scss +37 -23
  72. package/theming/styles/ontimize-v8/o-form-field-style.scss +23 -15
  73. package/theming/styles/ontimize-v8/o-table-style.scss +1 -1
  74. package/theming/styles/ontimize-v8/variables.scss +4 -1
  75. package/theming/themes/ontimize-blue.scss +6 -3
@@ -0,0 +1,5 @@
1
+ export * from './o-user-info.component';
2
+ export * from './user-info-configuration/o-user-info-configuration.directive';
3
+ export * from './user-info-configuration-item/o-user-info-configuration-item.directive';
4
+ export * from './o-user-info.module';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy91c2VyLWluZm8vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLCtEQUErRCxDQUFDO0FBQzlFLGNBQWMseUVBQXlFLENBQUM7QUFDeEYsY0FBYyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vby11c2VyLWluZm8uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vdXNlci1pbmZvLWNvbmZpZ3VyYXRpb24vby11c2VyLWluZm8tY29uZmlndXJhdGlvbi5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi91c2VyLWluZm8tY29uZmlndXJhdGlvbi1pdGVtL28tdXNlci1pbmZvLWNvbmZpZ3VyYXRpb24taXRlbS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9vLXVzZXItaW5mby5tb2R1bGUnOyJdfQ==
@@ -9,14 +9,14 @@ import * as i0 from "@angular/core";
9
9
  export class OUserInfoModule {
10
10
  }
11
11
  OUserInfoModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OUserInfoModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
12
- OUserInfoModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: OUserInfoModule, declarations: [OUserInfoComponent, OUserInfoConfigurationDirective, OUserInfoConfigurationItemDirective], imports: [CommonModule, OSharedModule, RouterModule], exports: [OUserInfoComponent] });
12
+ OUserInfoModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: OUserInfoModule, declarations: [OUserInfoComponent, OUserInfoConfigurationDirective, OUserInfoConfigurationItemDirective], imports: [CommonModule, OSharedModule, RouterModule], exports: [OUserInfoComponent, OUserInfoConfigurationDirective, OUserInfoConfigurationItemDirective] });
13
13
  OUserInfoModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OUserInfoModule, imports: [CommonModule, OSharedModule, RouterModule] });
14
14
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OUserInfoModule, decorators: [{
15
15
  type: NgModule,
16
16
  args: [{
17
17
  declarations: [OUserInfoComponent, OUserInfoConfigurationDirective, OUserInfoConfigurationItemDirective],
18
18
  imports: [CommonModule, OSharedModule, RouterModule],
19
- exports: [OUserInfoComponent]
19
+ exports: [OUserInfoComponent, OUserInfoConfigurationDirective, OUserInfoConfigurationItemDirective]
20
20
  }]
21
21
  }] });
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby11c2VyLWluZm8ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvdXNlci1pbmZvL28tdXNlci1pbmZvLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdELE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLHlFQUF5RSxDQUFDO0FBQzlILE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLCtEQUErRCxDQUFDOztBQU9oSCxNQUFNLE9BQU8sZUFBZTs7NEdBQWYsZUFBZTs2R0FBZixlQUFlLGlCQUpYLGtCQUFrQixFQUFFLCtCQUErQixFQUFFLG1DQUFtQyxhQUM3RixZQUFZLEVBQUUsYUFBYSxFQUFFLFlBQVksYUFDekMsa0JBQWtCOzZHQUVqQixlQUFlLFlBSGhCLFlBQVksRUFBRSxhQUFhLEVBQUUsWUFBWTsyRkFHeEMsZUFBZTtrQkFMM0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSwrQkFBK0IsRUFBRSxtQ0FBbUMsQ0FBQztvQkFDeEcsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSxZQUFZLENBQUM7b0JBQ3BELE9BQU8sRUFBRSxDQUFDLGtCQUFrQixDQUFDO2lCQUM5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgT1NoYXJlZE1vZHVsZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9zaGFyZWQubW9kdWxlJztcbmltcG9ydCB7IE9Vc2VySW5mb0NvbXBvbmVudCB9IGZyb20gJy4vby11c2VyLWluZm8uY29tcG9uZW50JztcbmltcG9ydCB7IE9Vc2VySW5mb0NvbmZpZ3VyYXRpb25JdGVtRGlyZWN0aXZlIH0gZnJvbSAnLi91c2VyLWluZm8tY29uZmlndXJhdGlvbi1pdGVtL28tdXNlci1pbmZvLWNvbmZpZ3VyYXRpb24taXRlbS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgT1VzZXJJbmZvQ29uZmlndXJhdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4vdXNlci1pbmZvLWNvbmZpZ3VyYXRpb24vby11c2VyLWluZm8tY29uZmlndXJhdGlvbi5kaXJlY3RpdmUnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtPVXNlckluZm9Db21wb25lbnQsIE9Vc2VySW5mb0NvbmZpZ3VyYXRpb25EaXJlY3RpdmUsIE9Vc2VySW5mb0NvbmZpZ3VyYXRpb25JdGVtRGlyZWN0aXZlXSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgT1NoYXJlZE1vZHVsZSwgUm91dGVyTW9kdWxlXSxcbiAgZXhwb3J0czogW09Vc2VySW5mb0NvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgT1VzZXJJbmZvTW9kdWxlIHsgfVxuIl19
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby11c2VyLWluZm8ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvdXNlci1pbmZvL28tdXNlci1pbmZvLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdELE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLHlFQUF5RSxDQUFDO0FBQzlILE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLCtEQUErRCxDQUFDOztBQU9oSCxNQUFNLE9BQU8sZUFBZTs7NEdBQWYsZUFBZTs2R0FBZixlQUFlLGlCQUpYLGtCQUFrQixFQUFFLCtCQUErQixFQUFFLG1DQUFtQyxhQUM3RixZQUFZLEVBQUUsYUFBYSxFQUFFLFlBQVksYUFDekMsa0JBQWtCLEVBQUUsK0JBQStCLEVBQUUsbUNBQW1DOzZHQUV2RixlQUFlLFlBSGhCLFlBQVksRUFBRSxhQUFhLEVBQUUsWUFBWTsyRkFHeEMsZUFBZTtrQkFMM0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSwrQkFBK0IsRUFBRSxtQ0FBbUMsQ0FBQztvQkFDeEcsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSxZQUFZLENBQUM7b0JBQ3BELE9BQU8sRUFBRSxDQUFDLGtCQUFrQixFQUFFLCtCQUErQixFQUFFLG1DQUFtQyxDQUFDO2lCQUNwRyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgT1NoYXJlZE1vZHVsZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9zaGFyZWQubW9kdWxlJztcbmltcG9ydCB7IE9Vc2VySW5mb0NvbXBvbmVudCB9IGZyb20gJy4vby11c2VyLWluZm8uY29tcG9uZW50JztcbmltcG9ydCB7IE9Vc2VySW5mb0NvbmZpZ3VyYXRpb25JdGVtRGlyZWN0aXZlIH0gZnJvbSAnLi91c2VyLWluZm8tY29uZmlndXJhdGlvbi1pdGVtL28tdXNlci1pbmZvLWNvbmZpZ3VyYXRpb24taXRlbS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgT1VzZXJJbmZvQ29uZmlndXJhdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4vdXNlci1pbmZvLWNvbmZpZ3VyYXRpb24vby11c2VyLWluZm8tY29uZmlndXJhdGlvbi5kaXJlY3RpdmUnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtPVXNlckluZm9Db21wb25lbnQsIE9Vc2VySW5mb0NvbmZpZ3VyYXRpb25EaXJlY3RpdmUsIE9Vc2VySW5mb0NvbmZpZ3VyYXRpb25JdGVtRGlyZWN0aXZlXSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgT1NoYXJlZE1vZHVsZSwgUm91dGVyTW9kdWxlXSxcbiAgZXhwb3J0czogW09Vc2VySW5mb0NvbXBvbmVudCwgT1VzZXJJbmZvQ29uZmlndXJhdGlvbkRpcmVjdGl2ZSwgT1VzZXJJbmZvQ29uZmlndXJhdGlvbkl0ZW1EaXJlY3RpdmVdXG59KVxuZXhwb3J0IGNsYXNzIE9Vc2VySW5mb01vZHVsZSB7IH1cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1jb2x1bW4uaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2ludGVyZmFjZXMvby10YWJsZS1jb2x1bW4uaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFzeW5jVmFsaWRhdG9yRm4sIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBPVGFibGVDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL3RhYmxlL28tdGFibGUuY29tcG9uZW50JztcbmltcG9ydCB7IEV4cHJlc3Npb24gfSBmcm9tICcuLi90eXBlcy9leHByZXNzaW9uLnR5cGUnO1xuaW1wb3J0IHsgRXJyb3JEYXRhIH0gZnJvbSAnLi4vdHlwZXMvZXJyb3ItZGF0YS50eXBlJztcblxuZXhwb3J0IGludGVyZmFjZSBPVGFibGVDb2x1bW4ge1xuICBhdHRyOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbiAgdGFibGU6IE9UYWJsZUNvbXBvbmVudDtcbiAgZWRpdG9yOiBhbnk7XG4gIHJlbmRlcmVyOiBhbnk7XG4gIG11bHRpbGluZTogYm9vbGVhbjtcbiAgb3JkZXJhYmxlOiBib29sZWFuO1xuICBzZWFyY2hhYmxlOiBib29sZWFuO1xuICBncm91cGFibGU6IGJvb2xlYW47XG4gIHJlc2l6YWJsZTogYm9vbGVhbjtcbiAgdGl0bGVBbGlnbjogc3RyaW5nO1xuICBjb250ZW50QWxpZ246IHN0cmluZztcbiAgY29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmO1xuICBzaG93UGxhY2VIb2xkZXI6IGJvb2xlYW47XG4gIHdpZHRoOiBzdHJpbmc7XG4gIG1pbldpZHRoOiBzdHJpbmc7XG4gIG1heFdpZHRoOiBzdHJpbmc7XG4gIG9yaWdpbmFsV2lkdGg6IHN0cmluZztcbiAgY2xhc3M6IHN0cmluZztcbiAgdG9vbHRpcDogYm9vbGVhbjtcbiAgdG9vbHRpcFZhbHVlOiBzdHJpbmc7XG4gIGFuZ3VsYXJWYWxpZGF0b3JzRm46IFZhbGlkYXRvckZuW107XG4gIGFuZ3VsYXJWYWxpZGF0b3JzRm5FcnJvcnM6IEVycm9yRGF0YVtdO1xuICBhbmd1bGFyQXN5bmNWYWxpZGF0b3JzRm46IEFzeW5jVmFsaWRhdG9yRm5bXTtcbiAgdG9vbHRpcEZ1bmN0aW9uOiAocm93RGF0YTogYW55KSA9PiBhbnk7XG4gIGZpbHRlckV4cHJlc3Npb25GdW5jdGlvbjogKGNvbHVtbkF0dHI6IHN0cmluZywgcXVpY2tGaWx0ZXI/OiBzdHJpbmcpID0+IEV4cHJlc3Npb247XG4gIGdldFNRTFR5cGU6ICgpID0+IG51bWJlcjtcbiAgYnVpbGRDZWxsRWRpdG9yOiAodHlwZTogc3RyaW5nLCByZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBjb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsIHByb3BzT3JpZ2luOiBhbnksIHJlZ2lzdGVySW5Db2x1bW4/OmJvb2xlYW4pID0+IGFueTtcbiAgcmVnaXN0ZXJFZGl0b3I6IChlZGl0b3I6IGFueSkgPT4gdm9pZDtcbiAgcmVnaXN0ZXJSZW5kZXJlcjogKGVkaXRvcjogYW55KSA9PiB2b2lkO1xufVxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1jb2x1bW4uaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2ludGVyZmFjZXMvby10YWJsZS1jb2x1bW4uaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBc3luY1ZhbGlkYXRvckZuLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgT1RhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy90YWJsZS9vLXRhYmxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFeHByZXNzaW9uIH0gZnJvbSAnLi4vdHlwZXMvZXhwcmVzc2lvbi50eXBlJztcbmltcG9ydCB7IEVycm9yRGF0YSB9IGZyb20gJy4uL3R5cGVzL2Vycm9yLWRhdGEudHlwZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT1RhYmxlQ29sdW1uIHtcbiAgYXR0cjogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICB0eXBlOiBzdHJpbmc7XG4gIHRhYmxlOiBPVGFibGVDb21wb25lbnQ7XG4gIGVkaXRvcjogYW55O1xuICByZW5kZXJlcjogYW55O1xuICBtdWx0aWxpbmU6IGJvb2xlYW47XG4gIG9yZGVyYWJsZTogYm9vbGVhbjtcbiAgc2VhcmNoYWJsZTogYm9vbGVhbjtcbiAgZ3JvdXBhYmxlOiBib29sZWFuO1xuICByZXNpemFibGU6IGJvb2xlYW47XG4gIHRpdGxlQWxpZ246IHN0cmluZztcbiAgY29udGVudEFsaWduOiBzdHJpbmc7XG4gIGNvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZjtcbiAgc2hvd1BsYWNlSG9sZGVyOiBib29sZWFuO1xuICB3aWR0aDogc3RyaW5nO1xuICBtaW5XaWR0aDogc3RyaW5nO1xuICBtYXhXaWR0aDogc3RyaW5nO1xuICBvcmlnaW5hbFdpZHRoOiBzdHJpbmc7XG4gIGNsYXNzOiBzdHJpbmc7XG4gIHRvb2x0aXA6IGJvb2xlYW47XG4gIHRvb2x0aXBWYWx1ZTogc3RyaW5nO1xuICBhbmd1bGFyVmFsaWRhdG9yc0ZuOiBWYWxpZGF0b3JGbltdO1xuICBhbmd1bGFyVmFsaWRhdG9yc0ZuRXJyb3JzOiBFcnJvckRhdGFbXTtcbiAgYW5ndWxhckFzeW5jVmFsaWRhdG9yc0ZuOiBBc3luY1ZhbGlkYXRvckZuW107XG4gIHRvb2x0aXBGdW5jdGlvbjogKHJvd0RhdGE6IGFueSkgPT4gYW55O1xuICBmaWx0ZXJFeHByZXNzaW9uRnVuY3Rpb246IChjb2x1bW5BdHRyOiBzdHJpbmcsIHF1aWNrRmlsdGVyPzogc3RyaW5nKSA9PiBFeHByZXNzaW9uO1xuICBnZXRTUUxUeXBlOiAoKSA9PiBudW1iZXI7XG4gIGJ1aWxkQ2VsbEVkaXRvcjogKHR5cGU6IHN0cmluZywgY29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmLCBwcm9wc09yaWdpbjogYW55LCByZWdpc3RlckluQ29sdW1uPzogYm9vbGVhbikgPT4gYW55O1xuICByZWdpc3RlckVkaXRvcjogKGVkaXRvcjogYW55KSA9PiB2b2lkO1xuICByZWdpc3RlclJlbmRlcmVyOiAoZWRpdG9yOiBhbnkpID0+IHZvaWQ7XG59XG4iXX0=
@@ -1,48 +1,46 @@
1
- import { Component, ComponentFactoryResolver, Inject, Injector, ViewChild, ViewEncapsulation } from '@angular/core';
1
+ import { Component, Inject, Injector, ViewChild, ViewEncapsulation } from '@angular/core';
2
2
  import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
3
3
  import { DialogService } from '../../../services/dialog.service';
4
4
  import { Util } from '../../../util/util';
5
5
  import { OFormLayoutManagerContentDirective } from '../directives/o-form-layout-manager-content.directive';
6
6
  import * as i0 from "@angular/core";
7
7
  import * as i1 from "@angular/material/dialog";
8
- import * as i2 from "@angular/flex-layout/flex";
9
- import * as i3 from "@angular/material/icon";
10
- import * as i4 from "../directives/o-form-layout-manager-content.directive";
11
- import * as i5 from "../../../pipes/o-translate.pipe";
8
+ import * as i2 from "@angular/common";
9
+ import * as i3 from "@angular/flex-layout/flex";
10
+ import * as i4 from "@angular/material/icon";
11
+ import * as i5 from "../directives/o-form-layout-manager-content.directive";
12
+ import * as i6 from "../../../pipes/o-translate.pipe";
12
13
  export class OFormLayoutDialogComponent {
13
- constructor(dialogRef, injector, componentFactoryResolver, data) {
14
+ constructor(dialogRef, injector, data) {
14
15
  this.dialogRef = dialogRef;
15
16
  this.injector = injector;
16
- this.componentFactoryResolver = componentFactoryResolver;
17
+ this.title = 'LAYOUT_MANANGER.DIALOG_TITLE';
17
18
  this.dialogService = injector.get(DialogService);
18
- if (data.title) {
19
+ if (typeof data.title !== 'undefined') {
19
20
  this.title = data.title;
20
21
  }
21
22
  if (data.data) {
22
23
  this.data = data.data;
23
- const component = data.data.component;
24
- this.componentFactory = this.componentFactoryResolver.resolveComponentFactory(component);
24
+ this.component = data.data.component;
25
+ ;
25
26
  this.params = data.data.params;
26
27
  this.queryParams = data.data.queryParams;
27
28
  this.urlSegments = data.data.urlSegments;
29
+ this.dialogTitleSeparator = data.dialogTitleSeparator;
28
30
  }
29
31
  if (data.layoutManagerComponent) {
30
32
  this.formLayoutManager = data.layoutManagerComponent;
31
33
  }
32
34
  }
33
35
  ngAfterViewInit() {
34
- if (this.contentDirective && this.componentFactory) {
36
+ if (this.contentDirective && this.component) {
35
37
  const viewContainerRef = this.contentDirective.viewContainerRef;
36
38
  viewContainerRef.clear();
37
- viewContainerRef.createComponent(this.componentFactory);
39
+ viewContainerRef.createComponent(this.component);
38
40
  }
39
41
  }
40
42
  updateNavigation(data) {
41
- let label = this.formLayoutManager.getLabelFromData(data);
42
- if (label && label.length) {
43
- label = ': ' + label;
44
- }
45
- this.label = label;
43
+ this.label = this.formLayoutManager.getLabelFromData(data);
46
44
  }
47
45
  updateActiveData(data) {
48
46
  this.data = Object.assign(this.data, data);
@@ -103,18 +101,18 @@ export class OFormLayoutDialogComponent {
103
101
  return 'dialog';
104
102
  }
105
103
  }
106
- OFormLayoutDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OFormLayoutDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: i0.Injector }, { token: i0.ComponentFactoryResolver }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
107
- OFormLayoutDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: OFormLayoutDialogComponent, selector: "o-form-layout-dialog", host: { properties: { "class.o-form-layout-dialog": "true" } }, viewQueries: [{ propertyName: "contentDirective", first: true, predicate: OFormLayoutManagerContentDirective, descendants: true }], ngImport: i0, template: "<div fxLayout=\"row\" fxLayoutAlign=\"space-between center\" class=\"title-container\" mat-dialog-title>\n <span fxFlex fxLayoutAlign=\"center center\" > {{ (title || 'LAYOUT_MANANGER.DIALOG_TITLE') | oTranslate }}{{ label }} </span>\n <mat-icon (click)=\"closeDialog()\" svgIcon=\"ontimize:close\"></mat-icon>\n</div>\n\n<div mat-dialog-content class=\"form-layout-dialog-container\">\n <ng-template o-form-layout-manager-content></ng-template>\n</div>", styles: [".o-form-layout-dialog-overlay{width:65%;height:90%}.o-form-layout-dialog-overlay .title-container{cursor:default}.o-form-layout-dialog-overlay .title-container .mat-icon{cursor:pointer}.o-form-layout-dialog-overlay .mat-mdc-dialog-container{overflow:hidden}.o-form-layout-dialog-overlay .mat-mdc-dialog-container .mat-mdc-dialog-content.form-layout-dialog-container{display:block;padding-top:16px;margin:0;max-height:calc(100% - 78px);height:100%}.o-form-layout-dialog-overlay .mat-mdc-dialog-container .o-form-layout-dialog o-form-toolbar .mat-toolbar{padding:0}.o-form-layout-dialog-overlay .mat-mdc-dialog-container .o-form-layout-dialog .o-form form.inner-form{position:relative;margin-top:0}\n"], dependencies: [{ kind: "directive", type: i2.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i2.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i2.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i4.OFormLayoutManagerContentDirective, selector: "[o-form-layout-manager-content]", inputs: ["index"] }, { kind: "pipe", type: i5.OTranslatePipe, name: "oTranslate" }], encapsulation: i0.ViewEncapsulation.None });
104
+ OFormLayoutDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OFormLayoutDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: i0.Injector }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
105
+ OFormLayoutDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: OFormLayoutDialogComponent, selector: "o-form-layout-dialog", host: { properties: { "class.o-form-layout-dialog": "true" } }, viewQueries: [{ propertyName: "contentDirective", first: true, predicate: OFormLayoutManagerContentDirective, descendants: true }], ngImport: i0, template: "<div fxLayout=\"row\" fxLayoutAlign=\"space-between center\" class=\"title-container\" mat-dialog-title>\n <span fxFlex fxLayoutAlign=\"center center\"> {{ title | oTranslate }} <span *ngIf=\"title?.length>0\">{{dialogTitleSeparator}}&nbsp;</span>{{ label }}</span>\n <mat-icon (click)=\"closeDialog()\" svgIcon=\"ontimize:close\"></mat-icon>\n</div>\n\n<div mat-dialog-content class=\"form-layout-dialog-container\">\n <ng-template o-form-layout-manager-content></ng-template>\n</div>", styles: [".o-form-layout-dialog-overlay{width:65%;height:90%}.o-form-layout-dialog-overlay .title-container{cursor:default}.o-form-layout-dialog-overlay .title-container .mat-icon{cursor:pointer}.o-form-layout-dialog-overlay .mat-mdc-dialog-container{overflow:hidden}.o-form-layout-dialog-overlay .mat-mdc-dialog-container .mat-mdc-dialog-content.form-layout-dialog-container{display:block;padding-top:16px;margin:0;max-height:calc(100% - 78px);height:100%}.o-form-layout-dialog-overlay .mat-mdc-dialog-container .o-form-layout-dialog o-form-toolbar .mat-toolbar{padding:0}.o-form-layout-dialog-overlay .mat-mdc-dialog-container .o-form-layout-dialog .o-form form.inner-form{position:relative;margin-top:0}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i3.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i3.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.OFormLayoutManagerContentDirective, selector: "[o-form-layout-manager-content]", inputs: ["index"] }, { kind: "pipe", type: i6.OTranslatePipe, name: "oTranslate" }], encapsulation: i0.ViewEncapsulation.None });
108
106
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OFormLayoutDialogComponent, decorators: [{
109
107
  type: Component,
110
108
  args: [{ selector: 'o-form-layout-dialog', encapsulation: ViewEncapsulation.None, host: {
111
109
  '[class.o-form-layout-dialog]': 'true'
112
- }, template: "<div fxLayout=\"row\" fxLayoutAlign=\"space-between center\" class=\"title-container\" mat-dialog-title>\n <span fxFlex fxLayoutAlign=\"center center\" > {{ (title || 'LAYOUT_MANANGER.DIALOG_TITLE') | oTranslate }}{{ label }} </span>\n <mat-icon (click)=\"closeDialog()\" svgIcon=\"ontimize:close\"></mat-icon>\n</div>\n\n<div mat-dialog-content class=\"form-layout-dialog-container\">\n <ng-template o-form-layout-manager-content></ng-template>\n</div>", styles: [".o-form-layout-dialog-overlay{width:65%;height:90%}.o-form-layout-dialog-overlay .title-container{cursor:default}.o-form-layout-dialog-overlay .title-container .mat-icon{cursor:pointer}.o-form-layout-dialog-overlay .mat-mdc-dialog-container{overflow:hidden}.o-form-layout-dialog-overlay .mat-mdc-dialog-container .mat-mdc-dialog-content.form-layout-dialog-container{display:block;padding-top:16px;margin:0;max-height:calc(100% - 78px);height:100%}.o-form-layout-dialog-overlay .mat-mdc-dialog-container .o-form-layout-dialog o-form-toolbar .mat-toolbar{padding:0}.o-form-layout-dialog-overlay .mat-mdc-dialog-container .o-form-layout-dialog .o-form form.inner-form{position:relative;margin-top:0}\n"] }]
113
- }], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: i0.Injector }, { type: i0.ComponentFactoryResolver }, { type: undefined, decorators: [{
110
+ }, template: "<div fxLayout=\"row\" fxLayoutAlign=\"space-between center\" class=\"title-container\" mat-dialog-title>\n <span fxFlex fxLayoutAlign=\"center center\"> {{ title | oTranslate }} <span *ngIf=\"title?.length>0\">{{dialogTitleSeparator}}&nbsp;</span>{{ label }}</span>\n <mat-icon (click)=\"closeDialog()\" svgIcon=\"ontimize:close\"></mat-icon>\n</div>\n\n<div mat-dialog-content class=\"form-layout-dialog-container\">\n <ng-template o-form-layout-manager-content></ng-template>\n</div>", styles: [".o-form-layout-dialog-overlay{width:65%;height:90%}.o-form-layout-dialog-overlay .title-container{cursor:default}.o-form-layout-dialog-overlay .title-container .mat-icon{cursor:pointer}.o-form-layout-dialog-overlay .mat-mdc-dialog-container{overflow:hidden}.o-form-layout-dialog-overlay .mat-mdc-dialog-container .mat-mdc-dialog-content.form-layout-dialog-container{display:block;padding-top:16px;margin:0;max-height:calc(100% - 78px);height:100%}.o-form-layout-dialog-overlay .mat-mdc-dialog-container .o-form-layout-dialog o-form-toolbar .mat-toolbar{padding:0}.o-form-layout-dialog-overlay .mat-mdc-dialog-container .o-form-layout-dialog .o-form form.inner-form{position:relative;margin-top:0}\n"] }]
111
+ }], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: i0.Injector }, { type: undefined, decorators: [{
114
112
  type: Inject,
115
113
  args: [MAT_DIALOG_DATA]
116
114
  }] }]; }, propDecorators: { contentDirective: [{
117
115
  type: ViewChild,
118
116
  args: [OFormLayoutManagerContentDirective]
119
117
  }] } });
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1mb3JtLWxheW91dC1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2xheW91dHMvZm9ybS1sYXlvdXQvZGlhbG9nL28tZm9ybS1sYXlvdXQtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9sYXlvdXRzL2Zvcm0tbGF5b3V0L2RpYWxvZy9vLWZvcm0tbGF5b3V0LWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUVULHdCQUF3QixFQUN4QixNQUFNLEVBQ04sUUFBUSxFQUNSLFNBQVMsRUFDVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUl6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDakUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLHVEQUF1RCxDQUFDOzs7Ozs7O0FBWTNHLE1BQU0sT0FBTywwQkFBMEI7SUFjckMsWUFDUyxTQUFtRCxFQUNoRCxRQUFrQixFQUNsQix3QkFBa0QsRUFDbkMsSUFBUztRQUgzQixjQUFTLEdBQVQsU0FBUyxDQUEwQztRQUNoRCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFHNUQsSUFBSSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2pELElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNkLElBQUksQ0FBQyxLQUFLLEdB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Z0JBQWdCO3NCQUE5RCxTQUFTO3VCQUFDLGtDQUFrQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50RmFjdG9yeSxcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICBJbmplY3QsXG4gIEluamVjdG9yLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG5pbXBvcnQgeyBJTGF5b3V0TWFuYWdlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvbGF5b3V0LW1hbmFnZXItY29tcG9uZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBPRm9ybUxheW91dE1hbmFnZXJNb2RlIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9vLWZvcm0tbGF5b3V0LW1hbmFnZXItbW9kZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2RpYWxvZy5zZXJ2aWNlJztcbmltcG9ydCB7IFV0aWwgfSBmcm9tICcuLi8uLi8uLi91dGlsL3V0aWwnO1xuaW1wb3J0IHsgT0Zvcm1MYXlvdXRNYW5hZ2VyQ29udGVudERpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvby1mb3JtLWxheW91dC1tYW5hZ2VyLWNvbnRlbnQuZGlyZWN0aXZlJztcbmltcG9ydCB7IE9Gb3JtTGF5b3V0TWFuYWdlckJhc2UgfSBmcm9tICcuLi9vLWZvcm0tbGF5b3V0LW1hbmFnZXItYmFzZS5jbGFzcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28tZm9ybS1sYXlvdXQtZGlhbG9nJyxcbiAgdGVtcGxhdGVVcmw6ICcuL28tZm9ybS1sYXlvdXQtZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vby1mb3JtLWxheW91dC1kaWFsb2cuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDoge1xuICAgICdbY2xhc3Muby1mb3JtLWxheW91dC1kaWFsb2ddJzogJ3RydWUnXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgT0Zvcm1MYXlvdXREaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPRm9ybUxheW91dE1hbmFnZXJNb2RlLCBBZnRlclZpZXdJbml0IHtcbiAgZm9ybUxheW91dE1hbmFnZXI6IE9Gb3JtTGF5b3V0TWFuYWdlckJhc2U7XG4gIHF1ZXJ5UGFyYW1zOiBhbnk7XG4gIHBhcmFtczogb2JqZWN0O1xuICB1cmxTZWdtZW50czogYW55W107XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGRhdGE6IGFueTtcblxuICBwcm90ZWN0ZWQgY29tcG9uZW50RmFjdG9yeTogQ29tcG9uZW50RmFjdG9yeTxhbnk+O1xuICBwcm90ZWN0ZWQgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZTtcblxuICBAVmlld0NoaWxkKE9Gb3JtTGF5b3V0TWFuYWdlckNvbnRlbnREaXJlY3RpdmUpIGNvbnRlbnREaXJlY3RpdmU6IE9Gb3JtTGF5b3V0TWFuYWdlckNvbnRlbnREaXJlY3RpdmU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPE9Gb3JtTGF5b3V0RGlhbG9nQ29tcG9uZW50PixcbiAgICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByb3RlY3RlZCBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgZGF0YTogYW55XG4gICkge1xuICAgIHRoaXMuZGlhbG9nU2VydmljZSA9IGluamVjdG9yLmdldChEaWFsb2dTZXJ2aWNlKTtcbiAgICBpZiAoZGF0YS50aXRsZSkge1xuICAgICAgdGhpcy50aXRsZSA9IGRhdGEudGl0bGU7XG4gICAgfVxuICAgIGlmIChkYXRhLmRhdGEpIHtcbiAgICAgIHRoaXMuZGF0YSA9IGRhdGEuZGF0YTtcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGRhdGEuZGF0YS5jb21wb25lbnQ7XG4gICAgICB0aGlzLmNvbXBvbmVudEZhY3RvcnkgPSB0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShjb21wb25lbnQpO1xuICAgICAgdGhpcy5wYXJhbXMgPSBkYXRhLmRhdGEucGFyYW1zO1xuICAgICAgdGhpcy5xdWVyeVBhcmFtcyA9IGRhdGEuZGF0YS5xdWVyeVBhcmFtcztcbiAgICAgIHRoaXMudXJsU2VnbWVudHMgPSBkYXRhLmRhdGEudXJsU2VnbWVudHM7XG4gICAgfVxuICAgIGlmIChkYXRhLmxheW91dE1hbmFnZXJDb21wb25lbnQpIHtcbiAgICAgIHRoaXMuZm9ybUxheW91dE1hbmFnZXIgPSBkYXRhLmxheW91dE1hbmFnZXJDb21wb25lbnQ7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLmNvbnRlbnREaXJlY3RpdmUgJiYgdGhpcy5jb21wb25lbnRGYWN0b3J5KSB7XG4gICAgICBjb25zdCB2aWV3Q29udGFpbmVyUmVmID0gdGhpcy5jb250ZW50RGlyZWN0aXZlLnZpZXdDb250YWluZXJSZWY7XG4gICAgICB2aWV3Q29udGFpbmVyUmVmLmNsZWFyKCk7XG4gICAgICB2aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudCh0aGlzLmNvbXBvbmVudEZhY3RvcnkpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZU5hdmlnYXRpb24oZGF0YTogYW55KSB7XG4gICAgbGV0IGxhYmVsID0gdGhpcy5mb3JtTGF5b3V0TWFuYWdlci5nZXRMYWJlbEZyb21EYXRhKGRhdGEpO1xuICAgIGlmIChsYWJlbCAmJiBsYWJlbC5sZW5ndGgpIHtcbiAgICAgIGxhYmVsID0gJzogJyArIGxhYmVsO1xuICAgIH1cbiAgICB0aGlzLmxhYmVsID0gbGFiZWw7XG4gIH1cblxuICB1cGRhdGVBY3RpdmVEYXRhKGRhdGE6IGFueSkge1xuICAgIHRoaXMuZGF0YSA9IE9iamVjdC5hc3NpZ24odGhpcy5kYXRhLCBkYXRhKTtcbiAgfVxuXG4gIGNsb3NlRGlhbG9nKG9wdGlvbnM/OiBhbnkpIHtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQob3B0aW9ucykgJiYgVXRpbC5pc0RlZmluZWQob3B0aW9ucy5leGl0V2l0aG91dENvbmZpcm1hdGlvbikgJiYgb3B0aW9ucy5leGl0V2l0aG91dENvbmZpcm1hdGlvbikge1xuICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuZm9ybUxheW91dE1hbmFnZXIuaGFzVG9Db25maXJtRXhpdCh0aGlzLmRhdGEpKSB7XG4gICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5jb25maXJtKCdDT05GSVJNJywgJ01FU1NBR0VTLkZPUk1fQ0hBTkdFU19XSUxMX0JFX0xPU1QnKS50aGVuKHJlcyA9PiB7XG4gICAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXRSb3V0ZU9mQWN0aXZlSXRlbSgpOiBhbnlbXSB7XG4gICAgY29uc3QgcGFyZW50Um91dGUgPSB0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyLnBhcmVudEZvcm1MYXlvdXRNYW5hZ2VyLmdldFJvdXRlT2ZBY3RpdmVJdGVtKCk7XG4gICAgY29uc3Qgc2VnbWVudHMgPSAodGhpcy51cmxTZWdtZW50cyB8fCBbXSk7XG4gICAgY29uc3Qgcm91dGUgPSBbXTtcbiAgICBzZWdtZW50cy5mb3JFYWNoKChzZWdtZW50LCBpbmRleCkgPT4ge1xuICAgICAgaWYgKHBhcmVudFJvdXRlW2luZGV4XSAhPT0gc2VnbWVudC5wYXRoKSB7XG4gICAgICAgIHJvdXRlLnB1c2goc2VnbWVudC5wYXRoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcm91dGU7XG4gIH1cblxuICBnZXRQYXJhbXMoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5wYXJhbXM7XG4gIH1cblxuICBnZXRGb3JtQ2FjaGVEYXRhKCkge1xuICAgIHJldHVybiB0aGlzLmRhdGE7XG4gIH1cblxuICBpc01haW5Db21wb25lbnQoY29tcDogSUxheW91dE1hbmFnZXJDb21wb25lbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIWNvbXAub0Zvcm1MYXlvdXREaWFsb2c7XG4gIH1cblxuICBjbG9zZURldGFpbChvcHRpb25zKSB7XG4gICAgdGhpcy5jbG9zZURpYWxvZyhvcHRpb25zKTtcbiAgfVxuXG4gIGdldERhdGFUb1N0b3JlKCk6IGFueSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBzZXRNb2RpZmllZFN0YXRlKGZvcm1BdHRyOiBzdHJpbmcsIG1vZGlmaWVkOiBib29sZWFuLCBjb25maXJtRXhpdDogYm9vbGVhbikge1xuICAgIHRoaXMuZGF0YS5pbm5lckZvcm1zSW5mb1tmb3JtQXR0cl0gPSB7XG4gICAgICBtb2RpZmllZDogbW9kaWZpZWQsXG4gICAgICBjb25maXJtT25FeGl0OiBjb25maXJtRXhpdFxuICAgIH07XG4gIH1cblxuICBjYW5BZGREZXRhaWxDb21wb25lbnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBnZXRJZE9mQWN0aXZlSXRlbSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnZGlhbG9nJztcbiAgfVxufVxuIiwiPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJzcGFjZS1iZXR3ZWVuIGNlbnRlclwiIGNsYXNzPVwidGl0bGUtY29udGFpbmVyXCIgbWF0LWRpYWxvZy10aXRsZT5cbiAgPHNwYW4gZnhGbGV4IGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCIgPiB7eyAodGl0bGUgfHwgJ0xBWU9VVF9NQU5BTkdFUi5ESUFMT0dfVElUTEUnKSB8IG9UcmFuc2xhdGUgfX17eyBsYWJlbCB9fSA8L3NwYW4+XG4gIDxtYXQtaWNvbiAoY2xpY2spPVwiY2xvc2VEaWFsb2coKVwiIHN2Z0ljb249XCJvbnRpbWl6ZTpjbG9zZVwiPjwvbWF0LWljb24+XG48L2Rpdj5cblxuPGRpdiBtYXQtZGlhbG9nLWNvbnRlbnQgY2xhc3M9XCJmb3JtLWxheW91dC1kaWFsb2ctY29udGFpbmVyXCI+XG4gIDxuZy10ZW1wbGF0ZSBvLWZvcm0tbGF5b3V0LW1hbmFnZXItY29udGVudD48L25nLXRlbXBsYXRlPlxuPC9kaXY+Il19
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1mb3JtLWxheW91dC1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2xheW91dHMvZm9ybS1sYXlvdXQvZGlhbG9nL28tZm9ybS1sYXlvdXQtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9sYXlvdXRzL2Zvcm0tbGF5b3V0L2RpYWxvZy9vLWZvcm0tbGF5b3V0LWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBSXpFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDMUMsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sdURBQXVELENBQUM7Ozs7Ozs7O0FBWTNHLE1BQU0sT0FBTywwQkFBMEI7SUFnQnJDLFlBQ1MsU0FBbUQsRUFDaEQsUUFBa0IsRUFDSCxJQUFTO1FBRjNCLGNBQVMsR0FBVCxTQUFTLENBQTBDO1FBQ2hELGFBQVEsR0FBUixRQUFRLENBQVU7UUFaOUIsVUFBSyxHQUFXLDhCQUE4QixDQUFDO1FBZTdDLElBQUksQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNqRCxJQUFJLE9BQU8sSUFBSSxDQUFDLEtBQUssS0FBSyxXQUFXLEVBQUU7WUFDckMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQ3pCO1FBQ0QsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7WUFBQSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDL0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUN6QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUE7U0FDdEQ7UUFDRCxJQUFJLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtZQUMvQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDO1NBQ3REO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQzNDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDO1lBQ2hFLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3pCLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDbEQ7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsSUFBUztRQUN4QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsSUFBUztRQUN4QixJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQWE7UUFDdkIsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLHVCQUF1QixDQUFDLElBQUksT0FBTyxDQUFDLHVCQUF1QixFQUFFO1lBQ2pILElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDeEI7YUFBTTtZQUNMLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDdEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLG9DQUFvQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUNyRixJQUFJLEdBQUcsRUFBRTt3QkFDUCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO3FCQUN4QjtnQkFDSCxDQUFDLENBQUMsQ0FBQzthQUNKO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDeEI7U0FDRjtJQUNILENBQUM7SUFFRCxvQkFBb0I7UUFDbEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHVCQUF1QixDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDMUYsTUFBTSxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNqQixRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ2xDLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxLQUFLLE9BQU8sQ0FBQyxJQUFJLEVBQUU7Z0JBQ3ZDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzFCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVELGVBQWUsQ0FBQyxJQUE2QjtRQUMzQyxPQUFPLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQ2pDLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBTztRQUNqQixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxjQUFjO1FBQ1osT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsUUFBZ0IsRUFBRSxRQUFpQixFQUFFLFdBQW9CO1FBQ3hFLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxHQUFHO1lBQ25DLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLGFBQWEsRUFBRSxXQUFXO1NBQzNCLENBQUM7SUFDSixDQUFDO0lBRUQscUJBQXFCO1FBQ25CLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGlCQUFpQjtRQUNmLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7O3VIQW5IVSwwQkFBMEIsc0VBbUIzQixlQUFlOzJHQW5CZCwwQkFBMEIsOEtBYzFCLGtDQUFrQyxnRENqQy9DLDBlQU9NOzJGRFlPLDBCQUEwQjtrQkFUdEMsU0FBUzsrQkFDRSxzQkFBc0IsaUJBR2pCLGlCQUFpQixDQUFDLElBQUksUUFDL0I7d0JBQ0osOEJBQThCLEVBQUUsTUFBTTtxQkFDdkM7OzBCQXFCRSxNQUFNOzJCQUFDLGVBQWU7NENBTHNCLGdCQUFnQjtzQkFBOUQsU0FBUzt1QkFBQyxrQ0FBa0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEluamVjdCwgSW5qZWN0b3IsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuaW1wb3J0IHsgSUxheW91dE1hbmFnZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL2xheW91dC1tYW5hZ2VyLWNvbXBvbmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgT0Zvcm1MYXlvdXRNYW5hZ2VyTW9kZSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvby1mb3JtLWxheW91dC1tYW5hZ2VyLW1vZGUuaW50ZXJmYWNlJztcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9kaWFsb2cuc2VydmljZSc7XG5pbXBvcnQgeyBVdGlsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbC91dGlsJztcbmltcG9ydCB7IE9Gb3JtTGF5b3V0TWFuYWdlckNvbnRlbnREaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL28tZm9ybS1sYXlvdXQtbWFuYWdlci1jb250ZW50LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBPRm9ybUxheW91dE1hbmFnZXJCYXNlIH0gZnJvbSAnLi4vby1mb3JtLWxheW91dC1tYW5hZ2VyLWJhc2UuY2xhc3MnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvLWZvcm0tbGF5b3V0LWRpYWxvZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9vLWZvcm0tbGF5b3V0LWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL28tZm9ybS1sYXlvdXQtZGlhbG9nLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLm8tZm9ybS1sYXlvdXQtZGlhbG9nXSc6ICd0cnVlJ1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIE9Gb3JtTGF5b3V0RGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT0Zvcm1MYXlvdXRNYW5hZ2VyTW9kZSwgQWZ0ZXJWaWV3SW5pdCB7XG4gIGZvcm1MYXlvdXRNYW5hZ2VyOiBPRm9ybUxheW91dE1hbmFnZXJCYXNlO1xuICBxdWVyeVBhcmFtczogYW55O1xuICBwYXJhbXM6IG9iamVjdDtcbiAgdXJsU2VnbWVudHM6IGFueVtdO1xuICBsYWJlbDogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nID0gJ0xBWU9VVF9NQU5BTkdFUi5ESUFMT0dfVElUTEUnO1xuICBkYXRhOiBhbnk7XG4gIGRpYWxvZ1RpdGxlU2VwYXJhdG9yOiBzdHJpbmc7XG5cblxuICBwcm90ZWN0ZWQgY29tcG9uZW50O1xuICBwcm90ZWN0ZWQgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZTtcblxuICBAVmlld0NoaWxkKE9Gb3JtTGF5b3V0TWFuYWdlckNvbnRlbnREaXJlY3RpdmUpIGNvbnRlbnREaXJlY3RpdmU6IE9Gb3JtTGF5b3V0TWFuYWdlckNvbnRlbnREaXJlY3RpdmU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPE9Gb3JtTGF5b3V0RGlhbG9nQ29tcG9uZW50PixcbiAgICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBkYXRhOiBhbnlcbiAgKSB7XG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KERpYWxvZ1NlcnZpY2UpO1xuICAgIGlmICh0eXBlb2YgZGF0YS50aXRsZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRoaXMudGl0bGUgPSBkYXRhLnRpdGxlO1xuICAgIH1cbiAgICBpZiAoZGF0YS5kYXRhKSB7XG4gICAgICB0aGlzLmRhdGEgPSBkYXRhLmRhdGE7XG4gICAgICB0aGlzLmNvbXBvbmVudCA9IGRhdGEuZGF0YS5jb21wb25lbnQ7O1xuICAgICAgdGhpcy5wYXJhbXMgPSBkYXRhLmRhdGEucGFyYW1zO1xuICAgICAgdGhpcy5xdWVyeVBhcmFtcyA9IGRhdGEuZGF0YS5xdWVyeVBhcmFtcztcbiAgICAgIHRoaXMudXJsU2VnbWVudHMgPSBkYXRhLmRhdGEudXJsU2VnbWVudHM7XG4gICAgICB0aGlzLmRpYWxvZ1RpdGxlU2VwYXJhdG9yID0gZGF0YS5kaWFsb2dUaXRsZVNlcGFyYXRvclxuICAgIH1cbiAgICBpZiAoZGF0YS5sYXlvdXRNYW5hZ2VyQ29tcG9uZW50KSB7XG4gICAgICB0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyID0gZGF0YS5sYXlvdXRNYW5hZ2VyQ29tcG9uZW50O1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAodGhpcy5jb250ZW50RGlyZWN0aXZlICYmIHRoaXMuY29tcG9uZW50KSB7XG4gICAgICBjb25zdCB2aWV3Q29udGFpbmVyUmVmID0gdGhpcy5jb250ZW50RGlyZWN0aXZlLnZpZXdDb250YWluZXJSZWY7XG4gICAgICB2aWV3Q29udGFpbmVyUmVmLmNsZWFyKCk7XG4gICAgICB2aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudCh0aGlzLmNvbXBvbmVudCk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlTmF2aWdhdGlvbihkYXRhOiBhbnkpIHtcbiAgICB0aGlzLmxhYmVsID0gdGhpcy5mb3JtTGF5b3V0TWFuYWdlci5nZXRMYWJlbEZyb21EYXRhKGRhdGEpO1xuICB9XG5cbiAgdXBkYXRlQWN0aXZlRGF0YShkYXRhOiBhbnkpIHtcbiAgICB0aGlzLmRhdGEgPSBPYmplY3QuYXNzaWduKHRoaXMuZGF0YSwgZGF0YSk7XG4gIH1cblxuICBjbG9zZURpYWxvZyhvcHRpb25zPzogYW55KSB7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKG9wdGlvbnMpICYmIFV0aWwuaXNEZWZpbmVkKG9wdGlvbnMuZXhpdFdpdGhvdXRDb25maXJtYXRpb24pICYmIG9wdGlvbnMuZXhpdFdpdGhvdXRDb25maXJtYXRpb24pIHtcbiAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyLmhhc1RvQ29uZmlybUV4aXQodGhpcy5kYXRhKSkge1xuICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuY29uZmlybSgnQ09ORklSTScsICdNRVNTQUdFUy5GT1JNX0NIQU5HRVNfV0lMTF9CRV9MT1NUJykudGhlbihyZXMgPT4ge1xuICAgICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0Um91dGVPZkFjdGl2ZUl0ZW0oKTogYW55W10ge1xuICAgIGNvbnN0IHBhcmVudFJvdXRlID0gdGhpcy5mb3JtTGF5b3V0TWFuYWdlci5wYXJlbnRGb3JtTGF5b3V0TWFuYWdlci5nZXRSb3V0ZU9mQWN0aXZlSXRlbSgpO1xuICAgIGNvbnN0IHNlZ21lbnRzID0gKHRoaXMudXJsU2VnbWVudHMgfHwgW10pO1xuICAgIGNvbnN0IHJvdXRlID0gW107XG4gICAgc2VnbWVudHMuZm9yRWFjaCgoc2VnbWVudCwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChwYXJlbnRSb3V0ZVtpbmRleF0gIT09IHNlZ21lbnQucGF0aCkge1xuICAgICAgICByb3V0ZS5wdXNoKHNlZ21lbnQucGF0aCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJvdXRlO1xuICB9XG5cbiAgZ2V0UGFyYW1zKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMucGFyYW1zO1xuICB9XG5cbiAgZ2V0Rm9ybUNhY2hlRGF0YSgpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhO1xuICB9XG5cbiAgaXNNYWluQ29tcG9uZW50KGNvbXA6IElMYXlvdXRNYW5hZ2VyQ29tcG9uZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICFjb21wLm9Gb3JtTGF5b3V0RGlhbG9nO1xuICB9XG5cbiAgY2xvc2VEZXRhaWwob3B0aW9ucykge1xuICAgIHRoaXMuY2xvc2VEaWFsb2cob3B0aW9ucyk7XG4gIH1cblxuICBnZXREYXRhVG9TdG9yZSgpOiBhbnkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgc2V0TW9kaWZpZWRTdGF0ZShmb3JtQXR0cjogc3RyaW5nLCBtb2RpZmllZDogYm9vbGVhbiwgY29uZmlybUV4aXQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRhdGEuaW5uZXJGb3Jtc0luZm9bZm9ybUF0dHJdID0ge1xuICAgICAgbW9kaWZpZWQ6IG1vZGlmaWVkLFxuICAgICAgY29uZmlybU9uRXhpdDogY29uZmlybUV4aXRcbiAgICB9O1xuICB9XG5cbiAgY2FuQWRkRGV0YWlsQ29tcG9uZW50KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgZ2V0SWRPZkFjdGl2ZUl0ZW0oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ2RpYWxvZyc7XG4gIH1cbn1cbiIsIjxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3BhY2UtYmV0d2VlbiBjZW50ZXJcIiBjbGFzcz1cInRpdGxlLWNvbnRhaW5lclwiIG1hdC1kaWFsb2ctdGl0bGU+XG4gIDxzcGFuIGZ4RmxleCBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiPiB7eyB0aXRsZSB8IG9UcmFuc2xhdGUgfX0gPHNwYW4gKm5nSWY9XCJ0aXRsZT8ubGVuZ3RoPjBcIj57e2RpYWxvZ1RpdGxlU2VwYXJhdG9yfX0mbmJzcDs8L3NwYW4+e3sgbGFiZWwgfX08L3NwYW4+XG4gIDxtYXQtaWNvbiAoY2xpY2spPVwiY2xvc2VEaWFsb2coKVwiIHN2Z0ljb249XCJvbnRpbWl6ZTpjbG9zZVwiPjwvbWF0LWljb24+XG48L2Rpdj5cblxuPGRpdiBtYXQtZGlhbG9nLWNvbnRlbnQgY2xhc3M9XCJmb3JtLWxheW91dC1kaWFsb2ctY29udGFpbmVyXCI+XG4gIDxuZy10ZW1wbGF0ZSBvLWZvcm0tbGF5b3V0LW1hbmFnZXItY29udGVudD48L25nLXRlbXBsYXRlPlxuPC9kaXY+Il19
@@ -38,14 +38,15 @@ export class OFormLayoutDialogOptionsDirective {
38
38
  closeOnNavigation: this._closeOnNavigation,
39
39
  title: this.title,
40
40
  labelColumns: this.labelColumns,
41
- separator: this.separator
41
+ separator: this.separator,
42
+ dialogTitleSeparator: this.dialogTitleSeparator
42
43
  };
43
44
  Object.keys(result).forEach(key => result[key] == null ? delete result[key] : {});
44
45
  return result;
45
46
  }
46
47
  }
47
48
  OFormLayoutDialogOptionsDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OFormLayoutDialogOptionsDirective, deps: [{ token: i1.OFormLayoutManagerComponent }], target: i0.ɵɵFactoryTarget.Directive });
48
- OFormLayoutDialogOptionsDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: OFormLayoutDialogOptionsDirective, selector: "o-form-layout-dialog-options, o-form-layout-manager[mode=\"dialog\"]", inputs: { width: "width", minWidth: ["min-width", "minWidth"], maxWidth: ["max-width", "maxWidth"], height: "height", minHeight: ["min-height", "minHeight"], maxHeight: ["max-height", "maxHeight"], class: "class", position: "position", backdropClass: ["backdrop-class", "backdropClass"], closeOnNavigation: ["close-on-navigation", "closeOnNavigation"], disableClose: ["disable-close", "disableClose"], title: "title", labelColumns: ["label-columns", "labelColumns"], separator: "separator" }, usesOnChanges: true, ngImport: i0 });
49
+ OFormLayoutDialogOptionsDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: OFormLayoutDialogOptionsDirective, selector: "o-form-layout-dialog-options, o-form-layout-manager[mode=\"dialog\"]", inputs: { width: "width", minWidth: ["min-width", "minWidth"], maxWidth: ["max-width", "maxWidth"], height: "height", minHeight: ["min-height", "minHeight"], maxHeight: ["max-height", "maxHeight"], class: "class", position: "position", backdropClass: ["backdrop-class", "backdropClass"], closeOnNavigation: ["close-on-navigation", "closeOnNavigation"], disableClose: ["disable-close", "disableClose"], title: "title", labelColumns: ["label-columns", "labelColumns"], separator: "separator", dialogTitleSeparator: ["dialog-title-separator", "dialogTitleSeparator"] }, usesOnChanges: true, ngImport: i0 });
49
50
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OFormLayoutDialogOptionsDirective, decorators: [{
50
51
  type: Directive,
51
52
  args: [{
@@ -87,5 +88,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
87
88
  args: ['label-columns']
88
89
  }], separator: [{
89
90
  type: Input
91
+ }], dialogTitleSeparator: [{
92
+ type: Input,
93
+ args: ['dialog-title-separator']
90
94
  }] } });
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1mb3JtLWxheW91dC1kaWFsb2ctb3B0aW9ucy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvbGF5b3V0cy9mb3JtLWxheW91dC9kaWFsb2cvb3B0aW9ucy9vLWZvcm0tbGF5b3V0LWRpYWxvZy1vcHRpb25zLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7O0FBS3BGLE1BQU0sT0FBTyxpQ0FBaUM7SUFFNUMsWUFBc0IsaUJBQThDO1FBQTlDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBNkI7UUFTN0QsVUFBSyxHQUFXLEVBQUUsQ0FBQztRQVNuQixXQUFNLEdBQVcsRUFBRSxDQUFDO1FBU3BCLFVBQUssR0FBc0IsRUFBRSxDQUFDO1FBUTNCLHVCQUFrQixHQUFZLElBQUksQ0FBQztRQU1uQyxrQkFBYSxHQUFZLElBQUksQ0FBQztJQXpDZ0MsQ0FBQztJQUV6RSxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDMUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1NBQzVEO0lBQ0gsQ0FBQztJQThCRCxJQUNJLGlCQUFpQixDQUFDLEtBQWM7UUFDbEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFHRCxJQUNJLFlBQVksQ0FBQyxLQUFjO1FBQzdCLElBQUksQ0FBQyxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQVdELFVBQVU7UUFDUixNQUFNLE1BQU0sR0FBRztZQUNiLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztZQUNqQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDekIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3pCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztZQUNqQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQ2pDLFlBQVksRUFBRSxJQUFJLENBQUMsYUFBYTtZQUNoQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsa0JBQWtCO1lBQzFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztZQUNqQixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDL0IsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1NBQzFCLENBQUE7UUFFRCxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNsRixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDOzs4SEE5RVUsaUNBQWlDO2tIQUFqQyxpQ0FBaUM7MkZBQWpDLGlDQUFpQztrQkFIN0MsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsb0VBQW9FO2lCQUMvRTtrSEFZUSxLQUFLO3NCQURYLEtBQUs7Z0JBSUMsUUFBUTtzQkFEZCxLQUFLO3VCQUFDLFdBQVc7Z0JBSVgsUUFBUTtzQkFEZCxLQUFLO3VCQUFDLFdBQVc7Z0JBSVgsTUFBTTtzQkFEWixLQUFLO2dCQUlDLFNBQVM7c0JBRGYsS0FBSzt1QkFBQyxZQUFZO2dCQUlaLFNBQVM7c0JBRGYsS0FBSzt1QkFBQyxZQUFZO2dCQUlaLEtBQUs7c0JBRFgsS0FBSztnQkFJQyxRQUFRO3NCQURkLEtBQUs7Z0JBSUMsYUFBYTtzQkFEbkIsS0FBSzt1QkFBQyxnQkFBZ0I7Z0JBS25CLGlCQUFpQjtzQkFEcEIsS0FBSzt1QkFBQyxxQkFBcUI7Z0JBT3hCLFlBQVk7c0JBRGYsS0FBSzt1QkFBQyxlQUFlO2dCQU1mLEtBQUs7c0JBRFgsS0FBSztnQkFJQyxZQUFZO3NCQURsQixLQUFLO3VCQUFDLGVBQWU7Z0JBSWYsU0FBUztzQkFEZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGlhbG9nUG9zaXRpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG5pbXBvcnQgeyBCb29sZWFuQ29udmVydGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGVjb3JhdG9ycy9pbnB1dC1jb252ZXJ0ZXInO1xuaW1wb3J0IHsgT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vby1mb3JtLWxheW91dC1tYW5hZ2VyLmNvbXBvbmVudCc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ28tZm9ybS1sYXlvdXQtZGlhbG9nLW9wdGlvbnMsIG8tZm9ybS1sYXlvdXQtbWFuYWdlclttb2RlPVwiZGlhbG9nXCJdJ1xufSlcbmV4cG9ydCBjbGFzcyBPRm9ybUxheW91dERpYWxvZ09wdGlvbnNEaXJlY3RpdmUge1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBmb3JtTGF5b3V0TWFuYWdlcjogT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50KSB7IH1cblxuICBuZ09uQ2hhbmdlcygpIHtcbiAgICBpZiAodGhpcy5mb3JtTGF5b3V0TWFuYWdlcikge1xuICAgICAgdGhpcy5mb3JtTGF5b3V0TWFuYWdlci5hZGREaWFsb2dPcHRpb25zKHRoaXMuZ2V0T3B0aW9ucygpKTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgd2lkdGg6IHN0cmluZyA9ICcnO1xuXG4gIEBJbnB1dCgnbWluLXdpZHRoJylcbiAgcHVibGljIG1pbldpZHRoOiBudW1iZXIgfCBzdHJpbmc7XG5cbiAgQElucHV0KCdtYXgtd2lkdGgnKVxuICBwdWJsaWMgbWF4V2lkdGg6IG51bWJlciB8IHN0cmluZztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgaGVpZ2h0OiBzdHJpbmcgPSAnJztcblxuICBASW5wdXQoJ21pbi1oZWlnaHQnKVxuICBwdWJsaWMgbWluSGVpZ2h0OiBudW1iZXIgfCBzdHJpbmc7XG5cbiAgQElucHV0KCdtYXgtaGVpZ2h0JylcbiAgcHVibGljIG1heEhlaWdodDogbnVtYmVyIHwgc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjbGFzczogc3RyaW5nIHwgc3RyaW5nW10gPSAnJztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcG9zaXRpb246IERpYWxvZ1Bvc2l0aW9uO1xuXG4gIEBJbnB1dCgnYmFja2Ryb3AtY2xhc3MnKVxuICBwdWJsaWMgYmFja2Ryb3BDbGFzczogc3RyaW5nO1xuXG4gIHByb3RlY3RlZCBfY2xvc2VPbk5hdmlnYXRpb246IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoJ2Nsb3NlLW9uLW5hdmlnYXRpb24nKVxuICBzZXQgY2xvc2VPbk5hdmlnYXRpb24odmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9jbG9zZU9uTmF2aWdhdGlvbiA9IEJvb2xlYW5Db252ZXJ0ZXIodmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9kaXNhYmxlQ2xvc2U6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoJ2Rpc2FibGUtY2xvc2UnKVxuICBzZXQgZGlzYWJsZUNsb3NlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZUNsb3NlID0gQm9vbGVhbkNvbnZlcnRlcih2YWx1ZSk7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgdGl0bGU6IHN0cmluZztcblxuICBASW5wdXQoJ2xhYmVsLWNvbHVtbnMnKVxuICBwdWJsaWMgbGFiZWxDb2x1bW5zOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNlcGFyYXRvcjogc3RyaW5nO1xuXG4gIGdldE9wdGlvbnMoKSB7XG4gICAgY29uc3QgcmVzdWx0ID0ge1xuICAgICAgd2lkdGg6IHRoaXMud2lkdGgsXG4gICAgICBtaW5XaWR0aDogdGhpcy5taW5XaWR0aCxcbiAgICAgIG1heFdpZHRoOiB0aGlzLm1heFdpZHRoLFxuICAgICAgaGVpZ2h0OiB0aGlzLmhlaWdodCxcbiAgICAgIG1pbkhlaWdodDogdGhpcy5taW5IZWlnaHQsXG4gICAgICBtYXhIZWlnaHQ6IHRoaXMubWF4SGVpZ2h0LFxuICAgICAgY2xhc3M6IHRoaXMuY2xhc3MsXG4gICAgICBwb3NpdGlvbjogdGhpcy5wb3NpdGlvbixcbiAgICAgIGJhY2tkcm9wQ2xhc3M6IHRoaXMuYmFja2Ryb3BDbGFzcyxcbiAgICAgIGRpc2FibGVDbG9zZTogdGhpcy5fZGlzYWJsZUNsb3NlLFxuICAgICAgY2xvc2VPbk5hdmlnYXRpb246IHRoaXMuX2Nsb3NlT25OYXZpZ2F0aW9uLFxuICAgICAgdGl0bGU6IHRoaXMudGl0bGUsXG4gICAgICBsYWJlbENvbHVtbnM6IHRoaXMubGFiZWxDb2x1bW5zLFxuICAgICAgc2VwYXJhdG9yOiB0aGlzLnNlcGFyYXRvclxuICAgIH1cbiAgICAvLyBEZWxldGluZyB1bmRlZmluZWQgcHJvcGVydGllc1xuICAgIE9iamVjdC5rZXlzKHJlc3VsdCkuZm9yRWFjaChrZXkgPT4gcmVzdWx0W2tleV0gPT0gbnVsbCA/IGRlbGV0ZSByZXN1bHRba2V5XSA6IHt9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbn1cbiJdfQ==
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1mb3JtLWxheW91dC1kaWFsb2ctb3B0aW9ucy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvbGF5b3V0cy9mb3JtLWxheW91dC9kaWFsb2cvb3B0aW9ucy9vLWZvcm0tbGF5b3V0LWRpYWxvZy1vcHRpb25zLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7O0FBS3BGLE1BQU0sT0FBTyxpQ0FBaUM7SUFFNUMsWUFBc0IsaUJBQThDO1FBQTlDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBNkI7UUFTN0QsVUFBSyxHQUFXLEVBQUUsQ0FBQztRQVNuQixXQUFNLEdBQVcsRUFBRSxDQUFDO1FBU3BCLFVBQUssR0FBc0IsRUFBRSxDQUFDO1FBUTNCLHVCQUFrQixHQUFZLElBQUksQ0FBQztRQU1uQyxrQkFBYSxHQUFZLElBQUksQ0FBQztJQXpDZ0MsQ0FBQztJQUV6RSxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDMUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1NBQzVEO0lBQ0gsQ0FBQztJQThCRCxJQUNJLGlCQUFpQixDQUFDLEtBQWM7UUFDbEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFHRCxJQUNJLFlBQVksQ0FBQyxLQUFjO1FBQzdCLElBQUksQ0FBQyxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQWNELFVBQVU7UUFDUixNQUFNLE1BQU0sR0FBRztZQUNiLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztZQUNqQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDekIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3pCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztZQUNqQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQ2pDLFlBQVksRUFBRSxJQUFJLENBQUMsYUFBYTtZQUNoQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsa0JBQWtCO1lBQzFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztZQUNqQixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDL0IsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3pCLG9CQUFvQixFQUFFLElBQUksQ0FBQyxvQkFBb0I7U0FDaEQsQ0FBQTtRQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xGLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7OzhIQWxGVSxpQ0FBaUM7a0hBQWpDLGlDQUFpQzsyRkFBakMsaUNBQWlDO2tCQUg3QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvRUFBb0U7aUJBQy9FO2tIQVlRLEtBQUs7c0JBRFgsS0FBSztnQkFJQyxRQUFRO3NCQURkLEtBQUs7dUJBQUMsV0FBVztnQkFJWCxRQUFRO3NCQURkLEtBQUs7dUJBQUMsV0FBVztnQkFJWCxNQUFNO3NCQURaLEtBQUs7Z0JBSUMsU0FBUztzQkFEZixLQUFLO3VCQUFDLFlBQVk7Z0JBSVosU0FBUztzQkFEZixLQUFLO3VCQUFDLFlBQVk7Z0JBSVosS0FBSztzQkFEWCxLQUFLO2dCQUlDLFFBQVE7c0JBRGQsS0FBSztnQkFJQyxhQUFhO3NCQURuQixLQUFLO3VCQUFDLGdCQUFnQjtnQkFLbkIsaUJBQWlCO3NCQURwQixLQUFLO3VCQUFDLHFCQUFxQjtnQkFPeEIsWUFBWTtzQkFEZixLQUFLO3VCQUFDLGVBQWU7Z0JBTWYsS0FBSztzQkFEWCxLQUFLO2dCQUlDLFlBQVk7c0JBRGxCLEtBQUs7dUJBQUMsZUFBZTtnQkFJZixTQUFTO3NCQURmLEtBQUs7Z0JBSUMsb0JBQW9CO3NCQUQxQixLQUFLO3VCQUFDLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERpYWxvZ1Bvc2l0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuaW1wb3J0IHsgQm9vbGVhbkNvbnZlcnRlciB9IGZyb20gJy4uLy4uLy4uLy4uL2RlY29yYXRvcnMvaW5wdXQtY29udmVydGVyJztcbmltcG9ydCB7IE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL28tZm9ybS1sYXlvdXQtbWFuYWdlci5jb21wb25lbnQnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdvLWZvcm0tbGF5b3V0LWRpYWxvZy1vcHRpb25zLCBvLWZvcm0tbGF5b3V0LW1hbmFnZXJbbW9kZT1cImRpYWxvZ1wiXSdcbn0pXG5leHBvcnQgY2xhc3MgT0Zvcm1MYXlvdXREaWFsb2dPcHRpb25zRGlyZWN0aXZlIHtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgZm9ybUxheW91dE1hbmFnZXI6IE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudCkgeyB9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgaWYgKHRoaXMuZm9ybUxheW91dE1hbmFnZXIpIHtcbiAgICAgIHRoaXMuZm9ybUxheW91dE1hbmFnZXIuYWRkRGlhbG9nT3B0aW9ucyh0aGlzLmdldE9wdGlvbnMoKSk7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHdpZHRoOiBzdHJpbmcgPSAnJztcblxuICBASW5wdXQoJ21pbi13aWR0aCcpXG4gIHB1YmxpYyBtaW5XaWR0aDogbnVtYmVyIHwgc3RyaW5nO1xuXG4gIEBJbnB1dCgnbWF4LXdpZHRoJylcbiAgcHVibGljIG1heFdpZHRoOiBudW1iZXIgfCBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGhlaWdodDogc3RyaW5nID0gJyc7XG5cbiAgQElucHV0KCdtaW4taGVpZ2h0JylcbiAgcHVibGljIG1pbkhlaWdodDogbnVtYmVyIHwgc3RyaW5nO1xuXG4gIEBJbnB1dCgnbWF4LWhlaWdodCcpXG4gIHB1YmxpYyBtYXhIZWlnaHQ6IG51bWJlciB8IHN0cmluZztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgY2xhc3M6IHN0cmluZyB8IHN0cmluZ1tdID0gJyc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHBvc2l0aW9uOiBEaWFsb2dQb3NpdGlvbjtcblxuICBASW5wdXQoJ2JhY2tkcm9wLWNsYXNzJylcbiAgcHVibGljIGJhY2tkcm9wQ2xhc3M6IHN0cmluZztcblxuICBwcm90ZWN0ZWQgX2Nsb3NlT25OYXZpZ2F0aW9uOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCdjbG9zZS1vbi1uYXZpZ2F0aW9uJylcbiAgc2V0IGNsb3NlT25OYXZpZ2F0aW9uKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fY2xvc2VPbk5hdmlnYXRpb24gPSBCb29sZWFuQ29udmVydGVyKHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfZGlzYWJsZUNsb3NlOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCdkaXNhYmxlLWNsb3NlJylcbiAgc2V0IGRpc2FibGVDbG9zZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2Rpc2FibGVDbG9zZSA9IEJvb2xlYW5Db252ZXJ0ZXIodmFsdWUpO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHRpdGxlOiBzdHJpbmc7XG5cbiAgQElucHV0KCdsYWJlbC1jb2x1bW5zJylcbiAgcHVibGljIGxhYmVsQ29sdW1uczogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXBhcmF0b3I6IHN0cmluZztcblxuICBASW5wdXQoJ2RpYWxvZy10aXRsZS1zZXBhcmF0b3InKVxuICBwdWJsaWMgZGlhbG9nVGl0bGVTZXBhcmF0b3I7XG5cbiAgZ2V0T3B0aW9ucygpIHtcbiAgICBjb25zdCByZXN1bHQgPSB7XG4gICAgICB3aWR0aDogdGhpcy53aWR0aCxcbiAgICAgIG1pbldpZHRoOiB0aGlzLm1pbldpZHRoLFxuICAgICAgbWF4V2lkdGg6IHRoaXMubWF4V2lkdGgsXG4gICAgICBoZWlnaHQ6IHRoaXMuaGVpZ2h0LFxuICAgICAgbWluSGVpZ2h0OiB0aGlzLm1pbkhlaWdodCxcbiAgICAgIG1heEhlaWdodDogdGhpcy5tYXhIZWlnaHQsXG4gICAgICBjbGFzczogdGhpcy5jbGFzcyxcbiAgICAgIHBvc2l0aW9uOiB0aGlzLnBvc2l0aW9uLFxuICAgICAgYmFja2Ryb3BDbGFzczogdGhpcy5iYWNrZHJvcENsYXNzLFxuICAgICAgZGlzYWJsZUNsb3NlOiB0aGlzLl9kaXNhYmxlQ2xvc2UsXG4gICAgICBjbG9zZU9uTmF2aWdhdGlvbjogdGhpcy5fY2xvc2VPbk5hdmlnYXRpb24sXG4gICAgICB0aXRsZTogdGhpcy50aXRsZSxcbiAgICAgIGxhYmVsQ29sdW1uczogdGhpcy5sYWJlbENvbHVtbnMsXG4gICAgICBzZXBhcmF0b3I6IHRoaXMuc2VwYXJhdG9yLFxuICAgICAgZGlhbG9nVGl0bGVTZXBhcmF0b3I6IHRoaXMuZGlhbG9nVGl0bGVTZXBhcmF0b3JcbiAgICB9XG4gICAgLy8gRGVsZXRpbmcgdW5kZWZpbmVkIHByb3BlcnRpZXNcbiAgICBPYmplY3Qua2V5cyhyZXN1bHQpLmZvckVhY2goa2V5ID0+IHJlc3VsdFtrZXldID09IG51bGwgPyBkZWxldGUgcmVzdWx0W2tleV0gOiB7fSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG59XG4iXX0=
@@ -37,7 +37,8 @@ export const DEFAULT_INPUTS_O_FORM_LAYOUT_MANAGER = [
37
37
  'dialogHeight: dialog-height',
38
38
  'dialogMinHeight: dialog-min-height',
39
39
  'dialogMaxHeight dialog-max-height',
40
- 'dialogClass: dialog-class'
40
+ 'dialogClass: dialog-class',
41
+ 'dialogTitleSeparator: dialog-title-separator'
41
42
  ];
42
43
  export const DEFAULT_OUTPUTS_O_FORM_LAYOUT_MANAGER = [
43
44
  'onMainTabSelected',
@@ -100,6 +101,9 @@ export class OFormLayoutManagerComponent {
100
101
  if (value.hasOwnProperty('separator')) {
101
102
  this.separator = value['separator'];
102
103
  }
104
+ if (value.hasOwnProperty('dialogTitleSeparator')) {
105
+ this.dialogTitleSeparator = value['dialogTitleSeparator'];
106
+ }
103
107
  }
104
108
  get splitPaneOptions() {
105
109
  return this._splitPaneOptions;
@@ -120,6 +124,7 @@ export class OFormLayoutManagerComponent {
120
124
  this._separator = ' ';
121
125
  this.storeState = true;
122
126
  this.dialogClass = '';
127
+ this.dialogTitleSeparator = ':';
123
128
  this.onMainTabSelected = new EventEmitter();
124
129
  this.onSelectedTabChange = new EventEmitter();
125
130
  this.onCloseTab = new EventEmitter();
@@ -296,7 +301,8 @@ export class OFormLayoutManagerComponent {
296
301
  data: {
297
302
  data: detailComp,
298
303
  layoutManagerComponent: this,
299
- title: dialogOptions.title || this.title,
304
+ title: (this.title || dialogOptions.title),
305
+ dialogTitleSeparator: this.dialogTitleSeparator
300
306
  },
301
307
  width: dialogOptions.width || this.dialogWidth,
302
308
  minWidth: dialogOptions.minWidth || this.dialogMinWidth,
@@ -485,7 +491,7 @@ OFormLayoutManagerComponent.DIALOG_MODE = 'dialog';
485
491
  OFormLayoutManagerComponent.TAB_MODE = 'tab';
486
492
  OFormLayoutManagerComponent.SPLIT_PANE_MODE = 'split-pane';
487
493
  OFormLayoutManagerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OFormLayoutManagerComponent, deps: [{ token: i0.Injector }, { token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.MatDialog }, { token: i0.ElementRef }, { token: i3.OFormLayoutManagerBase, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component });
488
- OFormLayoutManagerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: OFormLayoutManagerComponent, selector: "o-form-layout-manager", inputs: { oattr: ["attr", "oattr"], mode: "mode", storeState: ["store-state", "storeState"], title: "title", labelColumns: ["label-columns", "labelColumns"], separator: "separator", titleDataOrigin: ["title-data-origin", "titleDataOrigin"], dialogWidth: ["dialog-width", "dialogWidth"], dialogMinWidth: ["dialog-min-width", "dialogMinWidth"], dialogMaxWidth: ["dialog-max-width", "dialogMaxWidth"], dialogHeight: ["dialog-height", "dialogHeight"], dialogMinHeight: ["dialog-min-height", "dialogMinHeight"], "dialogMaxHeight dialog-max-height": "dialogMaxHeight dialog-max-height", dialogClass: ["dialog-class", "dialogClass"] }, outputs: { onMainTabSelected: "onMainTabSelected", onSelectedTabChange: "onSelectedTabChange", onCloseTab: "onCloseTab" }, host: { listeners: { "window:beforeunload": "beforeunloadHandler()" }, properties: { "class.o-form-layout-manager": "true" } }, providers: [
494
+ OFormLayoutManagerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: OFormLayoutManagerComponent, selector: "o-form-layout-manager", inputs: { oattr: ["attr", "oattr"], mode: "mode", storeState: ["store-state", "storeState"], title: "title", labelColumns: ["label-columns", "labelColumns"], separator: "separator", titleDataOrigin: ["title-data-origin", "titleDataOrigin"], dialogWidth: ["dialog-width", "dialogWidth"], dialogMinWidth: ["dialog-min-width", "dialogMinWidth"], dialogMaxWidth: ["dialog-max-width", "dialogMaxWidth"], dialogHeight: ["dialog-height", "dialogHeight"], dialogMinHeight: ["dialog-min-height", "dialogMinHeight"], "dialogMaxHeight dialog-max-height": "dialogMaxHeight dialog-max-height", dialogClass: ["dialog-class", "dialogClass"], dialogTitleSeparator: ["dialog-title-separator", "dialogTitleSeparator"] }, outputs: { onMainTabSelected: "onMainTabSelected", onSelectedTabChange: "onSelectedTabChange", onCloseTab: "onCloseTab" }, host: { listeners: { "window:beforeunload": "beforeunloadHandler()" }, properties: { "class.o-form-layout-manager": "true" } }, providers: [
489
495
  ComponentStateServiceProvider,
490
496
  { provide: O_COMPONENT_STATE_SERVICE, useClass: OFormLayoutManagerComponentStateService },
491
497
  { provide: OFormLayoutManagerBase, useExisting: OFormLayoutManagerComponent }
@@ -517,4 +523,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
517
523
  type: HostListener,
518
524
  args: ['window:beforeunload', []]
519
525
  }] } });
520
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1mb3JtLWxheW91dC1tYW5hZ2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9sYXlvdXRzL2Zvcm0tbGF5b3V0L28tZm9ybS1sYXlvdXQtbWFuYWdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvbGF5b3V0cy9mb3JtLWxheW91dC9vLWZvcm0tbGF5b3V0LW1hbmFnZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osUUFBUSxFQUdSLFFBQVEsRUFDUixRQUFRLEVBRVIsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQWlDLE1BQU0sMEJBQTBCLENBQUM7QUFDcEYsT0FBTyxFQUFFLGNBQWMsRUFBaUMsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEYsT0FBTyxFQUFjLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVoRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUl6RSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN6RixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUUvRixPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSxvRUFBb0UsQ0FBQztB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QXNCLEVBQUUsV0FBVyxFQUFFLDJCQUEyQixFQUFFO0tBQzlFLDJOQy9FSCx5aENBdUJjO0FEd0daO0lBQUMscUJBQXFCLEVBQUU7OytEQUNVOzJGQTdDcEIsMkJBQTJCO2tCQWQxQyxTQUFTOytCQUNFLHVCQUF1QixVQUN6QixvQ0FBb0MsV0FDbkMscUNBQXFDLGFBR25DO3dCQUNULDZCQUE2Qjt3QkFDN0IsRUFBRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsUUFBUSxFQUFFLHVDQUF1QyxFQUFFO3dCQUN6RixFQUFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxXQUFXLDZCQUE2QixFQUFFO3FCQUM5RSxRQUNLO3dCQUNKLCtCQUErQixFQUFFLE1BQU07cUJBQ3hDOzswQkFvS0UsUUFBUTs7MEJBQUksUUFBUTs0Q0F0SGhCLFVBQVUsTUFtQlYsU0FBUztzQkFEZixTQUFTO3VCQUFDLFVBQVU7Z0JBSWQsVUFBVTtzQkFEaEIsU0FBUzt1QkFBQyxXQUFXO2dCQXdLZixtQkFBbUI7c0JBRHpCLFlBQVk7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIEluamVjdG9yLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFNraXBTZWxmLFxuICBUeXBlLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ0NvbmZpZywgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBCb29sZWFuSW5wdXRDb252ZXJ0ZXIgfSBmcm9tICcuLi8uLi9kZWNvcmF0b3JzL2lucHV0LWNvbnZlcnRlcic7XG5pbXBvcnQgeyBJTGF5b3V0TWFuYWdlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvbGF5b3V0LW1hbmFnZXItY29tcG9uZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBJTG9jYWxTdG9yYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9sb2NhbC1zdG9yYWdlLWNvbXBvbmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgT0Zvcm1MYXlvdXRNYW5hZ2VyTW9kZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvby1mb3JtLWxheW91dC1tYW5hZ2VyLW1vZGUuaW50ZXJmYWNlJztcbmltcG9ydCB7IENvbXBvbmVudFN0YXRlU2VydmljZVByb3ZpZGVyLCBPX0NPTVBPTkVOVF9TVEFURV9TRVJWSUNFIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmFjdG9yaWVzJztcbmltcG9ydCB7IExvY2FsU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9sb2NhbC1zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgT0Zvcm1MYXlvdXRNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL28tZm9ybS1sYXlvdXQtbWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7IEFic3RyYWN0Q29tcG9uZW50U3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3RhdGUvby1jb21wb25lbnQtc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnRTdGF0ZUNsYXNzIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3RhdGUvby1mb3JtLWxheW91dC1tYW5hZ2VyLWNvbXBvbmVudC1zdGF0ZS5jbGFzcyc7XG5pbXBvcnQgeyBPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnRTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zdGF0ZS9vLWZvcm0tbGF5b3V0LW1hbmFnZXItY29tcG9uZW50LXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgT1RyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGUvby10cmFuc2xhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBGb3JtTGF5b3V0Q2xvc2VEZXRhaWxPcHRpb25zLCBGb3JtTGF5b3V0RGV0YWlsQ29tcG9uZW50RGF0YSB9IGZyb20gJy4uLy4uL3R5cGVzL2Zvcm0tbGF5b3V0LWRldGFpbC1jb21wb25lbnQtZGF0YS50eXBlJztcbmltcG9ydCB7IENvZGVzIH0gZnJvbSAnLi4vLi4vdXRpbC9jb2Rlcyc7XG5pbXBvcnQgeyBVdGlsIH0gZnJvbSAnLi4vLi4vdXRpbC91dGlsJztcbmltcG9ydCB7IE9Gb3JtTGF5b3V0RGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9kaWFsb2cvby1mb3JtLWxheW91dC1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IENhbkFjdGl2YXRlRm9ybUxheW91dENoaWxkR3VhcmQgfSBmcm9tICcuL2d1YXJkcy9vLWZvcm0tbGF5b3V0LWNhbi1hY3RpdmF0ZS1jaGlsZC5ndWFyZCc7XG5pbXBvcnQgeyBPRm9ybUxheW91dE1hbmFnZXJCYXNlIH0gZnJvbSAnLi9vLWZvcm0tbGF5b3V0LW1hbmFnZXItYmFzZS5jbGFzcyc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0lOUFVUU19PX0ZPUk1fTEFZT1VUX01BTkFHRVIgPSBbXG4gICdvYXR0cjogYXR0cicsXG4gICdtb2RlJyxcbiAgJ3N0b3JlU3RhdGU6IHN0b3JlLXN0YXRlJyxcblxuICAvLyBDb21tb24gZm9yIGRpYWxvZyBhbmQgdGFiIG1vZGVcbiAgLy8gZGVwcmVjYXRlZCwgb25seSBtYW50YWluZWQgZm9yIGxlZ2FjeSByZWFzb25zXG4gICd0aXRsZScsXG4gICdsYWJlbENvbHVtbnM6IGxhYmVsLWNvbHVtbnMnLFxuICAnc2VwYXJhdG9yJyxcblxuICAvLyBhdHRyIG9mIHRoZSBjaGlsZCBmb3JtIGZyb20gd2hpY2ggdGhlIGRhdGEgZm9yIGJ1aWxkaW5nIHRoZSB0YWIgdGl0bGUgd2lsbCBiZSBvYnRhaW5lZCAob25seSBpbiB0YWIgbW9kZSlcbiAgLy8gZGVwcmVjYXRlZCwgb25seSBtYW50YWluZWQgZm9yIGxlZ2FjeSByZWFzb25zXG4gICd0aXRsZURhdGFPcmlnaW46IHRpdGxlLWRhdGEtb3JpZ2luJyxcblxuICAvLyBPbmx5IGRpYWxvZyBvcHRpb25zIGNvbmZpZ3VyYWJsZSBhcyBhbiBpbnB1dCBvZiB0aGUgby1mb3JtLWxheW91dC1tYW5hZ2VyICh1c2UgdGhlIG8tZm9ybS1sYXlvdXQtZGlhbG9nLW9wdGlvbnMgZGlyZWN0aXZlKVxuICAvLyBkZXByZWNhdGVkLCBvbmx5IG1hbnRhaW5lZCBmb3IgbGVnYWN5IHJlYXNvbnNcbiAgJ2RpYWxvZ1dpZHRoOiBkaWFsb2ctd2lkdGgnLFxuICAnZGlhbG9nTWluV2lkdGg6IGRpYWxvZy1taW4td2lkdGgnLFxuICAnZGlhbG9nTWF4V2lkdGg6IGRpYWxvZy1tYXgtd2lkdGgnLFxuICAnZGlhbG9nSGVpZ2h0OiBkaWFsb2ctaGVpZ2h0JyxcbiAgJ2RpYWxvZ01pbkhlaWdodDogZGlhbG9nLW1pbi1oZWlnaHQnLFxuICAnZGlhbG9nTWF4SGVpZ2h0IGRpYWxvZy1tYXgtaGVpZ2h0JyxcbiAgJ2RpYWxvZ0NsYXNzOiBkaWFsb2ctY2xhc3MnXG5dO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9PVVRQVVRTX09fRk9STV9MQVlPVVRfTUFOQUdFUiA9IFtcbiAgJ29uTWFpblRhYlNlbGVjdGVkJyxcbiAgJ29uU2VsZWN0ZWRUYWJDaGFuZ2UnLFxuICAnb25DbG9zZVRhYidcbl07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28tZm9ybS1sYXlvdXQtbWFuYWdlcicsXG4gIGlucHV0czogREVGQVVMVF9JTlBVVFNfT19GT1JNX0xBWU9VVF9NQU5BR0VSLFxuICBvdXRwdXRzOiBERUZBVUxUX09VVFBVVFNfT19GT1JNX0xBWU9VVF9NQU5BR0VSLFxuICB0ZW1wbGF0ZVVybDogJy4vby1mb3JtLWxheW91dC1tYW5hZ2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vby1mb3JtLWxheW91dC1tYW5hZ2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIENvbXBvbmVudFN0YXRlU2VydmljZVByb3ZpZGVyLFxuICAgIHsgcHJvdmlkZTogT19DT01QT05FTlRfU1RBVEVfU0VSVklDRSwgdXNlQ2xhc3M6IE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudFN0YXRlU2VydmljZSB9LFxuICAgIHsgcHJvdmlkZTogT0Zvcm1MYXlvdXRNYW5hZ2VyQmFzZSwgdXNlRXhpc3Rpbmc6IE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudCB9XG4gIF0sXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLm8tZm9ybS1sYXlvdXQtbWFuYWdlcl0nOiAndHJ1ZSdcbiAgfVxufSkgZXhwb3J0IGNsYXNzIE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uSW5pdCwgT25EZXN0cm95LCBJTG9jYWxTdG9yYWdlQ29tcG9uZW50IHtcblxuICAvLyBkZWNsYXJpbmcgdGhpcyBwcm9wZXJ0eSB0byBoYXZlIGFjY2VzIHRvIHN0YXRpYyBtZW1iZXJzIGluIHRoZSB0ZW1wbGF0ZVxuICBPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnQgPSBPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnQ7XG5cblxuICBwdWJsaWMgc3RhdGljIERJQUxPR19NT0RFID0gJ2RpYWxvZyc7XG4gIHB1YmxpYyBzdGF0aWMgVEFCX01PREUgPSAndGFiJztcbiAgcHVibGljIHN0YXRpYyBTUExJVF9QQU5FX01PREUgPSAnc3BsaXQtcGFuZSc7XG5cbiAgcHVibGljIG9hdHRyOiBzdHJpbmc7XG4gIHB1YmxpYyBfbW9kZTogc3RyaW5nID0gT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50LkRJQUxPR19NT0RFO1xuICBwdWJsaWMgc3RyZXRjaFRhYnMgPSBmYWxzZTtcblxuICBwdWJsaWMgZ2V0IG1vZGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fbW9kZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgbW9kZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgY29uc3QgYXZhaWxhYmxlTW9kZVZhbHVlcyA9IFtPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnQuRElBTE9HX01PREUsIE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudC5UQUJfTU9ERSwgT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50LlNQTElUX1BBTkVfTU9ERV07XG4gICAgdGhpcy5fbW9kZSA9ICh2YWx1ZSB8fCAnJykudG9Mb3dlckNhc2UoKTtcbiAgICBpZiAoYXZhaWxhYmxlTW9kZVZhbHVlcy5pbmRleE9mKHRoaXMuX21vZGUpID09PSAtMSkge1xuICAgICAgdGhpcy5fbW9kZSA9IE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudC5ESUFMT0dfTU9ERTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgX3NlcGFyYXRvcjogc3RyaW5nID0gJyAnO1xuXG4gIC8qKlxuICAqIEBkZXByZWNhdGVkIHVzZXIgc2hvdWxkIHVzZSB0aGUgb3B0aW9ucyBpbnB1dFxuICAqL1xuICBzZXQgc2VwYXJhdG9yKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9zZXBhcmF0b3IgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBzZXBhcmF0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc2VwYXJhdG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZXIgc2hvdWxkIHVzZSB0aGUgb3B0aW9ucyBpbnB1dFxuICAgKi9cbiAgcHVibGljIHRpdGxlOiBzdHJpbmc7XG5cbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHB1YmxpYyBzdG9yZVN0YXRlOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKipcbiAgKiBAZGVwcmVjYXRlZCB1c2VyIHNob3VsZCB1c2UgdGhlIG9wdGlvbnMgaW5wdXRcbiAgKi9cbiAgcHVibGljIHRpdGxlRGF0YU9yaWdpbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBUaGUgbmV4dCBpbnB1dHMgYXJlIGRlcHJlY2F0ZWQgYW5kIHVzZXIgc2hvdWxkIHVzZSB0aGUgT0Zvcm1MYXlvdXREaWFsb2dPcHRpb25zRGlyZWN0aXZlIGlucHV0c1xuICAgKi9cbiAgcHVibGljIGRpYWxvZ1dpZHRoOiBzdHJpbmc7XG4gIHB1YmxpYyBkaWFsb2dNaW5XaWR0aDogc3RyaW5nO1xuICBwdWJsaWMgZGlhbG9nTWF4V2lkdGg6IHN0cmluZztcbiAgcHVibGljIGRpYWxvZ0hlaWdodDogc3RyaW5nO1xuICBwdWJsaWMgZGlhbG9nTWluSGVpZ2h0OiBzdHJpbmc7XG4gIHB1YmxpYyBkaWFsb2dNYXhIZWlnaHQ6IHN0cmluZztcbiAgcHVibGljIGRpYWxvZ0NsYXNzOiBzdHJpbmcgPSAnJztcblxuICBAVmlld0NoaWxkKCd0YWJHcm91cCcpXG4gIHB1YmxpYyBvVGFiR3JvdXA6IE9Gb3JtTGF5b3V0TWFuYWdlck1vZGU7XG4gIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxPRm9ybUxheW91dERpYWxvZ0NvbXBvbmVudD47XG4gIEBWaWV3Q2hpbGQoJ3NwbGl0UGFuZScpXG4gIHB1YmxpYyBvU3BsaXRQYW5lOiBPRm9ybUxheW91dE1hbmFnZXJNb2RlO1xuXG4gIHB1YmxpYyBvbk1haW5UYWJTZWxlY3RlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgcHVibGljIG9uU2VsZWN0ZWRUYWJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIHB1YmxpYyBvbkNsb3NlVGFiOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIHByb3RlY3RlZCBfbGFiZWxDb2x1bW5zOiBzdHJpbmc7XG5cbiAgZ2V0IGxhYmVsQ29sdW1ucygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9sYWJlbENvbHVtbnM7XG4gIH1cblxuICAvKipcbiAgKiBAZGVwcmVjYXRlZCB1c2VyIHNob3VsZCB1c2UgdGhlIG9wdGlvbnMgaW5wdXRcbiAgKi9cbiAgc2V0IGxhYmVsQ29sdW1ucyh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fbGFiZWxDb2x1bW5zID0gdmFsdWU7XG4gICAgdGhpcy5fbGFiZWxDb2xzQXJyYXkgPSBVdGlsLnBhcnNlQXJyYXkodmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9sYWJlbENvbHNBcnJheTogc3RyaW5nW10gPSBbXTtcblxuICBnZXQgbGFiZWxDb2xzQXJyYXkoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl9sYWJlbENvbHNBcnJheTtcbiAgfVxuXG4gIHNldCBsYWJlbENvbHNBcnJheSh2YWx1ZTogc3RyaW5nW10pIHtcbiAgICB0aGlzLl9sYWJlbENvbHNBcnJheSA9IHZhbHVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRyYW5zbGF0ZVNlcnZpY2U6IE9UcmFuc2xhdGVTZXJ2aWNlO1xuICBwcm90ZWN0ZWQgb0Zvcm1MYXlvdXRNYW5hZ2VyU2VydmljZTogT0Zvcm1MYXlvdXRNYW5hZ2VyU2VydmljZTtcbiAgcHJvdGVjdGVkIGxvY2FsU3RvcmFnZVNlcnZpY2U6IExvY2FsU3RvcmFnZVNlcnZpY2U7XG5cbiAgcHJvdGVjdGVkIF90YWJHcm91cE9wdGlvbnM6IGFueSA9IHt9O1xuXG4gIGdldCB0YWJHcm91cE9wdGlvbnMoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fdGFiR3JvdXBPcHRpb25zO1xuICB9XG5cbiAgYWRkVGFiR3JvdXBPcHRpb25zKHZhbHVlOiBhbnkpIHtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMuX3RhYkdyb3VwT3B0aW9ucywgdmFsdWUpO1xuICAgIGlmICh2YWx1ZS5oYXNPd25Qcm9wZXJ0eSgnbGFiZWxDb2x1bW5zJykpIHtcbiAgICAgIHRoaXMubGFiZWxDb2xzQXJyYXkgPSBVdGlsLnBhcnNlQXJyYXkodmFsdWVbJ2xhYmVsQ29sdW1ucyddKTtcbiAgICB9XG4gICAgaWYgKHZhbHVlLmhhc093blByb3BlcnR5KCdzZXBhcmF0b3InKSkge1xuICAgICAgdGhpcy5zZXBhcmF0b3IgPSB2YWx1ZVsnc2VwYXJhdG9yJ107XG4gICAgfVxuICAgIGlmICh2YWx1ZS5oYXNPd25Qcm9wZXJ0eSgnc3RyZXRjaFRhYnMnKSkge1xuICAgICAgdGhpcy5zdHJldGNoVGFicyA9IHZhbHVlWydzdHJldGNoVGFicyddO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBfZGlhbG9nT3B0aW9uczogYW55ID0ge307XG5cbiAgZ2V0IGRpYWxvZ09wdGlvbnMoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fZGlhbG9nT3B0aW9ucztcbiAgfVxuXG4gIGFkZERpYWxvZ09wdGlvbnModmFsdWU6IGFueSkge1xuICAgIE9iamVjdC5hc3NpZ24odGhpcy5fZGlhbG9nT3B0aW9ucywgdmFsdWUpO1xuICAgIGlmICh2YWx1ZS5oYXNPd25Qcm9wZXJ0eSgnbGFiZWxDb2x1bW5zJykpIHtcbiAgICAgIHRoaXMubGFiZWxDb2xzQXJyYXkgPSBVdGlsLnBhcnNlQXJyYXkodmFsdWVbJ2xhYmVsQ29sdW1ucyddKTtcbiAgICB9XG4gICAgaWYgKHZhbHVlLmhhc093blByb3BlcnR5KCdzZXBhcmF0b3InKSkge1xuICAgICAgdGhpcy5zZXBhcmF0b3IgPSB2YWx1ZVsnc2VwYXJhdG9yJ107XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIF9zcGxpdFBhbmVPcHRpb25zOiBhbnkgPSB7fTtcblxuICBnZXQgc3BsaXRQYW5lT3B0aW9ucygpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl9zcGxpdFBhbmVPcHRpb25zO1xuICB9XG5cbiAgYWRkU3BsaXRQYW5lT3B0aW9ucyh2YWx1ZTogYW55KSB7XG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLl9zcGxpdFBhbmVPcHRpb25zLCB2YWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWRkaW5nR3VhcmQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwdWJsaWMgbmF2aWdhdGlvblNlcnZpY2U6IE5hdmlnYXRpb25TZXJ2aWNlO1xuXG4gIHB1YmxpYyBfbWFya0ZvclVwZGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgb25UcmlnZ2VyVXBkYXRlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIHByb3RlY3RlZCBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBwcm90ZWN0ZWQgY29tcG9uZW50U3RhdGVTZXJ2aWNlOiBPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnRTdGF0ZVNlcnZpY2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcm90ZWN0ZWQgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJvdGVjdGVkIGFjdFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcm90ZWN0ZWQgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHJvdGVjdGVkIGVsUmVmOiBFbGVtZW50UmVmLFxuICAgIEBTa2lwU2VsZigpIEBPcHRpb25hbCgpXG4gICAgcHVibGljIHBhcmVudEZvcm1MYXlvdXRNYW5hZ2VyOiBPRm9ybUxheW91dE1hbmFnZXJCYXNlXG4gICkge1xuICAgIHRoaXMub0Zvcm1MYXlvdXRNYW5hZ2VyU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KE9Gb3JtTGF5b3V0TWFuYWdlclNlcnZpY2UpO1xuICAgIHRoaXMubG9jYWxTdG9yYWdlU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KExvY2FsU3RvcmFnZVNlcnZpY2UpO1xuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KE9UcmFuc2xhdGVTZXJ2aWNlKTtcbiAgICB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoTmF2aWdhdGlvblNlcnZpY2UpO1xuICAgIHRoaXMuY29tcG9uZW50U3RhdGVTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQ8T0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50U3RhdGVTZXJ2aWNlPihBYnN0cmFjdENvbXBvbmVudFN0YXRlU2VydmljZSBhcyBUeXBlPE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudFN0YXRlU2VydmljZT4pO1xuICAgIGlmICh0aGlzLnN0b3JlU3RhdGUpIHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZCh0aGlzLmxvY2FsU3RvcmFnZVNlcnZpY2Uub25Sb3V0ZUNoYW5nZS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVTdGF0ZVN0b3JhZ2UoKTtcbiAgICAgIH0pKTtcbiAgICB9XG4gIH1cblxuICBnZXQgc3RhdGUoKTogT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50U3RhdGVDbGFzcyB7XG4gICAgcmV0dXJuIHRoaXMuY29tcG9uZW50U3RhdGVTZXJ2aWNlLnN0YXRlO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuYWRkQWN0aXZhdGVDaGlsZEd1YXJkKCk7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZCh0aGlzLm9hdHRyKSkge1xuICAgICAgdGhpcy5vYXR0ciA9ICh0aGlzLnRpdGxlIHx8ICcnKSArIHRoaXMubW9kZTtcbiAgICAgIGNvbnNvbGUud2Fybignby1mb3JtLWxheW91dC1tYW5hZ2VyIG11c3QgaGF2ZSBhbiB1bmlxdWUgYXR0cicpO1xuICAgIH1cbiAgICB0aGlzLm9Gb3JtTGF5b3V0TWFuYWdlclNlcnZpY2UucmVnaXN0ZXJGb3JtTGF5b3V0TWFuYWdlcih0aGlzKTtcbiAgICBpZiAodGhpcy5zdG9yZVN0YXRlKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudFN0YXRlU2VydmljZS5pbml0aWFsaXplKHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5lbFJlZikge1xuICAgICAgICB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCd0aXRsZScpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgdGhpcy5vRm9ybUxheW91dE1hbmFnZXJTZXJ2aWNlLnJlbW92ZUZvcm1MYXlvdXRNYW5hZ2VyKHRoaXMpO1xuICAgIHRoaXMuZGVzdHJveUFjdGl2YXRlQ2hpbGRHdWFyZCgpO1xuICB9XG5cbiAgcHVibGljIGdldEF0dHJpYnV0ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm9hdHRyO1xuICB9XG5cbiAgcHVibGljIGdldENvbXBvbmVudEtleSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50XycgKyB0aGlzLm9hdHRyO1xuICB9XG5cbiAgcHVibGljIGdldFJvdXRlS2V5KCk6IHN0cmluZyB7XG4gICAgbGV0IHJvdXRlID0gdGhpcy5yb3V0ZXIudXJsO1xuICAgIHRoaXMuYWN0Um91dGUucGFyYW1zLnN1YnNjcmliZShwYXJhbXMgPT4ge1xuICAgICAgT2JqZWN0LmtleXMocGFyYW1zKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIHJvdXRlID0gcm91dGUucmVwbGFjZShwYXJhbXNba2V5XSwga2V5KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiByb3V0ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXREYXRhVG9TdG9yZSgpOiBhbnkge1xuICAgIGNvbnN0IGNvbXBSZWYgPSB0aGlzLmdldExheW91dE1vZGVDb21wb25lbnQoKTtcbiAgICByZXR1cm4gVXRpbC5pc0RlZmluZWQoY29tcFJlZikgPyBjb21wUmVmLmdldERhdGFUb1N0b3JlKCkgOiB7fTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpiZWZvcmV1bmxvYWQnLCBbXSlcbiAgcHVibGljIGJlZm9yZXVubG9hZEhhbmRsZXIoKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVTdGF0ZVN0b3JhZ2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRMYWJlbEZyb21VcmxQYXJhbXModXJsUGFyYW1zOiBvYmplY3QpOiBzdHJpbmcge1xuICAgIGxldCBsYWJlbCA9ICcnO1xuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh1cmxQYXJhbXMpO1xuICAgIGtleXMuZm9yRWFjaCgocGFyYW0sIGkpID0+IHtcbiAgICAgIGxhYmVsICs9IHVybFBhcmFtc1twYXJhbV0gKyAoKGkgPCBrZXlzLmxlbmd0aCAtIDEpID8gdGhpcy5zZXBhcmF0b3IgOiAnJyk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGxhYmVsO1xuICB9XG5cbiAgcHVibGljIGdldEZvcm1EYXRhRnJvbUxhYmVsQ29sdW1ucyhkYXRhOiBhbnkpIHtcbiAgICBjb25zdCBmb3JtRGF0YSA9IHt9O1xuICAgIE9iamVjdC5rZXlzKGRhdGEpLmZvckVhY2goeCA9PiB7XG4gICAgICBpZiAodGhpcy5sYWJlbENvbHNBcnJheS5pbmRleE9mKHgpID4gLTEpIHtcbiAgICAgICAgZm9ybURhdGFbeF0gPSBkYXRhW3hdO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBmb3JtRGF0YTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRBY3RpdmF0ZUNoaWxkR3VhcmQoKTogdm9pZCB7XG4gICAgY29uc3Qgcm91dGVDb25maWcgPSB0aGlzLmdldFBhcmVudEFjdFJvdXRlUm91dGUoKTtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQocm91dGVDb25maWcpKSB7XG4gICAgICBjb25zdCBjYW5BY3RpdmF0ZUNoaWxkQXJyYXkgPSAocm91dGVDb25maWcuY2FuQWN0aXZhdGVDaGlsZCB8fCBbXSk7XG4gICAgICBsZXQgcHJldmlvdXNseUFkZGVkID0gZmFsc2U7XG4gICAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gY2FuQWN0aXZhdGVDaGlsZEFycmF5Lmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGd1YXJkQ2hpbGQgPSB0aGlzLmluamVjdG9yLmdldChDYW5BY3RpdmF0ZUZvcm1MYXlvdXRDaGlsZEd1YXJkKTtcbiAgICAgICAgcHJldmlvdXNseUFkZGVkID0gKGNhbkFjdGl2YXRlQ2hpbGRBcnJheVtpXSA9PT0gZ3VhcmRDaGlsZC5jb25zdHJ1Y3Rvcik7XG4gICAgICAgIGlmIChwcmV2aW91c2x5QWRkZWQpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKCFwcmV2aW91c2x5QWRkZWQpIHtcbiAgICAgICAgdGhpcy5hZGRpbmdHdWFyZCA9IHRydWU7XG4gICAgICAgIGNhbkFjdGl2YXRlQ2hpbGRBcnJheS5wdXNoKENhbkFjdGl2YXRlRm9ybUxheW91dENoaWxkR3VhcmQpO1xuICAgICAgICByb3V0ZUNvbmZpZy5jYW5BY3RpdmF0ZUNoaWxkID0gY2FuQWN0aXZhdGVDaGlsZEFycmF5O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBkZXN0cm95QWN0aXZhdGVDaGlsZEd1YXJkKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5hZGRpbmdHdWFyZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm9Gb3JtTGF5b3V0TWFuYWdlclNlcnZpY2UuYWN0aXZlRm9ybUxheW91dE1hbmFnZXIgPSB1bmRlZmluZWQ7XG4gICAgY29uc3Qgcm91dGVDb25maWcgPSB0aGlzLmdldFBhcmVudEFjdFJvdXRlUm91dGUoKTtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQocm91dGVDb25maWcpKSB7XG4gICAgICBmb3IgKGxldCBpID0gKHJvdXRlQ29uZmlnLmNhbkFjdGl2YXRlQ2hpbGQgfHwgW10pLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIGNvbnN0IGd1YXJkQ2hpbGQgPSB0aGlzLmluamVjdG9yLmdldChDYW5BY3RpdmF0ZUZvcm1MYXlvdXRDaGlsZEd1YXJkKTtcbiAgICAgICAgaWYgKHJvdXRlQ29uZmlnLmNhbkFjdGl2YXRlQ2hpbGRbaV0gPT09IGd1YXJkQ2hpbGQuY29uc3RydWN0b3IpIHtcbiAgICAgICAgICByb3V0ZUNvbmZpZy5jYW5BY3RpdmF0ZUNoaWxkLnNwbGljZShpLCAxKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpc0RpYWxvZ01vZGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubW9kZSA9PT0gT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50LkRJQUxPR19NT0RFO1xuICB9XG5cbiAgcHVibGljIGlzVGFiTW9kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlID09PSBPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnQuVEFCX01PREU7XG4gIH1cblxuICBwdWJsaWMgaXNTcGxpdFBhbmVNb2RlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm1vZGUgPT09IE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudC5TUExJVF9QQU5FX01PREU7XG4gIH1cblxuICBwdWJsaWMgYWRkRGV0YWlsQ29tcG9uZW50KGNoaWxkUm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHVybDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgbmV3RGV0YWlsQ29tcDogRm9ybUxheW91dERldGFpbENvbXBvbmVudERhdGEgPSB7XG4gICAgICBwYXJhbXM6IGNoaWxkUm91dGUucGFyYW1zLFxuICAgICAgcXVlcnlQYXJhbXM6IGNoaWxkUm91dGUucXVlcnlQYXJhbXMsXG4gICAgICB1cmxTZWdtZW50czogY2hpbGRSb3V0ZS51cmwsXG4gICAgICBjb21wb25lbnQ6IGNoaWxkUm91dGUucm91dGVDb25maWcuY29tcG9uZW50LFxuICAgICAgdXJsOiB1cmwsXG4gICAgICBpZDogVXRpbC5yYW5kb21OdW1iZXIoKS50b1N0cmluZygpLFxuICAgICAgbGFiZWw6ICcnLFxuICAgICAgaW5uZXJGb3Jtc0luZm86IHt9LFxuICAgICAgaW5zZXJ0aW9uTW9kZTogY2hpbGRSb3V0ZS5xdWVyeVBhcmFtc1tDb2Rlcy5JTlNFUlRJT05fTU9ERV0gPT09ICd0cnVlJ1xuICAgIH07XG4gICAgaWYgKHRoaXMuaXNEaWFsb2dNb2RlKCkpIHtcbiAgICAgIHRoaXMub3BlbkZvcm1MYXlvdXREaWFsb2cobmV3RGV0YWlsQ29tcCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGNvbXBSZWYgPSB0aGlzLmdldExheW91dE1vZGVDb21wb25lbnQoKTtcbiAgICAgIGlmIChVdGlsLmlzRGVmaW5lZChjb21wUmVmKSkge1xuICAgICAgICBjb21wUmVmLm9wZW5EZXRhaWwobmV3RGV0YWlsQ29tcCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNsb3NlRGV0YWlsKG9wdGlvbnM/OiBGb3JtTGF5b3V0Q2xvc2VEZXRhaWxPcHRpb25zKTogdm9pZCB7XG4gICAgY29uc3QgY29tcFJlZiA9IHRoaXMuZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZChjb21wUmVmKSkge1xuICAgICAgY29tcFJlZi5jbG9zZURldGFpbChvcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY2xvc2VEZXRhaWxzKGRldGFpbHNEYXRhOiBhbnlbXSA9IFtdLCBvcHRpb25zPzogRm9ybUxheW91dENsb3NlRGV0YWlsT3B0aW9ucyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzVGFiTW9kZSgpICYmIFV0aWwuaXNEZWZpbmVkKHRoaXMub1RhYkdyb3VwKSkge1xuICAgICAgdGhpcy5vVGFiR3JvdXAuY2xvc2VEZXRhaWxzKGRldGFpbHNEYXRhLCBvcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3BlbkZvcm1MYXlvdXREaWFsb2coZGV0YWlsQ29tcDogRm9ybUxheW91dERldGFpbENvbXBvbmVudERhdGEpOiB2b2lkIHtcbiAgICBjb25zdCBjc3NjbGFzcyA9IFsnby1mb3JtLWxheW91dC1kaWFsb2ctb3ZlcmxheSddO1xuICAgIGlmICh0aGlzLmRpYWxvZ0NsYXNzKSB7XG4gICAgICBjc3NjbGFzcy5wdXNoKHRoaXMuZGlhbG9nQ2xhc3MpO1xuICAgIH1cblxuICAgIGNvbnN0IGRpYWxvZ09wdGlvbnMgPSAodGhpcy5kaWFsb2dPcHRpb25zIHx8IHt9KTtcblxuICAgIGNvbnN0IGRpYWxvZ0NvbmZpZzogTWF0RGlhbG9nQ29uZmlnID0ge1xuICAgICAgZGF0YToge1xuICAgICAgICBkYXRhOiBkZXRhaWxDb21wLFxuICAgICAgICBsYXlvdXRNYW5hZ2VyQ29tcG9uZW50OiB0aGlzLFxuICAgICAgICB0aXRsZTogZGlhbG9nT3B0aW9ucy50aXRsZSB8fCB0aGlzLnRpdGxlLFxuICAgICAgfSxcbiAgICAgIHdpZHRoOiBkaWFsb2dPcHRpb25zLndpZHRoIHx8IHRoaXMuZGlhbG9nV2lkdGgsXG4gICAgICBtaW5XaWR0aDogZGlhbG9nT3B0aW9ucy5taW5XaWR0aCB8fCB0aGlzLmRpYWxvZ01pbldpZHRoLFxuICAgICAgbWF4V2lkdGg6IGRpYWxvZ09wdGlvbnMubWF4V2lkdGggfHwgdGhpcy5kaWFsb2dNYXhXaWR0aCxcbiAgICAgIGhlaWdodDogZGlhbG9nT3B0aW9ucy5oZWlnaHQgfHwgdGhpcy5kaWFsb2dIZWlnaHQsXG4gICAgICBtaW5IZWlnaHQ6IGRpYWxvZ09wdGlvbnMubWluSGVpZ2h0IHx8IHRoaXMuZGlhbG9nTWluSGVpZ2h0LFxuICAgICAgbWF4SGVpZ2h0OiBkaWFsb2dPcHRpb25zLm1heEhlaWdodCB8fCB0aGlzLmRpYWxvZ01heEhlaWdodCxcbiAgICAgIGRpc2FibGVDbG9zZTogZGlhbG9nT3B0aW9ucy5kaXNhYmxlQ2xvc2UgfHwgdHJ1ZSxcbiAgICAgIHBhbmVsQ2xhc3M6IGRpYWxvZ09wdGlvbnMuY2xhc3MgfHwgY3NzY2xhc3NcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuZGlhbG9nT3B0aW9ucykge1xuICAgICAgZGlhbG9nQ29uZmlnLmNsb3NlT25OYXZpZ2F0aW9uID0gdGhpcy5kaWFsb2dPcHRpb25zLmNsb3NlT25OYXZpZ2F0aW9uO1xuICAgICAgZGlhbG9nQ29uZmlnLmJhY2tkcm9wQ2xhc3MgPSB0aGlzLmRpYWxvZ09wdGlvbnMuYmFja2Ryb3BDbGFzcztcbiAgICAgIGRpYWxvZ0NvbmZpZy5wb3NpdGlvbiA9IHRoaXMuZGlhbG9nT3B0aW9ucy5wb3NpdGlvbjtcbiAgICAgIGRpYWxvZ0NvbmZpZy5kaXNhYmxlQ2xvc2UgPSB0aGlzLmRpYWxvZ09wdGlvbnMuZGlzYWJsZUNsb3NlO1xuICAgIH1cblxuICAgIHRoaXMuZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihPRm9ybUxheW91dERpYWxvZ0NvbXBvbmVudCwgZGlhbG9nQ29uZmlnKTtcbiAgICB0aGlzLmRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5tYXJrRm9yVXBkYXRlKSB7XG4gICAgICAgIHRoaXMudXBkYXRlSWZOZWVkZWQoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVsb2FkTWFpbkNvbXBvbmVudHMoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRGb3JtQ2FjaGVEYXRhKCk6IEZvcm1MYXlvdXREZXRhaWxDb21wb25lbnREYXRhIHtcbiAgICBjb25zdCBjb21wUmVmID0gdGhpcy5nZXRMYXlvdXRNb2RlQ29tcG9uZW50KCk7XG4gICAgcmV0dXJuIFV0aWwuaXNEZWZpbmVkKGNvbXBSZWYpID8gY29tcFJlZi5nZXRGb3JtQ2FjaGVEYXRhKCkgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgc2V0TW9kaWZpZWRTdGF0ZShmb3JtQXR0cjogc3RyaW5nLCBtb2RpZmllZDogYm9vbGVhbiwgY29uZmlybUV4aXQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBjb21wUmVmID0gdGhpcy5nZXRMYXlvdXRNb2RlQ29tcG9uZW50KCk7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKGNvbXBSZWYpKSB7XG4gICAgICBjb21wUmVmLnNldE1vZGlmaWVkU3RhdGUoZm9ybUF0dHIsIG1vZGlmaWVkLCBjb25maXJtRXhpdCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldExhYmVsRnJvbURhdGEoZGF0YTogYW55KTogc3RyaW5nIHtcbiAgICBsZXQgbGFiZWwgPSAnJztcbiAgICBjb25zdCBpc0RhdGFEZWZpbmVkID0gVXRpbC5pc0RlZmluZWQoZGF0YSk7XG4gICAgaWYgKGlzRGF0YURlZmluZWQgJiYgZGF0YS5oYXNPd25Qcm9wZXJ0eSgnbmV3X3RhYl90aXRsZScpKSB7XG4gICAgICBsYWJlbCA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXQoZGF0YS5uZXdfdGFiX3RpdGxlKTtcbiAgICB9IGVsc2UgaWYgKGlzRGF0YURlZmluZWQgJiYgdGhpcy5sYWJlbENvbHNBcnJheS5sZW5ndGggIT09IDApIHtcbiAgICAgIHRoaXMubGFiZWxDb2xzQXJyYXkuZm9yRWFjaCgoY29sLCBpZHgpID0+IHtcbiAgICAgICAgaWYgKGRhdGFbY29sXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgbGFiZWwgKz0gZGF0YVtjb2xdICsgKChpZHggPCB0aGlzLmxhYmVsQ29sc0FycmF5Lmxlbmd0aCAtIDEpID8gdGhpcy5zZXBhcmF0b3IgOiAnJyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gbGFiZWw7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlTmF2aWdhdGlvbihkYXRhOiBhbnksIGtleXNWYWx1ZXM6IGFueSwgaW5zZXJ0aW9uTW9kZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IGNvbXBSZWYgPSB0aGlzLmdldExheW91dE1vZGVDb21wb25lbnQoKTtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQoY29tcFJlZikpIHtcbiAgICAgIGNvbXBSZWYudXBkYXRlTmF2aWdhdGlvbihkYXRhLCBrZXlzVmFsdWVzLCBpbnNlcnRpb25Nb2RlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlQWN0aXZlRGF0YShkYXRhOiBhbnkpIHtcbiAgICBjb25zdCBjb21wUmVmID0gdGhpcy5nZXRMYXlvdXRNb2RlQ29tcG9uZW50KCk7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKGNvbXBSZWYpKSB7XG4gICAgICBjb21wUmVmLnVwZGF0ZUFjdGl2ZURhdGEoZGF0YSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldFJvdXRlT2ZBY3RpdmVJdGVtKCk6IGFueVtdIHtcbiAgICBjb25zdCBjb21wUmVmID0gdGhpcy5nZXRMYXlvdXRNb2RlQ29tcG9uZW50KCk7XG4gICAgcmV0dXJuIFV0aWwuaXNEZWZpbmVkKGNvbXBSZWYpID8gY29tcFJlZi5nZXRSb3V0ZU9mQWN0aXZlSXRlbSgpIDogW107XG4gIH1cblxuICBwdWJsaWMgaXNNYWluQ29tcG9uZW50KGNvbXA6IElMYXlvdXRNYW5hZ2VyQ29tcG9uZW50KTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuaXNEaWFsb2dNb2RlKCkpIHtcbiAgICAgIHJldHVybiAhY29tcC5vRm9ybUxheW91dERpYWxvZztcbiAgICB9XG4gICAgY29uc3QgY29tcFJlZiA9IHRoaXMuZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpO1xuICAgIHJldHVybiBVdGlsLmlzRGVmaW5lZChjb21wUmVmKSAmJiBjb21wUmVmLmlzTWFpbkNvbXBvbmVudChjb21wKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSb3V0ZUZvckNvbXBvbmVudChjb21wOiBJTGF5b3V0TWFuYWdlckNvbXBvbmVudCk6IGFueVtdIHtcbiAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICBpZiAodGhpcy5wYXJlbnRGb3JtTGF5b3V0TWFuYWdlcikge1xuICAgICAgY29uc3QgcGFyZW50Um91dGUgPSB0aGlzLnBhcmVudEZvcm1MYXlvdXRNYW5hZ2VyLmdldFJvdXRlRm9yQ29tcG9uZW50KGNvbXApO1xuICAgICAgaWYgKHBhcmVudFJvdXRlICYmIHBhcmVudFJvdXRlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmVzdWx0LnB1c2goLi4ucGFyZW50Um91dGUpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIXRoaXMuaXNNYWluQ29tcG9uZW50KGNvbXApKSB7XG4gICAgICBjb25zdCBhY3RpdmVSb3V0ZSA9IHRoaXMuZ2V0Um91dGVPZkFjdGl2ZUl0ZW0oKTtcbiAgICAgIGlmIChhY3RpdmVSb3V0ZSAmJiBhY3RpdmVSb3V0ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKC4uLmFjdGl2ZVJvdXRlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBzZXRBc0FjdGl2ZUZvcm1MYXlvdXRNYW5hZ2VyKCk6IHZvaWQge1xuICAgIHRoaXMub0Zvcm1MYXlvdXRNYW5hZ2VyU2VydmljZS5hY3RpdmVGb3JtTGF5b3V0TWFuYWdlciA9IHRoaXM7XG4gIH1cblxuICBwdWJsaWMgcmVsb2FkTWFpbkNvbXBvbmVudHMoKTogdm9pZCB7XG4gICAgdGhpcy5vblRyaWdnZXJVcGRhdGUuZW1pdCgpO1xuICB9XG5cbiAgcHVibGljIGFsbG93VG9VcGRhdGVOYXZpZ2F0aW9uKGZvcm1BdHRyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHRoaXMuaXNUYWJNb2RlKCkgJiYgVXRpbC5pc0RlZmluZWQodGhpcy5vVGFiR3JvdXApICYmIFV0aWwuaXNEZWZpbmVkKHRoaXMudGl0bGVEYXRhT3JpZ2luKSkgP1xuICAgICAgdGhpcy50aXRsZURhdGFPcmlnaW4gPT09IGZvcm1BdHRyIDpcbiAgICAgIHRydWU7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlU3RhdGVTdG9yYWdlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlIHx8ICF0aGlzLnN0b3JlU3RhdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaXNUYWJNb2RlID0gdGhpcy5pc1RhYk1vZGUoKSAmJiBVdGlsLmlzRGVmaW5lZCh0aGlzLm9UYWJHcm91cCk7XG4gICAgY29uc3QgaXNTcGxpdFBhbmVNb2RlID0gdGhpcy5pc1NwbGl0UGFuZU1vZGUoKSAmJiBVdGlsLmlzRGVmaW5lZCh0aGlzLm9TcGxpdFBhbmUpO1xuICAgIGlmIChpc1RhYk1vZGUgfHwgaXNTcGxpdFBhbmVNb2RlKSB7XG4gICAgICB0aGlzLmxvY2FsU3RvcmFnZVNlcnZpY2UudXBkYXRlQ29tcG9uZW50U3RvcmFnZSh0aGlzLCB0aGlzLmdldFJvdXRlS2V5KCkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0UGFyZW50QWN0Um91dGVSb3V0ZSgpOiBSb3V0ZSB7XG4gICAgbGV0IGFjdFJvdXRlID0gdGhpcy5hY3RSb3V0ZTtcbiAgICB3aGlsZSAoYWN0Um91dGUucGFyZW50ICE9PSB1bmRlZmluZWQgJiYgYWN0Um91dGUucGFyZW50ICE9PSBudWxsKSB7XG4gICAgICBpZiAoYWN0Um91dGUucm91dGVDb25maWcuY2hpbGRyZW4gfHwgYWN0Um91dGUucm91dGVDb25maWcubG9hZENoaWxkcmVuKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgYWN0Um91dGUgPSBhY3RSb3V0ZS5wYXJlbnQ7XG4gICAgfVxuICAgIHJldHVybiBhY3RSb3V0ZS5yb3V0ZUNvbmZpZztcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVJZk5lZWRlZCgpIHtcbiAgICBpZiAodGhpcy5tYXJrRm9yVXBkYXRlKSB7XG4gICAgICB0aGlzLm1hcmtGb3JVcGRhdGUgPSBmYWxzZTtcbiAgICAgIHRoaXMub25UcmlnZ2VyVXBkYXRlLmVtaXQoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0UGFyYW1zKCk6IGFueSB7XG4gICAgY29uc3QgY29tcFJlZiA9IHRoaXMuZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpO1xuICAgIHJldHVybiBVdGlsLmlzRGVmaW5lZChjb21wUmVmKSA/IGNvbXBSZWYuZ2V0UGFyYW1zKCkgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBzZXQgbWFya0ZvclVwZGF0ZShhcmc6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9tYXJrRm9yVXBkYXRlID0gYXJnO1xuICAgIGlmICh0aGlzLmlzU3BsaXRQYW5lTW9kZSgpKSB7XG4gICAgICB0aGlzLnVwZGF0ZUlmTmVlZGVkKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IG1hcmtGb3JVcGRhdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX21hcmtGb3JVcGRhdGU7XG4gIH1cblxuICBnZXQgaWdub3JlQ2FuRGVhY3RpdmF0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuaXNTcGxpdFBhbmVNb2RlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpOiBPRm9ybUxheW91dE1hbmFnZXJNb2RlIHtcbiAgICBsZXQgY29tcFJlZjtcbiAgICBpZiAodGhpcy5pc1RhYk1vZGUoKSAmJiBVdGlsLmlzRGVmaW5lZCh0aGlzLm9UYWJHcm91cCkpIHtcbiAgICAgIGNvbXBSZWYgPSB0aGlzLm9UYWJHcm91cDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNEaWFsb2dNb2RlKCkgJiYgVXRpbC5pc0RlZmluZWQodGhpcy5kaWFsb2dSZWYpKSB7XG4gICAgICBjb21wUmVmID0gdGhpcy5kaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2U7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzU3BsaXRQYW5lTW9kZSgpICYmIFV0aWwuaXNEZWZpbmVkKHRoaXMub1NwbGl0UGFuZSkpIHtcbiAgICAgIGNvbXBSZWYgPSB0aGlzLm9TcGxpdFBhbmU7XG4gICAgfVxuICAgIHJldHVybiBjb21wUmVmO1xuICB9XG5cbiAgYWxsb3dOYXZpZ2F0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5pc1RhYk1vZGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBjYW5BZGREZXRhaWxDb21wb25lbnQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgY29uc3QgY29tcFJlZiA9IHRoaXMuZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpO1xuICAgIHJldHVybiBVdGlsLndyYXBJbnRvT2JzZXJ2YWJsZShVdGlsLmlzRGVmaW5lZChjb21wUmVmKSA/IGNvbXBSZWYuY2FuQWRkRGV0YWlsQ29tcG9uZW50KCkgOiB0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBoYXNUb0NvbmZpcm1FeGl0KGRhdGE6IEZvcm1MYXlvdXREZXRhaWxDb21wb25lbnREYXRhLCBvcHRpb25zPzogRm9ybUxheW91dENsb3NlRGV0YWlsT3B0aW9ucyk6IGJvb2xlYW4ge1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZChvcHRpb25zKSAmJiBvcHRpb25zLmV4aXRXaXRob3V0Q29uZmlybWF0aW9uKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGZvcm1zQXR0ciA9IE9iamVjdC5rZXlzKGRhdGEuaW5uZXJGb3Jtc0luZm8pO1xuICAgIGxldCByZXN1bHQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBpZiAoZm9ybXNBdHRyLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvcm1zQXR0ci5mb3JFYWNoKGZvcm1BdHRyID0+IHtcbiAgICAgICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgICBjb25zdCBmb3JtRGF0YSA9IGRhdGEuaW5uZXJGb3Jtc0luZm9bZm9ybUF0dHJdO1xuICAgICAgICAgIHJlc3VsdCA9IGZvcm1EYXRhLmNvbmZpcm1PbkV4aXQgJiYgZm9ybURhdGEubW9kaWZpZWQ7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHVibGljIGdldElkT2ZBY3RpdmVJdGVtKCk6IHN0cmluZyB7XG4gICAgY29uc3QgY29tcFJlZiA9IHRoaXMuZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpO1xuICAgIHJldHVybiBVdGlsLmlzRGVmaW5lZChjb21wUmVmKSA/IGAke3RoaXMub2F0dHJ9LSR7Y29tcFJlZi5nZXRJZE9mQWN0aXZlSXRlbSgpfS1gIDogJyc7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cIm1vZGVcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50LlRBQl9NT0RFXCI+XG4gICAgPG8tZm9ybS1sYXlvdXQtdGFiZ3JvdXAgI3RhYkdyb3VwIFt0aXRsZV09XCJ0aXRsZVwiIChvbk1haW5UYWJTZWxlY3RlZCk9XCJvbk1haW5UYWJTZWxlY3RlZC5lbWl0KCRldmVudClcIlxuICAgICAgKG9uU2VsZWN0ZWRUYWJDaGFuZ2UpPVwib25TZWxlY3RlZFRhYkNoYW5nZS5lbWl0KCRldmVudClcIiAob25DbG9zZVRhYik9XCJvbkNsb3NlVGFiLmVtaXQoJGV2ZW50KVwiXG4gICAgICBbb3B0aW9uc109XCJ0YWJHcm91cE9wdGlvbnNcIiBbc3RyZXRjaC10YWJzXT1cInN0cmV0Y2hUYWJzXCI+XG4gICAgICA8bmctY29udGVudCAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRCbG9ja1wiPjwvbmctY29udGVudD5cbiAgICA8L28tZm9ybS1sYXlvdXQtdGFiZ3JvdXA+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIk9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudC5TUExJVF9QQU5FX01PREVcIj5cbiAgICA8by1mb3JtLWxheW91dC1zcGxpdC1wYW5lICNzcGxpdFBhbmUgW29wdGlvbnNdPVwic3BsaXRQYW5lT3B0aW9uc1wiPlxuICAgICAgPG5nLWNvbnRlbnQgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50QmxvY2tcIj48L25nLWNvbnRlbnQ+XG4gICAgPC9vLWZvcm0tbGF5b3V0LXNwbGl0LXBhbmU+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIk9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudC5ESUFMT0dfTU9ERVwiPlxuICAgIDxuZy1jb250ZW50ICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudEJsb2NrXCI+PC9uZy1jb250ZW50PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuXG5cbjxuZy10ZW1wbGF0ZSAjY29udGVudEJsb2NrPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L25nLXRlbXBsYXRlPiJdfQ==
526
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1mb3JtLWxheW91dC1tYW5hZ2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9sYXlvdXRzL2Zvcm0tbGF5b3V0L28tZm9ybS1sYXlvdXQtbWFuYWdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvbGF5b3V0cy9mb3JtLWxheW91dC9vLWZvcm0tbGF5b3V0LW1hbmFnZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osUUFBUSxFQUdSLFFBQVEsRUFDUixRQUFRLEVBRVIsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQWlDLE1BQU0sMEJBQTBCLENBQUM7QUFDcEYsT0FBTyxFQUFFLGNBQWMsRUFBaUMsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEYsT0FBTyxFQUFjLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVoRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUl6RSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN6RixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUUvRixPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSxvRUFBb0UsQ0FBQztB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QUFHLFFBQVEsQ0FBQztBQUN2QixvQ0FBUSxHQUFHLEtBQUssQ0FBQztBQUNqQiwyQ0FBZSxHQUFHLFlBQVksQ0FBQzt3SEFSL0IsMkJBQTJCOzRHQUEzQiwyQkFBMkIsMCtCQVI5QjtRQUNULDZCQUE2QjtRQUM3QixFQUFFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxRQUFRLEVBQUUsdUNBQXVDLEVBQUU7UUFDekYsRUFBRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsV0FBVyxFQUFFLDJCQUEyQixFQUFFO0tBQzlFLDJOQ2hGSCx5aENBdUJjO0FEeUdaO0lBQUMscUJBQXFCLEVBQUU7OytEQUNVOzJGQTdDcEIsMkJBQTJCO2tCQWQxQyxTQUFTOytCQUNFLHVCQUF1QixVQUN6QixvQ0FBb0MsV0FDbkMscUNBQXFDLGFBR25DO3dCQUNULDZCQUE2Qjt3QkFDN0IsRUFBRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsUUFBUSxFQUFFLHVDQUF1QyxFQUFFO3dCQUN6RixFQUFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxXQUFXLDZCQUE2QixFQUFFO3FCQUM5RSxRQUNLO3dCQUNKLCtCQUErQixFQUFFLE1BQU07cUJBQ3hDOzswQkF3S0UsUUFBUTs7MEJBQUksUUFBUTs0Q0ExSGhCLFVBQVUsTUFvQlYsU0FBUztzQkFEZixTQUFTO3VCQUFDLFVBQVU7Z0JBSWQsVUFBVTtzQkFEaEIsU0FBUzt1QkFBQyxXQUFXO2dCQTJLZixtQkFBbUI7c0JBRHpCLFlBQVk7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIEluamVjdG9yLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFNraXBTZWxmLFxuICBUeXBlLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ0NvbmZpZywgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBCb29sZWFuSW5wdXRDb252ZXJ0ZXIgfSBmcm9tICcuLi8uLi9kZWNvcmF0b3JzL2lucHV0LWNvbnZlcnRlcic7XG5pbXBvcnQgeyBJTGF5b3V0TWFuYWdlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvbGF5b3V0LW1hbmFnZXItY29tcG9uZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBJTG9jYWxTdG9yYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9sb2NhbC1zdG9yYWdlLWNvbXBvbmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgT0Zvcm1MYXlvdXRNYW5hZ2VyTW9kZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvby1mb3JtLWxheW91dC1tYW5hZ2VyLW1vZGUuaW50ZXJmYWNlJztcbmltcG9ydCB7IENvbXBvbmVudFN0YXRlU2VydmljZVByb3ZpZGVyLCBPX0NPTVBPTkVOVF9TVEFURV9TRVJWSUNFIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmFjdG9yaWVzJztcbmltcG9ydCB7IExvY2FsU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9sb2NhbC1zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgT0Zvcm1MYXlvdXRNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL28tZm9ybS1sYXlvdXQtbWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7IEFic3RyYWN0Q29tcG9uZW50U3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3RhdGUvby1jb21wb25lbnQtc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnRTdGF0ZUNsYXNzIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3RhdGUvby1mb3JtLWxheW91dC1tYW5hZ2VyLWNvbXBvbmVudC1zdGF0ZS5jbGFzcyc7XG5pbXBvcnQgeyBPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnRTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zdGF0ZS9vLWZvcm0tbGF5b3V0LW1hbmFnZXItY29tcG9uZW50LXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgT1RyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGUvby10cmFuc2xhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBGb3JtTGF5b3V0Q2xvc2VEZXRhaWxPcHRpb25zLCBGb3JtTGF5b3V0RGV0YWlsQ29tcG9uZW50RGF0YSB9IGZyb20gJy4uLy4uL3R5cGVzL2Zvcm0tbGF5b3V0LWRldGFpbC1jb21wb25lbnQtZGF0YS50eXBlJztcbmltcG9ydCB7IENvZGVzIH0gZnJvbSAnLi4vLi4vdXRpbC9jb2Rlcyc7XG5pbXBvcnQgeyBVdGlsIH0gZnJvbSAnLi4vLi4vdXRpbC91dGlsJztcbmltcG9ydCB7IE9Gb3JtTGF5b3V0RGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9kaWFsb2cvby1mb3JtLWxheW91dC1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IENhbkFjdGl2YXRlRm9ybUxheW91dENoaWxkR3VhcmQgfSBmcm9tICcuL2d1YXJkcy9vLWZvcm0tbGF5b3V0LWNhbi1hY3RpdmF0ZS1jaGlsZC5ndWFyZCc7XG5pbXBvcnQgeyBPRm9ybUxheW91dE1hbmFnZXJCYXNlIH0gZnJvbSAnLi9vLWZvcm0tbGF5b3V0LW1hbmFnZXItYmFzZS5jbGFzcyc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0lOUFVUU19PX0ZPUk1fTEFZT1VUX01BTkFHRVIgPSBbXG4gICdvYXR0cjogYXR0cicsXG4gICdtb2RlJyxcbiAgJ3N0b3JlU3RhdGU6IHN0b3JlLXN0YXRlJyxcblxuICAvLyBDb21tb24gZm9yIGRpYWxvZyBhbmQgdGFiIG1vZGVcbiAgLy8gZGVwcmVjYXRlZCwgb25seSBtYW50YWluZWQgZm9yIGxlZ2FjeSByZWFzb25zXG4gICd0aXRsZScsXG4gICdsYWJlbENvbHVtbnM6IGxhYmVsLWNvbHVtbnMnLFxuICAnc2VwYXJhdG9yJyxcblxuICAvLyBhdHRyIG9mIHRoZSBjaGlsZCBmb3JtIGZyb20gd2hpY2ggdGhlIGRhdGEgZm9yIGJ1aWxkaW5nIHRoZSB0YWIgdGl0bGUgd2lsbCBiZSBvYnRhaW5lZCAob25seSBpbiB0YWIgbW9kZSlcbiAgLy8gZGVwcmVjYXRlZCwgb25seSBtYW50YWluZWQgZm9yIGxlZ2FjeSByZWFzb25zXG4gICd0aXRsZURhdGFPcmlnaW46IHRpdGxlLWRhdGEtb3JpZ2luJyxcblxuICAvLyBPbmx5IGRpYWxvZyBvcHRpb25zIGNvbmZpZ3VyYWJsZSBhcyBhbiBpbnB1dCBvZiB0aGUgby1mb3JtLWxheW91dC1tYW5hZ2VyICh1c2UgdGhlIG8tZm9ybS1sYXlvdXQtZGlhbG9nLW9wdGlvbnMgZGlyZWN0aXZlKVxuICAvLyBkZXByZWNhdGVkLCBvbmx5IG1hbnRhaW5lZCBmb3IgbGVnYWN5IHJlYXNvbnNcbiAgJ2RpYWxvZ1dpZHRoOiBkaWFsb2ctd2lkdGgnLFxuICAnZGlhbG9nTWluV2lkdGg6IGRpYWxvZy1taW4td2lkdGgnLFxuICAnZGlhbG9nTWF4V2lkdGg6IGRpYWxvZy1tYXgtd2lkdGgnLFxuICAnZGlhbG9nSGVpZ2h0OiBkaWFsb2ctaGVpZ2h0JyxcbiAgJ2RpYWxvZ01pbkhlaWdodDogZGlhbG9nLW1pbi1oZWlnaHQnLFxuICAnZGlhbG9nTWF4SGVpZ2h0IGRpYWxvZy1tYXgtaGVpZ2h0JyxcbiAgJ2RpYWxvZ0NsYXNzOiBkaWFsb2ctY2xhc3MnLFxuICAnZGlhbG9nVGl0bGVTZXBhcmF0b3I6IGRpYWxvZy10aXRsZS1zZXBhcmF0b3InXG5dO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9PVVRQVVRTX09fRk9STV9MQVlPVVRfTUFOQUdFUiA9IFtcbiAgJ29uTWFpblRhYlNlbGVjdGVkJyxcbiAgJ29uU2VsZWN0ZWRUYWJDaGFuZ2UnLFxuICAnb25DbG9zZVRhYidcbl07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28tZm9ybS1sYXlvdXQtbWFuYWdlcicsXG4gIGlucHV0czogREVGQVVMVF9JTlBVVFNfT19GT1JNX0xBWU9VVF9NQU5BR0VSLFxuICBvdXRwdXRzOiBERUZBVUxUX09VVFBVVFNfT19GT1JNX0xBWU9VVF9NQU5BR0VSLFxuICB0ZW1wbGF0ZVVybDogJy4vby1mb3JtLWxheW91dC1tYW5hZ2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vby1mb3JtLWxheW91dC1tYW5hZ2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIENvbXBvbmVudFN0YXRlU2VydmljZVByb3ZpZGVyLFxuICAgIHsgcHJvdmlkZTogT19DT01QT05FTlRfU1RBVEVfU0VSVklDRSwgdXNlQ2xhc3M6IE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudFN0YXRlU2VydmljZSB9LFxuICAgIHsgcHJvdmlkZTogT0Zvcm1MYXlvdXRNYW5hZ2VyQmFzZSwgdXNlRXhpc3Rpbmc6IE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudCB9XG4gIF0sXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLm8tZm9ybS1sYXlvdXQtbWFuYWdlcl0nOiAndHJ1ZSdcbiAgfVxufSkgZXhwb3J0IGNsYXNzIE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uSW5pdCwgT25EZXN0cm95LCBJTG9jYWxTdG9yYWdlQ29tcG9uZW50IHtcblxuICAvLyBkZWNsYXJpbmcgdGhpcyBwcm9wZXJ0eSB0byBoYXZlIGFjY2VzIHRvIHN0YXRpYyBtZW1iZXJzIGluIHRoZSB0ZW1wbGF0ZVxuICBPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnQgPSBPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnQ7XG5cblxuICBwdWJsaWMgc3RhdGljIERJQUxPR19NT0RFID0gJ2RpYWxvZyc7XG4gIHB1YmxpYyBzdGF0aWMgVEFCX01PREUgPSAndGFiJztcbiAgcHVibGljIHN0YXRpYyBTUExJVF9QQU5FX01PREUgPSAnc3BsaXQtcGFuZSc7XG5cbiAgcHVibGljIG9hdHRyOiBzdHJpbmc7XG4gIHB1YmxpYyBfbW9kZTogc3RyaW5nID0gT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50LkRJQUxPR19NT0RFO1xuICBwdWJsaWMgc3RyZXRjaFRhYnMgPSBmYWxzZTtcblxuICBwdWJsaWMgZ2V0IG1vZGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fbW9kZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgbW9kZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgY29uc3QgYXZhaWxhYmxlTW9kZVZhbHVlcyA9IFtPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnQuRElBTE9HX01PREUsIE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudC5UQUJfTU9ERSwgT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50LlNQTElUX1BBTkVfTU9ERV07XG4gICAgdGhpcy5fbW9kZSA9ICh2YWx1ZSB8fCAnJykudG9Mb3dlckNhc2UoKTtcbiAgICBpZiAoYXZhaWxhYmxlTW9kZVZhbHVlcy5pbmRleE9mKHRoaXMuX21vZGUpID09PSAtMSkge1xuICAgICAgdGhpcy5fbW9kZSA9IE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudC5ESUFMT0dfTU9ERTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgX3NlcGFyYXRvcjogc3RyaW5nID0gJyAnO1xuXG4gIC8qKlxuICAqIEBkZXByZWNhdGVkIHVzZXIgc2hvdWxkIHVzZSB0aGUgb3B0aW9ucyBpbnB1dFxuICAqL1xuICBzZXQgc2VwYXJhdG9yKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9zZXBhcmF0b3IgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBzZXBhcmF0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc2VwYXJhdG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZXIgc2hvdWxkIHVzZSB0aGUgb3B0aW9ucyBpbnB1dFxuICAgKi9cbiAgcHVibGljIHRpdGxlOiBzdHJpbmc7XG5cbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHB1YmxpYyBzdG9yZVN0YXRlOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKipcbiAgKiBAZGVwcmVjYXRlZCB1c2VyIHNob3VsZCB1c2UgdGhlIG9wdGlvbnMgaW5wdXRcbiAgKi9cbiAgcHVibGljIHRpdGxlRGF0YU9yaWdpbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBUaGUgbmV4dCBpbnB1dHMgYXJlIGRlcHJlY2F0ZWQgYW5kIHVzZXIgc2hvdWxkIHVzZSB0aGUgT0Zvcm1MYXlvdXREaWFsb2dPcHRpb25zRGlyZWN0aXZlIGlucHV0c1xuICAgKi9cbiAgcHVibGljIGRpYWxvZ1dpZHRoOiBzdHJpbmc7XG4gIHB1YmxpYyBkaWFsb2dNaW5XaWR0aDogc3RyaW5nO1xuICBwdWJsaWMgZGlhbG9nTWF4V2lkdGg6IHN0cmluZztcbiAgcHVibGljIGRpYWxvZ0hlaWdodDogc3RyaW5nO1xuICBwdWJsaWMgZGlhbG9nTWluSGVpZ2h0OiBzdHJpbmc7XG4gIHB1YmxpYyBkaWFsb2dNYXhIZWlnaHQ6IHN0cmluZztcbiAgcHVibGljIGRpYWxvZ0NsYXNzOiBzdHJpbmcgPSAnJztcbiAgcHVibGljIGRpYWxvZ1RpdGxlU2VwYXJhdG9yID0gJzonO1xuXG4gIEBWaWV3Q2hpbGQoJ3RhYkdyb3VwJylcbiAgcHVibGljIG9UYWJHcm91cDogT0Zvcm1MYXlvdXRNYW5hZ2VyTW9kZTtcbiAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPE9Gb3JtTGF5b3V0RGlhbG9nQ29tcG9uZW50PjtcbiAgQFZpZXdDaGlsZCgnc3BsaXRQYW5lJylcbiAgcHVibGljIG9TcGxpdFBhbmU6IE9Gb3JtTGF5b3V0TWFuYWdlck1vZGU7XG5cbiAgcHVibGljIG9uTWFpblRhYlNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBwdWJsaWMgb25TZWxlY3RlZFRhYkNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgcHVibGljIG9uQ2xvc2VUYWI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgcHJvdGVjdGVkIF9sYWJlbENvbHVtbnM6IHN0cmluZztcblxuICBnZXQgbGFiZWxDb2x1bW5zKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2xhYmVsQ29sdW1ucztcbiAgfVxuXG4gIC8qKlxuICAqIEBkZXByZWNhdGVkIHVzZXIgc2hvdWxkIHVzZSB0aGUgb3B0aW9ucyBpbnB1dFxuICAqL1xuICBzZXQgbGFiZWxDb2x1bW5zKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9sYWJlbENvbHVtbnMgPSB2YWx1ZTtcbiAgICB0aGlzLl9sYWJlbENvbHNBcnJheSA9IFV0aWwucGFyc2VBcnJheSh2YWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgX2xhYmVsQ29sc0FycmF5OiBzdHJpbmdbXSA9IFtdO1xuXG4gIGdldCBsYWJlbENvbHNBcnJheSgpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2xhYmVsQ29sc0FycmF5O1xuICB9XG5cbiAgc2V0IGxhYmVsQ29sc0FycmF5KHZhbHVlOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuX2xhYmVsQ29sc0FycmF5ID0gdmFsdWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgdHJhbnNsYXRlU2VydmljZTogT1RyYW5zbGF0ZVNlcnZpY2U7XG4gIHByb3RlY3RlZCBvRm9ybUxheW91dE1hbmFnZXJTZXJ2aWNlOiBPRm9ybUxheW91dE1hbmFnZXJTZXJ2aWNlO1xuICBwcm90ZWN0ZWQgbG9jYWxTdG9yYWdlU2VydmljZTogTG9jYWxTdG9yYWdlU2VydmljZTtcblxuICBwcm90ZWN0ZWQgX3RhYkdyb3VwT3B0aW9uczogYW55ID0ge307XG5cbiAgZ2V0IHRhYkdyb3VwT3B0aW9ucygpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl90YWJHcm91cE9wdGlvbnM7XG4gIH1cblxuICBhZGRUYWJHcm91cE9wdGlvbnModmFsdWU6IGFueSkge1xuICAgIE9iamVjdC5hc3NpZ24odGhpcy5fdGFiR3JvdXBPcHRpb25zLCB2YWx1ZSk7XG4gICAgaWYgKHZhbHVlLmhhc093blByb3BlcnR5KCdsYWJlbENvbHVtbnMnKSkge1xuICAgICAgdGhpcy5sYWJlbENvbHNBcnJheSA9IFV0aWwucGFyc2VBcnJheSh2YWx1ZVsnbGFiZWxDb2x1bW5zJ10pO1xuICAgIH1cbiAgICBpZiAodmFsdWUuaGFzT3duUHJvcGVydHkoJ3NlcGFyYXRvcicpKSB7XG4gICAgICB0aGlzLnNlcGFyYXRvciA9IHZhbHVlWydzZXBhcmF0b3InXTtcbiAgICB9XG4gICAgaWYgKHZhbHVlLmhhc093blByb3BlcnR5KCdzdHJldGNoVGFicycpKSB7XG4gICAgICB0aGlzLnN0cmV0Y2hUYWJzID0gdmFsdWVbJ3N0cmV0Y2hUYWJzJ107XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIF9kaWFsb2dPcHRpb25zOiBhbnkgPSB7fTtcblxuICBnZXQgZGlhbG9nT3B0aW9ucygpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl9kaWFsb2dPcHRpb25zO1xuICB9XG5cbiAgYWRkRGlhbG9nT3B0aW9ucyh2YWx1ZTogYW55KSB7XG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLl9kaWFsb2dPcHRpb25zLCB2YWx1ZSk7XG4gICAgaWYgKHZhbHVlLmhhc093blByb3BlcnR5KCdsYWJlbENvbHVtbnMnKSkge1xuICAgICAgdGhpcy5sYWJlbENvbHNBcnJheSA9IFV0aWwucGFyc2VBcnJheSh2YWx1ZVsnbGFiZWxDb2x1bW5zJ10pO1xuICAgIH1cbiAgICBpZiAodmFsdWUuaGFzT3duUHJvcGVydHkoJ3NlcGFyYXRvcicpKSB7XG4gICAgICB0aGlzLnNlcGFyYXRvciA9IHZhbHVlWydzZXBhcmF0b3InXTtcbiAgICB9XG4gICAgaWYgKHZhbHVlLmhhc093blByb3BlcnR5KCdkaWFsb2dUaXRsZVNlcGFyYXRvcicpKSB7XG4gICAgICB0aGlzLmRpYWxvZ1RpdGxlU2VwYXJhdG9yID0gdmFsdWVbJ2RpYWxvZ1RpdGxlU2VwYXJhdG9yJ107XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIF9zcGxpdFBhbmVPcHRpb25zOiBhbnkgPSB7fTtcblxuICBnZXQgc3BsaXRQYW5lT3B0aW9ucygpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl9zcGxpdFBhbmVPcHRpb25zO1xuICB9XG5cbiAgYWRkU3BsaXRQYW5lT3B0aW9ucyh2YWx1ZTogYW55KSB7XG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLl9zcGxpdFBhbmVPcHRpb25zLCB2YWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWRkaW5nR3VhcmQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwdWJsaWMgbmF2aWdhdGlvblNlcnZpY2U6IE5hdmlnYXRpb25TZXJ2aWNlO1xuXG4gIHB1YmxpYyBfbWFya0ZvclVwZGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgb25UcmlnZ2VyVXBkYXRlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIHByb3RlY3RlZCBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBwcm90ZWN0ZWQgY29tcG9uZW50U3RhdGVTZXJ2aWNlOiBPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnRTdGF0ZVNlcnZpY2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcm90ZWN0ZWQgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJvdGVjdGVkIGFjdFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcm90ZWN0ZWQgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHJvdGVjdGVkIGVsUmVmOiBFbGVtZW50UmVmLFxuICAgIEBTa2lwU2VsZigpIEBPcHRpb25hbCgpXG4gICAgcHVibGljIHBhcmVudEZvcm1MYXlvdXRNYW5hZ2VyOiBPRm9ybUxheW91dE1hbmFnZXJCYXNlXG4gICkge1xuICAgIHRoaXMub0Zvcm1MYXlvdXRNYW5hZ2VyU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KE9Gb3JtTGF5b3V0TWFuYWdlclNlcnZpY2UpO1xuICAgIHRoaXMubG9jYWxTdG9yYWdlU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KExvY2FsU3RvcmFnZVNlcnZpY2UpO1xuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KE9UcmFuc2xhdGVTZXJ2aWNlKTtcbiAgICB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoTmF2aWdhdGlvblNlcnZpY2UpO1xuICAgIHRoaXMuY29tcG9uZW50U3RhdGVTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQ8T0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50U3RhdGVTZXJ2aWNlPihBYnN0cmFjdENvbXBvbmVudFN0YXRlU2VydmljZSBhcyBUeXBlPE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudFN0YXRlU2VydmljZT4pO1xuICAgIGlmICh0aGlzLnN0b3JlU3RhdGUpIHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZCh0aGlzLmxvY2FsU3RvcmFnZVNlcnZpY2Uub25Sb3V0ZUNoYW5nZS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVTdGF0ZVN0b3JhZ2UoKTtcbiAgICAgIH0pKTtcbiAgICB9XG4gIH1cblxuICBnZXQgc3RhdGUoKTogT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50U3RhdGVDbGFzcyB7XG4gICAgcmV0dXJuIHRoaXMuY29tcG9uZW50U3RhdGVTZXJ2aWNlLnN0YXRlO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuYWRkQWN0aXZhdGVDaGlsZEd1YXJkKCk7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZCh0aGlzLm9hdHRyKSkge1xuICAgICAgdGhpcy5vYXR0ciA9ICh0aGlzLnRpdGxlIHx8ICcnKSArIHRoaXMubW9kZTtcbiAgICAgIGNvbnNvbGUud2Fybignby1mb3JtLWxheW91dC1tYW5hZ2VyIG11c3QgaGF2ZSBhbiB1bmlxdWUgYXR0cicpO1xuICAgIH1cbiAgICB0aGlzLm9Gb3JtTGF5b3V0TWFuYWdlclNlcnZpY2UucmVnaXN0ZXJGb3JtTGF5b3V0TWFuYWdlcih0aGlzKTtcbiAgICBpZiAodGhpcy5zdG9yZVN0YXRlKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudFN0YXRlU2VydmljZS5pbml0aWFsaXplKHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5lbFJlZikge1xuICAgICAgICB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCd0aXRsZScpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgdGhpcy5vRm9ybUxheW91dE1hbmFnZXJTZXJ2aWNlLnJlbW92ZUZvcm1MYXlvdXRNYW5hZ2VyKHRoaXMpO1xuICAgIHRoaXMuZGVzdHJveUFjdGl2YXRlQ2hpbGRHdWFyZCgpO1xuICB9XG5cbiAgcHVibGljIGdldEF0dHJpYnV0ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm9hdHRyO1xuICB9XG5cbiAgcHVibGljIGdldENvbXBvbmVudEtleSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50XycgKyB0aGlzLm9hdHRyO1xuICB9XG5cbiAgcHVibGljIGdldFJvdXRlS2V5KCk6IHN0cmluZyB7XG4gICAgbGV0IHJvdXRlID0gdGhpcy5yb3V0ZXIudXJsO1xuICAgIHRoaXMuYWN0Um91dGUucGFyYW1zLnN1YnNjcmliZShwYXJhbXMgPT4ge1xuICAgICAgT2JqZWN0LmtleXMocGFyYW1zKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIHJvdXRlID0gcm91dGUucmVwbGFjZShwYXJhbXNba2V5XSwga2V5KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiByb3V0ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXREYXRhVG9TdG9yZSgpOiBhbnkge1xuICAgIGNvbnN0IGNvbXBSZWYgPSB0aGlzLmdldExheW91dE1vZGVDb21wb25lbnQoKTtcbiAgICByZXR1cm4gVXRpbC5pc0RlZmluZWQoY29tcFJlZikgPyBjb21wUmVmLmdldERhdGFUb1N0b3JlKCkgOiB7fTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpiZWZvcmV1bmxvYWQnLCBbXSlcbiAgcHVibGljIGJlZm9yZXVubG9hZEhhbmRsZXIoKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVTdGF0ZVN0b3JhZ2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRMYWJlbEZyb21VcmxQYXJhbXModXJsUGFyYW1zOiBvYmplY3QpOiBzdHJpbmcge1xuICAgIGxldCBsYWJlbCA9ICcnO1xuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh1cmxQYXJhbXMpO1xuICAgIGtleXMuZm9yRWFjaCgocGFyYW0sIGkpID0+IHtcbiAgICAgIGxhYmVsICs9IHVybFBhcmFtc1twYXJhbV0gKyAoKGkgPCBrZXlzLmxlbmd0aCAtIDEpID8gdGhpcy5zZXBhcmF0b3IgOiAnJyk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGxhYmVsO1xuICB9XG5cbiAgcHVibGljIGdldEZvcm1EYXRhRnJvbUxhYmVsQ29sdW1ucyhkYXRhOiBhbnkpIHtcbiAgICBjb25zdCBmb3JtRGF0YSA9IHt9O1xuICAgIE9iamVjdC5rZXlzKGRhdGEpLmZvckVhY2goeCA9PiB7XG4gICAgICBpZiAodGhpcy5sYWJlbENvbHNBcnJheS5pbmRleE9mKHgpID4gLTEpIHtcbiAgICAgICAgZm9ybURhdGFbeF0gPSBkYXRhW3hdO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBmb3JtRGF0YTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRBY3RpdmF0ZUNoaWxkR3VhcmQoKTogdm9pZCB7XG4gICAgY29uc3Qgcm91dGVDb25maWcgPSB0aGlzLmdldFBhcmVudEFjdFJvdXRlUm91dGUoKTtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQocm91dGVDb25maWcpKSB7XG4gICAgICBjb25zdCBjYW5BY3RpdmF0ZUNoaWxkQXJyYXkgPSAocm91dGVDb25maWcuY2FuQWN0aXZhdGVDaGlsZCB8fCBbXSk7XG4gICAgICBsZXQgcHJldmlvdXNseUFkZGVkID0gZmFsc2U7XG4gICAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gY2FuQWN0aXZhdGVDaGlsZEFycmF5Lmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGd1YXJkQ2hpbGQgPSB0aGlzLmluamVjdG9yLmdldChDYW5BY3RpdmF0ZUZvcm1MYXlvdXRDaGlsZEd1YXJkKTtcbiAgICAgICAgcHJldmlvdXNseUFkZGVkID0gKGNhbkFjdGl2YXRlQ2hpbGRBcnJheVtpXSA9PT0gZ3VhcmRDaGlsZC5jb25zdHJ1Y3Rvcik7XG4gICAgICAgIGlmIChwcmV2aW91c2x5QWRkZWQpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKCFwcmV2aW91c2x5QWRkZWQpIHtcbiAgICAgICAgdGhpcy5hZGRpbmdHdWFyZCA9IHRydWU7XG4gICAgICAgIGNhbkFjdGl2YXRlQ2hpbGRBcnJheS5wdXNoKENhbkFjdGl2YXRlRm9ybUxheW91dENoaWxkR3VhcmQpO1xuICAgICAgICByb3V0ZUNvbmZpZy5jYW5BY3RpdmF0ZUNoaWxkID0gY2FuQWN0aXZhdGVDaGlsZEFycmF5O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBkZXN0cm95QWN0aXZhdGVDaGlsZEd1YXJkKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5hZGRpbmdHdWFyZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm9Gb3JtTGF5b3V0TWFuYWdlclNlcnZpY2UuYWN0aXZlRm9ybUxheW91dE1hbmFnZXIgPSB1bmRlZmluZWQ7XG4gICAgY29uc3Qgcm91dGVDb25maWcgPSB0aGlzLmdldFBhcmVudEFjdFJvdXRlUm91dGUoKTtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQocm91dGVDb25maWcpKSB7XG4gICAgICBmb3IgKGxldCBpID0gKHJvdXRlQ29uZmlnLmNhbkFjdGl2YXRlQ2hpbGQgfHwgW10pLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIGNvbnN0IGd1YXJkQ2hpbGQgPSB0aGlzLmluamVjdG9yLmdldChDYW5BY3RpdmF0ZUZvcm1MYXlvdXRDaGlsZEd1YXJkKTtcbiAgICAgICAgaWYgKHJvdXRlQ29uZmlnLmNhbkFjdGl2YXRlQ2hpbGRbaV0gPT09IGd1YXJkQ2hpbGQuY29uc3RydWN0b3IpIHtcbiAgICAgICAgICByb3V0ZUNvbmZpZy5jYW5BY3RpdmF0ZUNoaWxkLnNwbGljZShpLCAxKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpc0RpYWxvZ01vZGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubW9kZSA9PT0gT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50LkRJQUxPR19NT0RFO1xuICB9XG5cbiAgcHVibGljIGlzVGFiTW9kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlID09PSBPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnQuVEFCX01PREU7XG4gIH1cblxuICBwdWJsaWMgaXNTcGxpdFBhbmVNb2RlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm1vZGUgPT09IE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudC5TUExJVF9QQU5FX01PREU7XG4gIH1cblxuICBwdWJsaWMgYWRkRGV0YWlsQ29tcG9uZW50KGNoaWxkUm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHVybDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgbmV3RGV0YWlsQ29tcDogRm9ybUxheW91dERldGFpbENvbXBvbmVudERhdGEgPSB7XG4gICAgICBwYXJhbXM6IGNoaWxkUm91dGUucGFyYW1zLFxuICAgICAgcXVlcnlQYXJhbXM6IGNoaWxkUm91dGUucXVlcnlQYXJhbXMsXG4gICAgICB1cmxTZWdtZW50czogY2hpbGRSb3V0ZS51cmwsXG4gICAgICBjb21wb25lbnQ6IGNoaWxkUm91dGUucm91dGVDb25maWcuY29tcG9uZW50LFxuICAgICAgdXJsOiB1cmwsXG4gICAgICBpZDogVXRpbC5yYW5kb21OdW1iZXIoKS50b1N0cmluZygpLFxuICAgICAgbGFiZWw6ICcnLFxuICAgICAgaW5uZXJGb3Jtc0luZm86IHt9LFxuICAgICAgaW5zZXJ0aW9uTW9kZTogY2hpbGRSb3V0ZS5xdWVyeVBhcmFtc1tDb2Rlcy5JTlNFUlRJT05fTU9ERV0gPT09ICd0cnVlJ1xuICAgIH07XG4gICAgaWYgKHRoaXMuaXNEaWFsb2dNb2RlKCkpIHtcbiAgICAgIHRoaXMub3BlbkZvcm1MYXlvdXREaWFsb2cobmV3RGV0YWlsQ29tcCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGNvbXBSZWYgPSB0aGlzLmdldExheW91dE1vZGVDb21wb25lbnQoKTtcbiAgICAgIGlmIChVdGlsLmlzRGVmaW5lZChjb21wUmVmKSkge1xuICAgICAgICBjb21wUmVmLm9wZW5EZXRhaWwobmV3RGV0YWlsQ29tcCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNsb3NlRGV0YWlsKG9wdGlvbnM/OiBGb3JtTGF5b3V0Q2xvc2VEZXRhaWxPcHRpb25zKTogdm9pZCB7XG4gICAgY29uc3QgY29tcFJlZiA9IHRoaXMuZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZChjb21wUmVmKSkge1xuICAgICAgY29tcFJlZi5jbG9zZURldGFpbChvcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY2xvc2VEZXRhaWxzKGRldGFpbHNEYXRhOiBhbnlbXSA9IFtdLCBvcHRpb25zPzogRm9ybUxheW91dENsb3NlRGV0YWlsT3B0aW9ucyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzVGFiTW9kZSgpICYmIFV0aWwuaXNEZWZpbmVkKHRoaXMub1RhYkdyb3VwKSkge1xuICAgICAgdGhpcy5vVGFiR3JvdXAuY2xvc2VEZXRhaWxzKGRldGFpbHNEYXRhLCBvcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3BlbkZvcm1MYXlvdXREaWFsb2coZGV0YWlsQ29tcDogRm9ybUxheW91dERldGFpbENvbXBvbmVudERhdGEpOiB2b2lkIHtcbiAgICBjb25zdCBjc3NjbGFzcyA9IFsnby1mb3JtLWxheW91dC1kaWFsb2ctb3ZlcmxheSddO1xuICAgIGlmICh0aGlzLmRpYWxvZ0NsYXNzKSB7XG4gICAgICBjc3NjbGFzcy5wdXNoKHRoaXMuZGlhbG9nQ2xhc3MpO1xuICAgIH1cblxuICAgIGNvbnN0IGRpYWxvZ09wdGlvbnMgPSAodGhpcy5kaWFsb2dPcHRpb25zIHx8IHt9KTtcblxuICAgIGNvbnN0IGRpYWxvZ0NvbmZpZzogTWF0RGlhbG9nQ29uZmlnID0ge1xuICAgICAgZGF0YToge1xuICAgICAgICBkYXRhOiBkZXRhaWxDb21wLFxuICAgICAgICBsYXlvdXRNYW5hZ2VyQ29tcG9uZW50OiB0aGlzLFxuICAgICAgICB0aXRsZTogKHRoaXMudGl0bGUgfHwgZGlhbG9nT3B0aW9ucy50aXRsZSksXG4gICAgICAgIGRpYWxvZ1RpdGxlU2VwYXJhdG9yOiB0aGlzLmRpYWxvZ1RpdGxlU2VwYXJhdG9yXG4gICAgICB9LFxuICAgICAgd2lkdGg6IGRpYWxvZ09wdGlvbnMud2lkdGggfHwgdGhpcy5kaWFsb2dXaWR0aCxcbiAgICAgIG1pbldpZHRoOiBkaWFsb2dPcHRpb25zLm1pbldpZHRoIHx8IHRoaXMuZGlhbG9nTWluV2lkdGgsXG4gICAgICBtYXhXaWR0aDogZGlhbG9nT3B0aW9ucy5tYXhXaWR0aCB8fCB0aGlzLmRpYWxvZ01heFdpZHRoLFxuICAgICAgaGVpZ2h0OiBkaWFsb2dPcHRpb25zLmhlaWdodCB8fCB0aGlzLmRpYWxvZ0hlaWdodCxcbiAgICAgIG1pbkhlaWdodDogZGlhbG9nT3B0aW9ucy5taW5IZWlnaHQgfHwgdGhpcy5kaWFsb2dNaW5IZWlnaHQsXG4gICAgICBtYXhIZWlnaHQ6IGRpYWxvZ09wdGlvbnMubWF4SGVpZ2h0IHx8IHRoaXMuZGlhbG9nTWF4SGVpZ2h0LFxuICAgICAgZGlzYWJsZUNsb3NlOiBkaWFsb2dPcHRpb25zLmRpc2FibGVDbG9zZSB8fCB0cnVlLFxuICAgICAgcGFuZWxDbGFzczogZGlhbG9nT3B0aW9ucy5jbGFzcyB8fCBjc3NjbGFzc1xuICAgIH07XG5cbiAgICBpZiAodGhpcy5kaWFsb2dPcHRpb25zKSB7XG4gICAgICBkaWFsb2dDb25maWcuY2xvc2VPbk5hdmlnYXRpb24gPSB0aGlzLmRpYWxvZ09wdGlvbnMuY2xvc2VPbk5hdmlnYXRpb247XG4gICAgICBkaWFsb2dDb25maWcuYmFja2Ryb3BDbGFzcyA9IHRoaXMuZGlhbG9nT3B0aW9ucy5iYWNrZHJvcENsYXNzO1xuICAgICAgZGlhbG9nQ29uZmlnLnBvc2l0aW9uID0gdGhpcy5kaWFsb2dPcHRpb25zLnBvc2l0aW9uO1xuICAgICAgZGlhbG9nQ29uZmlnLmRpc2FibGVDbG9zZSA9IHRoaXMuZGlhbG9nT3B0aW9ucy5kaXNhYmxlQ2xvc2U7XG4gICAgfVxuXG4gICAgdGhpcy5kaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKE9Gb3JtTGF5b3V0RGlhbG9nQ29tcG9uZW50LCBkaWFsb2dDb25maWcpO1xuICAgIHRoaXMuZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLm1hcmtGb3JVcGRhdGUpIHtcbiAgICAgICAgdGhpcy51cGRhdGVJZk5lZWRlZCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZWxvYWRNYWluQ29tcG9uZW50cygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldEZvcm1DYWNoZURhdGEoKTogRm9ybUxheW91dERldGFpbENvbXBvbmVudERhdGEge1xuICAgIGNvbnN0IGNvbXBSZWYgPSB0aGlzLmdldExheW91dE1vZGVDb21wb25lbnQoKTtcbiAgICByZXR1cm4gVXRpbC5pc0RlZmluZWQoY29tcFJlZikgPyBjb21wUmVmLmdldEZvcm1DYWNoZURhdGEoKSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHB1YmxpYyBzZXRNb2RpZmllZFN0YXRlKGZvcm1BdHRyOiBzdHJpbmcsIG1vZGlmaWVkOiBib29sZWFuLCBjb25maXJtRXhpdDogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IGNvbXBSZWYgPSB0aGlzLmdldExheW91dE1vZGVDb21wb25lbnQoKTtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQoY29tcFJlZikpIHtcbiAgICAgIGNvbXBSZWYuc2V0TW9kaWZpZWRTdGF0ZShmb3JtQXR0ciwgbW9kaWZpZWQsIGNvbmZpcm1FeGl0KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0TGFiZWxGcm9tRGF0YShkYXRhOiBhbnkpOiBzdHJpbmcge1xuICAgIGxldCBsYWJlbCA9ICcnO1xuICAgIGNvbnN0IGlzRGF0YURlZmluZWQgPSBVdGlsLmlzRGVmaW5lZChkYXRhKTtcbiAgICBpZiAoaXNEYXRhRGVmaW5lZCAmJiBkYXRhLmhhc093blByb3BlcnR5KCduZXdfdGFiX3RpdGxlJykpIHtcbiAgICAgIGxhYmVsID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldChkYXRhLm5ld190YWJfdGl0bGUpO1xuICAgIH0gZWxzZSBpZiAoaXNEYXRhRGVmaW5lZCAmJiB0aGlzLmxhYmVsQ29sc0FycmF5Lmxlbmd0aCAhPT0gMCkge1xuICAgICAgdGhpcy5sYWJlbENvbHNBcnJheS5mb3JFYWNoKChjb2wsIGlkeCkgPT4ge1xuICAgICAgICBpZiAoZGF0YVtjb2xdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBsYWJlbCArPSBkYXRhW2NvbF0gKyAoKGlkeCA8IHRoaXMubGFiZWxDb2xzQXJyYXkubGVuZ3RoIC0gMSkgPyB0aGlzLnNlcGFyYXRvciA6ICcnKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBsYWJlbDtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVOYXZpZ2F0aW9uKGRhdGE6IGFueSwga2V5c1ZhbHVlczogYW55LCBpbnNlcnRpb25Nb2RlOiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3QgY29tcFJlZiA9IHRoaXMuZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZChjb21wUmVmKSkge1xuICAgICAgY29tcFJlZi51cGRhdGVOYXZpZ2F0aW9uKGRhdGEsIGtleXNWYWx1ZXMsIGluc2VydGlvbk1vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVBY3RpdmVEYXRhKGRhdGE6IGFueSkge1xuICAgIGNvbnN0IGNvbXBSZWYgPSB0aGlzLmdldExheW91dE1vZGVDb21wb25lbnQoKTtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQoY29tcFJlZikpIHtcbiAgICAgIGNvbXBSZWYudXBkYXRlQWN0aXZlRGF0YShkYXRhKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0Um91dGVPZkFjdGl2ZUl0ZW0oKTogYW55W10ge1xuICAgIGNvbnN0IGNvbXBSZWYgPSB0aGlzLmdldExheW91dE1vZGVDb21wb25lbnQoKTtcbiAgICByZXR1cm4gVXRpbC5pc0RlZmluZWQoY29tcFJlZikgPyBjb21wUmVmLmdldFJvdXRlT2ZBY3RpdmVJdGVtKCkgOiBbXTtcbiAgfVxuXG4gIHB1YmxpYyBpc01haW5Db21wb25lbnQoY29tcDogSUxheW91dE1hbmFnZXJDb21wb25lbnQpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5pc0RpYWxvZ01vZGUoKSkge1xuICAgICAgcmV0dXJuICFjb21wLm9Gb3JtTGF5b3V0RGlhbG9nO1xuICAgIH1cbiAgICBjb25zdCBjb21wUmVmID0gdGhpcy5nZXRMYXlvdXRNb2RlQ29tcG9uZW50KCk7XG4gICAgcmV0dXJuIFV0aWwuaXNEZWZpbmVkKGNvbXBSZWYpICYmIGNvbXBSZWYuaXNNYWluQ29tcG9uZW50KGNvbXApO1xuICB9XG5cbiAgcHVibGljIGdldFJvdXRlRm9yQ29tcG9uZW50KGNvbXA6IElMYXlvdXRNYW5hZ2VyQ29tcG9uZW50KTogYW55W10ge1xuICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgIGlmICh0aGlzLnBhcmVudEZvcm1MYXlvdXRNYW5hZ2VyKSB7XG4gICAgICBjb25zdCBwYXJlbnRSb3V0ZSA9IHRoaXMucGFyZW50Rm9ybUxheW91dE1hbmFnZXIuZ2V0Um91dGVGb3JDb21wb25lbnQoY29tcCk7XG4gICAgICBpZiAocGFyZW50Um91dGUgJiYgcGFyZW50Um91dGUubGVuZ3RoID4gMCkge1xuICAgICAgICByZXN1bHQucHVzaCguLi5wYXJlbnRSb3V0ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICghdGhpcy5pc01haW5Db21wb25lbnQoY29tcCkpIHtcbiAgICAgIGNvbnN0IGFjdGl2ZVJvdXRlID0gdGhpcy5nZXRSb3V0ZU9mQWN0aXZlSXRlbSgpO1xuICAgICAgaWYgKGFjdGl2ZVJvdXRlICYmIGFjdGl2ZVJvdXRlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmVzdWx0LnB1c2goLi4uYWN0aXZlUm91dGUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHVibGljIHNldEFzQWN0aXZlRm9ybUxheW91dE1hbmFnZXIoKTogdm9pZCB7XG4gICAgdGhpcy5vRm9ybUxheW91dE1hbmFnZXJTZXJ2aWNlLmFjdGl2ZUZvcm1MYXlvdXRNYW5hZ2VyID0gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyByZWxvYWRNYWluQ29tcG9uZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLm9uVHJpZ2dlclVwZGF0ZS5lbWl0KCk7XG4gIH1cblxuICBwdWJsaWMgYWxsb3dUb1VwZGF0ZU5hdmlnYXRpb24oZm9ybUF0dHI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5pc1RhYk1vZGUoKSAmJiBVdGlsLmlzRGVmaW5lZCh0aGlzLm9UYWJHcm91cCkgJiYgVXRpbC5pc0RlZmluZWQodGhpcy50aXRsZURhdGFPcmlnaW4pKSA/XG4gICAgICB0aGlzLnRpdGxlRGF0YU9yaWdpbiA9PT0gZm9ybUF0dHIgOlxuICAgICAgdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVTdGF0ZVN0b3JhZ2UoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmxvY2FsU3RvcmFnZVNlcnZpY2UgfHwgIXRoaXMuc3RvcmVTdGF0ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBpc1RhYk1vZGUgPSB0aGlzLmlzVGFiTW9kZSgpICYmIFV0aWwuaXNEZWZpbmVkKHRoaXMub1RhYkdyb3VwKTtcbiAgICBjb25zdCBpc1NwbGl0UGFuZU1vZGUgPSB0aGlzLmlzU3BsaXRQYW5lTW9kZSgpICYmIFV0aWwuaXNEZWZpbmVkKHRoaXMub1NwbGl0UGFuZSk7XG4gICAgaWYgKGlzVGFiTW9kZSB8fCBpc1NwbGl0UGFuZU1vZGUpIHtcbiAgICAgIHRoaXMubG9jYWxTdG9yYWdlU2VydmljZS51cGRhdGVDb21wb25lbnRTdG9yYWdlKHRoaXMsIHRoaXMuZ2V0Um91dGVLZXkoKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRQYXJlbnRBY3RSb3V0ZVJvdXRlKCk6IFJvdXRlIHtcbiAgICBsZXQgYWN0Um91dGUgPSB0aGlzLmFjdFJvdXRlO1xuICAgIHdoaWxlIChhY3RSb3V0ZS5wYXJlbnQgIT09IHVuZGVmaW5lZCAmJiBhY3RSb3V0ZS5wYXJlbnQgIT09IG51bGwpIHtcbiAgICAgIGlmIChhY3RSb3V0ZS5yb3V0ZUNvbmZpZy5jaGlsZHJlbiB8fCBhY3RSb3V0ZS5yb3V0ZUNvbmZpZy5sb2FkQ2hpbGRyZW4pIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBhY3RSb3V0ZSA9IGFjdFJvdXRlLnBhcmVudDtcbiAgICB9XG4gICAgcmV0dXJuIGFjdFJvdXRlLnJvdXRlQ29uZmlnO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZUlmTmVlZGVkKCkge1xuICAgIGlmICh0aGlzLm1hcmtGb3JVcGRhdGUpIHtcbiAgICAgIHRoaXMubWFya0ZvclVwZGF0ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5vblRyaWdnZXJVcGRhdGUuZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRQYXJhbXMoKTogYW55IHtcbiAgICBjb25zdCBjb21wUmVmID0gdGhpcy5nZXRMYXlvdXRNb2RlQ29tcG9uZW50KCk7XG4gICAgcmV0dXJuIFV0aWwuaXNEZWZpbmVkKGNvbXBSZWYpID8gY29tcFJlZi5nZXRQYXJhbXMoKSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHNldCBtYXJrRm9yVXBkYXRlKGFyZzogYm9vbGVhbikge1xuICAgIHRoaXMuX21hcmtGb3JVcGRhdGUgPSBhcmc7XG4gICAgaWYgKHRoaXMuaXNTcGxpdFBhbmVNb2RlKCkpIHtcbiAgICAgIHRoaXMudXBkYXRlSWZOZWVkZWQoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgbWFya0ZvclVwZGF0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbWFya0ZvclVwZGF0ZTtcbiAgfVxuXG4gIGdldCBpZ25vcmVDYW5EZWFjdGl2YXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5pc1NwbGl0UGFuZU1vZGUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRMYXlvdXRNb2RlQ29tcG9uZW50KCk6IE9Gb3JtTGF5b3V0TWFuYWdlck1vZGUge1xuICAgIGxldCBjb21wUmVmO1xuICAgIGlmICh0aGlzLmlzVGFiTW9kZSgpICYmIFV0aWwuaXNEZWZpbmVkKHRoaXMub1RhYkdyb3VwKSkge1xuICAgICAgY29tcFJlZiA9IHRoaXMub1RhYkdyb3VwO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc0RpYWxvZ01vZGUoKSAmJiBVdGlsLmlzRGVmaW5lZCh0aGlzLmRpYWxvZ1JlZikpIHtcbiAgICAgIGNvbXBSZWYgPSB0aGlzLmRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNTcGxpdFBhbmVNb2RlKCkgJiYgVXRpbC5pc0RlZmluZWQodGhpcy5vU3BsaXRQYW5lKSkge1xuICAgICAgY29tcFJlZiA9IHRoaXMub1NwbGl0UGFuZTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbXBSZWY7XG4gIH1cblxuICBhbGxvd05hdmlnYXRpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmlzVGFiTW9kZSgpO1xuICB9XG5cbiAgcHVibGljIGNhbkFkZERldGFpbENvbXBvbmVudCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBjb21wUmVmID0gdGhpcy5nZXRMYXlvdXRNb2RlQ29tcG9uZW50KCk7XG4gICAgcmV0dXJuIFV0aWwud3JhcEludG9PYnNlcnZhYmxlKFV0aWwuaXNEZWZpbmVkKGNvbXBSZWYpID8gY29tcFJlZi5jYW5BZGREZXRhaWxDb21wb25lbnQoKSA6IHRydWUpO1xuICB9XG5cbiAgcHVibGljIGhhc1RvQ29uZmlybUV4aXQoZGF0YTogRm9ybUxheW91dERldGFpbENvbXBvbmVudERhdGEsIG9wdGlvbnM/OiBGb3JtTGF5b3V0Q2xvc2VEZXRhaWxPcHRpb25zKTogYm9vbGVhbiB7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKG9wdGlvbnMpICYmIG9wdGlvbnMuZXhpdFdpdGhvdXRDb25maXJtYXRpb24pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgZm9ybXNBdHRyID0gT2JqZWN0LmtleXMoZGF0YS5pbm5lckZvcm1zSW5mbyk7XG4gICAgbGV0IHJlc3VsdDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIGlmIChmb3Jtc0F0dHIubGVuZ3RoID4gMCkge1xuICAgICAgZm9ybXNBdHRyLmZvckVhY2goZm9ybUF0dHIgPT4ge1xuICAgICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICAgIGNvbnN0IGZvcm1EYXRhID0gZGF0YS5pbm5lckZvcm1zSW5mb1tmb3JtQXR0cl07XG4gICAgICAgICAgcmVzdWx0ID0gZm9ybURhdGEuY29uZmlybU9uRXhpdCAmJiBmb3JtRGF0YS5tb2RpZmllZDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0SWRPZkFjdGl2ZUl0ZW0oKTogc3RyaW5nIHtcbiAgICBjb25zdCBjb21wUmVmID0gdGhpcy5nZXRMYXlvdXRNb2RlQ29tcG9uZW50KCk7XG4gICAgcmV0dXJuIFV0aWwuaXNEZWZpbmVkKGNvbXBSZWYpID8gYCR7dGhpcy5vYXR0cn0tJHtjb21wUmVmLmdldElkT2ZBY3RpdmVJdGVtKCl9LWAgOiAnJztcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwibW9kZVwiPlxuICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnQuVEFCX01PREVcIj5cbiAgICA8by1mb3JtLWxheW91dC10YWJncm91cCAjdGFiR3JvdXAgW3RpdGxlXT1cInRpdGxlXCIgKG9uTWFpblRhYlNlbGVjdGVkKT1cIm9uTWFpblRhYlNlbGVjdGVkLmVtaXQoJGV2ZW50KVwiXG4gICAgICAob25TZWxlY3RlZFRhYkNoYW5nZSk9XCJvblNlbGVjdGVkVGFiQ2hhbmdlLmVtaXQoJGV2ZW50KVwiIChvbkNsb3NlVGFiKT1cIm9uQ2xvc2VUYWIuZW1pdCgkZXZlbnQpXCJcbiAgICAgIFtvcHRpb25zXT1cInRhYkdyb3VwT3B0aW9uc1wiIFtzdHJldGNoLXRhYnNdPVwic3RyZXRjaFRhYnNcIj5cbiAgICAgIDxuZy1jb250ZW50ICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudEJsb2NrXCI+PC9uZy1jb250ZW50PlxuICAgIDwvby1mb3JtLWxheW91dC10YWJncm91cD5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50LlNQTElUX1BBTkVfTU9ERVwiPlxuICAgIDxvLWZvcm0tbGF5b3V0LXNwbGl0LXBhbmUgI3NwbGl0UGFuZSBbb3B0aW9uc109XCJzcGxpdFBhbmVPcHRpb25zXCI+XG4gICAgICA8bmctY29udGVudCAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRCbG9ja1wiPjwvbmctY29udGVudD5cbiAgICA8L28tZm9ybS1sYXlvdXQtc3BsaXQtcGFuZT5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50LkRJQUxPR19NT0RFXCI+XG4gICAgPG5nLWNvbnRlbnQgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50QmxvY2tcIj48L25nLWNvbnRlbnQ+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG5cblxuPG5nLXRlbXBsYXRlICNjb250ZW50QmxvY2s+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+Il19