@acorex/platform 18.1.1 → 18.1.2

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 (67) hide show
  1. package/esm2022/common/lib/schema/widgets/rich-text/rich-text-widget-edit.component.mjs +1 -2
  2. package/esm2022/layout/builder/lib/builder/widget.types.mjs +60 -1
  3. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-single-view/comments/comment-list-view.component.mjs +208 -47
  4. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-single-view/comments/comment-lookup-popup.component.mjs +56 -0
  5. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-single-view/comments/comments.service.mjs +1 -1
  6. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-single-view/comments/comments.type.mjs +2 -0
  7. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-single-view/overview/entity-single-overview.component.mjs +3 -3
  8. package/esm2022/themes/default/lib/layouts/entity-layouts/index.mjs +2 -1
  9. package/esm2022/widgets/lib/properties/editors.props.mjs +102 -308
  10. package/esm2022/widgets/lib/properties/general.props.mjs +4 -13
  11. package/esm2022/widgets/lib/widgets/actions/button/button-widget-designer.component.mjs +1 -2
  12. package/esm2022/widgets/lib/widgets/advance/map/map-box-widget-edit.component.mjs +9 -4
  13. package/esm2022/widgets/lib/widgets/advance/map/map-box-widget-view.component.mjs +4 -4
  14. package/esm2022/widgets/lib/widgets/editors/checkbox/checkbox-widget-designer.component.mjs +4 -4
  15. package/esm2022/widgets/lib/widgets/editors/contact/contact-widget-edit.component.mjs +9 -16
  16. package/esm2022/widgets/lib/widgets/editors/date-time/date-time-box-widget.config.mjs +3 -3
  17. package/esm2022/widgets/lib/widgets/layout/block/block-widget-designer.component.mjs +3 -7
  18. package/esm2022/widgets/lib/widgets/layout/form-field/form-field-widget-view.component.mjs +1 -3
  19. package/esm2022/widgets/lib/widgets/layout/grid/grid-widget-view.component.mjs +1 -3
  20. package/esm2022/widgets/lib/widgets/layout/grid-item/grid-item-widget-view.component.mjs +1 -5
  21. package/esm2022/widgets/lib/widgets/layout/grid-row/grid-row-widget-view.component.mjs +1 -3
  22. package/esm2022/widgets/lib/widgets/layout/page/page-widget-view.component.mjs +1 -3
  23. package/esm2022/widgets/lib/widgets/layout/repeater/repeater-widget-designer.component.mjs +94 -19
  24. package/esm2022/widgets/lib/widgets/layout/repeater/repeater-widget-edit.component.mjs +119 -8
  25. package/esm2022/widgets/lib/widgets/layout/repeater/repeater-widget-print.component.mjs +3 -2
  26. package/esm2022/widgets/lib/widgets/layout/repeater/repeater-widget-view.component.mjs +14 -22
  27. package/esm2022/widgets/lib/widgets/layout/repeater/repeater-widget.config.mjs +16 -3
  28. package/fesm2022/{acorex-platform-common-rich-text-widget-edit.component-CnH3MjYz.mjs → acorex-platform-common-rich-text-widget-edit.component-Do3YcmKg.mjs} +1 -2
  29. package/fesm2022/acorex-platform-common-rich-text-widget-edit.component-Do3YcmKg.mjs.map +1 -0
  30. package/fesm2022/acorex-platform-common.mjs +1 -1
  31. package/fesm2022/acorex-platform-layout-builder.mjs +93 -35
  32. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  33. package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-Q8eTfAVx.mjs → acorex-platform-themes-default-entity-master-create-view.component-LyEomIA6.mjs} +3 -3
  34. package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-Q8eTfAVx.mjs.map → acorex-platform-themes-default-entity-master-create-view.component-LyEomIA6.mjs.map} +1 -1
  35. package/fesm2022/{acorex-platform-themes-default-entity-master-list-view.component-CWXJxLS0.mjs → acorex-platform-themes-default-entity-master-list-view.component-CKRwvJTp.mjs} +3 -3
  36. package/fesm2022/{acorex-platform-themes-default-entity-master-list-view.component-CWXJxLS0.mjs.map → acorex-platform-themes-default-entity-master-list-view.component-CKRwvJTp.mjs.map} +1 -1
  37. package/fesm2022/{acorex-platform-themes-default-entity-master-modify-view.component-BijYXMme.mjs → acorex-platform-themes-default-entity-master-modify-view.component-CMRfspMB.mjs} +3 -3
  38. package/fesm2022/{acorex-platform-themes-default-entity-master-modify-view.component-BijYXMme.mjs.map → acorex-platform-themes-default-entity-master-modify-view.component-CMRfspMB.mjs.map} +1 -1
  39. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-DhcKSyrX.mjs +457 -0
  40. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-DhcKSyrX.mjs.map +1 -0
  41. package/fesm2022/acorex-platform-themes-default.mjs +134 -11
  42. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  43. package/fesm2022/{acorex-platform-widgets-button-widget-designer.component-Oxpdaz9P.mjs → acorex-platform-widgets-button-widget-designer.component-B9bfVuC4.mjs} +1 -2
  44. package/fesm2022/acorex-platform-widgets-button-widget-designer.component-B9bfVuC4.mjs.map +1 -0
  45. package/fesm2022/{acorex-platform-widgets-checkbox-widget-designer.component-DAGbdSTk.mjs → acorex-platform-widgets-checkbox-widget-designer.component-DzGg-uFi.mjs} +4 -4
  46. package/fesm2022/acorex-platform-widgets-checkbox-widget-designer.component-DzGg-uFi.mjs.map +1 -0
  47. package/fesm2022/acorex-platform-widgets.mjs +356 -404
  48. package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
  49. package/layout/builder/lib/builder/widget.types.d.ts +30 -1
  50. package/package.json +7 -7
  51. package/themes/default/lib/layouts/entity-layouts/entity-master-single-view/comments/comment-list-view.component.d.ts +37 -15
  52. package/themes/default/lib/layouts/entity-layouts/entity-master-single-view/comments/comment-lookup-popup.component.d.ts +10 -0
  53. package/themes/default/lib/layouts/entity-layouts/entity-master-single-view/comments/comments.service.d.ts +6 -9
  54. package/themes/default/lib/layouts/entity-layouts/entity-master-single-view/comments/comments.type.d.ts +70 -0
  55. package/themes/default/lib/layouts/entity-layouts/index.d.ts +1 -0
  56. package/widgets/lib/properties/editors.props.d.ts +3 -3
  57. package/widgets/lib/widgets/advance/map/map-box-widget-edit.component.d.ts +1 -0
  58. package/widgets/lib/widgets/editors/contact/contact-widget-edit.component.d.ts +1 -0
  59. package/widgets/lib/widgets/layout/repeater/repeater-widget-designer.component.d.ts +4 -3
  60. package/widgets/lib/widgets/layout/repeater/repeater-widget-edit.component.d.ts +10 -2
  61. package/widgets/lib/widgets/layout/repeater/repeater-widget-print.component.d.ts +1 -1
  62. package/widgets/lib/widgets/layout/repeater/repeater-widget-view.component.d.ts +2 -4
  63. package/fesm2022/acorex-platform-common-rich-text-widget-edit.component-CnH3MjYz.mjs.map +0 -1
  64. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-B9lGgO_u.mjs +0 -357
  65. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-B9lGgO_u.mjs.map +0 -1
  66. package/fesm2022/acorex-platform-widgets-button-widget-designer.component-Oxpdaz9P.mjs.map +0 -1
  67. package/fesm2022/acorex-platform-widgets-checkbox-widget-designer.component-DAGbdSTk.mjs.map +0 -1
@@ -42,7 +42,6 @@ export class AXPRichTextWidgetEditComponent extends AXPWidgetEditBase {
42
42
  modules: {
43
43
  toolbar: this.toolbarOptions,
44
44
  },
45
- scrollingContainer: 'ql-editor',
46
45
  placeholder: this.placeholder,
47
46
  });
48
47
  }
@@ -64,4 +63,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
64
63
  type: ViewChild,
65
64
  args: ['editor']
