@acorex/platform 18.0.1 → 18.0.4
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.
- package/common/lib/app/application.types.d.ts +43 -26
- package/common/lib/common.module.d.ts +6 -5
- package/common/lib/data/data-provider.types.d.ts +1 -1
- package/common/lib/data/dexie-storage.service.d.ts +15 -0
- package/common/lib/data/entity-data-provider.d.ts +14 -0
- package/common/lib/data/index.d.ts +3 -0
- package/common/lib/data/storage-service.d.ts +22 -0
- package/common/lib/schema/entity/entity.class.d.ts +3 -0
- package/common/lib/utils/data-generator.d.ts +2 -0
- package/esm2022/common/lib/app/application.types.mjs +1 -1
- package/esm2022/common/lib/common.module.mjs +19 -2
- package/esm2022/common/lib/data/data-provider.types.mjs +1 -1
- package/esm2022/common/lib/data/dexie-storage.service.mjs +36 -0
- package/esm2022/common/lib/data/entity-data-provider.mjs +26 -0
- package/esm2022/common/lib/data/index.mjs +4 -1
- package/esm2022/common/lib/data/storage-service.mjs +5 -0
- package/esm2022/common/lib/schema/entity/entity-registery.service.mjs +2 -2
- package/esm2022/common/lib/schema/entity/entity.class.mjs +1 -1
- package/esm2022/common/lib/utils/data-generator.mjs +22 -1
- package/esm2022/common/lib/workflows/common.workflow.mjs +3 -3
- package/esm2022/layout/builder/lib/builder/builder.service.mjs +7 -2
- package/esm2022/layout/builder/lib/builder/widget.types.mjs +5 -1
- package/esm2022/layout/entity/lib/entity-detail-list.viewmodel.mjs +9 -8
- package/esm2022/layout/entity/lib/entity-master-create.viewmodel.mjs +34 -21
- package/esm2022/layout/entity/lib/entity-master-list.viewmodel.mjs +23 -15
- package/esm2022/layout/entity/lib/entity-master-single.viewmodel.mjs +46 -49
- package/esm2022/layout/entity/lib/entity-master-update.viewmodel.mjs +9 -7
- package/esm2022/layout/entity/lib/entity-registery.service.mjs +2 -2
- package/esm2022/layout/entity/lib/entity.module.mjs +13 -4
- package/esm2022/layout/entity/lib/entity.viewmodel.mjs +7 -6
- package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-edit.component.mjs +127 -39
- package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-selector.component.mjs +83 -37
- package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-selector.viewmodel.mjs +34 -23
- package/esm2022/layout/entity/lib/workflows/create-entity.workflow.mjs +17 -20
- package/esm2022/layout/entity/lib/workflows/delete-entity.workflow.mjs +17 -15
- package/esm2022/layout/entity/lib/workflows/modify-section.workflow.mjs +11 -23
- package/esm2022/layout/entity/lib/workflows/show-details.workflow.mjs +3 -3
- package/esm2022/layout/entity/lib/workflows/show-list.workflow.mjs +35 -0
- package/esm2022/layouts/lib/admin/entity-layout/entity-create-view/entity-create-view.component.mjs +3 -3
- package/esm2022/layouts/lib/admin/entity-layout/workflows/delete-entity.workflow.mjs +2 -2
- package/esm2022/layouts/lib/layout.module.mjs +3 -3
- package/esm2022/themes/default/acorex-platform-themes-default.mjs +5 -0
- package/esm2022/themes/default/index.mjs +3 -0
- package/esm2022/themes/default/lib/default.module.mjs +74 -0
- package/esm2022/themes/default/lib/entity-reuse.strategy.mjs +21 -0
- package/esm2022/themes/default/lib/layout.routes.mjs +20 -0
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-detail-list-view/entity-detail-list-view.component.mjs +114 -0
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-create-view/entity-master-create-view.component.mjs +93 -0
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-list-view/entity-master-list-view.component.mjs +163 -0
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-list-view/list-view-option-columns/list-view-option-columns.component.mjs +64 -0
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-list-view/list-view-option-sorting/list-view-option-sorting.component.mjs +62 -0
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-modify-view/entity-master-modify-view.component.mjs +82 -0
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-single-view/entity-master-single-view.component.mjs +77 -0
- package/esm2022/themes/default/lib/layouts/root-layout/components/footer/footer.component.mjs +14 -0
- package/esm2022/themes/default/lib/layouts/root-layout/components/header/header.component.mjs +29 -0
- package/esm2022/themes/default/lib/layouts/root-layout/index.mjs +5 -0
- package/esm2022/themes/default/lib/layouts/root-layout/root-layout.component.mjs +78 -0
- package/esm2022/themes/default/lib/layouts/root-layout/root-layout.module.mjs +91 -0
- package/esm2022/themes/default/lib/pages/errors/error-401/error-401.component.mjs +28 -0
- package/esm2022/themes/default/lib/pages/errors/error-404/error-404.component.mjs +22 -0
- package/esm2022/themes/default/lib/pages/errors/error-offline/error-offline.component.mjs +16 -0
- package/esm2022/widgets/lib/editors/date-time-box-widget/date-time-box-widget-column.component.mjs +2 -2
- package/esm2022/widgets/lib/editors/date-time-box-widget/date-time-box-widget-edit.component.mjs +21 -12
- package/esm2022/widgets/lib/editors/date-time-box-widget/date-time-box-widget-view.component.mjs +3 -2
- package/esm2022/widgets/lib/editors/number-box-widget/number-box-widget-column.component.mjs +2 -2
- package/esm2022/widgets/lib/editors/number-box-widget/number-box-widget-view.component.mjs +2 -2
- package/esm2022/workflow/lib/actions/start-workflow.action.mjs +28 -0
- package/esm2022/workflow/lib/workflow.module.mjs +7 -2
- package/esm2022/workflow/lib/workflow.service.mjs +53 -6
- package/esm2022/workflow/lib/workflow.types.mjs +12 -6
- package/fesm2022/{acorex-platform-common-avatar-widget-edit.component-DAmNXjDm.mjs → acorex-platform-common-avatar-widget-edit.component-B-of5ssU.mjs} +3 -2
- package/fesm2022/{acorex-platform-common-avatar-widget-edit.component-DAmNXjDm.mjs.map → acorex-platform-common-avatar-widget-edit.component-B-of5ssU.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-avatar-widget-view.component-BlA_cFkP.mjs → acorex-platform-common-avatar-widget-view.component-CJvrSkTv.mjs} +4 -3
- package/fesm2022/acorex-platform-common-avatar-widget-view.component-CJvrSkTv.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-boolean-widget-filter.component-CEqibiML.mjs → acorex-platform-common-boolean-widget-filter.component-BTcOjuUm.mjs} +4 -3
- package/fesm2022/acorex-platform-common-boolean-widget-filter.component-BTcOjuUm.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-checkbox-widget-column.component-BiUHPDqV.mjs → acorex-platform-common-checkbox-widget-column.component-X9d1iY_F.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-checkbox-widget-column.component-BiUHPDqV.mjs.map → acorex-platform-common-checkbox-widget-column.component-X9d1iY_F.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-checkbox-widget-edit.component-BVG9_XXh.mjs → acorex-platform-common-checkbox-widget-edit.component-_jtT03Vn.mjs} +4 -3
- package/fesm2022/acorex-platform-common-checkbox-widget-edit.component-_jtT03Vn.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-checkbox-widget-view.component-CfGkMcDi.mjs → acorex-platform-common-checkbox-widget-view.component-nYmtb8bK.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-checkbox-widget-view.component-CfGkMcDi.mjs.map → acorex-platform-common-checkbox-widget-view.component-nYmtb8bK.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-dateTime-widget-column.component-BlXTU887.mjs → acorex-platform-common-dateTime-widget-column.component-5ljYmtHI.mjs} +4 -3
- package/fesm2022/acorex-platform-common-dateTime-widget-column.component-5ljYmtHI.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-dateTime-widget-edit.component-B0s6FN-g.mjs → acorex-platform-common-dateTime-widget-edit.component-D8FSiqAo.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-dateTime-widget-edit.component-B0s6FN-g.mjs.map → acorex-platform-common-dateTime-widget-edit.component-D8FSiqAo.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-dateTime-widget-filter.component-B7KBCsUt.mjs → acorex-platform-common-dateTime-widget-filter.component-Df0DuDtw.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-dateTime-widget-filter.component-B7KBCsUt.mjs.map → acorex-platform-common-dateTime-widget-filter.component-Df0DuDtw.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-dateTime-widget-view.component-Dy7pAkGG.mjs → acorex-platform-common-dateTime-widget-view.component-CjVjQkPh.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-dateTime-widget-view.component-Dy7pAkGG.mjs.map → acorex-platform-common-dateTime-widget-view.component-CjVjQkPh.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-email-widget-column.component-D_UNn2dW.mjs → acorex-platform-common-email-widget-column.component-BgNdL62k.mjs} +4 -3
- package/fesm2022/acorex-platform-common-email-widget-column.component-BgNdL62k.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-email-widget-edit.component-DWT24mCM.mjs → acorex-platform-common-email-widget-edit.component-CgHPGccx.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-email-widget-edit.component-DWT24mCM.mjs.map → acorex-platform-common-email-widget-edit.component-CgHPGccx.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-email-widget-view.component-B6puyycL.mjs → acorex-platform-common-email-widget-view.component-C2aQ14k-.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-email-widget-view.component-B6puyycL.mjs.map → acorex-platform-common-email-widget-view.component-C2aQ14k-.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-file-widget-column.component-C1faGR4K.mjs → acorex-platform-common-file-widget-column.component-CwFzLLHt.mjs} +4 -3
- package/fesm2022/acorex-platform-common-file-widget-column.component-CwFzLLHt.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-file-widget-edit.component-CTvS9ls8.mjs → acorex-platform-common-file-widget-edit.component-DxoQR4CU.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-file-widget-edit.component-CTvS9ls8.mjs.map → acorex-platform-common-file-widget-edit.component-DxoQR4CU.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-file-widget-filter.component-D4AMg5M0.mjs → acorex-platform-common-file-widget-filter.component-BvG0iaKU.mjs} +4 -3
- package/fesm2022/acorex-platform-common-file-widget-filter.component-BvG0iaKU.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-file-widget-view.component-CHI4VCvt.mjs → acorex-platform-common-file-widget-view.component-BC9l3YrO.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-file-widget-view.component-CHI4VCvt.mjs.map → acorex-platform-common-file-widget-view.component-BC9l3YrO.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-gallery-widget-edit.component-CAOctYzV.mjs → acorex-platform-common-gallery-widget-edit.component-BihOIJ9T.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-gallery-widget-edit.component-CAOctYzV.mjs.map → acorex-platform-common-gallery-widget-edit.component-BihOIJ9T.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-gallery-widget-filter.component-lgaYDZeD.mjs → acorex-platform-common-gallery-widget-filter.component-DS1PCIJp.mjs} +4 -3
- package/fesm2022/acorex-platform-common-gallery-widget-filter.component-DS1PCIJp.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-gallery-widget-view.component-Ci50jeO5.mjs → acorex-platform-common-gallery-widget-view.component-CnQONVdg.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-gallery-widget-view.component-Ci50jeO5.mjs.map → acorex-platform-common-gallery-widget-view.component-CnQONVdg.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-largetext-widget-edit.component-DFKG-kum.mjs → acorex-platform-common-largetext-widget-edit.component-BCtGkz1a.mjs} +4 -3
- package/fesm2022/acorex-platform-common-largetext-widget-edit.component-BCtGkz1a.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-lookup-widget-column.component-CFzCGcqA.mjs → acorex-platform-common-lookup-widget-column.component-Cl-vO5XW.mjs} +4 -3
- package/fesm2022/acorex-platform-common-lookup-widget-column.component-Cl-vO5XW.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-lookup-widget-edit.component-CYTSeEOq.mjs → acorex-platform-common-lookup-widget-edit.component-D9UhViUG.mjs} +4 -3
- package/fesm2022/acorex-platform-common-lookup-widget-edit.component-D9UhViUG.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-lookup-widget-filter.component-BkxT9_Hh.mjs → acorex-platform-common-lookup-widget-filter.component-RWweQQaO.mjs} +4 -3
- package/fesm2022/acorex-platform-common-lookup-widget-filter.component-RWweQQaO.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-lookup-widget-view.component-5YeixMp7.mjs → acorex-platform-common-lookup-widget-view.component-mXo8VADX.mjs} +4 -3
- package/fesm2022/acorex-platform-common-lookup-widget-view.component-mXo8VADX.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-map-widget-edit.component-CE3QQBmX.mjs → acorex-platform-common-map-widget-edit.component-SSrR3xxv.mjs} +4 -3
- package/fesm2022/acorex-platform-common-map-widget-edit.component-SSrR3xxv.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-map-widget-view.component-Cv4OCTxz.mjs → acorex-platform-common-map-widget-view.component-DrGG3gzg.mjs} +4 -3
- package/fesm2022/acorex-platform-common-map-widget-view.component-DrGG3gzg.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-messenger-widget-column.component-CJdh6TKb.mjs → acorex-platform-common-messenger-widget-column.component-BJ_XzNKc.mjs} +4 -3
- package/fesm2022/acorex-platform-common-messenger-widget-column.component-BJ_XzNKc.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-messenger-widget-edit.component-kiEHxJia.mjs → acorex-platform-common-messenger-widget-edit.component-B_FG_n0O.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-messenger-widget-edit.component-kiEHxJia.mjs.map → acorex-platform-common-messenger-widget-edit.component-B_FG_n0O.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-messenger-widget-view.component-DzbjgZA7.mjs → acorex-platform-common-messenger-widget-view.component-EBiPO9ds.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-messenger-widget-view.component-DzbjgZA7.mjs.map → acorex-platform-common-messenger-widget-view.component-EBiPO9ds.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-number-widget-edit.component-BRuIP96Y.mjs → acorex-platform-common-number-widget-edit.component-B1XXga-9.mjs} +4 -3
- package/fesm2022/acorex-platform-common-number-widget-edit.component-B1XXga-9.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-number-widget-filter.component-jQ4DaFQH.mjs → acorex-platform-common-number-widget-filter.component-B2JCpDjU.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-number-widget-filter.component-jQ4DaFQH.mjs.map → acorex-platform-common-number-widget-filter.component-B2JCpDjU.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-number-widget-view.component-BzUWjT8m.mjs → acorex-platform-common-number-widget-view.component-DD0tkoc4.mjs} +4 -3
- package/fesm2022/acorex-platform-common-number-widget-view.component-DD0tkoc4.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-password-widget-column.component-BRzyuK5c.mjs → acorex-platform-common-password-widget-column.component-eyqgQlAt.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-password-widget-column.component-BRzyuK5c.mjs.map → acorex-platform-common-password-widget-column.component-eyqgQlAt.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-password-widget-edit.component-q6R2dw5k.mjs → acorex-platform-common-password-widget-edit.component-C2yNb9Pl.mjs} +4 -3
- package/fesm2022/acorex-platform-common-password-widget-edit.component-C2yNb9Pl.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-password-widget-view.component-CKaQItON.mjs → acorex-platform-common-password-widget-view.component-o9S7pwJW.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-password-widget-view.component-CKaQItON.mjs.map → acorex-platform-common-password-widget-view.component-o9S7pwJW.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-phone-widget-column.component-BD7BScjW.mjs → acorex-platform-common-phone-widget-column.component-BL9Xl2XH.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-phone-widget-column.component-BD7BScjW.mjs.map → acorex-platform-common-phone-widget-column.component-BL9Xl2XH.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-phone-widget-edit.component-D8tGKfNj.mjs → acorex-platform-common-phone-widget-edit.component-DSh9zoZj.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-phone-widget-edit.component-D8tGKfNj.mjs.map → acorex-platform-common-phone-widget-edit.component-DSh9zoZj.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-phone-widget-view.component-CFiMsGOB.mjs → acorex-platform-common-phone-widget-view.component-Br3xbaDd.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-phone-widget-view.component-CFiMsGOB.mjs.map → acorex-platform-common-phone-widget-view.component-Br3xbaDd.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-rich-text-widget-column.component-BPzwY_8L.mjs → acorex-platform-common-rich-text-widget-column.component-DDT58tca.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-rich-text-widget-column.component-BPzwY_8L.mjs.map → acorex-platform-common-rich-text-widget-column.component-DDT58tca.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-rich-text-widget-edit.component-CA2xRfVg.mjs → acorex-platform-common-rich-text-widget-edit.component-Dz1toc21.mjs} +4 -3
- package/fesm2022/acorex-platform-common-rich-text-widget-edit.component-Dz1toc21.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-rich-text-widget-view.component-DYfTZ64H.mjs → acorex-platform-common-rich-text-widget-view.component-CxTPcEIQ.mjs} +4 -3
- package/fesm2022/acorex-platform-common-rich-text-widget-view.component-CxTPcEIQ.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-selection-list-widget-column.component-_MglaOmo.mjs → acorex-platform-common-selection-list-widget-column.component-BCCmg8MI.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-selection-list-widget-column.component-_MglaOmo.mjs.map → acorex-platform-common-selection-list-widget-column.component-BCCmg8MI.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-selection-list-widget-edit.component-QKw_tyOd.mjs → acorex-platform-common-selection-list-widget-edit.component-B5eUdN2R.mjs} +4 -3
- package/fesm2022/acorex-platform-common-selection-list-widget-edit.component-B5eUdN2R.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-selection-list-widget-filter.component-DRToTnHQ.mjs → acorex-platform-common-selection-list-widget-filter.component-DPpZq1TB.mjs} +4 -3
- package/fesm2022/acorex-platform-common-selection-list-widget-filter.component-DPpZq1TB.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-selection-list-widget-view.component-CjDiuUdj.mjs → acorex-platform-common-selection-list-widget-view.component-Bxvd_AKZ.mjs} +4 -3
- package/fesm2022/acorex-platform-common-selection-list-widget-view.component-Bxvd_AKZ.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-signature-pad-widget-edit.component-DF29uWl2.mjs → acorex-platform-common-signature-pad-widget-edit.component-CNjYCEi6.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-signature-pad-widget-edit.component-DF29uWl2.mjs.map → acorex-platform-common-signature-pad-widget-edit.component-CNjYCEi6.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-signature-pad-widget-view.component-BWzoR4HM.mjs → acorex-platform-common-signature-pad-widget-view.component-CsiBv_7i.mjs} +4 -3
- package/fesm2022/acorex-platform-common-signature-pad-widget-view.component-CsiBv_7i.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-string-widget-filter.component-Di_GFHme.mjs → acorex-platform-common-string-widget-filter.component-CrGt6Bov.mjs} +4 -3
- package/fesm2022/acorex-platform-common-string-widget-filter.component-CrGt6Bov.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-text-widget-column.component-BSYd1CbC.mjs → acorex-platform-common-text-widget-column.component-qXusAevm.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-text-widget-column.component-BSYd1CbC.mjs.map → acorex-platform-common-text-widget-column.component-qXusAevm.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-text-widget-edit.component-K9z9N1qw.mjs → acorex-platform-common-text-widget-edit.component-ed0MUYnD.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-text-widget-edit.component-K9z9N1qw.mjs.map → acorex-platform-common-text-widget-edit.component-ed0MUYnD.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-text-widget-view.component-WbZtm_bf.mjs → acorex-platform-common-text-widget-view.component-BpxTaeQW.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-text-widget-view.component-WbZtm_bf.mjs.map → acorex-platform-common-text-widget-view.component-BpxTaeQW.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-toggle-widget-column.component-ZCBSYMuz.mjs → acorex-platform-common-toggle-widget-column.component-BqiUQrmV.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-toggle-widget-column.component-ZCBSYMuz.mjs.map → acorex-platform-common-toggle-widget-column.component-BqiUQrmV.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-toggle-widget-edit.component-rkDfLA-J.mjs → acorex-platform-common-toggle-widget-edit.component-CDG62BJN.mjs} +4 -3
- package/fesm2022/acorex-platform-common-toggle-widget-edit.component-CDG62BJN.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-toggle-widget-view.component-DLDIrci1.mjs → acorex-platform-common-toggle-widget-view.component-DWYcIPTd.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-toggle-widget-view.component-DLDIrci1.mjs.map → acorex-platform-common-toggle-widget-view.component-DWYcIPTd.mjs.map} +1 -1
- package/fesm2022/acorex-platform-common.mjs +252 -149
- package/fesm2022/acorex-platform-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-builder.mjs +10 -1
- package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-entity.mjs +445 -261
- package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
- package/fesm2022/{acorex-platform-layouts-entity-create-view.component-BmSMt95H.mjs → acorex-platform-layouts-entity-create-view.component-fkKPKxlb.mjs} +3 -3
- package/fesm2022/acorex-platform-layouts-entity-create-view.component-fkKPKxlb.mjs.map +1 -0
- package/fesm2022/acorex-platform-layouts.mjs +4 -4
- package/fesm2022/acorex-platform-layouts.mjs.map +1 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-BxYT9KhH.mjs +96 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-BxYT9KhH.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-F7dr-osu.mjs +85 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-F7dr-osu.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-error-401.component-Djuin07Z.mjs +31 -0
- package/fesm2022/acorex-platform-themes-default-error-401.component-Djuin07Z.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-error-404.component-C-RyiLkk.mjs +25 -0
- package/fesm2022/acorex-platform-themes-default-error-404.component-C-RyiLkk.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-error-offline.component-WCfy9-cr.mjs +19 -0
- package/fesm2022/acorex-platform-themes-default-error-offline.component-WCfy9-cr.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default.mjs +688 -0
- package/fesm2022/acorex-platform-themes-default.mjs.map +1 -0
- package/fesm2022/acorex-platform-widgets.mjs +50 -42
- package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
- package/fesm2022/acorex-platform-workflow.mjs +184 -104
- package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
- package/layout/builder/lib/builder/widget.types.d.ts +3 -0
- package/layout/entity/lib/entity-master-create.viewmodel.d.ts +6 -5
- package/layout/entity/lib/entity-master-list.viewmodel.d.ts +4 -0
- package/layout/entity/lib/entity-master-single.viewmodel.d.ts +10 -5
- package/layout/entity/lib/entity-master-update.viewmodel.d.ts +0 -1
- package/layout/entity/lib/entity.viewmodel.d.ts +3 -3
- package/layout/entity/lib/widgets/lookup-widget/lookup-widget-edit.component.d.ts +18 -3
- package/layout/entity/lib/widgets/lookup-widget/lookup-widget-selector.component.d.ts +8 -1
- package/layout/entity/lib/widgets/lookup-widget/lookup-widget-selector.viewmodel.d.ts +10 -3
- package/layout/entity/lib/workflows/create-entity.workflow.d.ts +0 -2
- package/layout/entity/lib/workflows/delete-entity.workflow.d.ts +2 -4
- package/layout/entity/lib/workflows/modify-section.workflow.d.ts +2 -5
- package/layout/entity/lib/workflows/show-list.workflow.d.ts +10 -0
- package/package.json +7 -1
- package/themes/default/README.md +3 -0
- package/themes/default/index.d.ts +2 -0
- package/themes/default/lib/default.module.d.ts +8 -0
- package/themes/default/lib/entity-reuse.strategy.d.ts +8 -0
- package/themes/default/lib/layout.routes.d.ts +2 -0
- package/themes/default/lib/layouts/entity-layouts/entity-detail-list-view/entity-detail-list-view.component.d.ts +24 -0
- package/themes/default/lib/layouts/entity-layouts/entity-master-create-view/entity-master-create-view.component.d.ts +17 -0
- package/themes/default/lib/layouts/entity-layouts/entity-master-list-view/entity-master-list-view.component.d.ts +29 -0
- package/themes/default/lib/layouts/entity-layouts/entity-master-list-view/list-view-option-columns/list-view-option-columns.component.d.ts +18 -0
- package/themes/default/lib/layouts/entity-layouts/entity-master-list-view/list-view-option-sorting/list-view-option-sorting.component.d.ts +16 -0
- package/themes/default/lib/layouts/entity-layouts/entity-master-modify-view/entity-master-modify-view.component.d.ts +16 -0
- package/themes/default/lib/layouts/entity-layouts/entity-master-single-view/entity-master-single-view.component.d.ts +13 -0
- package/themes/default/lib/layouts/root-layout/components/footer/footer.component.d.ts +5 -0
- package/themes/default/lib/layouts/root-layout/components/header/header.component.d.ts +10 -0
- package/themes/default/lib/layouts/root-layout/index.d.ts +4 -0
- package/themes/default/lib/layouts/root-layout/root-layout.component.d.ts +32 -0
- package/themes/default/lib/layouts/root-layout/root-layout.module.d.ts +24 -0
- package/themes/default/lib/pages/errors/error-401/error-401.component.d.ts +10 -0
- package/themes/default/lib/pages/errors/error-404/error-404.component.d.ts +8 -0
- package/themes/default/lib/pages/errors/error-offline/error-offline.component.d.ts +9 -0
- package/widgets/lib/editors/date-time-box-widget/date-time-box-widget-edit.component.d.ts +4 -0
- package/workflow/lib/actions/start-workflow.action.d.ts +10 -0
- package/workflow/lib/workflow.service.d.ts +4 -2
- package/workflow/lib/workflow.types.d.ts +3 -1
- package/fesm2022/acorex-platform-common-avatar-widget-view.component-BlA_cFkP.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-boolean-widget-filter.component-CEqibiML.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-checkbox-widget-edit.component-BVG9_XXh.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-dateTime-widget-column.component-BlXTU887.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-email-widget-column.component-D_UNn2dW.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-file-widget-column.component-C1faGR4K.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-file-widget-filter.component-D4AMg5M0.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-gallery-widget-filter.component-lgaYDZeD.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-largetext-widget-edit.component-DFKG-kum.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-lookup-widget-column.component-CFzCGcqA.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-lookup-widget-edit.component-CYTSeEOq.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-lookup-widget-filter.component-BkxT9_Hh.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-lookup-widget-view.component-5YeixMp7.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-map-widget-edit.component-CE3QQBmX.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-map-widget-view.component-Cv4OCTxz.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-messenger-widget-column.component-CJdh6TKb.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-number-widget-edit.component-BRuIP96Y.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-number-widget-view.component-BzUWjT8m.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-password-widget-edit.component-q6R2dw5k.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-rich-text-widget-edit.component-CA2xRfVg.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-rich-text-widget-view.component-DYfTZ64H.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-selection-list-widget-edit.component-QKw_tyOd.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-selection-list-widget-filter.component-DRToTnHQ.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-selection-list-widget-view.component-CjDiuUdj.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-signature-pad-widget-view.component-BWzoR4HM.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-string-widget-filter.component-Di_GFHme.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-toggle-widget-edit.component-rkDfLA-J.mjs.map +0 -1
- package/fesm2022/acorex-platform-layouts-entity-create-view.component-BmSMt95H.mjs.map +0 -1
|
@@ -5,8 +5,10 @@ import { AXPEntityCommandTriggerViewModel, AXPEntityListViewColumnViewModel } fr
|
|
|
5
5
|
import { AXFormatService } from "@acorex/core/format";
|
|
6
6
|
import { AXPSessionService } from "@acorex/platform/auth";
|
|
7
7
|
import { AXDataSource } from "@acorex/components/common";
|
|
8
|
-
import { AXPWorkflowService } from "@acorex/platform/workflow";
|
|
8
|
+
import { AXPWorkflowService, ofType } from "@acorex/platform/workflow";
|
|
9
9
|
import { AXPEntityCommandScope, AXPLayoutService } from "@acorex/platform/common";
|
|
10
|
+
import { AXPEntityDeletedEvent } from "./workflows/delete-entity.workflow";
|
|
11
|
+
import { Subject } from "rxjs";
|
|
10
12
|
import * as i0 from "@angular/core";
|
|
11
13
|
export class AXPEntityMasterListViewQueryViewModel {
|
|
12
14
|
constructor(entity, section, view) {
|
|
@@ -29,6 +31,7 @@ export class AXPEntityMasterListViewModel {
|
|
|
29
31
|
this.formatService = this.injector.get(AXFormatService);
|
|
30
32
|
this.session = this.injector.get(AXPSessionService);
|
|
31
33
|
this.workflow = this.injector.get(AXPWorkflowService);
|
|
34
|
+
this.events$ = new Subject();
|
|
32
35
|
this.dataSource = new AXDataSource({
|
|
33
36
|
byKey: (key) => {
|
|
34
37
|
const func = this.entityDef.queries.byKey.execute;
|
|
@@ -103,9 +106,11 @@ export class AXPEntityMasterListViewModel {
|
|
|
103
106
|
};
|
|
104
107
|
//****************** Columns ******************//
|
|
105
108
|
this.allAvailableColumns = () => {
|
|
106
|
-
const
|
|
107
|
-
|
|
108
|
-
|
|
109
|
+
const columns = this.entityDef.columns?.map(c => c.name) ?? [];
|
|
110
|
+
const props = this.entityDef.properties.filter(p => p.schema.hidden != true);
|
|
111
|
+
const displayColumns = props.filter(p => columns.some(c => c == p.name));
|
|
112
|
+
return displayColumns.map(p => {
|
|
113
|
+
return new AXPEntityListViewColumnViewModel(p, this.entityDef.columns?.find(c => c.name == p.name));
|
|
109
114
|
});
|
|
110
115
|
};
|
|
111
116
|
this.visibleColumnCount = () => {
|
|
@@ -143,6 +148,12 @@ export class AXPEntityMasterListViewModel {
|
|
|
143
148
|
});
|
|
144
149
|
});
|
|
145
150
|
this.view = signal(this.views()[0]);
|
|
151
|
+
this.workflow.events$.pipe(ofType(AXPEntityDeletedEvent)).subscribe((event) => {
|
|
152
|
+
if (event.payload.entity == this.entityDef.source) {
|
|
153
|
+
this.selectedItems.set([]);
|
|
154
|
+
this.events$.next({ action: "refresh" });
|
|
155
|
+
}
|
|
156
|
+
});
|
|
146
157
|
}
|
|
147
158
|
clearSelection() {
|
|
148
159
|
this.selectedItems.set([]);
|
|
@@ -170,7 +181,6 @@ export class AXPEntityMasterListViewModel {
|
|
|
170
181
|
//
|
|
171
182
|
const inline = this.inlineFilters.filters?.length ?? 0;
|
|
172
183
|
const advance = this.advanceFilters.filters?.length ?? 0;
|
|
173
|
-
debugger;
|
|
174
184
|
if (inline && !advance) {
|
|
175
185
|
this.dataSource.filter(this.inlineFilters);
|
|
176
186
|
}
|
|
@@ -198,8 +208,10 @@ export class AXPEntityMasterListViewModel {
|
|
|
198
208
|
const cols = this.view().columns;
|
|
199
209
|
const cloned = this.allAvailableColumns()
|
|
200
210
|
.map(c => {
|
|
201
|
-
const
|
|
202
|
-
|
|
211
|
+
const column = this.entityDef.columns?.find(cc => cc.name == c.name);
|
|
212
|
+
const prop = this.entityDef.properties.find(p => p.name == c.name);
|
|
213
|
+
const col = new AXPEntityListViewColumnViewModel(prop, column);
|
|
214
|
+
col.visible = !cols.some(c => c == col.name) && col.visible != false;
|
|
203
215
|
return col;
|
|
204
216
|
});
|
|
205
217
|
this.columns.set(cloned);
|
|
@@ -238,14 +250,10 @@ export class AXPEntityMasterListViewModel {
|
|
|
238
250
|
}
|
|
239
251
|
//****************** Commands ******************//
|
|
240
252
|
async executeCommand(commandName, data = null) {
|
|
241
|
-
// debugger
|
|
242
253
|
const action = this.actions().find(c => c.name == commandName);
|
|
243
|
-
this.workflow.execute(commandName, {
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
entity: this.entityDef.name,
|
|
247
|
-
data: action?.scope == AXPEntityCommandScope.Selected ? this.selectedItems : data
|
|
248
|
-
}
|
|
254
|
+
await this.workflow.execute(commandName, {
|
|
255
|
+
entity: this.entityDef.source,
|
|
256
|
+
data: action?.scope == AXPEntityCommandScope.Selected ? this.selectedItems() : data
|
|
249
257
|
});
|
|
250
258
|
}
|
|
251
259
|
}
|
|
@@ -275,4 +283,4 @@ export const AXPEntityListViewModelResolver = (route, state, service = inject(AX
|
|
|
275
283
|
//
|
|
276
284
|
return service.create(moduleName, entityName);
|
|
277
285
|
};
|
|
278
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LW1hc3Rlci1saXN0LnZpZXdtb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2VudGl0eS9zcmMvbGliL2VudGl0eS1tYXN0ZXItbGlzdC52aWV3bW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVoRixPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN4RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBb0QsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRCxPQUFPLEVBQTBDLHFCQUFxQixFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBYTFILE1BQU0sT0FBTyxxQ0FBcUM7SUFFOUMsWUFBb0IsTUFBaUIsRUFBVSxPQUFxQyxFQUFVLElBQWtCO1FBQTVGLFdBQU0sR0FBTixNQUFNLENBQVc7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUE4QjtRQUFVLFNBQUksR0FBSixJQUFJLENBQWM7UUFJaEgsU0FBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3RCLFVBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN4QixVQUFLLEdB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S0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFrQixFQUFFLFVBQWtCO1FBQ3RELElBQUksQ0FBQyxNQUFNLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkMsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDeEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QyxPQUFPLElBQUksNEJBQTRCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNuRSxDQUFDOzhHQVZRLDZCQUE2QjtrSEFBN0IsNkJBQTZCLGNBRGhCLE1BQU07OzJGQUNuQiw2QkFBNkI7a0JBRHpDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOztBQWNsQyxNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBcUQsQ0FDNUYsS0FBNkIsRUFDN0IsS0FBMEIsRUFDMUIsVUFBeUMsTUFBTSxDQUFDLDZCQUE2QixDQUFDLEVBQ3pDLEVBQUU7SUFDdkMsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBVyxDQUFDO0lBQzVELE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQVcsQ0FBQztJQUNsRSxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQVcsQ0FBQztJQUMxRCxFQUFFO0lBQ0YsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUNsRCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tIFwibG9kYXNoLWVzXCI7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yLCBjb21wdXRlZCwgaW5qZWN0LCBzaWduYWwgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBBWFBFbnRpdHlEZWZpbml0aW9uUmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSBcIi4vZW50aXR5LXJlZ2lzdGVyeS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIFJlc29sdmVGbiwgUm91dGVyU3RhdGVTbmFwc2hvdCB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgQVhQRW50aXR5Q29tbWFuZFRyaWdnZXJWaWV3TW9kZWwsIEFYUEVudGl0eUxpc3RWaWV3Q29sdW1uVmlld01vZGVsIH0gZnJvbSBcIi4vZW50aXR5LnZpZXdtb2RlbFwiO1xyXG5pbXBvcnQgeyBBWEZvcm1hdFNlcnZpY2UgfSBmcm9tIFwiQGFjb3JleC9jb3JlL2Zvcm1hdFwiO1xyXG5pbXBvcnQgeyBBWFBTZXNzaW9uU2VydmljZSB9IGZyb20gXCJAYWNvcmV4L3BsYXRmb3JtL2F1dGhcIjtcclxuaW1wb3J0IHsgQVhEYXRhU291cmNlLCBBWERhdGFTb3VyY2VGaWx0ZXJPcHRpb24sIEFYRGF0YVNvdXJjZVNvcnRPcHRpb24gfSBmcm9tIFwiQGFjb3JleC9jb21wb25lbnRzL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBBWFBXb3JrZmxvd1NlcnZpY2UgfSBmcm9tIFwiQGFjb3JleC9wbGF0Zm9ybS93b3JrZmxvd1wiO1xyXG5pbXBvcnQgeyBBWFBFbnRpdHksIEFYUFF1ZXJ5VmlldywgQVhQQmVhcmRDcnVtYiwgQVhQRW50aXR5Q29tbWFuZFNjb3BlLCBBWFBMYXlvdXRTZXJ2aWNlIH0gZnJvbSBcIkBhY29yZXgvcGxhdGZvcm0vY29tbW9uXCI7XHJcblxyXG5cclxuXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFYUEVudGl0eU1hc3Rlckxpc3RWaWV3U29ydFByb3BWaWV3TW9kZWwge1xyXG5cclxuICAgIG5hbWU6IHN0cmluZztcclxuICAgIHRpdGxlOiBzdHJpbmc7XHJcbiAgICBkaXI6IHN0cmluZztcclxufVxyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBBWFBFbnRpdHlNYXN0ZXJMaXN0Vmlld1F1ZXJ5Vmlld01vZGVsIHtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVudGl0eTogQVhQRW50aXR5LCBwcml2YXRlIHNlY3Rpb246IEFYUEVudGl0eU1hc3Rlckxpc3RWaWV3TW9kZWwsIHByaXZhdGUgdmlldzogQVhQUXVlcnlWaWV3KSB7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIG5hbWUgPSB0aGlzLnZpZXcubmFtZTtcclxuICAgIHRpdGxlID0gdGhpcy52aWV3LnRpdGxlO1xyXG4gICAgc29ydHMgPSB0aGlzLnZpZXcuc29ydHM7XHJcbiAgICBjb2x1bW5zID0gdGhpcy52aWV3LmNvbHVtbnM7XHJcbiAgICBjb25kaXRpb25zID0gdGhpcy52aWV3LmNvbmRpdGlvbnM7XHJcblxyXG59XHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIEFYUEVudGl0eU1hc3Rlckxpc3RWaWV3TW9kZWwge1xyXG5cclxuXHJcbiAgICBwcml2YXRlIGVudGl0eURlZiA9IGNsb25lRGVlcCh0aGlzLmNvbmZpZykhO1xyXG4gICAgcHJpdmF0ZSBfdmlld0RlZiA9IGNsb25lRGVlcCh0aGlzLmVudGl0eURlZi5pbnRlcmZhY2VzPy5tYXN0ZXI/Lmxpc3QpIVxyXG4gICAgcHJpdmF0ZSBmb3JtYXRTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoQVhGb3JtYXRTZXJ2aWNlKVxyXG4gICAgcHJpdmF0ZSBzZXNzaW9uID0gdGhpcy5pbmplY3Rvci5nZXQoQVhQU2Vzc2lvblNlcnZpY2UpO1xyXG4gICAgcHJpdmF0ZSB3b3JrZmxvdyA9IHRoaXMuaW5qZWN0b3IuZ2V0KEFYUFdvcmtmbG93U2VydmljZSk7XHJcblxyXG5cclxuXHJcbiAgICBkYXRhU291cmNlID0gbmV3IEFYRGF0YVNvdXJjZSh7XHJcbiAgICAgICAgYnlLZXk6IChrZXkpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZnVuYyA9IHRoaXMuZW50aXR5RGVmLnF1ZXJpZXMuYnlLZXkuZXhlY3V0ZSBhcyBGdW5jdGlvbjtcclxuICAgICAgICAgICAgcmV0dXJuIGZ1bmMoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGxvYWQ6IChlKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZ1bmMgPSB0aGlzLmVudGl0eURlZi5xdWVyaWVzLmxpc3Q/LmV4ZWN1dGUgYXMgRnVuY3Rpb247XHJcbiAgICAgICAgICAgIHJldHVybiBmdW5jKGUpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcGFnZVNpemU6IDEwLFxyXG4gICAgICAgIGtleTogJ2lkJ1xyXG5cclxuICAgIH0pXHJcblxyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgICAgIHByaXZhdGUgY29uZmlnOiBBWFBFbnRpdHlcclxuICAgICkge1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZWxlY3RlZEl0ZW1zID0gc2lnbmFsPGFueVtdPihbXSk7XHJcblxyXG4gICAgcHVibGljIGhhc1NlbGVjdGVkSXRlbXMgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJdGVtcygpLmxlbmd0aCA+IDBcclxuICAgIH0pO1xyXG5cclxuICAgIHB1YmxpYyBjbGVhclNlbGVjdGlvbigpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuc2V0KFtdKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyoqKioqKioqKioqKioqKioqKiBUaXRsZSAqKioqKioqKioqKioqKioqKiovL1xyXG4gICAgcHVibGljIHRpdGxlID0gY29tcHV0ZWQ8c3RyaW5nPigoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZpZXdEZWYudGl0bGUgPz8gdGhpcy5lbnRpdHlEZWYuZm9ybWF0cy5wbHVyYWwhO1xyXG4gICAgfSk7XHJcbiAgICAvLyoqKioqKioqKioqKioqKioqKiBEZXNjcmlwdGlvbiAqKioqKioqKioqKioqKioqKiovL1xyXG4gICAgcHVibGljIGRlc2NyaXB0aW9uID0gY29tcHV0ZWQ8c3RyaW5nIHwgbnVsbD4oKCkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl92aWV3RGVmLmRlc2NyaXB0aW9uID8/IG51bGw7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyoqKioqKioqKioqKioqKioqKiBJbmxpbmUgZmlsdGVyICoqKioqKioqKioqKioqKioqKi8vXHJcbiAgICBwdWJsaWMgaW5saW5lRmlsdGVyc1BsYWNlaG9sZGVycyA9IGNvbXB1dGVkPHN0cmluZ1tdPigoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZW50aXR5RGVmLnByb3BlcnRpZXMuZmlsdGVyKHAgPT4gcC5vcHRpb25zPy5maWx0ZXI/LmlubGluZT8uZW5hYmxlZCkubWFwKGMgPT4gYy50aXRsZSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBwdWJsaWMgaGFzSW5saW5lRmlsdGVycyA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pbmxpbmVGaWx0ZXJzUGxhY2Vob2xkZXJzKCkubGVuZ3RoID4gMDtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vKioqKioqKioqKioqKioqKioqIEJlYXJkY3J1bWJzICoqKioqKioqKioqKioqKioqKi8vXHJcbiAgICBwdWJsaWMgYmVhcmRjcnVtYnMgPSBjb21wdXRlZDxBWFBCZWFyZENydW1iW10+KCgpID0+IHtcclxuICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB0aXRsZTogXCJIb21lXCIsXHJcbiAgICAgICAgICAgICAgICBpY29uOiBcImZhLXNvbGlkIGZhLWhvbWUgYXgtdGV4dC14cyBheC1tZS0yXCIsXHJcbiAgICAgICAgICAgICAgICB1cmw6IFtgLyR7dGhpcy5zZXNzaW9uLmFwcGxpY2F0aW9uPy5uYW1lfWBdXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHRpdGxlOiB0aGlzLnRpdGxlKCksXHJcbiAgICAgICAgICAgICAgICB1cmw6IFtgLyR7dGhpcy5zZXNzaW9uLmFwcGxpY2F0aW9uPy5uYW1lfWAsICdtJywgYCR7dGhpcy5lbnRpdHlEZWYubW9kdWxlfWAsICdlJywgYCR7dGhpcy5lbnRpdHlEZWYubmFtZX1gLCAnbGlzdCddXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICBdXHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyoqKioqKioqKioqKioqKioqKiBBY3Rpb25zICoqKioqKioqKioqKioqKioqKi8vXHJcbiAgICBwcml2YXRlIGFjdGlvbnMgPSBjb21wdXRlZDxBWFBFbnRpdHlDb21tYW5kVHJpZ2dlclZpZXdNb2RlbFtdPigoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgbGlzdCA9IHRoaXMuZW50aXR5RGVmLmludGVyZmFjZXM/Lm1hc3Rlcj8ubGlzdD8uYWN0aW9ucyA/PyBbXTtcclxuICAgICAgICByZXR1cm4gbGlzdFxyXG4gICAgICAgICAgICAuZmlsdGVyKGEgPT5cclxuICAgICAgICAgICAgICAgIChhLnNjb3BlID09IEFYUEVudGl0eUNvbW1hbmRTY29wZS5TZWxlY3RlZCAmJiB0aGlzLmhhc1NlbGVjdGVkSXRlbXMoKSkgfHxcclxuICAgICAgICAgICAgICAgIChhLnNjb3BlICE9IEFYUEVudGl0eUNvbW1hbmRTY29wZS5TZWxlY3RlZCAmJiAhdGhpcy5oYXNTZWxlY3RlZEl0ZW1zKCkpXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLm1hcCgodHIpID0+IG5ldyBBWFBFbnRpdHlDb21tYW5kVHJpZ2dlclZpZXdNb2RlbCh0aGlzLmVudGl0eURlZiwgdHIpKSA/PyBbXTtcclxuICAgIH0pO1xyXG5cclxuICAgIHB1YmxpYyBwcmltYXJ5QWN0aW9ucyA9IGNvbXB1dGVkPEFYUEVudGl0eUNvbW1hbmRUcmlnZ2VyVmlld01vZGVsW10+KCgpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5hY3Rpb25zKCkuZmlsdGVyKGMgPT4gYy5wcmlvcml0eSA9PSAncHJpbWFyeScpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcHVibGljIHNlY29uZGFyeUFjdGlvbnMgPSBjb21wdXRlZDxBWFBFbnRpdHlDb21tYW5kVHJpZ2dlclZpZXdNb2RlbFtdPigoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aW9ucygpLmZpbHRlcihjID0+IGMucHJpb3JpdHkgPT0gJ3NlY29uZGFyeScpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8qKioqKioqKioqKioqKioqKiogRmlsdGVyICoqKioqKioqKioqKioqKioqKi8vXHJcblxyXG4gICAgcHJpdmF0ZSBpbmxpbmVGaWx0ZXJzOiBBWERhdGFTb3VyY2VGaWx0ZXJPcHRpb24gPSB7XHJcbiAgICAgICAgZmllbGQ6IG51bGwgYXMgYW55LFxyXG4gICAgICAgIGxvZ2ljOiAnb3InLFxyXG4gICAgICAgIG9wZXJhdG9yOiBudWxsIGFzIGFueSxcclxuICAgICAgICBmaWx0ZXJzOiBbXVxyXG4gICAgfTtcclxuXHJcbiAgICBwcml2YXRlIGFkdmFuY2VGaWx0ZXJzOiBBWERhdGFTb3VyY2VGaWx0ZXJPcHRpb24gPSB7XHJcbiAgICAgICAgZmllbGQ6IG51bGwgYXMgYW55LFxyXG4gICAgICAgIGxvZ2ljOiAnYW5kJyxcclxuICAgICAgICBvcGVyYXRvcjogbnVsbCBhcyBhbnksXHJcbiAgICAgICAgZmlsdGVyczogW11cclxuICAgIH07XHJcblxyXG4gICAgYXBwbHlJbmxpbmVGaWx0ZXIodmFsdWU6IHN0cmluZykge1xyXG4gICAgICAgIGNvbnN0IHByb3BzID0gdGhpcy5lbnRpdHlEZWYucHJvcGVydGllcy5maWx0ZXIoYyA9PiBjLm9wdGlvbnM/LmZpbHRlcj8uaW5saW5lPy5lbmFibGVkKTtcclxuICAgICAgICB0aGlzLmlubGluZUZpbHRlcnMuZmlsdGVycyA9IFtdO1xyXG4gICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgICBwcm9wcy5mb3JFYWNoKHAgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbmxpbmVGaWx0ZXJzLmZpbHRlcnM/LnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkOiBwLm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2NvbnRhaW5zJ1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuYXBwbHlGaWx0ZXJBbmRTb3J0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXBwbHlGaWx0ZXJBbmRTb3J0KCkge1xyXG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5jbGVhckZpbHRlcigpO1xyXG4gICAgICAgIC8vXHJcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLnNvcnQoLi4udGhpcy5zb3J0ZWRGaWVsZHMoKS5tYXAocyA9PiAoeyBkaXI6IHMuZGlyLCBmaWVsZDogcy5uYW1lIH0gYXMgQVhEYXRhU291cmNlU29ydE9wdGlvbikpKTtcclxuICAgICAgICAvL1xyXG4gICAgICAgIGNvbnN0IGlubGluZSA9IHRoaXMuaW5saW5lRmlsdGVycy5maWx0ZXJzPy5sZW5ndGggPz8gMDtcclxuICAgICAgICBjb25zdCBhZHZhbmNlID0gdGhpcy5hZHZhbmNlRmlsdGVycy5maWx0ZXJzPy5sZW5ndGggPz8gMDtcclxuICAgICAgICBkZWJ1Z2dlclxyXG4gICAgICAgIGlmIChpbmxpbmUgJiYgIWFkdmFuY2UpIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlLmZpbHRlcih0aGlzLmlubGluZUZpbHRlcnMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICghaW5saW5lICYmIGFkdmFuY2UpIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlLmZpbHRlcih0aGlzLmFkdmFuY2VGaWx0ZXJzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaW5saW5lICYmIGFkdmFuY2UpIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlLmZpbHRlcih7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogbnVsbCBhcyBhbnksXHJcbiAgICAgICAgICAgICAgICBsb2dpYzogJ2FuZCcsXHJcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogbnVsbCBhcyBhbnksXHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbdGhpcy5pbmxpbmVGaWx0ZXJzLCB0aGlzLmFkdmFuY2VGaWx0ZXJzXVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy9cclxuICAgICAgICB0aGlzLmRhdGFTb3VyY2UucmVmcmVzaCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vKioqKioqKioqKioqKioqKioqIENvbHVtbnMgKioqKioqKioqKioqKioqKioqLy9cclxuXHJcbiAgICBwcml2YXRlIGFsbEF2YWlsYWJsZUNvbHVtbnMgPSAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgcHJvcHMgPSBjbG9uZURlZXAodGhpcy5lbnRpdHlEZWYucHJvcGVydGllcy5maWx0ZXIoYyA9PiBjLnNjaGVtYS5oaWRkZW4gIT0gdHJ1ZSAmJiBjLm9wdGlvbnM/LnRhYmxlPy5lbmFibGVkKSk7XHJcbiAgICAgICAgcmV0dXJuIHByb3BzLm1hcChlID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBBWFBFbnRpdHlMaXN0Vmlld0NvbHVtblZpZXdNb2RlbChlKTtcclxuICAgICAgICB9KVxyXG4gICAgfTtcclxuXHJcbiAgICB2aXNpYmxlQ29sdW1uQ291bnQgPSAoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1ucygpLmZpbHRlcihjID0+IGMudmlzaWJsZSA9PSB0cnVlKS5sZW5ndGg7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbHVtbnMgPSBzaWduYWw8QVhQRW50aXR5TGlzdFZpZXdDb2x1bW5WaWV3TW9kZWxbXT4oW10pO1xyXG5cclxuICAgIHJlc2V0Q29sdW1ucygpIHtcclxuICAgICAgICB0aGlzLmFwcGx5Vmlld0NvbHVtbnMoKTtcclxuICAgIH1cclxuXHJcbiAgICBhcHBseUNvbHVtbnMoKSB7XHJcbiAgICAgICAgLy90aGlzLmNvbHVtbnMuc2V0KHRoaXMuY2xvbmVkQ29sdW1ucygpKVxyXG4gICAgfVxyXG5cclxuICAgIGFwcGx5Vmlld0NvbHVtbnMoKSB7XHJcbiAgICAgICAgY29uc3QgY29scyA9IHRoaXMudmlldygpLmNvbHVtbnM7XHJcbiAgICAgICAgY29uc3QgY2xvbmVkID0gdGhpcy5hbGxBdmFpbGFibGVDb2x1bW5zKClcclxuICAgICAgICAgICAgLm1hcChjID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbCA9IG5ldyBBWFBFbnRpdHlMaXN0Vmlld0NvbHVtblZpZXdNb2RlbCh0aGlzLmVudGl0eURlZi5wcm9wZXJ0aWVzLmZpbmQocCA9PiBwLm5hbWUgPT0gYy5uYW1lKSEpXHJcbiAgICAgICAgICAgICAgICBjb2wudmlzaWJsZSA9ICFjb2xzLnNvbWUoYyA9PiBjID09IGNvbC5uYW1lKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjb2w7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5jb2x1bW5zLnNldChjbG9uZWQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vKioqKioqKioqKioqKioqKioqIFNvcnQgKioqKioqKioqKioqKioqKioqLy9cclxuXHJcbiAgICBzb3J0YWJsZUZpZWxkcyA9ICgpID0+IHtcclxuICAgICAgICBjb25zdCBwcm9wcyA9IHRoaXMuZW50aXR5RGVmLnByb3BlcnRpZXMuZmlsdGVyKGMgPT4gYy5vcHRpb25zPy5zb3J0Py5lbmFibGVkKTtcclxuICAgICAgICByZXR1cm4gcHJvcHMubWFwKGUgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogZS5uYW1lLFxyXG4gICAgICAgICAgICAgICAgdGl0bGU6IGUudGl0bGUsXHJcbiAgICAgICAgICAgICAgICBkaXI6ICdhc2MnXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfSlcclxuICAgIH07XHJcblxyXG4gICAgc29ydGFibGVGaWVsZHNDb3VudCA9ICgpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5lbnRpdHlEZWYucHJvcGVydGllcy5maWx0ZXIoYyA9PiBjLm9wdGlvbnM/LnNvcnQ/LmVuYWJsZWQpLmxlbmd0aCA/PyAwO1xyXG4gICAgfVxyXG5cclxuICAgIGNhblNvcnQgPSAoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc29ydGFibGVGaWVsZHNDb3VudCgpID4gMFxyXG4gICAgfTtcclxuXHJcbiAgICBjYW5BZGRNb3JlU29ydCA9ICgpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zb3J0ZWRDb3VudCgpIDwgdGhpcy5zb3J0YWJsZUZpZWxkc0NvdW50KCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHNvcnRlZENvdW50ID0gKCkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNvcnRlZEZpZWxkcygpLmxlbmd0aFxyXG4gICAgfTtcclxuXHJcbiAgICBzb3J0ZWRGaWVsZHMgPSBzaWduYWw8QVhQRW50aXR5TWFzdGVyTGlzdFZpZXdTb3J0UHJvcFZpZXdNb2RlbFtdPihbXSk7XHJcblxyXG4gICAgcmVzZXRTb3J0cygpIHtcclxuICAgICAgICB0aGlzLmFwcGx5Vmlld1NvcnRzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXBwbHlTb3J0cygpIHtcclxuICAgICAgICB0aGlzLmFwcGx5RmlsdGVyQW5kU29ydCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZFNvcnQoKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgcHJvcCA9IHRoaXMuc29ydGFibGVGaWVsZHMoKS5maW5kKGMgPT4gIXRoaXMuc29ydGVkRmllbGRzKCkuc29tZShzID0+IHMubmFtZSA9PSBjLm5hbWUpKVxyXG4gICAgICAgIGlmIChwcm9wKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc29ydGVkRmllbGRzLnNldChbLi4udGhpcy5zb3J0ZWRGaWVsZHMoKSwgLi4uW3Byb3BdXSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJlbW92ZVNvcnQobmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zb3J0ZWRGaWVsZHMuc2V0KHRoaXMuc29ydGVkRmllbGRzKCkuZmlsdGVyKGMgPT4gYy5uYW1lICE9IG5hbWUpKTtcclxuICAgIH1cclxuXHJcbiAgICBhcHBseVZpZXdTb3J0cygpIHtcclxuICAgICAgICBjb25zdCBmaWxlZHMgPSB0aGlzLnZpZXcoKS5zb3J0cy5tYXAoYyA9PiAoe1xyXG4gICAgICAgICAgICBuYW1lOiBjLm5hbWUsXHJcbiAgICAgICAgICAgIHRpdGxlOiBjLm5hbWUsXHJcbiAgICAgICAgICAgIGRpcjogYy5kaXIgPz8gJ2FzYydcclxuICAgICAgICB9KSk7XHJcbiAgICAgICAgdGhpcy5zb3J0ZWRGaWVsZHMuc2V0KGZpbGVkcyk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8qKioqKioqKioqKioqKioqKiogVmlld3MgKioqKioqKioqKioqKioqKioqLy9cclxuXHJcblxyXG4gICAgc2V0Vmlldyh2aWV3TmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGwpIHtcclxuICAgICAgICBpZiAodmlld05hbWUgIT0gdGhpcy52aWV3KCkubmFtZSkge1xyXG4gICAgICAgICAgICB0aGlzLnZpZXcuc2V0KHRoaXMudmlld3MoKS5maW5kKGMgPT4gYy5uYW1lID09IHZpZXdOYW1lKSA/PyB0aGlzLnZpZXdzKClbMF0pO1xyXG4gICAgICAgICAgICB0aGlzLmFwcGx5Vmlld1NvcnRzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuYXBwbHlWaWV3Q29sdW1ucygpO1xyXG4gICAgICAgICAgICB0aGlzLmFwcGx5RmlsdGVyQW5kU29ydCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB2aWV3cyA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgICBjb25zdCB2aWV3cyA9IHRoaXMuZW50aXR5RGVmLmludGVyZmFjZXM/Lm1hc3Rlcj8ubGlzdD8udmlld3MgPz8gW107XHJcbiAgICAgICAgcmV0dXJuIHZpZXdzLm1hcCh2ID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBBWFBFbnRpdHlNYXN0ZXJMaXN0Vmlld1F1ZXJ5Vmlld01vZGVsKHRoaXMuZW50aXR5RGVmLCB0aGlzLCB2KTtcclxuICAgICAgICB9KVxyXG4gICAgfSk7XHJcblxyXG4gICAgdmlldyA9IHNpZ25hbDxBWFBFbnRpdHlNYXN0ZXJMaXN0Vmlld1F1ZXJ5Vmlld01vZGVsPih0aGlzLnZpZXdzKClbMF0pO1xyXG5cclxuXHJcbiAgICAvLyoqKioqKioqKioqKioqKioqKiAgQ29tbWFuZHMgKioqKioqKioqKioqKioqKioqLy9cclxuICAgIHB1YmxpYyBhc3luYyBleGVjdXRlQ29tbWFuZChjb21tYW5kTmFtZTogc3RyaW5nLCBkYXRhOiBhbnkgPSBudWxsKSB7XHJcbiAgICAgICAgLy8gZGVidWdnZXJcclxuICAgICAgICBjb25zdCBhY3Rpb24gPSB0aGlzLmFjdGlvbnMoKS5maW5kKGMgPT4gYy5uYW1lID09IGNvbW1hbmROYW1lKTtcclxuICAgICAgICB0aGlzLndvcmtmbG93LmV4ZWN1dGUoY29tbWFuZE5hbWUsIHtcclxuICAgICAgICAgICAgcGF5bG9hZDoge1xyXG4gICAgICAgICAgICAgICAgbW9kdWxlOiB0aGlzLmVudGl0eURlZi5tb2R1bGUsXHJcbiAgICAgICAgICAgICAgICBlbnRpdHk6IHRoaXMuZW50aXR5RGVmLm5hbWUsXHJcbiAgICAgICAgICAgICAgICBkYXRhOiBhY3Rpb24/LnNjb3BlID09IEFYUEVudGl0eUNvbW1hbmRTY29wZS5TZWxlY3RlZCA/IHRoaXMuc2VsZWN0ZWRJdGVtcyA6IGRhdGFcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgfVxyXG5cclxufVxyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIEFYUEVudGl0eUxpc3RWaWV3TW9kZWxGYWN0b3J5IHtcclxuICAgIHByaXZhdGUgZW50aXR5U2VydmljZSA9IGluamVjdChBWFBFbnRpdHlEZWZpbml0aW9uUmVnaXN0cnlTZXJ2aWNlKTtcclxuICAgIHByaXZhdGUgbGF5b3V0ID0gaW5qZWN0KEFYUExheW91dFNlcnZpY2UpO1xyXG4gICAgcHJpdmF0ZSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGNyZWF0ZShtb2R1bGVOYW1lOiBzdHJpbmcsIGVudGl0eU5hbWU6IHN0cmluZyk6IFByb21pc2U8QVhQRW50aXR5TWFzdGVyTGlzdFZpZXdNb2RlbD4ge1xyXG4gICAgICAgIHRoaXMubGF5b3V0LnNldE5hdmlnYXRpb25Mb2FkaW5nKHRydWUpO1xyXG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IGF3YWl0IHRoaXMuZW50aXR5U2VydmljZS5yZXNvbHZlKG1vZHVsZU5hbWUsIGVudGl0eU5hbWUpO1xyXG4gICAgICAgIHRoaXMubGF5b3V0LnNldE5hdmlnYXRpb25Mb2FkaW5nKGZhbHNlKTtcclxuICAgICAgICByZXR1cm4gbmV3IEFYUEVudGl0eU1hc3Rlckxpc3RWaWV3TW9kZWwodGhpcy5pbmplY3RvciwgY29uZmlnKTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IEFYUEVudGl0eUxpc3RWaWV3TW9kZWxSZXNvbHZlcjogUmVzb2x2ZUZuPFByb21pc2U8QVhQRW50aXR5TWFzdGVyTGlzdFZpZXdNb2RlbD4+ID0gKFxyXG4gICAgcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXHJcbiAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCxcclxuICAgIHNlcnZpY2U6IEFYUEVudGl0eUxpc3RWaWV3TW9kZWxGYWN0b3J5ID0gaW5qZWN0KEFYUEVudGl0eUxpc3RWaWV3TW9kZWxGYWN0b3J5KVxyXG4pOiBQcm9taXNlPEFYUEVudGl0eU1hc3Rlckxpc3RWaWV3TW9kZWw+ID0+IHtcclxuICAgIGNvbnN0IGFwcE5hbWUgPSByb3V0ZS5wYXJlbnQ/LnBhcmFtTWFwLmdldCgnYXBwJykgYXMgc3RyaW5nO1xyXG4gICAgY29uc3QgbW9kdWxlTmFtZSA9IHJvdXRlLnBhcmVudD8ucGFyYW1NYXAuZ2V0KCdtb2R1bGUnKSBhcyBzdHJpbmc7XHJcbiAgICBjb25zdCBlbnRpdHlOYW1lID0gcm91dGUucGFyYW1NYXAuZ2V0KCdlbnRpdHknKSBhcyBzdHJpbmc7XHJcbiAgICAvL1xyXG4gICAgcmV0dXJuIHNlcnZpY2UuY3JlYXRlKG1vZHVsZU5hbWUsIGVudGl0eU5hbWUpO1xyXG59O1xyXG5cclxuXHJcblxyXG4iXX0=
|
|
286
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LW1hc3Rlci1saXN0LnZpZXdtb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2VudGl0eS9zcmMvbGliL2VudGl0eS1tYXN0ZXItbGlzdC52aWV3bW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBVyxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RixPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVoRixPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN4RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBb0QsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkUsT0FBTyxFQUEwQyxxQkFBcUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzFILE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBYS9CLE1BQU0sT0FBTyxxQ0FBcUM7SUFFOUMsWUFBb0IsTUFBaUIsRUFBVSxPQUFxQyxFQUFVLElBQWtCO1FBQTVGLFdBQU0sR0FBTixNQUFNLENBQVc7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUE4QjtRQUFVLFNBQUksR0FBSixJQUFJLENBQWM7UUFJaEgsU0FB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SyxDQUFDLE1BQU0sQ0FBQyxVQUFrQixFQUFFLFVBQWtCO1FBQ3RELElBQUksQ0FBQyxNQUFNLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkMsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDeEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QyxPQUFPLElBQUksNEJBQTRCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNuRSxDQUFDOzhHQVZRLDZCQUE2QjtrSEFBN0IsNkJBQTZCLGNBRGhCLE1BQU07OzJGQUNuQiw2QkFBNkI7a0JBRHpDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOztBQWNsQyxNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBcUQsQ0FDNUYsS0FBNkIsRUFDN0IsS0FBMEIsRUFDMUIsVUFBeUMsTUFBTSxDQUFDLDZCQUE2QixDQUFDLEVBQ3pDLEVBQUU7SUFDdkMsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBVyxDQUFDO0lBQzVELE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQVcsQ0FBQztJQUNsRSxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQVcsQ0FBQztJQUMxRCxFQUFFO0lBQ0YsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUNsRCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tIFwibG9kYXNoLWVzXCI7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yLCBWaWV3UmVmLCBjb21wdXRlZCwgaW5qZWN0LCBzaWduYWwgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBBWFBFbnRpdHlEZWZpbml0aW9uUmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSBcIi4vZW50aXR5LXJlZ2lzdGVyeS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIFJlc29sdmVGbiwgUm91dGVyU3RhdGVTbmFwc2hvdCB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgQVhQRW50aXR5Q29tbWFuZFRyaWdnZXJWaWV3TW9kZWwsIEFYUEVudGl0eUxpc3RWaWV3Q29sdW1uVmlld01vZGVsIH0gZnJvbSBcIi4vZW50aXR5LnZpZXdtb2RlbFwiO1xyXG5pbXBvcnQgeyBBWEZvcm1hdFNlcnZpY2UgfSBmcm9tIFwiQGFjb3JleC9jb3JlL2Zvcm1hdFwiO1xyXG5pbXBvcnQgeyBBWFBTZXNzaW9uU2VydmljZSB9IGZyb20gXCJAYWNvcmV4L3BsYXRmb3JtL2F1dGhcIjtcclxuaW1wb3J0IHsgQVhEYXRhU291cmNlLCBBWERhdGFTb3VyY2VGaWx0ZXJPcHRpb24sIEFYRGF0YVNvdXJjZVNvcnRPcHRpb24gfSBmcm9tIFwiQGFjb3JleC9jb21wb25lbnRzL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBBWFBXb3JrZmxvd1NlcnZpY2UsIG9mVHlwZSB9IGZyb20gXCJAYWNvcmV4L3BsYXRmb3JtL3dvcmtmbG93XCI7XHJcbmltcG9ydCB7IEFYUEVudGl0eSwgQVhQUXVlcnlWaWV3LCBBWFBCZWFyZENydW1iLCBBWFBFbnRpdHlDb21tYW5kU2NvcGUsIEFYUExheW91dFNlcnZpY2UgfSBmcm9tIFwiQGFjb3JleC9wbGF0Zm9ybS9jb21tb25cIjtcclxuaW1wb3J0IHsgQVhQRW50aXR5RGVsZXRlZEV2ZW50IH0gZnJvbSBcIi4vd29ya2Zsb3dzL2RlbGV0ZS1lbnRpdHkud29ya2Zsb3dcIjtcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcblxyXG5cclxuXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFYUEVudGl0eU1hc3Rlckxpc3RWaWV3U29ydFByb3BWaWV3TW9kZWwge1xyXG5cclxuICAgIG5hbWU6IHN0cmluZztcclxuICAgIHRpdGxlOiBzdHJpbmc7XHJcbiAgICBkaXI6IHN0cmluZztcclxufVxyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBBWFBFbnRpdHlNYXN0ZXJMaXN0Vmlld1F1ZXJ5Vmlld01vZGVsIHtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVudGl0eTogQVhQRW50aXR5LCBwcml2YXRlIHNlY3Rpb246IEFYUEVudGl0eU1hc3Rlckxpc3RWaWV3TW9kZWwsIHByaXZhdGUgdmlldzogQVhQUXVlcnlWaWV3KSB7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIG5hbWUgPSB0aGlzLnZpZXcubmFtZTtcclxuICAgIHRpdGxlID0gdGhpcy52aWV3LnRpdGxlO1xyXG4gICAgc29ydHMgPSB0aGlzLnZpZXcuc29ydHM7XHJcbiAgICBjb2x1bW5zID0gdGhpcy52aWV3LmNvbHVtbnM7XHJcbiAgICBjb25kaXRpb25zID0gdGhpcy52aWV3LmNvbmRpdGlvbnM7XHJcblxyXG59XHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIEFYUEVudGl0eU1hc3Rlckxpc3RWaWV3TW9kZWwge1xyXG5cclxuXHJcbiAgICBwcml2YXRlIGVudGl0eURlZiA9IGNsb25lRGVlcCh0aGlzLmNvbmZpZykhO1xyXG4gICAgcHJpdmF0ZSBfdmlld0RlZiA9IGNsb25lRGVlcCh0aGlzLmVudGl0eURlZi5pbnRlcmZhY2VzPy5tYXN0ZXI/Lmxpc3QpIVxyXG4gICAgcHJpdmF0ZSBmb3JtYXRTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoQVhGb3JtYXRTZXJ2aWNlKVxyXG4gICAgcHJpdmF0ZSBzZXNzaW9uID0gdGhpcy5pbmplY3Rvci5nZXQoQVhQU2Vzc2lvblNlcnZpY2UpO1xyXG4gICAgcHJpdmF0ZSB3b3JrZmxvdyA9IHRoaXMuaW5qZWN0b3IuZ2V0KEFYUFdvcmtmbG93U2VydmljZSk7XHJcblxyXG4gICAgcHVibGljIGV2ZW50cyQ6IFN1YmplY3Q8eyBhY3Rpb246IHN0cmluZyB9PiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG5cclxuXHJcbiAgICBkYXRhU291cmNlID0gbmV3IEFYRGF0YVNvdXJjZSh7XHJcbiAgICAgICAgYnlLZXk6IChrZXkpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZnVuYyA9IHRoaXMuZW50aXR5RGVmLnF1ZXJpZXMuYnlLZXkuZXhlY3V0ZSBhcyBGdW5jdGlvbjtcclxuICAgICAgICAgICAgcmV0dXJuIGZ1bmMoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGxvYWQ6IChlKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZ1bmMgPSB0aGlzLmVudGl0eURlZi5xdWVyaWVzLmxpc3Q/LmV4ZWN1dGUgYXMgRnVuY3Rpb247XHJcbiAgICAgICAgICAgIHJldHVybiBmdW5jKGUpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcGFnZVNpemU6IDEwLFxyXG4gICAgICAgIGtleTogJ2lkJ1xyXG5cclxuICAgIH0pXHJcblxyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgICAgIHByaXZhdGUgY29uZmlnOiBBWFBFbnRpdHlcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMud29ya2Zsb3cuZXZlbnRzJC5waXBlKG9mVHlwZShBWFBFbnRpdHlEZWxldGVkRXZlbnQpKS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgIGV2ZW50LnBheWxvYWQuZW50aXR5ID09IHRoaXMuZW50aXR5RGVmLnNvdXJjZVxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5zZXQoW10pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ldmVudHMkLm5leHQoeyBhY3Rpb246IFwicmVmcmVzaFwiIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNlbGVjdGVkSXRlbXMgPSBzaWduYWw8YW55W10+KFtdKTtcclxuXHJcbiAgICBwdWJsaWMgaGFzU2VsZWN0ZWRJdGVtcyA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEl0ZW1zKCkubGVuZ3RoID4gMFxyXG4gICAgfSk7XHJcblxyXG4gICAgcHVibGljIGNsZWFyU2VsZWN0aW9uKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5zZXQoW10pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vKioqKioqKioqKioqKioqKioqIFRpdGxlICoqKioqKioqKioqKioqKioqKi8vXHJcbiAgICBwdWJsaWMgdGl0bGUgPSBjb21wdXRlZDxzdHJpbmc+KCgpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdmlld0RlZi50aXRsZSA/PyB0aGlzLmVudGl0eURlZi5mb3JtYXRzLnBsdXJhbCE7XHJcbiAgICB9KTtcclxuICAgIC8vKioqKioqKioqKioqKioqKioqIERlc2NyaXB0aW9uICoqKioqKioqKioqKioqKioqKi8vXHJcbiAgICBwdWJsaWMgZGVzY3JpcHRpb24gPSBjb21wdXRlZDxzdHJpbmcgfCBudWxsPigoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZpZXdEZWYuZGVzY3JpcHRpb24gPz8gbnVsbDtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vKioqKioqKioqKioqKioqKioqIElubGluZSBmaWx0ZXIgKioqKioqKioqKioqKioqKioqLy9cclxuICAgIHB1YmxpYyBpbmxpbmVGaWx0ZXJzUGxhY2Vob2xkZXJzID0gY29tcHV0ZWQ8c3RyaW5nW10+KCgpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5lbnRpdHlEZWYucHJvcGVydGllcy5maWx0ZXIocCA9PiBwLm9wdGlvbnM/LmZpbHRlcj8uaW5saW5lPy5lbmFibGVkKS5tYXAoYyA9PiBjLnRpdGxlKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHB1YmxpYyBoYXNJbmxpbmVGaWx0ZXJzID0gY29tcHV0ZWQ8Ym9vbGVhbj4oKCkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmlubGluZUZpbHRlcnNQbGFjZWhvbGRlcnMoKS5sZW5ndGggPiAwO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8qKioqKioqKioqKioqKioqKiogQmVhcmRjcnVtYnMgKioqKioqKioqKioqKioqKioqLy9cclxuICAgIHB1YmxpYyBiZWFyZGNydW1icyA9IGNvbXB1dGVkPEFYUEJlYXJkQ3J1bWJbXT4oKCkgPT4ge1xyXG4gICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBcIkhvbWVcIixcclxuICAgICAgICAgICAgICAgIGljb246IFwiZmEtc29saWQgZmEtaG9tZSBheC10ZXh0LXhzIGF4LW1lLTJcIixcclxuICAgICAgICAgICAgICAgIHVybDogW2AvJHt0aGlzLnNlc3Npb24uYXBwbGljYXRpb24/Lm5hbWV9YF1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRoaXMudGl0bGUoKSxcclxuICAgICAgICAgICAgICAgIHVybDogW2AvJHt0aGlzLnNlc3Npb24uYXBwbGljYXRpb24/Lm5hbWV9YCwgJ20nLCBgJHt0aGlzLmVudGl0eURlZi5tb2R1bGV9YCwgJ2UnLCBgJHt0aGlzLmVudGl0eURlZi5uYW1lfWAsICdsaXN0J11cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIF1cclxuICAgIH0pO1xyXG5cclxuICAgIC8vKioqKioqKioqKioqKioqKioqIEFjdGlvbnMgKioqKioqKioqKioqKioqKioqLy9cclxuICAgIHByaXZhdGUgYWN0aW9ucyA9IGNvbXB1dGVkPEFYUEVudGl0eUNvbW1hbmRUcmlnZ2VyVmlld01vZGVsW10+KCgpID0+IHtcclxuICAgICAgICBjb25zdCBsaXN0ID0gdGhpcy5lbnRpdHlEZWYuaW50ZXJmYWNlcz8ubWFzdGVyPy5saXN0Py5hY3Rpb25zID8/IFtdO1xyXG4gICAgICAgIHJldHVybiBsaXN0XHJcbiAgICAgICAgICAgIC5maWx0ZXIoYSA9PlxyXG4gICAgICAgICAgICAgICAgKGEuc2NvcGUgPT0gQVhQRW50aXR5Q29tbWFuZFNjb3BlLlNlbGVjdGVkICYmIHRoaXMuaGFzU2VsZWN0ZWRJdGVtcygpKSB8fFxyXG4gICAgICAgICAgICAgICAgKGEuc2NvcGUgIT0gQVhQRW50aXR5Q29tbWFuZFNjb3BlLlNlbGVjdGVkICYmICF0aGlzLmhhc1NlbGVjdGVkSXRlbXMoKSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAubWFwKCh0cikgPT4gbmV3IEFYUEVudGl0eUNvbW1hbmRUcmlnZ2VyVmlld01vZGVsKHRoaXMuZW50aXR5RGVmLCB0cikpID8/IFtdO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcHVibGljIHByaW1hcnlBY3Rpb25zID0gY29tcHV0ZWQ8QVhQRW50aXR5Q29tbWFuZFRyaWdnZXJWaWV3TW9kZWxbXT4oKCkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFjdGlvbnMoKS5maWx0ZXIoYyA9PiBjLnByaW9yaXR5ID09ICdwcmltYXJ5Jyk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBwdWJsaWMgc2Vjb25kYXJ5QWN0aW9ucyA9IGNvbXB1dGVkPEFYUEVudGl0eUNvbW1hbmRUcmlnZ2VyVmlld01vZGVsW10+KCgpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5hY3Rpb25zKCkuZmlsdGVyKGMgPT4gYy5wcmlvcml0eSA9PSAnc2Vjb25kYXJ5Jyk7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyoqKioqKioqKioqKioqKioqKiBGaWx0ZXIgKioqKioqKioqKioqKioqKioqLy9cclxuXHJcbiAgICBwcml2YXRlIGlubGluZUZpbHRlcnM6IEFYRGF0YVNvdXJjZUZpbHRlck9wdGlvbiA9IHtcclxuICAgICAgICBmaWVsZDogbnVsbCBhcyBhbnksXHJcbiAgICAgICAgbG9naWM6ICdvcicsXHJcbiAgICAgICAgb3BlcmF0b3I6IG51bGwgYXMgYW55LFxyXG4gICAgICAgIGZpbHRlcnM6IFtdXHJcbiAgICB9O1xyXG5cclxuICAgIHByaXZhdGUgYWR2YW5jZUZpbHRlcnM6IEFYRGF0YVNvdXJjZUZpbHRlck9wdGlvbiA9IHtcclxuICAgICAgICBmaWVsZDogbnVsbCBhcyBhbnksXHJcbiAgICAgICAgbG9naWM6ICdhbmQnLFxyXG4gICAgICAgIG9wZXJhdG9yOiBudWxsIGFzIGFueSxcclxuICAgICAgICBmaWx0ZXJzOiBbXVxyXG4gICAgfTtcclxuXHJcbiAgICBhcHBseUlubGluZUZpbHRlcih2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICAgICAgY29uc3QgcHJvcHMgPSB0aGlzLmVudGl0eURlZi5wcm9wZXJ0aWVzLmZpbHRlcihjID0+IGMub3B0aW9ucz8uZmlsdGVyPy5pbmxpbmU/LmVuYWJsZWQpO1xyXG4gICAgICAgIHRoaXMuaW5saW5lRmlsdGVycy5maWx0ZXJzID0gW107XHJcbiAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHByb3BzLmZvckVhY2gocCA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlubGluZUZpbHRlcnMuZmlsdGVycz8ucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgZmllbGQ6IHAubmFtZSxcclxuICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnY29udGFpbnMnXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5hcHBseUZpbHRlckFuZFNvcnQoKTtcclxuICAgIH1cclxuXHJcbiAgICBhcHBseUZpbHRlckFuZFNvcnQoKSB7XHJcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLmNsZWFyRmlsdGVyKCk7XHJcbiAgICAgICAgLy9cclxuICAgICAgICB0aGlzLmRhdGFTb3VyY2Uuc29ydCguLi50aGlzLnNvcnRlZEZpZWxkcygpLm1hcChzID0+ICh7IGRpcjogcy5kaXIsIGZpZWxkOiBzLm5hbWUgfSBhcyBBWERhdGFTb3VyY2VTb3J0T3B0aW9uKSkpO1xyXG4gICAgICAgIC8vXHJcbiAgICAgICAgY29uc3QgaW5saW5lID0gdGhpcy5pbmxpbmVGaWx0ZXJzLmZpbHRlcnM/Lmxlbmd0aCA/PyAwO1xyXG4gICAgICAgIGNvbnN0IGFkdmFuY2UgPSB0aGlzLmFkdmFuY2VGaWx0ZXJzLmZpbHRlcnM/Lmxlbmd0aCA/PyAwO1xyXG4gICAgICAgIGlmIChpbmxpbmUgJiYgIWFkdmFuY2UpIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlLmZpbHRlcih0aGlzLmlubGluZUZpbHRlcnMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICghaW5saW5lICYmIGFkdmFuY2UpIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlLmZpbHRlcih0aGlzLmFkdmFuY2VGaWx0ZXJzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaW5saW5lICYmIGFkdmFuY2UpIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlLmZpbHRlcih7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogbnVsbCBhcyBhbnksXHJcbiAgICAgICAgICAgICAgICBsb2dpYzogJ2FuZCcsXHJcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogbnVsbCBhcyBhbnksXHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbdGhpcy5pbmxpbmVGaWx0ZXJzLCB0aGlzLmFkdmFuY2VGaWx0ZXJzXVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy9cclxuICAgICAgICB0aGlzLmRhdGFTb3VyY2UucmVmcmVzaCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vKioqKioqKioqKioqKioqKioqIENvbHVtbnMgKioqKioqKioqKioqKioqKioqLy9cclxuXHJcbiAgICBwcml2YXRlIGFsbEF2YWlsYWJsZUNvbHVtbnMgPSAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgY29sdW1ucyA9IHRoaXMuZW50aXR5RGVmLmNvbHVtbnM/Lm1hcChjID0+IGMubmFtZSkgPz8gW107XHJcbiAgICAgICAgY29uc3QgcHJvcHMgPSB0aGlzLmVudGl0eURlZi5wcm9wZXJ0aWVzLmZpbHRlcihwID0+IHAuc2NoZW1hLmhpZGRlbiAhPSB0cnVlKVxyXG4gICAgICAgIGNvbnN0IGRpc3BsYXlDb2x1bW5zID0gcHJvcHMuZmlsdGVyKHAgPT4gY29sdW1ucy5zb21lKGMgPT4gYyA9PSBwLm5hbWUpKTtcclxuICAgICAgICByZXR1cm4gZGlzcGxheUNvbHVtbnMubWFwKHAgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IEFYUEVudGl0eUxpc3RWaWV3Q29sdW1uVmlld01vZGVsKHAsIHRoaXMuZW50aXR5RGVmLmNvbHVtbnM/LmZpbmQoYyA9PiBjLm5hbWUgPT0gcC5uYW1lKSEpO1xyXG4gICAgICAgIH0pXHJcbiAgICB9O1xyXG5cclxuICAgIHZpc2libGVDb2x1bW5Db3VudCA9ICgpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jb2x1bW5zKCkuZmlsdGVyKGMgPT4gYy52aXNpYmxlID09IHRydWUpLmxlbmd0aDtcclxuICAgIH07XHJcblxyXG4gICAgY29sdW1ucyA9IHNpZ25hbDxBWFBFbnRpdHlMaXN0Vmlld0NvbHVtblZpZXdNb2RlbFtdPihbXSk7XHJcblxyXG4gICAgcmVzZXRDb2x1bW5zKCkge1xyXG4gICAgICAgIHRoaXMuYXBwbHlWaWV3Q29sdW1ucygpO1xyXG4gICAgfVxyXG5cclxuICAgIGFwcGx5Q29sdW1ucygpIHtcclxuICAgICAgICAvL3RoaXMuY29sdW1ucy5zZXQodGhpcy5jbG9uZWRDb2x1bW5zKCkpXHJcbiAgICB9XHJcblxyXG4gICAgYXBwbHlWaWV3Q29sdW1ucygpIHtcclxuICAgICAgICBjb25zdCBjb2xzID0gdGhpcy52aWV3KCkuY29sdW1ucztcclxuICAgICAgICBjb25zdCBjbG9uZWQgPSB0aGlzLmFsbEF2YWlsYWJsZUNvbHVtbnMoKVxyXG4gICAgICAgICAgICAubWFwKGMgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY29sdW1uID0gdGhpcy5lbnRpdHlEZWYuY29sdW1ucz8uZmluZChjYyA9PiBjYy5uYW1lID09IGMubmFtZSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwcm9wID0gdGhpcy5lbnRpdHlEZWYucHJvcGVydGllcy5maW5kKHAgPT4gcC5uYW1lID09IGMubmFtZSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb2wgPSBuZXcgQVhQRW50aXR5TGlzdFZpZXdDb2x1bW5WaWV3TW9kZWwocHJvcCEsIGNvbHVtbiEpO1xyXG4gICAgICAgICAgICAgICAgY29sLnZpc2libGUgPSAhY29scy5zb21lKGMgPT4gYyA9PSBjb2wubmFtZSkgJiYgY29sLnZpc2libGUgIT0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY29sO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuY29sdW1ucy5zZXQoY2xvbmVkKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyoqKioqKioqKioqKioqKioqKiBTb3J0ICoqKioqKioqKioqKioqKioqKi8vXHJcblxyXG4gICAgc29ydGFibGVGaWVsZHMgPSAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgcHJvcHMgPSB0aGlzLmVudGl0eURlZi5wcm9wZXJ0aWVzLmZpbHRlcihjID0+IGMub3B0aW9ucz8uc29ydD8uZW5hYmxlZCk7XHJcbiAgICAgICAgcmV0dXJuIHByb3BzLm1hcChlID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIG5hbWU6IGUubmFtZSxcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBlLnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgZGlyOiAnYXNjJ1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH0pXHJcbiAgICB9O1xyXG5cclxuICAgIHNvcnRhYmxlRmllbGRzQ291bnQgPSAoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZW50aXR5RGVmLnByb3BlcnRpZXMuZmlsdGVyKGMgPT4gYy5vcHRpb25zPy5zb3J0Py5lbmFibGVkKS5sZW5ndGggPz8gMDtcclxuICAgIH1cclxuXHJcbiAgICBjYW5Tb3J0ID0gKCkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNvcnRhYmxlRmllbGRzQ291bnQoKSA+IDBcclxuICAgIH07XHJcblxyXG4gICAgY2FuQWRkTW9yZVNvcnQgPSAoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc29ydGVkQ291bnQoKSA8IHRoaXMuc29ydGFibGVGaWVsZHNDb3VudCgpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBzb3J0ZWRDb3VudCA9ICgpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zb3J0ZWRGaWVsZHMoKS5sZW5ndGhcclxuICAgIH07XHJcblxyXG4gICAgc29ydGVkRmllbGRzID0gc2lnbmFsPEFYUEVudGl0eU1hc3Rlckxpc3RWaWV3U29ydFByb3BWaWV3TW9kZWxbXT4oW10pO1xyXG5cclxuICAgIHJlc2V0U29ydHMoKSB7XHJcbiAgICAgICAgdGhpcy5hcHBseVZpZXdTb3J0cygpO1xyXG4gICAgfVxyXG5cclxuICAgIGFwcGx5U29ydHMoKSB7XHJcbiAgICAgICAgdGhpcy5hcHBseUZpbHRlckFuZFNvcnQoKTtcclxuICAgIH1cclxuXHJcbiAgICBhZGRTb3J0KCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHByb3AgPSB0aGlzLnNvcnRhYmxlRmllbGRzKCkuZmluZChjID0+ICF0aGlzLnNvcnRlZEZpZWxkcygpLnNvbWUocyA9PiBzLm5hbWUgPT0gYy5uYW1lKSlcclxuICAgICAgICBpZiAocHJvcCkge1xyXG4gICAgICAgICAgICB0aGlzLnNvcnRlZEZpZWxkcy5zZXQoWy4uLnRoaXMuc29ydGVkRmllbGRzKCksIC4uLltwcm9wXV0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVTb3J0KG5hbWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc29ydGVkRmllbGRzLnNldCh0aGlzLnNvcnRlZEZpZWxkcygpLmZpbHRlcihjID0+IGMubmFtZSAhPSBuYW1lKSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXBwbHlWaWV3U29ydHMoKSB7XHJcbiAgICAgICAgY29uc3QgZmlsZWRzID0gdGhpcy52aWV3KCkuc29ydHMubWFwKGMgPT4gKHtcclxuICAgICAgICAgICAgbmFtZTogYy5uYW1lLFxyXG4gICAgICAgICAgICB0aXRsZTogYy5uYW1lLFxyXG4gICAgICAgICAgICBkaXI6IGMuZGlyID8/ICdhc2MnXHJcbiAgICAgICAgfSkpO1xyXG4gICAgICAgIHRoaXMuc29ydGVkRmllbGRzLnNldChmaWxlZHMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vKioqKioqKioqKioqKioqKioqIFZpZXdzICoqKioqKioqKioqKioqKioqKi8vXHJcblxyXG5cclxuICAgIHNldFZpZXcodmlld05hbWU6IHN0cmluZyB8IG51bGwgPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKHZpZXdOYW1lICE9IHRoaXMudmlldygpLm5hbWUpIHtcclxuICAgICAgICAgICAgdGhpcy52aWV3LnNldCh0aGlzLnZpZXdzKCkuZmluZChjID0+IGMubmFtZSA9PSB2aWV3TmFtZSkgPz8gdGhpcy52aWV3cygpWzBdKTtcclxuICAgICAgICAgICAgdGhpcy5hcHBseVZpZXdTb3J0cygpO1xyXG4gICAgICAgICAgICB0aGlzLmFwcGx5Vmlld0NvbHVtbnMoKTtcclxuICAgICAgICAgICAgdGhpcy5hcHBseUZpbHRlckFuZFNvcnQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdmlld3MgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICAgICAgY29uc3Qgdmlld3MgPSB0aGlzLmVudGl0eURlZi5pbnRlcmZhY2VzPy5tYXN0ZXI/Lmxpc3Q/LnZpZXdzID8/IFtdO1xyXG4gICAgICAgIHJldHVybiB2aWV3cy5tYXAodiA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgQVhQRW50aXR5TWFzdGVyTGlzdFZpZXdRdWVyeVZpZXdNb2RlbCh0aGlzLmVudGl0eURlZiwgdGhpcywgdik7XHJcbiAgICAgICAgfSlcclxuICAgIH0pO1xyXG5cclxuICAgIHZpZXcgPSBzaWduYWw8QVhQRW50aXR5TWFzdGVyTGlzdFZpZXdRdWVyeVZpZXdNb2RlbD4odGhpcy52aWV3cygpWzBdKTtcclxuXHJcblxyXG4gICAgLy8qKioqKioqKioqKioqKioqKiogIENvbW1hbmRzICoqKioqKioqKioqKioqKioqKi8vXHJcbiAgICBwdWJsaWMgYXN5bmMgZXhlY3V0ZUNvbW1hbmQoY29tbWFuZE5hbWU6IHN0cmluZywgZGF0YTogYW55ID0gbnVsbCkge1xyXG4gICAgICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuYWN0aW9ucygpLmZpbmQoYyA9PiBjLm5hbWUgPT0gY29tbWFuZE5hbWUpO1xyXG4gICAgICAgIGF3YWl0IHRoaXMud29ya2Zsb3cuZXhlY3V0ZShjb21tYW5kTmFtZSwge1xyXG4gICAgICAgICAgICBlbnRpdHk6IHRoaXMuZW50aXR5RGVmLnNvdXJjZSxcclxuICAgICAgICAgICAgZGF0YTogYWN0aW9uPy5zY29wZSA9PSBBWFBFbnRpdHlDb21tYW5kU2NvcGUuU2VsZWN0ZWQgPyB0aGlzLnNlbGVjdGVkSXRlbXMoKSA6IGRhdGFcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxufVxyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIEFYUEVudGl0eUxpc3RWaWV3TW9kZWxGYWN0b3J5IHtcclxuICAgIHByaXZhdGUgZW50aXR5U2VydmljZSA9IGluamVjdChBWFBFbnRpdHlEZWZpbml0aW9uUmVnaXN0cnlTZXJ2aWNlKTtcclxuICAgIHByaXZhdGUgbGF5b3V0ID0gaW5qZWN0KEFYUExheW91dFNlcnZpY2UpO1xyXG4gICAgcHJpdmF0ZSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGNyZWF0ZShtb2R1bGVOYW1lOiBzdHJpbmcsIGVudGl0eU5hbWU6IHN0cmluZyk6IFByb21pc2U8QVhQRW50aXR5TWFzdGVyTGlzdFZpZXdNb2RlbD4ge1xyXG4gICAgICAgIHRoaXMubGF5b3V0LnNldE5hdmlnYXRpb25Mb2FkaW5nKHRydWUpO1xyXG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IGF3YWl0IHRoaXMuZW50aXR5U2VydmljZS5yZXNvbHZlKG1vZHVsZU5hbWUsIGVudGl0eU5hbWUpO1xyXG4gICAgICAgIHRoaXMubGF5b3V0LnNldE5hdmlnYXRpb25Mb2FkaW5nKGZhbHNlKTtcclxuICAgICAgICByZXR1cm4gbmV3IEFYUEVudGl0eU1hc3Rlckxpc3RWaWV3TW9kZWwodGhpcy5pbmplY3RvciwgY29uZmlnKTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IEFYUEVudGl0eUxpc3RWaWV3TW9kZWxSZXNvbHZlcjogUmVzb2x2ZUZuPFByb21pc2U8QVhQRW50aXR5TWFzdGVyTGlzdFZpZXdNb2RlbD4+ID0gKFxyXG4gICAgcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXHJcbiAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCxcclxuICAgIHNlcnZpY2U6IEFYUEVudGl0eUxpc3RWaWV3TW9kZWxGYWN0b3J5ID0gaW5qZWN0KEFYUEVudGl0eUxpc3RWaWV3TW9kZWxGYWN0b3J5KVxyXG4pOiBQcm9taXNlPEFYUEVudGl0eU1hc3Rlckxpc3RWaWV3TW9kZWw+ID0+IHtcclxuICAgIGNvbnN0IGFwcE5hbWUgPSByb3V0ZS5wYXJlbnQ/LnBhcmFtTWFwLmdldCgnYXBwJykgYXMgc3RyaW5nO1xyXG4gICAgY29uc3QgbW9kdWxlTmFtZSA9IHJvdXRlLnBhcmVudD8ucGFyYW1NYXAuZ2V0KCdtb2R1bGUnKSBhcyBzdHJpbmc7XHJcbiAgICBjb25zdCBlbnRpdHlOYW1lID0gcm91dGUucGFyYW1NYXAuZ2V0KCdlbnRpdHknKSBhcyBzdHJpbmc7XHJcbiAgICAvL1xyXG4gICAgcmV0dXJuIHNlcnZpY2UuY3JlYXRlKG1vZHVsZU5hbWUsIGVudGl0eU5hbWUpO1xyXG59O1xyXG5cclxuXHJcblxyXG4iXX0=
|
|
@@ -9,36 +9,39 @@ import { AXPEntityDeletedEvent } from "./workflows/delete-entity.workflow";
|
|
|
9
9
|
import { AXPEntityModifyEvent } from "./workflows/modify-section.workflow";
|
|
10
10
|
import { AXPEntityDetailListViewModel } from "./entity-detail-list.viewmodel";
|
|
11
11
|
import { AXPEntityCommandScope, AXPLayoutService } from "@acorex/platform/common";
|
|
12
|
+
import { Subject } from "rxjs";
|
|
12
13
|
import * as i0 from "@angular/core";
|
|
13
14
|
export class AXPEntityMasterSingleViewGroupViewModel {
|
|
14
|
-
constructor(entity,
|
|
15
|
+
constructor(entity, section) {
|
|
15
16
|
this.entity = entity;
|
|
16
|
-
this.
|
|
17
|
+
this.section = section;
|
|
18
|
+
this.group = this.entity.groups?.find(c => c.id == this.section.id);
|
|
17
19
|
this.name = signal(this.group.id);
|
|
18
20
|
this.isLoading = signal(false);
|
|
19
21
|
this.title = computed(() => {
|
|
20
|
-
|
|
21
|
-
return this.group.title;
|
|
22
|
-
return this.group.id;
|
|
22
|
+
return this.group.title ?? this.group.id;
|
|
23
23
|
});
|
|
24
24
|
this.description = computed(() => {
|
|
25
|
-
|
|
26
|
-
return this.group.description;
|
|
27
|
-
return null;
|
|
25
|
+
return this.group.description;
|
|
28
26
|
});
|
|
29
27
|
this.layout = computed(() => {
|
|
30
|
-
const source = cloneDeep(this.
|
|
28
|
+
const source = cloneDeep(this.section.layout ?? {});
|
|
31
29
|
set(source, "positions.default.colSpan", 12);
|
|
32
30
|
return source;
|
|
33
31
|
});
|
|
34
32
|
this.props = computed(() => {
|
|
35
|
-
const props = this.entity.properties.filter(c => c.groupId == this.group.id &&
|
|
36
|
-
|
|
33
|
+
const props = this.entity.properties.filter(c => c.groupId == this.group.id &&
|
|
34
|
+
c.schema.hidden != true).map(c => c.name);
|
|
35
|
+
const viewProps = this.entity.interfaces?.master?.single?.properties?.filter(c => props.includes(c.name)) ?? [];
|
|
36
|
+
return viewProps.map(e => {
|
|
37
37
|
return new AXPEntityMasterSingleElementViewModel(this.entity, this, e);
|
|
38
38
|
});
|
|
39
39
|
});
|
|
40
40
|
this.editableProps = computed(() => {
|
|
41
|
-
const
|
|
41
|
+
const editableProps = this.entity.interfaces?.master?.update?.properties?.map(c => c.name) ?? [];
|
|
42
|
+
const props = this.entity.properties.filter(c => c.groupId == this.group.id &&
|
|
43
|
+
c.schema.hidden != true &&
|
|
44
|
+
editableProps.includes(c.name));
|
|
42
45
|
return props.map(e => {
|
|
43
46
|
return new AXPEntityMasterSingleElementViewModel(this.entity, this, e);
|
|
44
47
|
});
|
|
@@ -49,16 +52,17 @@ export class AXPEntityMasterSingleViewGroupViewModel {
|
|
|
49
52
|
}
|
|
50
53
|
}
|
|
51
54
|
export class AXPEntityMasterSingleElementViewModel {
|
|
52
|
-
constructor(entity, section,
|
|
55
|
+
constructor(entity, section, propertyView) {
|
|
53
56
|
this.entity = entity;
|
|
54
57
|
this.section = section;
|
|
55
|
-
this.
|
|
58
|
+
this.propertyView = propertyView;
|
|
59
|
+
this.property = this.entity.properties.find(c => c.name == this.propertyView.name);
|
|
56
60
|
this.name = signal(this.property.name);
|
|
57
61
|
this.title = signal(this.property.title);
|
|
58
62
|
this.description = signal(this.property.description);
|
|
59
|
-
this.order = signal(this.property.options?.view?.layout?.order ?? 0);
|
|
60
63
|
this.layout = computed(() => {
|
|
61
|
-
const
|
|
64
|
+
const viewProp = this.entity.interfaces?.master?.single?.properties?.find(c => c.name == this.property.name);
|
|
65
|
+
const source = cloneDeep(viewProp?.layout ?? {});
|
|
62
66
|
set(source, "positions.default.colSpan", 12);
|
|
63
67
|
return source;
|
|
64
68
|
});
|
|
@@ -71,7 +75,9 @@ export class AXPEntityMasterSingleElementViewModel {
|
|
|
71
75
|
path: this.name(),
|
|
72
76
|
children: widget.children,
|
|
73
77
|
formula: widget.formula,
|
|
74
|
-
options: merge(schema.interface?.options,
|
|
78
|
+
options: merge(schema.interface?.options,
|
|
79
|
+
//this.property.options?.create?.widget,
|
|
80
|
+
{ validationRules: this.property.validations })
|
|
75
81
|
};
|
|
76
82
|
});
|
|
77
83
|
}
|
|
@@ -86,6 +92,7 @@ export class AXPEntityMasterSingleViewModel {
|
|
|
86
92
|
this.session = this.injector.get(AXPSessionService);
|
|
87
93
|
this.formatService = this.injector.get(AXFormatService);
|
|
88
94
|
this.workflow = this.injector.get(AXPWorkflowService);
|
|
95
|
+
this.events$ = new Subject();
|
|
89
96
|
this.context = signal(cloneDeep(this.entityData));
|
|
90
97
|
this.actions = computed(() => {
|
|
91
98
|
return this.entityDef.interfaces?.master?.single?.actions?.map((tr) => new AXPEntityCommandTriggerViewModel(this.entityDef, tr)) ?? [];
|
|
@@ -97,8 +104,11 @@ export class AXPEntityMasterSingleViewModel {
|
|
|
97
104
|
return this.actions().filter(c => c.priority == 'secondary');
|
|
98
105
|
});
|
|
99
106
|
this.sections = computed(() => {
|
|
100
|
-
const
|
|
101
|
-
const
|
|
107
|
+
const viewProps = this.entityDef.interfaces?.master?.single?.properties?.map(c => c.name);
|
|
108
|
+
const props = this.entityDef.properties.filter(c => c.groupId &&
|
|
109
|
+
c.schema.hidden != true &&
|
|
110
|
+
viewProps?.includes(c.name));
|
|
111
|
+
const groups = this.entityDef.interfaces?.master?.single?.sections?.filter(g => props.some(p => p.groupId == g.id)) ?? [];
|
|
102
112
|
const result = groups?.map((section) => {
|
|
103
113
|
return new AXPEntityMasterSingleViewGroupViewModel(this.entityDef, section);
|
|
104
114
|
});
|
|
@@ -137,24 +147,17 @@ export class AXPEntityMasterSingleViewModel {
|
|
|
137
147
|
return this.entityDef.relatedEntities?.map(re => new AXPEntityDetailListViewModel(this.injector, re, { entity: this.entityDef, data: this.entityData })) ?? [];
|
|
138
148
|
});
|
|
139
149
|
this.workflow.events$.pipe(ofType(AXPEntityDeletedEvent)).subscribe((event) => {
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
// payload: {
|
|
147
|
-
// module: this.loader.entity.module,
|
|
148
|
-
// entity: this.loader.entity.name,
|
|
149
|
-
// },
|
|
150
|
-
// });
|
|
151
|
-
//}
|
|
150
|
+
if (event.payload.entity == this.entityDef.source &&
|
|
151
|
+
event.payload.ids.includes(this.context().id)) {
|
|
152
|
+
this.workflow.execute('show-list-view', {
|
|
153
|
+
entity: this.entityDef.source
|
|
154
|
+
});
|
|
155
|
+
}
|
|
152
156
|
});
|
|
153
157
|
this.workflow.events$.pipe(ofType(AXPEntityModifyEvent)).subscribe(async (event) => {
|
|
154
|
-
if (event.payload.entity == this.entityDef.
|
|
155
|
-
event.payload.
|
|
156
|
-
|
|
157
|
-
this.context.set(event.payload.updateValues);
|
|
158
|
+
if (event.payload.entity == this.entityDef.source &&
|
|
159
|
+
event.payload.values.id === this.context().id) {
|
|
160
|
+
this.context.set(event.payload.values);
|
|
158
161
|
}
|
|
159
162
|
});
|
|
160
163
|
}
|
|
@@ -164,18 +167,16 @@ export class AXPEntityMasterSingleViewModel {
|
|
|
164
167
|
switch (commandName) {
|
|
165
168
|
case 'delete-entity':
|
|
166
169
|
this.workflow.execute('delete-entity', {
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
ids: [this.context().id],
|
|
170
|
+
entity: this.entityDef.source,
|
|
171
|
+
data: [this.context()],
|
|
170
172
|
});
|
|
171
173
|
break;
|
|
172
174
|
case 'modify-entity-section': {
|
|
173
175
|
this.workflow.execute('modify-entity-section', {
|
|
174
|
-
|
|
176
|
+
entity: this.entityDef.source,
|
|
177
|
+
data: {
|
|
178
|
+
id: this.context().id,
|
|
175
179
|
properties: data.editableProps().map(m => m.name()),
|
|
176
|
-
id: this.entityData.id,
|
|
177
|
-
module: this.entityDef.module,
|
|
178
|
-
entity: this.entityDef.name,
|
|
179
180
|
},
|
|
180
181
|
});
|
|
181
182
|
break;
|
|
@@ -184,11 +185,8 @@ export class AXPEntityMasterSingleViewModel {
|
|
|
184
185
|
{
|
|
185
186
|
const action = this.actions().find(c => c.name == commandName);
|
|
186
187
|
this.workflow.execute(commandName, {
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
entity: this.entityDef.name,
|
|
190
|
-
data: action?.scope == AXPEntityCommandScope.Individual ? data : null
|
|
191
|
-
}
|
|
188
|
+
entity: this.entityDef.source,
|
|
189
|
+
data: action?.scope == AXPEntityCommandScope.Individual ? data : null
|
|
192
190
|
});
|
|
193
191
|
}
|
|
194
192
|
}
|
|
@@ -220,11 +218,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
|
|
|
220
218
|
args: [{ providedIn: 'root' }]
|
|
221
219
|
}] });
|
|
222
220
|
export const AXPEntityDetailViewModelResolver = (route, state, service = inject(AXPEntityDetailViewModelFactory)) => {
|
|
223
|
-
const appName = route.parent?.paramMap.get('app');
|
|
224
221
|
const moduleName = route.parent?.paramMap.get('module');
|
|
225
222
|
const entityName = route.paramMap.get('entity');
|
|
226
223
|
const id = route.paramMap.get('id');
|
|
227
224
|
//
|
|
228
225
|
return service.create(moduleName, entityName, id);
|
|
229
226
|
};
|
|
230
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LW1hc3Rlci1zaW5nbGUudmlld21vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvZW50aXR5L3NyYy9saWIvZW50aXR5LW1hc3Rlci1zaW5nbGUudmlld21vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXRFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzlFLE9BQU8sRUFBNEIscUJBQXFCLEVBQW1FLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBRzdLLE1BQU0sT0FBTyx1Q0FBdUM7SUFFaEQsWUFBb0IsTUFBaUIsRUFBVSxLQUE2QjtRQUF4RCxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQVUsVUFBSyxHQUFMLEtBQUssQ0FBd0I7UUFJNUUsU0FBSSxHQUFHLE1BQU0sQ0FBQyxJ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QUFJLENBQVcsQ0FBQztJQUM5QyxFQUFFO0lBQ0YsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDdEQsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhGb3JtYXRTZXJ2aWNlIH0gZnJvbSBcIkBhY29yZXgvY29yZS9mb3JtYXRcIjtcclxuaW1wb3J0IHsgY2xvbmVEZWVwLCBtZXJnZSwgc2V0IH0gZnJvbSBcImxvZGFzaC1lc1wiO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciwgY29tcHV0ZWQsIGluamVjdCwgc2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgUmVzb2x2ZUZuLCBSb3V0ZXJTdGF0ZVNuYXBzaG90IH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBBWFBXb3JrZmxvd1NlcnZpY2UsIG9mVHlwZSB9IGZyb20gXCJAYWNvcmV4L3BsYXRmb3JtL3dvcmtmbG93XCI7XHJcbmltcG9ydCB7IEFYUFNlc3Npb25TZXJ2aWNlIH0gZnJvbSBcIkBhY29yZXgvcGxhdGZvcm0vYXV0aFwiO1xyXG5pbXBvcnQgeyBBWFBFbnRpdHlEZWZpbml0aW9uUmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSBcIi4vZW50aXR5LXJlZ2lzdGVyeS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEFYUEVudGl0eUNvbW1hbmRUcmlnZ2VyVmlld01vZGVsIH0gZnJvbSBcIi4vZW50aXR5LnZpZXdtb2RlbFwiO1xyXG5pbXBvcnQgeyBBWFBXaWRnZXROb2RlIH0gZnJvbSBcIkBhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXJcIjtcclxuaW1wb3J0IHsgQVhQRW50aXR5RGVsZXRlZEV2ZW50IH0gZnJvbSBcIi4vd29ya2Zsb3dzL2RlbGV0ZS1lbnRpdHkud29ya2Zsb3dcIjtcclxuaW1wb3J0IHsgQVhQRW50aXR5TW9kaWZ5RXZlbnQgfSBmcm9tIFwiLi93b3JrZmxvd3MvbW9kaWZ5LXNlY3Rpb24ud29ya2Zsb3dcIjtcclxuaW1wb3J0IHsgQVhQRW50aXR5RGV0YWlsTGlzdFZpZXdNb2RlbCB9IGZyb20gXCIuL2VudGl0eS1kZXRhaWwtbGlzdC52aWV3bW9kZWxcIjtcclxuaW1wb3J0IHsgQVhQQmVhcmRDcnVtYiwgQVhQRW50aXR5LCBBWFBFbnRpdHlDb21tYW5kU2NvcGUsIEFYUEVudGl0eVByb3BlcnR5LCBBWFBFbnRpdHlQcm9wZXJ0eUdyb3VwLCBBWFBHcmlkTGF5b3V0T3B0aW9ucywgQVhQTGF5b3V0U2VydmljZSB9IGZyb20gXCJAYWNvcmV4L3BsYXRmb3JtL2NvbW1vblwiO1xyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBBWFBFbnRpdHlNYXN0ZXJTaW5nbGVWaWV3R3JvdXBWaWV3TW9kZWwge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZW50aXR5OiBBWFBFbnRpdHksIHByaXZhdGUgZ3JvdXA6IEFYUEVudGl0eVByb3BlcnR5R3JvdXApIHtcclxuICAgIH1cclxuXHJcblxyXG4gICAgbmFtZSA9IHNpZ25hbCh0aGlzLmdyb3VwLmlkKTtcclxuICAgIGlzTG9hZGluZyA9IHNpZ25hbChmYWxzZSk7XHJcblxyXG4gICAgdGl0bGUgPSBjb21wdXRlZDxzdHJpbmc+KCgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5ncm91cC50aXRsZSlcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ3JvdXAudGl0bGU7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JvdXAuaWQ7XHJcbiAgICB9KTtcclxuXHJcbiAgICBkZXNjcmlwdGlvbiA9IGNvbXB1dGVkPHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ+KCgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5ncm91cC5kZXNjcmlwdGlvbilcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ3JvdXAuZGVzY3JpcHRpb247XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9KTtcclxuXHJcbiAgICBsYXlvdXQgPSBjb21wdXRlZDxBWFBHcmlkTGF5b3V0T3B0aW9ucz4oKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHNvdXJjZSA9IGNsb25lRGVlcCh0aGlzLmdyb3VwLmxheW91dCA/PyB7fSkgYXMgb2JqZWN0O1xyXG4gICAgICAgIHNldChzb3VyY2UsIFwicG9zaXRpb25zLmRlZmF1bHQuY29sU3BhblwiLCAxMik7XHJcbiAgICAgICAgcmV0dXJuIHNvdXJjZSBhcyBBWFBHcmlkTGF5b3V0T3B0aW9ucztcclxuICAgIH0pO1xyXG5cclxuXHJcbiAgICBwcm9wcyA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgICBjb25zdCBwcm9wcyA9IHRoaXMuZW50aXR5LnByb3BlcnRpZXMuZmlsdGVyKGMgPT4gYy5ncm91cElkID09IHRoaXMuZ3JvdXAuaWQgJiYgYy5zY2hlbWEuaGlkZGVuICE9IHRydWUgJiYgYy5vcHRpb25zPy52aWV3Py5lbmFibGVkICE9IGZhbHNlKTtcclxuICAgICAgICByZXR1cm4gcHJvcHMubWFwKGUgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IEFYUEVudGl0eU1hc3RlclNpbmdsZUVsZW1lbnRWaWV3TW9kZWwodGhpcy5lbnRpdHksIHRoaXMsIGUpO1xyXG4gICAgICAgIH0pXHJcbiAgICB9KTtcclxuXHJcbiAgICBlZGl0YWJsZVByb3BzID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHByb3BzID0gdGhpcy5lbnRpdHkucHJvcGVydGllcy5maWx0ZXIoYyA9PiBjLmdyb3VwSWQgPT0gdGhpcy5ncm91cC5pZCAmJiBjLnNjaGVtYS5oaWRkZW4gIT0gdHJ1ZSAmJiBjLm9wdGlvbnM/LnVwZGF0ZT8uZW5hYmxlZCAhPSBmYWxzZSk7XHJcbiAgICAgICAgcmV0dXJuIHByb3BzLm1hcChlID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBBWFBFbnRpdHlNYXN0ZXJTaW5nbGVFbGVtZW50Vmlld01vZGVsKHRoaXMuZW50aXR5LCB0aGlzLCBlKTtcclxuICAgICAgICB9KVxyXG4gICAgfSk7XHJcblxyXG4gICAgZWRpdGFibGUgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZWRpdGFibGVQcm9wcygpLmxlbmd0aCA+IDBcclxuICAgIH0pO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQVhQRW50aXR5TWFzdGVyU2luZ2xlRWxlbWVudFZpZXdNb2RlbCB7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbnRpdHk6IEFYUEVudGl0eSwgcHJpdmF0ZSBzZWN0aW9uOiBBWFBFbnRpdHlNYXN0ZXJTaW5nbGVWaWV3R3JvdXBWaWV3TW9kZWwsIHByaXZhdGUgcHJvcGVydHk6IEFYUEVudGl0eVByb3BlcnR5KSB7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIG5hbWUgPSBzaWduYWwodGhpcy5wcm9wZXJ0eS5uYW1lKTtcclxuICAgIHRpdGxlID0gc2lnbmFsKHRoaXMucHJvcGVydHkudGl0bGUpO1xyXG4gICAgZGVzY3JpcHRpb24gPSBzaWduYWwodGhpcy5wcm9wZXJ0eS5kZXNjcmlwdGlvbik7XHJcblxyXG4gICAgb3JkZXIgPSBzaWduYWwodGhpcy5wcm9wZXJ0eS5vcHRpb25zPy52aWV3Py5sYXlvdXQ/Lm9yZGVyID8/IDApO1xyXG5cclxuICAgIGxheW91dCA9IGNvbXB1dGVkPEFYUEdyaWRMYXlvdXRPcHRpb25zPigoKSA9PiB7XHJcbiAgICAgICAgY29uc3Qgc291cmNlID0gY2xvbmVEZWVwKHRoaXMucHJvcGVydHkub3B0aW9ucz8udmlldz8ubGF5b3V0ID8/IHt9KSBhcyBvYmplY3Q7XHJcbiAgICAgICAgc2V0KHNvdXJjZSwgXCJwb3NpdGlvbnMuZGVmYXVsdC5jb2xTcGFuXCIsIDEyKTtcclxuICAgICAgICByZXR1cm4gc291cmNlIGFzIEFYUEdyaWRMYXlvdXRPcHRpb25zO1xyXG4gICAgfSk7XHJcblxyXG4gICAgbm9kZSA9IGNvbXB1dGVkPEFYUFdpZGdldE5vZGU+KCgpID0+IHtcclxuICAgICAgICBjb25zdCBzY2hlbWEgPSB0aGlzLnByb3BlcnR5LnNjaGVtYSE7XHJcbiAgICAgICAgY29uc3Qgd2lkZ2V0ID0gc2NoZW1hLmludGVyZmFjZSE7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgdHlwZTogd2lkZ2V0LnR5cGUsXHJcbiAgICAgICAgICAgIG1vZGU6ICd2aWV3JyxcclxuICAgICAgICAgICAgcGF0aDogdGhpcy5uYW1lKCksXHJcbiAgICAgICAgICAgIGNoaWxkcmVuOiB3aWRnZXQuY2hpbGRyZW4sXHJcbiAgICAgICAgICAgIGZvcm11bGE6IHdpZGdldC5mb3JtdWxhLFxyXG4gICAgICAgICAgICBvcHRpb25zOiBtZXJnZShcclxuICAgICAgICAgICAgICAgIHNjaGVtYS5pbnRlcmZhY2U/Lm9wdGlvbnMsXHJcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BlcnR5Lm9wdGlvbnM/LmNyZWF0ZT8ud2lkZ2V0LFxyXG4gICAgICAgICAgICAgICAgeyB2YWxpZGF0aW9uUnVsZXM6IHRoaXMucHJvcGVydHkudmFsaWRhdGlvbnMgfSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgIH0gYXMgQVhQV2lkZ2V0Tm9kZTtcclxuICAgIH0pXHJcbn1cclxuXHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIEFYUEVudGl0eU1hc3RlclNpbmdsZVZpZXdNb2RlbCB7XHJcblxyXG4gICAgcHJpdmF0ZSBlbnRpdHlEZWYgPSBjbG9uZURlZXAodGhpcy5jb25maWcpITtcclxuICAgIHByaXZhdGUgX3ZpZXdEZWYgPSBjbG9uZURlZXAodGhpcy5lbnRpdHlEZWYuaW50ZXJmYWNlcz8ubWFzdGVyPy5zaW5nbGUpIVxyXG4gICAgcHJpdmF0ZSBzZXNzaW9uID0gdGhpcy5pbmplY3Rvci5nZXQoQVhQU2Vzc2lvblNlcnZpY2UpO1xyXG4gICAgcHJpdmF0ZSBmb3JtYXRTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoQVhGb3JtYXRTZXJ2aWNlKVxyXG4gICAgcHJpdmF0ZSB3b3JrZmxvdyA9IHRoaXMuaW5qZWN0b3IuZ2V0KEFYUFdvcmtmbG93U2VydmljZSlcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgICAgICBwcml2YXRlIGNvbmZpZzogQVhQRW50aXR5LFxyXG4gICAgICAgIHByaXZhdGUgZW50aXR5RGF0YTogYW55LFxyXG4gICAgKSB7XHJcbiAgICAgICAgdGhpcy53b3JrZmxvdy5ldmVudHMkLnBpcGUob2ZUeXBlKEFYUEVudGl0eURlbGV0ZWRFdmVudCkpLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcclxuICAgICAgICAgICAgLy8gaWYgKFxyXG4gICAgICAgICAgICAvLyAgIGV2ZW50LnBheWxvYWQuZW50aXR5ID09IHRoaXMubG9hZGVyLmVudGl0eS5uYW1lICYmXHJcbiAgICAgICAgICAgIC8vICAgZXZlbnQucGF5bG9hZC5tb2R1bGUgPT0gdGhpcy5sb2FkZXIuZW50aXR5Lm1vZHVsZSAmJlxyXG4gICAgICAgICAgICAvLyAgIGV2ZW50LnBheWxvYWQuaWQuaW5jbHVkZXModGhpcy5sb2FkZXIuZGF0YS5pZClcclxuICAgICAgICAgICAgLy8gKSB7XHJcbiAgICAgICAgICAgIC8vICAgdGhpcy53b3JrZmxvdy5leGVjdXRlKCdzaG93LWxpc3QtdmlldycsIHtcclxuICAgICAgICAgICAgLy8gICAgIHBheWxvYWQ6IHtcclxuICAgICAgICAgICAgLy8gICAgICAgbW9kdWxlOiB0aGlzLmxvYWRlci5lbnRpdHkubW9kdWxlLFxyXG4gICAgICAgICAgICAvLyAgICAgICBlbnRpdHk6IHRoaXMubG9hZGVyLmVudGl0eS5uYW1lLFxyXG4gICAgICAgICAgICAvLyAgICAgfSxcclxuICAgICAgICAgICAgLy8gICB9KTtcclxuICAgICAgICAgICAgLy99XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy53b3JrZmxvdy5ldmVudHMkLnBpcGUob2ZUeXBlKEFYUEVudGl0eU1vZGlmeUV2ZW50KSkuc3Vic2NyaWJlKGFzeW5jIChldmVudCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICBldmVudC5wYXlsb2FkLmVudGl0eSA9PSB0aGlzLmVudGl0eURlZi5uYW1lICYmXHJcbiAgICAgICAgICAgICAgICBldmVudC5wYXlsb2FkLm1vZHVsZSA9PSB0aGlzLmVudGl0eURlZi5tb2R1bGUgJiZcclxuICAgICAgICAgICAgICAgIGV2ZW50LnBheWxvYWQudXBkYXRlVmFsdWVzLmlkID09PSB0aGlzLmNvbnRleHQoKS5pZFxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5zZXQoZXZlbnQucGF5bG9hZC51cGRhdGVWYWx1ZXMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHB1YmxpYyBjb250ZXh0ID0gc2lnbmFsPGFueT4oY2xvbmVEZWVwKHRoaXMuZW50aXR5RGF0YSkpO1xyXG5cclxuICAgIHByaXZhdGUgYWN0aW9ucyA9IGNvbXB1dGVkPEFYUEVudGl0eUNvbW1hbmRUcmlnZ2VyVmlld01vZGVsW10+KCgpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5lbnRpdHlEZWYuaW50ZXJmYWNlcz8ubWFzdGVyPy5zaW5nbGU/LmFjdGlvbnM/Lm1hcCgodHIpID0+IG5ldyBBWFBFbnRpdHlDb21tYW5kVHJpZ2dlclZpZXdNb2RlbCh0aGlzLmVudGl0eURlZiwgdHIpKSA/PyBbXTtcclxuICAgIH0pO1xyXG5cclxuICAgIHB1YmxpYyBwcmltYXJ5QWN0aW9ucyA9IGNvbXB1dGVkPEFYUEVudGl0eUNvbW1hbmRUcmlnZ2VyVmlld01vZGVsW10+KCgpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5hY3Rpb25zKCkuZmlsdGVyKGMgPT4gYy5wcmlvcml0eSA9PSAncHJpbWFyeScpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcHVibGljIHNlY29uZGFyeUFjdGlvbnMgPSBjb21wdXRlZDxBWFBFbnRpdHlDb21tYW5kVHJpZ2dlclZpZXdNb2RlbFtdPigoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aW9ucygpLmZpbHRlcihjID0+IGMucHJpb3JpdHkgPT0gJ3NlY29uZGFyeScpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcHVibGljIHNlY3Rpb25zID0gY29tcHV0ZWQ8QVhQRW50aXR5TWFzdGVyU2luZ2xlVmlld0dyb3VwVmlld01vZGVsW10+KCgpID0+IHtcclxuICAgICAgICBjb25zdCBwcm9wcyA9IHRoaXMuZW50aXR5RGVmLnByb3BlcnRpZXMuZmlsdGVyKGMgPT4gYy5ncm91cElkICYmIGMuc2NoZW1hLmhpZGRlbiAhPSB0cnVlICYmIGMub3B0aW9ucz8udmlldz8uZW5hYmxlZCAhPSBmYWxzZSk7XHJcbiAgICAgICAgY29uc3QgZ3JvdXBzID0gdGhpcy5lbnRpdHlEZWYuZ3JvdXBzPy5maWx0ZXIoZyA9PiBwcm9wcy5zb21lKHAgPT4gcC5ncm91cElkID09IGcuaWQpKTtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBncm91cHM/Lm1hcCgoc2VjdGlvbikgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IEFYUEVudGl0eU1hc3RlclNpbmdsZVZpZXdHcm91cFZpZXdNb2RlbCh0aGlzLmVudGl0eURlZiwgc2VjdGlvbilcclxuICAgICAgICB9KVxyXG4gICAgICAgIHJldHVybiAocmVzdWx0ID8/IFtdKSBhcyBBWFBFbnRpdHlNYXN0ZXJTaW5nbGVWaWV3R3JvdXBWaWV3TW9kZWxbXTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vKioqKioqKioqKioqKioqKioqIFRpdGxlICoqKioqKioqKioqKioqKioqKi8vXHJcbiAgICBwdWJsaWMgdGl0bGUgPSBjb21wdXRlZDxzdHJpbmc+KCgpID0+IHtcclxuICAgICAgICBjb25zdCBzdWdnZXN0ZWRQcm9wcyA9IHRoaXMuZW50aXR5RGVmLnByb3BlcnRpZXMuZmluZCgoYykgPT4gWyd0aXRsZScsICduYW1lJywgJ2NvZGUnXS5pbmNsdWRlcyhjLm5hbWUpKTtcclxuICAgICAgICBsZXQgc3VnZ2VzdGVkRm9ybWF0ID0gJ0l0ZW0gI3t7aWR9fSc7XHJcbiAgICAgICAgaWYgKHN1Z2dlc3RlZFByb3BzKSBzdWdnZXN0ZWRGb3JtYXQgPSBge3ske3N1Z2dlc3RlZFByb3BzLm5hbWV9fX1gO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdFNlcnZpY2UuZm9ybWF0KHRoaXMuX3ZpZXdEZWYudGl0bGUgPz8gc3VnZ2VzdGVkRm9ybWF0LFxyXG4gICAgICAgICAgICAnc3RyaW5nJyxcclxuICAgICAgICAgICAgdGhpcy5jb250ZXh0KClcclxuICAgICAgICApO1xyXG4gICAgfSk7XHJcbiAgICAvLyoqKioqKioqKioqKioqKioqKiBEZXNjcmlwdGlvbiAqKioqKioqKioqKioqKioqKiovL1xyXG4gICAgcHVibGljIGRlc2NyaXB0aW9uID0gY29tcHV0ZWQ8c3RyaW5nIHwgbnVsbD4oKCkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl92aWV3RGVmLmRlc2NyaXB0aW9uID8gdGhpcy5mb3JtYXRTZXJ2aWNlLmZvcm1hdCh0aGlzLl92aWV3RGVmLmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAnc3RyaW5nJyxcclxuICAgICAgICAgICAgdGhpcy5jb250ZXh0KClcclxuICAgICAgICApIDogbnVsbDtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vKioqKioqKioqKioqKioqKioqIEJlYXJkY3J1bWJzICoqKioqKioqKioqKioqKioqKi8vXHJcbiAgICBwdWJsaWMgYmVhcmRjcnVtYnMgPSBjb21wdXRlZDxBWFBCZWFyZENydW1iW10+KCgpID0+IHtcclxuICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB0aXRsZTogXCJIb21lXCIsXHJcbiAgICAgICAgICAgICAgICBpY29uOiBcImZhLXNvbGlkIGZhLWhvbWUgYXgtdGV4dC14cyBheC1tZS0yXCIsXHJcbiAgICAgICAgICAgICAgICB1cmw6IFtgLyR7dGhpcy5zZXNzaW9uLmFwcGxpY2F0aW9uPy5uYW1lfWBdXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHRpdGxlOiB0aGlzLmVudGl0eURlZi5mb3JtYXRzLnBsdXJhbCA/PyB0aGlzLmVudGl0eURlZi5mb3JtYXRzLmluZGl2aWR1YWwsXHJcbiAgICAgICAgICAgICAgICB1cmw6IFtgLyR7dGhpcy5zZXNzaW9uLmFwcGxpY2F0aW9uPy5uYW1lfWAsICdtJywgYCR7dGhpcy5lbnRpdHlEZWYubW9kdWxlfWAsICdlJywgYCR7dGhpcy5lbnRpdHlEZWYubmFtZX1gLCAnbGlzdCddXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHRpdGxlOiB0aGlzLnRpdGxlKCksXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICBdXHJcbiAgICB9KTtcclxuXHJcblxyXG4gICAgcHVibGljIHJlbGF0ZWRFbnRpdGllcyA9IGNvbXB1dGVkPEFYUEVudGl0eURldGFpbExpc3RWaWV3TW9kZWxbXT4oKCkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmVudGl0eURlZi5yZWxhdGVkRW50aXRpZXM/Lm1hcChyZSA9PlxyXG4gICAgICAgICAgICBuZXcgQVhQRW50aXR5RGV0YWlsTGlzdFZpZXdNb2RlbCh0aGlzLmluamVjdG9yLCByZSwgeyBlbnRpdHk6IHRoaXMuZW50aXR5RGVmLCBkYXRhOiB0aGlzLmVudGl0eURhdGEgfSlcclxuICAgICAgICApID8/IFtdXHJcbiAgICB9KTtcclxuXHJcblxyXG4gICAgcHVibGljIGFzeW5jIGV4ZWN1dGVDb21tYW5kKGNvbW1hbmROYW1lOiBzdHJpbmcsIGRhdGE6IGFueSA9IG51bGwpIHtcclxuICAgICAgICAvLyBkZWJ1Z2dlclxyXG4gICAgICAgIC8vVE9ETzogc3ludGFjdCBmb3Igd29ya2Zsb3dcclxuICAgICAgICBzd2l0Y2ggKGNvbW1hbmROYW1lKSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ2RlbGV0ZS1lbnRpdHknOlxyXG4gICAgICAgICAgICAgICAgdGhpcy53b3JrZmxvdy5leGVjdXRlKCdkZWxldGUtZW50aXR5Jywge1xyXG4gICAgICAgICAgICAgICAgICAgIG1vZHVsZTogdGhpcy5lbnRpdHlEZWYubW9kdWxlLFxyXG4gICAgICAgICAgICAgICAgICAgIGVudGl0eTogdGhpcy5lbnRpdHlEZWYubmFtZSxcclxuICAgICAgICAgICAgICAgICAgICBpZHM6IFt0aGlzLmNvbnRleHQoKS5pZF0sXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdtb2RpZnktZW50aXR5LXNlY3Rpb24nOiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLndvcmtmbG93LmV4ZWN1dGUoJ21vZGlmeS1lbnRpdHktc2VjdGlvbicsIHtcclxuICAgICAgICAgICAgICAgICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IChkYXRhIGFzIEFYUEVudGl0eU1hc3RlclNpbmdsZVZpZXdHcm91cFZpZXdNb2RlbCkuZWRpdGFibGVQcm9wcygpLm1hcChtID0+IG0ubmFtZSgpKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRoaXMuZW50aXR5RGF0YS5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlOiB0aGlzLmVudGl0eURlZi5tb2R1bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eTogdGhpcy5lbnRpdHlEZWYubmFtZSxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuYWN0aW9ucygpLmZpbmQoYyA9PiBjLm5hbWUgPT0gY29tbWFuZE5hbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMud29ya2Zsb3cuZXhlY3V0ZShjb21tYW5kTmFtZSwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGU6IHRoaXMuZW50aXR5RGVmLm1vZHVsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eTogdGhpcy5lbnRpdHlEZWYubmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGFjdGlvbj8uc2NvcGUgPT0gQVhQRW50aXR5Q29tbWFuZFNjb3BlLkluZGl2aWR1YWwgPyBkYXRhIDogbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBBWFBFbnRpdHlEZXRhaWxWaWV3TW9kZWxGYWN0b3J5IHtcclxuICAgIHByaXZhdGUgZW50aXR5U2VydmljZSA9IGluamVjdChBWFBFbnRpdHlEZWZpbml0aW9uUmVnaXN0cnlTZXJ2aWNlKTtcclxuICAgIHByaXZhdGUgbGF5b3V0ID0gaW5qZWN0KEFYUExheW91dFNlcnZpY2UpO1xyXG4gICAgcHJpdmF0ZSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGNyZWF0ZShtb2R1bGVOYW1lOiBzdHJpbmcsIGVudGl0eU5hbWU6IHN0cmluZywgaWQ6IHN0cmluZyk6IFByb21pc2U8QVhQRW50aXR5TWFzdGVyU2luZ2xlVmlld01vZGVsPiB7XHJcbiAgICAgICAgY29uc3QgY29uZmlnID0gYXdhaXQgdGhpcy5lbnRpdHlTZXJ2aWNlLnJlc29sdmUobW9kdWxlTmFtZSwgZW50aXR5TmFtZSk7XHJcbiAgICAgICAgdGhpcy5sYXlvdXQuc2V0TmF2aWdhdGlvbkxvYWRpbmcodHJ1ZSk7XHJcbiAgICAgICAgaWYgKGNvbmZpZy5xdWVyaWVzLmJ5S2V5KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZ1bmMgPSBjb25maWcucXVlcmllcy5ieUtleS5leGVjdXRlIGFzIEZ1bmN0aW9uO1xyXG4gICAgICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgZnVuYyhpZCk7XHJcbiAgICAgICAgICAgIHRoaXMubGF5b3V0LnNldE5hdmlnYXRpb25Mb2FkaW5nKGZhbHNlKTtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBBWFBFbnRpdHlNYXN0ZXJTaW5nbGVWaWV3TW9kZWwodGhpcy5pbmplY3RvciwgY29uZmlnLCBkYXRhKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5sYXlvdXQuc2V0TmF2aWdhdGlvbkxvYWRpbmcoZmFsc2UpO1xyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgnY2Fubm90IGZldGNoICcpO1xyXG4gICAgfVxyXG59XHJcblxyXG5cclxuZXhwb3J0IGNvbnN0IEFYUEVudGl0eURldGFpbFZpZXdNb2RlbFJlc29sdmVyOiBSZXNvbHZlRm48UHJvbWlzZTxBWFBFbnRpdHlNYXN0ZXJTaW5nbGVWaWV3TW9kZWw+PiA9IChcclxuICAgIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxyXG4gICAgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QsXHJcbiAgICBzZXJ2aWNlOiBBWFBFbnRpdHlEZXRhaWxWaWV3TW9kZWxGYWN0b3J5ID0gaW5qZWN0KEFYUEVudGl0eURldGFpbFZpZXdNb2RlbEZhY3RvcnkpXHJcbik6IFByb21pc2U8QVhQRW50aXR5TWFzdGVyU2luZ2xlVmlld01vZGVsPiA9PiB7XHJcbiAgICBjb25zdCBhcHBOYW1lID0gcm91dGUucGFyZW50Py5wYXJhbU1hcC5nZXQoJ2FwcCcpIGFzIHN0cmluZztcclxuICAgIGNvbnN0IG1vZHVsZU5hbWUgPSByb3V0ZS5wYXJlbnQ/LnBhcmFtTWFwLmdldCgnbW9kdWxlJykgYXMgc3RyaW5nO1xyXG4gICAgY29uc3QgZW50aXR5TmFtZSA9IHJvdXRlLnBhcmFtTWFwLmdldCgnZW50aXR5JykgYXMgc3RyaW5nO1xyXG4gICAgY29uc3QgaWQgPSByb3V0ZS5wYXJhbU1hcC5nZXQoJ2lkJykgYXMgc3RyaW5nO1xyXG4gICAgLy9cclxuICAgIHJldHVybiBzZXJ2aWNlLmNyZWF0ZShtb2R1bGVOYW1lLCBlbnRpdHlOYW1lLCBpZCk7XHJcbn07XHJcblxyXG5cclxuIl19
|
|
227
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LW1hc3Rlci1zaW5nbGUudmlld21vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvZW50aXR5L3NyYy9saWIvZW50aXR5LW1hc3Rlci1zaW5nbGUudmlld21vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXRFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzlFLE9BQU8sRUFBNEIscUJBQXFCLEVBQXdGLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbE0sT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFHL0IsTUFBTSxPQUFPLHVDQUF1QztJQUVoRCxZQUFvQixNQUFpQixFQUFVLE9BQTZCO1FBQXhELFdBQU0sR0FBTixNQUFNLENBQVc7UUFBVSxZQUFPLEdB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LElBQUksOEJBQThCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDM0UsQ0FBQztRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEMsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7OEdBaEJRLCtCQUErQjtrSEFBL0IsK0JBQStCLGNBRGxCLE1BQU07OzJGQUNuQiwrQkFBK0I7a0JBRDNDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOztBQXFCbEMsTUFBTSxDQUFDLE1BQU0sZ0NBQWdDLEdBQXVELENBQ2hHLEtBQTZCLEVBQzdCLEtBQTBCLEVBQzFCLFVBQTJDLE1BQU0sQ0FBQywrQkFBK0IsQ0FBQyxFQUMzQyxFQUFFO0lBQ3pDLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQVcsQ0FBQztJQUNsRSxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQVcsQ0FBQztJQUMxRCxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQVcsQ0FBQztJQUM5QyxFQUFFO0lBQ0YsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDdEQsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhGb3JtYXRTZXJ2aWNlIH0gZnJvbSBcIkBhY29yZXgvY29yZS9mb3JtYXRcIjtcclxuaW1wb3J0IHsgY2xvbmVEZWVwLCBtZXJnZSwgc2V0IH0gZnJvbSBcImxvZGFzaC1lc1wiO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciwgY29tcHV0ZWQsIGluamVjdCwgc2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgUmVzb2x2ZUZuLCBSb3V0ZXJTdGF0ZVNuYXBzaG90IH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBBWFBXb3JrZmxvd1NlcnZpY2UsIG9mVHlwZSB9IGZyb20gXCJAYWNvcmV4L3BsYXRmb3JtL3dvcmtmbG93XCI7XHJcbmltcG9ydCB7IEFYUFNlc3Npb25TZXJ2aWNlIH0gZnJvbSBcIkBhY29yZXgvcGxhdGZvcm0vYXV0aFwiO1xyXG5pbXBvcnQgeyBBWFBFbnRpdHlEZWZpbml0aW9uUmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSBcIi4vZW50aXR5LXJlZ2lzdGVyeS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEFYUEVudGl0eUNvbW1hbmRUcmlnZ2VyVmlld01vZGVsIH0gZnJvbSBcIi4vZW50aXR5LnZpZXdtb2RlbFwiO1xyXG5pbXBvcnQgeyBBWFBXaWRnZXROb2RlIH0gZnJvbSBcIkBhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXJcIjtcclxuaW1wb3J0IHsgQVhQRW50aXR5RGVsZXRlZEV2ZW50IH0gZnJvbSBcIi4vd29ya2Zsb3dzL2RlbGV0ZS1lbnRpdHkud29ya2Zsb3dcIjtcclxuaW1wb3J0IHsgQVhQRW50aXR5TW9kaWZ5RXZlbnQgfSBmcm9tIFwiLi93b3JrZmxvd3MvbW9kaWZ5LXNlY3Rpb24ud29ya2Zsb3dcIjtcclxuaW1wb3J0IHsgQVhQRW50aXR5RGV0YWlsTGlzdFZpZXdNb2RlbCB9IGZyb20gXCIuL2VudGl0eS1kZXRhaWwtbGlzdC52aWV3bW9kZWxcIjtcclxuaW1wb3J0IHsgQVhQQmVhcmRDcnVtYiwgQVhQRW50aXR5LCBBWFBFbnRpdHlDb21tYW5kU2NvcGUsIEFYUEVudGl0eVByb3BlcnR5LCBBWFBFbnRpdHlQcm9wZXJ0eVZpZXcsIEFYUEVudGl0eVNlY3Rpb25WaWV3LCBBWFBHcmlkTGF5b3V0T3B0aW9ucywgQVhQTGF5b3V0U2VydmljZSB9IGZyb20gXCJAYWNvcmV4L3BsYXRmb3JtL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcclxuXHJcblxyXG5leHBvcnQgY2xhc3MgQVhQRW50aXR5TWFzdGVyU2luZ2xlVmlld0dyb3VwVmlld01vZGVsIHtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVudGl0eTogQVhQRW50aXR5LCBwcml2YXRlIHNlY3Rpb246IEFYUEVudGl0eVNlY3Rpb25WaWV3KSB7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGdyb3VwID0gdGhpcy5lbnRpdHkuZ3JvdXBzPy5maW5kKGMgPT4gYy5pZCA9PSB0aGlzLnNlY3Rpb24uaWQpITtcclxuICAgIG5hbWUgPSBzaWduYWwodGhpcy5ncm91cC5pZCk7XHJcbiAgICBpc0xvYWRpbmcgPSBzaWduYWwoZmFsc2UpO1xyXG5cclxuICAgIHRpdGxlID0gY29tcHV0ZWQ8c3RyaW5nPigoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JvdXAudGl0bGUgPz8gdGhpcy5ncm91cC5pZDtcclxuICAgIH0pO1xyXG5cclxuICAgIGRlc2NyaXB0aW9uID0gY29tcHV0ZWQ8c3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZD4oKCkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmdyb3VwLmRlc2NyaXB0aW9uO1xyXG4gICAgfSk7XHJcblxyXG4gICAgbGF5b3V0ID0gY29tcHV0ZWQ8QVhQR3JpZExheW91dE9wdGlvbnM+KCgpID0+IHtcclxuICAgICAgICBjb25zdCBzb3VyY2UgPSBjbG9uZURlZXAodGhpcy5zZWN0aW9uLmxheW91dCA/PyB7fSkgYXMgb2JqZWN0O1xyXG4gICAgICAgIHNldChzb3VyY2UsIFwicG9zaXRpb25zLmRlZmF1bHQuY29sU3BhblwiLCAxMik7XHJcbiAgICAgICAgcmV0dXJuIHNvdXJjZSBhcyBBWFBHcmlkTGF5b3V0T3B0aW9ucztcclxuICAgIH0pO1xyXG5cclxuICAgIHByb3BzID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHByb3BzID0gdGhpcy5lbnRpdHkucHJvcGVydGllcy5maWx0ZXIoXHJcbiAgICAgICAgICAgIGMgPT4gYy5ncm91cElkID09IHRoaXMuZ3JvdXAuaWQgJiZcclxuICAgICAgICAgICAgICAgIGMuc2NoZW1hLmhpZGRlbiAhPSB0cnVlXHJcbiAgICAgICAgKS5tYXAoYyA9PiBjLm5hbWUpO1xyXG4gICAgICAgIGNvbnN0IHZpZXdQcm9wcyA9IHRoaXMuZW50aXR5LmludGVyZmFjZXM/Lm1hc3Rlcj8uc2luZ2xlPy5wcm9wZXJ0aWVzPy5maWx0ZXIoYyA9PiBwcm9wcy5pbmNsdWRlcyhjLm5hbWUpKSA/PyBbXVxyXG5cclxuICAgICAgICByZXR1cm4gdmlld1Byb3BzLm1hcChlID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBBWFBFbnRpdHlNYXN0ZXJTaW5nbGVFbGVtZW50Vmlld01vZGVsKHRoaXMuZW50aXR5LCB0aGlzLCBlKTtcclxuICAgICAgICB9KVxyXG4gICAgfSk7XHJcblxyXG4gICAgZWRpdGFibGVQcm9wcyA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgICBjb25zdCBlZGl0YWJsZVByb3BzID0gdGhpcy5lbnRpdHkuaW50ZXJmYWNlcz8ubWFzdGVyPy51cGRhdGU/LnByb3BlcnRpZXM/Lm1hcChjID0+IGMubmFtZSkgPz8gW107XHJcbiAgICAgICAgY29uc3QgcHJvcHMgPSB0aGlzLmVudGl0eS5wcm9wZXJ0aWVzLmZpbHRlcihjID0+XHJcbiAgICAgICAgICAgIGMuZ3JvdXBJZCA9PSB0aGlzLmdyb3VwLmlkICYmXHJcbiAgICAgICAgICAgIGMuc2NoZW1hLmhpZGRlbiAhPSB0cnVlICYmXHJcbiAgICAgICAgICAgIGVkaXRhYmxlUHJvcHMuaW5jbHVkZXMoYy5uYW1lKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIHByb3BzLm1hcChlID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBBWFBFbnRpdHlNYXN0ZXJTaW5nbGVFbGVtZW50Vmlld01vZGVsKHRoaXMuZW50aXR5LCB0aGlzLCBlKTtcclxuICAgICAgICB9KVxyXG4gICAgfSk7XHJcblxyXG4gICAgZWRpdGFibGUgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZWRpdGFibGVQcm9wcygpLmxlbmd0aCA+IDBcclxuICAgIH0pO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQVhQRW50aXR5TWFzdGVyU2luZ2xlRWxlbWVudFZpZXdNb2RlbCB7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbnRpdHk6IEFYUEVudGl0eSwgcHJpdmF0ZSBzZWN0aW9uOiBBWFBFbnRpdHlNYXN0ZXJTaW5nbGVWaWV3R3JvdXBWaWV3TW9kZWwsIHByaXZhdGUgcHJvcGVydHlWaWV3OiBBWFBFbnRpdHlQcm9wZXJ0eVZpZXcpIHtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBwcm9wZXJ0eSA9IHRoaXMuZW50aXR5LnByb3BlcnRpZXMuZmluZChjID0+IGMubmFtZSA9PSB0aGlzLnByb3BlcnR5Vmlldy5uYW1lKSFcclxuICAgIG5hbWUgPSBzaWduYWwodGhpcy5wcm9wZXJ0eS5uYW1lKTtcclxuICAgIHRpdGxlID0gc2lnbmFsKHRoaXMucHJvcGVydHkudGl0bGUpO1xyXG4gICAgZGVzY3JpcHRpb24gPSBzaWduYWwodGhpcy5wcm9wZXJ0eS5kZXNjcmlwdGlvbik7XHJcblxyXG5cclxuICAgIGxheW91dCA9IGNvbXB1dGVkPEFYUEdyaWRMYXlvdXRPcHRpb25zPigoKSA9PiB7XHJcbiAgICAgICAgY29uc3Qgdmlld1Byb3AgPSB0aGlzLmVudGl0eS5pbnRlcmZhY2VzPy5tYXN0ZXI/LnNpbmdsZT8ucHJvcGVydGllcz8uZmluZChjID0+IGMubmFtZSA9PSB0aGlzLnByb3BlcnR5Lm5hbWUpO1xyXG4gICAgICAgIGNvbnN0IHNvdXJjZSA9IGNsb25lRGVlcCh2aWV3UHJvcD8ubGF5b3V0ID8/IHt9KSBhcyBvYmplY3Q7XHJcbiAgICAgICAgc2V0KHNvdXJjZSwgXCJwb3NpdGlvbnMuZGVmYXVsdC5jb2xTcGFuXCIsIDEyKTtcclxuICAgICAgICByZXR1cm4gc291cmNlIGFzIEFYUEdyaWRMYXlvdXRPcHRpb25zO1xyXG4gICAgfSk7XHJcblxyXG4gICAgbm9kZSA9IGNvbXB1dGVkPEFYUFdpZGdldE5vZGU+KCgpID0+IHtcclxuICAgICAgICBjb25zdCBzY2hlbWEgPSB0aGlzLnByb3BlcnR5LnNjaGVtYSE7XHJcbiAgICAgICAgY29uc3Qgd2lkZ2V0ID0gc2NoZW1hLmludGVyZmFjZSE7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgdHlwZTogd2lkZ2V0LnR5cGUsXHJcbiAgICAgICAgICAgIG1vZGU6ICd2aWV3JyxcclxuICAgICAgICAgICAgcGF0aDogdGhpcy5uYW1lKCksXHJcbiAgICAgICAgICAgIGNoaWxkcmVuOiB3aWRnZXQuY2hpbGRyZW4sXHJcbiAgICAgICAgICAgIGZvcm11bGE6IHdpZGdldC5mb3JtdWxhLFxyXG4gICAgICAgICAgICBvcHRpb25zOiBtZXJnZShcclxuICAgICAgICAgICAgICAgIHNjaGVtYS5pbnRlcmZhY2U/Lm9wdGlvbnMsXHJcbiAgICAgICAgICAgICAgICAvL3RoaXMucHJvcGVydHkub3B0aW9ucz8uY3JlYXRlPy53aWRnZXQsXHJcbiAgICAgICAgICAgICAgICB7IHZhbGlkYXRpb25SdWxlczogdGhpcy5wcm9wZXJ0eS52YWxpZGF0aW9ucyB9LFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgfSBhcyBBWFBXaWRnZXROb2RlO1xyXG4gICAgfSlcclxufVxyXG5cclxuXHJcblxyXG5leHBvcnQgY2xhc3MgQVhQRW50aXR5TWFzdGVyU2luZ2xlVmlld01vZGVsIHtcclxuXHJcbiAgICBwcml2YXRlIGVudGl0eURlZiA9IGNsb25lRGVlcCh0aGlzLmNvbmZpZykhO1xyXG4gICAgcHJpdmF0ZSBfdmlld0RlZiA9IGNsb25lRGVlcCh0aGlzLmVudGl0eURlZi5pbnRlcmZhY2VzPy5tYXN0ZXI/LnNpbmdsZSkhXHJcbiAgICBwcml2YXRlIHNlc3Npb24gPSB0aGlzLmluamVjdG9yLmdldChBWFBTZXNzaW9uU2VydmljZSk7XHJcbiAgICBwcml2YXRlIGZvcm1hdFNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChBWEZvcm1hdFNlcnZpY2UpXHJcbiAgICBwcml2YXRlIHdvcmtmbG93ID0gdGhpcy5pbmplY3Rvci5nZXQoQVhQV29ya2Zsb3dTZXJ2aWNlKVxyXG5cclxuICAgIHB1YmxpYyBldmVudHMkOiBTdWJqZWN0PHsgYWN0aW9uOiBzdHJpbmcgfT4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgICAgIHByaXZhdGUgY29uZmlnOiBBWFBFbnRpdHksXHJcbiAgICAgICAgcHJpdmF0ZSBlbnRpdHlEYXRhOiBhbnksXHJcbiAgICApIHtcclxuICAgICAgICB0aGlzLndvcmtmbG93LmV2ZW50cyQucGlwZShvZlR5cGUoQVhQRW50aXR5RGVsZXRlZEV2ZW50KSkuc3Vic2NyaWJlKChldmVudCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICBldmVudC5wYXlsb2FkLmVudGl0eSA9PSB0aGlzLmVudGl0eURlZi5zb3VyY2UgJiZcclxuICAgICAgICAgICAgICAgIGV2ZW50LnBheWxvYWQuaWRzLmluY2x1ZGVzKHRoaXMuY29udGV4dCgpLmlkKVxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMud29ya2Zsb3cuZXhlY3V0ZSgnc2hvdy1saXN0LXZpZXcnLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgZW50aXR5OiB0aGlzLmVudGl0eURlZi5zb3VyY2VcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy53b3JrZmxvdy5ldmVudHMkLnBpcGUob2ZUeXBlKEFYUEVudGl0eU1vZGlmeUV2ZW50KSkuc3Vic2NyaWJlKGFzeW5jIChldmVudCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICBldmVudC5wYXlsb2FkLmVudGl0eSA9PSB0aGlzLmVudGl0eURlZi5zb3VyY2UgJiZcclxuICAgICAgICAgICAgICAgIGV2ZW50LnBheWxvYWQudmFsdWVzLmlkID09PSB0aGlzLmNvbnRleHQoKS5pZFxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5zZXQoZXZlbnQucGF5bG9hZC52YWx1ZXMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHB1YmxpYyBjb250ZXh0ID0gc2lnbmFsPGFueT4oY2xvbmVEZWVwKHRoaXMuZW50aXR5RGF0YSkpO1xyXG5cclxuICAgIHByaXZhdGUgYWN0aW9ucyA9IGNvbXB1dGVkPEFYUEVudGl0eUNvbW1hbmRUcmlnZ2VyVmlld01vZGVsW10+KCgpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5lbnRpdHlEZWYuaW50ZXJmYWNlcz8ubWFzdGVyPy5zaW5nbGU/LmFjdGlvbnM/Lm1hcCgodHIpID0+IG5ldyBBWFBFbnRpdHlDb21tYW5kVHJpZ2dlclZpZXdNb2RlbCh0aGlzLmVudGl0eURlZiwgdHIpKSA/PyBbXTtcclxuICAgIH0pO1xyXG5cclxuICAgIHB1YmxpYyBwcmltYXJ5QWN0aW9ucyA9IGNvbXB1dGVkPEFYUEVudGl0eUNvbW1hbmRUcmlnZ2VyVmlld01vZGVsW10+KCgpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5hY3Rpb25zKCkuZmlsdGVyKGMgPT4gYy5wcmlvcml0eSA9PSAncHJpbWFyeScpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcHVibGljIHNlY29uZGFyeUFjdGlvbnMgPSBjb21wdXRlZDxBWFBFbnRpdHlDb21tYW5kVHJpZ2dlclZpZXdNb2RlbFtdPigoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aW9ucygpLmZpbHRlcihjID0+IGMucHJpb3JpdHkgPT0gJ3NlY29uZGFyeScpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcHVibGljIHNlY3Rpb25zID0gY29tcHV0ZWQ8QVhQRW50aXR5TWFzdGVyU2luZ2xlVmlld0dyb3VwVmlld01vZGVsW10+KCgpID0+IHtcclxuICAgICAgICBjb25zdCB2aWV3UHJvcHMgPSB0aGlzLmVudGl0eURlZi5pbnRlcmZhY2VzPy5tYXN0ZXI/LnNpbmdsZT8ucHJvcGVydGllcz8ubWFwKGMgPT4gYy5uYW1lKTtcclxuICAgICAgICBjb25zdCBwcm9wcyA9IHRoaXMuZW50aXR5RGVmLnByb3BlcnRpZXMuZmlsdGVyKGMgPT5cclxuICAgICAgICAgICAgYy5ncm91cElkICYmXHJcbiAgICAgICAgICAgIGMuc2NoZW1hLmhpZGRlbiAhPSB0cnVlICYmXHJcbiAgICAgICAgICAgIHZpZXdQcm9wcz8uaW5jbHVkZXMoYy5uYW1lKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgY29uc3QgZ3JvdXBzID0gdGhpcy5lbnRpdHlEZWYuaW50ZXJmYWNlcz8ubWFzdGVyPy5zaW5nbGU/LnNlY3Rpb25zPy5maWx0ZXIoZyA9PlxyXG4gICAgICAgICAgICBwcm9wcy5zb21lKHAgPT4gcC5ncm91cElkID09IGcuaWQpXHJcbiAgICAgICAgKSA/PyBbXTtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBncm91cHM/Lm1hcCgoc2VjdGlvbikgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IEFYUEVudGl0eU1hc3RlclNpbmdsZVZpZXdHcm91cFZpZXdNb2RlbCh0aGlzLmVudGl0eURlZiwgc2VjdGlvbilcclxuICAgICAgICB9KVxyXG4gICAgICAgIHJldHVybiAocmVzdWx0ID8/IFtdKSBhcyBBWFBFbnRpdHlNYXN0ZXJTaW5nbGVWaWV3R3JvdXBWaWV3TW9kZWxbXTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vKioqKioqKioqKioqKioqKioqIFRpdGxlICoqKioqKioqKioqKioqKioqKi8vXHJcbiAgICBwdWJsaWMgdGl0bGUgPSBjb21wdXRlZDxzdHJpbmc+KCgpID0+IHtcclxuICAgICAgICBjb25zdCBzdWdnZXN0ZWRQcm9wcyA9IHRoaXMuZW50aXR5RGVmLnByb3BlcnRpZXMuZmluZCgoYykgPT4gWyd0aXRsZScsICduYW1lJywgJ2NvZGUnXS5pbmNsdWRlcyhjLm5hbWUpKTtcclxuICAgICAgICBsZXQgc3VnZ2VzdGVkRm9ybWF0ID0gJ0l0ZW0gI3t7aWR9fSc7XHJcbiAgICAgICAgaWYgKHN1Z2dlc3RlZFByb3BzKSBzdWdnZXN0ZWRGb3JtYXQgPSBge3ske3N1Z2dlc3RlZFByb3BzLm5hbWV9fX1gO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdFNlcnZpY2UuZm9ybWF0KHRoaXMuX3ZpZXdEZWYudGl0bGUgPz8gc3VnZ2VzdGVkRm9ybWF0LFxyXG4gICAgICAgICAgICAnc3RyaW5nJyxcclxuICAgICAgICAgICAgdGhpcy5jb250ZXh0KClcclxuICAgICAgICApO1xyXG4gICAgfSk7XHJcbiAgICAvLyoqKioqKioqKioqKioqKioqKiBEZXNjcmlwdGlvbiAqKioqKioqKioqKioqKioqKiovL1xyXG4gICAgcHVibGljIGRlc2NyaXB0aW9uID0gY29tcHV0ZWQ8c3RyaW5nIHwgbnVsbD4oKCkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl92aWV3RGVmLmRlc2NyaXB0aW9uID8gdGhpcy5mb3JtYXRTZXJ2aWNlLmZvcm1hdCh0aGlzLl92aWV3RGVmLmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAnc3RyaW5nJyxcclxuICAgICAgICAgICAgdGhpcy5jb250ZXh0KClcclxuICAgICAgICApIDogbnVsbDtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vKioqKioqKioqKioqKioqKioqIEJlYXJkY3J1bWJzICoqKioqKioqKioqKioqKioqKi8vXHJcbiAgICBwdWJsaWMgYmVhcmRjcnVtYnMgPSBjb21wdXRlZDxBWFBCZWFyZENydW1iW10+KCgpID0+IHtcclxuICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB0aXRsZTogXCJIb21lXCIsXHJcbiAgICAgICAgICAgICAgICBpY29uOiBcImZhLXNvbGlkIGZhLWhvbWUgYXgtdGV4dC14cyBheC1tZS0yXCIsXHJcbiAgICAgICAgICAgICAgICB1cmw6IFtgLyR7dGhpcy5zZXNzaW9uLmFwcGxpY2F0aW9uPy5uYW1lfWBdXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHRpdGxlOiB0aGlzLmVudGl0eURlZi5mb3JtYXRzLnBsdXJhbCA/PyB0aGlzLmVudGl0eURlZi5mb3JtYXRzLmluZGl2aWR1YWwsXHJcbiAgICAgICAgICAgICAgICB1cmw6IFtgLyR7dGhpcy5zZXNzaW9uLmFwcGxpY2F0aW9uPy5uYW1lfWAsICdtJywgYCR7dGhpcy5lbnRpdHlEZWYubW9kdWxlfWAsICdlJywgYCR7dGhpcy5lbnRpdHlEZWYubmFtZX1gLCAnbGlzdCddXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHRpdGxlOiB0aGlzLnRpdGxlKCksXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICBdXHJcbiAgICB9KTtcclxuXHJcblxyXG4gICAgcHVibGljIHJlbGF0ZWRFbnRpdGllcyA9IGNvbXB1dGVkPEFYUEVudGl0eURldGFpbExpc3RWaWV3TW9kZWxbXT4oKCkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmVudGl0eURlZi5yZWxhdGVkRW50aXRpZXM/Lm1hcChyZSA9PlxyXG4gICAgICAgICAgICBuZXcgQVhQRW50aXR5RGV0YWlsTGlzdFZpZXdNb2RlbCh0aGlzLmluamVjdG9yLCByZSwgeyBlbnRpdHk6IHRoaXMuZW50aXR5RGVmLCBkYXRhOiB0aGlzLmVudGl0eURhdGEgfSlcclxuICAgICAgICApID8/IFtdXHJcbiAgICB9KTtcclxuXHJcblxyXG4gICAgcHVibGljIGFzeW5jIGV4ZWN1dGVDb21tYW5kKGNvbW1hbmROYW1lOiBzdHJpbmcsIGRhdGE6IGFueSA9IG51bGwpIHtcclxuICAgICAgICAvLyBkZWJ1Z2dlclxyXG4gICAgICAgIC8vVE9ETzogc3ludGFjdCBmb3Igd29ya2Zsb3dcclxuICAgICAgICBzd2l0Y2ggKGNvbW1hbmROYW1lKSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ2RlbGV0ZS1lbnRpdHknOlxyXG4gICAgICAgICAgICAgICAgdGhpcy53b3JrZmxvdy5leGVjdXRlKCdkZWxldGUtZW50aXR5Jywge1xyXG4gICAgICAgICAgICAgICAgICAgIGVudGl0eTogdGhpcy5lbnRpdHlEZWYuc291cmNlLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IFt0aGlzLmNvbnRleHQoKV0sXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdtb2RpZnktZW50aXR5LXNlY3Rpb24nOiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLndvcmtmbG93LmV4ZWN1dGUoJ21vZGlmeS1lbnRpdHktc2VjdGlvbicsIHtcclxuICAgICAgICAgICAgICAgICAgICBlbnRpdHk6IHRoaXMuZW50aXR5RGVmLnNvdXJjZSxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0aGlzLmNvbnRleHQoKS5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczogKGRhdGEgYXMgQVhQRW50aXR5TWFzdGVyU2luZ2xlVmlld0dyb3VwVmlld01vZGVsKS5lZGl0YWJsZVByb3BzKCkubWFwKG0gPT4gbS5uYW1lKCkpLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYWN0aW9uID0gdGhpcy5hY3Rpb25zKCkuZmluZChjID0+IGMubmFtZSA9PSBjb21tYW5kTmFtZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53b3JrZmxvdy5leGVjdXRlKGNvbW1hbmROYW1lLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eTogdGhpcy5lbnRpdHlEZWYuc291cmNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBhY3Rpb24/LnNjb3BlID09IEFYUEVudGl0eUNvbW1hbmRTY29wZS5JbmRpdmlkdWFsID8gZGF0YSA6IG51bGxcclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIEFYUEVudGl0eURldGFpbFZpZXdNb2RlbEZhY3Rvcnkge1xyXG4gICAgcHJpdmF0ZSBlbnRpdHlTZXJ2aWNlID0gaW5qZWN0KEFYUEVudGl0eURlZmluaXRpb25SZWdpc3RyeVNlcnZpY2UpO1xyXG4gICAgcHJpdmF0ZSBsYXlvdXQgPSBpbmplY3QoQVhQTGF5b3V0U2VydmljZSk7XHJcbiAgICBwcml2YXRlIGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgY3JlYXRlKG1vZHVsZU5hbWU6IHN0cmluZywgZW50aXR5TmFtZTogc3RyaW5nLCBpZDogc3RyaW5nKTogUHJvbWlzZTxBWFBFbnRpdHlNYXN0ZXJTaW5nbGVWaWV3TW9kZWw+IHtcclxuICAgICAgICBjb25zdCBjb25maWcgPSBhd2FpdCB0aGlzLmVudGl0eVNlcnZpY2UucmVzb2x2ZShtb2R1bGVOYW1lLCBlbnRpdHlOYW1lKTtcclxuICAgICAgICB0aGlzLmxheW91dC5zZXROYXZpZ2F0aW9uTG9hZGluZyh0cnVlKTtcclxuICAgICAgICBpZiAoY29uZmlnLnF1ZXJpZXMuYnlLZXkpIHtcclxuICAgICAgICAgICAgY29uc3QgZnVuYyA9IGNvbmZpZy5xdWVyaWVzLmJ5S2V5LmV4ZWN1dGUgYXMgRnVuY3Rpb247XHJcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBmdW5jKGlkKTtcclxuICAgICAgICAgICAgdGhpcy5sYXlvdXQuc2V0TmF2aWdhdGlvbkxvYWRpbmcoZmFsc2UpO1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IEFYUEVudGl0eU1hc3RlclNpbmdsZVZpZXdNb2RlbCh0aGlzLmluamVjdG9yLCBjb25maWcsIGRhdGEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmxheW91dC5zZXROYXZpZ2F0aW9uTG9hZGluZyhmYWxzZSk7XHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCdjYW5ub3QgZmV0Y2ggJyk7XHJcbiAgICB9XHJcbn1cclxuXHJcblxyXG5leHBvcnQgY29uc3QgQVhQRW50aXR5RGV0YWlsVmlld01vZGVsUmVzb2x2ZXI6IFJlc29sdmVGbjxQcm9taXNlPEFYUEVudGl0eU1hc3RlclNpbmdsZVZpZXdNb2RlbD4+ID0gKFxyXG4gICAgcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXHJcbiAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCxcclxuICAgIHNlcnZpY2U6IEFYUEVudGl0eURldGFpbFZpZXdNb2RlbEZhY3RvcnkgPSBpbmplY3QoQVhQRW50aXR5RGV0YWlsVmlld01vZGVsRmFjdG9yeSlcclxuKTogUHJvbWlzZTxBWFBFbnRpdHlNYXN0ZXJTaW5nbGVWaWV3TW9kZWw+ID0+IHtcclxuICAgIGNvbnN0IG1vZHVsZU5hbWUgPSByb3V0ZS5wYXJlbnQ/LnBhcmFtTWFwLmdldCgnbW9kdWxlJykgYXMgc3RyaW5nO1xyXG4gICAgY29uc3QgZW50aXR5TmFtZSA9IHJvdXRlLnBhcmFtTWFwLmdldCgnZW50aXR5JykgYXMgc3RyaW5nO1xyXG4gICAgY29uc3QgaWQgPSByb3V0ZS5wYXJhbU1hcC5nZXQoJ2lkJykgYXMgc3RyaW5nO1xyXG4gICAgLy9cclxuICAgIHJldHVybiBzZXJ2aWNlLmNyZWF0ZShtb2R1bGVOYW1lLCBlbnRpdHlOYW1lLCBpZCk7XHJcbn07XHJcblxyXG5cclxuIl19
|