@eo-sdk/client 10.6.1 → 10.7.0-rc.1

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 (61) hide show
  1. package/app/eo-client/about-state/about-state.component.d.ts.map +1 -1
  2. package/app/eo-client/dashboard/dashboard.component.d.ts.map +1 -1
  3. package/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-setup/count-objects-setup.component.d.ts +35 -0
  4. package/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-setup/count-objects-setup.component.d.ts.map +1 -0
  5. package/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-widget.component.d.ts +24 -0
  6. package/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-widget.component.d.ts.map +1 -0
  7. package/app/eo-client/dashboard/widgets/count-objects-widget/count-objects.model.d.ts +10 -0
  8. package/app/eo-client/dashboard/widgets/count-objects-widget/count-objects.model.d.ts.map +1 -0
  9. package/app/eo-client/dashboard/widgets/hitlist-widget/IHitlist.d.ts +6 -4
  10. package/app/eo-client/dashboard/widgets/hitlist-widget/IHitlist.d.ts.map +1 -1
  11. package/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-setup/hitlist-setup.component.d.ts +6 -8
  12. package/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-setup/hitlist-setup.component.d.ts.map +1 -1
  13. package/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-widget.component.d.ts +4 -4
  14. package/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-widget.component.d.ts.map +1 -1
  15. package/app/eo-client/eo-client.module.d.ts +19 -17
  16. package/app/eo-client/eo-client.module.d.ts.map +1 -1
  17. package/app/eo-client/version-state/version-state.component.d.ts +1 -0
  18. package/app/eo-client/version-state/version-state.component.d.ts.map +1 -1
  19. package/app/eo-framework/app-shell/app-bar/app-process/app-process.component.d.ts.map +1 -1
  20. package/app/eo-framework/app-shell/app-bar/app-search/app-search.component.d.ts +6 -6
  21. package/app/eo-framework/app-shell/app-bar/app-search/app-search.component.d.ts.map +1 -1
  22. package/app/eo-framework/form-elements/codesystem/codesystem.component.d.ts.map +1 -1
  23. package/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.d.ts.map +1 -1
  24. package/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.d.ts.map +1 -1
  25. package/app/eo-framework/quick-search/quick-search/quick-search.component.d.ts.map +1 -1
  26. package/app/eo-framework-core/api/grid.service.d.ts.map +1 -1
  27. package/assets/_default/i18n/de.json +5 -1
  28. package/assets/_default/i18n/en.json +5 -1
  29. package/assets/_default/svg/ic_arrow_left.svg +1 -0
  30. package/assets/_default/svg/ic_arrow_right.svg +1 -0
  31. package/esm2020/app/eo-client/about-state/about-state.component.mjs +3 -3
  32. package/esm2020/app/eo-client/dashboard/dashboard.component.mjs +10 -1
  33. package/esm2020/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-setup/count-objects-setup.component.mjs +108 -0
  34. package/esm2020/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-widget.component.mjs +93 -0
  35. package/esm2020/app/eo-client/dashboard/widgets/count-objects-widget/count-objects.model.mjs +2 -0
  36. package/esm2020/app/eo-client/dashboard/widgets/hitlist-widget/IHitlist.mjs +1 -1
  37. package/esm2020/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-setup/hitlist-setup.component.mjs +53 -26
  38. package/esm2020/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-widget.component.mjs +64 -52
  39. package/esm2020/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox-widget.component.mjs +2 -2
  40. package/esm2020/app/eo-client/dashboard/widgets/info-intray-widget/info-intray-widget.component.mjs +2 -2
  41. package/esm2020/app/eo-client/eo-client.module.mjs +9 -3
  42. package/esm2020/app/eo-client/version-state/version-state.component.mjs +16 -13
  43. package/esm2020/app/eo-framework/actions/actions/add-resubmission-action/add-resubmission/add-resubmission.component.mjs +4 -4
  44. package/esm2020/app/eo-framework/app-shell/app-bar/app-bar.component.mjs +3 -3
  45. package/esm2020/app/eo-framework/app-shell/app-bar/app-process/app-process.component.mjs +2 -1
  46. package/esm2020/app/eo-framework/app-shell/app-bar/app-search/app-search.component.mjs +60 -31
  47. package/esm2020/app/eo-framework/form-elements/codesystem/codesystem.component.mjs +4 -2
  48. package/esm2020/app/eo-framework/form-elements/reference/reference.component.mjs +3 -3
  49. package/esm2020/app/eo-framework/form-elements/string/string.component.mjs +3 -3
  50. package/esm2020/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.mjs +5 -2
  51. package/esm2020/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.mjs +1 -1
  52. package/esm2020/app/eo-framework/object-form/object-form-edit/object-form-edit.component.mjs +2 -2
  53. package/esm2020/app/eo-framework/object-form/object-form-helper.service.mjs +2 -2
  54. package/esm2020/app/eo-framework/quick-search/quick-search/quick-search.component.mjs +4 -2
  55. package/esm2020/app/eo-framework-core/api/grid.service.mjs +7 -3
  56. package/esm2020/app/eo-framework-core/pending-changes/pending-changes.service.mjs +2 -2
  57. package/fesm2015/eo-sdk-client.mjs +401 -126
  58. package/fesm2015/eo-sdk-client.mjs.map +1 -1
  59. package/fesm2020/eo-sdk-client.mjs +392 -122
  60. package/fesm2020/eo-sdk-client.mjs.map +1 -1
  61. package/package.json +2 -2
@@ -41,7 +41,9 @@ export class CodesystemComponent {
41
41
  const el = objectType.elements.find(e => e.qname === qname) || {};
42
42
  Object.assign(cs, el.codesystem);
43
43
  }
44
- cs.entries = this.systemService.getCodesystem(this.codesystem.id).entries;
44
+ if (this.codesystem) {
45
+ cs.entries = this.systemService.getCodesystem(this.codesystem.id).entries;
46
+ }
45
47
  return cs;
46
48
  }
47
49
  ngOnInit() {
@@ -307,4 +309,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
307
309
  type: Input,
308
310
  args: ['disablingFilterFunction']
309
311
  }] } });