66
65
  }] } });
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmljaC10ZXh0LXdpZGdldC1lZGl0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vY29tbW9uL3NyYy9saWIvc2NoZW1hL3dpZGdldHMvcmljaC10ZXh0L3JpY2gtdGV4dC13aWRnZXQtZWRpdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQWU3QyxNQUFNLE9BQU8sOEJBQStCLFNBQVEsaUJBQXlCO0lBYjdFOztRQWdCWSxnQkFBVyxHQUFXLGtCQUFrQixDQUFDO1FBRW5ELG1CQUFjLEdBQUc7WUFDZixDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFFBQVEsQ0FBQztZQUN6QyxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUM7WUFDNUIsQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQztZQUN6QyxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDO1lBQ3hDLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDdEIsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDN0MsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUNuQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBQ2QsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUNmLENBQUMsT0FBTyxDQUFDO1NBQ1YsQ0FBQztLQTBCSDtJQXhCQyxLQUFLLENBQUMsZUFBZTtRQUNuQixNQUFNLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUN4QixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM5RCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3ZCLENBQUM7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsR0FBRyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQzFDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVO1FBQ2QsTUFBTSxDQUFDLEdBQUcsTUFBTSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUU7WUFDdkQsS0FBSyxFQUFFLE1BQU07WUFDYixPQUFPLEVBQUU7Z0JBQ1AsT0FBTyxFQUFFLElBQUksQ0FBQyxjQUFjO2FBQzdCO1lBQ0Qsa0JBQWtCLEVBQUUsV0FBVztZQUMvQixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7U0FDOUIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0ExQ1UsOEJBQThCO2tHQUE5Qiw4QkFBOEIsd1BBWC9COzs7O0dBSVQsMDJyQkFJUyxnQkFBZ0IsOEJBQUUsV0FBVyw4QkFBRSxpQkFBaUIsOEJBQUUsY0FBYyw4QkFBRSxZQUFZOzsyRkFHN0UsOEJBQThCO2tCQWIxQyxTQUFTOytCQUNFLDJCQUEyQixZQUMzQjs7OztHQUlULGNBQ1csSUFBSSxpQkFFRCxpQkFBaUIsQ0FBQyxJQUFJLFdBQzVCLENBQUMsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLGNBQWMsRUFBRSxZQUFZLENBQUMsVUFDakYsQ0FBQyxhQUFhLENBQUM7OEJBR0YsUUFBUTtzQkFBNUIsU0FBUzt1QkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhCdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhGb3JtTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Zvcm0nO1xuaW1wb3J0IHsgQVhUZXh0QXJlYU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy90ZXh0LWFyZWEnO1xuaW1wb3J0IHsgQVhQV2lkZ2V0RWRpdEJhc2UgfSBmcm9tICcuLi8uLi93aWRnZXQvd2lkZ2V0LWJhc2UnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXhwLXJpY2gtdGV4dC13aWRnZXQtZWRpdCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImF4LWgtbWF4XCI+XG4gICAgICA8ZGl2ICNlZGl0b3I+PC9kaXY+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHN0eWxlVXJsOiAnLi9yaWNoLXRleHQtd2lkZ2V0LWVkaXQuY29tcG9uZW50LnNjc3MnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBpbXBvcnRzOiBbQVhUZXh0QXJlYU1vZHVsZSwgRm9ybXNNb2R1bGUsIEFYRGVjb3JhdG9yTW9kdWxlLCBBWEJ1dHRvbk1vZHVsZSwgQVhGb3JtTW9kdWxlXSxcbiAgaW5wdXRzOiBbJ3BsYWNlaG9sZGVyJ10sXG59KVxuZXhwb3J0IGNsYXNzIEFYUFJpY2hUZXh0V2lkZ2V0RWRpdENvbXBvbmVudCBleHRlbmRzIEFYUFdpZGdldEVkaXRCYXNlPHN0cmluZz4ge1xuICBAVmlld0NoaWxkKCdlZGl0b3InKSBlZGl0b3JFbCE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICBlZGl0b3I6IGFueTtcbiAgcHJvdGVjdGVkIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnV3JpdGUgYSB0ZXh0IC4uLic7XG5cbiAgdG9vbGJhck9wdGlvbnMgPSBbXG4gICAgWydib2xkJywgJ2l0YWxpYycsICd1bmRlcmxpbmUnLCAnc3RyaWtlJ10sXG4gICAgWydibG9ja3F1b3RlJywgJ2NvZGUtYmxvY2snXSxcbiAgICBbeyBsaXN0OiAnb3JkZXJlZCcgfSwgeyBsaXN0OiAnYnVsbGV0JyB9XSxcbiAgICBbeyBzY3JpcHQ6ICdzdWInIH0sIHsgc2NyaXB0OiAnc3VwZXInIH1dLFxuICAgIFt7IGRpcmVjdGlvbjogJ3J0bCcgfV0sXG4gICAgW3sgc2l6ZTogWydzbWFsbCcsIGZhbHNlLCAnbGFyZ2UnLCAnaHVnZSddIH1dLFxuICAgIFt7IGhlYWRlcjogWzEsIDIsIDMsIDQsIDUsIDYsIGZhbHNlXSB9XSxcbiAgICBbeyBjb2xvcjogW10gfSwgeyBiYWNrZ3JvdW5kOiBbXSB9XSxcbiAgICBbeyBmb250OiBbXSB9XSxcbiAgICBbeyBhbGlnbjogW10gfV0sXG4gICAgWydjbGVhbiddLFxuICBdO1xuXG4gIGFzeW5jIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBhd2FpdCB0aGlzLmluaXRFZGl0b3IoKTtcbiAgICBpZiAodGhpcy52YWx1ZSkge1xuICAgICAgdGhpcy5lZGl0b3IuZGlzYWJsZSgpO1xuICAgICAgdGhpcy5lZGl0b3IuY2xpcGJvYXJkLmRhbmdlcm91c2x5UGFzdGVIVE1MKHRoaXMudmFsdWUsICdhcGknKTtcbiAgICAgIHRoaXMuZWRpdG9yLmVuYWJsZSgpO1xuICAgIH1cblxuICAgIHRoaXMuZWRpdG9yLm9uKCd0ZXh0LWNoYW5nZScsICgpID0+IHtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmVkaXRvci5yb290LmlubmVySFRNTDtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGluaXRFZGl0b3IoKSB7XG4gICAgY29uc3QgcSA9IGF3YWl0IGltcG9ydCgncXVpbGwnKTtcbiAgICB0aGlzLmVkaXRvciA9IG5ldyBxLmRlZmF1bHQodGhpcy5lZGl0b3JFbC5uYXRpdmVFbGVtZW50LCB7XG4gICAgICB0aGVtZTogJ3Nub3cnLFxuICAgICAgbW9kdWxlczoge1xuICAgICAgICB0b29sYmFyOiB0aGlzLnRvb2xiYXJPcHRpb25zLFxuICAgICAgfSxcbiAgICAgIHNjcm9sbGluZ0NvbnRhaW5lcjogJ3FsLWVkaXRvcicsXG4gICAgICBwbGFjZWhvbGRlcjogdGhpcy5wbGFjZWhvbGRlcixcbiAgICB9KTtcbiAgfVxufVxuIl19
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmljaC10ZXh0LXdpZGdldC1lZGl0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vY29tbW9uL3NyYy9saWIvc2NoZW1hL3dpZGdldHMvcmljaC10ZXh0L3JpY2gtdGV4dC13aWRnZXQtZWRpdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQWU3QyxNQUFNLE9BQU8sOEJBQStCLFNBQVEsaUJBQXlCO0lBYjdFOztRQWdCWSxnQkFBVyxHQUFXLGtCQUFrQixDQUFDO1FBRW5ELG1CQUFjLEdBQUc7WUFDZixDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFFBQVEsQ0FBQztZQUN6QyxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUM7WUFDNUIsQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQztZQUN6QyxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDO1lBQ3hDLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDdEIsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDN0MsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUNuQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBQ2QsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUNmLENBQUMsT0FBTyxDQUFDO1NBQ1YsQ0FBQztLQXlCSDtJQXZCQyxLQUFLLENBQUMsZUFBZTtRQUNuQixNQUFNLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUN4QixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM5RCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3ZCLENBQUM7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsR0FBRyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQzFDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVO1FBQ2QsTUFBTSxDQUFDLEdBQUcsTUFBTSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUU7WUFDdkQsS0FBSyxFQUFFLE1BQU07WUFDYixPQUFPLEVBQUU7Z0JBQ1AsT0FBTyxFQUFFLElBQUksQ0FBQyxjQUFjO2FBQzdCO1lBQ0QsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1NBQzlCLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBekNVLDhCQUE4QjtrR0FBOUIsOEJBQThCLHdQQVgvQjs7OztHQUlULDAyckJBSVMsZ0JBQWdCLDhCQUFFLFdBQVcsOEJBQUUsaUJBQWlCLDhCQUFFLGNBQWMsOEJBQUUsWUFBWTs7MkZBRzdFLDhCQUE4QjtrQkFiMUMsU0FBUzsrQkFDRSwyQkFBMkIsWUFDM0I7Ozs7R0FJVCxjQUNXLElBQUksaUJBRUQsaUJBQWlCLENBQUMsSUFBSSxXQUM1QixDQUFDLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsWUFBWSxDQUFDLFVBQ2pGLENBQUMsYUFBYSxDQUFDOzhCQUdGLFFBQVE7c0JBQTVCLFNBQVM7dUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWERlY29yYXRvck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IEFYRm9ybU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9mb3JtJztcbmltcG9ydCB7IEFYVGV4dEFyZWFNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvdGV4dC1hcmVhJztcbmltcG9ydCB7IEFYUFdpZGdldEVkaXRCYXNlIH0gZnJvbSAnLi4vLi4vd2lkZ2V0L3dpZGdldC1iYXNlJztcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4cC1yaWNoLXRleHQtd2lkZ2V0LWVkaXQnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJheC1oLW1heFwiPlxuICAgICAgPGRpdiAjZWRpdG9yPjwvZGl2PlxuICAgIDwvZGl2PlxuICBgLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzdHlsZVVybDogJy4vcmljaC10ZXh0LXdpZGdldC1lZGl0LmNvbXBvbmVudC5zY3NzJyxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaW1wb3J0czogW0FYVGV4dEFyZWFNb2R1bGUsIEZvcm1zTW9kdWxlLCBBWERlY29yYXRvck1vZHVsZSwgQVhCdXR0b25Nb2R1bGUsIEFYRm9ybU1vZHVsZV0sXG4gIGlucHV0czogWydwbGFjZWhvbGRlciddLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBSaWNoVGV4dFdpZGdldEVkaXRDb21wb25lbnQgZXh0ZW5kcyBBWFBXaWRnZXRFZGl0QmFzZTxzdHJpbmc+IHtcbiAgQFZpZXdDaGlsZCgnZWRpdG9yJykgZWRpdG9yRWwhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcbiAgZWRpdG9yOiBhbnk7XG4gIHByb3RlY3RlZCBwbGFjZWhvbGRlcjogc3RyaW5nID0gJ1dyaXRlIGEgdGV4dCAuLi4nO1xuXG4gIHRvb2xiYXJPcHRpb25zID0gW1xuICAgIFsnYm9sZCcsICdpdGFsaWMnLCAndW5kZXJsaW5lJywgJ3N0cmlrZSddLFxuICAgIFsnYmxvY2txdW90ZScsICdjb2RlLWJsb2NrJ10sXG4gICAgW3sgbGlzdDogJ29yZGVyZWQnIH0sIHsgbGlzdDogJ2J1bGxldCcgfV0sXG4gICAgW3sgc2NyaXB0OiAnc3ViJyB9LCB7IHNjcmlwdDogJ3N1cGVyJyB9XSxcbiAgICBbeyBkaXJlY3Rpb246ICdydGwnIH1dLFxuICAgIFt7IHNpemU6IFsnc21hbGwnLCBmYWxzZSwgJ2xhcmdlJywgJ2h1Z2UnXSB9XSxcbiAgICBbeyBoZWFkZXI6IFsxLCAyLCAzLCA0LCA1LCA2LCBmYWxzZV0gfV0sXG4gICAgW3sgY29sb3I6IFtdIH0sIHsgYmFja2dyb3VuZDogW10gfV0sXG4gICAgW3sgZm9udDogW10gfV0sXG4gICAgW3sgYWxpZ246IFtdIH1dLFxuICAgIFsnY2xlYW4nXSxcbiAgXTtcblxuICBhc3luYyBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgYXdhaXQgdGhpcy5pbml0RWRpdG9yKCk7XG4gICAgaWYgKHRoaXMudmFsdWUpIHtcbiAgICAgIHRoaXMuZWRpdG9yLmRpc2FibGUoKTtcbiAgICAgIHRoaXMuZWRpdG9yLmNsaXBib2FyZC5kYW5nZXJvdXNseVBhc3RlSFRNTCh0aGlzLnZhbHVlLCAnYXBpJyk7XG4gICAgICB0aGlzLmVkaXRvci5lbmFibGUoKTtcbiAgICB9XG5cbiAgICB0aGlzLmVkaXRvci5vbigndGV4dC1jaGFuZ2UnLCAoKSA9PiB7XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5lZGl0b3Iucm9vdC5pbm5lckhUTUw7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBpbml0RWRpdG9yKCkge1xuICAgIGNvbnN0IHEgPSBhd2FpdCBpbXBvcnQoJ3F1aWxsJyk7XG4gICAgdGhpcy5lZGl0b3IgPSBuZXcgcS5kZWZhdWx0KHRoaXMuZWRpdG9yRWwubmF0aXZlRWxlbWVudCwge1xuICAgICAgdGhlbWU6ICdzbm93JyxcbiAgICAgIG1vZHVsZXM6IHtcbiAgICAgICAgdG9vbGJhcjogdGhpcy50b29sYmFyT3B0aW9ucyxcbiAgICAgIH0sXG4gICAgICBwbGFjZWhvbGRlcjogdGhpcy5wbGFjZWhvbGRlcixcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -2,10 +2,69 @@ import { ElementRef, Injectable, InjectionToken, afterNextRender, computed, inje
2
2
  import { cloneDeep, get, isUndefined, merge } from 'lodash-es';
3
3
  import { Subject } from 'rxjs';
4
4
  import { AXPLayoutBuilderService, AXPLayoutElement } from './builder.service';
5
+ import { AXPWidgetsCatalog } from './widget-catalog';
5
6
  import * as i0 from "@angular/core";
6
7
  export function cloneProperty(property, values) {
7
8
  return merge(cloneDeep(property), values);
8
9
  }
10
+ export function createStringProperty(ctor) {
11
+ return {
12
+ name: ctor.name,
13
+ title: ctor.title,
14
+ group: ctor.group,
15
+ schema: {
16
+ dataType: 'string',
17
+ defaultValue: ctor.defaultValue,
18
+ interface: {
19
+ name: ctor.name,
20
+ path: ctor.path ?? ctor.name,
21
+ type: AXPWidgetsCatalog.text,
22
+ },
23
+ },
24
+ visible: ctor.visible ?? true,
25
+ };
26
+ }
27
+ export function createBooleanProperty(ctor) {
28
+ return {
29
+ name: ctor.name,
30
+ title: ctor.title,
31
+ group: ctor.group,
32
+ schema: {
33
+ dataType: 'boolean',
34
+ defaultValue: ctor.defaultValue ?? false,
35
+ interface: {
36
+ name: ctor.name,
37
+ path: ctor.path ?? ctor.name,
38
+ type: AXPWidgetsCatalog.toggle,
39
+ },
40
+ },
41
+ visible: ctor.visible ?? true,
42
+ };
43
+ }
44
+ export function createSelectProperty(ctor) {
45
+ return {
46
+ name: ctor.name,
47
+ title: ctor.title,
48
+ group: ctor.group,
49
+ schema: {
50
+ dataType: 'string',
51
+ defaultValue: Array.isArray(ctor.defaultValue)
52
+ ? ctor.defaultValue.map((item) => (typeof item === 'string' ? { id: item } : item))
53
+ : typeof ctor.defaultValue === 'string'
54
+ ? { id: ctor.defaultValue, title: ctor.defaultValue }
55
+ : ctor.defaultValue,
56
+ interface: {
57
+ name: ctor.name,
58
+ path: ctor.path ?? ctor.name,
59
+ type: AXPWidgetsCatalog.select,
60
+ options: {
61
+ dataSource: ctor.dataSource.map((item) => (typeof item === 'string' ? { id: item, title: item } : item)),
62
+ },
63
+ },
64
+ },
65
+ visible: ctor.visible ?? true,
66
+ };
67
+ }
9
68
  export const AXP_WIDGET_TOKEN = new InjectionToken('AXP_WIDGET_TOKEN');
10
69
  export const AXP_WIDGET_COLUMN_TOKEN = new InjectionToken('AXP_WIDGET_COLUMN_TOKEN');
11
70
  export class AXPWidgetComponent extends AXPLayoutElement {
@@ -140,4 +199,4 @@ export class AXPColumnWidgetComponent {
140
199
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPColumnWidgetComponent, decorators: [{
141
200
  type: Injectable
142
201
  }] });
143
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlci9zcmMvbGliL2J1aWxkZXIvd2lkZ2V0LnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEgsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUMvRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQTZDOUUsTUFBTSxVQUFVLGFBQWEsQ0FDM0IsUUFBMkIsRUFDM0IsTUFBMkM7SUFFM0MsT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzVDLENBQUM7QUErREQsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxjQUFjLENBQXFCLGtCQUFrQixDQUFDLENBQUM7QUFDM0YsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxjQUFjLENBQTJCLHlCQUF5QixDQUFDLENBQUM7QUEwQy9HLE1BQU0sT0FBZ0Isa0JBQTBDLFNBQVEsZ0JBQWdCO0lBRHhGOztRQUVxQixVQUFLLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDcEMsU0FBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxhQUErQixDQUFDO1FBRXZELFdBQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUUzQixTQUFJLEdBQUcsSUFB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QUEyQjtrSEFBM0IsMkJBQTJCOzsyRkFBM0IsMkJBQTJCO2tCQURoRCxVQUFVOztBQU1YLE1BQU0sT0FBZ0Isd0JBQXdCO0lBRDlDO1FBRW1CLFVBQUssR0FBRyxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUV0QyxTQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDdkIsWUFBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUNuQyxhQUFRLEdBQVEsSUFBSSxDQUFDO0tBQ3pDOzhHQU5xQix3QkFBd0I7a0hBQXhCLHdCQUF3Qjs7MkZBQXhCLHdCQUF3QjtrQkFEN0MsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYRGF0YVNvdXJjZSwgQVhWYWx1ZUNoYW5nZWRFdmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9jb21tb24nO1xuaW1wb3J0IHsgQVhQTWV0YURhdGEsIEFYUE9wdGlvbnNEYXRhLCBBWFBQYXJ0aWFsTmVzdGVkLCBBWFBWYWxpZGF0aW9uUnVsZXMgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHsgRWxlbWVudFJlZiwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIGFmdGVyTmV4dFJlbmRlciwgY29tcHV0ZWQsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAsIGdldCwgaXNVbmRlZmluZWQsIG1lcmdlIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFYUExheW91dEJ1aWxkZXJTZXJ2aWNlLCBBWFBMYXlvdXRFbGVtZW50IH0gZnJvbSAnLi9idWlsZGVyLnNlcnZpY2UnO1xuXG5leHBvcnQgdHlwZSBBWFBXaWRnZXRUcmlnZ2VyID0geyBldmVudDogc3RyaW5nOyBhY3Rpb246IHN0cmluZzsgZGlzYWJsZWQ/OiBib29sZWFuIH07XG5leHBvcnQgdHlwZSBBWFBXaWRnZXRUcmlnZ2VycyA9IEFYUFdpZGdldFRyaWdnZXJbXTtcblxuZXhwb3J0IGludGVyZmFjZSBBWFBXaWRnZXREYXRhU291cmNlIHtcbiAgbmFtZTogc3RyaW5nO1xuICBjb2x1bW5zOiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgLy8gZGF0YVR5cGU6IHN0cmluZztcbiAgICAvLyBudWxsYWJsZT86IGJvb2xlYW47XG4gICAgLy8gaW50ZXJmYWNlPzogUGFydGlhbDxBWEVudGl0eVByb3BlcnR5V2lkZ2V0PjtcbiAgfVtdO1xuICBzb3VyY2U6IEFYRGF0YVNvdXJjZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBXaWRnZXRQcm9wZXJ0eUdyb3VwIHtcbiAgbmFtZTogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBvcmRlcjogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFdpZGdldEdyb3VwIHtcbiAgbmFtZTogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBvcmRlcjogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFdpZGdldFByb3BlcnR5IHtcbiAgbmFtZTogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgZ3JvdXA6IEFYUFdpZGdldFByb3BlcnR5R3JvdXA7XG4gIHNjaGVtYToge1xuICAgIGRhdGFUeXBlOiAnc3RyaW5nJyB8ICdudW1iZXInIHwgJ29iamVjdCcgfCAnYm9vbGVhbicgfCAnYXJyYXknO1xuICAgIG51bGxhYmxlPzogYm9vbGVhbjtcbiAgICBkZWZhdWx0VmFsdWU/OiBhbnkgfCBzdHJpbmcgfCAoKGNvbnRleHQ6IGFueSB8IG51bGwpID0+IGFueSk7XG4gICAgaW50ZXJmYWNlOiBSZXF1aXJlZDxQaWNrPEFYUFdpZGdldE5vZGUsICdwYXRoJz4+ICYgT21pdDxBWFBXaWRnZXROb2RlLCAncGF0aCc+O1xuICB9O1xuICBvcHRpb25zPzogQVhQT3B0aW9uc0RhdGE7XG4gIHZhbGlkYXRpb25zPzogQVhQVmFsaWRhdGlvblJ1bGVzO1xuICB2aXNpYmxlOiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xvbmVQcm9wZXJ0eShcbiAgcHJvcGVydHk6IEFYUFdpZGdldFByb3BlcnR5LFxuICB2YWx1ZXM6IEFYUFBhcnRpYWxOZXN0ZWQ8QVhQV2lkZ2V0UHJvcGVydHk+XG4pOiBBWFBXaWRnZXRQcm9wZXJ0eSB7XG4gIHJldHVybiBtZXJnZShjbG9uZURlZXAocHJvcGVydHkpLCB2YWx1ZXMpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFdpZGdldE5vZGUge1xuICB0eXBlOiBBWFBXaWRnZXRUeXBlc01hcFtrZXlvZiBBWFBXaWRnZXRUeXBlc01hcF07XG4gIHBhdGg/OiBzdHJpbmc7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIGRlZmF1bHRWYWx1ZT86IGFueTtcbiAgZm9ybXVsYT86IHN0cmluZztcbiAgY2hpbGRyZW4/OiBBWFBXaWRnZXROb2RlW107XG4gIG9wdGlvbnM/OiBBWFBPcHRpb25zRGF0YTtcbiAgdHJpZ2dlcnM/OiBBWFBXaWRnZXRUcmlnZ2Vycztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBXaWRnZXRUeXBlc01hcCB7XG4gIGNoZWNrYm94OiAnY2hlY2tib3gtZWRpdG9yJztcbiAgY29sb3I6ICdjb2xvci1lZGl0b3InO1xuICBjb250YWN0OiAnY29udGFjdC1lZGl0b3InO1xuICBkYXRlVGltZTogJ2RhdGUtdGltZS1lZGl0b3InO1xuICBlbWFpbDogJ2VtYWlsLWVkaXRvcic7XG4gIGxhcmdlVGV4dDogJ2xhcmdlLXRleHQtZWRpdG9yJztcbiAgbGluazogJ2xpbmstZWRpdG9yJztcbiAgbnVtYmVyOiAnbnVtYmVyLWVkaXRvcic7XG4gIHBhc3N3b3JkOiAncGFzc3dvcmQtZWRpdG9yJztcbiAgcGhvbmU6ICdwaG9uZS1lZGl0b3InO1xuICByaWNoVGV4dDogJ3JpY2gtdGV4dC1lZGl0b3InO1xuICBzZWxlY3Q6ICdzZWxlY3QtZWRpdG9yJztcbiAgc2VsZWN0aW9uTGlzdDogJ3NlbGVjdGlvbi1saXN0LWVkaXRvcic7XG4gIHRleHQ6ICd0ZXh0LWVkaXRvcic7XG4gIHRvZ2dsZTogJ3RvZ2dsZS1lZGl0b3InO1xuICBibG9ja0xheW91dDogJ2Jsb2NrLWxheW91dCc7XG4gIHBhZ2VMYXlvdXQ6ICdwYWdlLWxheW91dCc7XG4gIHJlcGVhdGVyTGF5b3V0OiAncmVwZWF0ZXItbGF5b3V0JztcbiAgdGV4dEJsb2NrTGF5b3V0OiAndGV4dC1ibG9jay1sYXlvdXQnO1xuICBmaWxlOiAnZmlsZSc7XG4gIG1hcDogJ21hcCc7XG4gIGdhbGxlcnk6ICdnYWxsZXJ5JztcbiAgc2lnbmF0dXJlOiAnc2lnbmF0dXJlJztcbiAgYnV0dG9uQWN0aW9uOiAnYnV0dG9uLWFjdGlvbic7XG4gIGRvY3VtZW50OiAnZG9jdW1lbnQtbGF5b3V0JztcbiAgbG9va3VwOiAnbG9va3VwLWVkaXRvcic7XG4gIGZvcm1GaWVsZDogJ2Zvcm0tZmllbGQnO1xuICBncmlkOiAnZ3JpZC1sYXlvdXQnO1xuICBncmlkUm93OiAnZ3JpZC1yb3ctbGF5b3V0JztcbiAgZ3JpZEl0ZW06ICdncmlkLWl0ZW0tbGF5b3V0JztcbiAgcXJjb2RlOiAncXJjb2RlJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBXaWRnZXROb2RlVG9rZW4ge1xuICBjb25maWc6IEFYUFdpZGdldENvbmZpZztcbiAgbm9kZTogQVhQV2lkZ2V0Tm9kZTtcbiAgb3B0aW9ucz86IEFYUE9wdGlvbnNEYXRhO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFdpZGdldENvbHVtbk5vZGUge1xuICB0eXBlOiBzdHJpbmc7XG4gIHBhdGg6IHN0cmluZztcbiAgb3B0aW9ucz86IEFYUE9wdGlvbnNEYXRhO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFdpZGdldENvbHVtbk5vZGVUb2tlbiBleHRlbmRzIEFYUFdpZGdldENvbHVtbk5vZGUge1xuICBjb25maWc6IEFYUFdpZGdldENvbmZpZztcbn1cblxuZXhwb3J0IGNvbnN0IEFYUF9XSURHRVRfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48QVhQV2lkZ2V0Tm9kZVRva2VuPignQVhQX1dJREdFVF9UT0tFTicpO1xuZXhwb3J0IGNvbnN0IEFYUF9XSURHRVRfQ09MVU1OX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPEFYUFdpZGdldENvbHVtbk5vZGVUb2tlbj4oJ0FYUF9XSURHRVRfQ09MVU1OX1RPS0VOJyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQV2lkZ2V0Q29tcG9uZW50Q29uZmlnIHtcbiAgY29tcG9uZW50OiAoKSA9PiBQcm9taXNlPGFueT47XG4gIHByb3BlcnRpZXM/OiBBWFBXaWRnZXRQcm9wZXJ0eVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFdpZGdldENvbmZpZ0NvbXBvbmVudHMge1xuICBkZXNpZ25lcj86IEFYUFdpZGdldENvbXBvbmVudENvbmZpZztcbiAgdmlldz86IEFYUFdpZGdldENvbXBvbmVudENvbmZpZztcbiAgZWRpdD86IEFYUFdpZGdldENvbXBvbmVudENvbmZpZztcbiAgcHJpbnQ/OiBBWFBXaWRnZXRDb21wb25lbnRDb25maWc7XG4gIGNvbHVtbj86IEFYUFdpZGdldENvbXBvbmVudENvbmZpZztcbiAgZmlsdGVyPzogQVhQV2lkZ2V0Q29tcG9uZW50Q29uZmlnO1xufVxuXG5leHBvcnQgdHlwZSBBWFBXaWRnZXRUeXBlID0gJ2NvbnRhaW5lcicgfCAnZWRpdG9yJyB8ICdhY3Rpb24nIHwgJ3ZpZXcnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFdpZGdldENvbmZpZyB7XG4gIG5hbWU6IEFYUFdpZGdldFR5cGVzTWFwW2tleW9mIEFYUFdpZGdldFR5cGVzTWFwXTtcbiAgdGl0bGU6IHN0cmluZztcbiAgaWNvbj86IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGdyb3VwOiBBWFBXaWRnZXRHcm91cDtcbiAgcHJvcGVydGllcz86IEFYUFdpZGdldFByb3BlcnR5W107XG4gIGNvbXBvbmVudHM6IEFYUFdpZGdldENvbmZpZ0NvbXBvbmVudHM7XG4gIG1ldGE/OiBBWFBNZXRhRGF0YTtcbiAgdHlwZTogQVhQV2lkZ2V0VHlwZTtcbiAgdmlzaWJsZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIEFYUFdpZGdldFJlbmRlck1vZGUgPSBrZXlvZiBBWFBXaWRnZXRDb25maWdDb21wb25lbnRzO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYUExheW91dENvbnRleHRFdmVudCB7XG4gIG9sZFZhbHVlOiBhbnk7XG4gIG5ld1ZhbHVlOiBhbnk7XG4gIHBhdGg/OiBzdHJpbmcgfCBudWxsO1xuICBkYXRhOiBhbnk7XG4gIGluaXQ6IGJvb2xlYW47XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWFBXaWRnZXRDb21wb25lbnQ8VCA9IGFueSB8IG51bGwgfCB2b2lkPiBleHRlbmRzIEFYUExheW91dEVsZW1lbnQge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdG9rZW4gPSBpbmplY3QoQVhQX1dJREdFVF9UT0tFTik7XG4gIHB1YmxpYyByZWFkb25seSBob3N0ID0gaW5qZWN0KEVsZW1lbnRSZWYpLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTERpdkVsZW1lbnQ7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbmZpZyA9IHRoaXMudG9rZW4uY29uZmlnO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBuYW1lID0gdGhpcy50b2tlbi5ub2RlLm5hbWU7XG4gIHByb3RlY3RlZCByZWFkb25seSBwYXRoID0gdGhpcy50b2tlbi5ub2RlLnBhdGggPz8gKHRoaXMuY29uZmlnLnR5cGUgPT0gJ2VkaXRvcicgPyB0aGlzLm5hbWUgOiBudWxsKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRlZmF1bHRWYWx1ZSA9IHRoaXMudG9rZW4ubm9kZS5kZWZhdWx0VmFsdWU7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9jaGlsZHJlbiA9IHNpZ25hbCh0aGlzLnRva2VuLm5vZGUuY2hpbGRyZW4gPz8gW10pO1xuICBwcm90ZWN0ZWQgY2hpbGRyZW4gPSB0aGlzLl9jaGlsZHJlbi5hc1JlYWRvbmx5KCk7XG5cbiAgcHJvdGVjdGVkIF9vcHRpb25zID0gc2lnbmFsPGFueT4odGhpcy50b2tlbi5vcHRpb25zID8/IHt9KTtcbiAgcHJvdGVjdGVkIG9wdGlvbnMgPSB0aGlzLl9vcHRpb25zLmFzUmVhZG9ubHkoKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGNvbnRleHRTZXJ2aWNlID0gaW5qZWN0KEFYUExheW91dEJ1aWxkZXJTZXJ2aWNlKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmF3VmFsdWUgPSBjb21wdXRlZDxUPigoKSA9PlxuICAgIHRoaXMuX2Z1bGxQYXRoID8gZ2V0KHRoaXMuY29udGV4dFNlcnZpY2UuY29udGV4dCwgdGhpcy5fZnVsbFBhdGgpIDogbnVsbFxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBvblJlYWR5ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcml2YXRlIGlzUmVuZGVyZWQgPSBmYWxzZTtcblxuICBwcml2YXRlIF9pZDogc3RyaW5nIHwgbnVsbDtcbiAgcHVibGljIGdldCBpZCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5faWQ7XG4gIH1cblxuICBwYXJlbnQ6IEFYUFdpZGdldENvbXBvbmVudCB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGluZGV4OiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBtb2RlOiBBWFBXaWRnZXRSZW5kZXJNb2RlO1xuXG4gIHByaXZhdGUgX2Z1bGxQYXRoOiBzdHJpbmc7XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pbml0UmVuZGVyKCk7XG4gIH1cblxuICBwcml2YXRlIG5leHRSZW5kZXIgPSBhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuICAgIC8vXG4gICAgaWYgKCF0aGlzLmlzUmVuZGVyZWQpIHtcbiAgICAgIC8vdGhpcy5kZXRlY3RGdWxsUGF0aCgpO1xuICAgICAgLy9cbiAgICAgIHRoaXMub25SZWFkeS5uZXh0KCk7XG4gICAgICAvL1xuICAgICAgdGhpcy5pc1JlbmRlcmVkID0gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIHByaXZhdGUgaW5pdFJlbmRlcigpIHtcbiAgICBpZiAodGhpcy5jb25maWcudHlwZSA9PSAnZWRpdG9yJykge1xuICAgICAgdGhpcy5kZXRlY3RGdWxsUGF0aCgpO1xuICAgICAgaWYgKHRoaXMuZGVmYXVsdFZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgdGhpcy5zZXRWYWx1ZSh0aGlzLmRlZmF1bHRWYWx1ZSwgdHJ1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0VmFsdWU8VD4oKSB7XG4gICAgcmV0dXJuIHRoaXMucmF3VmFsdWUoKTtcbiAgfVxuXG4gIHNldFZhbHVlKHZhbHVlOiBUIHwgbnVsbCwgaW5pdDogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgY29uc3Qgb2xkVmFsdWUgPSB0aGlzLnJhd1ZhbHVlKCk7XG4gICAgdmFsdWUgPSBpc1VuZGVmaW5lZCh2YWx1ZSkgPyBudWxsIDogdmFsdWU7XG4gICAgaWYgKHRoaXMuX2Z1bGxQYXRoKSB7XG4gICAgICB0aGlzLmNvbnRleHRTZXJ2aWNlLnNldFZhbHVlKHRoaXMuX2Z1bGxQYXRoLCB2YWx1ZSwgaW5pdCk7XG4gICAgICB0aGlzLm9uVmFsdWVDaGFuZ2VkKG9sZFZhbHVlLCB2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgc2V0T3B0aW9ucyh2YWx1ZXM6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX29wdGlvbnMuc2V0KHsgLi4udGhpcy5vcHRpb25zKCksIC4uLnZhbHVlcyB9KTtcbiAgfVxuXG4gIGNhbGwobmFtZTogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IHZvaWQge1xuICAgIGNvbnN0IGZuID0gZ2V0KHRoaXMsIG5hbWUpIGFzIEZ1bmN0aW9uO1xuICAgIGlmIChmbiAmJiB0eXBlb2YgZm4gPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgZm4uYmluZCh0aGlzKSguLi5hcmdzKTtcbiAgICB9XG4gIH1cblxuICBzZXRDaGlsZHJlbihjaGlsZHJlbjogQVhQV2lkZ2V0Tm9kZVtdKSB7XG4gICAgdGhpcy5fY2hpbGRyZW4uc2V0KFsuLi5jaGlsZHJlbl0pO1xuICB9XG5cbiAgb25WYWx1ZUNoYW5nZWQob2xkVmFsdWU6IFQgfCBudWxsLCBuZXdWYWx1ZTogVCB8IG51bGwpIHt9XG5cbiAgcHJpdmF0ZSBkZXRlY3RGdWxsUGF0aCgpIHtcbiAgICBsZXQgc2VjdGlvbnMgPSBbXTtcbiAgICBsZXQgaWRzID0gW107XG4gICAgLy9cbiAgICBsZXQgcGFyZW50OiBBWFBXaWRnZXRDb21wb25lbnQgfCBudWxsIHwgdW5kZWZpbmVkID0gdGhpcztcbiAgICAvL1xuICAgIHdoaWxlIChwYXJlbnQpIHtcbiAgICAgIGNvbnN0IHBhdGggPSBwYXJlbnQucGF0aDsgLy8/PyBwYXJlbnQubmFtZTtcbiAgICAgIGNvbnN0IGlkID0gcGFyZW50Lm5hbWU7XG4gICAgICAvL1xuICAgICAgaWYgKHBhdGgpIHtcbiAgICAgICAgc2VjdGlvbnMucHVzaChwYXRoKTtcbiAgICAgICAgaWYgKHBhcmVudC5pbmRleCAhPSBudWxsKSB7XG4gICAgICAgICAgc2VjdGlvbnMucHVzaChgWyR7cGFyZW50LmluZGV4fV1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGlkKSB7XG4gICAgICAgIGlkcy5wdXNoKGlkKTtcbiAgICAgICAgaWYgKHBhcmVudC5pbmRleCAhPSBudWxsKSB7XG4gICAgICAgICAgaWRzLnB1c2goYCR7cGFyZW50LmluZGV4fWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBwYXJlbnQgPSBwYXJlbnQucGFyZW50O1xuICAgIH1cbiAgICAvL1xuICAgIHRoaXMuX2Z1bGxQYXRoID0gc2VjdGlvbnMucmV2ZXJzZSgpLmpvaW4oJy4nKTtcbiAgICB0aGlzLl9pZCA9IHRoaXMubmFtZSB8fCB0aGlzLnBhcmVudCA/IGlkcy5yZXZlcnNlKCkuam9pbignXycpIDogbnVsbDtcbiAgICBpZiAodGhpcy5faWQpIHtcbiAgICAgIHRoaXMuY29udGV4dFNlcnZpY2UucmVnaXN0ZXJXaWRnZXQodGhpcy5faWQsIHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVWYWx1ZUNoYW5nZWQoZTogQVhWYWx1ZUNoYW5nZWRFdmVudDxUPikge1xuICAgIGlmIChlLmlzVXNlckludGVyYWN0aW9uKSB7XG4gICAgICB0aGlzLnNldFZhbHVlKGUudmFsdWUhKTtcbiAgICB9XG4gIH1cbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYUENvbnRhaW5lcldpZGdldENvbXBvbmVudDxUPiBleHRlbmRzIEFYUFdpZGdldENvbXBvbmVudDxUPiB7XG4gIHB1YmxpYyByZWFkb25seSBub2RlID0gdGhpcy50b2tlbi5ub2RlO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhQQ29sdW1uV2lkZ2V0Q29tcG9uZW50PFQgPSBhbnkgfCBudWxsIHwgdm9pZD4ge1xuICBwcml2YXRlIHJlYWRvbmx5IHRva2VuID0gaW5qZWN0KEFYUF9XSURHRVRfQ09MVU1OX1RPS0VOKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcGF0aCA9IHRoaXMudG9rZW4ucGF0aDtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG9wdGlvbnMgPSB0aGlzLnRva2VuLm9wdGlvbnMgPz8ge307XG4gIHByb3RlY3RlZCByZWFkb25seSByYXdWYWx1ZTogYW55ID0gbnVsbDtcbn1cbiJdfQ==
202
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlci9zcmMvbGliL2J1aWxkZXIvd2lkZ2V0LnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEgsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUMvRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQStDckQsTUFBTSxVQUFVLGFBQWEsQ0FDM0IsUUFBMkIsRUFDM0IsTUFBMkM7SUFFM0MsT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzVDLENBQUM7QUFFRCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsSUFPcEM7SUFDQyxPQUFPO1FBQ0wsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1FBQ2YsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1FBQ2pCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztRQUNqQixNQUFNLEVBQUU7WUFDTixRQUFRLEVBQUUsUUFBUTtZQUNsQixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDL0IsU0FBUyxFQUFFO2dCQUNULElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtnQkFDZixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENB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QUssQ0FBQyxJQUFJLENBQUM7S0FDeEM7OEdBRnFCLDJCQUEyQjtrSEFBM0IsMkJBQTJCOzsyRkFBM0IsMkJBQTJCO2tCQURoRCxVQUFVOztBQU1YLE1BQU0sT0FBZ0Isd0JBQXdCO0lBRDlDO1FBRW1CLFVBQUssR0FBRyxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUV0QyxTQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDdkIsWUFBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUNuQyxhQUFRLEdBQVEsSUFBSSxDQUFDO0tBQ3pDOzhHQU5xQix3QkFBd0I7a0hBQXhCLHdCQUF3Qjs7MkZBQXhCLHdCQUF3QjtrQkFEN0MsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYRGF0YVNvdXJjZSwgQVhWYWx1ZUNoYW5nZWRFdmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9jb21tb24nO1xuaW1wb3J0IHsgQVhQTWV0YURhdGEsIEFYUE9wdGlvbnNEYXRhLCBBWFBQYXJ0aWFsTmVzdGVkLCBBWFBWYWxpZGF0aW9uUnVsZXMgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHsgRWxlbWVudFJlZiwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIGFmdGVyTmV4dFJlbmRlciwgY29tcHV0ZWQsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAsIGdldCwgaXNVbmRlZmluZWQsIG1lcmdlIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFYUExheW91dEJ1aWxkZXJTZXJ2aWNlLCBBWFBMYXlvdXRFbGVtZW50IH0gZnJvbSAnLi9idWlsZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhQV2lkZ2V0c0NhdGFsb2cgfSBmcm9tICcuL3dpZGdldC1jYXRhbG9nJztcblxuZXhwb3J0IHR5cGUgQVhQV2lkZ2V0VHJpZ2dlciA9IHsgZXZlbnQ6IHN0cmluZzsgYWN0aW9uOiBzdHJpbmc7IGRpc2FibGVkPzogYm9vbGVhbiB9O1xuZXhwb3J0IHR5cGUgQVhQV2lkZ2V0VHJpZ2dlcnMgPSBBWFBXaWRnZXRUcmlnZ2VyW107XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQV2lkZ2V0RGF0YVNvdXJjZSB7XG4gIG5hbWU6IHN0cmluZztcbiAgY29sdW1uczoge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIC8vIGRhdGFUeXBlOiBzdHJpbmc7XG4gICAgLy8gbnVsbGFibGU/OiBib29sZWFuO1xuICAgIC8vIGludGVyZmFjZT86IFBhcnRpYWw8QVhFbnRpdHlQcm9wZXJ0eVdpZGdldD47XG4gIH1bXTtcbiAgc291cmNlOiBBWERhdGFTb3VyY2U7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQV2lkZ2V0UHJvcGVydHlHcm91cCB7XG4gIG5hbWU6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgb3JkZXI6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBXaWRnZXRHcm91cCB7XG4gIG5hbWU6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgb3JkZXI6IG51bWJlcjtcbn1cblxuZXhwb3J0IHR5cGUgQVhQV2lkZ2V0RGF0YVR5cGUgPSAnc3RyaW5nJyB8ICdudW1iZXInIHwgJ29iamVjdCcgfCAnYm9vbGVhbicgfCAnYXJyYXknO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFdpZGdldFByb3BlcnR5IHtcbiAgbmFtZTogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgZ3JvdXA6IEFYUFdpZGdldFByb3BlcnR5R3JvdXA7XG4gIHNjaGVtYToge1xuICAgIGRhdGFUeXBlOiBBWFBXaWRnZXREYXRhVHlwZTtcbiAgICBudWxsYWJsZT86IGJvb2xlYW47XG4gICAgZGVmYXVsdFZhbHVlPzogYW55IHwgc3RyaW5nIHwgKChjb250ZXh0OiBhbnkgfCBudWxsKSA9PiBhbnkpO1xuICAgIGludGVyZmFjZTogUmVxdWlyZWQ8UGljazxBWFBXaWRnZXROb2RlLCAncGF0aCc+PiAmIE9taXQ8QVhQV2lkZ2V0Tm9kZSwgJ3BhdGgnPjtcbiAgfTtcbiAgb3B0aW9ucz86IEFYUE9wdGlvbnNEYXRhO1xuICB2YWxpZGF0aW9ucz86IEFYUFZhbGlkYXRpb25SdWxlcztcbiAgdmlzaWJsZTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsb25lUHJvcGVydHkoXG4gIHByb3BlcnR5OiBBWFBXaWRnZXRQcm9wZXJ0eSxcbiAgdmFsdWVzOiBBWFBQYXJ0aWFsTmVzdGVkPEFYUFdpZGdldFByb3BlcnR5PlxuKTogQVhQV2lkZ2V0UHJvcGVydHkge1xuICByZXR1cm4gbWVyZ2UoY2xvbmVEZWVwKHByb3BlcnR5KSwgdmFsdWVzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVN0cmluZ1Byb3BlcnR5KGN0b3I6IHtcbiAgZGVmYXVsdFZhbHVlPzogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHBhdGg/OiBzdHJpbmc7XG4gIGdyb3VwOiBBWFBXaWRnZXRQcm9wZXJ0eUdyb3VwO1xuICB2aXNpYmxlPzogYm9vbGVhbjtcbn0pOiBBWFBXaWRnZXRQcm9wZXJ0eSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogY3Rvci5uYW1lLFxuICAgIHRpdGxlOiBjdG9yLnRpdGxlLFxuICAgIGdyb3VwOiBjdG9yLmdyb3VwLFxuICAgIHNjaGVtYToge1xuICAgICAgZGF0YVR5cGU6ICdzdHJpbmcnLFxuICAgICAgZGVmYXVsdFZhbHVlOiBjdG9yLmRlZmF1bHRWYWx1ZSxcbiAgICAgIGludGVyZmFjZToge1xuICAgICAgICBuYW1lOiBjdG9yLm5hbWUsXG4gICAgICAgIHBhdGg6IGN0b3IucGF0aCA/PyBjdG9yLm5hbWUsXG4gICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnRleHQsXG4gICAgICB9LFxuICAgIH0sXG4gICAgdmlzaWJsZTogY3Rvci52aXNpYmxlID8/IHRydWUsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVCb29sZWFuUHJvcGVydHkoY3Rvcjoge1xuICBkZWZhdWx0VmFsdWU/OiBib29sZWFuO1xuICBuYW1lOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHBhdGg/OiBzdHJpbmc7XG4gIGdyb3VwOiBBWFBXaWRnZXRQcm9wZXJ0eUdyb3VwO1xuICB2aXNpYmxlPzogYm9vbGVhbjtcbn0pOiBBWFBXaWRnZXRQcm9wZXJ0eSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogY3Rvci5uYW1lLFxuICAgIHRpdGxlOiBjdG9yLnRpdGxlLFxuICAgIGdyb3VwOiBjdG9yLmdyb3VwLFxuICAgIHNjaGVtYToge1xuICAgICAgZGF0YVR5cGU6ICdib29sZWFuJyxcbiAgICAgIGRlZmF1bHRWYWx1ZTogY3Rvci5kZWZhdWx0VmFsdWUgPz8gZmFsc2UsXG4gICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgbmFtZTogY3Rvci5uYW1lLFxuICAgICAgICBwYXRoOiBjdG9yLnBhdGggPz8gY3Rvci5uYW1lLFxuICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy50b2dnbGUsXG4gICAgICB9LFxuICAgIH0sXG4gICAgdmlzaWJsZTogY3Rvci52aXNpYmxlID8/IHRydWUsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTZWxlY3RQcm9wZXJ0eTxUID0gc3RyaW5nIHwgeyBpZDogc3RyaW5nOyB0aXRsZTogc3RyaW5nIH0+KGN0b3I6IHtcbiAgZGVmYXVsdFZhbHVlOiBUIHwgVFtdO1xuICBkYXRhU291cmNlOiBUW107XG4gIG5hbWU6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgcGF0aD86IHN0cmluZztcbiAgZ3JvdXA6IEFYUFdpZGdldFByb3BlcnR5R3JvdXA7XG4gIHZpc2libGU/OiBib29sZWFuO1xufSk6IEFYUFdpZGdldFByb3BlcnR5IHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBjdG9yLm5hbWUsXG4gICAgdGl0bGU6IGN0b3IudGl0bGUsXG4gICAgZ3JvdXA6IGN0b3IuZ3JvdXAsXG4gICAgc2NoZW1hOiB7XG4gICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICBkZWZhdWx0VmFsdWU6IEFycmF5LmlzQXJyYXkoY3Rvci5kZWZhdWx0VmFsdWUpXG4gICAgICAgID8gY3Rvci5kZWZhdWx0VmFsdWUubWFwKChpdGVtKSA9PiAodHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnID8geyBpZDogaXRlbSB9IDogaXRlbSkpXG4gICAgICAgIDogdHlwZW9mIGN0b3IuZGVmYXVsdFZhbHVlID09PSAnc3RyaW5nJ1xuICAgICAgICA/IHsgaWQ6IGN0b3IuZGVmYXVsdFZhbHVlLCB0aXRsZTogY3Rvci5kZWZhdWx0VmFsdWUgfVxuICAgICAgICA6IGN0b3IuZGVmYXVsdFZhbHVlLFxuICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgIG5hbWU6IGN0b3IubmFtZSxcbiAgICAgICAgcGF0aDogY3Rvci5wYXRoID8/IGN0b3IubmFtZSxcbiAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cuc2VsZWN0LFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgZGF0YVNvdXJjZTogY3Rvci5kYXRhU291cmNlLm1hcCgoaXRlbSkgPT4gKHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJyA/IHsgaWQ6IGl0ZW0sIHRpdGxlOiBpdGVtIH0gOiBpdGVtKSksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gICAgdmlzaWJsZTogY3Rvci52aXNpYmxlID8/IHRydWUsXG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQV2lkZ2V0Tm9kZSB7XG4gIHR5cGU6IEFYUFdpZGdldFR5cGVzTWFwW2tleW9mIEFYUFdpZGdldFR5cGVzTWFwXTtcbiAgcGF0aD86IHN0cmluZztcbiAgbmFtZT86IHN0cmluZztcbiAgZGVmYXVsdFZhbHVlPzogYW55O1xuICBmb3JtdWxhPzogc3RyaW5nO1xuICBjaGlsZHJlbj86IEFYUFdpZGdldE5vZGVbXTtcbiAgb3B0aW9ucz86IEFYUE9wdGlvbnNEYXRhO1xuICB0cmlnZ2Vycz86IEFYUFdpZGdldFRyaWdnZXJzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFdpZGdldFR5cGVzTWFwIHtcbiAgY2hlY2tib3g6ICdjaGVja2JveC1lZGl0b3InO1xuICBjb2xvcjogJ2NvbG9yLWVkaXRvcic7XG4gIGNvbnRhY3Q6ICdjb250YWN0LWVkaXRvcic7XG4gIGRhdGVUaW1lOiAnZGF0ZS10aW1lLWVkaXRvcic7XG4gIGVtYWlsOiAnZW1haWwtZWRpdG9yJztcbiAgbGFyZ2VUZXh0OiAnbGFyZ2UtdGV4dC1lZGl0b3InO1xuICBsaW5rOiAnbGluay1lZGl0b3InO1xuICBudW1iZXI6ICdudW1iZXItZWRpdG9yJztcbiAgcGFzc3dvcmQ6ICdwYXNzd29yZC1lZGl0b3InO1xuICBwaG9uZTogJ3Bob25lLWVkaXRvcic7XG4gIHJpY2hUZXh0OiAncmljaC10ZXh0LWVkaXRvcic7XG4gIHNlbGVjdDogJ3NlbGVjdC1lZGl0b3InO1xuICBzZWxlY3Rpb25MaXN0OiAnc2VsZWN0aW9uLWxpc3QtZWRpdG9yJztcbiAgdGV4dDogJ3RleHQtZWRpdG9yJztcbiAgdG9nZ2xlOiAndG9nZ2xlLWVkaXRvcic7XG4gIGJsb2NrTGF5b3V0OiAnYmxvY2stbGF5b3V0JztcbiAgcGFnZUxheW91dDogJ3BhZ2UtbGF5b3V0JztcbiAgcmVwZWF0ZXJMYXlvdXQ6ICdyZXBlYXRlci1sYXlvdXQnO1xuICB0ZXh0QmxvY2tMYXlvdXQ6ICd0ZXh0LWJsb2NrLWxheW91dCc7XG4gIGZpbGU6ICdmaWxlJztcbiAgbWFwOiAnbWFwJztcbiAgZ2FsbGVyeTogJ2dhbGxlcnknO1xuICBzaWduYXR1cmU6ICdzaWduYXR1cmUnO1xuICBidXR0b25BY3Rpb246ICdidXR0b24tYWN0aW9uJztcbiAgZG9jdW1lbnQ6ICdkb2N1bWVudC1sYXlvdXQnO1xuICBsb29rdXA6ICdsb29rdXAtZWRpdG9yJztcbiAgZm9ybUZpZWxkOiAnZm9ybS1maWVsZCc7XG4gIGdyaWQ6ICdncmlkLWxheW91dCc7XG4gIGdyaWRSb3c6ICdncmlkLXJvdy1sYXlvdXQnO1xuICBncmlkSXRlbTogJ2dyaWQtaXRlbS1sYXlvdXQnO1xuICBxcmNvZGU6ICdxcmNvZGUnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFdpZGdldE5vZGVUb2tlbiB7XG4gIGNvbmZpZzogQVhQV2lkZ2V0Q29uZmlnO1xuICBub2RlOiBBWFBXaWRnZXROb2RlO1xuICBvcHRpb25zPzogQVhQT3B0aW9uc0RhdGE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQV2lkZ2V0Q29sdW1uTm9kZSB7XG4gIHR5cGU6IHN0cmluZztcbiAgcGF0aDogc3RyaW5nO1xuICBvcHRpb25zPzogQVhQT3B0aW9uc0RhdGE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQV2lkZ2V0Q29sdW1uTm9kZVRva2VuIGV4dGVuZHMgQVhQV2lkZ2V0Q29sdW1uTm9kZSB7XG4gIGNvbmZpZzogQVhQV2lkZ2V0Q29uZmlnO1xufVxuXG5leHBvcnQgY29uc3QgQVhQX1dJREdFVF9UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBWFBXaWRnZXROb2RlVG9rZW4+KCdBWFBfV0lER0VUX1RPS0VOJyk7XG5leHBvcnQgY29uc3QgQVhQX1dJREdFVF9DT0xVTU5fVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48QVhQV2lkZ2V0Q29sdW1uTm9kZVRva2VuPignQVhQX1dJREdFVF9DT0xVTU5fVE9LRU4nKTtcblxuZXhwb3J0IGludGVyZmFjZSBBWFBXaWRnZXRDb21wb25lbnRDb25maWcge1xuICBjb21wb25lbnQ6ICgpID0+IFByb21pc2U8YW55PjtcbiAgcHJvcGVydGllcz86IEFYUFdpZGdldFByb3BlcnR5W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQV2lkZ2V0Q29uZmlnQ29tcG9uZW50cyB7XG4gIGRlc2lnbmVyPzogQVhQV2lkZ2V0Q29tcG9uZW50Q29uZmlnO1xuICB2aWV3PzogQVhQV2lkZ2V0Q29tcG9uZW50Q29uZmlnO1xuICBlZGl0PzogQVhQV2lkZ2V0Q29tcG9uZW50Q29uZmlnO1xuICBwcmludD86IEFYUFdpZGdldENvbXBvbmVudENvbmZpZztcbiAgY29sdW1uPzogQVhQV2lkZ2V0Q29tcG9uZW50Q29uZmlnO1xuICBmaWx0ZXI/OiBBWFBXaWRnZXRDb21wb25lbnRDb25maWc7XG59XG5cbmV4cG9ydCB0eXBlIEFYUFdpZGdldFR5cGUgPSAnY29udGFpbmVyJyB8ICdlZGl0b3InIHwgJ2FjdGlvbicgfCAndmlldyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQV2lkZ2V0Q29uZmlnIHtcbiAgbmFtZTogQVhQV2lkZ2V0VHlwZXNNYXBba2V5b2YgQVhQV2lkZ2V0VHlwZXNNYXBdO1xuICB0aXRsZTogc3RyaW5nO1xuICBpY29uPzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgZ3JvdXA6IEFYUFdpZGdldEdyb3VwO1xuICBwcm9wZXJ0aWVzPzogQVhQV2lkZ2V0UHJvcGVydHlbXTtcbiAgY29tcG9uZW50czogQVhQV2lkZ2V0Q29uZmlnQ29tcG9uZW50cztcbiAgbWV0YT86IEFYUE1ldGFEYXRhO1xuICB0eXBlOiBBWFBXaWRnZXRUeXBlO1xuICB2aXNpYmxlPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgQVhQV2lkZ2V0UmVuZGVyTW9kZSA9IGtleW9mIEFYUFdpZGdldENvbmZpZ0NvbXBvbmVudHM7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQTGF5b3V0Q29udGV4dEV2ZW50IHtcbiAgb2xkVmFsdWU6IGFueTtcbiAgbmV3VmFsdWU6IGFueTtcbiAgcGF0aD86IHN0cmluZyB8IG51bGw7XG4gIGRhdGE6IGFueTtcbiAgaW5pdDogYm9vbGVhbjtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYUFdpZGdldENvbXBvbmVudDxUID0gYW55IHwgbnVsbCB8IHZvaWQ+IGV4dGVuZHMgQVhQTGF5b3V0RWxlbWVudCB7XG4gIHByb3RlY3RlZCByZWFkb25seSB0b2tlbiA9IGluamVjdChBWFBfV0lER0VUX1RPS0VOKTtcbiAgcHVibGljIHJlYWRvbmx5IGhvc3QgPSBpbmplY3QoRWxlbWVudFJlZikubmF0aXZlRWxlbWVudCBhcyBIVE1MRGl2RWxlbWVudDtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29uZmlnID0gdGhpcy50b2tlbi5jb25maWc7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG5hbWUgPSB0aGlzLnRva2VuLm5vZGUubmFtZTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHBhdGggPSB0aGlzLnRva2VuLm5vZGUucGF0aCA/PyAodGhpcy5jb25maWcudHlwZSA9PSAnZWRpdG9yJyA/IHRoaXMubmFtZSA6IG51bGwpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVmYXVsdFZhbHVlID0gdGhpcy50b2tlbi5ub2RlLmRlZmF1bHRWYWx1ZTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2NoaWxkcmVuID0gc2lnbmFsKHRoaXMudG9rZW4ubm9kZS5jaGlsZHJlbiA/PyBbXSk7XG4gIHByb3RlY3RlZCBjaGlsZHJlbiA9IHRoaXMuX2NoaWxkcmVuLmFzUmVhZG9ubHkoKTtcblxuICBwcm90ZWN0ZWQgX29wdGlvbnMgPSBzaWduYWw8YW55Pih0aGlzLnRva2VuLm9wdGlvbnMgPz8ge30pO1xuICBwcm90ZWN0ZWQgb3B0aW9ucyA9IHRoaXMuX29wdGlvbnMuYXNSZWFkb25seSgpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY29udGV4dFNlcnZpY2UgPSBpbmplY3QoQVhQTGF5b3V0QnVpbGRlclNlcnZpY2UpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSByYXdWYWx1ZSA9IGNvbXB1dGVkPFQ+KCgpID0+XG4gICAgdGhpcy5fZnVsbFBhdGggPyBnZXQodGhpcy5jb250ZXh0U2VydmljZS5jb250ZXh0LCB0aGlzLl9mdWxsUGF0aCkgOiBudWxsXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IG9uUmVhZHkgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHByaXZhdGUgaXNSZW5kZXJlZCA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX2lkOiBzdHJpbmcgfCBudWxsO1xuICBwdWJsaWMgZ2V0IGlkKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9pZDtcbiAgfVxuXG4gIHBhcmVudDogQVhQV2lkZ2V0Q29tcG9uZW50IHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgaW5kZXg6IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIG1vZGU6IEFYUFdpZGdldFJlbmRlck1vZGU7XG5cbiAgcHJpdmF0ZSBfZnVsbFBhdGg6IHN0cmluZztcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmluaXRSZW5kZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgbmV4dFJlbmRlciA9IGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG4gICAgLy9cbiAgICBpZiAoIXRoaXMuaXNSZW5kZXJlZCkge1xuICAgICAgLy90aGlzLmRldGVjdEZ1bGxQYXRoKCk7XG4gICAgICAvL1xuICAgICAgdGhpcy5vblJlYWR5Lm5leHQoKTtcbiAgICAgIC8vXG4gICAgICB0aGlzLmlzUmVuZGVyZWQgPSB0cnVlO1xuICAgIH1cbiAgfSk7XG5cbiAgcHJpdmF0ZSBpbml0UmVuZGVyKCkge1xuICAgIGlmICh0aGlzLmNvbmZpZy50eXBlID09ICdlZGl0b3InKSB7XG4gICAgICB0aGlzLmRldGVjdEZ1bGxQYXRoKCk7XG4gICAgICBpZiAodGhpcy5kZWZhdWx0VmFsdWUgIT0gbnVsbCkge1xuICAgICAgICB0aGlzLnNldFZhbHVlKHRoaXMuZGVmYXVsdFZhbHVlLCB0cnVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXRWYWx1ZTxUPigpIHtcbiAgICByZXR1cm4gdGhpcy5yYXdWYWx1ZSgpO1xuICB9XG5cbiAgc2V0VmFsdWUodmFsdWU6IFQgfCBudWxsLCBpbml0OiBib29sZWFuID0gZmFsc2UpIHtcbiAgICBjb25zdCBvbGRWYWx1ZSA9IHRoaXMucmF3VmFsdWUoKTtcbiAgICB2YWx1ZSA9IGlzVW5kZWZpbmVkKHZhbHVlKSA/IG51bGwgOiB2YWx1ZTtcbiAgICBpZiAodGhpcy5fZnVsbFBhdGgpIHtcbiAgICAgIHRoaXMuY29udGV4dFNlcnZpY2Uuc2V0VmFsdWUodGhpcy5fZnVsbFBhdGgsIHZhbHVlLCBpbml0KTtcbiAgICAgIHRoaXMub25WYWx1ZUNoYW5nZWQob2xkVmFsdWUsIHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBzZXRPcHRpb25zKHZhbHVlczogYW55KTogdm9pZCB7XG4gICAgdGhpcy5fb3B0aW9ucy5zZXQoeyAuLi50aGlzLm9wdGlvbnMoKSwgLi4udmFsdWVzIH0pO1xuICB9XG5cbiAgY2FsbChuYW1lOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogdm9pZCB7XG4gICAgY29uc3QgZm4gPSBnZXQodGhpcywgbmFtZSkgYXMgRnVuY3Rpb247XG4gICAgaWYgKGZuICYmIHR5cGVvZiBmbiA9PSAnZnVuY3Rpb24nKSB7XG4gICAgICBmbi5iaW5kKHRoaXMpKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxuXG4gIHNldENoaWxkcmVuKGNoaWxkcmVuOiBBWFBXaWRnZXROb2RlW10pIHtcbiAgICB0aGlzLl9jaGlsZHJlbi5zZXQoWy4uLmNoaWxkcmVuXSk7XG4gIH1cblxuICBvblZhbHVlQ2hhbmdlZChvbGRWYWx1ZTogVCB8IG51bGwsIG5ld1ZhbHVlOiBUIHwgbnVsbCkge31cblxuICBwcml2YXRlIGRldGVjdEZ1bGxQYXRoKCkge1xuICAgIGxldCBzZWN0aW9ucyA9IFtdO1xuICAgIGxldCBpZHMgPSBbXTtcbiAgICAvL1xuICAgIGxldCBwYXJlbnQ6IEFYUFdpZGdldENvbXBvbmVudCB8IG51bGwgfCB1bmRlZmluZWQgPSB0aGlzO1xuICAgIC8vXG4gICAgd2hpbGUgKHBhcmVudCkge1xuICAgICAgY29uc3QgcGF0aCA9IHBhcmVudC5wYXRoOyAvLz8/IHBhcmVudC5uYW1lO1xuICAgICAgY29uc3QgaWQgPSBwYXJlbnQubmFtZTtcbiAgICAgIC8vXG4gICAgICBpZiAocGF0aCkge1xuICAgICAgICBzZWN0aW9ucy5wdXNoKHBhdGgpO1xuICAgICAgICBpZiAocGFyZW50LmluZGV4ICE9IG51bGwpIHtcbiAgICAgICAgICBzZWN0aW9ucy5wdXNoKGBbJHtwYXJlbnQuaW5kZXh9XWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoaWQpIHtcbiAgICAgICAgaWRzLnB1c2goaWQpO1xuICAgICAgICBpZiAocGFyZW50LmluZGV4ICE9IG51bGwpIHtcbiAgICAgICAgICBpZHMucHVzaChgJHtwYXJlbnQuaW5kZXh9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnQ7XG4gICAgfVxuICAgIC8vXG4gICAgdGhpcy5fZnVsbFBhdGggPSBzZWN0aW9ucy5yZXZlcnNlKCkuam9pbignLicpO1xuICAgIHRoaXMuX2lkID0gdGhpcy5uYW1lIHx8IHRoaXMucGFyZW50ID8gaWRzLnJldmVyc2UoKS5qb2luKCdfJykgOiBudWxsO1xuICAgIGlmICh0aGlzLl9pZCkge1xuICAgICAgdGhpcy5jb250ZXh0U2VydmljZS5yZWdpc3RlcldpZGdldCh0aGlzLl9pZCwgdGhpcyk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZVZhbHVlQ2hhbmdlZChlOiBBWFZhbHVlQ2hhbmdlZEV2ZW50PFQ+KSB7XG4gICAgaWYgKGUuaXNVc2VySW50ZXJhY3Rpb24pIHtcbiAgICAgIHRoaXMuc2V0VmFsdWUoZS52YWx1ZSEpO1xuICAgIH1cbiAgfVxufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhQQ29udGFpbmVyV2lkZ2V0Q29tcG9uZW50PFQ+IGV4dGVuZHMgQVhQV2lkZ2V0Q29tcG9uZW50PFQ+IHtcbiAgcHVibGljIHJlYWRvbmx5IG5vZGUgPSB0aGlzLnRva2VuLm5vZGU7XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWFBDb2x1bW5XaWRnZXRDb21wb25lbnQ8VCA9IGFueSB8IG51bGwgfCB2b2lkPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgdG9rZW4gPSBpbmplY3QoQVhQX1dJREdFVF9DT0xVTU5fVE9LRU4pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBwYXRoID0gdGhpcy50b2tlbi5wYXRoO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgb3B0aW9ucyA9IHRoaXMudG9rZW4ub3B0aW9ucyA/PyB7fTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHJhd1ZhbHVlOiBhbnkgPSBudWxsO1xufVxuIl19