@hmcts/ccd-case-ui-toolkit 5.0.19-angular11-upgrade → 5.0.22-angular11-upgrade

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 (77) hide show
  1. package/bundles/hmcts-ccd-case-ui-toolkit.umd.js +4948 -4722
  2. package/bundles/hmcts-ccd-case-ui-toolkit.umd.js.map +1 -1
  3. package/bundles/hmcts-ccd-case-ui-toolkit.umd.min.js +1 -1
  4. package/bundles/hmcts-ccd-case-ui-toolkit.umd.min.js.map +1 -1
  5. package/esm2015/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.js +6 -6
  6. package/esm2015/lib/shared/components/case-editor/case-editor.module.js +4 -1
  7. package/esm2015/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.js +5 -2
  8. package/esm2015/lib/shared/components/case-viewer/services/case.resolver.js +20 -26
  9. package/esm2015/lib/shared/components/palette/base-field/field-read.component.js +5 -2
  10. package/esm2015/lib/shared/components/palette/base-field/field-write.component.js +1 -1
  11. package/esm2015/lib/shared/components/palette/collection/write-collection-field.component.js +69 -43
  12. package/esm2015/lib/shared/components/palette/complex/read-complex-field.component.js +5 -3
  13. package/esm2015/lib/shared/components/palette/history/event-log/event-log-details.component.js +41 -47
  14. package/esm2015/lib/shared/components/palette/index.js +2 -1
  15. package/esm2015/lib/shared/components/palette/judicial-user/index.js +3 -0
  16. package/esm2015/lib/shared/components/palette/judicial-user/read-judicial-user-field.component.js +48 -0
  17. package/esm2015/lib/shared/components/palette/judicial-user/write-judicial-user-field.component.js +127 -0
  18. package/esm2015/lib/shared/components/palette/palette.module.js +18 -7
  19. package/esm2015/lib/shared/components/palette/palette.service.js +5 -1
  20. package/esm2015/lib/shared/components/palette/utils/is-compound.pipe.js +2 -2
  21. package/esm2015/lib/shared/components/search-filters/search-filters.component.js +2 -6
  22. package/esm2015/lib/shared/components/search-filters/search-filters.module.js +7 -3
  23. package/esm2015/lib/shared/components/search-result/search-result.component.js +101 -120
  24. package/esm2015/lib/shared/components/search-result/search-result.module.js +8 -4
  25. package/esm2015/lib/shared/domain/definition/field-type-enum.model.js +1 -1
  26. package/esm2015/lib/shared/domain/jurisdiction/index.js +2 -0
  27. package/esm2015/lib/shared/domain/jurisdiction/judicial-user.model.js +2 -0
  28. package/esm2015/lib/shared/services/case-fields/index.js +2 -1
  29. package/esm2015/lib/shared/services/form/form-value.service.js +6 -2
  30. package/esm2015/lib/shared/services/jurisdiction/jurisdiction.service.js +14 -5
  31. package/esm2015/public-api.js +1 -2
  32. package/fesm2015/hmcts-ccd-case-ui-toolkit.js +6572 -6380
  33. package/fesm2015/hmcts-ccd-case-ui-toolkit.js.map +1 -1
  34. package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts.map +1 -1
  35. package/lib/shared/components/case-editor/case-editor.module.d.ts.map +1 -1
  36. package/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.d.ts +3 -2
  37. package/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.d.ts.map +1 -1
  38. package/lib/shared/components/case-viewer/services/case.resolver.d.ts +3 -4
  39. package/lib/shared/components/case-viewer/services/case.resolver.d.ts.map +1 -1
  40. package/lib/shared/components/palette/base-field/field-read.component.d.ts.map +1 -1
  41. package/lib/shared/components/palette/base-field/field-write.component.d.ts.map +1 -1
  42. package/lib/shared/components/palette/collection/write-collection-field.component.d.ts +5 -4
  43. package/lib/shared/components/palette/collection/write-collection-field.component.d.ts.map +1 -1
  44. package/lib/shared/components/palette/complex/read-complex-field.component.d.ts.map +1 -1
  45. package/lib/shared/components/palette/index.d.ts +1 -0
  46. package/lib/shared/components/palette/index.d.ts.map +1 -1
  47. package/lib/shared/components/palette/judicial-user/index.d.ts +3 -0
  48. package/lib/shared/components/palette/judicial-user/index.d.ts.map +1 -0
  49. package/lib/shared/components/palette/judicial-user/read-judicial-user-field.component.d.ts +17 -0
  50. package/lib/shared/components/palette/judicial-user/read-judicial-user-field.component.d.ts.map +1 -0
  51. package/lib/shared/components/palette/judicial-user/write-judicial-user-field.component.d.ts +32 -0
  52. package/lib/shared/components/palette/judicial-user/write-judicial-user-field.component.d.ts.map +1 -0
  53. package/lib/shared/components/palette/palette.module.d.ts +62 -59
  54. package/lib/shared/components/palette/palette.module.d.ts.map +1 -1
  55. package/lib/shared/components/palette/palette.service.d.ts.map +1 -1
  56. package/lib/shared/components/search-result/search-result.component.d.ts +14 -29
  57. package/lib/shared/components/search-result/search-result.component.d.ts.map +1 -1
  58. package/lib/shared/components/search-result/search-result.module.d.ts +2 -1
  59. package/lib/shared/components/search-result/search-result.module.d.ts.map +1 -1
  60. package/lib/shared/domain/definition/field-type-enum.model.d.ts +1 -1
  61. package/lib/shared/domain/definition/field-type-enum.model.d.ts.map +1 -1
  62. package/lib/shared/domain/jurisdiction/index.d.ts +2 -0
  63. package/lib/shared/domain/jurisdiction/index.d.ts.map +1 -0
  64. package/lib/shared/domain/jurisdiction/judicial-user.model.d.ts +13 -0
  65. package/lib/shared/domain/jurisdiction/judicial-user.model.d.ts.map +1 -0
  66. package/lib/shared/services/case-fields/index.d.ts +1 -0
  67. package/lib/shared/services/case-fields/index.d.ts.map +1 -1
  68. package/lib/shared/services/form/form-value.service.d.ts +1 -1
  69. package/lib/shared/services/form/form-value.service.d.ts.map +1 -1
  70. package/lib/shared/services/jurisdiction/jurisdiction.service.d.ts +10 -4
  71. package/lib/shared/services/jurisdiction/jurisdiction.service.d.ts.map +1 -1
  72. package/package.json +1 -1
  73. package/public-api.d.ts +0 -1
  74. package/public-api.d.ts.map +1 -1
  75. package/esm2015/lib/case-ui-toolkit.module.js +0 -15
  76. package/lib/case-ui-toolkit.module.d.ts +0 -7
  77. package/lib/case-ui-toolkit.module.d.ts.map +0 -1
@@ -9,6 +9,7 @@ import { BrowserService } from '../../services/browser/browser.service';
9
9
  import { SearchResultViewItemComparatorFactory } from '../../services/search-result/sorting/search-result-view-item-comparator-factory';
10
10
  import { ActivityModule } from '../activity/activity.module';
11
11
  import { PaginationModule } from '../pagination/pagination.module';
12
+ import { PaletteModule } from '../palette/palette.module';
12
13
  import { SearchResultComponent } from './search-result.component';
13
14
  import * as i0 from "@angular/core";
14
15
  export class SearchResultModule {
@@ -27,7 +28,8 @@ SearchResultModule.ɵinj = i0.ɵɵdefineInjector({ providers: [
27
28
  LabelSubstitutorModule,
28
29
  PipesModule,
29
30
  ActivityModule,
30
- PaginationModule
31
+ PaginationModule,
32
+ PaletteModule
31
33
  ]] });