310
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZXN5c3RlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9mb3JtLWVsZW1lbnRzL2NvZGVzeXN0ZW0vY29kZXN5c3RlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9mb3JtLWVsZW1lbnRzL2NvZGVzeXN0ZW0vY29kZXN5c3RlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzlFLE9BQU8sRUFBdUIsYUFBYSxFQUFFLGlCQUFpQixFQUFnQyxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7QUF1QnJILE1BQU0sT0FBTyxtQkFBbUI7SUFZOUIsSUFBSSxhQUFhLENBQUMsQ0FBTTtRQUN0QixJQUFJLENBQUMsY0FBYyxHQUFHLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBQ0QsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFvQkQsSUFDSSxjQUFjLENBQUMsSUFBYztRQUMvQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELElBQ0ksdUJBQXVCLENBQUMsSUFBYztRQUN4QyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsWUFBb0IsYUFBNEI7UUFBNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUE1Q2hELFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDUixVQUFLLEdBQUcsS0FBSyxDQUFD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WUFDbEQsS0FBSyxFQUFFLElBQUk7U0FDWjtRQUNEO1lBQ0UsT0FBTyxFQUFFLGFBQWE7WUFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztZQUNsRCxLQUFLLEVBQUUsSUFBSTtTQUNaO0tBQ0YsNE9DdEJILHN3Q0FxQlk7MkZER0MsbUJBQW1CO2tCQWpCL0IsU0FBUzsrQkFDRSxlQUFlLGFBR2Q7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsb0JBQW9CLENBQUM7NEJBQ2xELEtBQUssRUFBRSxJQUFJO3lCQUNaO3dCQUNEOzRCQUNFLE9BQU8sRUFBRSxhQUFhOzRCQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxvQkFBb0IsQ0FBQzs0QkFDbEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7b0dBSTBCLGlCQUFpQjtzQkFBM0MsU0FBUzt1QkFBQyxjQUFjO2dCQUNKLGtCQUFrQjtzQkFBdEMsU0FBUzt1QkFBQyxRQUFRO2dCQXNCVixTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBTUYsY0FBYztzQkFEakIsS0FBSzt1QkFBQyxnQkFBZ0I7Z0JBT25CLHVCQUF1QjtzQkFEMUIsS0FBSzt1QkFBQyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgZm9yd2FyZFJlZiwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SLCBVbnR5cGVkRm9ybUNvbnRyb2wsIFZhbGlkYXRvcn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtJQ29kZVN5c3RlbSwgU3lzdGVtU2VydmljZX0gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7QXV0b0NvbXBsZXRlfSBmcm9tICdAeXV1dmlzL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlJztcblxuaW1wb3J0IHtUcmVlTm9kZX0gZnJvbSAnLi4vLi4vdHJlZS90cmVlLmNvbXBvbmVudC5pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlby1jb2Rlc3lzdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvZGVzeXN0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb2Rlc3lzdGVtLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQ29kZXN5c3RlbUNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IENvZGVzeXN0ZW1Db21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQ29kZXN5c3RlbUNvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciB7XG4gIEBWaWV3Q2hpbGQoJ2F1dG9jb21wbGV0ZScpIGF1dG9Db21wbGV0ZUlucHV0OiBBdXRvQ29tcGxldGU7XG4gIEBWaWV3Q2hpbGQoJ2J1dHRvbicpIGF1dG9Db21wbGV0ZUJ1dHRvbjtcblxuICBkaXNwbGF5ID0gZmFsc2U7XG4gIHByaXZhdGUgZGlydHkgPSBmYWxzZTtcbiAgcHJpdmF0ZSBpc1ZhbGlkID0gdHJ1ZTtcbiAgdmFsdWU7XG4gIC8vY29kZXN5c3RlbUVsZW1lbnQ7XG4gIHRyZWU6IFRyZWVOb2RlW107XG4gIHByaXZhdGUgX3NlbGVjdGVkTm9kZXM6IGFueTtcbiAgc2V0IHNlbGVjdGVkTm9kZXMobjogYW55KSB7XG4gICAgdGhpcy5fc2VsZWN0ZWROb2RlcyA9IHN0cnVjdHVyZWRDbG9uZShuKTtcbiAgfVxuICBnZXQgc2VsZWN0ZWROb2RlcygpIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWROb2RlcztcbiAgfVxuXG4gIGF1dG9jb21wbGV0ZVJlcztcbiAgYXV0b2NvbXBsZXRlVmFsdWVzOiBUcmVlTm9kZVtdID0gW107XG5cbiAgLyoqIGZpbHRlciBmdW5jdGlvbiB0aGF0IGNhbiBiZSBzZXQgYnkgZm9ybSBzY3JpcHQgZGV2ZWxvcGVycy4gV2hlbiBzZXQgdGhpcyBmdW5jdGlvbiB3aWxsIGJlIHByaXZhdGUgZmlsdGVyRnVuY3Rpb246IEZ1bmN0aW9uOyAqL1xuXG4gIC8qKiBjdXJyZW50IGZvcm0gc2l0dWF0aW9uICovXG4gIEBJbnB1dCgpIHNpdHVhdGlvbjogc3RyaW5nO1xuICBASW5wdXQoKSBwaWNrZXJUaXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nO1xuICBASW5wdXQoKSBjb2Rlc3lzdGVtOiBJQ29kZVN5c3RlbTtcbiAgQElucHV0KCkgbXVsdGlzZWxlY3Q6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHJlYWRvbmx5OiBib29sZWFuO1xuICBASW5wdXQoKSBpbnB1dFN0eWxlQ2xhc3MgPSAnJztcbiAgQElucHV0KCkgZW1wdHlNZXNzYWdlID0gJ2VvLmVycm9yLnN0cnVjdHVyZS50cmVlLm5vdC5hdmFpbGFibGUnO1xuXG4gIHByaXZhdGUgX2ZpbHRlckZ1bmM6IEZ1bmN0aW9uO1xuICBwcml2YXRlIF9kaXNhYmxpbmdGaWx0ZXJGdW5jOiBGdW5jdGlvbjtcblxuICBASW5wdXQoJ2ZpbHRlckZ1bmN0aW9uJylcbiAgc2V0IGZpbHRlckZ1bmN0aW9uKGZ1bmM6IEZ1bmN0aW9uKSB7XG4gICAgdGhpcy5fZmlsdGVyRnVuYyA9IGZ1bmM7XG4gICAgdGhpcy5idWlsZFRyZWUoKTtcbiAgfVxuXG4gIEBJbnB1dCgnZGlzYWJsaW5nRmlsdGVyRnVuY3Rpb24nKVxuICBzZXQgZGlzYWJsaW5nRmlsdGVyRnVuY3Rpb24oZnVuYzogRnVuY3Rpb24pIHtcbiAgICB0aGlzLl9kaXNhYmxpbmdGaWx0ZXJGdW5jID0gZnVuYztcbiAgICB0aGlzLmJ1aWxkVHJlZSgpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzeXN0ZW1TZXJ2aWNlOiBTeXN0ZW1TZXJ2aWNlKSB7XG4gIH1cblxuICBwcm90ZWN0ZWQgX2dldENvZGVzeXN0ZW1CeVFuYW1lKHFuYW1lOiBzdHJpbmcpOiBJQ29kZVN5c3RlbSB7XG4gICAgY29uc3QgY3M6IFBhcnRpYWw8SUNvZGVTeXN0ZW0+ID0ge307XG4gICAgY29uc3Qgb2JqZWN0VHlwZSA9IHRoaXMuc3lzdGVtU2VydmljZS5nZXRPYmplY3RUeXBlKHFuYW1lLnNwbGl0KCcuJylbMF0pO1xuICAgIGlmIChvYmplY3RUeXBlICYmIG9iamVjdFR5cGUuZWxlbWVudHMpIHtcbiAgICAgIGNvbnN0IGVsID0gb2JqZWN0VHlwZS5lbGVtZW50cy5maW5kKGUgPT4gZS5xbmFtZSA9PT0gcW5hbWUpIHx8IHt9O1xuICAgICAgT2JqZWN0LmFzc2lnbihjcywgZWwuY29kZXN5c3RlbSk7XG4gICAgfVxuICAgIGNzLmVudHJpZXMgPSB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0Q29kZXN5c3RlbSh0aGlzLmNvZGVzeXN0ZW0uaWQpLmVudHJpZXM7XG4gICAgcmV0dXJuIChjcyBhcyBJQ29kZVN5c3RlbSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICAvKiogbG9hZCBjb2Rlc3lzdGVtIGVudHJpZXMgaWYgdGhleSBhcmVuJ3QgYXR0YWNoZWQgKi9cbiAgICBpZiAodGhpcy5jb2Rlc3lzdGVtICYmICF0aGlzLmNvZGVzeXN0ZW0uZW50cmllcykge1xuICAgICAgdGhpcy5jb2Rlc3lzdGVtLmVudHJpZXMgPSB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0Q29kZXN5c3RlbSh0aGlzLmNvZGVzeXN0ZW0uaWQpLmVudHJpZXM7XG4gICAgfVxuICAgIC8vIGluIHNlYXJjaCBzaXR1YXRpb24gY29kZXN5c3RlbXMgYXJlIGFsd2F5cyBtdWx0aXNlbGVjdGFibGVcbiAgICBpZiAodGhpcy5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICB0aGlzLm11bHRpc2VsZWN0ID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5idWlsZFRyZWUoKTtcbiAgfVxuXG4gIHByb3BhZ2F0ZUNoYW5nZSA9IChfOiBhbnkpID0+IHtcbiAgfTtcblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmRpcnR5ID0gZmFsc2U7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlIHx8IG51bGw7XG4gICAgY29uc3QgdmFsdWVzID0gIXRoaXMudmFsdWUgfHwgQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSA/IHRoaXMudmFsdWUgfHwgW10gOiBbdGhpcy52YWx1ZV07XG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICh0aGlzLm11bHRpc2VsZWN0KSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlcyA9IFtdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3Qgbm9kZXMgPSAhdGhpcy5zZWxlY3RlZE5vZGVzIHx8IEFycmF5LmlzQXJyYXkodGhpcy5zZWxlY3RlZE5vZGVzKSA/IHRoaXMuc2VsZWN0ZWROb2RlcyB8fCBbXSA6IFt0aGlzLnNlbGVjdGVkTm9kZXNdO1xuXG4gICAgaWYgKHRoaXMuY29kZXN5c3RlbSAmJiAobm9kZXMubGVuZ3RoICE9PSB2YWx1ZXMubGVuZ3RoIHx8IG5vZGVzLnNvbWUoKG4sIGkpID0+IG4uZGF0YS5kYXRhICE9PSB2YWx1ZXNbaV0pKSkge1xuICAgICAgdGhpcy5idWlsZFRyZWUoKTtcbiAgICB9XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICB9XG5cbiAgLy8gaGFuZGxlciBpbnZva2VkIHdoZW4gYW4gZW50cnkgd2FzIHNlbGVjdGVkIHVzaW5nIHRoZSBhdXRvY29tcGxldGUgaW5wdXRcbiAgb25BdXRvQ29tcGxldGVTZWxlY3Qobm9kZT8pIHtcbiAgICBjb25zdCB3YXNJbnZhbGlkID0gIXRoaXMuaXNWYWxpZDtcbiAgICB0aGlzLmlzVmFsaWQgPSB0cnVlO1xuICAgIC8vdGhpcy51cGRhdGVUcmVlKCk7XG4gICAgdGhpcy5zZXRGb3JtQ29udHJvbFZhbHVlKHdhc0ludmFsaWQpO1xuICB9XG5cbiAgb25BdXRvY29tcGxldGVWYWx1ZUNoYW5nZSh2OiBhbnkpIHtcbiAgICBpZiAodiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkTm9kZXMgPSBudWxsXG4gICAgICB0aGlzLnNldEZvcm1Db250cm9sVmFsdWUoKTtcbiAgICB9XG4gIH1cblxuICAvLyBoYW5kbGVyIGludm9rZWQgd2hlbiBhbiBlbnRyeSB3YXMgZGVzZWxlY3RlZCB1c2luZyB0aGUgYXV0b2NvbXBsZXRlIGlucHV0XG4gIG9uQXV0b0NvbXBsZXRlVW5zZWxlY3Qobm9kZT8pIHtcbiAgICB0aGlzLnNlbGVjdGVkTm9kZXMgPSB0aGlzLnNlbGVjdGVkTm9kZXMuZmlsdGVyKFxuICAgICAgc05vZGUgPT4gc05vZGUuaWQgIT09IG5vZGUuaWRcbiAgICApO1xuICAgIC8vdGhpcy51cGRhdGVUcmVlKCk7XG4gICAgdGhpcy5zZXRGb3JtQ29udHJvbFZhbHVlKCk7XG4gIH1cblxuICAvLyB0cmlnZ2VyZWQgd2hlbiB0aGUgc2VsZWN0aW9uIHdhcyBjaGFuZ2VkIGJ5XG4gIG9uVHJlZVNlbGVjdGlvbkNoYW5nZWQoZXZ0KSB7XG4gICAgaWYgKCF0aGlzLm11bHRpc2VsZWN0KSB7XG4gICAgICAvLyBoaWRlIHRoZSBkaWFsb2dcbiAgICAgIHRoaXMuc2V0RGlhbG9nVmlzaWJsZShmYWxzZSk7XG4gICAgfVxuICAgIGNvbnN0IHdhc0ludmFsaWQgPSAhdGhpcy5pc1ZhbGlkO1xuICAgIHRoaXMuaXNWYWxpZCA9IHRydWU7XG4gICAgdGhpcy5zZXRGb3JtQ29udHJvbFZhbHVlKHdhc0ludmFsaWQpO1xuICB9XG5cbiAgb25DbGVhcigpIHtcbiAgICBpZiAoIXRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWROb2RlcyA9IG51bGw7XG4gICAgfVxuICAgIHRoaXMuc2V0Rm9ybUNvbnRyb2xWYWx1ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgYW5kIHByb3BhZ2F0ZXMgdGhlIGZvcm0gY29udHJvbHMgdmFsdWUgYmFzZWQgb24gdGhlIGNvbXBvbmVudHMgaW5uZXIgdmFsdWVzLiBQcm9wYWdhdGVzIG9ubHlcbiAgICogd2hlbiB0aGUgdmFsdWUgaGFzIGNoYW5nZWQuXG4gICAqIEBwYXJhbSBmb3JjZVByb3BhZ2F0aW9uIC0gZm9yY2VzIHByb3BhZ2F0aW9uIGV2ZW4gaWYgdGhlIHZhbHVlIGhhc24ndCBiZWVuIGNoYW5nZWRcbiAgICovXG4gIHByaXZhdGUgc2V0Rm9ybUNvbnRyb2xWYWx1ZShmb3JjZVByb3BhZ2F0aW9uPzogYm9vbGVhbikge1xuICAgIGxldCB2O1xuICAgIGxldCBjaGFuZ2VkOiBib29sZWFuO1xuICAgIGlmICh0aGlzLm11bHRpc2VsZWN0KSB7XG4gICAgICB2ID0gdGhpcy5zZWxlY3RlZE5vZGVzLm1hcChub2RlID0+IG5vZGUuZGF0YS5kYXRhKTtcbiAgICAgIGNoYW5nZWQgPVxuICAgICAgICAhdGhpcy52YWx1ZSB8fFxuICAgICAgICAhKFxuICAgICAgICAgIHYubGVuZ3RoID09PSB0aGlzLnZhbHVlLmxlbmd0aCAmJlxuICAgICAgICAgIHYuZXZlcnkodmFsID0+IHRoaXMudmFsdWUuc29tZShjdXJWYWwgPT4gY3VyVmFsID09PSB2YWwpKVxuICAgICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB2ID0gdGhpcy5zZWxlY3RlZE5vZGVzID8gdGhpcy5zZWxlY3RlZE5vZGVzLmRhdGEuZGF0YSA6IG51bGw7XG4gICAgICBjaGFuZ2VkID0gdiAhPT0gdGhpcy52YWx1ZTtcbiAgICB9XG4gICAgLy8gb25seSBwcm9wYWdhdGUgdGhlIGNoYW5nZSBpZiB0aGUgdmFsdWUgaXMgZGlmZmVyZW50IGZyb20gdGhlIGN1cnJlbnQgb25lXG4gICAgLy8gb3RoZXJ3aXNlIHdlIHdvdWxkIGFsd2F5cyBzZXQgdGhlIGRpcnR5IGZsYWcgYWx0aG91Z2ggbm90aGluZyBjaGFuZ2VkXG4gICAgaWYgKGNoYW5nZWQgfHwgZm9yY2VQcm9wYWdhdGlvbikge1xuICAgICAgdGhpcy52YWx1ZSA9IHY7XG4gICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICAvLyBidWlsZCB0aGUgdHJlZSBmb3IgdGhlIGRpYWxvZ1xuICBwcml2YXRlIGJ1aWxkVHJlZSgpIHtcblxuICAgIHRoaXMuc2VsZWN0ZWROb2RlcyA9IHRoaXMubXVsdGlzZWxlY3QgPyBbXSA6IG51bGw7XG4gICAgdGhpcy5hdXRvY29tcGxldGVWYWx1ZXMgPSBbXTtcbiAgICBsZXQgdHJlZTogVHJlZU5vZGVbXSA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jb2Rlc3lzdGVtLmVudHJpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMuYWRkVHJlZU5vZGUodHJlZSwgdGhpcy5jb2Rlc3lzdGVtLmVudHJpZXNbaV0pO1xuICAgIH1cbiAgICB0aGlzLnRyZWUgPSB0cmVlO1xuICAgIHRoaXMuYXV0b2NvbXBsZXRlUmVzID0gdGhpcy5hdXRvY29tcGxldGVWYWx1ZXM7XG4gIH1cblxuICBwcml2YXRlIGFkZFRyZWVOb2RlKHBhcmVudE5vZGU6IFRyZWVOb2RlW10sIGNvZGVzeXN0ZW1FbnRyeSkge1xuICAgIGlmICh0aGlzLl9maWx0ZXJGdW5jICYmICF0aGlzLl9maWx0ZXJGdW5jKGNvZGVzeXN0ZW1FbnRyeSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IG5vZGU6IFRyZWVOb2RlID0gdGhpcy5jc0VudHJ5VG9UcmVlTm9kZShjb2Rlc3lzdGVtRW50cnkpO1xuICAgIGlmIChub2RlLnNlbGVjdGFibGUpIHtcbiAgICAgIC8qKiBhZGQgc2VsZWN0YWJsZSBub2RlcyB0byBhdXRvY29tcGxldGUgdmFsdWVzICovXG4gICAgICB0aGlzLmF1dG9jb21wbGV0ZVZhbHVlcy5wdXNoKG5vZGUpO1xuICAgIH1cbiAgICBpZiAoY29kZXN5c3RlbUVudHJ5LnN1YmVudHJpZXMpIHtcbiAgICAgIG5vZGUuY2hpbGRyZW4gPSBbXTtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2Rlc3lzdGVtRW50cnkuc3ViZW50cmllcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLmFkZFRyZWVOb2RlKG5vZGUuY2hpbGRyZW4sIGNvZGVzeXN0ZW1FbnRyeS5zdWJlbnRyaWVzW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5jaGVja1NlbGVjdGVkKG5vZGUpO1xuICAgIHBhcmVudE5vZGUucHVzaChub2RlKTtcbiAgfVxuXG4gIC8vIHNvbWUgbm9kZXMgYXJlIG9ubHkgdmlzaWJsZSBpbiBzb21lIGNhc2VzLlxuICBwcml2YXRlIGlzSGlkZGVuKGNvZGVzeXN0ZW1FbnRyeSkge1xuICAgIHJldHVybiAoXG4gICAgICAodGhpcy5zaXR1YXRpb24gPT09ICdDUkVBVEUnICYmICFjb2Rlc3lzdGVtRW50cnkuYWxsb3dlZG9ubmV3KSB8fFxuICAgICAgKHRoaXMuc2l0dWF0aW9uID09PSAnRURJVCcgJiYgIWNvZGVzeXN0ZW1FbnRyeS5hbGxvd2Vkb251cGRhdGUpIHx8XG4gICAgICAodGhpcy5fZGlzYWJsaW5nRmlsdGVyRnVuYyAmJiB0aGlzLl9kaXNhYmxpbmdGaWx0ZXJGdW5jKGNvZGVzeXN0ZW1FbnRyeSkpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tTZWxlY3RlZChub2RlOiBUcmVlTm9kZSkge1xuICAgIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChub2RlLmRhdGEuZGF0YSA9PT0gdGhpcy52YWx1ZVtpXSkge1xuICAgICAgICAgIG5vZGUuc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2Rlcy5wdXNoKG5vZGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChub2RlLmRhdGEuZGF0YSA9PT0gdGhpcy52YWx1ZSkge1xuICAgICAgICBub2RlLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzID0gbm9kZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhdXRvY29tcGxldGVGbih0ZXJtOiBzdHJpbmcpIHtcbiAgICB0aGlzLmF1dG9jb21wbGV0ZVJlcyA9IHRoaXMuYXV0b2NvbXBsZXRlVmFsdWVzLmZpbHRlcihhY05vZGUgPT4ge1xuICAgICAgaWYgKHRoaXMuX2ZpbHRlckZ1bmMgJiYgIXRoaXMuX2ZpbHRlckZ1bmMoYWNOb2RlLmRhdGEpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIC8vIHNraXAgbm9kZXMgdGhhdCBhcmUgYWxyZWFkeSBzZWxlY3RlZFxuICAgICAgaWYgKHRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2Rlcy5maW5kKG5vZGUgPT4gYWNOb2RlLmRhdGEuZGF0YSA9PT0gbm9kZS5kYXRhLmRhdGEpXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGFjTm9kZS5uYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZih0ZXJtLnRvTG93ZXJDYXNlKCkpICE9PSAtMTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIHRyYW5zZm9ybSBjb2Rlc3lzdGVtIGVudHJ5IHRvIHRyZWUgbm9kZVxuICBwcml2YXRlIGNzRW50cnlUb1RyZWVOb2RlKGNvZGVzeXN0ZW1FbnRyeSk6IFRyZWVOb2RlIHtcbiAgICAvLyBkZXRlcm1pbmUgd2hldGhlciBvciBub3QgdGhlIHRyZWUgbm9kZSBzaG91bGQgYmUgc2VsZWN0YWJsZVxuICAgIGxldCBzZWxlY3RhYmxlID0gZmFsc2U7XG4gICAgaWYgKHRoaXMuY29kZXN5c3RlbS5hbGxlbGVtZW50c3NlbGVjdGFibGUpIHtcbiAgICAgIC8vIGNhc2U6IGFsbCBlbGVtZW50cyBhcmUgc2VsZWN0YWJsZS4gVGhpcyBtZWFucyB0aGF0IG5vdCBvbmx5IGxlYWYgbm9kZXNcbiAgICAgIC8vIGFyZSBzZWxlY3RhYmxlIGJ1dCBhbHNvIHRoZWlyIHBhcmVudCBub2Rlc1xuICAgICAgc2VsZWN0YWJsZSA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGNhc2U6IG9ubHkgbGVhZiBub2RlcyBhcmUgc2VsZWN0YWJsZVxuICAgICAgc2VsZWN0YWJsZSA9ICEoXG4gICAgICAgIGNvZGVzeXN0ZW1FbnRyeS5zdWJlbnRyaWVzICYmIGNvZGVzeXN0ZW1FbnRyeS5zdWJlbnRyaWVzLmxlbmd0aCA+IDBcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBpZDogY29kZXN5c3RlbUVudHJ5LmlkLFxuICAgICAgbmFtZTogY29kZXN5c3RlbUVudHJ5LmRlZmF1bHRyZXByZXNlbnRhdGlvbixcbiAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgIGV4cGFuZGVkOiBmYWxzZSxcbiAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgIHNlbGVjdGFibGU6IHNlbGVjdGFibGUgJiYgIXRoaXMuaXNIaWRkZW4oY29kZXN5c3RlbUVudHJ5KSxcbiAgICAgIGRhdGE6IGNvZGVzeXN0ZW1FbnRyeVxuICAgIH07XG4gIH1cblxuICBzZXREaWFsb2dWaXNpYmxlKHZpc2libGU6IGJvb2xlYW4sIGV2ZW50PzogRXZlbnQpIHtcbiAgICBpZiAoZXZlbnQpIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIC8vaWdub3JlIHN5bnRoZXRpemVkIGV2ZW50cyBvbiBlbnRlclxuICAgICAgaWYgKGV2ZW50LnR5cGUgPT09ICdjbGljaycgJiYgKGV2ZW50IGFzIFBvaW50ZXJFdmVudCkuZGV0YWlsID09PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5kaXNwbGF5ID0gdmlzaWJsZTtcbiAgfVxuXG4gIC8vIHJldHVybnMgbnVsbCB3aGVuIHZhbGlkIGVsc2UgdGhlIHZhbGlkYXRpb24gb2JqZWN0XG4gIHB1YmxpYyB2YWxpZGF0ZShjOiBVbnR5cGVkRm9ybUNvbnRyb2wpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkXG4gICAgICA/IG51bGxcbiAgICAgIDoge1xuICAgICAgICBjb2Rlc3lzdGVtOiB7XG4gICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH07XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJlby1jb2Rlc3lzdGVtXCIgKm5nSWY9XCJjb2Rlc3lzdGVtXCJcbiAgW25nQ2xhc3NdPVwie2Z1bGw6IHNlbGVjdGVkTm9kZXMgJiYgc2VsZWN0ZWROb2Rlcy5sZW5ndGggPT09IGF1dG9jb21wbGV0ZVZhbHVlcy5sZW5ndGgsIHJlYWRvbmx5OiByZWFkb25seX1cIj5cblxuICA8eXZjLWF1dG9jb21wbGV0ZSAjYXV0b2NvbXBsZXRlIChzdWdnZXN0aW9uU2VsZWN0KT1cIm9uQXV0b0NvbXBsZXRlU2VsZWN0KCRldmVudClcIlxuICAgIChzdWdnZXN0aW9uVW5zZWxlY3QpPVwib25BdXRvQ29tcGxldGVVbnNlbGVjdCgkZXZlbnQpXCIgW2F1dG9jb21wbGV0ZVZhbHVlc109XCJhdXRvY29tcGxldGVSZXNcIiBmaWVsZD1cIm5hbWVcIlxuICAgIFtkaXNhYmxlZF09XCJyZWFkb25seVwiIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiIFtmb3JjZVNlbGVjdGlvbl09XCJ0cnVlXCIgKGF1dG9jb21wbGV0ZUZuYyk9XCJhdXRvY29tcGxldGVGbigkZXZlbnQpXCJcbiAgICBbbXVsdGlwbGVdPVwibXVsdGlzZWxlY3RcIiAobmdNb2RlbENoYW5nZSk9XCJvbkF1dG9jb21wbGV0ZVZhbHVlQ2hhbmdlKCRldmVudClcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkTm9kZXNcIj5cbiAgPC95dmMtYXV0b2NvbXBsZXRlPlxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAjYnV0dG9uICpuZ0lmPVwiIXJlYWRvbmx5XCJcbiAgKGNsaWNrKT1cInNldERpYWxvZ1Zpc2libGUodHJ1ZSwgJGV2ZW50KVwiIFxuICAoa2V5ZG93bi5lbnRlcik9XCJzZXREaWFsb2dWaXNpYmxlKHRydWUsICRldmVudClcIiBcbiAgPlxuICAgIDxlby1pY29uIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2Fycm93X2Rvd24uc3ZnJ1wiPjwvZW8taWNvbj5cbiAgPC9idXR0b24+XG48L2Rpdj5cblxuPGVvLWRpYWxvZyBbdGl0bGVdPVwicGlja2VyVGl0bGUgfHwgJydcIiBbdmlzaWJsZV09XCJkaXNwbGF5XCIgKGhpZGUpPVwiZGlzcGxheSA9IGZhbHNlXCI+XG4gIDxlby10cmVlIFt0cmVlXT1cInRyZWVcIiBbaXNEaXNwbGF5ZWRdPVwiZGlzcGxheVwiICpuZ0lmPVwiZGlzcGxheVwiIFtvcHRpb25zXT1cInttdWx0aXNlbGVjdDogbXVsdGlzZWxlY3R9XCJcbiAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkTm9kZXNcIiAobmdNb2RlbENoYW5nZSk9XCJvblRyZWVTZWxlY3Rpb25DaGFuZ2VkKCRldmVudClcIiBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgIFtlbXB0eU1lc3NhZ2VdPVwiZW1wdHlNZXNzYWdlXCI+XG4gIDwvZW8tdHJlZT5cbjwvZW8tZGlhbG9nPiJdfQ==
312
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZXN5c3RlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9mb3JtLWVsZW1lbnRzL2NvZGVzeXN0ZW0vY29kZXN5c3RlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9mb3JtLWVsZW1lbnRzL2NvZGVzeXN0ZW0vY29kZXN5c3RlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzlFLE9BQU8sRUFBdUIsYUFBYSxFQUFFLGlCQUFpQixFQUFnQyxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7QUF1QnJILE1BQU0sT0FBTyxtQkFBbUI7SUFZOUIsSUFBSSxhQUFhLENBQUMsQ0FBTTtRQUN0QixJQUFJLENBQUMsY0FBYyxHQUFHLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBQ0QsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFvQkQsSUFDSSxjQUFjLENBQUMsSUFBYztRQUMvQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELElBQ0ksdUJBQXVCLENBQUMsSUFBYztRQUN4QyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsWUFBb0IsYUFBNEI7UUFBNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUE1Q2hELFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDUixVQUFLLEdBQUcsS0FBSyxDQUFD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QUFVLENBQUMsR0FBRyxFQUFFLENBQUMsbUJBQW1CLENBQUM7WUFDbEQsS0FBSyxFQUFFLElBQUk7U0FDWjtRQUNEO1lBQ0UsT0FBTyxFQUFFLGFBQWE7WUFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztZQUNsRCxLQUFLLEVBQUUsSUFBSTtTQUNaO0tBQ0YsNE9DdEJILHN3Q0FxQlk7MkZER0MsbUJBQW1CO2tCQWpCL0IsU0FBUzsrQkFDRSxlQUFlLGFBR2Q7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsb0JBQW9CLENBQUM7NEJBQ2xELEtBQUssRUFBRSxJQUFJO3lCQUNaO3dCQUNEOzRCQUNFLE9BQU8sRUFBRSxhQUFhOzRCQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxvQkFBb0IsQ0FBQzs0QkFDbEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7b0dBSTBCLGlCQUFpQjtzQkFBM0MsU0FBUzt1QkFBQyxjQUFjO2dCQUNKLGtCQUFrQjtzQkFBdEMsU0FBUzt1QkFBQyxRQUFRO2dCQXNCVixTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBTUYsY0FBYztzQkFEakIsS0FBSzt1QkFBQyxnQkFBZ0I7Z0JBT25CLHVCQUF1QjtzQkFEMUIsS0FBSzt1QkFBQyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgZm9yd2FyZFJlZiwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SLCBVbnR5cGVkRm9ybUNvbnRyb2wsIFZhbGlkYXRvcn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtJQ29kZVN5c3RlbSwgU3lzdGVtU2VydmljZX0gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7QXV0b0NvbXBsZXRlfSBmcm9tICdAeXV1dmlzL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlJztcblxuaW1wb3J0IHtUcmVlTm9kZX0gZnJvbSAnLi4vLi4vdHJlZS90cmVlLmNvbXBvbmVudC5pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlby1jb2Rlc3lzdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvZGVzeXN0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb2Rlc3lzdGVtLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQ29kZXN5c3RlbUNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IENvZGVzeXN0ZW1Db21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQ29kZXN5c3RlbUNvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciB7XG4gIEBWaWV3Q2hpbGQoJ2F1dG9jb21wbGV0ZScpIGF1dG9Db21wbGV0ZUlucHV0OiBBdXRvQ29tcGxldGU7XG4gIEBWaWV3Q2hpbGQoJ2J1dHRvbicpIGF1dG9Db21wbGV0ZUJ1dHRvbjtcblxuICBkaXNwbGF5ID0gZmFsc2U7XG4gIHByaXZhdGUgZGlydHkgPSBmYWxzZTtcbiAgcHJpdmF0ZSBpc1ZhbGlkID0gdHJ1ZTtcbiAgdmFsdWU7XG4gIC8vY29kZXN5c3RlbUVsZW1lbnQ7XG4gIHRyZWU6IFRyZWVOb2RlW107XG4gIHByaXZhdGUgX3NlbGVjdGVkTm9kZXM6IGFueTtcbiAgc2V0IHNlbGVjdGVkTm9kZXMobjogYW55KSB7XG4gICAgdGhpcy5fc2VsZWN0ZWROb2RlcyA9IHN0cnVjdHVyZWRDbG9uZShuKTtcbiAgfVxuICBnZXQgc2VsZWN0ZWROb2RlcygpIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWROb2RlcztcbiAgfVxuXG4gIGF1dG9jb21wbGV0ZVJlcztcbiAgYXV0b2NvbXBsZXRlVmFsdWVzOiBUcmVlTm9kZVtdID0gW107XG5cbiAgLyoqIGZpbHRlciBmdW5jdGlvbiB0aGF0IGNhbiBiZSBzZXQgYnkgZm9ybSBzY3JpcHQgZGV2ZWxvcGVycy4gV2hlbiBzZXQgdGhpcyBmdW5jdGlvbiB3aWxsIGJlIHByaXZhdGUgZmlsdGVyRnVuY3Rpb246IEZ1bmN0aW9uOyAqL1xuXG4gIC8qKiBjdXJyZW50IGZvcm0gc2l0dWF0aW9uICovXG4gIEBJbnB1dCgpIHNpdHVhdGlvbjogc3RyaW5nO1xuICBASW5wdXQoKSBwaWNrZXJUaXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nO1xuICBASW5wdXQoKSBjb2Rlc3lzdGVtOiBJQ29kZVN5c3RlbTtcbiAgQElucHV0KCkgbXVsdGlzZWxlY3Q6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHJlYWRvbmx5OiBib29sZWFuO1xuICBASW5wdXQoKSBpbnB1dFN0eWxlQ2xhc3MgPSAnJztcbiAgQElucHV0KCkgZW1wdHlNZXNzYWdlID0gJ2VvLmVycm9yLnN0cnVjdHVyZS50cmVlLm5vdC5hdmFpbGFibGUnO1xuXG4gIHByaXZhdGUgX2ZpbHRlckZ1bmM6IEZ1bmN0aW9uO1xuICBwcml2YXRlIF9kaXNhYmxpbmdGaWx0ZXJGdW5jOiBGdW5jdGlvbjtcblxuICBASW5wdXQoJ2ZpbHRlckZ1bmN0aW9uJylcbiAgc2V0IGZpbHRlckZ1bmN0aW9uKGZ1bmM6IEZ1bmN0aW9uKSB7XG4gICAgdGhpcy5fZmlsdGVyRnVuYyA9IGZ1bmM7XG4gICAgdGhpcy5idWlsZFRyZWUoKTtcbiAgfVxuXG4gIEBJbnB1dCgnZGlzYWJsaW5nRmlsdGVyRnVuY3Rpb24nKVxuICBzZXQgZGlzYWJsaW5nRmlsdGVyRnVuY3Rpb24oZnVuYzogRnVuY3Rpb24pIHtcbiAgICB0aGlzLl9kaXNhYmxpbmdGaWx0ZXJGdW5jID0gZnVuYztcbiAgICB0aGlzLmJ1aWxkVHJlZSgpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzeXN0ZW1TZXJ2aWNlOiBTeXN0ZW1TZXJ2aWNlKSB7XG4gIH1cblxuICBwcm90ZWN0ZWQgX2dldENvZGVzeXN0ZW1CeVFuYW1lKHFuYW1lOiBzdHJpbmcpOiBJQ29kZVN5c3RlbSB7XG4gICAgY29uc3QgY3M6IFBhcnRpYWw8SUNvZGVTeXN0ZW0+ID0ge307XG4gICAgY29uc3Qgb2JqZWN0VHlwZSA9IHRoaXMuc3lzdGVtU2VydmljZS5nZXRPYmplY3RUeXBlKHFuYW1lLnNwbGl0KCcuJylbMF0pO1xuICAgIGlmIChvYmplY3RUeXBlICYmIG9iamVjdFR5cGUuZWxlbWVudHMpIHtcbiAgICAgIGNvbnN0IGVsID0gb2JqZWN0VHlwZS5lbGVtZW50cy5maW5kKGUgPT4gZS5xbmFtZSA9PT0gcW5hbWUpIHx8IHt9O1xuICAgICAgT2JqZWN0LmFzc2lnbihjcywgZWwuY29kZXN5c3RlbSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmNvZGVzeXN0ZW0pIHtcbiAgICAgIGNzLmVudHJpZXMgPSB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0Q29kZXN5c3RlbSh0aGlzLmNvZGVzeXN0ZW0uaWQpLmVudHJpZXM7XG4gICAgfVxuICAgIHJldHVybiAoY3MgYXMgSUNvZGVTeXN0ZW0pO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLyoqIGxvYWQgY29kZXN5c3RlbSBlbnRyaWVzIGlmIHRoZXkgYXJlbid0IGF0dGFjaGVkICovXG4gICAgaWYgKHRoaXMuY29kZXN5c3RlbSAmJiAhdGhpcy5jb2Rlc3lzdGVtLmVudHJpZXMpIHtcbiAgICAgIHRoaXMuY29kZXN5c3RlbS5lbnRyaWVzID0gdGhpcy5zeXN0ZW1TZXJ2aWNlLmdldENvZGVzeXN0ZW0odGhpcy5jb2Rlc3lzdGVtLmlkKS5lbnRyaWVzO1xuICAgIH1cbiAgICAvLyBpbiBzZWFyY2ggc2l0dWF0aW9uIGNvZGVzeXN0ZW1zIGFyZSBhbHdheXMgbXVsdGlzZWxlY3RhYmxlXG4gICAgaWYgKHRoaXMuc2l0dWF0aW9uID09PSAnU0VBUkNIJykge1xuICAgICAgdGhpcy5tdWx0aXNlbGVjdCA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMuYnVpbGRUcmVlKCk7XG4gIH1cblxuICBwcm9wYWdhdGVDaGFuZ2UgPSAoXzogYW55KSA9PiB7XG4gIH07XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5kaXJ0eSA9IGZhbHNlO1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZSB8fCBudWxsO1xuICAgIGNvbnN0IHZhbHVlcyA9ICF0aGlzLnZhbHVlIHx8IEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkgPyB0aGlzLnZhbHVlIHx8IFtdIDogW3RoaXMudmFsdWVdO1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAodGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZXMgPSBbXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlcyA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IG5vZGVzID0gIXRoaXMuc2VsZWN0ZWROb2RlcyB8fCBBcnJheS5pc0FycmF5KHRoaXMuc2VsZWN0ZWROb2RlcykgPyB0aGlzLnNlbGVjdGVkTm9kZXMgfHwgW10gOiBbdGhpcy5zZWxlY3RlZE5vZGVzXTtcblxuICAgIGlmICh0aGlzLmNvZGVzeXN0ZW0gJiYgKG5vZGVzLmxlbmd0aCAhPT0gdmFsdWVzLmxlbmd0aCB8fCBub2Rlcy5zb21lKChuLCBpKSA9PiBuLmRhdGEuZGF0YSAhPT0gdmFsdWVzW2ldKSkpIHtcbiAgICAgIHRoaXMuYnVpbGRUcmVlKCk7XG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgfVxuXG4gIC8vIGhhbmRsZXIgaW52b2tlZCB3aGVuIGFuIGVudHJ5IHdhcyBzZWxlY3RlZCB1c2luZyB0aGUgYXV0b2NvbXBsZXRlIGlucHV0XG4gIG9uQXV0b0NvbXBsZXRlU2VsZWN0KG5vZGU/KSB7XG4gICAgY29uc3Qgd2FzSW52YWxpZCA9ICF0aGlzLmlzVmFsaWQ7XG4gICAgdGhpcy5pc1ZhbGlkID0gdHJ1ZTtcbiAgICAvL3RoaXMudXBkYXRlVHJlZSgpO1xuICAgIHRoaXMuc2V0Rm9ybUNvbnRyb2xWYWx1ZSh3YXNJbnZhbGlkKTtcbiAgfVxuXG4gIG9uQXV0b2NvbXBsZXRlVmFsdWVDaGFuZ2UodjogYW55KSB7XG4gICAgaWYgKHYgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzID0gbnVsbFxuICAgICAgdGhpcy5zZXRGb3JtQ29udHJvbFZhbHVlKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gaGFuZGxlciBpbnZva2VkIHdoZW4gYW4gZW50cnkgd2FzIGRlc2VsZWN0ZWQgdXNpbmcgdGhlIGF1dG9jb21wbGV0ZSBpbnB1dFxuICBvbkF1dG9Db21wbGV0ZVVuc2VsZWN0KG5vZGU/KSB7XG4gICAgdGhpcy5zZWxlY3RlZE5vZGVzID0gdGhpcy5zZWxlY3RlZE5vZGVzLmZpbHRlcihcbiAgICAgIHNOb2RlID0+IHNOb2RlLmlkICE9PSBub2RlLmlkXG4gICAgKTtcbiAgICAvL3RoaXMudXBkYXRlVHJlZSgpO1xuICAgIHRoaXMuc2V0Rm9ybUNvbnRyb2xWYWx1ZSgpO1xuICB9XG5cbiAgLy8gdHJpZ2dlcmVkIHdoZW4gdGhlIHNlbGVjdGlvbiB3YXMgY2hhbmdlZCBieVxuICBvblRyZWVTZWxlY3Rpb25DaGFuZ2VkKGV2dCkge1xuICAgIGlmICghdGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgLy8gaGlkZSB0aGUgZGlhbG9nXG4gICAgICB0aGlzLnNldERpYWxvZ1Zpc2libGUoZmFsc2UpO1xuICAgIH1cbiAgICBjb25zdCB3YXNJbnZhbGlkID0gIXRoaXMuaXNWYWxpZDtcbiAgICB0aGlzLmlzVmFsaWQgPSB0cnVlO1xuICAgIHRoaXMuc2V0Rm9ybUNvbnRyb2xWYWx1ZSh3YXNJbnZhbGlkKTtcbiAgfVxuXG4gIG9uQ2xlYXIoKSB7XG4gICAgaWYgKCF0aGlzLm11bHRpc2VsZWN0KSB7XG4gICAgICB0aGlzLnNlbGVjdGVkTm9kZXMgPSBudWxsO1xuICAgIH1cbiAgICB0aGlzLnNldEZvcm1Db250cm9sVmFsdWUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIGFuZCBwcm9wYWdhdGVzIHRoZSBmb3JtIGNvbnRyb2xzIHZhbHVlIGJhc2VkIG9uIHRoZSBjb21wb25lbnRzIGlubmVyIHZhbHVlcy4gUHJvcGFnYXRlcyBvbmx5XG4gICAqIHdoZW4gdGhlIHZhbHVlIGhhcyBjaGFuZ2VkLlxuICAgKiBAcGFyYW0gZm9yY2VQcm9wYWdhdGlvbiAtIGZvcmNlcyBwcm9wYWdhdGlvbiBldmVuIGlmIHRoZSB2YWx1ZSBoYXNuJ3QgYmVlbiBjaGFuZ2VkXG4gICAqL1xuICBwcml2YXRlIHNldEZvcm1Db250cm9sVmFsdWUoZm9yY2VQcm9wYWdhdGlvbj86IGJvb2xlYW4pIHtcbiAgICBsZXQgdjtcbiAgICBsZXQgY2hhbmdlZDogYm9vbGVhbjtcbiAgICBpZiAodGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgdiA9IHRoaXMuc2VsZWN0ZWROb2Rlcy5tYXAobm9kZSA9PiBub2RlLmRhdGEuZGF0YSk7XG4gICAgICBjaGFuZ2VkID1cbiAgICAgICAgIXRoaXMudmFsdWUgfHxcbiAgICAgICAgIShcbiAgICAgICAgICB2Lmxlbmd0aCA9PT0gdGhpcy52YWx1ZS5sZW5ndGggJiZcbiAgICAgICAgICB2LmV2ZXJ5KHZhbCA9PiB0aGlzLnZhbHVlLnNvbWUoY3VyVmFsID0+IGN1clZhbCA9PT0gdmFsKSlcbiAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdiA9IHRoaXMuc2VsZWN0ZWROb2RlcyA/IHRoaXMuc2VsZWN0ZWROb2Rlcy5kYXRhLmRhdGEgOiBudWxsO1xuICAgICAgY2hhbmdlZCA9IHYgIT09IHRoaXMudmFsdWU7XG4gICAgfVxuICAgIC8vIG9ubHkgcHJvcGFnYXRlIHRoZSBjaGFuZ2UgaWYgdGhlIHZhbHVlIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBjdXJyZW50IG9uZVxuICAgIC8vIG90aGVyd2lzZSB3ZSB3b3VsZCBhbHdheXMgc2V0IHRoZSBkaXJ0eSBmbGFnIGFsdGhvdWdoIG5vdGhpbmcgY2hhbmdlZFxuICAgIGlmIChjaGFuZ2VkIHx8IGZvcmNlUHJvcGFnYXRpb24pIHtcbiAgICAgIHRoaXMudmFsdWUgPSB2O1xuICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgLy8gYnVpbGQgdGhlIHRyZWUgZm9yIHRoZSBkaWFsb2dcbiAgcHJpdmF0ZSBidWlsZFRyZWUoKSB7XG5cbiAgICB0aGlzLnNlbGVjdGVkTm9kZXMgPSB0aGlzLm11bHRpc2VsZWN0ID8gW10gOiBudWxsO1xuICAgIHRoaXMuYXV0b2NvbXBsZXRlVmFsdWVzID0gW107XG4gICAgbGV0IHRyZWU6IFRyZWVOb2RlW10gPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY29kZXN5c3RlbS5lbnRyaWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLmFkZFRyZWVOb2RlKHRyZWUsIHRoaXMuY29kZXN5c3RlbS5lbnRyaWVzW2ldKTtcbiAgICB9XG4gICAgdGhpcy50cmVlID0gdHJlZTtcbiAgICB0aGlzLmF1dG9jb21wbGV0ZVJlcyA9IHRoaXMuYXV0b2NvbXBsZXRlVmFsdWVzO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRUcmVlTm9kZShwYXJlbnROb2RlOiBUcmVlTm9kZVtdLCBjb2Rlc3lzdGVtRW50cnkpIHtcbiAgICBpZiAodGhpcy5fZmlsdGVyRnVuYyAmJiAhdGhpcy5fZmlsdGVyRnVuYyhjb2Rlc3lzdGVtRW50cnkpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBub2RlOiBUcmVlTm9kZSA9IHRoaXMuY3NFbnRyeVRvVHJlZU5vZGUoY29kZXN5c3RlbUVudHJ5KTtcbiAgICBpZiAobm9kZS5zZWxlY3RhYmxlKSB7XG4gICAgICAvKiogYWRkIHNlbGVjdGFibGUgbm9kZXMgdG8gYXV0b2NvbXBsZXRlIHZhbHVlcyAqL1xuICAgICAgdGhpcy5hdXRvY29tcGxldGVWYWx1ZXMucHVzaChub2RlKTtcbiAgICB9XG4gICAgaWYgKGNvZGVzeXN0ZW1FbnRyeS5zdWJlbnRyaWVzKSB7XG4gICAgICBub2RlLmNoaWxkcmVuID0gW107XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29kZXN5c3RlbUVudHJ5LnN1YmVudHJpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy5hZGRUcmVlTm9kZShub2RlLmNoaWxkcmVuLCBjb2Rlc3lzdGVtRW50cnkuc3ViZW50cmllc1tpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuY2hlY2tTZWxlY3RlZChub2RlKTtcbiAgICBwYXJlbnROb2RlLnB1c2gobm9kZSk7XG4gIH1cblxuICAvLyBzb21lIG5vZGVzIGFyZSBvbmx5IHZpc2libGUgaW4gc29tZSBjYXNlcy5cbiAgcHJpdmF0ZSBpc0hpZGRlbihjb2Rlc3lzdGVtRW50cnkpIHtcbiAgICByZXR1cm4gKFxuICAgICAgKHRoaXMuc2l0dWF0aW9uID09PSAnQ1JFQVRFJyAmJiAhY29kZXN5c3RlbUVudHJ5LmFsbG93ZWRvbm5ldykgfHxcbiAgICAgICh0aGlzLnNpdHVhdGlvbiA9PT0gJ0VESVQnICYmICFjb2Rlc3lzdGVtRW50cnkuYWxsb3dlZG9udXBkYXRlKSB8fFxuICAgICAgKHRoaXMuX2Rpc2FibGluZ0ZpbHRlckZ1bmMgJiYgdGhpcy5fZGlzYWJsaW5nRmlsdGVyRnVuYyhjb2Rlc3lzdGVtRW50cnkpKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrU2VsZWN0ZWQobm9kZTogVHJlZU5vZGUpIHtcbiAgICBpZiAoIXRoaXMudmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy52YWx1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAobm9kZS5kYXRhLmRhdGEgPT09IHRoaXMudmFsdWVbaV0pIHtcbiAgICAgICAgICBub2RlLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZXMucHVzaChub2RlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAobm9kZS5kYXRhLmRhdGEgPT09IHRoaXMudmFsdWUpIHtcbiAgICAgICAgbm9kZS5zZWxlY3RlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlcyA9IG5vZGU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXV0b2NvbXBsZXRlRm4odGVybTogc3RyaW5nKSB7XG4gICAgdGhpcy5hdXRvY29tcGxldGVSZXMgPSB0aGlzLmF1dG9jb21wbGV0ZVZhbHVlcy5maWx0ZXIoYWNOb2RlID0+IHtcbiAgICAgIGlmICh0aGlzLl9maWx0ZXJGdW5jICYmICF0aGlzLl9maWx0ZXJGdW5jKGFjTm9kZS5kYXRhKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICAvLyBza2lwIG5vZGVzIHRoYXQgYXJlIGFscmVhZHkgc2VsZWN0ZWRcbiAgICAgIGlmICh0aGlzLm11bHRpc2VsZWN0KSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZXMuZmluZChub2RlID0+IGFjTm9kZS5kYXRhLmRhdGEgPT09IG5vZGUuZGF0YS5kYXRhKVxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBhY05vZGUubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YodGVybS50b0xvd2VyQ2FzZSgpKSAhPT0gLTE7XG4gICAgfSk7XG4gIH1cblxuICAvLyB0cmFuc2Zvcm0gY29kZXN5c3RlbSBlbnRyeSB0byB0cmVlIG5vZGVcbiAgcHJpdmF0ZSBjc0VudHJ5VG9UcmVlTm9kZShjb2Rlc3lzdGVtRW50cnkpOiBUcmVlTm9kZSB7XG4gICAgLy8gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IHRoZSB0cmVlIG5vZGUgc2hvdWxkIGJlIHNlbGVjdGFibGVcbiAgICBsZXQgc2VsZWN0YWJsZSA9IGZhbHNlO1xuICAgIGlmICh0aGlzLmNvZGVzeXN0ZW0uYWxsZWxlbWVudHNzZWxlY3RhYmxlKSB7XG4gICAgICAvLyBjYXNlOiBhbGwgZWxlbWVudHMgYXJlIHNlbGVjdGFibGUuIFRoaXMgbWVhbnMgdGhhdCBub3Qgb25seSBsZWFmIG5vZGVzXG4gICAgICAvLyBhcmUgc2VsZWN0YWJsZSBidXQgYWxzbyB0aGVpciBwYXJlbnQgbm9kZXNcbiAgICAgIHNlbGVjdGFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBjYXNlOiBvbmx5IGxlYWYgbm9kZXMgYXJlIHNlbGVjdGFibGVcbiAgICAgIHNlbGVjdGFibGUgPSAhKFxuICAgICAgICBjb2Rlc3lzdGVtRW50cnkuc3ViZW50cmllcyAmJiBjb2Rlc3lzdGVtRW50cnkuc3ViZW50cmllcy5sZW5ndGggPiAwXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IGNvZGVzeXN0ZW1FbnRyeS5pZCxcbiAgICAgIG5hbWU6IGNvZGVzeXN0ZW1FbnRyeS5kZWZhdWx0cmVwcmVzZW50YXRpb24sXG4gICAgICBjaGlsZHJlbjogW10sXG4gICAgICBleHBhbmRlZDogZmFsc2UsXG4gICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICBzZWxlY3RhYmxlOiBzZWxlY3RhYmxlICYmICF0aGlzLmlzSGlkZGVuKGNvZGVzeXN0ZW1FbnRyeSksXG4gICAgICBkYXRhOiBjb2Rlc3lzdGVtRW50cnlcbiAgICB9O1xuICB9XG5cbiAgc2V0RGlhbG9nVmlzaWJsZSh2aXNpYmxlOiBib29sZWFuLCBldmVudD86IEV2ZW50KSB7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAvL2lnbm9yZSBzeW50aGV0aXplZCBldmVudHMgb24gZW50ZXJcbiAgICAgIGlmIChldmVudC50eXBlID09PSAnY2xpY2snICYmIChldmVudCBhcyBQb2ludGVyRXZlbnQpLmRldGFpbCA9PT0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuZGlzcGxheSA9IHZpc2libGU7XG4gIH1cblxuICAvLyByZXR1cm5zIG51bGwgd2hlbiB2YWxpZCBlbHNlIHRoZSB2YWxpZGF0aW9uIG9iamVjdFxuICBwdWJsaWMgdmFsaWRhdGUoYzogVW50eXBlZEZvcm1Db250cm9sKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZFxuICAgICAgPyBudWxsXG4gICAgICA6IHtcbiAgICAgICAgY29kZXN5c3RlbToge1xuICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9O1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZW8tY29kZXN5c3RlbVwiICpuZ0lmPVwiY29kZXN5c3RlbVwiXG4gIFtuZ0NsYXNzXT1cIntmdWxsOiBzZWxlY3RlZE5vZGVzICYmIHNlbGVjdGVkTm9kZXMubGVuZ3RoID09PSBhdXRvY29tcGxldGVWYWx1ZXMubGVuZ3RoLCByZWFkb25seTogcmVhZG9ubHl9XCI+XG5cbiAgPHl2Yy1hdXRvY29tcGxldGUgI2F1dG9jb21wbGV0ZSAoc3VnZ2VzdGlvblNlbGVjdCk9XCJvbkF1dG9Db21wbGV0ZVNlbGVjdCgkZXZlbnQpXCJcbiAgICAoc3VnZ2VzdGlvblVuc2VsZWN0KT1cIm9uQXV0b0NvbXBsZXRlVW5zZWxlY3QoJGV2ZW50KVwiIFthdXRvY29tcGxldGVWYWx1ZXNdPVwiYXV0b2NvbXBsZXRlUmVzXCIgZmllbGQ9XCJuYW1lXCJcbiAgICBbZGlzYWJsZWRdPVwicmVhZG9ubHlcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiBbZm9yY2VTZWxlY3Rpb25dPVwidHJ1ZVwiIChhdXRvY29tcGxldGVGbmMpPVwiYXV0b2NvbXBsZXRlRm4oJGV2ZW50KVwiXG4gICAgW211bHRpcGxlXT1cIm11bHRpc2VsZWN0XCIgKG5nTW9kZWxDaGFuZ2UpPVwib25BdXRvY29tcGxldGVWYWx1ZUNoYW5nZSgkZXZlbnQpXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZE5vZGVzXCI+XG4gIDwveXZjLWF1dG9jb21wbGV0ZT5cbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgI2J1dHRvbiAqbmdJZj1cIiFyZWFkb25seVwiXG4gIChjbGljayk9XCJzZXREaWFsb2dWaXNpYmxlKHRydWUsICRldmVudClcIiBcbiAgKGtleWRvd24uZW50ZXIpPVwic2V0RGlhbG9nVmlzaWJsZSh0cnVlLCAkZXZlbnQpXCIgXG4gID5cbiAgICA8ZW8taWNvbiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19hcnJvd19kb3duLnN2ZydcIj48L2VvLWljb24+XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG5cbjxlby1kaWFsb2cgW3RpdGxlXT1cInBpY2tlclRpdGxlIHx8ICcnXCIgW3Zpc2libGVdPVwiZGlzcGxheVwiIChoaWRlKT1cImRpc3BsYXkgPSBmYWxzZVwiPlxuICA8ZW8tdHJlZSBbdHJlZV09XCJ0cmVlXCIgW2lzRGlzcGxheWVkXT1cImRpc3BsYXlcIiAqbmdJZj1cImRpc3BsYXlcIiBbb3B0aW9uc109XCJ7bXVsdGlzZWxlY3Q6IG11bHRpc2VsZWN0fVwiXG4gICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZE5vZGVzXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25UcmVlU2VsZWN0aW9uQ2hhbmdlZCgkZXZlbnQpXCIgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICBbZW1wdHlNZXNzYWdlXT1cImVtcHR5TWVzc2FnZVwiPlxuICA8L2VvLXRyZWU+XG48L2VvLWRpYWxvZz4iXX0=
@@ -189,7 +189,7 @@ ReferenceComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", ver
189
189
  useExisting: forwardRef(() => ReferenceComponent),
190
190
  multi: true
191
191
  }
192
- ], viewQueries: [{ propertyName: "autoCompleteInput", first: true, predicate: ["autocomplete"], descendants: true }], ngImport: i0, template: "<div class=\"eo-form-reference\" [ngClass]=\"{acInputHidden: !multiselect && !!innerValue.length}\">\n\n <yvc-autocomplete [ngModel]=\"innerValue\" #autocomplete (suggestionSelect)=\"onSelect($event)\"\n (suggestionUnselect)=\"onUnselect($event)\" [disabled]=\"readonly\" [multiple]=\"true\"\n [autocompleteValues]=\"autocompleteRes\" [field]=\"'value'\" [forceSelection]=\"true\" (blur)=\"onAutoCompleteBlur()\"\n (keyup.enter)=\"onKeyUpEnter($event)\" (autocompleteFnc)=\"autocompleteFn($event)\">\n\n <!-- template for the suggest list -->\n <ng-template let-item #autocompleteOptionTemplate>\n <span class=\"yvc-autocomplete-token-label\" title=\"{{item.value}} ({{item.title}})\">\n <strong>{{item.value}}</strong>\n <span>{{item.title}}</span>\n </span>\n </ng-template>\n\n <!-- template for the selected items -->\n <ng-template let-item #chipTemplate>\n <a class=\"link router-link\" [routerLink]=\"['/result']\" [queryParams]=\"getItemLinkParams(item)\">\n <svg focusable=\"false\" class=\"ref-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\">\n <path d=\"M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8\n 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z\">\n </path>\n </svg>\n </a>\n <span class=\"yvc-autocomplete-token-label\">{{item.value}}</span>\n\n </ng-template>\n </yvc-autocomplete>\n</div>\n", styles: [".eo-form-reference{display:flex;align-items:center;justify-content:space-between}.eo-form-reference yvc-autocomplete{flex:1 1 auto;border:0;outline:0}.eo-form-reference a.link eo-icon{width:18px;height:18px}.yvc-autocomplete-token-label{display:flex;flex-flow:column}.yvc-autocomplete-token-label>span{font-size:var(--font-hint)}:host ::ng-deep .eo-form-reference.acInputHidden .inputToken{width:0!important;margin:0;padding:0}:host ::ng-deep .eo-form-reference.acInputHidden .inputToken input{width:0!important}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.RouterLinkDirective, selector: "a[routerLink]" }, { kind: "directive", type: i5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i6.AutoComplete, selector: "yvc-autocomplete", inputs: ["field", "placeholder", "minLength", "multiple", "typeahead", "distinctValues", "forceSelection", "autocompleteValues", "disabled"], outputs: ["autocompleteFnc", "blur", "focus", "suggestionUnselect", "suggestionSelect"] }] });
192
+ ], viewQueries: [{ propertyName: "autoCompleteInput", first: true, predicate: ["autocomplete"], descendants: true }], ngImport: i0, template: "<div class=\"eo-form-reference\" [ngClass]=\"{acInputHidden: !multiselect && !!innerValue.length}\">\n\n <yvc-autocomplete [ngModel]=\"innerValue\" #autocomplete (suggestionSelect)=\"onSelect($event)\"\n (suggestionUnselect)=\"onUnselect($event)\" [disabled]=\"readonly\" [multiple]=\"true\"\n [autocompleteValues]=\"autocompleteRes\" [field]=\"'value'\" [forceSelection]=\"true\" (blur)=\"onAutoCompleteBlur()\"\n (keyup.enter)=\"onKeyUpEnter($event)\" (autocompleteFnc)=\"autocompleteFn($event)\">\n\n <!-- template for the suggest list -->\n <ng-template let-item #autocompleteOptionTemplate>\n <span class=\"yvc-autocomplete-token-label\" title=\"{{item.value}} ({{item.title}})\">\n <strong>{{item.value}}</strong>\n <span>{{item.title}}</span>\n </span>\n </ng-template>\n\n <!-- template for the selected items -->\n <ng-template let-item #chipTemplate>\n <a class=\"link router-link\" [routerLink]=\"['/result']\" [queryParams]=\"getItemLinkParams(item)\">\n <svg focusable=\"false\" class=\"ref-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\">\n <path d=\"M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8\n 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z\">\n </path>\n </svg>\n </a>\n <span class=\"yvc-autocomplete-token-label\">{{item.value}}</span>\n\n </ng-template>\n </yvc-autocomplete>\n</div>", styles: [".eo-form-reference{display:flex;align-items:center;justify-content:space-between}.eo-form-reference yvc-autocomplete{flex:1 1 auto;border:0;outline:0}.eo-form-reference a.link eo-icon{width:18px;height:18px}.yvc-autocomplete-token-label{display:flex;flex-flow:column}.yvc-autocomplete-token-label>span{font-size:var(--font-hint)}:host ::ng-deep .eo-form-reference.acInputHidden .inputToken{width:0!important;margin:0;padding:0}:host ::ng-deep .eo-form-reference.acInputHidden .inputToken input{width:0!important}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.RouterLinkDirective, selector: "a[routerLink]" }, { kind: "directive", type: i5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i6.AutoComplete, selector: "yvc-autocomplete", inputs: ["field", "placeholder", "minLength", "multiple", "typeahead", "distinctValues", "forceSelection", "autocompleteValues", "disabled"], outputs: ["autocompleteFnc", "blur", "focus", "suggestionUnselect", "suggestionSelect"] }] });
193
193
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ReferenceComponent, decorators: [{
194
194
  type: Component,
195
195
  args: [{ selector: 'eo-reference', providers: [
@@ -203,7 +203,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
203
203
  useExisting: forwardRef(() => ReferenceComponent),
204
204
  multi: true
205
205
  }
206
- ], template: "<div class=\"eo-form-reference\" [ngClass]=\"{acInputHidden: !multiselect && !!innerValue.length}\">\n\n <yvc-autocomplete [ngModel]=\"innerValue\" #autocomplete (suggestionSelect)=\"onSelect($event)\"\n (suggestionUnselect)=\"onUnselect($event)\" [disabled]=\"readonly\" [multiple]=\"true\"\n [autocompleteValues]=\"autocompleteRes\" [field]=\"'value'\" [forceSelection]=\"true\" (blur)=\"onAutoCompleteBlur()\"\n (keyup.enter)=\"onKeyUpEnter($event)\" (autocompleteFnc)=\"autocompleteFn($event)\">\n\n <!-- template for the suggest list -->\n <ng-template let-item #autocompleteOptionTemplate>\n <span class=\"yvc-autocomplete-token-label\" title=\"{{item.value}} ({{item.title}})\">\n <strong>{{item.value}}</strong>\n <span>{{item.title}}</span>\n </span>\n </ng-template>\n\n <!-- template for the selected items -->\n <ng-template let-item #chipTemplate>\n <a class=\"link router-link\" [routerLink]=\"['/result']\" [queryParams]=\"getItemLinkParams(item)\">\n <svg focusable=\"false\" class=\"ref-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\">\n <path d=\"M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8\n 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z\">\n </path>\n </svg>\n </a>\n <span class=\"yvc-autocomplete-token-label\">{{item.value}}</span>\n\n </ng-template>\n </yvc-autocomplete>\n</div>\n", styles: [".eo-form-reference{display:flex;align-items:center;justify-content:space-between}.eo-form-reference yvc-autocomplete{flex:1 1 auto;border:0;outline:0}.eo-form-reference a.link eo-icon{width:18px;height:18px}.yvc-autocomplete-token-label{display:flex;flex-flow:column}.yvc-autocomplete-token-label>span{font-size:var(--font-hint)}:host ::ng-deep .eo-form-reference.acInputHidden .inputToken{width:0!important;margin:0;padding:0}:host ::ng-deep .eo-form-reference.acInputHidden .inputToken input{width:0!important}\n"] }]
206
+ ], template: "<div class=\"eo-form-reference\" [ngClass]=\"{acInputHidden: !multiselect && !!innerValue.length}\">\n\n <yvc-autocomplete [ngModel]=\"innerValue\" #autocomplete (suggestionSelect)=\"onSelect($event)\"\n (suggestionUnselect)=\"onUnselect($event)\" [disabled]=\"readonly\" [multiple]=\"true\"\n [autocompleteValues]=\"autocompleteRes\" [field]=\"'value'\" [forceSelection]=\"true\" (blur)=\"onAutoCompleteBlur()\"\n (keyup.enter)=\"onKeyUpEnter($event)\" (autocompleteFnc)=\"autocompleteFn($event)\">\n\n <!-- template for the suggest list -->\n <ng-template let-item #autocompleteOptionTemplate>\n <span class=\"yvc-autocomplete-token-label\" title=\"{{item.value}} ({{item.title}})\">\n <strong>{{item.value}}</strong>\n <span>{{item.title}}</span>\n </span>\n </ng-template>\n\n <!-- template for the selected items -->\n <ng-template let-item #chipTemplate>\n <a class=\"link router-link\" [routerLink]=\"['/result']\" [queryParams]=\"getItemLinkParams(item)\">\n <svg focusable=\"false\" class=\"ref-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\">\n <path d=\"M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8\n 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z\">\n </path>\n </svg>\n </a>\n <span class=\"yvc-autocomplete-token-label\">{{item.value}}</span>\n\n </ng-template>\n </yvc-autocomplete>\n</div>", styles: [".eo-form-reference{display:flex;align-items:center;justify-content:space-between}.eo-form-reference yvc-autocomplete{flex:1 1 auto;border:0;outline:0}.eo-form-reference a.link eo-icon{width:18px;height:18px}.yvc-autocomplete-token-label{display:flex;flex-flow:column}.yvc-autocomplete-token-label>span{font-size:var(--font-hint)}:host ::ng-deep .eo-form-reference.acInputHidden .inputToken{width:0!important;margin:0;padding:0}:host ::ng-deep .eo-form-reference.acInputHidden .inputToken input{width:0!important}\n"] }]
207
207
  }], ctorParameters: function () { return [{ type: i1.SearchService }]; }, propDecorators: { autoCompleteInput: [{
208
208
  type: ViewChild,
209
209
  args: ['autocomplete']
@@ -220,4 +220,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
220
220
  }], onReferenceClicked: [{
221
221
  type: Output
222
222
  }] } });