32
34
  (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(SearchResultModule, { declarations: [SearchResultComponent], imports: [CommonModule,
33
35
  NgxPaginationModule,
@@ -37,7 +39,8 @@ SearchResultModule.ɵinj = i0.ɵɵdefineInjector({ providers: [
37
39
  LabelSubstitutorModule,
38
40
  PipesModule,
39
41
  ActivityModule,
40
- PaginationModule], exports: [SearchResultComponent] }); })();
42
+ PaginationModule,
43
+ PaletteModule], exports: [SearchResultComponent] }); })();
41
44
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SearchResultModule, [{
42
45
  type: NgModule,
43
46
  args: [{
@@ -50,7 +53,8 @@ SearchResultModule.ɵinj = i0.ɵɵdefineInjector({ providers: [
50
53
  LabelSubstitutorModule,
51
54
  PipesModule,
52
55
  ActivityModule,
53
- PaginationModule
56
+ PaginationModule,
57
+ PaletteModule
54
58
  ],
55
59
  declarations: [
56
60
  SearchResultComponent
@@ -64,4 +68,4 @@ SearchResultModule.ɵinj = i0.ɵɵdefineInjector({ providers: [
64
68
  ]
65
69
  }]
66
70
  }], null, null); })();
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXJlc3VsdC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvc2VhcmNoLXJlc3VsdC9zZWFyY2gtcmVzdWx0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBRS9GLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDeEUsT0FBTyxFQUFFLHFDQUFxQyxFQUFFLE1BQU0saUZBQWlGLENBQUM7QUFDeEksT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRW5FLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDOztBQXlCbEUsTUFBTSxPQUFPLGtCQUFrQjs7b0ZBQWxCLGtCQUFrQjtzREFBbEIsa0JBQWtCOzJEQUxsQjtRQUNULHFDQUFxQztRQUNyQyxjQUFjO0tBQ2YsWUFwQlE7WUFDUCxZQUFZO1lBQ1osbUJBQW1CO1lBQ25CLFlBQVk7WUFDWixXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLHNCQUFzQjtZQUN0QixXQUFXO1lBQ1gsY0FBYztZQUNkLGdCQUFnQjtTQUNqQjt3RkFZVSxrQkFBa0IsbUJBVjNCLHFCQUFxQixhQVhyQixZQUFZO1FBQ1osbUJBQW1CO1FBQ25CLFlBQVk7UUFDWixXQUFXO1FBQ1gsbUJBQW1CO1FBQ25CLHNCQUFzQjtRQUN0QixXQUFXO1FBQ1gsY0FBYztRQUNkLGdCQUFnQixhQU1oQixxQkFBcUI7dUZBT1osa0JBQWtCO2NBdkI5QixRQUFRO2VBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNQLFlBQVk7b0JBQ1osbUJBQW1CO29CQUNuQixZQUFZO29CQUNaLFdBQVc7b0JBQ1gsbUJBQW1CO29CQUNuQixzQkFBc0I7b0JBQ3RCLFdBQVc7b0JBQ1gsY0FBYztvQkFDZCxnQkFBZ0I7aUJBQ2pCO2dCQUNELFlBQVksRUFBRTtvQkFDWixxQkFBcUI7aUJBQ3RCO2dCQUNELE9BQU8sRUFBRTtvQkFDUCxxQkFBcUI7aUJBQ3RCO2dCQUNELFNBQVMsRUFBRTtvQkFDVCxxQ0FBcUM7b0JBQ3JDLGNBQWM7aUJBQ2Y7YUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTmd4UGFnaW5hdGlvbk1vZHVsZSB9IGZyb20gJ25neC1wYWdpbmF0aW9uJztcbmltcG9ydCB7IExhYmVsU3Vic3RpdHV0b3JEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL3N1YnN0aXR1dG9yL2xhYmVsLXN1YnN0aXR1dG9yLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBMYWJlbFN1YnN0aXR1dG9yTW9kdWxlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9zdWJzdGl0dXRvci9sYWJlbC1zdWJzdGl0dXRvci5tb2R1bGUnO1xuaW1wb3J0IHsgQ2FzZVJlZmVyZW5jZVBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy9jYXNlLXJlZmVyZW5jZS9jYXNlLXJlZmVyZW5jZS5waXBlJztcbmltcG9ydCB7IFBpcGVzTW9kdWxlIH0gZnJvbSAnLi4vLi4vcGlwZXMvcGlwZXMubW9kdWxlJztcbmltcG9ydCB7IEJyb3dzZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYnJvd3Nlci9icm93c2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2VhcmNoUmVzdWx0Vmlld0l0ZW1Db21wYXJhdG9yRmFjdG9yeSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3NlYXJjaC1yZXN1bHQvc29ydGluZy9zZWFyY2gtcmVzdWx0LXZpZXctaXRlbS1jb21wYXJhdG9yLWZhY3RvcnknO1xuaW1wb3J0IHsgQWN0aXZpdHlNb2R1bGUgfSBmcm9tICcuLi9hY3Rpdml0eS9hY3Rpdml0eS5tb2R1bGUnO1xuaW1wb3J0IHsgUGFnaW5hdGlvbk1vZHVsZSB9IGZyb20gJy4uL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5tb2R1bGUnO1xuaW1wb3J0IHsgUGFsZXR0ZU1vZHVsZSB9IGZyb20gJy4uL3BhbGV0dGUvcGFsZXR0ZS5tb2R1bGUnO1xuaW1wb3J0IHsgU2VhcmNoUmVzdWx0Q29tcG9uZW50IH0gZnJvbSAnLi9zZWFyY2gtcmVzdWx0LmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTmd4UGFnaW5hdGlvbk1vZHVsZSxcbiAgICBSb3V0ZXJNb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBMYWJlbFN1YnN0aXR1dG9yTW9kdWxlLFxuICAgIFBpcGVzTW9kdWxlLFxuICAgIEFjdGl2aXR5TW9kdWxlLFxuICAgIFBhZ2luYXRpb25Nb2R1bGVcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgU2VhcmNoUmVzdWx0Q29tcG9uZW50XG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBTZWFyY2hSZXN1bHRDb21wb25lbnQsXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIFNlYXJjaFJlc3VsdFZpZXdJdGVtQ29tcGFyYXRvckZhY3RvcnksXG4gICAgQnJvd3NlclNlcnZpY2VcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBTZWFyY2hSZXN1bHRNb2R1bGUge31cbiJdfQ==
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXJlc3VsdC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvc2VhcmNoLXJlc3VsdC9zZWFyY2gtcmVzdWx0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBRS9GLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDeEUsT0FBTyxFQUFFLHFDQUFxQyxFQUFFLE1BQU0saUZBQWlGLENBQUM7QUFDeEksT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7QUEwQmxFLE1BQU0sT0FBTyxrQkFBa0I7O29GQUFsQixrQkFBa0I7c0RBQWxCLGtCQUFrQjsyREFMbEI7UUFDVCxxQ0FBcUM7UUFDckMsY0FBYztLQUNmLFlBckJRO1lBQ1AsWUFBWTtZQUNaLG1CQUFtQjtZQUNuQixZQUFZO1lBQ1osV0FBVztZQUNYLG1CQUFtQjtZQUNuQixzQkFBc0I7WUFDdEIsV0FBVztZQUNYLGNBQWM7WUFDZCxnQkFBZ0I7WUFDaEIsYUFBYTtTQUNkO3dGQVlVLGtCQUFrQixtQkFWM0IscUJBQXFCLGFBWnJCLFlBQVk7UUFDWixtQkFBbUI7UUFDbkIsWUFBWTtRQUNaLFdBQVc7UUFDWCxtQkFBbUI7UUFDbkIsc0JBQXNCO1FBQ3RCLFdBQVc7UUFDWCxjQUFjO1FBQ2QsZ0JBQWdCO1FBQ2hCLGFBQWEsYUFNYixxQkFBcUI7dUZBT1osa0JBQWtCO2NBeEI5QixRQUFRO2VBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNQLFlBQVk7b0JBQ1osbUJBQW1CO29CQUNuQixZQUFZO29CQUNaLFdBQVc7b0JBQ1gsbUJBQW1CO29CQUNuQixzQkFBc0I7b0JBQ3RCLFdBQVc7b0JBQ1gsY0FBYztvQkFDZCxnQkFBZ0I7b0JBQ2hCLGFBQWE7aUJBQ2Q7Z0JBQ0QsWUFBWSxFQUFFO29CQUNaLHFCQUFxQjtpQkFDdEI7Z0JBQ0QsT0FBTyxFQUFFO29CQUNQLHFCQUFxQjtpQkFDdEI7Z0JBQ0QsU0FBUyxFQUFFO29CQUNULHFDQUFxQztvQkFDckMsY0FBYztpQkFDZjthQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBOZ3hQYWdpbmF0aW9uTW9kdWxlIH0gZnJvbSAnbmd4LXBhZ2luYXRpb24nO1xuaW1wb3J0IHsgTGFiZWxTdWJzdGl0dXRvckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvc3Vic3RpdHV0b3IvbGFiZWwtc3Vic3RpdHV0b3IuZGlyZWN0aXZlJztcbmltcG9ydCB7IExhYmVsU3Vic3RpdHV0b3JNb2R1bGUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL3N1YnN0aXR1dG9yL2xhYmVsLXN1YnN0aXR1dG9yLm1vZHVsZSc7XG5pbXBvcnQgeyBDYXNlUmVmZXJlbmNlUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL2Nhc2UtcmVmZXJlbmNlL2Nhc2UtcmVmZXJlbmNlLnBpcGUnO1xuaW1wb3J0IHsgUGlwZXNNb2R1bGUgfSBmcm9tICcuLi8uLi9waXBlcy9waXBlcy5tb2R1bGUnO1xuaW1wb3J0IHsgQnJvd3NlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9icm93c2VyL2Jyb3dzZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTZWFyY2hSZXN1bHRWaWV3SXRlbUNvbXBhcmF0b3JGYWN0b3J5IH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc2VhcmNoLXJlc3VsdC9zb3J0aW5nL3NlYXJjaC1yZXN1bHQtdmlldy1pdGVtLWNvbXBhcmF0b3ItZmFjdG9yeSc7XG5pbXBvcnQgeyBBY3Rpdml0eU1vZHVsZSB9IGZyb20gJy4uL2FjdGl2aXR5L2FjdGl2aXR5Lm1vZHVsZSc7XG5pbXBvcnQgeyBQYWdpbmF0aW9uTW9kdWxlIH0gZnJvbSAnLi4vcGFnaW5hdGlvbi9wYWdpbmF0aW9uLm1vZHVsZSc7XG5pbXBvcnQgeyBQYWxldHRlTW9kdWxlIH0gZnJvbSAnLi4vcGFsZXR0ZS9wYWxldHRlLm1vZHVsZSc7XG5pbXBvcnQgeyBTZWFyY2hSZXN1bHRDb21wb25lbnQgfSBmcm9tICcuL3NlYXJjaC1yZXN1bHQuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBOZ3hQYWdpbmF0aW9uTW9kdWxlLFxuICAgIFJvdXRlck1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIExhYmVsU3Vic3RpdHV0b3JNb2R1bGUsXG4gICAgUGlwZXNNb2R1bGUsXG4gICAgQWN0aXZpdHlNb2R1bGUsXG4gICAgUGFnaW5hdGlvbk1vZHVsZSxcbiAgICBQYWxldHRlTW9kdWxlXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIFNlYXJjaFJlc3VsdENvbXBvbmVudFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgU2VhcmNoUmVzdWx0Q29tcG9uZW50LFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICBTZWFyY2hSZXN1bHRWaWV3SXRlbUNvbXBhcmF0b3JGYWN0b3J5LFxuICAgIEJyb3dzZXJTZXJ2aWNlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoUmVzdWx0TW9kdWxlIHt9XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtdHlwZS1lbnVtLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9kb21haW4vZGVmaW5pdGlvbi9maWVsZC10eXBlLWVudW0ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEZpZWxkVHlwZUVudW0gPVxuICAnVGV4dCdcbiAgfCAnVGV4dEFyZWEnXG4gIHwgJ1Bvc3Rjb2RlJ1xuICB8ICdOdW1iZXInXG4gIHwgJ1llc09yTm8nXG4gIHwgJ0RhdGUnXG4gIHwgJ0RhdGVUaW1lJ1xuICB8ICdFbWFpbCdcbiAgfCAnUGhvbmVVSydcbiAgfCAnTW9uZXlHQlAnXG4gIHwgJ0ZpeGVkTGlzdCdcbiAgfCAnRHluYW1pY0xpc3QnXG4gIHwgJ0ZpeGVkUmFkaW9MaXN0J1xuICB8ICdEeW5hbWljUmFkaW9MaXN0J1xuICB8ICdDb21wbGV4J1xuICB8ICdDb2xsZWN0aW9uJ1xuICB8ICdNdWx0aVNlbGVjdExpc3QnXG4gIHwgJ0RvY3VtZW50J1xuICB8ICdMYWJlbCdcbiAgfCAnQWRkcmVzc0dsb2JhbCdcbiAgfCAnQWRkcmVzc0dsb2JhbFVLJ1xuICB8ICdBZGRyZXNzVUsnXG4gIHwgJ0Nhc2VQYXltZW50SGlzdG9yeVZpZXdlcidcbiAgfCAnQ2FzZUhpc3RvcnlWaWV3ZXInXG4gIHwgJ09yZ2FuaXNhdGlvbidcbiAgfCAnV2F5c1RvUGF5JztcbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtdHlwZS1lbnVtLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9kb21haW4vZGVmaW5pdGlvbi9maWVsZC10eXBlLWVudW0ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEZpZWxkVHlwZUVudW0gPVxuICAnVGV4dCdcbiAgfCAnVGV4dEFyZWEnXG4gIHwgJ1Bvc3Rjb2RlJ1xuICB8ICdOdW1iZXInXG4gIHwgJ1llc09yTm8nXG4gIHwgJ0RhdGUnXG4gIHwgJ0RhdGVUaW1lJ1xuICB8ICdFbWFpbCdcbiAgfCAnUGhvbmVVSydcbiAgfCAnTW9uZXlHQlAnXG4gIHwgJ0ZpeGVkTGlzdCdcbiAgfCAnRHluYW1pY0xpc3QnXG4gIHwgJ0ZpeGVkUmFkaW9MaXN0J1xuICB8ICdEeW5hbWljUmFkaW9MaXN0J1xuICB8ICdDb21wbGV4J1xuICB8ICdDb2xsZWN0aW9uJ1xuICB8ICdNdWx0aVNlbGVjdExpc3QnXG4gIHwgJ0RvY3VtZW50J1xuICB8ICdMYWJlbCdcbiAgfCAnQWRkcmVzc0dsb2JhbCdcbiAgfCAnQWRkcmVzc0dsb2JhbFVLJ1xuICB8ICdBZGRyZXNzVUsnXG4gIHwgJ0Nhc2VQYXltZW50SGlzdG9yeVZpZXdlcidcbiAgfCAnQ2FzZUhpc3RvcnlWaWV3ZXInXG4gIHwgJ09yZ2FuaXNhdGlvbidcbiAgfCAnV2F5c1RvUGF5J1xuICB8ICdKdWRpY2lhbFVzZXJGaWVsZCc7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from './judicial-user.model';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2RvbWFpbi9qdXJpc2RpY3Rpb24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vanVkaWNpYWwtdXNlci5tb2RlbCc7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianVkaWNpYWwtdXNlci5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvZG9tYWluL2p1cmlzZGljdGlvbi9qdWRpY2lhbC11c2VyLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEp1ZGljaWFsVXNlck1vZGVsIHtcbiAgZW1haWxJZDogc3RyaW5nO1xuICBmdWxsTmFtZTogc3RyaW5nO1xuICBpZGFtSWQ6IHN0cmluZztcbiAgaXNKdWRnZTogc3RyaW5nO1xuICBpc01hZ2lzdHJhdGU6IHN0cmluZztcbiAgaXNQYW5lbE1lbWJlcjogc3RyaW5nO1xuICBrbm93bkFzOiBzdHJpbmc7XG4gIHBlcnNvbmFsQ29kZTogc3RyaW5nO1xuICBzdXJuYW1lOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG59XG4iXX0=
@@ -1,2 +1,3 @@
1
1
  export * from './case-field.service';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL3NlcnZpY2VzL2Nhc2UtZmllbGRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsc0JBQXNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2Nhc2UtZmllbGQuc2VydmljZSc7XG4iXX0=
2
+ export * from './format-translator.service';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL3NlcnZpY2VzL2Nhc2UtZmllbGRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyw2QkFBNkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY2FzZS1maWVsZC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybWF0LXRyYW5zbGF0b3Iuc2VydmljZSc7XG4iXX0=
@@ -327,7 +327,7 @@ export class FormValueService {
327
327
  * @param clearEmpty Whether or not we should clear out empty, optional, complex objects.
328
328
  * @param clearNonCase Whether or not we should clear out non-case fields at the top level.
329
329
  */
330
- removeUnnecessaryFields(data, caseFields, clearEmpty = false, clearNonCase = false) {
330
+ removeUnnecessaryFields(data, caseFields, clearEmpty = false, clearNonCase = false, fromPreviousPage = false, currentPageCaseFields = []) {
331
331
  if (data && caseFields && caseFields.length > 0) {
332
332
  // check if there is any data at the top level of the form that's not in the caseFields
333
333
  if (clearNonCase) {
@@ -361,6 +361,10 @@ export class FormValueService {
361
361
  if (FormValueService.clearOptionalEmpty(true, data[field.id], field)) {
362
362
  delete data[field.id];
363
363
  }
364
+ if (data[field.id] && FormValueService.isEmptyData(data[field.id]) && fromPreviousPage
365
+ && currentPageCaseFields.findIndex(c_field => c_field.id === field.id) === -1) {
366
+ delete data[field.id];
367
+ }
364
368
  break;
365
369
  case 'Collection':
366
370
  // Check for valid collection data
@@ -487,4 +491,4 @@ FormValueService.ɵprov = i0.ɵɵdefineInjectable({ token: FormValueService, fac
487
491
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FormValueService, [{
488
492
  type: Injectable
489
493
  }], function () { return [{ type: i1.FieldTypeSanitiser }]; }, null); })();
490
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12YWx1ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9zZXJ2aWNlcy9mb3JtL2Zvcm0tdmFsdWUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7O0FBRzVELE1BQU0sT0FBTyxnQkFBZ0I7SUF3TTNCLFlBQTZCLGtCQUFzQztRQUF0Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO0lBQ25FLENBQUM7SUF4TUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0E2R0c7SUFDSSxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUTtRQUNsRCxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDekMsSUFBSSxXQUFXLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDN0MsT0FBTyxJQUFJLENBQUMsY0FBYyxHQUFHLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDckU7YUFBTSxJQUFJLFdBQVcsQ0FBQyx5QkFBeUIsQ0FBQyxX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QVEsQ0FBQyxDQUFDO1NBQ3JDO1FBRUQsUUFBUSxPQUFPLFFBQVEsRUFBRTtZQUN2QixLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3ZDLEtBQUssUUFBUTtnQkFDWCxPQUFPLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN6QixLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDMUI7Z0JBQ0UsT0FBTyxRQUFRLENBQUM7U0FDbkI7SUFDSCxDQUFDOztnRkF2ZVUsZ0JBQWdCO3dEQUFoQixnQkFBZ0IsV0FBaEIsZ0JBQWdCO3VGQUFoQixnQkFBZ0I7Y0FENUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENhc2VGaWVsZCB9IGZyb20gJy4uLy4uL2RvbWFpbi9kZWZpbml0aW9uL2Nhc2UtZmllbGQubW9kZWwnO1xuaW1wb3J0IHsgRmllbGRzVXRpbHMgfSBmcm9tICcuLi9maWVsZHMvZmllbGRzLnV0aWxzJztcbmltcG9ydCB7IEZpZWxkVHlwZVNhbml0aXNlciB9IGZyb20gJy4vZmllbGQtdHlwZS1zYW5pdGlzZXInO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRm9ybVZhbHVlU2VydmljZSB7XG4gIC8qKlxuICAgKiBHZXRzIHZhbHVlIG9mIGEgZmllbGQgYmFzZWQgb24gZmllbGRLZXkgd2hpY2ggaXMgYSBkb3Qgc2VwYXJhdGVkIHJlZmVyZW5jZSB0byB2YWx1ZSBhbmQgY29sbGVjdGlvbiBpbmRleC5cbiAgICogVGhlcmUgYXJlIHR3byBleGNlcHRpb25zOlxuICAgKiAxKSBJbiBjYXNlIG9mIGEgbXVsdGlzZWxlY3QgYmVpbmcgaWRlbnRpZmllZCBhcyBhIGxlYWYgYSAnLS0tTEFCRUwnIHN1ZmZpeCBpcyBhcHBlbmRlZCB0byB0aGUga2V5IGFuZCB2YWx1ZXMgb2YgdGhhdCBrZXkgYXJlIHJldHVybmVkXG4gICAqICAgICAgZm9ybT0geyAnbGlzdCc6IFsnY29kZTEnLCAnY29kZTInXSxcbiAgICogICAgICAgICAgICAgICdsaXN0LS0tTEFCRUwnOiBbJ2xhYmVsMScsICdsYWJlbDInXSB9LFxuICAgKiAgICAgIGZpZWxkS2V5PWxpc3QsXG4gICAqICAgICAgY29sSW5kZXg9MCxcbiAgICogICAgICB2YWx1ZT1sYWJlbDEsIGxhYmVsMlxuICAgKiAyKSBJbiBjYXNlIG9mIGEgY29sbGVjdGlvbiBvZiBzaW1wbGUgZmllbGRzIGlzIGlkZW50aWZpZWQgYXMgYSBsZWFmIGFsbCB2YWx1ZXMgYXJlIGpvaW5lZCBzZXBlcmF0ZWQgYnkgYSBjb21tYVxuICAgKiAgICAgIGZvcm09IHsgJ2NvbGxlY3Rpb24nOiBbeyAndmFsdWUnOiAndmFsdWUxJyB9LCB7ICd2YWx1ZSc6ICd2YWx1ZTInIH1dIH1cbiAgICogICAgICBmaWVsZEtleT1jb2xsZWN0aW9uXG4gICAqICAgICAgY29sSW5kZXg9MVxuICAgKiAgICAgIHZhbHVlPXZhbHVlMSwgdmFsdWUyXG4gICAqXG4gICAqIE90aGVyIGV4YW1wbGVzOlxuICAgKiAxKSBzaW1wbGUgZmllbGQgcmVmZXJlbmNlOiBmb3JtPXsgJ1BlcnNvbkZpcnN0TmFtZSc6ICdKb2huJyB9LCBmaWVsZEtleT1QZXJzb25GaXJzdE5hbWUsIHZhbHVlPUpvaG5cbiAgICogMikgY29tcGxleCBmaWVsZCByZWZlcmVuY2U6XG4gICAqICAgICAgZm9ybT0geyBjb21wbGV4MSc6IHtcbiAgICogICAgICAgICdzaW1wbGUxMSc6ICd2YWx1ZTExJyxcbiAgICogICAgICAgICdzaW1wbGUxMic6ICd2YWx1ZTEyJyxcbiAgICogICAgICAgICdjb21wbGV4Mic6IHtcbiAgICogICAgICAgICAgJ3NpbXBsZTIxJzogJ3ZhbHVlMjEnXG4gICAqICAgICAgICB9XG4gICAqICAgICAgfX0sXG4gICAqICAgICAgZmllbGRLZXk9Y29tcGxleDEuY29tcGxleDIuc2ltcGxlMjFcbiAgICogICAgICBjb2xJbmRleD0wLFxuICAgKiAgICAgIHZhbHVlPXZhbHVlMjFcbiAgICogMykgY29tcGxleCBmaWVsZCB3aXRoIGNvbGxlY3Rpb24gZmllbGQgd2l0aCBjb21wbGV4IGZpZWxkIHJlZmVyZW5jZTpcbiAgICogICAgICBmb3JtPSB7ICdjb21wbGV4MSc6IHtcbiAgICogICAgICAgICAgICAgICAnY29sbGVjdGlvbjEnOiBbXG4gICAqICAgICAgICAgICAgICAgeyAndmFsdWUnOiB7XG4gICAqICAgICAgICAgICAgICAgICAgICdjb21wbGV4Mic6IHtcbiAgICogICAgICAgICAgICAgICAgICAgICAnc2ltcGxlMSc6ICd2YWx1ZTEnLFxuICAgKiAgICAgICAgICAgICAgICAgICAgICdjb21wbGV4Myc6IHtcbiAgICogICAgICAgICAgICAgICAgICAgICAgICdjb21wbGV4NCc6IHtcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgJ3NpbXBsZTInOiAndmFsdWUxMidcbiAgICogICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICogICAgICAgICAgICAgICAgICAgICB9XG4gICAqICAgICAgICAgICAgICAgICAgIH1cbiAgICogICAgICAgICAgICAgICAgIH1cbiAgICogICAgICAgICAgICAgICB9LFxuICAgKiAgICAgICAgICAgICAgIHsgJ3ZhbHVlJzoge1xuICAgKiAgICAgICAgICAgICAgICAgICAnY29tcGxleDInOiB7XG4gICAqICAgICAgICAgICAgICAgICAgICAgJ3NpbXBsZTEnOiAndmFsdWUyJyxcbiAgICogICAgICAgICAgICAgICAgICAgICAnY29tcGxleDMnOiB7XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAnY29tcGxleDQnOiB7XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICdzaW1wbGUyJzogJ3ZhbHVlMjEnXG4gICAqICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAqICAgICAgICAgICAgICAgICAgICAgfVxuICAgKiAgICAgICAgICAgICAgICAgICB9XG4gICAqICAgICAgICAgICAgICAgICB9XG4gICAqICAgICAgICAgICAgICAgfSxcbiAgICogICAgICAgICAgICAgICB7ICd2YWx1ZSc6IHtcbiAgICogICAgICAgICAgICAgICAgICAgJ2NvbXBsZXgyJzoge1xuICAgKiAgICAgICAgICAgICAgICAgICAgICdzaW1wbGUxJzogJ3ZhbHVlMycsXG4gICAqICAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXgzJzoge1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXg0Jzoge1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAnc2ltcGxlMic6ICd2YWx1ZTMxJ1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgKiAgICAgICAgICAgICAgICAgICAgIH1cbiAgICogICAgICAgICAgICAgICAgICAgfVxuICAgKiAgICAgICAgICAgICAgICAgfVxuICAgKiAgICAgICAgICAgICAgIH1cbiAgICogICAgICAgICAgICAgXX19XG4gICAqICAgICAgZmllbGRLZXk9Y29tcGxleDEuY29sbGVjdGlvbjEuY29tcGxleDIuY29tcGxleDMuY29tcGxleDQuc2ltcGxlMlxuICAgKiAgICAgIGNvbEluZGV4PTIsXG4gICAqICAgICAgdmFsdWU9dmFsdWUyMVxuICAgKiA0KSBjb2xsZWN0aW9uIG9mIGNvbXBsZXggdHlwZXNcbiAgICogICAgICBmb3JtPSB7ICdjb2xsZWN0aW9uMSc6IFtcbiAgICogICAgICAgICAgICAgICB7ICd2YWx1ZSc6IHsnY29tcGxleDEnOiB7XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2ltcGxlMSc6ICd2YWx1ZTExJyxcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wbGV4Mic6IHtcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXgzJzoge1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaW1wbGUyJzogJ3ZhbHVlMTInXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICogICAgICAgICAgICAgICB9LFxuICAgKiAgICAgICAgICAgICAgIHsgJ3ZhbHVlJzogeydjb21wbGV4MSc6IHtcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaW1wbGUxJzogJ3ZhbHVlMjEnLFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXgyJzoge1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGxleDMnOiB7XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NpbXBsZTInOiAndmFsdWUyMidcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgKiAgICAgICAgICAgICAgIH0sXG4gICAqICAgICAgICAgICAgICAgeyAndmFsdWUnOiB7J2NvbXBsZXgxJzoge1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NpbXBsZTEnOiAndmFsdWUzMScsXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGxleDInOiB7XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wbGV4Myc6IHtcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2ltcGxlMic6ICd2YWx1ZTMyJ1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICogICAgICAgICAgICAgICB9XG4gICAqICAgICAgICAgICAgIF19XG4gICAqICAgICAgZmllbGRLZXk9Y29sbGVjdGlvbjEuY29tcGxleDEuY29tcGxleDIuY29tcGxleDMuc2ltcGxlMlxuICAgKiAgICAgIGNvbEluZGV4PTJcbiAgICogICAgICB2YWx1ZT12YWx1ZTMyXG4gICAqXG4gICAqIElmIGtleSBpcyBwb2ludGluZyBhdCBhIGNvbXBsZXggb3IgY29sbGVjdGlvbiBsZWFmIChub3Qgc2ltcGxlLCBjb2xsZWN0aW9uIG9mIHNpbXBsZSBvciBtdWx0aXNlbGVjdCB0eXBlcykgdGhlbiB1bmRlZmluZWQgaXMgcmV0dXJuZWQuXG4gICAqIEFsc28gbm8ga2V5IHJlZmVycmluZyBhIGxlYWYgdGhhdCBpcyBjb250YWluZWQgd2l0aGluIGNvbGxlY3Rpb24gd2lsbCBjb250YWluIGluZGV4IG51bWJlci4gVGhlIGluZGV4IGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudCB0byB0aGVcbiAgICogbWV0aG9kLlxuICAgKiBAcGFyYW0gZm9ybSBmb3JtXG4gICAqIEBwYXJhbSBmaWVsZEtleSBkb3Qgc2VwYXJhdGVkIHJlZmVyZW5jZSB0byB2YWx1ZVxuICAgKiBAcGFyYW0gY29sSW5kZXggaW5kZXggb2YgY29sbGVjdGlvbiBpdGVtIGJlaW5nIHJlZmVyZW5jZWQgb3IgMCBvdGhlcndpc2VcbiAgICogQHJldHVybnMgc3RyaW5nIHNpbXBsZSBvciBjb21iaW5lZCB2YWx1ZSBvZiBhIGZpZWxkXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldEZpZWxkVmFsdWUoZm9ybSwgZmllbGRLZXksIGNvbEluZGV4KSB7XG4gICAgY29uc3QgZmllbGRJZHMgPSBmaWVsZEtleS5zcGxpdCgnLicpO1xuICAgIGNvbnN0IGN1cnJlbnRGaWVsZElkID0gZmllbGRJZHNbMF07XG4gICAgY29uc3QgY3VycmVudEZvcm0gPSBmb3JtW2N1cnJlbnRGaWVsZElkXTtcbiAgICBpZiAoRmllbGRzVXRpbHMuaXNNdWx0aVNlbGVjdFZhbHVlKGN1cnJlbnRGb3JtKSkge1xuICAgICAgICByZXR1cm4gZm9ybVtjdXJyZW50RmllbGRJZCArIEZpZWxkc1V0aWxzLkxBQkVMX1NVRkZJWF0uam9pbignLCAnKTtcbiAgICB9IGVsc2UgaWYgKEZpZWxkc1V0aWxzLmlzQ29sbGVjdGlvbk9mU2ltcGxlVHlwZXMoY3VycmVudEZvcm0pKSB7XG4gICAgICAgIHJldHVybiBjdXJyZW50Rm9ybS5tYXAoZmllbGRWYWx1ZSA9PiBmaWVsZFZhbHVlWyd2YWx1ZSddKS5qb2luKCcsICcpO1xuICAgIH0gZWxzZSBpZiAoRmllbGRzVXRpbHMuaXNDb2xsZWN0aW9uKGN1cnJlbnRGb3JtKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRGaWVsZFZhbHVlKGN1cnJlbnRGb3JtW2NvbEluZGV4XVsndmFsdWUnXSwgZmllbGRJZHMuc2xpY2UoMSkuam9pbignLicpLCBjb2xJbmRleCk7XG4gICAgfSBlbHNlIGlmIChGaWVsZHNVdGlscy5pc05vbkVtcHR5T2JqZWN0KGN1cnJlbnRGb3JtKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRGaWVsZFZhbHVlKGN1cnJlbnRGb3JtLCBmaWVsZElkcy5zbGljZSgxKS5qb2luKCcuJyksIGNvbEluZGV4KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gY3VycmVudEZvcm07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEEgcmVjdXJzaXZlIG1ldGhvZCB0byByZW1vdmUgYW55dGhpbmcgd2l0aCBhIGAtLS1MQUJFTGAgc3VmZml4LlxuICAgKiBAcGFyYW0gZGF0YSBUaGUgZGF0YSB0byByZWN1cnNlIHRocm91Z2ggYW5kIHJlbW92ZSBNdWx0aVNlbGVjdCBsYWJlbHMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlbW92ZU11bHRpU2VsZWN0TGFiZWxzKGRhdGE6IGFueSk6IHZvaWQge1xuICAgIGlmIChkYXRhICYmIHR5cGVvZiBkYXRhID09PSAnb2JqZWN0Jykge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YSkpIHtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGRhdGEpIHtcbiAgICAgICAgICBGb3JtVmFsdWVTZXJ2aWNlLnJlbW92ZU11bHRpU2VsZWN0TGFiZWxzKGl0ZW0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBrZXlzOiBzdHJpbmdbXSA9IE9iamVjdC5rZXlzKGRhdGEpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICAgICAgLy8gSGF2ZSB3ZSBmb3VuZCBvbmUgYSBNdWx0aVNlbGVjdCBsYWJlbD9cbiAgICAgICAgICBpZiAoa2V5LmluZGV4T2YoRmllbGRzVXRpbHMuTEFCRUxfU1VGRklYKSA+IDApIHtcbiAgICAgICAgICAgIC8vIElmIHNvLCByZW1vdmUgaXQuXG4gICAgICAgICAgICBkZWxldGUgZGF0YVtrZXldO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBGb3JtVmFsdWVTZXJ2aWNlLnJlbW92ZU11bHRpU2VsZWN0TGFiZWxzKGRhdGFba2V5XSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaXNSZWFkT25seShmaWVsZDogQ2FzZUZpZWxkKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZpZWxkLmRpc3BsYXlfY29udGV4dCA/IGZpZWxkLmRpc3BsYXlfY29udGV4dC50b1VwcGVyQ2FzZSgpID09PSAnUkVBRE9OTFknIDogZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBpc09wdGlvbmFsKGZpZWxkOiBDYXNlRmllbGQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmllbGQuZGlzcGxheV9jb250ZXh0ID8gZmllbGQuZGlzcGxheV9jb250ZXh0LnRvVXBwZXJDYXNlKCkgPT09ICdPUFRJT05BTCcgOiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGlzTGFiZWwoZmllbGQ6IENhc2VGaWVsZCk6IGJvb2xlYW4ge1xuICAgIGlmIChmaWVsZC5maWVsZF90eXBlKSB7XG4gICAgICByZXR1cm4gZmllbGQuZmllbGRfdHlwZS50eXBlID09PSAnTGFiZWwnO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaXNFbXB0eURhdGEoZGF0YTogb2JqZWN0KTogYm9vbGVhbiB7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGxldCBhbGxFbXB0eSA9IHRydWU7XG4gICAgICBmb3IgKGNvbnN0IHByb3Agb2YgT2JqZWN0LmtleXMoZGF0YSkpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBkYXRhW3Byb3BdO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICBpZiAodHlwZW9mKHZhbHVlKSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIGFsbEVtcHR5ID0gYWxsRW1wdHkgJiYgdGhpcy5pc0VtcHR5RGF0YSh2YWx1ZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFsbEVtcHR5ID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gYWxsRW1wdHk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNob3VsZCB3ZSBjbGVhciBvdXQgb3B0aW9uYWwsIGVtcHR5LCBjb21wbGV4IG9iamVjdHM/XG4gICAqIEBwYXJhbSBjbGVhckVtcHR5IEZhbHNlIHByb3BlcnR5IGlmIHdlIHNpbXBseSB3YW50IHRvIHNraXAgaXQuXG4gICAqIEBwYXJhbSBkYXRhIFRoZSBkYXRhIHRvIGFzc2VzcyBmb3IgXCJlbXB0aW5lc3NcIi5cbiAgICogQHBhcmFtIGZpZWxkIFRoZSBDYXNlRmllbGQgdGhhdCB3aWxsIHRlbGwgdXMgaWYgdGhpcyBpcyBvcHRpb25hbC5cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGNsZWFyT3B0aW9uYWxFbXB0eShjbGVhckVtcHR5OiBib29sZWFuLCBkYXRhOiBvYmplY3QsIGZpZWxkOiBDYXNlRmllbGQpOiBib29sZWFuIHtcbiAgICBpZiAoY2xlYXJFbXB0eSkge1xuICAgICAgcmV0dXJuIEZvcm1WYWx1ZVNlcnZpY2UuaXNPcHRpb25hbChmaWVsZCkgJiYgRm9ybVZhbHVlU2VydmljZS5pc0VtcHR5RGF0YShkYXRhKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBmaWVsZFR5cGVTYW5pdGlzZXI6IEZpZWxkVHlwZVNhbml0aXNlcikge1xuICB9XG5cbiAgcHVibGljIHNhbml0aXNlKHJhd1ZhbHVlOiBvYmplY3QpOiBvYmplY3Qge1xuICAgIHJldHVybiB0aGlzLnNhbml0aXNlT2JqZWN0KHJhd1ZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBzYW5pdGlzZUNhc2VSZWZlcmVuY2UocmVmZXJlbmNlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8vIHN0cmlwIG5vbiBkaWdpdHNcbiAgICBjb25zdCBzOiBzdHJpbmcgPSByZWZlcmVuY2UucmVwbGFjZSgvW1xcRF0vZywgJycpO1xuICAgIGlmIChzLmxlbmd0aCA+IDE2KSB7XG4gICAgICByZXR1cm4gcy5zdWJzdHIocy5sZW5ndGggLSAxNiwgMTYpO1xuICAgIH1cbiAgICByZXR1cm4gcztcbiAgfVxuXG4gIHB1YmxpYyBmaWx0ZXJDdXJyZW50UGFnZUZpZWxkcyhjYXNlRmllbGRzOiBDYXNlRmllbGRbXSwgZWRpdEZvcm06IGFueSk6IGFueSB7XG4gICAgY29uc3QgY2xvbmVGb3JtID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShlZGl0Rm9ybSkpO1xuICAgIE9iamVjdC5rZXlzKGNsb25lRm9ybVsnZGF0YSddKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIGlmIChjYXNlRmllbGRzLmZpbmRJbmRleCgoZWxlbWVudCkgPT4gZWxlbWVudC5pZCA9PT0ga2V5KSA8IDApIHtcbiAgICAgICAgZGVsZXRlIGNsb25lRm9ybVsnZGF0YSddW2tleV07XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGNsb25lRm9ybTtcbiAgfVxuXG4gIHB1YmxpYyBzYW5pdGlzZUR5bmFtaWNMaXN0cyhjYXNlRmllbGRzOiBDYXNlRmllbGRbXSwgZWRpdEZvcm06IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGRUeXBlU2FuaXRpc2VyLnNhbml0aXNlTGlzdHMoY2FzZUZpZWxkcywgZWRpdEZvcm0uZGF0YSk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXJOb25DYXNlRmllbGRzKGRhdGE6IG9iamVjdCwgY2FzZUZpZWxkczogQ2FzZUZpZWxkW10pIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFLZXkgaW4gZGF0YSkge1xuICAgICAgaWYgKCFjYXNlRmllbGRzLmZpbmQoY2YgPT4gY2YuaWQgPT09IGRhdGFLZXkpKSB7XG4gICAgICAgIGRlbGV0ZSBkYXRhIFtkYXRhS2V5XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLy8gVE9ETyByZWZhY3RvciBzbyB0aGF0IHRoaXMgYW5kIHJlbW92ZSB1bm5lY2Vzc2FyeSBmaWVsZHMgaGF2ZSBhIGNvbW1vbiBpdGVyYXRvciB0aGF0IGFwcGxpZXMgZnVuY3Rpb25zIHRvIGVhY2ggbm9kZSB2aXNpdGVkXG4gIHB1YmxpYyByZW1vdmVOdWxsTGFiZWxzKGRhdGE6IG9iamVjdCwgY2FzZUZpZWxkczogQ2FzZUZpZWxkW10pIHtcbiAgICBpZiAoZGF0YSAmJiBjYXNlRmllbGRzICYmIGNhc2VGaWVsZHMubGVuZ3RoID4gMCkge1xuICAgICAgLy8gY2hlY2sgaWYgdGhlcmUgaXMgYW55IGRhdGEgYXQgdGhlIHRvcCBsZXZlbCBvZiB0aGUgZm9ybSB0aGF0J3Mgbm90IGluIHRoZSBjYXNlRmllbGRzXG4gICAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIGNhc2VGaWVsZHMpIHtcbiAgICAgICAgaWYgKGZpZWxkLmZpZWxkX3R5cGUpIHtcbiAgICAgICAgICBzd2l0Y2ggKGZpZWxkLmZpZWxkX3R5cGUudHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnTGFiZWwnOlxuICAgICAgICAgICAgICAvLyBEZWxldGUgYW55IGxhYmVscyB0aGF0IGFyZSBudWxsXG4gICAgICAgICAgICAgIGlmICgoZGF0YVtmaWVsZC5pZF0gPT09IG51bGwpIHx8IChkYXRhW2ZpZWxkLmlkXSA9PT0gJycpKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGRhdGFbZmllbGQuaWRdO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnQ29tcGxleCc6XG4gICAgICAgICAgICAgIC8vIFJlY3Vyc2UgYW5kIHJlbW92ZSBhbnl0aGluZyB1bm5lY2Vzc2FyeSBmcm9tIHdpdGhpbiBhIGNvbXBsZXggZmllbGQuXG4gICAgICAgICAgICAgIHRoaXMucmVtb3ZlTnVsbExhYmVscyhkYXRhW2ZpZWxkLmlkXSwgZmllbGQuZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcyk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnQ29sbGVjdGlvbic6XG4gICAgICAgICAgICAgIC8vIEdldCBob2xkIG9mIHRoZSBjb2xsZWN0aW9uLlxuICAgICAgICAgICAgICBjb25zdCBjb2xsZWN0aW9uID0gZGF0YVtmaWVsZC5pZF07XG4gICAgICAgICAgICAgIC8vIENoZWNrIGlmIHdlIGFjdHVhbGx5IGhhdmUgYSBjb2xsZWN0aW9uIHRvIHdvcmsgd2l0aC5cbiAgICAgICAgICAgICAgaWYgKGNvbGxlY3Rpb24gJiYgQXJyYXkuaXNBcnJheShjb2xsZWN0aW9uKSkge1xuICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBjb2xsZWN0aW9uIG9mIGNvbXBsZXggb2JqZWN0LCB3ZSBuZWVkIHRvIGl0ZXJhdGUgdGhyb3VnaFxuICAgICAgICAgICAgICAgIC8vIGFuZCBjbGVhciB0aGVtIG91dC5cbiAgICAgICAgICAgICAgICBpZiAoZmllbGQuZmllbGRfdHlwZS5jb2xsZWN0aW9uX2ZpZWxkX3R5cGUudHlwZSA9PT0gJ0NvbXBsZXgnKSB7XG4gICAgICAgICAgICAgICAgICAvLyBJdGVyYXRlIHRocm91Z2ggdGhlIGVsZW1lbnRzIGFuZCByZW1vdmUgYW55IHVubmVjZXNzYXJ5IGZpZWxkcyB3aXRoaW4uXG4gICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgY29sbGVjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZU51bGxMYWJlbHMoaXRlbSwgZmllbGQuZmllbGRfdHlwZS5jb2xsZWN0aW9uX2ZpZWxkX3R5cGUuY29tcGxleF9maWVsZHMpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZU51bGxMYWJlbHMoaXRlbS52YWx1ZSwgZmllbGQuZmllbGRfdHlwZS5jb2xsZWN0aW9uX2ZpZWxkX3R5cGUuY29tcGxleF9maWVsZHMpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICAvLyBUT0RPIHJlZmFjdG9yIHNvIHRoYXQgdGhpcyBhbmQgcmVtb3ZlIHVubmVjZXNzYXJ5IGZpZWxkcyBoYXZlIGEgY29tbW9uIGl0ZXJhdG9yIHRoYXQgYXBwbGllcyBmdW5jdGlvbnMgdG8gZWFjaCBub2RlIHZpc2l0ZWRcbiAgcHVibGljIHJlbW92ZUVtcHR5RG9jdW1lbnRzKGRhdGE6IG9iamVjdCwgY2FzZUZpZWxkczogQ2FzZUZpZWxkW10pIHtcbiAgICBpZiAoZGF0YSAmJiBjYXNlRmllbGRzICYmIGNhc2VGaWVsZHMubGVuZ3RoID4gMCkge1xuICAgICAgLy8gY2hlY2sgaWYgdGhlcmUgaXMgYW55IGRhdGEgYXQgdGhlIHRvcCBsZXZlbCBvZiB0aGUgZm9ybSB0aGF0J3Mgbm90IGluIHRoZSBjYXNlRmllbGRzXG4gICAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIGNhc2VGaWVsZHMpIHtcbiAgICAgICAgaWYgKGZpZWxkLmZpZWxkX3R5cGUpIHtcbiAgICAgICAgICBzd2l0Y2ggKGZpZWxkLmZpZWxkX3R5cGUudHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnQ29tcGxleCc6XG4gICAgICAgICAgICAgIC8vIFJlY3Vyc2UgYW5kIHJlbW92ZSBhbnkgZW1wdHkgZG9jdW1lbnRzIGZyb20gd2l0aGluIGEgY29tcGxleCBmaWVsZC5cbiAgICAgICAgICAgICAgdGhpcy5yZW1vdmVFbXB0eURvY3VtZW50cyhkYXRhW2ZpZWxkLmlkXSwgZmllbGQuZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcyk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnQ29sbGVjdGlvbic6XG4gICAgICAgICAgICAgIC8vIEdldCBob2xkIG9mIHRoZSBjb2xsZWN0aW9uLlxuICAgICAgICAgICAgICBjb25zdCBjb2xsZWN0aW9uID0gZGF0YVtmaWVsZC5pZF07XG4gICAgICAgICAgICAgIC8vIENoZWNrIGlmIHdlIGFjdHVhbGx5IGhhdmUgYSBjb2xsZWN0aW9uIHRvIHdvcmsgd2l0aC5cbiAgICAgICAgICAgICAgaWYgKGNvbGxlY3Rpb24gJiYgQXJyYXkuaXNBcnJheShjb2xsZWN0aW9uKSkge1xuICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBjb2xsZWN0aW9uIG9mIGNvbXBsZXggb2JqZWN0LCB3ZSBuZWVkIHRvIGl0ZXJhdGUgdGhyb3VnaFxuICAgICAgICAgICAgICAgIC8vIGFuZCBjbGVhciBvdXQgZW1wdHkgZG9jdW1lbnRzXG4gICAgICAgICAgICAgICAgaWYgKGZpZWxkLmZpZWxkX3R5cGUuY29sbGVjdGlvbl9maWVsZF90eXBlLnR5cGUgPT09ICdDb21wbGV4Jykge1xuICAgICAgICAgICAgICAgICAgLy8gSXRlcmF0ZSB0aHJvdWdoIHRoZSBlbGVtZW50cyBhbmQgcmVtb3ZlIGFueSBlbXB0eSBkb2N1bWVudHMgd2l0aGluLlxuICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGNvbGxlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVFbXB0eURvY3VtZW50cyhpdGVtLCBmaWVsZC5maWVsZF90eXBlLmNvbGxlY3Rpb25fZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlRW1wdHlEb2N1bWVudHMoaXRlbS52YWx1ZSwgZmllbGQuZmllbGRfdHlwZS5jb2xsZWN0aW9uX2ZpZWxkX3R5cGUuY29tcGxleF9maWVsZHMpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0RvY3VtZW50JzpcbiAgICAgICAgICAgICAgLy8gRW5zdXJlIHRoaXMgaXMgZXhlY3V0ZWQgb25seSBpZiB0aGUgRG9jdW1lbnQgZmllbGQgaXMgTk9UIGhpZGRlbiBhbmQgaXMgZW1wdHkgb2YgZGF0YTsgaGlkZGVuIERvY3VtZW50XG4gICAgICAgICAgICAgIC8vIGZpZWxkcyBhcmUgaGFuZGxlZCBieSB0aGUgZmlsdGVyUmF3Rm9ybVZhbHVlcygpIGZ1bmN0aW9uIGluIENhc2VFZGl0U3VibWl0IGNvbXBvbmVudFxuICAgICAgICAgICAgICBpZiAoZmllbGQuaGlkZGVuICE9PSB0cnVlICYmIEZvcm1WYWx1ZVNlcnZpY2UuaXNFbXB0eURhdGEoZGF0YVtmaWVsZC5pZF0pKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGRhdGFbZmllbGQuaWRdO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBDbGVhciBvdXQgdW5uZWNlc3NhcnkgZmllbGRzIGZyb20gYSBkYXRhIG9iamVjdCwgYmFzZWQgb24gYW4gYXJyYXkgb2YgQ2FzZUZpZWxkcy5cbiAgICogVGhpcyBtZXRob2QgaXMgcmVjdXJzaXZlIGFuZCB3aWxsIGNhbGwgaXRzZWxmIGlmIGl0IGVuY291bnRlcnMgcGFydGljdWxhciBmaWVsZCB0eXBlcy5cbiAgICpcbiAgICogQHBhcmFtIGRhdGEgVGhlIG9iamVjdCB0byBiZSB0aWRpZWQgdXAuXG4gICAqIEBwYXJhbSBjYXNlRmllbGRzIFRoZSBDYXNlRmllbGRzIHRoYXQgbmVlZCB0byBiZSBjbGVhbmVkIHVwLlxuICAgKiBAcGFyYW0gY2xlYXJFbXB0eSBXaGV0aGVyIG9yIG5vdCB3ZSBzaG91bGQgY2xlYXIgb3V0IGVtcHR5LCBvcHRpb25hbCwgY29tcGxleCBvYmplY3RzLlxuICAgKiBAcGFyYW0gY2xlYXJOb25DYXNlIFdoZXRoZXIgb3Igbm90IHdlIHNob3VsZCBjbGVhciBvdXQgbm9uLWNhc2UgZmllbGRzIGF0IHRoZSB0b3AgbGV2ZWwuXG4gICAqL1xuICBwdWJsaWMgcmVtb3ZlVW5uZWNlc3NhcnlGaWVsZHMoZGF0YTogb2JqZWN0LCBjYXNlRmllbGRzOiBDYXNlRmllbGRbXSwgY2xlYXJFbXB0eSA9IGZhbHNlLCBjbGVhck5vbkNhc2UgPSBmYWxzZSk6IHZvaWQge1xuICAgIGlmIChkYXRhICYmIGNhc2VGaWVsZHMgJiYgY2FzZUZpZWxkcy5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBjaGVjayBpZiB0aGVyZSBpcyBhbnkgZGF0YSBhdCB0aGUgdG9wIGxldmVsIG9mIHRoZSBmb3JtIHRoYXQncyBub3QgaW4gdGhlIGNhc2VGaWVsZHNcbiAgICAgIGlmIChjbGVhck5vbkNhc2UpIHtcbiAgICAgICAgdGhpcy5jbGVhck5vbkNhc2VGaWVsZHMoZGF0YSwgY2FzZUZpZWxkcyk7XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIGNhc2VGaWVsZHMpIHtcbiAgICAgICAgaWYgKCFGb3JtVmFsdWVTZXJ2aWNlLmlzTGFiZWwoZmllbGQpICYmIEZvcm1WYWx1ZVNlcnZpY2UuaXNSZWFkT25seShmaWVsZCkpIHtcbiAgICAgICAgICAvLyBSZXRhaW4gYW55dGhpbmcgdGhhdCBpcyByZWFkb25seSBhbmQgbm90IGEgbGFiZWwuXG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpZWxkLmhpZGRlbiA9PT0gdHJ1ZSAmJiBmaWVsZC5kaXNwbGF5X2NvbnRleHQgIT09ICdISURERU4nKSB7XG4gICAgICAgICAgLy8gRGVsZXRlIGFueXRoaW5nIHRoYXQgaXMgaGlkZGVuICh0aGF0IGlzIE5PVCByZWFkb25seSksIGFuZCB0aGF0XG4gICAgICAgICAgLy8gaGFzbid0IGhhZCBpdHMgZGlzcGxheV9jb250ZXh0IG92ZXJyaWRkZW4gdG8gbWFrZSBpdCBoaWRkZW4uXG4gICAgICAgICAgZGVsZXRlIGRhdGFbZmllbGQuaWRdO1xuICAgICAgICB9IGVsc2UgaWYgKGZpZWxkLmZpZWxkX3R5cGUpIHtcbiAgICAgICAgICBzd2l0Y2ggKGZpZWxkLmZpZWxkX3R5cGUudHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnTGFiZWwnOlxuICAgICAgICAgICAgICAvLyBEZWxldGUgYW55IGxhYmVscy5cbiAgICAgICAgICAgICAgZGVsZXRlIGRhdGFbZmllbGQuaWRdO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0RvY3VtZW50JzpcbiAgICAgICAgICAgICAgaWYgKEZvcm1WYWx1ZVNlcnZpY2UuaXNFbXB0eURhdGEoZGF0YVtmaWVsZC5pZF0pKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGRhdGFbZmllbGQuaWRdO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnQ29tcGxleCc6XG4gICAgICAgICAgICAgIHRoaXMucmVtb3ZlVW5uZWNlc3NhcnlGaWVsZHMoZGF0YVtmaWVsZC5pZF0sIGZpZWxkLmZpZWxkX3R5cGUuY29tcGxleF9maWVsZHMsIGNsZWFyRW1wdHkpO1xuICAgICAgICAgICAgICAvLyBBbHNvIHJlbW92ZSBhbnkgb3B0aW9uYWwgY29tcGxleCBvYmplY3RzIHRoYXQgYXJlIGNvbXBsZXRlbHkgZW1wdHkuXG4gICAgICAgICAgICAgIC8vIEVVSS00MjQ0OiBSaXRlc2gncyBmaXgsIHBhc3NpbmcgdHJ1ZSBpbnN0ZWFkIG9mIGNsZWFyRW1wdHkuXG4gICAgICAgICAgICAgIGlmIChGb3JtVmFsdWVTZXJ2aWNlLmNsZWFyT3B0aW9uYWxFbXB0eSh0cnVlLCBkYXRhW2ZpZWxkLmlkXSwgZmllbGQpKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGRhdGFbZmllbGQuaWRdO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnQ29sbGVjdGlvbic6XG4gICAgICAgICAgICAgIC8vIENoZWNrIGZvciB2YWxpZCBjb2xsZWN0aW9uIGRhdGFcbiAgICAgICAgICAgICAgdGhpcy5yZW1vdmVJbnZhbGlkQ29sbGVjdGlvbkRhdGEoZGF0YSwgZmllbGQpO1xuICAgICAgICAgICAgICAvLyBHZXQgaG9sZCBvZiB0aGUgY29sbGVjdGlvbi5cbiAgICAgICAgICAgICAgY29uc3QgY29sbGVjdGlvbiA9IGRhdGFbZmllbGQuaWRdO1xuICAgICAgICAgICAgICAvLyBDaGVjayBpZiB3ZSBhY3R1YWxseSBoYXZlIGEgY29sbGVjdGlvbiB0byB3b3JrIHdpdGguXG4gICAgICAgICAgICAgIGlmIChjb2xsZWN0aW9uICYmIEFycmF5LmlzQXJyYXkoY29sbGVjdGlvbikpIHtcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIGlzIGEgY29sbGVjdGlvbiBvZiBjb21wbGV4IG9iamVjdCwgd2UgbmVlZCB0byBpdGVyYXRlIHRocm91Z2hcbiAgICAgICAgICAgICAgICAvLyBhbmQgY2xlYXIgdGhlbSBvdXQuXG4gICAgICAgICAgICAgICAgaWYgKGZpZWxkLmZpZWxkX3R5cGUuY29sbGVjdGlvbl9maWVsZF90eXBlLnR5cGUgPT09ICdDb21wbGV4Jykge1xuICAgICAgICAgICAgICAgICAgLy8gSXRlcmF0ZSB0aHJvdWdoIHRoZSBlbGVtZW50cyBhbmQgcmVtb3ZlIGFueSB1bm5lY2Vzc2FyeSBmaWVsZHMgd2l0aGluLlxuICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGNvbGxlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVVbm5lY2Vzc2FyeUZpZWxkcyhpdGVtLCBmaWVsZC5maWVsZF90eXBlLmNvbGxlY3Rpb25fZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcywgY2xlYXJFbXB0eSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlVW5uZWNlc3NhcnlGaWVsZHMoaXRlbS52YWx1ZSwgZmllbGQuZmllbGRfdHlwZS5jb2xsZWN0aW9uX2ZpZWxkX3R5cGUuY29tcGxleF9maWVsZHMsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDbGVhciBvdXQgYW55IE11bHRpU2VsZWN0IGxhYmVscy5cbiAgICBGb3JtVmFsdWVTZXJ2aWNlLnJlbW92ZU11bHRpU2VsZWN0TGFiZWxzKGRhdGEpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhbnkgZW1wdHkgb3IgaW52YWxpZCBhcnJ5IHdpdGggb25seSBpZFxuICAgKlxuICAgKiBAcGFyYW0gZGF0YSBUaGUgb2JqZWN0IHRyZWUgb2YgZm9ybSB2YWx1ZXMgb24gd2hpY2ggdG8gcGVyZm9ybSB0aGUgcmVtb3ZhbFxuICAgKiBAcGFyYW0gZmllbGQgZG9tYWluIG1vZGVsIG9iamVjdCBmb3IgZWFjaCBmaWVsZFxuICAgKi9cbiAgcHVibGljIHJlbW92ZUludmFsaWRDb2xsZWN0aW9uRGF0YShkYXRhOiBvYmplY3QsIGZpZWxkOiBDYXNlRmllbGQpIHtcbiAgICBpZiAoZGF0YVtmaWVsZC5pZF0gJiYgZGF0YVtmaWVsZC5pZF0ubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChjb25zdCBvYmpDb2xsZWN0aW9uIG9mIGRhdGFbZmllbGQuaWRdKSB7XG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhvYmpDb2xsZWN0aW9uKS5sZW5ndGggPT09IDEgJiYgT2JqZWN0LmtleXMob2JqQ29sbGVjdGlvbikuaW5kZXhPZignaWQnKSA+IC0xKSB7XG4gICAgICAgICAgZGF0YVtmaWVsZC5pZF0gPSBbXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYW55IGVtcHR5IGNvbGxlY3Rpb24gZmllbGRzIHdoZXJlIGEgdmFsdWUgb2YgZ3JlYXRlciB0aGFuIHplcm8gaXMgc3BlY2lmaWVkIGluIHRoZSBmaWVsZCdzIHtAbGluayBGaWVsZFR5cGV9XG4gICAqIGBtaW5gIGF0dHJpYnV0ZS5cbiAgICpcbiAgICogQHBhcmFtIGRhdGEgVGhlIG9iamVjdCB0cmVlIG9mIGZvcm0gdmFsdWVzIG9uIHdoaWNoIHRvIHBlcmZvcm0gdGhlIHJlbW92YWxcbiAgICogQHBhcmFtIGNhc2VGaWVsZHMgVGhlIGxpc3Qgb2YgdW5kZXJseWluZyB7QGxpbmsgQ2FzZUZpZWxkfSBkb21haW4gbW9kZWwgb2JqZWN0cyBmb3IgZWFjaCBmaWVsZFxuICAgKi9cbiAgcHVibGljIHJlbW92ZUVtcHR5Q29sbGVjdGlvbnNXaXRoTWluVmFsaWRhdGlvbihkYXRhOiBvYmplY3QsIGNhc2VGaWVsZHM6IENhc2VGaWVsZFtdKTogdm9pZCB7XG4gICAgaWYgKGRhdGEgJiYgY2FzZUZpZWxkcyAmJiBjYXNlRmllbGRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAoY29uc3QgZmllbGQgb2YgY2FzZUZpZWxkcykge1xuICAgICAgICBpZiAoZmllbGQuZmllbGRfdHlwZS50eXBlID09PSAnQ29sbGVjdGlvbicgJiYgZmllbGQuZmllbGRfdHlwZS5taW4gPiAwICYmIGRhdGFbZmllbGQuaWRdICYmXG4gICAgICAgICAgICBBcnJheS5pc0FycmF5KGRhdGFbZmllbGQuaWRdKSAmJiBkYXRhW2ZpZWxkLmlkXS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBkZWxldGUgZGF0YVtmaWVsZC5pZF07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNhbml0aXNlT2JqZWN0KHJhd09iamVjdDogb2JqZWN0KTogb2JqZWN0IHtcbiAgICBpZiAoIXJhd09iamVjdCkge1xuICAgICAgcmV0dXJuIHJhd09iamVjdDtcbiAgICB9XG5cbiAgICBsZXQgc2FuaXRpc2VkT2JqZWN0ID0ge307XG4gICAgY29uc3QgZG9jdW1lbnRGaWVsZEtleXMgPSBbJ2RvY3VtZW50X3VybCcsICdkb2N1bWVudF9iaW5hcnlfdXJsJywgJ2RvY3VtZW50X2ZpbGVuYW1lJ107XG4gICAgZm9yIChjb25zdCBrZXkgaW4gcmF3T2JqZWN0KSB7XG4gICAgICAvLyBJZiB0aGUga2V5IGlzIG9uZSBvZiBkb2N1bWVudEZpZWxkS2V5cywgaXQgbWVhbnMgdGhlIGZpZWxkIGlzIG9mIERvY3VtZW50IHR5cGUuIElmIHRoZSB2YWx1ZSBvZiBhbnkgb2YgdGhlc2VcbiAgICAgIC8vIHByb3BlcnRpZXMgaXMgbnVsbCwgdGhlIGVudGlyZSBzYW5pdGlzZWQgb2JqZWN0IHRvIGJlIHJldHVybmVkIHNob3VsZCBiZSBudWxsXG4gICAgICBpZiAoZG9jdW1lbnRGaWVsZEtleXMuaW5kZXhPZihrZXkpID4gLTEgJiYgcmF3T2JqZWN0W2tleV0gPT0gbnVsbCkge1xuICAgICAgICBzYW5pdGlzZWRPYmplY3QgPSBudWxsO1xuICAgICAgICBicmVhaztcbiAgICAgIH0gZWxzZSBpZiAoJ0Nhc2VSZWZlcmVuY2UnID09PSBrZXkpIHtcbiAgICAgICAgc2FuaXRpc2VkT2JqZWN0W2tleV0gPSB0aGlzLnNhbml0aXNlVmFsdWUodGhpcy5zYW5pdGlzZUNhc2VSZWZlcmVuY2UoU3RyaW5nKHJhd09iamVjdFtrZXldKSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2FuaXRpc2VkT2JqZWN0W2tleV0gPSB0aGlzLnNhbml0aXNlVmFsdWUocmF3T2JqZWN0W2tleV0pO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzYW5pdGlzZWRPYmplY3Rba2V5XSkpIHtcbiAgICAgICAgICAvLyBJZiB0aGUgJ3Nhbml0aXNlZCcgYXJyYXkgaXMgZW1wdHksIHdoZXJlYXMgdGhlIG9yaWdpbmFsIGFycmF5IGhhZCAxIG9yIG1vcmUgaXRlbXNcbiAgICAgICAgICAvLyBkZWxldGUgdGhlIHByb3BlcnR5IGZyb20gdGhlIHNhbmF0aXNlZCBvYmplY3RcbiAgICAgICAgICBpZiAoc2FuaXRpc2VkT2JqZWN0W2tleV0ubGVuZ3RoID09PSAwICYmIHJhd09iamVjdFtrZXldLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGRlbGV0ZSBzYW5pdGlzZWRPYmplY3Rba2V5XTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHNhbml0aXNlZE9iamVjdDtcbiAgfVxuXG4gIHByaXZhdGUgc2FuaXRpc2VBcnJheShyYXdBcnJheTogYW55W10pOiBhbnlbXSB7XG4gICAgaWYgKCFyYXdBcnJheSkge1xuICAgICAgcmV0dXJuIHJhd0FycmF5O1xuICAgIH1cblxuICAgIHJhd0FycmF5LmZvckVhY2goaXRlbSA9PiB7XG4gICAgICBpZiAoaXRlbSAmJiBpdGVtLmhhc093blByb3BlcnR5KCd2YWx1ZScpKSB7XG4gICAgICAgIGl0ZW0udmFsdWUgPSB0aGlzLnNhbml0aXNlVmFsdWUoaXRlbS52YWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBGaWx0ZXIgdGhlIGFycmF5IHRvIGVuc3VyZSBvbmx5IHRydXRoeSB2YWx1ZXMgYXJlIHJldHVybmVkOyBkb3VibGUtYmFuZyBvcGVyYXRvciByZXR1cm5zIHRoZSBib29sZWFuIHRydWUvZmFsc2VcbiAgICAvLyBhc3NvY2lhdGlvbiBvZiBhIHZhbHVlLiBJbiBhZGRpdGlvbiwgaWYgdGhlIGFycmF5IGNvbnRhaW5zIGl0ZW1zIHdpdGggYSBcInZhbHVlXCIgb2JqZWN0IHByb3BlcnR5LCByZXR1cm4gb25seVxuICAgIC8vIHRob3NlIHdob3NlIHZhbHVlIG9iamVjdCBjb250YWlucyBub24tZW1wdHkgdmFsdWVzLCBpbmNsdWRpbmcgZm9yIGFueSBkZXNjZW5kYW50IG9iamVjdHNcbiAgICByZXR1cm4gcmF3QXJyYXlcbiAgICAgIC5maWx0ZXIoaXRlbSA9PiAhIWl0ZW0pXG4gICAgICAuZmlsdGVyKGl0ZW0gPT4gaXRlbS5oYXNPd25Qcm9wZXJ0eSgndmFsdWUnKSA/IEZpZWxkc1V0aWxzLmNvbnRhaW5zTm9uRW1wdHlWYWx1ZXMoaXRlbS52YWx1ZSkgOiB0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgc2FuaXRpc2VWYWx1ZShyYXdWYWx1ZTogYW55KTogYW55IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShyYXdWYWx1ZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnNhbml0aXNlQXJyYXkocmF3VmFsdWUpO1xuICAgIH1cblxuICAgIHN3aXRjaCAodHlwZW9mIHJhd1ZhbHVlKSB7XG4gICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgICByZXR1cm4gdGhpcy5zYW5pdGlzZU9iamVjdChyYXdWYWx1ZSk7XG4gICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICByZXR1cm4gcmF3VmFsdWUudHJpbSgpO1xuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgcmV0dXJuIFN0cmluZyhyYXdWYWx1ZSk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gcmF3VmFsdWU7XG4gICAgfVxuICB9XG59XG4iXX0=
494
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12YWx1ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9zZXJ2aWNlcy9mb3JtL2Zvcm0tdmFsdWUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7O0FBRzVELE1BQU0sT0FBTyxnQkFBZ0I7SUF3TTNCLFlBQTZCLGtCQUFzQztRQUF0Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO0lBQ25FLENBQUM7SUF4TUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0E2R0c7SUFDSSxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUTtRQUNsRCxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDekMsSUFBSSxXQUFXLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDN0MsT0FBTyxJQUFJLENBQUMsY0FBYyxHQUFHLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDckU7YUFBTSxJQUFJLFdBQVcsQ0FBQyx5QkFBeUIsQ0FBQyxX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UUFBUTthQUNaLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7YUFDdEIsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUcsQ0FBQztJQUVPLGFBQWEsQ0FBQyxRQUFhO1FBQ2pDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUMzQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDckM7UUFFRCxRQUFRLE9BQU8sUUFBUSxFQUFFO1lBQ3ZCLEtBQUssUUFBUTtnQkFDWCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDdkMsS0FBSyxRQUFRO2dCQUNYLE9BQU8sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3pCLEtBQUssUUFBUTtnQkFDWCxPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMxQjtnQkFDRSxPQUFPLFFBQVEsQ0FBQztTQUNuQjtJQUNILENBQUM7O2dGQTVlVSxnQkFBZ0I7d0RBQWhCLGdCQUFnQixXQUFoQixnQkFBZ0I7dUZBQWhCLGdCQUFnQjtjQUQ1QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2FzZUZpZWxkIH0gZnJvbSAnLi4vLi4vZG9tYWluL2RlZmluaXRpb24vY2FzZS1maWVsZC5tb2RlbCc7XG5pbXBvcnQgeyBGaWVsZHNVdGlscyB9IGZyb20gJy4uL2ZpZWxkcy9maWVsZHMudXRpbHMnO1xuaW1wb3J0IHsgRmllbGRUeXBlU2FuaXRpc2VyIH0gZnJvbSAnLi9maWVsZC10eXBlLXNhbml0aXNlcic7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBGb3JtVmFsdWVTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIEdldHMgdmFsdWUgb2YgYSBmaWVsZCBiYXNlZCBvbiBmaWVsZEtleSB3aGljaCBpcyBhIGRvdCBzZXBhcmF0ZWQgcmVmZXJlbmNlIHRvIHZhbHVlIGFuZCBjb2xsZWN0aW9uIGluZGV4LlxuICAgKiBUaGVyZSBhcmUgdHdvIGV4Y2VwdGlvbnM6XG4gICAqIDEpIEluIGNhc2Ugb2YgYSBtdWx0aXNlbGVjdCBiZWluZyBpZGVudGlmaWVkIGFzIGEgbGVhZiBhICctLS1MQUJFTCcgc3VmZml4IGlzIGFwcGVuZGVkIHRvIHRoZSBrZXkgYW5kIHZhbHVlcyBvZiB0aGF0IGtleSBhcmUgcmV0dXJuZWRcbiAgICogICAgICBmb3JtPSB7ICdsaXN0JzogWydjb2RlMScsICdjb2RlMiddLFxuICAgKiAgICAgICAgICAgICAgJ2xpc3QtLS1MQUJFTCc6IFsnbGFiZWwxJywgJ2xhYmVsMiddIH0sXG4gICAqICAgICAgZmllbGRLZXk9bGlzdCxcbiAgICogICAgICBjb2xJbmRleD0wLFxuICAgKiAgICAgIHZhbHVlPWxhYmVsMSwgbGFiZWwyXG4gICAqIDIpIEluIGNhc2Ugb2YgYSBjb2xsZWN0aW9uIG9mIHNpbXBsZSBmaWVsZHMgaXMgaWRlbnRpZmllZCBhcyBhIGxlYWYgYWxsIHZhbHVlcyBhcmUgam9pbmVkIHNlcGVyYXRlZCBieSBhIGNvbW1hXG4gICAqICAgICAgZm9ybT0geyAnY29sbGVjdGlvbic6IFt7ICd2YWx1ZSc6ICd2YWx1ZTEnIH0sIHsgJ3ZhbHVlJzogJ3ZhbHVlMicgfV0gfVxuICAgKiAgICAgIGZpZWxkS2V5PWNvbGxlY3Rpb25cbiAgICogICAgICBjb2xJbmRleD0xXG4gICAqICAgICAgdmFsdWU9dmFsdWUxLCB2YWx1ZTJcbiAgICpcbiAgICogT3RoZXIgZXhhbXBsZXM6XG4gICAqIDEpIHNpbXBsZSBmaWVsZCByZWZlcmVuY2U6IGZvcm09eyAnUGVyc29uRmlyc3ROYW1lJzogJ0pvaG4nIH0sIGZpZWxkS2V5PVBlcnNvbkZpcnN0TmFtZSwgdmFsdWU9Sm9oblxuICAgKiAyKSBjb21wbGV4IGZpZWxkIHJlZmVyZW5jZTpcbiAgICogICAgICBmb3JtPSB7IGNvbXBsZXgxJzoge1xuICAgKiAgICAgICAgJ3NpbXBsZTExJzogJ3ZhbHVlMTEnLFxuICAgKiAgICAgICAgJ3NpbXBsZTEyJzogJ3ZhbHVlMTInLFxuICAgKiAgICAgICAgJ2NvbXBsZXgyJzoge1xuICAgKiAgICAgICAgICAnc2ltcGxlMjEnOiAndmFsdWUyMSdcbiAgICogICAgICAgIH1cbiAgICogICAgICB9fSxcbiAgICogICAgICBmaWVsZEtleT1jb21wbGV4MS5jb21wbGV4Mi5zaW1wbGUyMVxuICAgKiAgICAgIGNvbEluZGV4PTAsXG4gICAqICAgICAgdmFsdWU9dmFsdWUyMVxuICAgKiAzKSBjb21wbGV4IGZpZWxkIHdpdGggY29sbGVjdGlvbiBmaWVsZCB3aXRoIGNvbXBsZXggZmllbGQgcmVmZXJlbmNlOlxuICAgKiAgICAgIGZvcm09IHsgJ2NvbXBsZXgxJzoge1xuICAgKiAgICAgICAgICAgICAgICdjb2xsZWN0aW9uMSc6IFtcbiAgICogICAgICAgICAgICAgICB7ICd2YWx1ZSc6IHtcbiAgICogICAgICAgICAgICAgICAgICAgJ2NvbXBsZXgyJzoge1xuICAgKiAgICAgICAgICAgICAgICAgICAgICdzaW1wbGUxJzogJ3ZhbHVlMScsXG4gICAqICAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXgzJzoge1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXg0Jzoge1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAnc2ltcGxlMic6ICd2YWx1ZTEyJ1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgKiAgICAgICAgICAgICAgICAgICAgIH1cbiAgICogICAgICAgICAgICAgICAgICAgfVxuICAgKiAgICAgICAgICAgICAgICAgfVxuICAgKiAgICAgICAgICAgICAgIH0sXG4gICAqICAgICAgICAgICAgICAgeyAndmFsdWUnOiB7XG4gICAqICAgICAgICAgICAgICAgICAgICdjb21wbGV4Mic6IHtcbiAgICogICAgICAgICAgICAgICAgICAgICAnc2ltcGxlMSc6ICd2YWx1ZTInLFxuICAgKiAgICAgICAgICAgICAgICAgICAgICdjb21wbGV4Myc6IHtcbiAgICogICAgICAgICAgICAgICAgICAgICAgICdjb21wbGV4NCc6IHtcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgJ3NpbXBsZTInOiAndmFsdWUyMSdcbiAgICogICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICogICAgICAgICAgICAgICAgICAgICB9XG4gICAqICAgICAgICAgICAgICAgICAgIH1cbiAgICogICAgICAgICAgICAgICAgIH1cbiAgICogICAgICAgICAgICAgICB9LFxuICAgKiAgICAgICAgICAgICAgIHsgJ3ZhbHVlJzoge1xuICAgKiAgICAgICAgICAgICAgICAgICAnY29tcGxleDInOiB7XG4gICAqICAgICAgICAgICAgICAgICAgICAgJ3NpbXBsZTEnOiAndmFsdWUzJyxcbiAgICogICAgICAgICAgICAgICAgICAgICAnY29tcGxleDMnOiB7XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAnY29tcGxleDQnOiB7XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICdzaW1wbGUyJzogJ3ZhbHVlMzEnXG4gICAqICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAqICAgICAgICAgICAgICAgICAgICAgfVxuICAgKiAgICAgICAgICAgICAgICAgICB9XG4gICAqICAgICAgICAgICAgICAgICB9XG4gICAqICAgICAgICAgICAgICAgfVxuICAgKiAgICAgICAgICAgICBdfX1cbiAgICogICAgICBmaWVsZEtleT1jb21wbGV4MS5jb2xsZWN0aW9uMS5jb21wbGV4Mi5jb21wbGV4My5jb21wbGV4NC5zaW1wbGUyXG4gICAqICAgICAgY29sSW5kZXg9MixcbiAgICogICAgICB2YWx1ZT12YWx1ZTIxXG4gICAqIDQpIGNvbGxlY3Rpb24gb2YgY29tcGxleCB0eXBlc1xuICAgKiAgICAgIGZvcm09IHsgJ2NvbGxlY3Rpb24xJzogW1xuICAgKiAgICAgICAgICAgICAgIHsgJ3ZhbHVlJzogeydjb21wbGV4MSc6IHtcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaW1wbGUxJzogJ3ZhbHVlMTEnLFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXgyJzoge1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGxleDMnOiB7XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NpbXBsZTInOiAndmFsdWUxMidcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgKiAgICAgICAgICAgICAgIH0sXG4gICAqICAgICAgICAgICAgICAgeyAndmFsdWUnOiB7J2NvbXBsZXgxJzoge1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NpbXBsZTEnOiAndmFsdWUyMScsXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGxleDInOiB7XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wbGV4Myc6IHtcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2ltcGxlMic6ICd2YWx1ZTIyJ1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAqICAgICAgICAgICAgICAgfSxcbiAgICogICAgICAgICAgICAgICB7ICd2YWx1ZSc6IHsnY29tcGxleDEnOiB7XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2ltcGxlMSc6ICd2YWx1ZTMxJyxcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wbGV4Mic6IHtcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXgzJzoge1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaW1wbGUyJzogJ3ZhbHVlMzInXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgKiAgICAgICAgICAgICAgIH1cbiAgICogICAgICAgICAgICAgXX1cbiAgICogICAgICBmaWVsZEtleT1jb2xsZWN0aW9uMS5jb21wbGV4MS5jb21wbGV4Mi5jb21wbGV4My5zaW1wbGUyXG4gICAqICAgICAgY29sSW5kZXg9MlxuICAgKiAgICAgIHZhbHVlPXZhbHVlMzJcbiAgICpcbiAgICogSWYga2V5IGlzIHBvaW50aW5nIGF0IGEgY29tcGxleCBvciBjb2xsZWN0aW9uIGxlYWYgKG5vdCBzaW1wbGUsIGNvbGxlY3Rpb24gb2Ygc2ltcGxlIG9yIG11bHRpc2VsZWN0IHR5cGVzKSB0aGVuIHVuZGVmaW5lZCBpcyByZXR1cm5lZC5cbiAgICogQWxzbyBubyBrZXkgcmVmZXJyaW5nIGEgbGVhZiB0aGF0IGlzIGNvbnRhaW5lZCB3aXRoaW4gY29sbGVjdGlvbiB3aWxsIGNvbnRhaW4gaW5kZXggbnVtYmVyLiBUaGUgaW5kZXggaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50IHRvIHRoZVxuICAgKiBtZXRob2QuXG4gICAqIEBwYXJhbSBmb3JtIGZvcm1cbiAgICogQHBhcmFtIGZpZWxkS2V5IGRvdCBzZXBhcmF0ZWQgcmVmZXJlbmNlIHRvIHZhbHVlXG4gICAqIEBwYXJhbSBjb2xJbmRleCBpbmRleCBvZiBjb2xsZWN0aW9uIGl0ZW0gYmVpbmcgcmVmZXJlbmNlZCBvciAwIG90aGVyd2lzZVxuICAgKiBAcmV0dXJucyBzdHJpbmcgc2ltcGxlIG9yIGNvbWJpbmVkIHZhbHVlIG9mIGEgZmllbGRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0RmllbGRWYWx1ZShmb3JtLCBmaWVsZEtleSwgY29sSW5kZXgpIHtcbiAgICBjb25zdCBmaWVsZElkcyA9IGZpZWxkS2V5LnNwbGl0KCcuJyk7XG4gICAgY29uc3QgY3VycmVudEZpZWxkSWQgPSBmaWVsZElkc1swXTtcbiAgICBjb25zdCBjdXJyZW50Rm9ybSA9IGZvcm1bY3VycmVudEZpZWxkSWRdO1xuICAgIGlmIChGaWVsZHNVdGlscy5pc011bHRpU2VsZWN0VmFsdWUoY3VycmVudEZvcm0pKSB7XG4gICAgICAgIHJldHVybiBmb3JtW2N1cnJlbnRGaWVsZElkICsgRmllbGRzVXRpbHMuTEFCRUxfU1VGRklYXS5qb2luKCcsICcpO1xuICAgIH0gZWxzZSBpZiAoRmllbGRzVXRpbHMuaXNDb2xsZWN0aW9uT2ZTaW1wbGVUeXBlcyhjdXJyZW50Rm9ybSkpIHtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnRGb3JtLm1hcChmaWVsZFZhbHVlID0+IGZpZWxkVmFsdWVbJ3ZhbHVlJ10pLmpvaW4oJywgJyk7XG4gICAgfSBlbHNlIGlmIChGaWVsZHNVdGlscy5pc0NvbGxlY3Rpb24oY3VycmVudEZvcm0pKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEZpZWxkVmFsdWUoY3VycmVudEZvcm1bY29sSW5kZXhdWyd2YWx1ZSddLCBmaWVsZElkcy5zbGljZSgxKS5qb2luKCcuJyksIGNvbEluZGV4KTtcbiAgICB9IGVsc2UgaWYgKEZpZWxkc1V0aWxzLmlzTm9uRW1wdHlPYmplY3QoY3VycmVudEZvcm0pKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEZpZWxkVmFsdWUoY3VycmVudEZvcm0sIGZpZWxkSWRzLnNsaWNlKDEpLmpvaW4oJy4nKSwgY29sSW5kZXgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBjdXJyZW50Rm9ybTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQSByZWN1cnNpdmUgbWV0aG9kIHRvIHJlbW92ZSBhbnl0aGluZyB3aXRoIGEgYC0tLUxBQkVMYCBzdWZmaXguXG4gICAqIEBwYXJhbSBkYXRhIFRoZSBkYXRhIHRvIHJlY3Vyc2UgdGhyb3VnaCBhbmQgcmVtb3ZlIE11bHRpU2VsZWN0IGxhYmVscy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVtb3ZlTXVsdGlTZWxlY3RMYWJlbHMoZGF0YTogYW55KTogdm9pZCB7XG4gICAgaWYgKGRhdGEgJiYgdHlwZW9mIGRhdGEgPT09ICdvYmplY3QnKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgZGF0YSkge1xuICAgICAgICAgIEZvcm1WYWx1ZVNlcnZpY2UucmVtb3ZlTXVsdGlTZWxlY3RMYWJlbHMoaXRlbSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGtleXM6IHN0cmluZ1tdID0gT2JqZWN0LmtleXMoZGF0YSk7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgICAgICAvLyBIYXZlIHdlIGZvdW5kIG9uZSBhIE11bHRpU2VsZWN0IGxhYmVsP1xuICAgICAgICAgIGlmIChrZXkuaW5kZXhPZihGaWVsZHNVdGlscy5MQUJFTF9TVUZGSVgpID4gMCkge1xuICAgICAgICAgICAgLy8gSWYgc28sIHJlbW92ZSBpdC5cbiAgICAgICAgICAgIGRlbGV0ZSBkYXRhW2tleV07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIEZvcm1WYWx1ZVNlcnZpY2UucmVtb3ZlTXVsdGlTZWxlY3RMYWJlbHMoZGF0YVtrZXldKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBpc1JlYWRPbmx5KGZpZWxkOiBDYXNlRmllbGQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmllbGQuZGlzcGxheV9jb250ZXh0ID8gZmllbGQuZGlzcGxheV9jb250ZXh0LnRvVXBwZXJDYXNlKCkgPT09ICdSRUFET05MWScgOiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGlzT3B0aW9uYWwoZmllbGQ6IENhc2VGaWVsZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmaWVsZC5kaXNwbGF5X2NvbnRleHQgPyBmaWVsZC5kaXNwbGF5X2NvbnRleHQudG9VcHBlckNhc2UoKSA9PT0gJ09QVElPTkFMJyA6IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaXNMYWJlbChmaWVsZDogQ2FzZUZpZWxkKTogYm9vbGVhbiB7XG4gICAgaWYgKGZpZWxkLmZpZWxkX3R5cGUpIHtcbiAgICAgIHJldHVybiBmaWVsZC5maWVsZF90eXBlLnR5cGUgPT09ICdMYWJlbCc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBpc0VtcHR5RGF0YShkYXRhOiBvYmplY3QpOiBib29sZWFuIHtcbiAgICBpZiAoZGF0YSkge1xuICAgICAgbGV0IGFsbEVtcHR5ID0gdHJ1ZTtcbiAgICAgIGZvciAoY29uc3QgcHJvcCBvZiBPYmplY3Qua2V5cyhkYXRhKSkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGRhdGFbcHJvcF07XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgIGlmICh0eXBlb2YodmFsdWUpID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgYWxsRW1wdHkgPSBhbGxFbXB0eSAmJiB0aGlzLmlzRW1wdHlEYXRhKHZhbHVlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYWxsRW1wdHkgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBhbGxFbXB0eTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogU2hvdWxkIHdlIGNsZWFyIG91dCBvcHRpb25hbCwgZW1wdHksIGNvbXBsZXggb2JqZWN0cz9cbiAgICogQHBhcmFtIGNsZWFyRW1wdHkgRmFsc2UgcHJvcGVydHkgaWYgd2Ugc2ltcGx5IHdhbnQgdG8gc2tpcCBpdC5cbiAgICogQHBhcmFtIGRhdGEgVGhlIGRhdGEgdG8gYXNzZXNzIGZvciBcImVtcHRpbmVzc1wiLlxuICAgKiBAcGFyYW0gZmllbGQgVGhlIENhc2VGaWVsZCB0aGF0IHdpbGwgdGVsbCB1cyBpZiB0aGlzIGlzIG9wdGlvbmFsLlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgY2xlYXJPcHRpb25hbEVtcHR5KGNsZWFyRW1wdHk6IGJvb2xlYW4sIGRhdGE6IG9iamVjdCwgZmllbGQ6IENhc2VGaWVsZCk6IGJvb2xlYW4ge1xuICAgIGlmIChjbGVhckVtcHR5KSB7XG4gICAgICByZXR1cm4gRm9ybVZhbHVlU2VydmljZS5pc09wdGlvbmFsKGZpZWxkKSAmJiBGb3JtVmFsdWVTZXJ2aWNlLmlzRW1wdHlEYXRhKGRhdGEpO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGZpZWxkVHlwZVNhbml0aXNlcjogRmllbGRUeXBlU2FuaXRpc2VyKSB7XG4gIH1cblxuICBwdWJsaWMgc2FuaXRpc2UocmF3VmFsdWU6IG9iamVjdCk6IG9iamVjdCB7XG4gICAgcmV0dXJuIHRoaXMuc2FuaXRpc2VPYmplY3QocmF3VmFsdWUpO1xuICB9XG5cbiAgcHVibGljIHNhbml0aXNlQ2FzZVJlZmVyZW5jZShyZWZlcmVuY2U6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgLy8gc3RyaXAgbm9uIGRpZ2l0c1xuICAgIGNvbnN0IHM6IHN0cmluZyA9IHJlZmVyZW5jZS5yZXBsYWNlKC9bXFxEXS9nLCAnJyk7XG4gICAgaWYgKHMubGVuZ3RoID4gMTYpIHtcbiAgICAgIHJldHVybiBzLnN1YnN0cihzLmxlbmd0aCAtIDE2LCAxNik7XG4gICAgfVxuICAgIHJldHVybiBzO1xuICB9XG5cbiAgcHVibGljIGZpbHRlckN1cnJlbnRQYWdlRmllbGRzKGNhc2VGaWVsZHM6IENhc2VGaWVsZFtdLCBlZGl0Rm9ybTogYW55KTogYW55IHtcbiAgICBjb25zdCBjbG9uZUZvcm0gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGVkaXRGb3JtKSk7XG4gICAgT2JqZWN0LmtleXMoY2xvbmVGb3JtWydkYXRhJ10pLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgaWYgKGNhc2VGaWVsZHMuZmluZEluZGV4KChlbGVtZW50KSA9PiBlbGVtZW50LmlkID09PSBrZXkpIDwgMCkge1xuICAgICAgICBkZWxldGUgY2xvbmVGb3JtWydkYXRhJ11ba2V5XTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gY2xvbmVGb3JtO1xuICB9XG5cbiAgcHVibGljIHNhbml0aXNlRHluYW1pY0xpc3RzKGNhc2VGaWVsZHM6IENhc2VGaWVsZFtdLCBlZGl0Rm9ybTogYW55KTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5maWVsZFR5cGVTYW5pdGlzZXIuc2FuaXRpc2VMaXN0cyhjYXNlRmllbGRzLCBlZGl0Rm9ybS5kYXRhKTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhck5vbkNhc2VGaWVsZHMoZGF0YTogb2JqZWN0LCBjYXNlRmllbGRzOiBDYXNlRmllbGRbXSkge1xuICAgIGZvciAoY29uc3QgZGF0YUtleSBpbiBkYXRhKSB7XG4gICAgICBpZiAoIWNhc2VGaWVsZHMuZmluZChjZiA9PiBjZi5pZCA9PT0gZGF0YUtleSkpIHtcbiAgICAgICAgZGVsZXRlIGRhdGEgW2RhdGFLZXldO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAvLyBUT0RPIHJlZmFjdG9yIHNvIHRoYXQgdGhpcyBhbmQgcmVtb3ZlIHVubmVjZXNzYXJ5IGZpZWxkcyBoYXZlIGEgY29tbW9uIGl0ZXJhdG9yIHRoYXQgYXBwbGllcyBmdW5jdGlvbnMgdG8gZWFjaCBub2RlIHZpc2l0ZWRcbiAgcHVibGljIHJlbW92ZU51bGxMYWJlbHMoZGF0YTogb2JqZWN0LCBjYXNlRmllbGRzOiBDYXNlRmllbGRbXSkge1xuICAgIGlmIChkYXRhICYmIGNhc2VGaWVsZHMgJiYgY2FzZUZpZWxkcy5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBjaGVjayBpZiB0aGVyZSBpcyBhbnkgZGF0YSBhdCB0aGUgdG9wIGxldmVsIG9mIHRoZSBmb3JtIHRoYXQncyBub3QgaW4gdGhlIGNhc2VGaWVsZHNcbiAgICAgIGZvciAoY29uc3QgZmllbGQgb2YgY2FzZUZpZWxkcykge1xuICAgICAgICBpZiAoZmllbGQuZmllbGRfdHlwZSkge1xuICAgICAgICAgIHN3aXRjaCAoZmllbGQuZmllbGRfdHlwZS50eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdMYWJlbCc6XG4gICAgICAgICAgICAgIC8vIERlbGV0ZSBhbnkgbGFiZWxzIHRoYXQgYXJlIG51bGxcbiAgICAgICAgICAgICAgaWYgKChkYXRhW2ZpZWxkLmlkXSA9PT0gbnVsbCkgfHwgKGRhdGFbZmllbGQuaWRdID09PSAnJykpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgZGF0YVtmaWVsZC5pZF07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdDb21wbGV4JzpcbiAgICAgICAgICAgICAgLy8gUmVjdXJzZSBhbmQgcmVtb3ZlIGFueXRoaW5nIHVubmVjZXNzYXJ5IGZyb20gd2l0aGluIGEgY29tcGxleCBmaWVsZC5cbiAgICAgICAgICAgICAgdGhpcy5yZW1vdmVOdWxsTGFiZWxzKGRhdGFbZmllbGQuaWRdLCBmaWVsZC5maWVsZF90eXBlLmNvbXBsZXhfZmllbGRzKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdDb2xsZWN0aW9uJzpcbiAgICAgICAgICAgICAgLy8gR2V0IGhvbGQgb2YgdGhlIGNvbGxlY3Rpb24uXG4gICAgICAgICAgICAgIGNvbnN0IGNvbGxlY3Rpb24gPSBkYXRhW2ZpZWxkLmlkXTtcbiAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgd2UgYWN0dWFsbHkgaGF2ZSBhIGNvbGxlY3Rpb24gdG8gd29yayB3aXRoLlxuICAgICAgICAgICAgICBpZiAoY29sbGVjdGlvbiAmJiBBcnJheS5pc0FycmF5KGNvbGxlY3Rpb24pKSB7XG4gICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIGNvbGxlY3Rpb24gb2YgY29tcGxleCBvYmplY3QsIHdlIG5lZWQgdG8gaXRlcmF0ZSB0aHJvdWdoXG4gICAgICAgICAgICAgICAgLy8gYW5kIGNsZWFyIHRoZW0gb3V0LlxuICAgICAgICAgICAgICAgIGlmIChmaWVsZC5maWVsZF90eXBlLmNvbGxlY3Rpb25fZmllbGRfdHlwZS50eXBlID09PSAnQ29tcGxleCcpIHtcbiAgICAgICAgICAgICAgICAgIC8vIEl0ZXJhdGUgdGhyb3VnaCB0aGUgZWxlbWVudHMgYW5kIHJlbW92ZSBhbnkgdW5uZWNlc3NhcnkgZmllbGRzIHdpdGhpbi5cbiAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBjb2xsZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlTnVsbExhYmVscyhpdGVtLCBmaWVsZC5maWVsZF90eXBlLmNvbGxlY3Rpb25fZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlTnVsbExhYmVscyhpdGVtLnZhbHVlLCBmaWVsZC5maWVsZF90eXBlLmNvbGxlY3Rpb25fZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcyk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC8vIFRPRE8gcmVmYWN0b3Igc28gdGhhdCB0aGlzIGFuZCByZW1vdmUgdW5uZWNlc3NhcnkgZmllbGRzIGhhdmUgYSBjb21tb24gaXRlcmF0b3IgdGhhdCBhcHBsaWVzIGZ1bmN0aW9ucyB0byBlYWNoIG5vZGUgdmlzaXRlZFxuICBwdWJsaWMgcmVtb3ZlRW1wdHlEb2N1bWVudHMoZGF0YTogb2JqZWN0LCBjYXNlRmllbGRzOiBDYXNlRmllbGRbXSkge1xuICAgIGlmIChkYXRhICYmIGNhc2VGaWVsZHMgJiYgY2FzZUZpZWxkcy5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBjaGVjayBpZiB0aGVyZSBpcyBhbnkgZGF0YSBhdCB0aGUgdG9wIGxldmVsIG9mIHRoZSBmb3JtIHRoYXQncyBub3QgaW4gdGhlIGNhc2VGaWVsZHNcbiAgICAgIGZvciAoY29uc3QgZmllbGQgb2YgY2FzZUZpZWxkcykge1xuICAgICAgICBpZiAoZmllbGQuZmllbGRfdHlwZSkge1xuICAgICAgICAgIHN3aXRjaCAoZmllbGQuZmllbGRfdHlwZS50eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdDb21wbGV4JzpcbiAgICAgICAgICAgICAgLy8gUmVjdXJzZSBhbmQgcmVtb3ZlIGFueSBlbXB0eSBkb2N1bWVudHMgZnJvbSB3aXRoaW4gYSBjb21wbGV4IGZpZWxkLlxuICAgICAgICAgICAgICB0aGlzLnJlbW92ZUVtcHR5RG9jdW1lbnRzKGRhdGFbZmllbGQuaWRdLCBmaWVsZC5maWVsZF90eXBlLmNvbXBsZXhfZmllbGRzKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdDb2xsZWN0aW9uJzpcbiAgICAgICAgICAgICAgLy8gR2V0IGhvbGQgb2YgdGhlIGNvbGxlY3Rpb24uXG4gICAgICAgICAgICAgIGNvbnN0IGNvbGxlY3Rpb24gPSBkYXRhW2ZpZWxkLmlkXTtcbiAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgd2UgYWN0dWFsbHkgaGF2ZSBhIGNvbGxlY3Rpb24gdG8gd29yayB3aXRoLlxuICAgICAgICAgICAgICBpZiAoY29sbGVjdGlvbiAmJiBBcnJheS5pc0FycmF5KGNvbGxlY3Rpb24pKSB7XG4gICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIGNvbGxlY3Rpb24gb2YgY29tcGxleCBvYmplY3QsIHdlIG5lZWQgdG8gaXRlcmF0ZSB0aHJvdWdoXG4gICAgICAgICAgICAgICAgLy8gYW5kIGNsZWFyIG91dCBlbXB0eSBkb2N1bWVudHNcbiAgICAgICAgICAgICAgICBpZiAoZmllbGQuZmllbGRfdHlwZS5jb2xsZWN0aW9uX2ZpZWxkX3R5cGUudHlwZSA9PT0gJ0NvbXBsZXgnKSB7XG4gICAgICAgICAgICAgICAgICAvLyBJdGVyYXRlIHRocm91Z2ggdGhlIGVsZW1lbnRzIGFuZCByZW1vdmUgYW55IGVtcHR5IGRvY3VtZW50cyB3aXRoaW4uXG4gICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgY29sbGVjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUVtcHR5RG9jdW1lbnRzKGl0ZW0sIGZpZWxkLmZpZWxkX3R5cGUuY29sbGVjdGlvbl9maWVsZF90eXBlLmNvbXBsZXhfZmllbGRzKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVFbXB0eURvY3VtZW50cyhpdGVtLnZhbHVlLCBmaWVsZC5maWVsZF90eXBlLmNvbGxlY3Rpb25fZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcyk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnRG9jdW1lbnQnOlxuICAgICAgICAgICAgICAvLyBFbnN1cmUgdGhpcyBpcyBleGVjdXRlZCBvbmx5IGlmIHRoZSBEb2N1bWVudCBmaWVsZCBpcyBOT1QgaGlkZGVuIGFuZCBpcyBlbXB0eSBvZiBkYXRhOyBoaWRkZW4gRG9jdW1lbnRcbiAgICAgICAgICAgICAgLy8gZmllbGRzIGFyZSBoYW5kbGVkIGJ5IHRoZSBmaWx0ZXJSYXdGb3JtVmFsdWVzKCkgZnVuY3Rpb24gaW4gQ2FzZUVkaXRTdWJtaXQgY29tcG9uZW50XG4gICAgICAgICAgICAgIGlmIChmaWVsZC5oaWRkZW4gIT09IHRydWUgJiYgRm9ybVZhbHVlU2VydmljZS5pc0VtcHR5RGF0YShkYXRhW2ZpZWxkLmlkXSkpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgZGF0YVtmaWVsZC5pZF07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIENsZWFyIG91dCB1bm5lY2Vzc2FyeSBmaWVsZHMgZnJvbSBhIGRhdGEgb2JqZWN0LCBiYXNlZCBvbiBhbiBhcnJheSBvZiBDYXNlRmllbGRzLlxuICAgKiBUaGlzIG1ldGhvZCBpcyByZWN1cnNpdmUgYW5kIHdpbGwgY2FsbCBpdHNlbGYgaWYgaXQgZW5jb3VudGVycyBwYXJ0aWN1bGFyIGZpZWxkIHR5cGVzLlxuICAgKlxuICAgKiBAcGFyYW0gZGF0YSBUaGUgb2JqZWN0IHRvIGJlIHRpZGllZCB1cC5cbiAgICogQHBhcmFtIGNhc2VGaWVsZHMgVGhlIENhc2VGaWVsZHMgdGhhdCBuZWVkIHRvIGJlIGNsZWFuZWQgdXAuXG4gICAqIEBwYXJhbSBjbGVhckVtcHR5IFdoZXRoZXIgb3Igbm90IHdlIHNob3VsZCBjbGVhciBvdXQgZW1wdHksIG9wdGlvbmFsLCBjb21wbGV4IG9iamVjdHMuXG4gICAqIEBwYXJhbSBjbGVhck5vbkNhc2UgV2hldGhlciBvciBub3Qgd2Ugc2hvdWxkIGNsZWFyIG91dCBub24tY2FzZSBmaWVsZHMgYXQgdGhlIHRvcCBsZXZlbC5cbiAgICovXG4gIHB1YmxpYyByZW1vdmVVbm5lY2Vzc2FyeUZpZWxkcyhkYXRhOiBvYmplY3QsIGNhc2VGaWVsZHM6IENhc2VGaWVsZFtdLCBjbGVhckVtcHR5ID0gZmFsc2UsIGNsZWFyTm9uQ2FzZSA9IGZhbHNlLFxuICAgIGZyb21QcmV2aW91c1BhZ2UgPSBmYWxzZSwgY3VycmVudFBhZ2VDYXNlRmllbGRzID0gW10pOiB2b2lkIHtcbiAgICBpZiAoZGF0YSAmJiBjYXNlRmllbGRzICYmIGNhc2VGaWVsZHMubGVuZ3RoID4gMCkge1xuICAgICAgLy8gY2hlY2sgaWYgdGhlcmUgaXMgYW55IGRhdGEgYXQgdGhlIHRvcCBsZXZlbCBvZiB0aGUgZm9ybSB0aGF0J3Mgbm90IGluIHRoZSBjYXNlRmllbGRzXG4gICAgICBpZiAoY2xlYXJOb25DYXNlKSB7XG4gICAgICAgIHRoaXMuY2xlYXJOb25DYXNlRmllbGRzKGRhdGEsIGNhc2VGaWVsZHMpO1xuICAgICAgfVxuICAgICAgZm9yIChjb25zdCBmaWVsZCBvZiBjYXNlRmllbGRzKSB7XG4gICAgICAgIGlmICghRm9ybVZhbHVlU2VydmljZS5pc0xhYmVsKGZpZWxkKSAmJiBGb3JtVmFsdWVTZXJ2aWNlLmlzUmVhZE9ubHkoZmllbGQpKSB7XG4gICAgICAgICAgLy8gUmV0YWluIGFueXRoaW5nIHRoYXQgaXMgcmVhZG9ubHkgYW5kIG5vdCBhIGxhYmVsLlxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmaWVsZC5oaWRkZW4gPT09IHRydWUgJiYgZmllbGQuZGlzcGxheV9jb250ZXh0ICE9PSAnSElEREVOJykge1xuICAgICAgICAgIC8vIERlbGV0ZSBhbnl0aGluZyB0aGF0IGlzIGhpZGRlbiAodGhhdCBpcyBOT1QgcmVhZG9ubHkpLCBhbmQgdGhhdFxuICAgICAgICAgIC8vIGhhc24ndCBoYWQgaXRzIGRpc3BsYXlfY29udGV4dCBvdmVycmlkZGVuIHRvIG1ha2UgaXQgaGlkZGVuLlxuICAgICAgICAgIGRlbGV0ZSBkYXRhW2ZpZWxkLmlkXTtcbiAgICAgICAgfSBlbHNlIGlmIChmaWVsZC5maWVsZF90eXBlKSB7XG4gICAgICAgICAgc3dpdGNoIChmaWVsZC5maWVsZF90eXBlLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ0xhYmVsJzpcbiAgICAgICAgICAgICAgLy8gRGVsZXRlIGFueSBsYWJlbHMuXG4gICAgICAgICAgICAgIGRlbGV0ZSBkYXRhW2ZpZWxkLmlkXTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdEb2N1bWVudCc6XG4gICAgICAgICAgICAgIGlmIChGb3JtVmFsdWVTZXJ2aWNlLmlzRW1wdHlEYXRhKGRhdGFbZmllbGQuaWRdKSkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBkYXRhW2ZpZWxkLmlkXTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0NvbXBsZXgnOlxuICAgICAgICAgICAgICB0aGlzLnJlbW92ZVVubmVjZXNzYXJ5RmllbGRzKGRhdGFbZmllbGQuaWRdLCBmaWVsZC5maWVsZF90eXBlLmNvbXBsZXhfZmllbGRzLCBjbGVhckVtcHR5KTtcbiAgICAgICAgICAgICAgLy8gQWxzbyByZW1vdmUgYW55IG9wdGlvbmFsIGNvbXBsZXggb2JqZWN0cyB0aGF0IGFyZSBjb21wbGV0ZWx5IGVtcHR5LlxuICAgICAgICAgICAgICAvLyBFVUktNDI0NDogUml0ZXNoJ3MgZml4LCBwYXNzaW5nIHRydWUgaW5zdGVhZCBvZiBjbGVhckVtcHR5LlxuICAgICAgICAgICAgICBpZiAoRm9ybVZhbHVlU2VydmljZS5jbGVhck9wdGlvbmFsRW1wdHkodHJ1ZSwgZGF0YVtmaWVsZC5pZF0sIGZpZWxkKSkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBkYXRhW2ZpZWxkLmlkXTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoZGF0YVtmaWVsZC5pZF0gJiYgRm9ybVZhbHVlU2VydmljZS5pc0VtcHR5RGF0YShkYXRhW2ZpZWxkLmlkXSkgJiYgZnJvbVByZXZpb3VzUGFnZVxuICAgICAgICAgICAgICAgICYmIGN1cnJlbnRQYWdlQ2FzZUZpZWxkcy5maW5kSW5kZXgoY19maWVsZCA9PiBjX2ZpZWxkLmlkID09PSBmaWVsZC5pZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGRhdGFbZmllbGQuaWRdO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnQ29sbGVjdGlvbic6XG4gICAgICAgICAgICAgIC8vIENoZWNrIGZvciB2YWxpZCBjb2xsZWN0aW9uIGRhdGFcbiAgICAgICAgICAgICAgdGhpcy5yZW1vdmVJbnZhbGlkQ29sbGVjdGlvbkRhdGEoZGF0YSwgZmllbGQpO1xuICAgICAgICAgICAgICAvLyBHZXQgaG9sZCBvZiB0aGUgY29sbGVjdGlvbi5cbiAgICAgICAgICAgICAgY29uc3QgY29sbGVjdGlvbiA9IGRhdGFbZmllbGQuaWRdO1xuICAgICAgICAgICAgICAvLyBDaGVjayBpZiB3ZSBhY3R1YWxseSBoYXZlIGEgY29sbGVjdGlvbiB0byB3b3JrIHdpdGguXG4gICAgICAgICAgICAgIGlmIChjb2xsZWN0aW9uICYmIEFycmF5LmlzQXJyYXkoY29sbGVjdGlvbikpIHtcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIGlzIGEgY29sbGVjdGlvbiBvZiBjb21wbGV4IG9iamVjdCwgd2UgbmVlZCB0byBpdGVyYXRlIHRocm91Z2hcbiAgICAgICAgICAgICAgICAvLyBhbmQgY2xlYXIgdGhlbSBvdXQuXG4gICAgICAgICAgICAgICAgaWYgKGZpZWxkLmZpZWxkX3R5cGUuY29sbGVjdGlvbl9maWVsZF90eXBlLnR5cGUgPT09ICdDb21wbGV4Jykge1xuICAgICAgICAgICAgICAgICAgLy8gSXRlcmF0ZSB0aHJvdWdoIHRoZSBlbGVtZW50cyBhbmQgcmVtb3ZlIGFueSB1bm5lY2Vzc2FyeSBmaWVsZHMgd2l0aGluLlxuICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGNvbGxlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVVbm5lY2Vzc2FyeUZpZWxkcyhpdGVtLCBmaWVsZC5maWVsZF90eXBlLmNvbGxlY3Rpb25fZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcywgY2xlYXJFbXB0eSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlVW5uZWNlc3NhcnlGaWVsZHMoaXRlbS52YWx1ZSwgZmllbGQuZmllbGRfdHlwZS5jb2xsZWN0aW9uX2ZpZWxkX3R5cGUuY29tcGxleF9maWVsZHMsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDbGVhciBvdXQgYW55IE11bHRpU2VsZWN0IGxhYmVscy5cbiAgICBGb3JtVmFsdWVTZXJ2aWNlLnJlbW92ZU11bHRpU2VsZWN0TGFiZWxzKGRhdGEpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhbnkgZW1wdHkgb3IgaW52YWxpZCBhcnJ5IHdpdGggb25seSBpZFxuICAgKlxuICAgKiBAcGFyYW0gZGF0YSBUaGUgb2JqZWN0IHRyZWUgb2YgZm9ybSB2YWx1ZXMgb24gd2hpY2ggdG8gcGVyZm9ybSB0aGUgcmVtb3ZhbFxuICAgKiBAcGFyYW0gZmllbGQgZG9tYWluIG1vZGVsIG9iamVjdCBmb3IgZWFjaCBmaWVsZFxuICAgKi9cbiAgcHVibGljIHJlbW92ZUludmFsaWRDb2xsZWN0aW9uRGF0YShkYXRhOiBvYmplY3QsIGZpZWxkOiBDYXNlRmllbGQpIHtcbiAgICBpZiAoZGF0YVtmaWVsZC5pZF0gJiYgZGF0YVtmaWVsZC5pZF0ubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChjb25zdCBvYmpDb2xsZWN0aW9uIG9mIGRhdGFbZmllbGQuaWRdKSB7XG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhvYmpDb2xsZWN0aW9uKS5sZW5ndGggPT09IDEgJiYgT2JqZWN0LmtleXMob2JqQ29sbGVjdGlvbikuaW5kZXhPZignaWQnKSA+IC0xKSB7XG4gICAgICAgICAgZGF0YVtmaWVsZC5pZF0gPSBbXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYW55IGVtcHR5IGNvbGxlY3Rpb24gZmllbGRzIHdoZXJlIGEgdmFsdWUgb2YgZ3JlYXRlciB0aGFuIHplcm8gaXMgc3BlY2lmaWVkIGluIHRoZSBmaWVsZCdzIHtAbGluayBGaWVsZFR5cGV9XG4gICAqIGBtaW5gIGF0dHJpYnV0ZS5cbiAgICpcbiAgICogQHBhcmFtIGRhdGEgVGhlIG9iamVjdCB0cmVlIG9mIGZvcm0gdmFsdWVzIG9uIHdoaWNoIHRvIHBlcmZvcm0gdGhlIHJlbW92YWxcbiAgICogQHBhcmFtIGNhc2VGaWVsZHMgVGhlIGxpc3Qgb2YgdW5kZXJseWluZyB7QGxpbmsgQ2FzZUZpZWxkfSBkb21haW4gbW9kZWwgb2JqZWN0cyBmb3IgZWFjaCBmaWVsZFxuICAgKi9cbiAgcHVibGljIHJlbW92ZUVtcHR5Q29sbGVjdGlvbnNXaXRoTWluVmFsaWRhdGlvbihkYXRhOiBvYmplY3QsIGNhc2VGaWVsZHM6IENhc2VGaWVsZFtdKTogdm9pZCB7XG4gICAgaWYgKGRhdGEgJiYgY2FzZUZpZWxkcyAmJiBjYXNlRmllbGRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAoY29uc3QgZmllbGQgb2YgY2FzZUZpZWxkcykge1xuICAgICAgICBpZiAoZmllbGQuZmllbGRfdHlwZS50eXBlID09PSAnQ29sbGVjdGlvbicgJiYgZmllbGQuZmllbGRfdHlwZS5taW4gPiAwICYmIGRhdGFbZmllbGQuaWRdICYmXG4gICAgICAgICAgICBBcnJheS5pc0FycmF5KGRhdGFbZmllbGQuaWRdKSAmJiBkYXRhW2ZpZWxkLmlkXS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBkZWxldGUgZGF0YVtmaWVsZC5pZF07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNhbml0aXNlT2JqZWN0KHJhd09iamVjdDogb2JqZWN0KTogb2JqZWN0IHtcbiAgICBpZiAoIXJhd09iamVjdCkge1xuICAgICAgcmV0dXJuIHJhd09iamVjdDtcbiAgICB9XG5cbiAgICBsZXQgc2FuaXRpc2VkT2JqZWN0ID0ge307XG4gICAgY29uc3QgZG9jdW1lbnRGaWVsZEtleXMgPSBbJ2RvY3VtZW50X3VybCcsICdkb2N1bWVudF9iaW5hcnlfdXJsJywgJ2RvY3VtZW50X2ZpbGVuYW1lJ107XG4gICAgZm9yIChjb25zdCBrZXkgaW4gcmF3T2JqZWN0KSB7XG4gICAgICAvLyBJZiB0aGUga2V5IGlzIG9uZSBvZiBkb2N1bWVudEZpZWxkS2V5cywgaXQgbWVhbnMgdGhlIGZpZWxkIGlzIG9mIERvY3VtZW50IHR5cGUuIElmIHRoZSB2YWx1ZSBvZiBhbnkgb2YgdGhlc2VcbiAgICAgIC8vIHByb3BlcnRpZXMgaXMgbnVsbCwgdGhlIGVudGlyZSBzYW5pdGlzZWQgb2JqZWN0IHRvIGJlIHJldHVybmVkIHNob3VsZCBiZSBudWxsXG4gICAgICBpZiAoZG9jdW1lbnRGaWVsZEtleXMuaW5kZXhPZihrZXkpID4gLTEgJiYgcmF3T2JqZWN0W2tleV0gPT0gbnVsbCkge1xuICAgICAgICBzYW5pdGlzZWRPYmplY3QgPSBudWxsO1xuICAgICAgICBicmVhaztcbiAgICAgIH0gZWxzZSBpZiAoJ0Nhc2VSZWZlcmVuY2UnID09PSBrZXkpIHtcbiAgICAgICAgc2FuaXRpc2VkT2JqZWN0W2tleV0gPSB0aGlzLnNhbml0aXNlVmFsdWUodGhpcy5zYW5pdGlzZUNhc2VSZWZlcmVuY2UoU3RyaW5nKHJhd09iamVjdFtrZXldKSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2FuaXRpc2VkT2JqZWN0W2tleV0gPSB0aGlzLnNhbml0aXNlVmFsdWUocmF3T2JqZWN0W2tleV0pO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzYW5pdGlzZWRPYmplY3Rba2V5XSkpIHtcbiAgICAgICAgICAvLyBJZiB0aGUgJ3Nhbml0aXNlZCcgYXJyYXkgaXMgZW1wdHksIHdoZXJlYXMgdGhlIG9yaWdpbmFsIGFycmF5IGhhZCAxIG9yIG1vcmUgaXRlbXNcbiAgICAgICAgICAvLyBkZWxldGUgdGhlIHByb3BlcnR5IGZyb20gdGhlIHNhbmF0aXNlZCBvYmplY3RcbiAgICAgICAgICBpZiAoc2FuaXRpc2VkT2JqZWN0W2tleV0ubGVuZ3RoID09PSAwICYmIHJhd09iamVjdFtrZXldLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGRlbGV0ZSBzYW5pdGlzZWRPYmplY3Rba2V5XTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHNhbml0aXNlZE9iamVjdDtcbiAgfVxuXG4gIHByaXZhdGUgc2FuaXRpc2VBcnJheShyYXdBcnJheTogYW55W10pOiBhbnlbXSB7XG4gICAgaWYgKCFyYXdBcnJheSkge1xuICAgICAgcmV0dXJuIHJhd0FycmF5O1xuICAgIH1cblxuICAgIHJhd0FycmF5LmZvckVhY2goaXRlbSA9PiB7XG4gICAgICBpZiAoaXRlbSAmJiBpdGVtLmhhc093blByb3BlcnR5KCd2YWx1ZScpKSB7XG4gICAgICAgIGl0ZW0udmFsdWUgPSB0aGlzLnNhbml0aXNlVmFsdWUoaXRlbS52YWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBGaWx0ZXIgdGhlIGFycmF5IHRvIGVuc3VyZSBvbmx5IHRydXRoeSB2YWx1ZXMgYXJlIHJldHVybmVkOyBkb3VibGUtYmFuZyBvcGVyYXRvciByZXR1cm5zIHRoZSBib29sZWFuIHRydWUvZmFsc2VcbiAgICAvLyBhc3NvY2lhdGlvbiBvZiBhIHZhbHVlLiBJbiBhZGRpdGlvbiwgaWYgdGhlIGFycmF5IGNvbnRhaW5zIGl0ZW1zIHdpdGggYSBcInZhbHVlXCIgb2JqZWN0IHByb3BlcnR5LCByZXR1cm4gb25seVxuICAgIC8vIHRob3NlIHdob3NlIHZhbHVlIG9iamVjdCBjb250YWlucyBub24tZW1wdHkgdmFsdWVzLCBpbmNsdWRpbmcgZm9yIGFueSBkZXNjZW5kYW50IG9iamVjdHNcbiAgICByZXR1cm4gcmF3QXJyYXlcbiAgICAgIC5maWx0ZXIoaXRlbSA9PiAhIWl0ZW0pXG4gICAgICAuZmlsdGVyKGl0ZW0gPT4gaXRlbS5oYXNPd25Qcm9wZXJ0eSgndmFsdWUnKSA/IEZpZWxkc1V0aWxzLmNvbnRhaW5zTm9uRW1wdHlWYWx1ZXMoaXRlbS52YWx1ZSkgOiB0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgc2FuaXRpc2VWYWx1ZShyYXdWYWx1ZTogYW55KTogYW55IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShyYXdWYWx1ZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnNhbml0aXNlQXJyYXkocmF3VmFsdWUpO1xuICAgIH1cblxuICAgIHN3aXRjaCAodHlwZW9mIHJhd1ZhbHVlKSB7XG4gICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgICByZXR1cm4gdGhpcy5zYW5pdGlzZU9iamVjdChyYXdWYWx1ZSk7XG4gICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICByZXR1cm4gcmF3VmFsdWUudHJpbSgpO1xuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgcmV0dXJuIFN0cmluZyhyYXdWYWx1ZSk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gcmF3VmFsdWU7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,18 +1,27 @@
1
1
  import { Injectable } from '@angular/core';
2
- import { Subject } from 'rxjs';
2
+ import { Subject } from 'rxjs/Subject';
3
+ import { HttpService } from '../http';
3
4
  import * as i0 from "@angular/core";
5
+ import * as i1 from "../http";
4
6
  export class JurisdictionService {
5
- constructor() {
7
+ constructor(httpService) {
8
+ this.httpService = httpService;
6
9
  this.selectedJurisdictionSource = new Subject();
7
10
  this.selectedJurisdiction = this.selectedJurisdictionSource.asObservable();
8
11
  }
9
12
  announceSelectedJurisdiction(jurisdiction) {
10
13
  this.selectedJurisdictionSource.next(jurisdiction);
11
14
  }
15
+ searchJudicialUsers(searchTerm, serviceId) {
16
+ return this.httpService.post('api/prd/judicial/getJudicialUsersSearch', { searchString: searchTerm, serviceCode: serviceId });
17
+ }
18
+ searchJudicialUsersByPersonalCodes(personalCodes) {
19
+ return this.httpService.post('api/prd/judicial/searchJudicialUserByPersonalCodes', { personal_code: personalCodes });
20
+ }
12
21
  }
13
- JurisdictionService.ɵfac = function JurisdictionService_Factory(t) { return new (t || JurisdictionService)(); };
22
+ JurisdictionService.ɵfac = function JurisdictionService_Factory(t) { return new (t || JurisdictionService)(i0.ɵɵinject(i1.HttpService)); };
14
23
  JurisdictionService.ɵprov = i0.ɵɵdefineInjectable({ token: JurisdictionService, factory: JurisdictionService.ɵfac });
15
24
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(JurisdictionService, [{
16
25
  type: Injectable
17
- }], null, null); })();
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianVyaXNkaWN0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL3NlcnZpY2VzL2p1cmlzZGljdGlvbi9qdXJpc2RpY3Rpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBSS9CLE1BQU0sT0FBTyxtQkFBbUI7SUFEaEM7UUFHa0IsK0JBQTBCLEdBQUcsSUFBSSxPQUFPLEVBQWdCLENBQUM7UUFFbEUseUJBQW9CLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFlBQVksRUFBRSxDQUFDO0tBTTlFO0lBSlEsNEJBQTRCLENBQUMsWUFBMEI7UUFDNUQsSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNyRCxDQUFDOztzRkFSVSxtQkFBbUI7MkRBQW5CLG1CQUFtQixXQUFuQixtQkFBbUI7dUZBQW5CLG1CQUFtQjtjQUQvQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSnVyaXNkaWN0aW9uIH0gZnJvbSAnLi4vLi4vZG9tYWluL2RlZmluaXRpb24vanVyaXNkaWN0aW9uLm1vZGVsJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEp1cmlzZGljdGlvblNlcnZpY2Uge1xuXG4gIHB1YmxpYyByZWFkb25seSBzZWxlY3RlZEp1cmlzZGljdGlvblNvdXJjZSA9IG5ldyBTdWJqZWN0PEp1cmlzZGljdGlvbj4oKTtcblxuICBwdWJsaWMgc2VsZWN0ZWRKdXJpc2RpY3Rpb24gPSB0aGlzLnNlbGVjdGVkSnVyaXNkaWN0aW9uU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHB1YmxpYyBhbm5vdW5jZVNlbGVjdGVkSnVyaXNkaWN0aW9uKGp1cmlzZGljdGlvbjogSnVyaXNkaWN0aW9uKSB7XG4gICAgdGhpcy5zZWxlY3RlZEp1cmlzZGljdGlvblNvdXJjZS5uZXh0KGp1cmlzZGljdGlvbik7XG4gIH1cblxufVxuIl19
26
+ }], function () { return [{ type: i1.HttpService }]; }, null); })();
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianVyaXNkaWN0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL3NlcnZpY2VzL2p1cmlzZGljdGlvbi9qdXJpc2RpY3Rpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHdkMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7O0FBR3RDLE1BQU0sT0FBTyxtQkFBbUI7SUFLOUIsWUFBNkIsV0FBd0I7UUFBeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFIcEMsK0JBQTBCLEdBQUcsSUFBSSxPQUFPLEVBQWdCLENBQUM7UUFJeEUsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM3RSxDQUFDO0lBRU0sNEJBQTRCLENBQUMsWUFBMEI7UUFDNUQsSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRU0sbUJBQW1CLENBQUMsVUFBa0IsRUFBRSxTQUFpQjtRQUM5RCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLHlDQUF5QyxFQUFFLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUNoSSxDQUFDO0lBRU0sa0NBQWtDLENBQUMsYUFBdUI7UUFDL0QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxvREFBb0QsRUFBRSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZILENBQUM7O3NGQW5CVSxtQkFBbUI7MkRBQW5CLG1CQUFtQixXQUFuQixtQkFBbUI7dUZBQW5CLG1CQUFtQjtjQUQvQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMvU3ViamVjdCc7XG5pbXBvcnQgeyBKdXJpc2RpY3Rpb24gfSBmcm9tICcuLi8uLi9kb21haW4nO1xuaW1wb3J0IHsgSnVkaWNpYWxVc2VyTW9kZWwgfSBmcm9tICcuLi8uLi9kb21haW4vanVyaXNkaWN0aW9uJztcbmltcG9ydCB7IEh0dHBTZXJ2aWNlIH0gZnJvbSAnLi4vaHR0cCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBKdXJpc2RpY3Rpb25TZXJ2aWNlIHtcblxuICBwcml2YXRlIHJlYWRvbmx5IHNlbGVjdGVkSnVyaXNkaWN0aW9uU291cmNlID0gbmV3IFN1YmplY3Q8SnVyaXNkaWN0aW9uPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0ZWRKdXJpc2RpY3Rpb246IE9ic2VydmFibGU8SnVyaXNkaWN0aW9uPjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGh0dHBTZXJ2aWNlOiBIdHRwU2VydmljZSkge1xuICAgIHRoaXMuc2VsZWN0ZWRKdXJpc2RpY3Rpb24gPSB0aGlzLnNlbGVjdGVkSnVyaXNkaWN0aW9uU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGFubm91bmNlU2VsZWN0ZWRKdXJpc2RpY3Rpb24oanVyaXNkaWN0aW9uOiBKdXJpc2RpY3Rpb24pIHtcbiAgICB0aGlzLnNlbGVjdGVkSnVyaXNkaWN0aW9uU291cmNlLm5leHQoanVyaXNkaWN0aW9uKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWFyY2hKdWRpY2lhbFVzZXJzKHNlYXJjaFRlcm06IHN0cmluZywgc2VydmljZUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEp1ZGljaWFsVXNlck1vZGVsW10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5wb3N0KCdhcGkvcHJkL2p1ZGljaWFsL2dldEp1ZGljaWFsVXNlcnNTZWFyY2gnLCB7IHNlYXJjaFN0cmluZzogc2VhcmNoVGVybSwgc2VydmljZUNvZGU6IHNlcnZpY2VJZCB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzZWFyY2hKdWRpY2lhbFVzZXJzQnlQZXJzb25hbENvZGVzKHBlcnNvbmFsQ29kZXM6IHN0cmluZ1tdKTogT2JzZXJ2YWJsZTxKdWRpY2lhbFVzZXJNb2RlbFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UucG9zdCgnYXBpL3ByZC9qdWRpY2lhbC9zZWFyY2hKdWRpY2lhbFVzZXJCeVBlcnNvbmFsQ29kZXMnLCB7IHBlcnNvbmFsX2NvZGU6IHBlcnNvbmFsQ29kZXMgfSk7XG4gIH1cbn0iXX0=
@@ -1,5 +1,4 @@
1
1
  export * from './lib/components';
2
2
  export * from './lib/shared';
3
3
  export * from './lib/app.config';
4
- export * from './lib/case-ui-toolkit.module';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsOEJBQThCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHAuY29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Nhc2UtdWktdG9vbGtpdC5tb2R1bGUnO1xuIl19
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwLmNvbmZpZyc7XG4iXX0=