223
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmZXJlbmNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL2Zvcm0tZWxlbWVudHMvcmVmZXJlbmNlL3JlZmVyZW5jZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9mb3JtLWVsZW1lbnRzL3JlZmVyZW5jZS9yZWZlcmVuY2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzVGLE9BQU8sRUFFTCxpQkFBaUIsRUFHakIsYUFBYSxFQUNkLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFnQixLQUFLLEVBQUMsTUFBTSxjQUFjLENBQUM7Ozs7Ozs7O0FBb0JsRCxNQUFNLE9BQU8sa0JBQWtCO0lBcUI3QixZQUFvQixhQUE0QjtRQUE1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQVJ0Qyx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBS2xELHVCQUF1QjtRQUN2QixlQUFVLEdBQXFDLEVBQUUsQ0FBQztRQUtsRCxvQkFBZSxHQUFHLENBQUMsS0FBVSxFQUFFLEVBQUU7UUFDakMsQ0FBQyxDQUFBO0lBSEQsQ0FBQztJQUtELGFBQWEsQ0FBQyxZQUFZLEVBQUUsS0FBSztRQUMvQixPQUFPLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNsQyxPQUFPO2dCQUNMLEtBQUssRUFBRSxDQUFDO2dCQUNSLEtBQUssRUFBRSxJQUFJO2FBQ1osQ0FBQTtRQUNILENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNKLEtBQUssRUFB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QkFBM0MsU0FBUzt1QkFBQyxjQUFjO2dCQUVoQixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBSUcsU0FBUztzQkFBakIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUksa0JBQWtCO3NCQUEzQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIGZvcndhcmRSZWYsIElucHV0LCBWaWV3Q2hpbGQsIE91dHB1dCwgRXZlbnRFbWl0dGVyfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgVmFsaWRhdG9yLFxuICBVbnR5cGVkRm9ybUNvbnRyb2wsXG4gIE5HX1ZBTElEQVRPUlNcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtTZWFyY2hTZXJ2aWNlLCBVdGlsc30gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7QXV0b0NvbXBsZXRlfSBmcm9tICdAeXV1dmlzL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZW8tcmVmZXJlbmNlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlZmVyZW5jZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JlZmVyZW5jZS5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFJlZmVyZW5jZUNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFJlZmVyZW5jZUNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBSZWZlcmVuY2VDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yIHtcblxuICBAVmlld0NoaWxkKCdhdXRvY29tcGxldGUnKSBhdXRvQ29tcGxldGVJbnB1dDogQXV0b0NvbXBsZXRlO1xuXG4gIEBJbnB1dCgpIHJlYWRvbmx5OiBib29sZWFuO1xuICBASW5wdXQoKSBtdWx0aXNlbGVjdDogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFByb3BlcnR5IHRvIHNlYXJjaCBmb3IsIGFzd2VsbCBhcyB0aGUgb2JqZWN0IHR5cGVcbiAgICovXG4gIEBJbnB1dCgpIHJlZmVyZW5jZToge2VsZW1lbnQ6IHN0cmluZywgdHlwZTogc3RyaW5nfTtcbiAgQElucHV0KCkgbWluTGVuZ3RoOiBudW1iZXI7XG4gIEBJbnB1dCgpIG1heExlbmd0aDogbnVtYmVyO1xuXG4gIEBPdXRwdXQoKSBvblJlZmVyZW5jZUNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgYXV0b2NvbXBsZXRlUmVzOiBhbnlbXTtcbiAgLy8gbW9kZWwgdmFsdWVcbiAgcHJpdmF0ZSB2YWx1ZTtcbiAgLy8gaW5uZXIgbmctbW9kZWwgdmFsdWVcbiAgaW5uZXJWYWx1ZToge3ZhbHVlOiBzdHJpbmcsIHRpdGxlOiBzdHJpbmd9W10gPSBbXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNlYXJjaFNlcnZpY2U6IFNlYXJjaFNlcnZpY2UpIHtcbiAgfVxuXG4gIHByb3BhZ2F0ZUNoYW5nZSA9ICh2YWx1ZTogYW55KSA9PiB7XG4gIH1cblxuICB0cmFuZm9ybVZhbHVlKHZhbHVlSXNBcnJheSwgdmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWVJc0FycmF5ID8gdmFsdWUubWFwKHYgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsdWU6IHYsXG4gICAgICAgIHRpdGxlOiBudWxsXG4gICAgICB9XG4gICAgfSkgOiBbe1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgdGl0bGU6IG51bGxcbiAgICB9XTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBjb25zdCB2YWx1ZUlzQXJyYXkgPSBBcnJheS5pc0FycmF5KHZhbHVlKTtcbiAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZUlzQXJyYXkgPyBBcnJheS5mcm9tKG5ldyBTZXQodmFsdWUpKSA6IHZhbHVlO1xuXG4gICAgICAvLyB0cmFuc2Zvcm0gdmFsdWUgdG8gaW5uZXIgdmFsdWVcbiAgICAgIHRoaXMuaW5uZXJWYWx1ZSA9IHRoaXMudHJhbmZvcm1WYWx1ZSh2YWx1ZUlzQXJyYXksIHRoaXMudmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbHVlID0gbnVsbDtcbiAgICAgIHRoaXMuaW5uZXJWYWx1ZSA9IFtdO1xuICAgIH1cblxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgfVxuXG4gIGF1dG9jb21wbGV0ZVJlc3VsdChyZXMgPSBudWxsLCBxdWVyeSA9ICcnKSB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLnZhbHVlID8gdGhpcy52YWx1ZSA6IFtdO1xuICAgIGlmIChyZXMgJiYgcmVzLmhpdHMgJiYgcmVzLmhpdHMudG90YWwudmFsdWUpIHtcbiAgICAgIGNvbnN0IHJlc3VsdHMgPSByZXMuaGl0cy5oaXRzXG4gICAgICAgIC5maWx0ZXIoaCA9PiAhdmFsdWUuaW5jbHVkZXMoaC5fc291cmNlW3RoaXMucmVmZXJlbmNlLmVsZW1lbnRdKSlcbiAgICAgICAgLm1hcChoID0+ICh7dmFsdWU6IGguX3NvdXJjZVt0aGlzLnJlZmVyZW5jZS5lbGVtZW50XSwgdGl0bGU6IGguX3NvdXJjZS50aXRsZX0pKTtcbiAgICAgIHRoaXMuYXV0b2NvbXBsZXRlUmVzID0gVXRpbHMudW5pcUJ5KHJlc3VsdHMsICd2YWx1ZScpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmF1dG9jb21wbGV0ZVJlcyA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIGF1dG9jb21wbGV0ZUZuKHRlcm06IHN0cmluZykge1xuICAgIGlmICh0aGlzLm11bHRpc2VsZWN0IHx8ICF0aGlzLmlubmVyVmFsdWUubGVuZ3RoKSB7XG4gICAgICBjb25zdCB7dHlwZSwgZWxlbWVudH0gPSB0aGlzLnJlZmVyZW5jZTtcbiAgICAgIGNvbnN0IHEgPSB7XG4gICAgICAgIGZpbHRlcnM6IHt9LFxuICAgICAgICB0eXBlczogW3R5cGVdLFxuICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICAndGl0bGUnLFxuICAgICAgICAgIGVsZW1lbnRcbiAgICAgICAgXSxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIHNvcnQ6IHtcbiAgICAgICAgICAgIHRpdGxlOiB7XG4gICAgICAgICAgICAgIG9yZGVyOiAnYXNjJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgLy8gdG9kbzogYWRkIGNvbmRpdGlvbiB0byByZW1vdmUgdGhlIHZhbHVlcyB0aGF0IGFyZSBhbHJlYWR5IHNldCB3aGVuIHJlZ2V4IG9wZXJhdG9yIGlzIHN1cHBvcnRlZFxuICAgICAgcS5maWx0ZXJzW2VsZW1lbnRdID0ge1xuICAgICAgICBvOiAnZXEnLFxuICAgICAgICB2MTogYCR7dGVybX0qYFxuICAgICAgfTtcblxuICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlXG4gICAgICAgIC5leGVjdXRlUXVlcnkocSlcbiAgICAgICAgLnN1YnNjcmliZShyZXMgPT4gdGhpcy5hdXRvY29tcGxldGVSZXN1bHQocmVzLCB0ZXJtKSwgKCkgPT4gdGhpcy5hdXRvY29tcGxldGVSZXN1bHQobnVsbCwgdGVybSkpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYXV0b2NvbXBsZXRlUmVzdWx0KG51bGwsIHRlcm0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIGhhbmRsZSBzZWxlY3Rpb24gY2hhbmdlcyB0byB0aGUgbW9kZWxcbiAgb25VbnNlbGVjdChpdGVtKSB7XG4gICAgdGhpcy5pbm5lclZhbHVlID0gdGhpcy5pbm5lclZhbHVlLmZpbHRlcihpdiA9PiBpdi52YWx1ZSAhPT0gaXRlbS52YWx1ZSk7XG4gICAgdGhpcy52YWx1ZSA9IHRoaXMubXVsdGlzZWxlY3QgPyBVdGlscy51bmlxQnkodGhpcy5pbm5lclZhbHVlLCAndmFsdWUnKS5tYXAoaXYgPT4gaXYudmFsdWUpIDogbnVsbDtcbiAgICBpZiAoIXRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgIHRoaXMuY2xlYXJJbm5lcklucHV0KCk7XG4gICAgfVxuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMudmFsdWUpO1xuICB9XG5cbiAgLy8gaGFuZGxlIHNlbGVjdGlvbiBjaGFuZ2VzIHRvIHRoZSBtb2RlbFxuICBvblNlbGVjdChzZWxlY3RlZEl0ZW0pIHtcblxuICAgIGlmICh0eXBlb2Ygc2VsZWN0ZWRJdGVtID09PSAnc3RyaW5nJykgc2VsZWN0ZWRJdGVtID0ge1xuICAgICAgdmFsdWU6IHNlbGVjdGVkSXRlbSxcbiAgICAgIHRpdGxlOiBzZWxlY3RlZEl0ZW1cbiAgICB9XG5cbiAgICB0aGlzLmlubmVyVmFsdWUucHVzaChzZWxlY3RlZEl0ZW0pO1xuICAgIHRoaXMuaW5uZXJWYWx1ZSA9IFV0aWxzLnVuaXFCeSh0aGlzLmlubmVyVmFsdWUsICd2YWx1ZScpO1xuXG4gICAgaWYgKHRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmlubmVyVmFsdWUubWFwKGl2ID0+IGl2LnZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuaW5uZXJWYWx1ZVswXS52YWx1ZTtcbiAgICB9XG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy52YWx1ZSk7XG4gIH1cblxuICBvbkF1dG9Db21wbGV0ZUJsdXIoKSB7XG4gICAgdGhpcy5jbGVhcklubmVySW5wdXQoKTtcbiAgfVxuXG4gIG9uS2V5VXBFbnRlcihldmVudCkge1xuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0LnZhbHVlLnRyaW0oKTtcbiAgICBpZiAoaW5wdXQubGVuZ3RoKSB7XG4gICAgICB0aGlzLm9uU2VsZWN0KHt2YWx1ZTogaW5wdXQsIHRpdGxlOiBpbnB1dH0pO1xuICAgIH1cbiAgICB0aGlzLmNsZWFySW5uZXJJbnB1dCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhcklubmVySW5wdXQoKSB7XG4gICAgdGhpcy5hdXRvQ29tcGxldGVJbnB1dC5jbGVhcklucHV0KCk7XG4gICAgdGhpcy5hdXRvY29tcGxldGVSZXN1bHQoKTtcbiAgfVxuXG4gIGdldEl0ZW1MaW5rUGFyYW1zKGl0ZW0pIHtcbiAgICBjb25zdCBxdWVyeSA9IHtcbiAgICAgIHR5cGVzOiBbdGhpcy5yZWZlcmVuY2UudHlwZV0sXG4gICAgICBmaWx0ZXJzOiB7fVxuICAgIH07XG4gICAgcXVlcnkuZmlsdGVyc1t0aGlzLnJlZmVyZW5jZS5lbGVtZW50XSA9IHtcbiAgICAgIG86ICdlcScsXG4gICAgICB2MTogaXRlbS52YWx1ZVxuICAgIH07XG4gICAgcmV0dXJuIHtcbiAgICAgIHF1ZXJ5OiBlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkocXVlcnkpKVxuICAgIH07XG4gIH1cblxuICAvLyByZXR1cm5zIG51bGwgd2hlbiB2YWxpZCBlbHNlIHRoZSB2YWxpZGF0aW9uIG9iamVjdFxuICBwdWJsaWMgdmFsaWRhdGUoYzogVW50eXBlZEZvcm1Db250cm9sKSB7XG4gICAgbGV0IGVycjtcblxuICAgIGlmICh0aGlzLnZhbHVlICYmIHRoaXMudmFsdWUgIT09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLm11bHRpc2VsZWN0KSB7XG4gICAgICAgIGlmICh0aGlzLnZhbHVlLmxlbmd0aCA+IDAgJiYgISF0aGlzLnZhbHVlLmZpbmQodiA9PiB2Lmxlbmd0aCA8IHRoaXMubWluTGVuZ3RoKSkge1xuICAgICAgICAgIGVyciA9IHt9O1xuICAgICAgICAgIGVyclsnbWlubGVuZ3RoJ10gPSB7XG4gICAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudmFsdWUubGVuZ3RoID4gMCAmJiAhIXRoaXMudmFsdWUuZmluZCh2ID0+IHYubGVuZ3RoID4gdGhpcy5tYXhMZW5ndGgpKSB7XG4gICAgICAgICAgZXJyID0ge307XG4gICAgICAgICAgZXJyWydtYXhsZW5ndGgnXSA9IHtcbiAgICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMudmFsdWUubGVuZ3RoID4gMCAmJiB0aGlzLnZhbHVlLmxlbmd0aCA8IHRoaXMubWluTGVuZ3RoKSB7XG4gICAgICAgICAgZXJyID0ge307XG4gICAgICAgICAgZXJyWydtaW5sZW5ndGgnXSA9IHtcbiAgICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy52YWx1ZS5sZW5ndGggPiB0aGlzLm1heExlbmd0aCkge1xuICAgICAgICAgIGVyciA9IHt9O1xuICAgICAgICAgIGVyclsnbWF4bGVuZ3RoJ10gPSB7XG4gICAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGVyciA/IGVyciA6IG51bGw7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJlby1mb3JtLXJlZmVyZW5jZVwiIFtuZ0NsYXNzXT1cInthY0lucHV0SGlkZGVuOiAhbXVsdGlzZWxlY3QgJiYgISFpbm5lclZhbHVlLmxlbmd0aH1cIj5cblxuICA8eXZjLWF1dG9jb21wbGV0ZSBbbmdNb2RlbF09XCJpbm5lclZhbHVlXCIgI2F1dG9jb21wbGV0ZSAoc3VnZ2VzdGlvblNlbGVjdCk9XCJvblNlbGVjdCgkZXZlbnQpXCJcbiAgICAoc3VnZ2VzdGlvblVuc2VsZWN0KT1cIm9uVW5zZWxlY3QoJGV2ZW50KVwiIFtkaXNhYmxlZF09XCJyZWFkb25seVwiIFttdWx0aXBsZV09XCJ0cnVlXCJcbiAgICBbYXV0b2NvbXBsZXRlVmFsdWVzXT1cImF1dG9jb21wbGV0ZVJlc1wiIFtmaWVsZF09XCIndmFsdWUnXCIgW2ZvcmNlU2VsZWN0aW9uXT1cInRydWVcIiAoYmx1cik9XCJvbkF1dG9Db21wbGV0ZUJsdXIoKVwiXG4gICAgKGtleXVwLmVudGVyKT1cIm9uS2V5VXBFbnRlcigkZXZlbnQpXCIgKGF1dG9jb21wbGV0ZUZuYyk9XCJhdXRvY29tcGxldGVGbigkZXZlbnQpXCI+XG5cbiAgICA8IS0tIHRlbXBsYXRlIGZvciB0aGUgc3VnZ2VzdCBsaXN0IC0tPlxuICAgIDxuZy10ZW1wbGF0ZSBsZXQtaXRlbSAjYXV0b2NvbXBsZXRlT3B0aW9uVGVtcGxhdGU+XG4gICAgICA8c3BhbiBjbGFzcz1cInl2Yy1hdXRvY29tcGxldGUtdG9rZW4tbGFiZWxcIiB0aXRsZT1cInt7aXRlbS52YWx1ZX19ICh7e2l0ZW0udGl0bGV9fSlcIj5cbiAgICAgICAgPHN0cm9uZz57e2l0ZW0udmFsdWV9fTwvc3Ryb25nPlxuICAgICAgICA8c3Bhbj57e2l0ZW0udGl0bGV9fTwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPCEtLSB0ZW1wbGF0ZSBmb3IgdGhlIHNlbGVjdGVkIGl0ZW1zIC0tPlxuICAgIDxuZy10ZW1wbGF0ZSBsZXQtaXRlbSAjY2hpcFRlbXBsYXRlPlxuICAgICAgPGEgY2xhc3M9XCJsaW5rIHJvdXRlci1saW5rXCIgW3JvdXRlckxpbmtdPVwiWycvcmVzdWx0J11cIiBbcXVlcnlQYXJhbXNdPVwiZ2V0SXRlbUxpbmtQYXJhbXMoaXRlbSlcIj5cbiAgICAgICAgPHN2ZyBmb2N1c2FibGU9XCJmYWxzZVwiIGNsYXNzPVwicmVmLWljb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCJcbiAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgPHBhdGggZD1cIk0zLjkgMTJjMC0xLjcxIDEuMzktMy4xIDMuMS0zLjFoNFY3SDdjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDVoNHYtMS45SDdjLTEuNzEgMC0zLjEtMS4zOS0zLjEtMy4xek04XG4gICAgICAgICAgMTNoOHYtMkg4djJ6bTktNmgtNHYxLjloNGMxLjcxIDAgMy4xIDEuMzkgMy4xIDMuMXMtMS4zOSAzLjEtMy4xIDMuMWgtNFYxN2g0YzIuNzYgMCA1LTIuMjQgNS01cy0yLjI0LTUtNS01elwiPlxuICAgICAgICAgIDwvcGF0aD5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L2E+XG4gICAgICA8c3BhbiBjbGFzcz1cInl2Yy1hdXRvY29tcGxldGUtdG9rZW4tbGFiZWxcIj57e2l0ZW0udmFsdWV9fTwvc3Bhbj5cblxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwveXZjLWF1dG9jb21wbGV0ZT5cbjwvZGl2PlxuIl19
223
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmZXJlbmNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL2Zvcm0tZWxlbWVudHMvcmVmZXJlbmNlL3JlZmVyZW5jZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9mb3JtLWVsZW1lbnRzL3JlZmVyZW5jZS9yZWZlcmVuY2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzVGLE9BQU8sRUFFTCxpQkFBaUIsRUFHakIsYUFBYSxFQUNkLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFnQixLQUFLLEVBQUMsTUFBTSxjQUFjLENBQUM7Ozs7Ozs7O0FBb0JsRCxNQUFNLE9BQU8sa0JBQWtCO0lBcUI3QixZQUFvQixhQUE0QjtRQUE1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQVJ0Qyx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBS2xELHVCQUF1QjtRQUN2QixlQUFVLEdBQXFDLEVBQUUsQ0FBQztRQUtsRCxvQkFBZSxHQUFHLENBQUMsS0FBVSxFQUFFLEVBQUU7UUFDakMsQ0FBQyxDQUFBO0lBSEQsQ0FBQztJQUtELGFBQWEsQ0FBQyxZQUFZLEVBQUUsS0FBSztRQUMvQixPQUFPLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNsQyxPQUFPO2dCQUNMLEtBQUssRUFBRSxDQUFDO2dCQUNSLEtBQUssRUFBRSxJQUFJO2FBQ1osQ0FBQTtRQUNILENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNKLEtBQUssRUFB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QkFBM0MsU0FBUzt1QkFBQyxjQUFjO2dCQUVoQixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBSUcsU0FBUztzQkFBakIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUksa0JBQWtCO3NCQUEzQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIGZvcndhcmRSZWYsIElucHV0LCBWaWV3Q2hpbGQsIE91dHB1dCwgRXZlbnRFbWl0dGVyfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgVmFsaWRhdG9yLFxuICBVbnR5cGVkRm9ybUNvbnRyb2wsXG4gIE5HX1ZBTElEQVRPUlNcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtTZWFyY2hTZXJ2aWNlLCBVdGlsc30gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7QXV0b0NvbXBsZXRlfSBmcm9tICdAeXV1dmlzL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZW8tcmVmZXJlbmNlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlZmVyZW5jZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JlZmVyZW5jZS5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFJlZmVyZW5jZUNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFJlZmVyZW5jZUNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBSZWZlcmVuY2VDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yIHtcblxuICBAVmlld0NoaWxkKCdhdXRvY29tcGxldGUnKSBhdXRvQ29tcGxldGVJbnB1dDogQXV0b0NvbXBsZXRlO1xuXG4gIEBJbnB1dCgpIHJlYWRvbmx5OiBib29sZWFuO1xuICBASW5wdXQoKSBtdWx0aXNlbGVjdDogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFByb3BlcnR5IHRvIHNlYXJjaCBmb3IsIGFzd2VsbCBhcyB0aGUgb2JqZWN0IHR5cGVcbiAgICovXG4gIEBJbnB1dCgpIHJlZmVyZW5jZToge2VsZW1lbnQ6IHN0cmluZywgdHlwZTogc3RyaW5nfTtcbiAgQElucHV0KCkgbWluTGVuZ3RoOiBudW1iZXI7XG4gIEBJbnB1dCgpIG1heExlbmd0aDogbnVtYmVyO1xuXG4gIEBPdXRwdXQoKSBvblJlZmVyZW5jZUNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgYXV0b2NvbXBsZXRlUmVzOiBhbnlbXTtcbiAgLy8gbW9kZWwgdmFsdWVcbiAgcHJpdmF0ZSB2YWx1ZTtcbiAgLy8gaW5uZXIgbmctbW9kZWwgdmFsdWVcbiAgaW5uZXJWYWx1ZToge3ZhbHVlOiBzdHJpbmcsIHRpdGxlOiBzdHJpbmd9W10gPSBbXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNlYXJjaFNlcnZpY2U6IFNlYXJjaFNlcnZpY2UpIHtcbiAgfVxuXG4gIHByb3BhZ2F0ZUNoYW5nZSA9ICh2YWx1ZTogYW55KSA9PiB7XG4gIH1cblxuICB0cmFuZm9ybVZhbHVlKHZhbHVlSXNBcnJheSwgdmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWVJc0FycmF5ID8gdmFsdWUubWFwKHYgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsdWU6IHYsXG4gICAgICAgIHRpdGxlOiBudWxsXG4gICAgICB9XG4gICAgfSkgOiBbe1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgdGl0bGU6IG51bGxcbiAgICB9XTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBjb25zdCB2YWx1ZUlzQXJyYXkgPSBBcnJheS5pc0FycmF5KHZhbHVlKTtcbiAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZUlzQXJyYXkgPyBBcnJheS5mcm9tKG5ldyBTZXQodmFsdWUpKSA6IHZhbHVlO1xuXG4gICAgICAvLyB0cmFuc2Zvcm0gdmFsdWUgdG8gaW5uZXIgdmFsdWVcbiAgICAgIHRoaXMuaW5uZXJWYWx1ZSA9IHRoaXMudHJhbmZvcm1WYWx1ZSh2YWx1ZUlzQXJyYXksIHRoaXMudmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbHVlID0gbnVsbDtcbiAgICAgIHRoaXMuaW5uZXJWYWx1ZSA9IFtdO1xuICAgIH1cblxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgfVxuXG4gIGF1dG9jb21wbGV0ZVJlc3VsdChyZXMgPSBudWxsLCBxdWVyeSA9ICcnKSB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLnZhbHVlID8gdGhpcy52YWx1ZSA6IFtdO1xuICAgIGlmIChyZXMgJiYgcmVzLmhpdHMgJiYgcmVzLmhpdHMudG90YWwudmFsdWUpIHtcbiAgICAgIGNvbnN0IHJlc3VsdHMgPSByZXMuaGl0cy5oaXRzXG4gICAgICAgIC5maWx0ZXIoaCA9PiAhdmFsdWUuaW5jbHVkZXMoaC5fc291cmNlW3RoaXMucmVmZXJlbmNlLmVsZW1lbnRdKSlcbiAgICAgICAgLm1hcChoID0+ICh7dmFsdWU6IGguX3NvdXJjZVt0aGlzLnJlZmVyZW5jZS5lbGVtZW50XSwgdGl0bGU6IGguX3NvdXJjZS50aXRsZX0pKTtcbiAgICAgIHRoaXMuYXV0b2NvbXBsZXRlUmVzID0gVXRpbHMudW5pcUJ5KHJlc3VsdHMsICd2YWx1ZScpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmF1dG9jb21wbGV0ZVJlcyA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIGF1dG9jb21wbGV0ZUZuKHRlcm06IHN0cmluZykge1xuICAgIGlmICh0aGlzLm11bHRpc2VsZWN0IHx8ICF0aGlzLmlubmVyVmFsdWUubGVuZ3RoKSB7XG4gICAgICBjb25zdCB7dHlwZSwgZWxlbWVudH0gPSB0aGlzLnJlZmVyZW5jZTtcbiAgICAgIGNvbnN0IHEgPSB7XG4gICAgICAgIGZpbHRlcnM6IHt9LFxuICAgICAgICB0eXBlczogW3R5cGVdLFxuICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICAndGl0bGUnLFxuICAgICAgICAgIGVsZW1lbnRcbiAgICAgICAgXSxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIHNvcnQ6IHtcbiAgICAgICAgICAgIHRpdGxlOiB7XG4gICAgICAgICAgICAgIG9yZGVyOiAnYXNjJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgLy8gdG9kbzogYWRkIGNvbmRpdGlvbiB0byByZW1vdmUgdGhlIHZhbHVlcyB0aGF0IGFyZSBhbHJlYWR5IHNldCB3aGVuIHJlZ2V4IG9wZXJhdG9yIGlzIHN1cHBvcnRlZFxuICAgICAgcS5maWx0ZXJzW2VsZW1lbnRdID0ge1xuICAgICAgICBvOiAnZXEnLFxuICAgICAgICB2MTogYCR7dGVybX0qYFxuICAgICAgfTtcblxuICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlXG4gICAgICAgIC5leGVjdXRlUXVlcnkocSlcbiAgICAgICAgLnN1YnNjcmliZShyZXMgPT4gdGhpcy5hdXRvY29tcGxldGVSZXN1bHQocmVzLCB0ZXJtKSwgKCkgPT4gdGhpcy5hdXRvY29tcGxldGVSZXN1bHQobnVsbCwgdGVybSkpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYXV0b2NvbXBsZXRlUmVzdWx0KG51bGwsIHRlcm0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIGhhbmRsZSBzZWxlY3Rpb24gY2hhbmdlcyB0byB0aGUgbW9kZWxcbiAgb25VbnNlbGVjdChpdGVtKSB7XG4gICAgdGhpcy5pbm5lclZhbHVlID0gdGhpcy5pbm5lclZhbHVlLmZpbHRlcihpdiA9PiBpdi52YWx1ZSAhPT0gaXRlbS52YWx1ZSk7XG4gICAgdGhpcy52YWx1ZSA9IHRoaXMubXVsdGlzZWxlY3QgPyBVdGlscy51bmlxQnkodGhpcy5pbm5lclZhbHVlLCAndmFsdWUnKS5tYXAoaXYgPT4gaXYudmFsdWUpIDogbnVsbDtcbiAgICBpZiAoIXRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgIHRoaXMuY2xlYXJJbm5lcklucHV0KCk7XG4gICAgfVxuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMudmFsdWUpO1xuICB9XG5cbiAgLy8gaGFuZGxlIHNlbGVjdGlvbiBjaGFuZ2VzIHRvIHRoZSBtb2RlbFxuICBvblNlbGVjdChzZWxlY3RlZEl0ZW0pIHtcblxuICAgIGlmICh0eXBlb2Ygc2VsZWN0ZWRJdGVtID09PSAnc3RyaW5nJykgc2VsZWN0ZWRJdGVtID0ge1xuICAgICAgdmFsdWU6IHNlbGVjdGVkSXRlbSxcbiAgICAgIHRpdGxlOiBzZWxlY3RlZEl0ZW1cbiAgICB9XG5cbiAgICB0aGlzLmlubmVyVmFsdWUucHVzaChzZWxlY3RlZEl0ZW0pO1xuICAgIHRoaXMuaW5uZXJWYWx1ZSA9IFV0aWxzLnVuaXFCeSh0aGlzLmlubmVyVmFsdWUsICd2YWx1ZScpO1xuXG4gICAgaWYgKHRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmlubmVyVmFsdWUubWFwKGl2ID0+IGl2LnZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuaW5uZXJWYWx1ZVswXS52YWx1ZTtcbiAgICB9XG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy52YWx1ZSk7XG4gIH1cblxuICBvbkF1dG9Db21wbGV0ZUJsdXIoKSB7XG4gICAgdGhpcy5jbGVhcklubmVySW5wdXQoKTtcbiAgfVxuXG4gIG9uS2V5VXBFbnRlcihldmVudCkge1xuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0LnZhbHVlLnRyaW0oKTtcbiAgICBpZiAoaW5wdXQubGVuZ3RoKSB7XG4gICAgICB0aGlzLm9uU2VsZWN0KHt2YWx1ZTogaW5wdXQsIHRpdGxlOiBpbnB1dH0pO1xuICAgIH1cbiAgICB0aGlzLmNsZWFySW5uZXJJbnB1dCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhcklubmVySW5wdXQoKSB7XG4gICAgdGhpcy5hdXRvQ29tcGxldGVJbnB1dC5jbGVhcklucHV0KCk7XG4gICAgdGhpcy5hdXRvY29tcGxldGVSZXN1bHQoKTtcbiAgfVxuXG4gIGdldEl0ZW1MaW5rUGFyYW1zKGl0ZW0pIHtcbiAgICBjb25zdCBxdWVyeSA9IHtcbiAgICAgIHR5cGVzOiBbdGhpcy5yZWZlcmVuY2UudHlwZV0sXG4gICAgICBmaWx0ZXJzOiB7fVxuICAgIH07XG4gICAgcXVlcnkuZmlsdGVyc1t0aGlzLnJlZmVyZW5jZS5lbGVtZW50XSA9IHtcbiAgICAgIG86ICdlcScsXG4gICAgICB2MTogaXRlbS52YWx1ZVxuICAgIH07XG4gICAgcmV0dXJuIHtcbiAgICAgIHF1ZXJ5OiBlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkocXVlcnkpKVxuICAgIH07XG4gIH1cblxuICAvLyByZXR1cm5zIG51bGwgd2hlbiB2YWxpZCBlbHNlIHRoZSB2YWxpZGF0aW9uIG9iamVjdFxuICBwdWJsaWMgdmFsaWRhdGUoYzogVW50eXBlZEZvcm1Db250cm9sKSB7XG4gICAgbGV0IGVycjtcblxuICAgIGlmICh0aGlzLnZhbHVlICYmIHRoaXMudmFsdWUgIT09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLm11bHRpc2VsZWN0KSB7XG4gICAgICAgIGlmICh0aGlzLnZhbHVlLmxlbmd0aCA+IDAgJiYgISF0aGlzLnZhbHVlLmZpbmQodiA9PiB2Lmxlbmd0aCA8IHRoaXMubWluTGVuZ3RoKSkge1xuICAgICAgICAgIGVyciA9IHt9O1xuICAgICAgICAgIGVyclsnbWlubGVuZ3RoJ10gPSB7XG4gICAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudmFsdWUubGVuZ3RoID4gMCAmJiAhIXRoaXMudmFsdWUuZmluZCh2ID0+IHYubGVuZ3RoID4gdGhpcy5tYXhMZW5ndGgpKSB7XG4gICAgICAgICAgZXJyID0ge307XG4gICAgICAgICAgZXJyWydtYXhsZW5ndGgnXSA9IHtcbiAgICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMudmFsdWUubGVuZ3RoID4gMCAmJiB0aGlzLnZhbHVlLmxlbmd0aCA8IHRoaXMubWluTGVuZ3RoKSB7XG4gICAgICAgICAgZXJyID0ge307XG4gICAgICAgICAgZXJyWydtaW5sZW5ndGgnXSA9IHtcbiAgICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy52YWx1ZS5sZW5ndGggPiB0aGlzLm1heExlbmd0aCkge1xuICAgICAgICAgIGVyciA9IHt9O1xuICAgICAgICAgIGVyclsnbWF4bGVuZ3RoJ10gPSB7XG4gICAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGVyciA/IGVyciA6IG51bGw7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJlby1mb3JtLXJlZmVyZW5jZVwiIFtuZ0NsYXNzXT1cInthY0lucHV0SGlkZGVuOiAhbXVsdGlzZWxlY3QgJiYgISFpbm5lclZhbHVlLmxlbmd0aH1cIj5cblxuICA8eXZjLWF1dG9jb21wbGV0ZSBbbmdNb2RlbF09XCJpbm5lclZhbHVlXCIgI2F1dG9jb21wbGV0ZSAoc3VnZ2VzdGlvblNlbGVjdCk9XCJvblNlbGVjdCgkZXZlbnQpXCJcbiAgICAoc3VnZ2VzdGlvblVuc2VsZWN0KT1cIm9uVW5zZWxlY3QoJGV2ZW50KVwiIFtkaXNhYmxlZF09XCJyZWFkb25seVwiIFttdWx0aXBsZV09XCJ0cnVlXCJcbiAgICBbYXV0b2NvbXBsZXRlVmFsdWVzXT1cImF1dG9jb21wbGV0ZVJlc1wiIFtmaWVsZF09XCIndmFsdWUnXCIgW2ZvcmNlU2VsZWN0aW9uXT1cInRydWVcIiAoYmx1cik9XCJvbkF1dG9Db21wbGV0ZUJsdXIoKVwiXG4gICAgKGtleXVwLmVudGVyKT1cIm9uS2V5VXBFbnRlcigkZXZlbnQpXCIgKGF1dG9jb21wbGV0ZUZuYyk9XCJhdXRvY29tcGxldGVGbigkZXZlbnQpXCI+XG5cbiAgICA8IS0tIHRlbXBsYXRlIGZvciB0aGUgc3VnZ2VzdCBsaXN0IC0tPlxuICAgIDxuZy10ZW1wbGF0ZSBsZXQtaXRlbSAjYXV0b2NvbXBsZXRlT3B0aW9uVGVtcGxhdGU+XG4gICAgICA8c3BhbiBjbGFzcz1cInl2Yy1hdXRvY29tcGxldGUtdG9rZW4tbGFiZWxcIiB0aXRsZT1cInt7aXRlbS52YWx1ZX19ICh7e2l0ZW0udGl0bGV9fSlcIj5cbiAgICAgICAgPHN0cm9uZz57e2l0ZW0udmFsdWV9fTwvc3Ryb25nPlxuICAgICAgICA8c3Bhbj57e2l0ZW0udGl0bGV9fTwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPCEtLSB0ZW1wbGF0ZSBmb3IgdGhlIHNlbGVjdGVkIGl0ZW1zIC0tPlxuICAgIDxuZy10ZW1wbGF0ZSBsZXQtaXRlbSAjY2hpcFRlbXBsYXRlPlxuICAgICAgPGEgY2xhc3M9XCJsaW5rIHJvdXRlci1saW5rXCIgW3JvdXRlckxpbmtdPVwiWycvcmVzdWx0J11cIiBbcXVlcnlQYXJhbXNdPVwiZ2V0SXRlbUxpbmtQYXJhbXMoaXRlbSlcIj5cbiAgICAgICAgPHN2ZyBmb2N1c2FibGU9XCJmYWxzZVwiIGNsYXNzPVwicmVmLWljb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCJcbiAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgPHBhdGggZD1cIk0zLjkgMTJjMC0xLjcxIDEuMzktMy4xIDMuMS0zLjFoNFY3SDdjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDVoNHYtMS45SDdjLTEuNzEgMC0zLjEtMS4zOS0zLjEtMy4xek04XG4gICAgICAgICAgMTNoOHYtMkg4djJ6bTktNmgtNHYxLjloNGMxLjcxIDAgMy4xIDEuMzkgMy4xIDMuMXMtMS4zOSAzLjEtMy4xIDMuMWgtNFYxN2g0YzIuNzYgMCA1LTIuMjQgNS01cy0yLjI0LTUtNS01elwiPlxuICAgICAgICAgIDwvcGF0aD5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L2E+XG4gICAgICA8c3BhbiBjbGFzcz1cInl2Yy1hdXRvY29tcGxldGUtdG9rZW4tbGFiZWxcIj57e2l0ZW0udmFsdWV9fTwvc3Bhbj5cblxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwveXZjLWF1dG9jb21wbGV0ZT5cbjwvZGl2PiJdfQ==
@@ -207,7 +207,7 @@ StringComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", versio
207
207
  useExisting: forwardRef(() => StringComponent),
208
208
  multi: true
209
209
  }
210
- ], ngImport: i0, template: "<div class=\"eo-form-string\">\n\n <input *ngIf=\"!multiline && !multiselect && !autocomplete\" type=\"text\" (blur)=\"onBlur()\" [readonly]=\"readonly\"\n [disabled]=\"readonly\" [(ngModel)]=\"value\" (ngModelChange)=\"onValueChange($event)\" />\n\n <!-- single line input with autocomplete -->\n <yvc-autocomplete *ngIf=\"!multiline && !multiselect && autocomplete\" #autocomplete [(ngModel)]=\"value\"\n [disabled]=\"readonly\" [autocompleteValues]=\"autocompleteRes\" (blur)=\"onBlur()\"\n (suggestionSelect)=\"onValueChange($event)\" (ngModelChange)=\"onValueChange($event)\"\n (autocompleteFnc)=\"autocompleteFn($event)\">\n </yvc-autocomplete>\n\n <!-- single line input with multiselect-->\n <yvc-chips *ngIf=\"!multiline && multiselect && !autocomplete\" [(ngModel)]=\"value\" [disabled]=\"readonly\"\n (blur)=\"onBlur()\" (ngModelChange)=\"onValueChange($event)\">\n </yvc-chips>\n\n <!-- single line input with multiselect and autocomplete -->\n <yvc-autocomplete *ngIf=\"!multiline && multiselect && autocomplete\" [autocompleteValues]=\"autocompleteRes\"\n [multiple]=\"true\" [disabled]=\"readonly\" (blur)=\"onBlur()\" (autocompleteFnc)=\"autocompleteFn($event)\"\n [(ngModel)]=\"value\" (ngModelChange)=\"onValueChange($event)\">\n </yvc-autocomplete>\n\n <!-- multi line text inputs -->\n <textarea class=\"input-textarea size-{{size}}\" *ngIf=\"multiline\" (blur)=\"onBlur()\" [(ngModel)]=\"value\"\n [readonly]=\"readonly\" [disabled]=\"readonly\" (ngModelChange)=\"onValueChange($event)\"></textarea>\n\n <div class=\"classify\" [ngClass]=\"{empty: !value || situation === 'SEARCH'}\">\n <a target=\"_blank\" href=\"mailto:{{formatedValue}}\" *ngIf=\"classification === 'email' && valid\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" viewBox=\"0 -960 960 960\" width=\"20\">\n <path\n d=\"M180.309-212.001q-27.008 0-45.658-18.662-18.65-18.662-18.65-45.686v-407.626q0-27.024 18.65-45.524t45.658-18.5h599.382q27.008 0 45.658 18.662 18.65 18.662 18.65 45.686v407.626q0 27.024-18.65 45.524t-45.658 18.5H180.309ZM480-449.694 168-633.309v357q0 5.385 3.462 8.847 3.462 3.462 8.847 3.462h599.382q5.385 0 8.847-3.462 3.462-3.462 3.462-8.847v-357L480-449.694ZM480-517l305.846-179H174.154L480-517ZM168-633.309V-696-276.309q0 5.385 3.462 8.847 3.462 3.462 8.847 3.462H168v-369.309Z\" />\n </svg>\n </a>\n <a target=\"_blank\" href=\"{{value}}\" *ngIf=\"classification === 'url' && valid\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" viewBox=\"0 -960 960 960\" width=\"20\">\n <path\n d=\"M480-116.001q-75.154 0-141.499-28.462-66.346-28.461-115.962-78.076-49.615-49.616-78.076-115.962Q116.001-404.846 116.001-480q0-75.769 28.462-141.807 28.461-66.038 78.076-115.654 49.616-49.615 115.962-78.076Q404.846-843.999 480-843.999q75.769 0 141.807 28.462 66.038 28.461 115.654 78.076 49.615 49.616 78.076 115.654Q843.999-555.769 843.999-480q0 75.154-28.462 141.499-28.461 66.346-78.076 115.962-49.616 49.615-115.654 78.076Q555.769-116.001 480-116.001Zm0-53.845q21.616-21.616 40.539-70.424 18.923-48.808 29.077-108.808H410.384q10.923 61.539 29.462 110.347 18.538 48.808 40.154 68.885Zm-64.46-5q-19-30-34.308-75.539t-23.462-98.693H197.076q31.693 69.309 89.501 115.194 57.809 45.885 128.963 59.038Zm128.92 0q71.154-13.153 128.963-59.038 57.808-45.885 89.501-115.194H602.23Q592.153-295.539 576.845-250q-15.308 45.539-32.385 75.154Zm79.463-226.23h173.693q4.231-21.308 6.039-40.731 1.808-19.424 1.808-38.193t-1.808-38.693q-1.808-19.923-6.039-40.231H623.923q1.231 19.385 1.154 40.385-.077 21-.077 40.539t.077 39.539q.077 20-1.154 37.385Zm-218.308 0h148.77q2.769-22.308 3.462-41.347.692-19.038.692-37.577 0-18.539-.692-38.077-.693-19.539-3.462-40.847h-148.77q-2.769 21.308-3.462 40.847-.692 19.538-.692 38.077 0 18.539.692 38.077.693 19.539 3.462 40.847Zm-243.231 0h173.693q-1.231-19.385-1.154-40.385.077-21 .077-40.539t-.077-39.539q-.077-20 1.154-37.385H162.384q-4.231 21.308-6.039 40.731-1.808 19.424-1.808 38.193t1.808 38.193q1.808 19.423 6.039 40.731ZM602.23-610.922h160.694Q730.846-681 674-726.116q-56.847-45.115-129.54-59.423 19 31.923 33.923 76.885 14.924 44.962 23.847 97.732Zm-191.846 0h139.232q-10.923-61.154-30.039-110.924-19.115-49.769-39.577-68.308-20.462 18.539-39.577 68.308-19.116 49.77-30.039 110.924Zm-213.308 0H357.77q8.923-52.77 23.847-97.732 14.923-44.962 33.923-76.885-73.077 14.308-129.732 59.616-56.654 45.308-88.732 115.001Z\" />\n </svg>\n </a>\n </div>\n\n</div>\n", styles: [".eo-form-string{display:flex;flex-flow:row nowrap;align-items:center}.eo-form-string yvc-chips,.eo-form-string yvc-autocomplete{width:100%;border:0;outline:0!important}.eo-form-string .classify a{color:var(--text-color-hint);display:flex;flex-flow:column;align-items:center;justify-content:center}.eo-form-string .classify a:hover,.eo-form-string .classify a:focus,.eo-form-string .classify a:focus-visible{color:var(--color-accent);outline:0}.eo-form-string .classify a svg{fill:currentColor}.eo-form-string .classify.empty{display:none}.eo-form-string .input-textarea{width:100%;resize:vertical;border:0;background-color:transparent;color:var(--text-color-body)}.eo-form-string .input-textarea.size-small{height:4em}.eo-form-string .input-textarea.size-medium{height:6em}.eo-form-string .input-textarea.size-large{height:8em}:host ::ng-deep input{width:100%;background:transparent;border:0;padding:.25em}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.Chips, selector: "yvc-chips", inputs: ["field", "placeholder", "max", "disabled"] }, { kind: "component", type: i5.AutoComplete, selector: "yvc-autocomplete", inputs: ["field", "placeholder", "minLength", "multiple", "typeahead", "distinctValues", "forceSelection", "autocompleteValues", "disabled"], outputs: ["autocompleteFnc", "blur", "focus", "suggestionUnselect", "suggestionSelect"] }] });
210
+ ], ngImport: i0, template: "<div class=\"eo-form-string\">\n\n <input *ngIf=\"!multiline && !multiselect && !autocomplete\" type=\"text\" (blur)=\"onBlur()\" [readonly]=\"readonly\"\n [disabled]=\"readonly\" [(ngModel)]=\"value\" (ngModelChange)=\"onValueChange($event)\" />\n\n <!-- single line input with autocomplete -->\n <yvc-autocomplete *ngIf=\"!multiline && !multiselect && autocomplete\" #autocomplete [(ngModel)]=\"value\"\n [disabled]=\"readonly\" [autocompleteValues]=\"autocompleteRes\" (blur)=\"onBlur()\"\n (suggestionSelect)=\"onValueChange($event)\" (ngModelChange)=\"onValueChange($event)\"\n (autocompleteFnc)=\"autocompleteFn($event)\">\n </yvc-autocomplete>\n\n <!-- single line input with multiselect-->\n <yvc-chips *ngIf=\"!multiline && multiselect && !autocomplete\" [(ngModel)]=\"value\" [disabled]=\"readonly\"\n (blur)=\"onBlur()\" (ngModelChange)=\"onValueChange($event)\">\n </yvc-chips>\n\n <!-- single line input with multiselect and autocomplete -->\n <yvc-autocomplete *ngIf=\"!multiline && multiselect && autocomplete\" [autocompleteValues]=\"autocompleteRes\"\n [multiple]=\"true\" [disabled]=\"readonly\" (blur)=\"onBlur()\" (autocompleteFnc)=\"autocompleteFn($event)\"\n [(ngModel)]=\"value\" (ngModelChange)=\"onValueChange($event)\">\n </yvc-autocomplete>\n\n <!-- multi line text inputs -->\n <textarea class=\"input-textarea size-{{size}}\" *ngIf=\"multiline\" (blur)=\"onBlur()\" [(ngModel)]=\"value\"\n [readonly]=\"readonly\" [disabled]=\"readonly\" (ngModelChange)=\"onValueChange($event)\"></textarea>\n\n <div class=\"classify\" [ngClass]=\"{empty: !value || situation === 'SEARCH'}\">\n <a target=\"_blank\" href=\"mailto:{{formatedValue}}\" *ngIf=\"classification === 'email' && valid\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" viewBox=\"0 -960 960 960\" width=\"20\">\n <path\n d=\"M180.309-212.001q-27.008 0-45.658-18.662-18.65-18.662-18.65-45.686v-407.626q0-27.024 18.65-45.524t45.658-18.5h599.382q27.008 0 45.658 18.662 18.65 18.662 18.65 45.686v407.626q0 27.024-18.65 45.524t-45.658 18.5H180.309ZM480-449.694 168-633.309v357q0 5.385 3.462 8.847 3.462 3.462 8.847 3.462h599.382q5.385 0 8.847-3.462 3.462-3.462 3.462-8.847v-357L480-449.694ZM480-517l305.846-179H174.154L480-517ZM168-633.309V-696-276.309q0 5.385 3.462 8.847 3.462 3.462 8.847 3.462H168v-369.309Z\" />\n </svg>\n </a>\n <a target=\"_blank\" href=\"{{value}}\" *ngIf=\"classification === 'url' && valid\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" viewBox=\"0 -960 960 960\" width=\"20\">\n <path\n d=\"M480-116.001q-75.154 0-141.499-28.462-66.346-28.461-115.962-78.076-49.615-49.616-78.076-115.962Q116.001-404.846 116.001-480q0-75.769 28.462-141.807 28.461-66.038 78.076-115.654 49.616-49.615 115.962-78.076Q404.846-843.999 480-843.999q75.769 0 141.807 28.462 66.038 28.461 115.654 78.076 49.615 49.616 78.076 115.654Q843.999-555.769 843.999-480q0 75.154-28.462 141.499-28.461 66.346-78.076 115.962-49.616 49.615-115.654 78.076Q555.769-116.001 480-116.001Zm0-53.845q21.616-21.616 40.539-70.424 18.923-48.808 29.077-108.808H410.384q10.923 61.539 29.462 110.347 18.538 48.808 40.154 68.885Zm-64.46-5q-19-30-34.308-75.539t-23.462-98.693H197.076q31.693 69.309 89.501 115.194 57.809 45.885 128.963 59.038Zm128.92 0q71.154-13.153 128.963-59.038 57.808-45.885 89.501-115.194H602.23Q592.153-295.539 576.845-250q-15.308 45.539-32.385 75.154Zm79.463-226.23h173.693q4.231-21.308 6.039-40.731 1.808-19.424 1.808-38.193t-1.808-38.693q-1.808-19.923-6.039-40.231H623.923q1.231 19.385 1.154 40.385-.077 21-.077 40.539t.077 39.539q.077 20-1.154 37.385Zm-218.308 0h148.77q2.769-22.308 3.462-41.347.692-19.038.692-37.577 0-18.539-.692-38.077-.693-19.539-3.462-40.847h-148.77q-2.769 21.308-3.462 40.847-.692 19.538-.692 38.077 0 18.539.692 38.077.693 19.539 3.462 40.847Zm-243.231 0h173.693q-1.231-19.385-1.154-40.385.077-21 .077-40.539t-.077-39.539q-.077-20 1.154-37.385H162.384q-4.231 21.308-6.039 40.731-1.808 19.424-1.808 38.193t1.808 38.193q1.808 19.423 6.039 40.731ZM602.23-610.922h160.694Q730.846-681 674-726.116q-56.847-45.115-129.54-59.423 19 31.923 33.923 76.885 14.924 44.962 23.847 97.732Zm-191.846 0h139.232q-10.923-61.154-30.039-110.924-19.115-49.769-39.577-68.308-20.462 18.539-39.577 68.308-19.116 49.77-30.039 110.924Zm-213.308 0H357.77q8.923-52.77 23.847-97.732 14.923-44.962 33.923-76.885-73.077 14.308-129.732 59.616-56.654 45.308-88.732 115.001Z\" />\n </svg>\n </a>\n </div>\n\n</div>", styles: [".eo-form-string{display:flex;flex-flow:row nowrap;align-items:center}.eo-form-string yvc-chips,.eo-form-string yvc-autocomplete{width:100%;border:0;outline:0!important}.eo-form-string .classify a{color:var(--text-color-hint);display:flex;flex-flow:column;align-items:center;justify-content:center}.eo-form-string .classify a:hover,.eo-form-string .classify a:focus,.eo-form-string .classify a:focus-visible{color:var(--color-accent);outline:0}.eo-form-string .classify a svg{fill:currentColor}.eo-form-string .classify.empty{display:none}.eo-form-string .input-textarea{width:100%;resize:vertical;border:0;background-color:transparent;color:var(--text-color-body)}.eo-form-string .input-textarea.size-small{height:4em}.eo-form-string .input-textarea.size-medium{height:6em}.eo-form-string .input-textarea.size-large{height:8em}:host ::ng-deep input{width:100%;background:transparent;border:0;padding:.25em}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.Chips, selector: "yvc-chips", inputs: ["field", "placeholder", "max", "disabled"] }, { kind: "component", type: i5.AutoComplete, selector: "yvc-autocomplete", inputs: ["field", "placeholder", "minLength", "multiple", "typeahead", "distinctValues", "forceSelection", "autocompleteValues", "disabled"], outputs: ["autocompleteFnc", "blur", "focus", "suggestionUnselect", "suggestionSelect"] }] });
211
211
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: StringComponent, decorators: [{
212
212
  type: Component,
213
213
  args: [{ selector: 'eo-string', providers: [
@@ -221,7 +221,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
221
221
  useExisting: forwardRef(() => StringComponent),
222
222
  multi: true
223
223
  }
224
- ], template: "<div class=\"eo-form-string\">\n\n <input *ngIf=\"!multiline && !multiselect && !autocomplete\" type=\"text\" (blur)=\"onBlur()\" [readonly]=\"readonly\"\n [disabled]=\"readonly\" [(ngModel)]=\"value\" (ngModelChange)=\"onValueChange($event)\" />\n\n <!-- single line input with autocomplete -->\n <yvc-autocomplete *ngIf=\"!multiline && !multiselect && autocomplete\" #autocomplete [(ngModel)]=\"value\"\n [disabled]=\"readonly\" [autocompleteValues]=\"autocompleteRes\" (blur)=\"onBlur()\"\n (suggestionSelect)=\"onValueChange($event)\" (ngModelChange)=\"onValueChange($event)\"\n (autocompleteFnc)=\"autocompleteFn($event)\">\n </yvc-autocomplete>\n\n <!-- single line input with multiselect-->\n <yvc-chips *ngIf=\"!multiline && multiselect && !autocomplete\" [(ngModel)]=\"value\" [disabled]=\"readonly\"\n (blur)=\"onBlur()\" (ngModelChange)=\"onValueChange($event)\">\n </yvc-chips>\n\n <!-- single line input with multiselect and autocomplete -->\n <yvc-autocomplete *ngIf=\"!multiline && multiselect && autocomplete\" [autocompleteValues]=\"autocompleteRes\"\n [multiple]=\"true\" [disabled]=\"readonly\" (blur)=\"onBlur()\" (autocompleteFnc)=\"autocompleteFn($event)\"\n [(ngModel)]=\"value\" (ngModelChange)=\"onValueChange($event)\">\n </yvc-autocomplete>\n\n <!-- multi line text inputs -->\n <textarea class=\"input-textarea size-{{size}}\" *ngIf=\"multiline\" (blur)=\"onBlur()\" [(ngModel)]=\"value\"\n [readonly]=\"readonly\" [disabled]=\"readonly\" (ngModelChange)=\"onValueChange($event)\"></textarea>\n\n <div class=\"classify\" [ngClass]=\"{empty: !value || situation === 'SEARCH'}\">\n <a target=\"_blank\" href=\"mailto:{{formatedValue}}\" *ngIf=\"classification === 'email' && valid\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" viewBox=\"0 -960 960 960\" width=\"20\">\n <path\n d=\"M180.309-212.001q-27.008 0-45.658-18.662-18.65-18.662-18.65-45.686v-407.626q0-27.024 18.65-45.524t45.658-18.5h599.382q27.008 0 45.658 18.662 18.65 18.662 18.65 45.686v407.626q0 27.024-18.65 45.524t-45.658 18.5H180.309ZM480-449.694 168-633.309v357q0 5.385 3.462 8.847 3.462 3.462 8.847 3.462h599.382q5.385 0 8.847-3.462 3.462-3.462 3.462-8.847v-357L480-449.694ZM480-517l305.846-179H174.154L480-517ZM168-633.309V-696-276.309q0 5.385 3.462 8.847 3.462 3.462 8.847 3.462H168v-369.309Z\" />\n </svg>\n </a>\n <a target=\"_blank\" href=\"{{value}}\" *ngIf=\"classification === 'url' && valid\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" viewBox=\"0 -960 960 960\" width=\"20\">\n <path\n d=\"M480-116.001q-75.154 0-141.499-28.462-66.346-28.461-115.962-78.076-49.615-49.616-78.076-115.962Q116.001-404.846 116.001-480q0-75.769 28.462-141.807 28.461-66.038 78.076-115.654 49.616-49.615 115.962-78.076Q404.846-843.999 480-843.999q75.769 0 141.807 28.462 66.038 28.461 115.654 78.076 49.615 49.616 78.076 115.654Q843.999-555.769 843.999-480q0 75.154-28.462 141.499-28.461 66.346-78.076 115.962-49.616 49.615-115.654 78.076Q555.769-116.001 480-116.001Zm0-53.845q21.616-21.616 40.539-70.424 18.923-48.808 29.077-108.808H410.384q10.923 61.539 29.462 110.347 18.538 48.808 40.154 68.885Zm-64.46-5q-19-30-34.308-75.539t-23.462-98.693H197.076q31.693 69.309 89.501 115.194 57.809 45.885 128.963 59.038Zm128.92 0q71.154-13.153 128.963-59.038 57.808-45.885 89.501-115.194H602.23Q592.153-295.539 576.845-250q-15.308 45.539-32.385 75.154Zm79.463-226.23h173.693q4.231-21.308 6.039-40.731 1.808-19.424 1.808-38.193t-1.808-38.693q-1.808-19.923-6.039-40.231H623.923q1.231 19.385 1.154 40.385-.077 21-.077 40.539t.077 39.539q.077 20-1.154 37.385Zm-218.308 0h148.77q2.769-22.308 3.462-41.347.692-19.038.692-37.577 0-18.539-.692-38.077-.693-19.539-3.462-40.847h-148.77q-2.769 21.308-3.462 40.847-.692 19.538-.692 38.077 0 18.539.692 38.077.693 19.539 3.462 40.847Zm-243.231 0h173.693q-1.231-19.385-1.154-40.385.077-21 .077-40.539t-.077-39.539q-.077-20 1.154-37.385H162.384q-4.231 21.308-6.039 40.731-1.808 19.424-1.808 38.193t1.808 38.193q1.808 19.423 6.039 40.731ZM602.23-610.922h160.694Q730.846-681 674-726.116q-56.847-45.115-129.54-59.423 19 31.923 33.923 76.885 14.924 44.962 23.847 97.732Zm-191.846 0h139.232q-10.923-61.154-30.039-110.924-19.115-49.769-39.577-68.308-20.462 18.539-39.577 68.308-19.116 49.77-30.039 110.924Zm-213.308 0H357.77q8.923-52.77 23.847-97.732 14.923-44.962 33.923-76.885-73.077 14.308-129.732 59.616-56.654 45.308-88.732 115.001Z\" />\n </svg>\n </a>\n </div>\n\n</div>\n", styles: [".eo-form-string{display:flex;flex-flow:row nowrap;align-items:center}.eo-form-string yvc-chips,.eo-form-string yvc-autocomplete{width:100%;border:0;outline:0!important}.eo-form-string .classify a{color:var(--text-color-hint);display:flex;flex-flow:column;align-items:center;justify-content:center}.eo-form-string .classify a:hover,.eo-form-string .classify a:focus,.eo-form-string .classify a:focus-visible{color:var(--color-accent);outline:0}.eo-form-string .classify a svg{fill:currentColor}.eo-form-string .classify.empty{display:none}.eo-form-string .input-textarea{width:100%;resize:vertical;border:0;background-color:transparent;color:var(--text-color-body)}.eo-form-string .input-textarea.size-small{height:4em}.eo-form-string .input-textarea.size-medium{height:6em}.eo-form-string .input-textarea.size-large{height:8em}:host ::ng-deep input{width:100%;background:transparent;border:0;padding:.25em}\n"] }]
224
+ ], template: "<div class=\"eo-form-string\">\n\n <input *ngIf=\"!multiline && !multiselect && !autocomplete\" type=\"text\" (blur)=\"onBlur()\" [readonly]=\"readonly\"\n [disabled]=\"readonly\" [(ngModel)]=\"value\" (ngModelChange)=\"onValueChange($event)\" />\n\n <!-- single line input with autocomplete -->\n <yvc-autocomplete *ngIf=\"!multiline && !multiselect && autocomplete\" #autocomplete [(ngModel)]=\"value\"\n [disabled]=\"readonly\" [autocompleteValues]=\"autocompleteRes\" (blur)=\"onBlur()\"\n (suggestionSelect)=\"onValueChange($event)\" (ngModelChange)=\"onValueChange($event)\"\n (autocompleteFnc)=\"autocompleteFn($event)\">\n </yvc-autocomplete>\n\n <!-- single line input with multiselect-->\n <yvc-chips *ngIf=\"!multiline && multiselect && !autocomplete\" [(ngModel)]=\"value\" [disabled]=\"readonly\"\n (blur)=\"onBlur()\" (ngModelChange)=\"onValueChange($event)\">\n </yvc-chips>\n\n <!-- single line input with multiselect and autocomplete -->\n <yvc-autocomplete *ngIf=\"!multiline && multiselect && autocomplete\" [autocompleteValues]=\"autocompleteRes\"\n [multiple]=\"true\" [disabled]=\"readonly\" (blur)=\"onBlur()\" (autocompleteFnc)=\"autocompleteFn($event)\"\n [(ngModel)]=\"value\" (ngModelChange)=\"onValueChange($event)\">\n </yvc-autocomplete>\n\n <!-- multi line text inputs -->\n <textarea class=\"input-textarea size-{{size}}\" *ngIf=\"multiline\" (blur)=\"onBlur()\" [(ngModel)]=\"value\"\n [readonly]=\"readonly\" [disabled]=\"readonly\" (ngModelChange)=\"onValueChange($event)\"></textarea>\n\n <div class=\"classify\" [ngClass]=\"{empty: !value || situation === 'SEARCH'}\">\n <a target=\"_blank\" href=\"mailto:{{formatedValue}}\" *ngIf=\"classification === 'email' && valid\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" viewBox=\"0 -960 960 960\" width=\"20\">\n <path\n d=\"M180.309-212.001q-27.008 0-45.658-18.662-18.65-18.662-18.65-45.686v-407.626q0-27.024 18.65-45.524t45.658-18.5h599.382q27.008 0 45.658 18.662 18.65 18.662 18.65 45.686v407.626q0 27.024-18.65 45.524t-45.658 18.5H180.309ZM480-449.694 168-633.309v357q0 5.385 3.462 8.847 3.462 3.462 8.847 3.462h599.382q5.385 0 8.847-3.462 3.462-3.462 3.462-8.847v-357L480-449.694ZM480-517l305.846-179H174.154L480-517ZM168-633.309V-696-276.309q0 5.385 3.462 8.847 3.462 3.462 8.847 3.462H168v-369.309Z\" />\n </svg>\n </a>\n <a target=\"_blank\" href=\"{{value}}\" *ngIf=\"classification === 'url' && valid\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" viewBox=\"0 -960 960 960\" width=\"20\">\n <path\n d=\"M480-116.001q-75.154 0-141.499-28.462-66.346-28.461-115.962-78.076-49.615-49.616-78.076-115.962Q116.001-404.846 116.001-480q0-75.769 28.462-141.807 28.461-66.038 78.076-115.654 49.616-49.615 115.962-78.076Q404.846-843.999 480-843.999q75.769 0 141.807 28.462 66.038 28.461 115.654 78.076 49.615 49.616 78.076 115.654Q843.999-555.769 843.999-480q0 75.154-28.462 141.499-28.461 66.346-78.076 115.962-49.616 49.615-115.654 78.076Q555.769-116.001 480-116.001Zm0-53.845q21.616-21.616 40.539-70.424 18.923-48.808 29.077-108.808H410.384q10.923 61.539 29.462 110.347 18.538 48.808 40.154 68.885Zm-64.46-5q-19-30-34.308-75.539t-23.462-98.693H197.076q31.693 69.309 89.501 115.194 57.809 45.885 128.963 59.038Zm128.92 0q71.154-13.153 128.963-59.038 57.808-45.885 89.501-115.194H602.23Q592.153-295.539 576.845-250q-15.308 45.539-32.385 75.154Zm79.463-226.23h173.693q4.231-21.308 6.039-40.731 1.808-19.424 1.808-38.193t-1.808-38.693q-1.808-19.923-6.039-40.231H623.923q1.231 19.385 1.154 40.385-.077 21-.077 40.539t.077 39.539q.077 20-1.154 37.385Zm-218.308 0h148.77q2.769-22.308 3.462-41.347.692-19.038.692-37.577 0-18.539-.692-38.077-.693-19.539-3.462-40.847h-148.77q-2.769 21.308-3.462 40.847-.692 19.538-.692 38.077 0 18.539.692 38.077.693 19.539 3.462 40.847Zm-243.231 0h173.693q-1.231-19.385-1.154-40.385.077-21 .077-40.539t-.077-39.539q-.077-20 1.154-37.385H162.384q-4.231 21.308-6.039 40.731-1.808 19.424-1.808 38.193t1.808 38.193q1.808 19.423 6.039 40.731ZM602.23-610.922h160.694Q730.846-681 674-726.116q-56.847-45.115-129.54-59.423 19 31.923 33.923 76.885 14.924 44.962 23.847 97.732Zm-191.846 0h139.232q-10.923-61.154-30.039-110.924-19.115-49.769-39.577-68.308-20.462 18.539-39.577 68.308-19.116 49.77-30.039 110.924Zm-213.308 0H357.77q8.923-52.77 23.847-97.732 14.923-44.962 33.923-76.885-73.077 14.308-129.732 59.616-56.654 45.308-88.732 115.001Z\" />\n </svg>\n </a>\n </div>\n\n</div>", styles: [".eo-form-string{display:flex;flex-flow:row nowrap;align-items:center}.eo-form-string yvc-chips,.eo-form-string yvc-autocomplete{width:100%;border:0;outline:0!important}.eo-form-string .classify a{color:var(--text-color-hint);display:flex;flex-flow:column;align-items:center;justify-content:center}.eo-form-string .classify a:hover,.eo-form-string .classify a:focus,.eo-form-string .classify a:focus-visible{color:var(--color-accent);outline:0}.eo-form-string .classify a svg{fill:currentColor}.eo-form-string .classify.empty{display:none}.eo-form-string .input-textarea{width:100%;resize:vertical;border:0;background-color:transparent;color:var(--text-color-body)}.eo-form-string .input-textarea.size-small{height:4em}.eo-form-string .input-textarea.size-medium{height:6em}.eo-form-string .input-textarea.size-large{height:8em}:host ::ng-deep input{width:100%;background:transparent;border:0;padding:.25em}\n"] }]
225
225
  }], ctorParameters: function () { return [{ type: i1.BackendService }]; }, propDecorators: { autocomplete: [{
226
226
  type: Input
227
227
  }], multiselect: [{
@@ -247,4 +247,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
247
247
  }], maxLength: [{
248
248
  type: Input
249
249
  }] } });
250
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL2Zvcm0tZWxlbWVudHMvc3RyaW5nL3N0cmluZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9mb3JtLWVsZW1lbnRzL3N0cmluZy9zdHJpbmcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFJTCxpQkFBaUIsRUFDakIsYUFBYSxFQUNkLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFpQixLQUFLLEVBQWlCLE1BQU0sY0FBYyxDQUFDOzs7Ozs7O0FBb0JuRSxNQUFNLE9BQU8sZUFBZTtJQUcxQixJQUNJLFlBQVksQ0FBQyxPQUFnQjtRQUMvQixJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFzQkQsWUFBb0IsT0FBdUI7UUFBdkIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFHM0Msb0JBQWUsR0FBRyxDQUFDLENBQU0sRUFBRSxFQUFFO1FBQzdCLENBQUMsQ0FBQztJQUhGLENBQUM7SUFLRCxZQUFZLENBQUMsS0FBSztRQUNoQiwwQ0FBMEM7UUFDMUMsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDeEMsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFD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RyxFQUFFLGdCQUFnQixDQUFDOzRCQUM5QyxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsYUFBYTs0QkFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsZ0JBQWdCLENBQUM7NEJBQzlDLEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO3FHQU1HLFlBQVk7c0JBRGYsS0FBSztnQkFTRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgZm9yd2FyZFJlZiwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgVW50eXBlZEZvcm1Db250cm9sLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgVmFsaWRhdG9yLFxuICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgTkdfVkFMSURBVE9SU1xufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0JhY2tlbmRTZXJ2aWNlLCBVdGlscywgRm9ybWF0ZWRNYWlsVG99IGZyb20gJ0Blby1zZGsvY29yZSc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZW8tc3RyaW5nJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3N0cmluZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3N0cmluZy5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFN0cmluZ0NvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFN0cmluZ0NvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBTdHJpbmdDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yIHtcblxuICBwcml2YXRlIF9hdXRvY29tcGxldGU6IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIHNldCBhdXRvY29tcGxldGUoYXV0b0NvbTogYm9vbGVhbikge1xuICAgIHRoaXMuX2F1dG9jb21wbGV0ZSA9IGF1dG9Db207XG4gIH1cblxuICBnZXQgYXV0b2NvbXBsZXRlKCkge1xuICAgIHJldHVybiB0aGlzLl9hdXRvY29tcGxldGU7XG4gIH1cblxuICBASW5wdXQoKSBtdWx0aXNlbGVjdDogYm9vbGVhbjtcbiAgQElucHV0KCkgbXVsdGlsaW5lOiBib29sZWFuO1xuICBASW5wdXQoKSByZWFkb25seTogYm9vbGVhbjtcbiAgQElucHV0KCkgYXV0b2ZvY3VzOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIGNsYXNzaWZpY2F0aW9uOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNpdHVhdGlvbjogc3RyaW5nO1xuICBASW5wdXQoKSByZWdleDogc3RyaW5nO1xuICBASW5wdXQoKSBxbmFtZTogc3RyaW5nO1xuICAvLyBjb3VsZCBiZSBzbWFsbCwgbWVkaXVtLCBsYXJnZVxuICBASW5wdXQoKSBzaXplOiBzdHJpbmc7XG4gIEBJbnB1dCgpIG1pbkxlbmd0aDogbnVtYmVyO1xuICBASW5wdXQoKSBtYXhMZW5ndGg6IG51bWJlcjtcblxuICBhdXRvY29tcGxldGVSZXM6IGFueVtdO1xuICBmb3JtYXRlZFZhbHVlOiBGb3JtYXRlZE1haWxUbztcbiAgLy8gbW9kZWwgdmFsdWVcbiAgdmFsdWU7XG4gIHZhbGlkOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYmFja2VuZDogQmFja2VuZFNlcnZpY2UpIHtcbiAgfVxuXG4gIHByb3BhZ2F0ZUNoYW5nZSA9IChfOiBhbnkpID0+IHtcbiAgfTtcblxuICBvbktleVVwRW50ZXIoZXZlbnQpIHtcbiAgICAvLyBhcHBsaWVzIHRvIG11bHRpc2VsZWN0IGFuZCBhdXRvY29tcGxldGVcbiAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldC52YWx1ZS50cmltKCk7XG4gICAgaWYgKGlucHV0KSB7XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZSA/IHRoaXMudmFsdWUgOiBbXTtcbiAgICAgIHRoaXMudmFsdWUgPSBbLi4udGhpcy52YWx1ZSwgaW5wdXRdO1xuICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgICBldmVudC50YXJnZXQudmFsdWUgPSAnJztcbiAgICB9XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1hdGVkVmFsdWUgPSBVdGlscy5mb3JtYXRNYWlsVG8odmFsdWUsIHRoaXMuY2xhc3NpZmljYXRpb24gPT09ICdlbWFpbCcpO1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZSB8fCBudWxsO1xuICAgIHRoaXMuX3ZhbGlkYXRlKCk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICB9XG5cbiAgb25WYWx1ZUNoYW5nZShldnQpIHtcbiAgICB0aGlzLmZvcm1hdGVkVmFsdWUgPSBVdGlscy5mb3JtYXRNYWlsVG8oZXZ0LCB0aGlzLmNsYXNzaWZpY2F0aW9uID09PSAnZW1haWwnKTtcbiAgICB0aGlzLnZhbHVlID0gZXZ0Lmxlbmd0aCA/IGV2dCA6IG51bGw7XG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy52YWx1ZSk7XG4gIH1cblxuICBvbkJsdXIoKSB7XG4gICAgaWYgKHRoaXMudHJpbVZhbHVlKCkpIHtcbiAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUcmltcyB0aGUgY3VycmVudCB2YWx1ZSBhbmQgcmV0dXJucyB3ZXRoZXIgb3Igbm90IGl0IGhhcyBiZWVuIHRyaW1tZWRcbiAgICovXG4gIHByaXZhdGUgdHJpbVZhbHVlKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLnZhbHVlKSB7XG4gICAgICBpZiAodGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgICBjb25zdCBsZW5ndGhCZWZvcmUgPSB0aGlzLnZhbHVlLmpvaW4oJycpLmxlbmd0aDtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUubWFwKHYgPT4gdi50cmltKCkpO1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZS5qb2luKCcnKS5sZW5ndGggIT09IGxlbmd0aEJlZm9yZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGxlbmd0aEJlZm9yZSA9IHRoaXMudmFsdWUubGVuZ3RoO1xuICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZS50cmltKCk7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlLmxlbmd0aCAhPT0gbGVuZ3RoQmVmb3JlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBhdXRvY29tcGxldGVGbih0ZXJtOiBzdHJpbmcpIHtcbiAgICBjb25zdCB1cmkgPSBgL2F1dG9jb21wbGV0ZS9lbGVtZW50P3ByZWZpeD0ke2VuY29kZVVSSUNvbXBvbmVudCh0ZXJtKX0mcW5hbWU9JHt0aGlzLnFuYW1lfWA7XG4gICAgY29uc3QgYmFzZSA9IHRoaXMuYmFja2VuZC5nZXRTZWFyY2hCYXNlKCk7XG4gICAgdGhpcy5iYWNrZW5kXG4gICAgICAuZ2V0SnNvbih1cmksIGJhc2UpXG4gICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgIGxldCByID0gW107XG4gICAgICAgIHJlcy5mb3JFYWNoKGkgPT4gci5wdXNoKGkudmFsdWUpKTtcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVSZXMgPSByO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlQ2xhc3NpZmljYXRpb24oc3RyaW5nKTogYm9vbGVhbiB7XG5cbiAgICBpZiAodGhpcy5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IHBhdHRlcm47XG4gICAgICBpZiAodGhpcy5jbGFzc2lmaWNhdGlvbiA9PT0gJ2VtYWlsJykge1xuICAgICAgICBwYXR0ZXJuID0gL14oPzooLis/KVxccyo8KFxcdyspKFtcXC0rLl1bXFx3XSspKkAoXFx3W1xcLVxcd10qXFwuKXsxLDV9KFtBLVphLXpdezIsNn0pPnxbXCInXXsxfSguKz8pW1wiJ117MX1cXHMqPChcXHcrKShbXFwtKy5dW1xcd10rKSpAKFxcd1tcXC1cXHddKlxcLil7MSw1fShbQS1aYS16XXsyLDZ9KT58KFxcdyspKFtcXC0rLl1bXFx3XSspKkAoXFx3W1xcLVxcd10qXFwuKXsxLDV9KFtBLVphLXpdezIsNn0pKSQvO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmNsYXNzaWZpY2F0aW9uID09PSAndXJsJykge1xuICAgICAgICBwYXR0ZXJuID0gLyhodHRwfGZ0cHxodHRwcyk6XFwvXFwvW1xcdy1dKyhcXC5bXFx3LV0rKSsoW1xcdy4sQD9ePSUmYW1wOzpcXC9+KyMtXSpbXFx3QD9ePSUmYW1wO1xcL34rIy1dKT8vO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHBhdHRlcm4gPyBwYXR0ZXJuLnRlc3Qoc3RyaW5nKSA6IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfdmFsaWRhdGUoKSB7XG4gICAgbGV0IGVycjtcbiAgICAvLyB2YWxpZGF0ZSByZWd1bGFyIGV4cHJlc3Npb25cbiAgICBpZiAodGhpcy52YWx1ZSAmJiB0aGlzLnJlZ2V4KSB7XG4gICAgICBpZiAodGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgICBpZiAodGhpcy52YWx1ZS5sZW5ndGggPiAwICYmICEhdGhpcy52YWx1ZS5maW5kKHYgPT4gIVJlZ0V4cCh0aGlzLnJlZ2V4KS50ZXN0KHYpKSkge1xuICAgICAgICAgIGVyciA9IHt9O1xuICAgICAgICAgIGVyclsncmVnZXgnXSA9IHtcbiAgICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCFSZWdFeHAodGhpcy5yZWdleCkudGVzdCh0aGlzLnZhbHVlKSkge1xuICAgICAgICAgIGVyciA9IHt9O1xuICAgICAgICAgIGVyclsncmVnZXgnXSA9IHtcbiAgICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvLyB2YWxpZGF0ZSBjbGFzc2lmaWNhdGlvbiBzZXR0aW5nc1xuICAgIGlmICh0aGlzLnZhbHVlICYmIHRoaXMuY2xhc3NpZmljYXRpb24pIHtcbiAgICAgIGlmICh0aGlzLm11bHRpc2VsZWN0KSB7XG4gICAgICAgIGZvciAobGV0IHYgb2YgdGhpcy52YWx1ZSkge1xuICAgICAgICAgIGlmICghdGhpcy52YWxpZGF0ZUNsYXNzaWZpY2F0aW9uKHYpKSB7XG4gICAgICAgICAgICBlcnIgPSB7fTtcbiAgICAgICAgICAgIGVyclsnY2xhc3NpZmljYXRpb24nICsgdGhpcy5jbGFzc2lmaWNhdGlvbl0gPSB7XG4gICAgICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICghdGhpcy52YWxpZGF0ZUNsYXNzaWZpY2F0aW9uKHRoaXMudmFsdWUpKSB7XG4gICAgICAgICAgZXJyID0ge307XG4gICAgICAgICAgZXJyWydjbGFzc2lmaWNhdGlvbicgKyB0aGlzLmNsYXNzaWZpY2F0aW9uXSA9IHtcbiAgICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLy8gdmFsaWRhdGUgbGVuZ3RoIGhlcmUgd2hlbiBtdWx0aXNlbGVjdFxuICAgIGlmICh0aGlzLnZhbHVlICYmIHRoaXMudmFsdWUgIT09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLm11bHRpc2VsZWN0KSB7XG4gICAgICAgIGlmICh0aGlzLnZhbHVlLmxlbmd0aCA+IDAgJiYgISF0aGlzLnZhbHVlLmZpbmQodiA9PiB2Lmxlbmd0aCA8IHRoaXMubWluTGVuZ3RoKSkge1xuICAgICAgICAgIGVyciA9IHt9O1xuICAgICAgICAgIGVyclsnbWlubGVuZ3RoJ10gPSB7XG4gICAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudmFsdWUubGVuZ3RoID4gMCAmJiAhIXRoaXMudmFsdWUuZmluZCh2ID0+IHYubGVuZ3RoID4gdGhpcy5tYXhMZW5ndGgpKSB7XG4gICAgICAgICAgZXJyID0ge307XG4gICAgICAgICAgZXJyWydtYXhsZW5ndGgnXSA9IHtcbiAgICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMudmFsdWUubGVuZ3RoID4gMCAmJiB0aGlzLnZhbHVlLmxlbmd0aCA8IHRoaXMubWluTGVuZ3RoKSB7XG4gICAgICAgICAgZXJyID0ge307XG4gICAgICAgICAgZXJyWydtaW5sZW5ndGgnXSA9IHtcbiAgICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy52YWx1ZS5sZW5ndGggPiB0aGlzLm1heExlbmd0aCkge1xuICAgICAgICAgIGVyciA9IHt9O1xuICAgICAgICAgIGVyclsnbWF4bGVuZ3RoJ10gPSB7XG4gICAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLy8gdmFsaWRhdGUgaW52YWxpZCBpZiBvbmx5IHdoaXRlc3BhY2VzXG4gICAgaWYgKHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgaWYgKHRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgICAgZm9yIChsZXQgdiBvZiB0aGlzLnZhbHVlKSB7XG4gICAgICAgICAgaWYgKHYubGVuZ3RoICYmICF2LnRyaW0oKS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGVyciA9IHt9O1xuICAgICAgICAgICAgZXJyWydvbmx5V2hpdGVzcGFjZXMnXSA9IHtcbiAgICAgICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy52YWx1ZS5sZW5ndGggJiYgIXRoaXMudmFsdWUudHJpbSgpLmxlbmd0aCkge1xuICAgICAgICAgIGVyciA9IHt9O1xuICAgICAgICAgIGVyclsnb25seVdoaXRlc3BhY2VzJ10gPSB7XG4gICAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy52YWxpZCA9ICFlcnI7XG4gICAgcmV0dXJuIGVyciB8fCBudWxsO1xuICB9XG5cbiAgLy8gcmV0dXJucyBudWxsIHdoZW4gdmFsaWQgZWxzZSB0aGUgdmFsaWRhdGlvbiBvYmplY3RcbiAgcHVibGljIHZhbGlkYXRlKGM6IFVudHlwZWRGb3JtQ29udHJvbCkge1xuICAgIHJldHVybiB0aGlzLl92YWxpZGF0ZSgpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZW8tZm9ybS1zdHJpbmdcIj5cblxuICA8aW5wdXQgKm5nSWY9XCIhbXVsdGlsaW5lICYmICFtdWx0aXNlbGVjdCAmJiAhYXV0b2NvbXBsZXRlXCIgdHlwZT1cInRleHRcIiAoYmx1cik9XCJvbkJsdXIoKVwiIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgW2Rpc2FibGVkXT1cInJlYWRvbmx5XCIgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uVmFsdWVDaGFuZ2UoJGV2ZW50KVwiIC8+XG5cbiAgPCEtLSBzaW5nbGUgbGluZSBpbnB1dCB3aXRoIGF1dG9jb21wbGV0ZSAtLT5cbiAgPHl2Yy1hdXRvY29tcGxldGUgKm5nSWY9XCIhbXVsdGlsaW5lICYmICFtdWx0aXNlbGVjdCAmJiBhdXRvY29tcGxldGVcIiAjYXV0b2NvbXBsZXRlIFsobmdNb2RlbCldPVwidmFsdWVcIlxuICAgIFtkaXNhYmxlZF09XCJyZWFkb25seVwiIFthdXRvY29tcGxldGVWYWx1ZXNdPVwiYXV0b2NvbXBsZXRlUmVzXCIgKGJsdXIpPVwib25CbHVyKClcIlxuICAgIChzdWdnZXN0aW9uU2VsZWN0KT1cIm9uVmFsdWVDaGFuZ2UoJGV2ZW50KVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uVmFsdWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgKGF1dG9jb21wbGV0ZUZuYyk9XCJhdXRvY29tcGxldGVGbigkZXZlbnQpXCI+XG4gIDwveXZjLWF1dG9jb21wbGV0ZT5cblxuICA8IS0tIHNpbmdsZSBsaW5lIGlucHV0IHdpdGggbXVsdGlzZWxlY3QtLT5cbiAgPHl2Yy1jaGlwcyAqbmdJZj1cIiFtdWx0aWxpbmUgJiYgbXVsdGlzZWxlY3QgJiYgIWF1dG9jb21wbGV0ZVwiIFsobmdNb2RlbCldPVwidmFsdWVcIiBbZGlzYWJsZWRdPVwicmVhZG9ubHlcIlxuICAgIChibHVyKT1cIm9uQmx1cigpXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCI+XG4gIDwveXZjLWNoaXBzPlxuXG4gIDwhLS0gc2luZ2xlIGxpbmUgaW5wdXQgd2l0aCBtdWx0aXNlbGVjdCBhbmQgYXV0b2NvbXBsZXRlIC0tPlxuICA8eXZjLWF1dG9jb21wbGV0ZSAqbmdJZj1cIiFtdWx0aWxpbmUgJiYgbXVsdGlzZWxlY3QgJiYgYXV0b2NvbXBsZXRlXCIgW2F1dG9jb21wbGV0ZVZhbHVlc109XCJhdXRvY29tcGxldGVSZXNcIlxuICAgIFttdWx0aXBsZV09XCJ0cnVlXCIgW2Rpc2FibGVkXT1cInJlYWRvbmx5XCIgKGJsdXIpPVwib25CbHVyKClcIiAoYXV0b2NvbXBsZXRlRm5jKT1cImF1dG9jb21wbGV0ZUZuKCRldmVudClcIlxuICAgIFsobmdNb2RlbCldPVwidmFsdWVcIiAobmdNb2RlbENoYW5nZSk9XCJvblZhbHVlQ2hhbmdlKCRldmVudClcIj5cbiAgPC95dmMtYXV0b2NvbXBsZXRlPlxuXG4gIDwhLS0gbXVsdGkgbGluZSB0ZXh0IGlucHV0cyAtLT5cbiAgPHRleHRhcmVhIGNsYXNzPVwiaW5wdXQtdGV4dGFyZWEgc2l6ZS17e3NpemV9fVwiICpuZ0lmPVwibXVsdGlsaW5lXCIgKGJsdXIpPVwib25CbHVyKClcIiBbKG5nTW9kZWwpXT1cInZhbHVlXCJcbiAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIiBbZGlzYWJsZWRdPVwicmVhZG9ubHlcIiAobmdNb2RlbENoYW5nZSk9XCJvblZhbHVlQ2hhbmdlKCRldmVudClcIj48L3RleHRhcmVhPlxuXG4gIDxkaXYgY2xhc3M9XCJjbGFzc2lmeVwiIFtuZ0NsYXNzXT1cIntlbXB0eTogIXZhbHVlIHx8IHNpdHVhdGlvbiA9PT0gJ1NFQVJDSCd9XCI+XG4gICAgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cIm1haWx0bzp7e2Zvcm1hdGVkVmFsdWV9fVwiICpuZ0lmPVwiY2xhc3NpZmljYXRpb24gPT09ICdlbWFpbCcgJiYgdmFsaWRcIj5cbiAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgLTk2MCA5NjAgOTYwXCIgd2lkdGg9XCIyMFwiPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGQ9XCJNMTgwLjMwOS0yMTIuMDAxcS0yNy4wMDggMC00NS42NTgtMTguNjYyLTE4LjY1LTE4LjY2Mi0xOC42NS00NS42ODZ2LTQwNy42MjZxMC0yNy4wMjQgMTguNjUtNDUuNTI0dDQ1LjY1OC0xOC41aDU5OS4zODJxMjcuMDA4IDAgNDUuNjU4IDE4LjY2MiAxOC42NSAxOC42NjIgMTguNjUgNDUuNjg2djQwNy42MjZxMCAyNy4wMjQtMTguNjUgNDUuNTI0dC00NS42NTggMTguNUgxODAuMzA5Wk00ODAtNDQ5LjY5NCAxNjgtNjMzLjMwOXYzNTdxMCA1LjM4NSAzLjQ2MiA4Ljg0NyAzLjQ2MiAzLjQ2MiA4Ljg0NyAzLjQ2Mmg1OTkuMzgycTUuMzg1IDAgOC44NDctMy40NjIgMy40NjItMy40NjIgMy40NjItOC44NDd2LTM1N0w0ODAtNDQ5LjY5NFpNNDgwLTUxN2wzMDUuODQ2LTE3OUgxNzQuMTU0TDQ4MC01MTdaTTE2OC02MzMuMzA5Vi02OTYtMjc2LjMwOXEwIDUuMzg1IDMuNDYyIDguODQ3IDMuNDYyIDMuNDYyIDguODQ3IDMuNDYySDE2OHYtMzY5LjMwOVpcIiAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9hPlxuICAgIDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJ7e3ZhbHVlfX1cIiAqbmdJZj1cImNsYXNzaWZpY2F0aW9uID09PSAndXJsJyAmJiB2YWxpZFwiPlxuICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAtOTYwIDk2MCA5NjBcIiB3aWR0aD1cIjIwXCI+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgZD1cIk00ODAtMTE2LjAwMXEtNzUuMTU0IDAtMTQxLjQ5OS0yOC40NjItNjYuMzQ2LTI4LjQ2MS0xMTUuOTYyLTc4LjA3Ni00OS42MTUtNDkuNjE2LTc4LjA3Ni0xMTUuOTYyUTExNi4wMDEtNDA0Ljg0NiAxMTYuMDAxLTQ4MHEwLTc1Ljc2OSAyOC40NjItMTQxLjgwNyAyOC40NjEtNjYuMDM4IDc4LjA3Ni0xMTUuNjU0IDQ5LjYxNi00OS42MTUgMTE1Ljk2Mi03OC4wNzZRNDA0Ljg0Ni04NDMuOTk5IDQ4MC04NDMuOTk5cTc1Ljc2OSAwIDE0MS44MDcgMjguNDYyIDY2LjAzOCAyOC40NjEgMTE1LjY1NCA3OC4wNzYgNDkuNjE1IDQ5LjYxNiA3OC4wNzYgMTE1LjY1NFE4NDMuOTk5LTU1NS43NjkgODQzLjk5OS00ODBxMCA3NS4xNTQtMjguNDYyIDE0MS40OTktMjguNDYxIDY2LjM0Ni03OC4wNzYgMTE1Ljk2Mi00OS42MTYgNDkuNjE1LTExNS42NTQgNzguMDc2UTU1NS43NjktMTE2LjAwMSA0ODAtMTE2LjAwMVptMC01My44NDVxMjEuNjE2LTIxLjYxNiA0MC41MzktNzAuNDI0IDE4LjkyMy00OC44MDggMjkuMDc3LTEwOC44MDhINDEwLjM4NHExMC45MjMgNjEuNTM5IDI5LjQ2MiAxMTAuMzQ3IDE4LjUzOCA0OC44MDggNDAuMTU0IDY4Ljg4NVptLTY0LjQ2LTVxLTE5LTMwLTM0LjMwOC03NS41Mzl0LTIzLjQ2Mi05OC42OTNIMTk3LjA3NnEzMS42OTMgNjkuMzA5IDg5LjUwMSAxMTUuMTk0IDU3LjgwOSA0NS44ODUgMTI4Ljk2MyA1OS4wMzhabTEyOC45MiAwcTcxLjE1NC0xMy4xNTMgMTI4Ljk2My01OS4wMzggNTcuODA4LTQ1Ljg4NSA4OS41MDEtMTE1LjE5NEg2MDIuMjNRNTkyLjE1My0yOTUuNTM5IDU3Ni44NDUtMjUwcS0xNS4zMDggNDUuNTM5LTMyLjM4NSA3NS4xNTRabTc5LjQ2My0yMjYuMjNoMTczLjY5M3E0LjIzMS0yMS4zMDggNi4wMzktNDAuNzMxIDEuODA4LTE5LjQyNCAxLjgwOC0zOC4xOTN0LTEuODA4LTM4LjY5M3EtMS44MDgtMTkuOTIzLTYuMDM5LTQwLjIzMUg2MjMuOTIzcTEuMjMxIDE5LjM4NSAxLjE1NCA0MC4zODUtLjA3NyAyMS0uMDc3IDQwLjUzOXQuMDc3IDM5LjUzOXEuMDc3IDIwLTEuMTU0IDM3LjM4NVptLTIxOC4zMDggMGgxNDguNzdxMi43NjktMjIuMzA4IDMuNDYyLTQxLjM0Ny42OTItMTkuMDM4LjY5Mi0zNy41NzcgMC0xOC41MzktLjY5Mi0zOC4wNzctLjY5My0xOS41MzktMy40NjItNDAuODQ3aC0xNDguNzdxLTIuNzY5IDIxLjMwOC0zLjQ2MiA0MC44NDctLjY5MiAxOS41MzgtLjY5MiAzOC4wNzcgMCAxOC41MzkuNjkyIDM4LjA3Ny42OTMgMTkuNTM5IDMuNDYyIDQwLjg0N1ptLTI0My4yMzEgMGgxNzMuNjkzcS0xLjIzMS0xOS4zODUtMS4xNTQtNDAuMzg1LjA3Ny0yMSAuMDc3LTQwLjUzOXQtLjA3Ny0zOS41MzlxLS4wNzctMjAgMS4xNTQtMzcuMzg1SDE2Mi4zODRxLTQuMjMxIDIxLjMwOC02LjAzOSA0MC43MzEtMS44MDggMTkuNDI0LTEuODA4IDM4LjE5M3QxLjgwOCAzOC4xOTNxMS44MDggMTkuNDIzIDYuMDM5IDQwLjczMVpNNjAyLjIzLTYxMC45MjJoMTYwLjY5NFE3MzAuODQ2LTY4MSA2NzQtNzI2LjExNnEtNTYuODQ3LTQ1LjExNS0xMjkuNTQtNTkuNDIzIDE5IDMxLjkyMyAzMy45MjMgNzYuODg1IDE0LjkyNCA0NC45NjIgMjMuODQ3IDk3LjczMlptLTE5MS44NDYgMGgxMzkuMjMycS0xMC45MjMtNjEuMTU0LTMwLjAzOS0xMTAuOTI0LTE5LjExNS00OS43NjktMzkuNTc3LTY4LjMwOC0yMC40NjIgMTguNTM5LTM5LjU3NyA2OC4zMDgtMTkuMTE2IDQ5Ljc3LTMwLjAzOSAxMTAuOTI0Wm0tMjEzLjMwOCAwSDM1Ny43N3E4LjkyMy01Mi43NyAyMy44NDctOTcuNzMyIDE0LjkyMy00NC45NjIgMzMuOTIzLTc2Ljg4NS03My4wNzcgMTQuMzA4LTEyOS43MzIgNTkuNjE2LTU2LjY1NCA0NS4zMDgtODguNzMyIDExNS4wMDFaXCIgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvYT5cbiAgPC9kaXY+XG5cbjwvZGl2PlxuIl19
250
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL2Zvcm0tZWxlbWVudHMvc3RyaW5nL3N0cmluZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9mb3JtLWVsZW1lbnRzL3N0cmluZy9zdHJpbmcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFJTCxpQkFBaUIsRUFDakIsYUFBYSxFQUNkLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFpQixLQUFLLEVBQWlCLE1BQU0sY0FBYyxDQUFDOzs7Ozs7O0FBb0JuRSxNQUFNLE9BQU8sZUFBZTtJQUcxQixJQUNJLFlBQVksQ0FBQyxPQUFnQjtRQUMvQixJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFzQkQsWUFBb0IsT0FBdUI7UUFBdkIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFHM0Msb0JBQWUsR0FBRyxDQUFDLENBQU0sRUFBRSxFQUFFO1FBQzdCLENBQUMsQ0FBQztJQUhGLENBQUM7SUFLRCxZQUFZLENBQUMsS0FBSztRQUNoQiwwQ0FBMEM7UUFDMUMsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDeEMsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFD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RyxFQUFFLGdCQUFnQixDQUFDOzRCQUM5QyxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsYUFBYTs0QkFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsZ0JBQWdCLENBQUM7NEJBQzlDLEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO3FHQU1HLFlBQVk7c0JBRGYsS0FBSztnQkFTRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgZm9yd2FyZFJlZiwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgVW50eXBlZEZvcm1Db250cm9sLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgVmFsaWRhdG9yLFxuICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgTkdfVkFMSURBVE9SU1xufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0JhY2tlbmRTZXJ2aWNlLCBVdGlscywgRm9ybWF0ZWRNYWlsVG99IGZyb20gJ0Blby1zZGsvY29yZSc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZW8tc3RyaW5nJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3N0cmluZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3N0cmluZy5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFN0cmluZ0NvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFN0cmluZ0NvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBTdHJpbmdDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yIHtcblxuICBwcml2YXRlIF9hdXRvY29tcGxldGU6IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIHNldCBhdXRvY29tcGxldGUoYXV0b0NvbTogYm9vbGVhbikge1xuICAgIHRoaXMuX2F1dG9jb21wbGV0ZSA9IGF1dG9Db207XG4gIH1cblxuICBnZXQgYXV0b2NvbXBsZXRlKCkge1xuICAgIHJldHVybiB0aGlzLl9hdXRvY29tcGxldGU7XG4gIH1cblxuICBASW5wdXQoKSBtdWx0aXNlbGVjdDogYm9vbGVhbjtcbiAgQElucHV0KCkgbXVsdGlsaW5lOiBib29sZWFuO1xuICBASW5wdXQoKSByZWFkb25seTogYm9vbGVhbjtcbiAgQElucHV0KCkgYXV0b2ZvY3VzOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIGNsYXNzaWZpY2F0aW9uOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNpdHVhdGlvbjogc3RyaW5nO1xuICBASW5wdXQoKSByZWdleDogc3RyaW5nO1xuICBASW5wdXQoKSBxbmFtZTogc3RyaW5nO1xuICAvLyBjb3VsZCBiZSBzbWFsbCwgbWVkaXVtLCBsYXJnZVxuICBASW5wdXQoKSBzaXplOiBzdHJpbmc7XG4gIEBJbnB1dCgpIG1pbkxlbmd0aDogbnVtYmVyO1xuICBASW5wdXQoKSBtYXhMZW5ndGg6IG51bWJlcjtcblxuICBhdXRvY29tcGxldGVSZXM6IGFueVtdO1xuICBmb3JtYXRlZFZhbHVlOiBGb3JtYXRlZE1haWxUbztcbiAgLy8gbW9kZWwgdmFsdWVcbiAgdmFsdWU7XG4gIHZhbGlkOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYmFja2VuZDogQmFja2VuZFNlcnZpY2UpIHtcbiAgfVxuXG4gIHByb3BhZ2F0ZUNoYW5nZSA9IChfOiBhbnkpID0+IHtcbiAgfTtcblxuICBvbktleVVwRW50ZXIoZXZlbnQpIHtcbiAgICAvLyBhcHBsaWVzIHRvIG11bHRpc2VsZWN0IGFuZCBhdXRvY29tcGxldGVcbiAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldC52YWx1ZS50cmltKCk7XG4gICAgaWYgKGlucHV0KSB7XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZSA/IHRoaXMudmFsdWUgOiBbXTtcbiAgICAgIHRoaXMudmFsdWUgPSBbLi4udGhpcy52YWx1ZSwgaW5wdXRdO1xuICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgICBldmVudC50YXJnZXQudmFsdWUgPSAnJztcbiAgICB9XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1hdGVkVmFsdWUgPSBVdGlscy5mb3JtYXRNYWlsVG8odmFsdWUsIHRoaXMuY2xhc3NpZmljYXRpb24gPT09ICdlbWFpbCcpO1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZSB8fCBudWxsO1xuICAgIHRoaXMuX3ZhbGlkYXRlKCk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICB9XG5cbiAgb25WYWx1ZUNoYW5nZShldnQpIHtcbiAgICB0aGlzLmZvcm1hdGVkVmFsdWUgPSBVdGlscy5mb3JtYXRNYWlsVG8oZXZ0LCB0aGlzLmNsYXNzaWZpY2F0aW9uID09PSAnZW1haWwnKTtcbiAgICB0aGlzLnZhbHVlID0gZXZ0Lmxlbmd0aCA/IGV2dCA6IG51bGw7XG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy52YWx1ZSk7XG4gIH1cblxuICBvbkJsdXIoKSB7XG4gICAgaWYgKHRoaXMudHJpbVZhbHVlKCkpIHtcbiAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUcmltcyB0aGUgY3VycmVudCB2YWx1ZSBhbmQgcmV0dXJucyB3ZXRoZXIgb3Igbm90IGl0IGhhcyBiZWVuIHRyaW1tZWRcbiAgICovXG4gIHByaXZhdGUgdHJpbVZhbHVlKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLnZhbHVlKSB7XG4gICAgICBpZiAodGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgICBjb25zdCBsZW5ndGhCZWZvcmUgPSB0aGlzLnZhbHVlLmpvaW4oJycpLmxlbmd0aDtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUubWFwKHYgPT4gdi50cmltKCkpO1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZS5qb2luKCcnKS5sZW5ndGggIT09IGxlbmd0aEJlZm9yZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGxlbmd0aEJlZm9yZSA9IHRoaXMudmFsdWUubGVuZ3RoO1xuICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZS50cmltKCk7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlLmxlbmd0aCAhPT0gbGVuZ3RoQmVmb3JlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBhdXRvY29tcGxldGVGbih0ZXJtOiBzdHJpbmcpIHtcbiAgICBjb25zdCB1cmkgPSBgL2F1dG9jb21wbGV0ZS9lbGVtZW50P3ByZWZpeD0ke2VuY29kZVVSSUNvbXBvbmVudCh0ZXJtKX0mcW5hbWU9JHt0aGlzLnFuYW1lfWA7XG4gICAgY29uc3QgYmFzZSA9IHRoaXMuYmFja2VuZC5nZXRTZWFyY2hCYXNlKCk7XG4gICAgdGhpcy5iYWNrZW5kXG4gICAgICAuZ2V0SnNvbih1cmksIGJhc2UpXG4gICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgIGxldCByID0gW107XG4gICAgICAgIHJlcy5mb3JFYWNoKGkgPT4gci5wdXNoKGkudmFsdWUpKTtcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVSZXMgPSByO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlQ2xhc3NpZmljYXRpb24oc3RyaW5nKTogYm9vbGVhbiB7XG5cbiAgICBpZiAodGhpcy5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IHBhdHRlcm47XG4gICAgICBpZiAodGhpcy5jbGFzc2lmaWNhdGlvbiA9PT0gJ2VtYWlsJykge1xuICAgICAgICBwYXR0ZXJuID0gL14oPzooLis/KVxccyo8KFxcdyspKFtcXC0rLl1bXFx3XSspKkAoXFx3W1xcLVxcd10qXFwuKXsxLDV9KFtBLVphLXpdezIsNn0pPnxbXCInXXsxfSguKz8pW1wiJ117MX1cXHMqPChcXHcrKShbXFwtKy5dW1xcd10rKSpAKFxcd1tcXC1cXHddKlxcLil7MSw1fShbQS1aYS16XXsyLDZ9KT58KFxcdyspKFtcXC0rLl1bXFx3XSspKkAoXFx3W1xcLVxcd10qXFwuKXsxLDV9KFtBLVphLXpdezIsNn0pKSQvO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmNsYXNzaWZpY2F0aW9uID09PSAndXJsJykge1xuICAgICAgICBwYXR0ZXJuID0gLyhodHRwfGZ0cHxodHRwcyk6XFwvXFwvW1xcdy1dKyhcXC5bXFx3LV0rKSsoW1xcdy4sQD9ePSUmYW1wOzpcXC9+KyMtXSpbXFx3QD9ePSUmYW1wO1xcL34rIy1dKT8vO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHBhdHRlcm4gPyBwYXR0ZXJuLnRlc3Qoc3RyaW5nKSA6IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfdmFsaWRhdGUoKSB7XG4gICAgbGV0IGVycjtcbiAgICAvLyB2YWxpZGF0ZSByZWd1bGFyIGV4cHJlc3Npb25cbiAgICBpZiAodGhpcy52YWx1ZSAmJiB0aGlzLnJlZ2V4KSB7XG4gICAgICBpZiAodGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgICBpZiAodGhpcy52YWx1ZS5sZW5ndGggPiAwICYmICEhdGhpcy52YWx1ZS5maW5kKHYgPT4gIVJlZ0V4cCh0aGlzLnJlZ2V4KS50ZXN0KHYpKSkge1xuICAgICAgICAgIGVyciA9IHt9O1xuICAgICAgICAgIGVyclsncmVnZXgnXSA9IHtcbiAgICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCFSZWdFeHAodGhpcy5yZWdleCkudGVzdCh0aGlzLnZhbHVlKSkge1xuICAgICAgICAgIGVyciA9IHt9O1xuICAgICAgICAgIGVyclsncmVnZXgnXSA9IHtcbiAgICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvLyB2YWxpZGF0ZSBjbGFzc2lmaWNhdGlvbiBzZXR0aW5nc1xuICAgIGlmICh0aGlzLnZhbHVlICYmIHRoaXMuY2xhc3NpZmljYXRpb24pIHtcbiAgICAgIGlmICh0aGlzLm11bHRpc2VsZWN0KSB7XG4gICAgICAgIGZvciAobGV0IHYgb2YgdGhpcy52YWx1ZSkge1xuICAgICAgICAgIGlmICghdGhpcy52YWxpZGF0ZUNsYXNzaWZpY2F0aW9uKHYpKSB7XG4gICAgICAgICAgICBlcnIgPSB7fTtcbiAgICAgICAgICAgIGVyclsnY2xhc3NpZmljYXRpb24nICsgdGhpcy5jbGFzc2lmaWNhdGlvbl0gPSB7XG4gICAgICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICghdGhpcy52YWxpZGF0ZUNsYXNzaWZpY2F0aW9uKHRoaXMudmFsdWUpKSB7XG4gICAgICAgICAgZXJyID0ge307XG4gICAgICAgICAgZXJyWydjbGFzc2lmaWNhdGlvbicgKyB0aGlzLmNsYXNzaWZpY2F0aW9uXSA9IHtcbiAgICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLy8gdmFsaWRhdGUgbGVuZ3RoIGhlcmUgd2hlbiBtdWx0aXNlbGVjdFxuICAgIGlmICh0aGlzLnZhbHVlICYmIHRoaXMudmFsdWUgIT09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLm11bHRpc2VsZWN0KSB7XG4gICAgICAgIGlmICh0aGlzLnZhbHVlLmxlbmd0aCA+IDAgJiYgISF0aGlzLnZhbHVlLmZpbmQodiA9PiB2Lmxlbmd0aCA8IHRoaXMubWluTGVuZ3RoKSkge1xuICAgICAgICAgIGVyciA9IHt9O1xuICAgICAgICAgIGVyclsnbWlubGVuZ3RoJ10gPSB7XG4gICAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudmFsdWUubGVuZ3RoID4gMCAmJiAhIXRoaXMudmFsdWUuZmluZCh2ID0+IHYubGVuZ3RoID4gdGhpcy5tYXhMZW5ndGgpKSB7XG4gICAgICAgICAgZXJyID0ge307XG4gICAgICAgICAgZXJyWydtYXhsZW5ndGgnXSA9IHtcbiAgICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMudmFsdWUubGVuZ3RoID4gMCAmJiB0aGlzLnZhbHVlLmxlbmd0aCA8IHRoaXMubWluTGVuZ3RoKSB7XG4gICAgICAgICAgZXJyID0ge307XG4gICAgICAgICAgZXJyWydtaW5sZW5ndGgnXSA9IHtcbiAgICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy52YWx1ZS5sZW5ndGggPiB0aGlzLm1heExlbmd0aCkge1xuICAgICAgICAgIGVyciA9IHt9O1xuICAgICAgICAgIGVyclsnbWF4bGVuZ3RoJ10gPSB7XG4gICAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLy8gdmFsaWRhdGUgaW52YWxpZCBpZiBvbmx5IHdoaXRlc3BhY2VzXG4gICAgaWYgKHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgaWYgKHRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgICAgZm9yIChsZXQgdiBvZiB0aGlzLnZhbHVlKSB7XG4gICAgICAgICAgaWYgKHYubGVuZ3RoICYmICF2LnRyaW0oKS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGVyciA9IHt9O1xuICAgICAgICAgICAgZXJyWydvbmx5V2hpdGVzcGFjZXMnXSA9IHtcbiAgICAgICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy52YWx1ZS5sZW5ndGggJiYgIXRoaXMudmFsdWUudHJpbSgpLmxlbmd0aCkge1xuICAgICAgICAgIGVyciA9IHt9O1xuICAgICAgICAgIGVyclsnb25seVdoaXRlc3BhY2VzJ10gPSB7XG4gICAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy52YWxpZCA9ICFlcnI7XG4gICAgcmV0dXJuIGVyciB8fCBudWxsO1xuICB9XG5cbiAgLy8gcmV0dXJucyBudWxsIHdoZW4gdmFsaWQgZWxzZSB0aGUgdmFsaWRhdGlvbiBvYmplY3RcbiAgcHVibGljIHZhbGlkYXRlKGM6IFVudHlwZWRGb3JtQ29udHJvbCkge1xuICAgIHJldHVybiB0aGlzLl92YWxpZGF0ZSgpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZW8tZm9ybS1zdHJpbmdcIj5cblxuICA8aW5wdXQgKm5nSWY9XCIhbXVsdGlsaW5lICYmICFtdWx0aXNlbGVjdCAmJiAhYXV0b2NvbXBsZXRlXCIgdHlwZT1cInRleHRcIiAoYmx1cik9XCJvbkJsdXIoKVwiIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgW2Rpc2FibGVkXT1cInJlYWRvbmx5XCIgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uVmFsdWVDaGFuZ2UoJGV2ZW50KVwiIC8+XG5cbiAgPCEtLSBzaW5nbGUgbGluZSBpbnB1dCB3aXRoIGF1dG9jb21wbGV0ZSAtLT5cbiAgPHl2Yy1hdXRvY29tcGxldGUgKm5nSWY9XCIhbXVsdGlsaW5lICYmICFtdWx0aXNlbGVjdCAmJiBhdXRvY29tcGxldGVcIiAjYXV0b2NvbXBsZXRlIFsobmdNb2RlbCldPVwidmFsdWVcIlxuICAgIFtkaXNhYmxlZF09XCJyZWFkb25seVwiIFthdXRvY29tcGxldGVWYWx1ZXNdPVwiYXV0b2NvbXBsZXRlUmVzXCIgKGJsdXIpPVwib25CbHVyKClcIlxuICAgIChzdWdnZXN0aW9uU2VsZWN0KT1cIm9uVmFsdWVDaGFuZ2UoJGV2ZW50KVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uVmFsdWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgKGF1dG9jb21wbGV0ZUZuYyk9XCJhdXRvY29tcGxldGVGbigkZXZlbnQpXCI+XG4gIDwveXZjLWF1dG9jb21wbGV0ZT5cblxuICA8IS0tIHNpbmdsZSBsaW5lIGlucHV0IHdpdGggbXVsdGlzZWxlY3QtLT5cbiAgPHl2Yy1jaGlwcyAqbmdJZj1cIiFtdWx0aWxpbmUgJiYgbXVsdGlzZWxlY3QgJiYgIWF1dG9jb21wbGV0ZVwiIFsobmdNb2RlbCldPVwidmFsdWVcIiBbZGlzYWJsZWRdPVwicmVhZG9ubHlcIlxuICAgIChibHVyKT1cIm9uQmx1cigpXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCI+XG4gIDwveXZjLWNoaXBzPlxuXG4gIDwhLS0gc2luZ2xlIGxpbmUgaW5wdXQgd2l0aCBtdWx0aXNlbGVjdCBhbmQgYXV0b2NvbXBsZXRlIC0tPlxuICA8eXZjLWF1dG9jb21wbGV0ZSAqbmdJZj1cIiFtdWx0aWxpbmUgJiYgbXVsdGlzZWxlY3QgJiYgYXV0b2NvbXBsZXRlXCIgW2F1dG9jb21wbGV0ZVZhbHVlc109XCJhdXRvY29tcGxldGVSZXNcIlxuICAgIFttdWx0aXBsZV09XCJ0cnVlXCIgW2Rpc2FibGVkXT1cInJlYWRvbmx5XCIgKGJsdXIpPVwib25CbHVyKClcIiAoYXV0b2NvbXBsZXRlRm5jKT1cImF1dG9jb21wbGV0ZUZuKCRldmVudClcIlxuICAgIFsobmdNb2RlbCldPVwidmFsdWVcIiAobmdNb2RlbENoYW5nZSk9XCJvblZhbHVlQ2hhbmdlKCRldmVudClcIj5cbiAgPC95dmMtYXV0b2NvbXBsZXRlPlxuXG4gIDwhLS0gbXVsdGkgbGluZSB0ZXh0IGlucHV0cyAtLT5cbiAgPHRleHRhcmVhIGNsYXNzPVwiaW5wdXQtdGV4dGFyZWEgc2l6ZS17e3NpemV9fVwiICpuZ0lmPVwibXVsdGlsaW5lXCIgKGJsdXIpPVwib25CbHVyKClcIiBbKG5nTW9kZWwpXT1cInZhbHVlXCJcbiAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIiBbZGlzYWJsZWRdPVwicmVhZG9ubHlcIiAobmdNb2RlbENoYW5nZSk9XCJvblZhbHVlQ2hhbmdlKCRldmVudClcIj48L3RleHRhcmVhPlxuXG4gIDxkaXYgY2xhc3M9XCJjbGFzc2lmeVwiIFtuZ0NsYXNzXT1cIntlbXB0eTogIXZhbHVlIHx8IHNpdHVhdGlvbiA9PT0gJ1NFQVJDSCd9XCI+XG4gICAgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cIm1haWx0bzp7e2Zvcm1hdGVkVmFsdWV9fVwiICpuZ0lmPVwiY2xhc3NpZmljYXRpb24gPT09ICdlbWFpbCcgJiYgdmFsaWRcIj5cbiAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgLTk2MCA5NjAgOTYwXCIgd2lkdGg9XCIyMFwiPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGQ9XCJNMTgwLjMwOS0yMTIuMDAxcS0yNy4wMDggMC00NS42NTgtMTguNjYyLTE4LjY1LTE4LjY2Mi0xOC42NS00NS42ODZ2LTQwNy42MjZxMC0yNy4wMjQgMTguNjUtNDUuNTI0dDQ1LjY1OC0xOC41aDU5OS4zODJxMjcuMDA4IDAgNDUuNjU4IDE4LjY2MiAxOC42NSAxOC42NjIgMTguNjUgNDUuNjg2djQwNy42MjZxMCAyNy4wMjQtMTguNjUgNDUuNTI0dC00NS42NTggMTguNUgxODAuMzA5Wk00ODAtNDQ5LjY5NCAxNjgtNjMzLjMwOXYzNTdxMCA1LjM4NSAzLjQ2MiA4Ljg0NyAzLjQ2MiAzLjQ2MiA4Ljg0NyAzLjQ2Mmg1OTkuMzgycTUuMzg1IDAgOC44NDctMy40NjIgMy40NjItMy40NjIgMy40NjItOC44NDd2LTM1N0w0ODAtNDQ5LjY5NFpNNDgwLTUxN2wzMDUuODQ2LTE3OUgxNzQuMTU0TDQ4MC01MTdaTTE2OC02MzMuMzA5Vi02OTYtMjc2LjMwOXEwIDUuMzg1IDMuNDYyIDguODQ3IDMuNDYyIDMuNDYyIDguODQ3IDMuNDYySDE2OHYtMzY5LjMwOVpcIiAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9hPlxuICAgIDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJ7e3ZhbHVlfX1cIiAqbmdJZj1cImNsYXNzaWZpY2F0aW9uID09PSAndXJsJyAmJiB2YWxpZFwiPlxuICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAtOTYwIDk2MCA5NjBcIiB3aWR0aD1cIjIwXCI+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgZD1cIk00ODAtMTE2LjAwMXEtNzUuMTU0IDAtMTQxLjQ5OS0yOC40NjItNjYuMzQ2LTI4LjQ2MS0xMTUuOTYyLTc4LjA3Ni00OS42MTUtNDkuNjE2LTc4LjA3Ni0xMTUuOTYyUTExNi4wMDEtNDA0Ljg0NiAxMTYuMDAxLTQ4MHEwLTc1Ljc2OSAyOC40NjItMTQxLjgwNyAyOC40NjEtNjYuMDM4IDc4LjA3Ni0xMTUuNjU0IDQ5LjYxNi00OS42MTUgMTE1Ljk2Mi03OC4wNzZRNDA0Ljg0Ni04NDMuOTk5IDQ4MC04NDMuOTk5cTc1Ljc2OSAwIDE0MS44MDcgMjguNDYyIDY2LjAzOCAyOC40NjEgMTE1LjY1NCA3OC4wNzYgNDkuNjE1IDQ5LjYxNiA3OC4wNzYgMTE1LjY1NFE4NDMuOTk5LTU1NS43NjkgODQzLjk5OS00ODBxMCA3NS4xNTQtMjguNDYyIDE0MS40OTktMjguNDYxIDY2LjM0Ni03OC4wNzYgMTE1Ljk2Mi00OS42MTYgNDkuNjE1LTExNS42NTQgNzguMDc2UTU1NS43NjktMTE2LjAwMSA0ODAtMTE2LjAwMVptMC01My44NDVxMjEuNjE2LTIxLjYxNiA0MC41MzktNzAuNDI0IDE4LjkyMy00OC44MDggMjkuMDc3LTEwOC44MDhINDEwLjM4NHExMC45MjMgNjEuNTM5IDI5LjQ2MiAxMTAuMzQ3IDE4LjUzOCA0OC44MDggNDAuMTU0IDY4Ljg4NVptLTY0LjQ2LTVxLTE5LTMwLTM0LjMwOC03NS41Mzl0LTIzLjQ2Mi05OC42OTNIMTk3LjA3NnEzMS42OTMgNjkuMzA5IDg5LjUwMSAxMTUuMTk0IDU3LjgwOSA0NS44ODUgMTI4Ljk2MyA1OS4wMzhabTEyOC45MiAwcTcxLjE1NC0xMy4xNTMgMTI4Ljk2My01OS4wMzggNTcuODA4LTQ1Ljg4NSA4OS41MDEtMTE1LjE5NEg2MDIuMjNRNTkyLjE1My0yOTUuNTM5IDU3Ni44NDUtMjUwcS0xNS4zMDggNDUuNTM5LTMyLjM4NSA3NS4xNTRabTc5LjQ2My0yMjYuMjNoMTczLjY5M3E0LjIzMS0yMS4zMDggNi4wMzktNDAuNzMxIDEuODA4LTE5LjQyNCAxLjgwOC0zOC4xOTN0LTEuODA4LTM4LjY5M3EtMS44MDgtMTkuOTIzLTYuMDM5LTQwLjIzMUg2MjMuOTIzcTEuMjMxIDE5LjM4NSAxLjE1NCA0MC4zODUtLjA3NyAyMS0uMDc3IDQwLjUzOXQuMDc3IDM5LjUzOXEuMDc3IDIwLTEuMTU0IDM3LjM4NVptLTIxOC4zMDggMGgxNDguNzdxMi43NjktMjIuMzA4IDMuNDYyLTQxLjM0Ny42OTItMTkuMDM4LjY5Mi0zNy41NzcgMC0xOC41MzktLjY5Mi0zOC4wNzctLjY5My0xOS41MzktMy40NjItNDAuODQ3aC0xNDguNzdxLTIuNzY5IDIxLjMwOC0zLjQ2MiA0MC44NDctLjY5MiAxOS41MzgtLjY5MiAzOC4wNzcgMCAxOC41MzkuNjkyIDM4LjA3Ny42OTMgMTkuNTM5IDMuNDYyIDQwLjg0N1ptLTI0My4yMzEgMGgxNzMuNjkzcS0xLjIzMS0xOS4zODUtMS4xNTQtNDAuMzg1LjA3Ny0yMSAuMDc3LTQwLjUzOXQtLjA3Ny0zOS41MzlxLS4wNzctMjAgMS4xNTQtMzcuMzg1SDE2Mi4zODRxLTQuMjMxIDIxLjMwOC02LjAzOSA0MC43MzEtMS44MDggMTkuNDI0LTEuODA4IDM4LjE5M3QxLjgwOCAzOC4xOTNxMS44MDggMTkuNDIzIDYuMDM5IDQwLjczMVpNNjAyLjIzLTYxMC45MjJoMTYwLjY5NFE3MzAuODQ2LTY4MSA2NzQtNzI2LjExNnEtNTYuODQ3LTQ1LjExNS0xMjkuNTQtNTkuNDIzIDE5IDMxLjkyMyAzMy45MjMgNzYuODg1IDE0LjkyNCA0NC45NjIgMjMuODQ3IDk3LjczMlptLTE5MS44NDYgMGgxMzkuMjMycS0xMC45MjMtNjEuMTU0LTMwLjAzOS0xMTAuOTI0LTE5LjExNS00OS43NjktMzkuNTc3LTY4LjMwOC0yMC40NjIgMTguNTM5LTM5LjU3NyA2OC4zMDgtMTkuMTE2IDQ5Ljc3LTMwLjAzOSAxMTAuOTI0Wm0tMjEzLjMwOCAwSDM1Ny43N3E4LjkyMy01Mi43NyAyMy44NDctOTcuNzMyIDE0LjkyMy00NC45NjIgMzMuOTIzLTc2Ljg4NS03My4wNzcgMTQuMzA4LTEyOS43MzIgNTkuNjE2LTU2LjY1NCA0NS4zMDgtODguNzMyIDExNS4wMDFaXCIgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvYT5cbiAgPC9kaXY+XG5cbjwvZGl2PiJdfQ==