@acorex/modules 21.0.0-next.88 → 21.0.0-next.89
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/fesm2022/{acorex-modules-application-management-features-widget-view.component-uc8eGA-k.mjs → acorex-modules-application-management-features-widget-view.component-BNTT58PB.mjs} +2 -2
- package/fesm2022/{acorex-modules-application-management-features-widget-view.component-uc8eGA-k.mjs.map → acorex-modules-application-management-features-widget-view.component-BNTT58PB.mjs.map} +1 -1
- package/fesm2022/acorex-modules-application-management.mjs +1 -1
- package/fesm2022/{acorex-modules-assessment-management-acorex-modules-assessment-management-WGRBHMmQ.mjs → acorex-modules-assessment-management-acorex-modules-assessment-management-BDU2DZEq.mjs} +108 -53
- package/fesm2022/acorex-modules-assessment-management-acorex-modules-assessment-management-BDU2DZEq.mjs.map +1 -0
- package/fesm2022/{acorex-modules-assessment-management-assessment-session-answers-view.util-BWG9hI3t.mjs → acorex-modules-assessment-management-assessment-session-answers-view.util-CzgivU3s.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-assessment-session-answers-view.util-BWG9hI3t.mjs.map → acorex-modules-assessment-management-assessment-session-answers-view.util-CzgivU3s.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-fill-assessment-session.command-BtZ68Wt5.mjs → acorex-modules-assessment-management-fill-assessment-session.command-D6i0YZ3k.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-fill-assessment-session.command-BtZ68Wt5.mjs.map → acorex-modules-assessment-management-fill-assessment-session.command-D6i0YZ3k.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-index-_rWx2Vje.mjs → acorex-modules-assessment-management-index-BPQ9AiD6.mjs} +3 -3
- package/fesm2022/{acorex-modules-assessment-management-index-_rWx2Vje.mjs.map → acorex-modules-assessment-management-index-BPQ9AiD6.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-index-CL6OmKwh.mjs → acorex-modules-assessment-management-index-BaMs2R6k.mjs} +3 -3
- package/fesm2022/{acorex-modules-assessment-management-index-CL6OmKwh.mjs.map → acorex-modules-assessment-management-index-BaMs2R6k.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-index-BDqMpgdu.mjs → acorex-modules-assessment-management-index-YVENsZN4.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-index-BDqMpgdu.mjs.map → acorex-modules-assessment-management-index-YVENsZN4.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-index-BwZPHD1o.mjs → acorex-modules-assessment-management-index-oXkGQDat.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-index-BwZPHD1o.mjs.map → acorex-modules-assessment-management-index-oXkGQDat.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-preview-question.command-DMeQF_J0.mjs → acorex-modules-assessment-management-preview-question.command-B6rHNI4x.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-preview-question.command-DMeQF_J0.mjs.map → acorex-modules-assessment-management-preview-question.command-B6rHNI4x.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-preview-questionnaire.command-CKmY95wj.mjs → acorex-modules-assessment-management-preview-questionnaire.command-DXB1Y7hz.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-preview-questionnaire.command-CKmY95wj.mjs.map → acorex-modules-assessment-management-preview-questionnaire.command-DXB1Y7hz.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-CXf2p-tS.mjs → acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-D2CNfj8T.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-CXf2p-tS.mjs.map → acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-D2CNfj8T.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer-popup.component-CLZuPzUo.mjs → acorex-modules-assessment-management-questionnaire-viewer-popup.component-CF_tV-2p.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer-popup.component-CLZuPzUo.mjs.map → acorex-modules-assessment-management-questionnaire-viewer-popup.component-CF_tV-2p.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-review-assessment-session.command-CcGyOKUI.mjs → acorex-modules-assessment-management-review-assessment-session.command-CtEvoUxA.mjs} +3 -3
- package/fesm2022/{acorex-modules-assessment-management-review-assessment-session.command-CcGyOKUI.mjs.map → acorex-modules-assessment-management-review-assessment-session.command-CtEvoUxA.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-view-session-answers.command-CmieuVjM.mjs → acorex-modules-assessment-management-view-session-answers.command-CkyBkiXC.mjs} +3 -3
- package/fesm2022/{acorex-modules-assessment-management-view-session-answers.command-CmieuVjM.mjs.map → acorex-modules-assessment-management-view-session-answers.command-CkyBkiXC.mjs.map} +1 -1
- package/fesm2022/acorex-modules-assessment-management.mjs +1 -1
- package/fesm2022/acorex-modules-asset-management.mjs +37 -23
- package/fesm2022/acorex-modules-asset-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-auth-acorex-modules-auth-CMRT9dQC.mjs → acorex-modules-auth-acorex-modules-auth-Nw701LHa.mjs} +30 -30
- package/fesm2022/{acorex-modules-auth-acorex-modules-auth-CMRT9dQC.mjs.map → acorex-modules-auth-acorex-modules-auth-Nw701LHa.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-app-chooser.component-mOPBXcQc.mjs → acorex-modules-auth-app-chooser.component-FqCIt_8E.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-app-chooser.component-mOPBXcQc.mjs.map → acorex-modules-auth-app-chooser.component-FqCIt_8E.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-change-password.command-CceYk6DE.mjs → acorex-modules-auth-change-password.command-DND9Oka4.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-change-password.command-CceYk6DE.mjs.map → acorex-modules-auth-change-password.command-DND9Oka4.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-edit-account-info.command-jF8A_Jsy.mjs → acorex-modules-auth-edit-account-info.command-bmdkZzYt.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-edit-account-info.command-jF8A_Jsy.mjs.map → acorex-modules-auth-edit-account-info.command-bmdkZzYt.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-lock-screen.command-BvruxuiF.mjs → acorex-modules-auth-lock-screen.command-DSGXqDVD.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-lock-screen.command-BvruxuiF.mjs.map → acorex-modules-auth-lock-screen.command-DSGXqDVD.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-login.module-CmBClJv2.mjs → acorex-modules-auth-login.module-DC3dzDf0.mjs} +4 -4
- package/fesm2022/{acorex-modules-auth-login.module-CmBClJv2.mjs.map → acorex-modules-auth-login.module-DC3dzDf0.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-master.layout-CLGmgSqo.mjs → acorex-modules-auth-master.layout-iMOvevEv.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-master.layout-CLGmgSqo.mjs.map → acorex-modules-auth-master.layout-iMOvevEv.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-oauth-callback.component-yxfNoBS-.mjs → acorex-modules-auth-oauth-callback.component-s9WMG92M.mjs} +3 -3
- package/fesm2022/{acorex-modules-auth-oauth-callback.component-yxfNoBS-.mjs.map → acorex-modules-auth-oauth-callback.component-s9WMG92M.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-open-sessions.command-DsWueHa3.mjs → acorex-modules-auth-open-sessions.command-CLL8rgjE.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-open-sessions.command-DsWueHa3.mjs.map → acorex-modules-auth-open-sessions.command-CLL8rgjE.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-C3_tAt8j.mjs → acorex-modules-auth-password.component-BOEi91f7.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-password.component-C3_tAt8j.mjs.map → acorex-modules-auth-password.component-BOEi91f7.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-BrTEuc51.mjs → acorex-modules-auth-password.component-eA_3LtcO.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-password.component-BrTEuc51.mjs.map → acorex-modules-auth-password.component-eA_3LtcO.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-profile-activity-chart.component-C6_0oeCC.mjs → acorex-modules-auth-profile-activity-chart.component-BK1k4Lrh.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-profile-activity-chart.component-C6_0oeCC.mjs.map → acorex-modules-auth-profile-activity-chart.component-BK1k4Lrh.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-profile-delete-account-danger-zone.component-EhmuT88j.mjs → acorex-modules-auth-profile-delete-account-danger-zone.component-CHru1be-.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-profile-delete-account-danger-zone.component-EhmuT88j.mjs.map → acorex-modules-auth-profile-delete-account-danger-zone.component-CHru1be-.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-profile-page-component.provider-BHEdqBbF.mjs → acorex-modules-auth-profile-page-component.provider-MCsUPTrt.mjs} +4 -4
- package/fesm2022/{acorex-modules-auth-profile-page-component.provider-BHEdqBbF.mjs.map → acorex-modules-auth-profile-page-component.provider-MCsUPTrt.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-profile-page.component-Q0ixAWtC.mjs → acorex-modules-auth-profile-page.component-DOj2GhFJ.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-profile-page.component-Q0ixAWtC.mjs.map → acorex-modules-auth-profile-page.component-DOj2GhFJ.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-remove-pin-code.command-j5iobHAs.mjs → acorex-modules-auth-remove-pin-code.command-CqRxKR4Y.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-remove-pin-code.command-j5iobHAs.mjs.map → acorex-modules-auth-remove-pin-code.command-CqRxKR4Y.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-routes-BFACBfAG.mjs → acorex-modules-auth-routes-FZRnzT9V.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-routes-BFACBfAG.mjs.map → acorex-modules-auth-routes-FZRnzT9V.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-session-lock-overlay.component-flpWlR8p.mjs → acorex-modules-auth-session-lock-overlay.component-6o2uU9U5.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-session-lock-overlay.component-flpWlR8p.mjs.map → acorex-modules-auth-session-lock-overlay.component-6o2uU9U5.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-set-pin-code.command-B0sXGsok.mjs → acorex-modules-auth-set-pin-code.command-CsXJ30Fs.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-set-pin-code.command-B0sXGsok.mjs.map → acorex-modules-auth-set-pin-code.command-CsXJ30Fs.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-set-pin-code.component-D95Hn8R-.mjs → acorex-modules-auth-set-pin-code.component-DJhqru7e.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-set-pin-code.component-D95Hn8R-.mjs.map → acorex-modules-auth-set-pin-code.component-DJhqru7e.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-settings.provider-D0-hEHd2.mjs → acorex-modules-auth-settings.provider-BJ7lDjbr.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-settings.provider-D0-hEHd2.mjs.map → acorex-modules-auth-settings.provider-BJ7lDjbr.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-tenant-chooser.component-DBIVSBaM.mjs → acorex-modules-auth-tenant-chooser.component-DR7rH0m1.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-tenant-chooser.component-DBIVSBaM.mjs.map → acorex-modules-auth-tenant-chooser.component-DR7rH0m1.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-two-factor.module-DwXsAUlJ.mjs → acorex-modules-auth-two-factor.module-BvvDIlqe.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-two-factor.module-DwXsAUlJ.mjs.map → acorex-modules-auth-two-factor.module-BvvDIlqe.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-view-login-history.command-BpCog3dx.mjs → acorex-modules-auth-view-login-history.command-BUiXUbjA.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-view-login-history.command-BpCog3dx.mjs.map → acorex-modules-auth-view-login-history.command-BUiXUbjA.mjs.map} +1 -1
- package/fesm2022/acorex-modules-auth.mjs +1 -1
- package/fesm2022/acorex-modules-business-core.mjs +0 -6
- package/fesm2022/acorex-modules-business-core.mjs.map +1 -1
- package/fesm2022/{acorex-modules-common-search-popup.component-6_qrYkc2.mjs → acorex-modules-common-search-popup.component-BhItO3Sr.mjs} +2 -2
- package/fesm2022/{acorex-modules-common-search-popup.component-6_qrYkc2.mjs.map → acorex-modules-common-search-popup.component-BhItO3Sr.mjs.map} +1 -1
- package/fesm2022/acorex-modules-common.mjs +30 -43
- package/fesm2022/acorex-modules-common.mjs.map +1 -1
- package/fesm2022/{acorex-modules-contact-core-acorex-modules-contact-core-CBMdv1GN.mjs → acorex-modules-contact-core-acorex-modules-contact-core-CELmV51p.mjs} +8 -7
- package/fesm2022/acorex-modules-contact-core-acorex-modules-contact-core-CELmV51p.mjs.map +1 -0
- package/fesm2022/{acorex-modules-contact-core-entity.provider-B8__CVGP.mjs → acorex-modules-contact-core-entity.provider-AH-gvpLJ.mjs} +3 -3
- package/fesm2022/{acorex-modules-contact-core-entity.provider-B8__CVGP.mjs.map → acorex-modules-contact-core-entity.provider-AH-gvpLJ.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-contact-core-menu.provider-C-iEIPGe.mjs → acorex-modules-contact-core-menu.provider-T9IuzSBf.mjs} +11 -5
- package/fesm2022/acorex-modules-contact-core-menu.provider-T9IuzSBf.mjs.map +1 -0
- package/fesm2022/{acorex-modules-contact-core-permission-definition.provider-DXjdp846.mjs → acorex-modules-contact-core-permission-definition.provider-CnxI1ujq.mjs} +2 -2
- package/fesm2022/{acorex-modules-contact-core-permission-definition.provider-DXjdp846.mjs.map → acorex-modules-contact-core-permission-definition.provider-CnxI1ujq.mjs.map} +1 -1
- package/fesm2022/acorex-modules-contact-core.mjs +1 -1
- package/fesm2022/{acorex-modules-conversation-acorex-modules-conversation-CUjTT3M7.mjs → acorex-modules-conversation-acorex-modules-conversation-B_JcAHvL.mjs} +6394 -3666
- package/fesm2022/acorex-modules-conversation-acorex-modules-conversation-B_JcAHvL.mjs.map +1 -0
- package/fesm2022/acorex-modules-conversation-after-message-sent.command-DcrS7_vV.mjs +34 -0
- package/fesm2022/acorex-modules-conversation-after-message-sent.command-DcrS7_vV.mjs.map +1 -0
- package/fesm2022/{acorex-modules-conversation-assist-delegated-agent-detail-popup.component-CGcngwdA.mjs → acorex-modules-conversation-assist-delegated-agent-detail-popup.component-BCkJEAmX.mjs} +5 -5
- package/fesm2022/{acorex-modules-conversation-assist-delegated-agent-detail-popup.component-CGcngwdA.mjs.map → acorex-modules-conversation-assist-delegated-agent-detail-popup.component-BCkJEAmX.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-conversation-comments-page.component-hopaF6xW.mjs → acorex-modules-conversation-comments-page.component-B6TJhe4T.mjs} +2 -2
- package/fesm2022/{acorex-modules-conversation-comments-page.component-hopaF6xW.mjs.map → acorex-modules-conversation-comments-page.component-B6TJhe4T.mjs.map} +1 -1
- package/fesm2022/acorex-modules-conversation-emit-typing-indicator.command-CWRdPl-S.mjs +30 -0
- package/fesm2022/acorex-modules-conversation-emit-typing-indicator.command-CWRdPl-S.mjs.map +1 -0
- package/fesm2022/acorex-modules-conversation-mark-conversation-unread.command-CZlsLAsb.mjs +30 -0
- package/fesm2022/acorex-modules-conversation-mark-conversation-unread.command-CZlsLAsb.mjs.map +1 -0
- package/fesm2022/acorex-modules-conversation-retry-assist-response.command-Cly1-RKt.mjs +34 -0
- package/fesm2022/acorex-modules-conversation-retry-assist-response.command-Cly1-RKt.mjs.map +1 -0
- package/fesm2022/{acorex-modules-conversation-send-assist-chat-message.command-CqDrZKFK.mjs → acorex-modules-conversation-send-assist-chat-message.command-D5QWTKqh.mjs} +19 -9
- package/fesm2022/acorex-modules-conversation-send-assist-chat-message.command-D5QWTKqh.mjs.map +1 -0
- package/fesm2022/{acorex-modules-conversation-start-assist-chat.command-DiDAz-Is.mjs → acorex-modules-conversation-start-assist-chat.command-DkSZj8fj.mjs} +2 -2
- package/fesm2022/{acorex-modules-conversation-start-assist-chat.command-DiDAz-Is.mjs.map → acorex-modules-conversation-start-assist-chat.command-DkSZj8fj.mjs.map} +1 -1
- package/fesm2022/acorex-modules-conversation-sync-read-state.command-jiEsdxUB.mjs +62 -0
- package/fesm2022/acorex-modules-conversation-sync-read-state.command-jiEsdxUB.mjs.map +1 -0
- package/fesm2022/acorex-modules-conversation.mjs +1 -1
- package/fesm2022/acorex-modules-customer-management.mjs +2 -2
- package/fesm2022/acorex-modules-customer-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-dashboard-management-acorex-modules-dashboard-management-Lx3VuIg6.mjs → acorex-modules-dashboard-management-acorex-modules-dashboard-management-DLuhOPFz.mjs} +1034 -395
- package/fesm2022/acorex-modules-dashboard-management-acorex-modules-dashboard-management-DLuhOPFz.mjs.map +1 -0
- package/fesm2022/{acorex-modules-dashboard-management-index-DvY9N8FF.mjs → acorex-modules-dashboard-management-index-gjCiELmH.mjs} +2 -2
- package/fesm2022/{acorex-modules-dashboard-management-index-DvY9N8FF.mjs.map → acorex-modules-dashboard-management-index-gjCiELmH.mjs.map} +1 -1
- package/fesm2022/acorex-modules-dashboard-management.mjs +1 -1
- package/fesm2022/{acorex-modules-data-management-index-CxVSgxTM.mjs → acorex-modules-data-management-index-BYQncZ6e.mjs} +28 -6
- package/fesm2022/acorex-modules-data-management-index-BYQncZ6e.mjs.map +1 -0
- package/fesm2022/acorex-modules-data-management.mjs +6 -6
- package/fesm2022/acorex-modules-data-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-document-management.mjs +4 -4
- package/fesm2022/acorex-modules-document-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-form-template-management-template-picker.component-cLToc9fP.mjs → acorex-modules-form-template-management-template-picker.component-BGf98ooQ.mjs} +2 -2
- package/fesm2022/{acorex-modules-form-template-management-template-picker.component-cLToc9fP.mjs.map → acorex-modules-form-template-management-template-picker.component-BGf98ooQ.mjs.map} +1 -1
- package/fesm2022/acorex-modules-form-template-management.mjs +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-acorex-modules-human-capital-management-DpVAfk3i.mjs → acorex-modules-human-capital-management-acorex-modules-human-capital-management-VJ2NUSm1.mjs} +20 -20
- package/fesm2022/{acorex-modules-human-capital-management-acorex-modules-human-capital-management-DpVAfk3i.mjs.map → acorex-modules-human-capital-management-acorex-modules-human-capital-management-VJ2NUSm1.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-approve-leave-request.command-BDv_eotn.mjs → acorex-modules-human-capital-management-approve-leave-request.command-FgXkyZR_.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-approve-leave-request.command-BDv_eotn.mjs.map → acorex-modules-human-capital-management-approve-leave-request.command-FgXkyZR_.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-assign-position-assignment.command-CT49oS39.mjs → acorex-modules-human-capital-management-assign-position-assignment.command-D2yCvifI.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-assign-position-assignment.command-CT49oS39.mjs.map → acorex-modules-human-capital-management-assign-position-assignment.command-D2yCvifI.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-cancel-leave-request.command-zAunbLbf.mjs → acorex-modules-human-capital-management-cancel-leave-request.command-DnmsVNwU.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-cancel-leave-request.command-zAunbLbf.mjs.map → acorex-modules-human-capital-management-cancel-leave-request.command-DnmsVNwU.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-edit-personal-info.command-8LKMNm4Z.mjs → acorex-modules-human-capital-management-edit-personal-info.command-B0ZUfbqn.mjs} +2 -6
- package/fesm2022/acorex-modules-human-capital-management-edit-personal-info.command-B0ZUfbqn.mjs.map +1 -0
- package/fesm2022/{acorex-modules-human-capital-management-edit-signature.command-BQ6Ysh-A.mjs → acorex-modules-human-capital-management-edit-signature.command-h2kTqSg0.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-edit-signature.command-BQ6Ysh-A.mjs.map → acorex-modules-human-capital-management-edit-signature.command-h2kTqSg0.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-reject-leave-request.command-CEAUhv0o.mjs → acorex-modules-human-capital-management-reject-leave-request.command-BdrdgvbN.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-reject-leave-request.command-CEAUhv0o.mjs.map → acorex-modules-human-capital-management-reject-leave-request.command-BdrdgvbN.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-revoke-position-assignment.command-DakWOslg.mjs → acorex-modules-human-capital-management-revoke-position-assignment.command-S7Px6Y4B.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-revoke-position-assignment.command-DakWOslg.mjs.map → acorex-modules-human-capital-management-revoke-position-assignment.command-S7Px6Y4B.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-start-leave-request-flow.command-BXMGzUuM.mjs → acorex-modules-human-capital-management-start-leave-request-flow.command-C_tE-D_Y.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-start-leave-request-flow.command-BXMGzUuM.mjs.map → acorex-modules-human-capital-management-start-leave-request-flow.command-C_tE-D_Y.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-start-lifecycle-event-flow.command-B1s_i8U3.mjs → acorex-modules-human-capital-management-start-lifecycle-event-flow.command-mMP3Yy01.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-start-lifecycle-event-flow.command-B1s_i8U3.mjs.map → acorex-modules-human-capital-management-start-lifecycle-event-flow.command-mMP3Yy01.mjs.map} +1 -1
- package/fesm2022/acorex-modules-human-capital-management.mjs +1 -1
- package/fesm2022/acorex-modules-learning-management.mjs +1 -1
- package/fesm2022/acorex-modules-learning-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-location-management.mjs +2 -2
- package/fesm2022/acorex-modules-location-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-meeting-management.mjs +1 -1
- package/fesm2022/acorex-modules-meeting-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-notification-management-acorex-modules-notification-management-DZSXFNgo.mjs → acorex-modules-notification-management-acorex-modules-notification-management-DZWUyu54.mjs} +4 -4
- package/fesm2022/{acorex-modules-notification-management-acorex-modules-notification-management-DZSXFNgo.mjs.map → acorex-modules-notification-management-acorex-modules-notification-management-DZWUyu54.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-notification-management-notification-page.component-swzDjJUP.mjs → acorex-modules-notification-management-notification-page.component-BNxTMY-C.mjs} +3 -3
- package/fesm2022/{acorex-modules-notification-management-notification-page.component-swzDjJUP.mjs.map → acorex-modules-notification-management-notification-page.component-BNxTMY-C.mjs.map} +1 -1
- package/fesm2022/acorex-modules-notification-management.mjs +1 -1
- package/fesm2022/{acorex-modules-organization-management-acorex-modules-organization-management-B6zOrUAS.mjs → acorex-modules-organization-management-acorex-modules-organization-management-BjKrMO_L.mjs} +37 -37
- package/fesm2022/{acorex-modules-organization-management-acorex-modules-organization-management-B6zOrUAS.mjs.map → acorex-modules-organization-management-acorex-modules-organization-management-BjKrMO_L.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-add-business-unit-to-business-unit.command-BG6AQs-j.mjs → acorex-modules-organization-management-add-business-unit-to-business-unit.command-CgqydSZh.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-add-business-unit-to-business-unit.command-BG6AQs-j.mjs.map → acorex-modules-organization-management-add-business-unit-to-business-unit.command-CgqydSZh.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-add-position-to-business-unit.command-DzA0h9ED.mjs → acorex-modules-organization-management-add-position-to-business-unit.command-B_BIg-aF.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-add-position-to-business-unit.command-DzA0h9ED.mjs.map → acorex-modules-organization-management-add-position-to-business-unit.command-B_BIg-aF.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-add-team-to-business-unit.command-5ZGzmp95.mjs → acorex-modules-organization-management-add-team-to-business-unit.command-zFql0VH1.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-add-team-to-business-unit.command-5ZGzmp95.mjs.map → acorex-modules-organization-management-add-team-to-business-unit.command-zFql0VH1.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-entity.provider-DKhXlL2j.mjs → acorex-modules-organization-management-entity.provider-Buchg68Q.mjs} +15 -15
- package/fesm2022/{acorex-modules-organization-management-entity.provider-DKhXlL2j.mjs.map → acorex-modules-organization-management-entity.provider-Buchg68Q.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-feature-definition.provider-DhCn97pE.mjs → acorex-modules-organization-management-feature-definition.provider-CulEun4H.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-feature-definition.provider-DhCn97pE.mjs.map → acorex-modules-organization-management-feature-definition.provider-CulEun4H.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-job-definition-pages-component.provider-C1WFmQ2x.mjs → acorex-modules-organization-management-job-definition-pages-component.provider-D3k2BNKU.mjs} +4 -4
- package/fesm2022/{acorex-modules-organization-management-job-definition-pages-component.provider-C1WFmQ2x.mjs.map → acorex-modules-organization-management-job-definition-pages-component.provider-D3k2BNKU.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-job-definition-responsibilities-page.component-Bs28OWW8.mjs → acorex-modules-organization-management-job-definition-responsibilities-page.component-CSwHAkh5.mjs} +3 -3
- package/fesm2022/{acorex-modules-organization-management-job-definition-responsibilities-page.component-Bs28OWW8.mjs.map → acorex-modules-organization-management-job-definition-responsibilities-page.component-CSwHAkh5.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-job-definition-skills-page.component-C66FEcxc.mjs → acorex-modules-organization-management-job-definition-skills-page.component-CVo37Mx0.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-job-definition-skills-page.component-C66FEcxc.mjs.map → acorex-modules-organization-management-job-definition-skills-page.component-CVo37Mx0.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-job-level.datasource-DcOVF99r.mjs → acorex-modules-organization-management-job-level.datasource-CMxMInko.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-job-level.datasource-DcOVF99r.mjs.map → acorex-modules-organization-management-job-level.datasource-CMxMInko.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-menu.provider-B0v8w3eH.mjs → acorex-modules-organization-management-menu.provider-BL99vlod.mjs} +3 -3
- package/fesm2022/{acorex-modules-organization-management-menu.provider-B0v8w3eH.mjs.map → acorex-modules-organization-management-menu.provider-BL99vlod.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-org-chart-default-node-contribution.provider-B07M8tKi.mjs → acorex-modules-organization-management-org-chart-default-node-contribution.provider-CfvmOwYD.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-org-chart-default-node-contribution.provider-B07M8tKi.mjs.map → acorex-modules-organization-management-org-chart-default-node-contribution.provider-CfvmOwYD.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-org-chart-employee-flyout-contribution.provider-DSvij02R.mjs → acorex-modules-organization-management-org-chart-employee-flyout-contribution.provider-CsvhhcoW.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-org-chart-employee-flyout-contribution.provider-DSvij02R.mjs.map → acorex-modules-organization-management-org-chart-employee-flyout-contribution.provider-CsvhhcoW.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-org-chart-position-employee-node-contribution.provider-BYWq-Aco.mjs → acorex-modules-organization-management-org-chart-position-employee-node-contribution.provider-Dvo2XEHn.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-org-chart-position-employee-node-contribution.provider-BYWq-Aco.mjs.map → acorex-modules-organization-management-org-chart-position-employee-node-contribution.provider-Dvo2XEHn.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-org-chart-ux-node-contribution.provider-DiMvAEbk.mjs → acorex-modules-organization-management-org-chart-ux-node-contribution.provider-BsBsdoII.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-org-chart-ux-node-contribution.provider-DiMvAEbk.mjs.map → acorex-modules-organization-management-org-chart-ux-node-contribution.provider-BsBsdoII.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-org-chart.page-DwHB4ZGl.mjs → acorex-modules-organization-management-org-chart.page-DJNfsp4z.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-org-chart.page-DwHB4ZGl.mjs.map → acorex-modules-organization-management-org-chart.page-DJNfsp4z.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-permission-definition.provider-CynLhaYz.mjs → acorex-modules-organization-management-permission-definition.provider-CuReVYo1.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-permission-definition.provider-CynLhaYz.mjs.map → acorex-modules-organization-management-permission-definition.provider-CuReVYo1.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-remove-position-from-business-unit.command-DUgDxwtI.mjs → acorex-modules-organization-management-remove-position-from-business-unit.command-mPTX8Vpc.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-remove-position-from-business-unit.command-DUgDxwtI.mjs.map → acorex-modules-organization-management-remove-position-from-business-unit.command-mPTX8Vpc.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-replace-position-assignee.command-BTAwsZNP.mjs → acorex-modules-organization-management-replace-position-assignee.command-DibpVA88.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-replace-position-assignee.command-BTAwsZNP.mjs.map → acorex-modules-organization-management-replace-position-assignee.command-DibpVA88.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-responsibilities-matrix-widget-edit.component-D904V181.mjs → acorex-modules-organization-management-responsibilities-matrix-widget-edit.component-zN1Vz3Om.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-responsibilities-matrix-widget-edit.component-D904V181.mjs.map → acorex-modules-organization-management-responsibilities-matrix-widget-edit.component-zN1Vz3Om.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-responsibilities-matrix-widget-view.component-BMFws_6Y.mjs → acorex-modules-organization-management-responsibilities-matrix-widget-view.component-BYOs9nrw.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-responsibilities-matrix-widget-view.component-BMFws_6Y.mjs.map → acorex-modules-organization-management-responsibilities-matrix-widget-view.component-BYOs9nrw.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-responsibilities-matrix.component-DXmsR1qV.mjs → acorex-modules-organization-management-responsibilities-matrix.component-DVlThT1h.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-responsibilities-matrix.component-DXmsR1qV.mjs.map → acorex-modules-organization-management-responsibilities-matrix.component-DVlThT1h.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-settings.provider-UFqps4Zg.mjs → acorex-modules-organization-management-settings.provider-BxoCS3w7.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-settings.provider-UFqps4Zg.mjs.map → acorex-modules-organization-management-settings.provider-BxoCS3w7.mjs.map} +1 -1
- package/fesm2022/acorex-modules-organization-management.mjs +1 -1
- package/fesm2022/acorex-modules-person-core.mjs +0 -6
- package/fesm2022/acorex-modules-person-core.mjs.map +1 -1
- package/fesm2022/acorex-modules-platform-dev-tools.mjs +2 -2
- package/fesm2022/acorex-modules-platform-dev-tools.mjs.map +1 -1
- package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-DsKPOWpy.mjs → acorex-modules-platform-management-acorex-modules-platform-management-B5hMhQp-.mjs} +2 -2
- package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-DsKPOWpy.mjs.map → acorex-modules-platform-management-acorex-modules-platform-management-B5hMhQp-.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-platform-management-menu-list.component-Br4nL9zq.mjs → acorex-modules-platform-management-menu-list.component-DcOr1v-f.mjs} +3 -3
- package/fesm2022/{acorex-modules-platform-management-menu-list.component-Br4nL9zq.mjs.map → acorex-modules-platform-management-menu-list.component-DcOr1v-f.mjs.map} +1 -1
- package/fesm2022/acorex-modules-platform-management.mjs +1 -1
- package/fesm2022/acorex-modules-product-catalog.mjs +7 -6
- package/fesm2022/acorex-modules-product-catalog.mjs.map +1 -1
- package/fesm2022/acorex-modules-project-management.mjs +1 -1
- package/fesm2022/acorex-modules-project-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-report-management-report-runner-root-page.component-DaPEmTm9.mjs → acorex-modules-report-management-report-runner-root-page.component-CgrBAgqq.mjs} +2 -2
- package/fesm2022/{acorex-modules-report-management-report-runner-root-page.component-DaPEmTm9.mjs.map → acorex-modules-report-management-report-runner-root-page.component-CgrBAgqq.mjs.map} +1 -1
- package/fesm2022/acorex-modules-report-management.mjs +7 -7
- package/fesm2022/acorex-modules-report-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-risk-management-preview-risk-matrix-cell.command-CWG3zUBo.mjs +120 -0
- package/fesm2022/acorex-modules-risk-management-preview-risk-matrix-cell.command-CWG3zUBo.mjs.map +1 -0
- package/fesm2022/acorex-modules-risk-management.mjs +13 -0
- package/fesm2022/acorex-modules-risk-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-security-management.mjs +1 -1
- package/fesm2022/acorex-modules-security-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-settings-management-setting-view.component-CG-GW2yS.mjs → acorex-modules-settings-management-setting-view.component-BRhZR1br.mjs} +109 -15
- package/fesm2022/acorex-modules-settings-management-setting-view.component-BRhZR1br.mjs.map +1 -0
- package/fesm2022/acorex-modules-settings-management.mjs +1 -1
- package/fesm2022/acorex-modules-supplier-management.mjs +1 -1
- package/fesm2022/acorex-modules-supplier-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-task-management-task-board.page-FFhsAyHF.mjs → acorex-modules-task-management-task-board.page-DTWxd_vG.mjs} +41 -32
- package/fesm2022/acorex-modules-task-management-task-board.page-DTWxd_vG.mjs.map +1 -0
- package/fesm2022/acorex-modules-task-management.mjs +55 -23
- package/fesm2022/acorex-modules-task-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-workflow-management-acorex-modules-workflow-management-DJeUheQT.mjs → acorex-modules-workflow-management-acorex-modules-workflow-management-D04WU8wX.mjs} +32 -25
- package/fesm2022/acorex-modules-workflow-management-acorex-modules-workflow-management-D04WU8wX.mjs.map +1 -0
- package/fesm2022/{acorex-modules-workflow-management-index--6gz3uRb.mjs → acorex-modules-workflow-management-index-Bfzsu6VL.mjs} +2 -2
- package/fesm2022/{acorex-modules-workflow-management-index--6gz3uRb.mjs.map → acorex-modules-workflow-management-index-Bfzsu6VL.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-workflow-management-index-DV7Uf5hP.mjs → acorex-modules-workflow-management-index-CG1-u2Va.mjs} +3 -3
- package/fesm2022/{acorex-modules-workflow-management-index-DV7Uf5hP.mjs.map → acorex-modules-workflow-management-index-CG1-u2Va.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-workflow-management-index-C702Snjg.mjs → acorex-modules-workflow-management-index-DtKZARCI.mjs} +3 -3
- package/fesm2022/{acorex-modules-workflow-management-index-C702Snjg.mjs.map → acorex-modules-workflow-management-index-DtKZARCI.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-workflow-management-save-workflow-definition-activities.command-C60ABOUE.mjs → acorex-modules-workflow-management-save-workflow-definition-activities.command-80PIS1oE.mjs} +2 -2
- package/fesm2022/{acorex-modules-workflow-management-save-workflow-definition-activities.command-C60ABOUE.mjs.map → acorex-modules-workflow-management-save-workflow-definition-activities.command-80PIS1oE.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-workflow-management-workflow-configurator-widget-column.component-ChnPuG_J.mjs → acorex-modules-workflow-management-workflow-configurator-widget-column.component-CXhrrqa_.mjs} +2 -2
- package/fesm2022/{acorex-modules-workflow-management-workflow-configurator-widget-column.component-ChnPuG_J.mjs.map → acorex-modules-workflow-management-workflow-configurator-widget-column.component-CXhrrqa_.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-workflow-management-workflow-configurator-widget-edit.component-BqydSkbP.mjs → acorex-modules-workflow-management-workflow-configurator-widget-edit.component-CzPQUA9m.mjs} +47 -25
- package/fesm2022/acorex-modules-workflow-management-workflow-configurator-widget-edit.component-CzPQUA9m.mjs.map +1 -0
- package/fesm2022/{acorex-modules-workflow-management-workflow-run-history-popup.component-D_yi-Ccp.mjs → acorex-modules-workflow-management-workflow-run-history-popup.component-CTs6Sdm2.mjs} +2 -2
- package/fesm2022/{acorex-modules-workflow-management-workflow-run-history-popup.component-D_yi-Ccp.mjs.map → acorex-modules-workflow-management-workflow-run-history-popup.component-CTs6Sdm2.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-workflow-management-workflow-task-popover.component-CdvuOzXH.mjs → acorex-modules-workflow-management-workflow-task-popover.component-CaIIzv1r.mjs} +2 -2
- package/fesm2022/{acorex-modules-workflow-management-workflow-task-popover.component-CdvuOzXH.mjs.map → acorex-modules-workflow-management-workflow-task-popover.component-CaIIzv1r.mjs.map} +1 -1
- package/fesm2022/acorex-modules-workflow-management.mjs +1 -1
- package/fesm2022/acorex-modules-workplacesafety-management-hazard-risk-ppe-rule-status.provider-BsRNRZ6z.mjs +42 -0
- package/fesm2022/acorex-modules-workplacesafety-management-hazard-risk-ppe-rule-status.provider-BsRNRZ6z.mjs.map +1 -0
- package/fesm2022/acorex-modules-workplacesafety-management.mjs +494 -294
- package/fesm2022/acorex-modules-workplacesafety-management.mjs.map +1 -1
- package/package.json +2 -2
- package/types/acorex-modules-asset-management.d.ts +7 -3
- package/types/acorex-modules-contact-core.d.ts +1 -0
- package/types/acorex-modules-conversation.d.ts +898 -161
- package/types/acorex-modules-dashboard-management.d.ts +56 -10
- package/types/acorex-modules-document-management.d.ts +4 -0
- package/types/acorex-modules-report-management.d.ts +2 -0
- package/types/acorex-modules-task-management.d.ts +21 -5
- package/types/acorex-modules-workflow-management.d.ts +9 -4
- package/types/acorex-modules-workplacesafety-management.d.ts +55 -32
- package/fesm2022/acorex-modules-assessment-management-acorex-modules-assessment-management-WGRBHMmQ.mjs.map +0 -1
- package/fesm2022/acorex-modules-contact-core-acorex-modules-contact-core-CBMdv1GN.mjs.map +0 -1
- package/fesm2022/acorex-modules-contact-core-menu.provider-C-iEIPGe.mjs.map +0 -1
- package/fesm2022/acorex-modules-conversation-acorex-modules-conversation-CUjTT3M7.mjs.map +0 -1
- package/fesm2022/acorex-modules-conversation-send-assist-chat-message.command-CqDrZKFK.mjs.map +0 -1
- package/fesm2022/acorex-modules-dashboard-management-acorex-modules-dashboard-management-Lx3VuIg6.mjs.map +0 -1
- package/fesm2022/acorex-modules-data-management-index-CxVSgxTM.mjs.map +0 -1
- package/fesm2022/acorex-modules-human-capital-management-edit-personal-info.command-8LKMNm4Z.mjs.map +0 -1
- package/fesm2022/acorex-modules-settings-management-setting-view.component-CG-GW2yS.mjs.map +0 -1
- package/fesm2022/acorex-modules-task-management-task-board.page-FFhsAyHF.mjs.map +0 -1
- package/fesm2022/acorex-modules-workflow-management-acorex-modules-workflow-management-DJeUheQT.mjs.map +0 -1
- package/fesm2022/acorex-modules-workflow-management-workflow-configurator-widget-edit.component-BqydSkbP.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-modules-auth-acorex-modules-auth-CMRT9dQC.mjs","sources":["../../../../libs/modules/auth/src/lib/contracts/commands.keys.ts","../../../../libs/modules/auth/src/lib/contracts/datasource.keys.ts","../../../../libs/modules/auth/src/lib/contracts/menu.keys.ts","../../../../libs/modules/auth/src/lib/contracts/permission.keys.ts","../../../../libs/modules/auth/src/lib/contracts/settings.keys.ts","../../../../libs/modules/auth/src/lib/contracts/index.ts","../../../../libs/modules/auth/src/lib/pages/account/profile-page/profile-page.types.ts","../../../../libs/modules/auth/src/lib/pages/account/profile-page/profile-page-identity.service.ts","../../../../libs/modules/auth/src/lib/shared/datasources/user-activity/user-activity.types.ts","../../../../libs/modules/auth/src/lib/shared/datasources/user-activity/user-activity.utils.ts","../../../../libs/modules/auth/src/lib/shared/datasources/user-activity/user-activity-filter.utils.ts","../../../../libs/modules/auth/src/lib/shared/datasources/user-activity/user-activity.datasource.ts","../../../../libs/modules/auth/src/lib/datasource.provider.ts","../../../../libs/modules/auth/src/lib/error-handler.ts","../../../../libs/modules/auth/src/lib/pages/login/login.guard.ts","../../../../libs/modules/auth/src/lib/auth.config.ts","../../../../libs/modules/auth/src/lib/shared/utils/password-complexity.utils.ts","../../../../libs/modules/auth/src/lib/shared/services/password-complexity.service.ts","../../../../libs/modules/auth/src/lib/validations/password-complexity-validation-rule.class.ts","../../../../libs/modules/auth/src/lib/validations/auth-validation-rules.module.ts","../../../../libs/modules/auth/src/lib/auth.routes.ts","../../../../libs/modules/auth/src/lib/pages/account/app-chooser/app-chooser-list.component.ts","../../../../libs/modules/auth/src/lib/pages/account/app-chooser/app-chooser-list.component.html","../../../../libs/modules/auth/src/lib/pages/account/app-chooser/app-chooser-slot.component.ts","../../../../libs/modules/auth/src/lib/pages/account/app-chooser/app-chooser-slot.component.html","../../../../libs/modules/auth/src/lib/pages/account/tenant-chooser/tenant-chooser-list.component.ts","../../../../libs/modules/auth/src/lib/pages/account/tenant-chooser/tenant-chooser-list.component.html","../../../../libs/modules/auth/src/lib/pages/account/tenant-chooser/tenant-chooser-dropdown.component.ts","../../../../libs/modules/auth/src/lib/pages/account/tenant-chooser/tenant-chooser-dropdown.component.html","../../../../libs/modules/auth/src/lib/pages/account/profile/profile-slot-menu.types.ts","../../../../libs/modules/auth/src/lib/pages/account/profile/profile-slot.component.ts","../../../../libs/modules/auth/src/lib/pages/account/profile/profile-slot.component.html","../../../../libs/modules/auth/src/lib/pages/account/user-profile-card/user-profile-card.component.ts","../../../../libs/modules/auth/src/lib/pages/account/user-profile-card/user-profile-card.component.html","../../../../libs/modules/auth/src/lib/pages/account/user-sessions/user-sessions.service.ts","../../../../libs/modules/auth/src/lib/pages/account/tenant-chooser/tenant-chooser.guard.ts","../../../../libs/modules/auth/src/lib/pages/account/app-chooser/app-chooser.guard.ts","../../../../libs/modules/auth/src/lib/pages/account/account.module.ts","../../../../libs/modules/auth/src/lib/shared/services/idle-lock.service.ts","../../../../libs/modules/auth/src/lib/pages/account/profile-page/profile-page.component-keys.ts","../../../../libs/modules/auth/src/lib/pages/account/profile-page/core-profile-sections.hook.ts","../../../../libs/modules/auth/src/lib/pages/account/profile-page/security-pin-section.hook.ts","../../../../libs/modules/auth/src/lib/shared/services/password-change-tracking.service.ts","../../../../libs/modules/auth/src/lib/pages/account/profile-page/profile-page-security-insights.service.ts","../../../../libs/modules/auth/src/lib/pages/account/profile-page/security-sections-insights.hook.ts","../../../../libs/modules/auth/src/lib/pages/account/profile/profile-slot-logout-menu.hook.ts","../../../../libs/modules/auth/src/lib/pages/account/profile/profile-slot-my-profile-menu.hook.ts","../../../../libs/modules/auth/src/lib/pages/account/profile/profile-slot-lock-menu.hook.ts","../../../../libs/modules/auth/src/lib/auth.module.ts","../../../../libs/modules/auth/src/lib/shared/services/login-history.service.ts","../../../../libs/modules/auth/src/acorex-modules-auth.ts"],"sourcesContent":["//#region ---- Command keys ----\n\nexport const AXMAuthCommandKeys = {\n Profile: {\n Show: 'auth:profile',\n ChangePhoto: 'auth:change-photo',\n EditAccountInfo: 'auth:edit-account-info',\n ComingSoon: 'auth:profile-coming-soon',\n },\n Session: {\n Signout: 'auth:signout',\n OpenSessions: 'auth:open-sessions',\n LockScreen: 'auth:lock-screen',\n },\n Security: {\n ChangePassword: 'auth:change-password',\n SetPinCode: 'auth:set-pin-code',\n RemovePinCode: 'auth:remove-pin-code',\n ViewLoginHistory: 'auth:view-login-history',\n EditSignature: 'auth:edit-signature',\n },\n} as const;\n\n//#endregion\n","//#region ---- Datasource keys ----\n\n/** Auth module datasource registry names. */\nexport const AXMAuthDataSourceKeys = {\n UserActivity: 'auth-user-activity',\n} as const;\n\n//#endregion\n","export const AXPAuthMenuKeys = {} as const;\n\n","export const AXMPermissionsKeys = {\n Auth: {\n Management: 'Auth:Permission:Management',\n // TODO: Add permission keys when permissions are defined\n },\n};\n","export enum AXPAuthSettings {\n TwoFactorAuth = 'Auth:Setting:Authentication.TwoFactorAuth',\n PasswordComplexity = 'Auth:Setting:Authentication.PasswordComplexity',\n PasswordExpiryDays = 'Auth:Setting:Authentication.PasswordExpiryDays',\n MaxLoginAttempts = 'Auth:Setting:Authentication.MaxLoginAttempts',\n LockoutDuration = 'Auth:Setting:Authentication.LockoutDuration',\n LockWhenIdleEnabled = 'Auth:Setting:SessionManagement.LockWhenIdleEnabled',\n LockWhenIdleMinutes = 'Auth:Setting:SessionManagement.LockWhenIdleMinutes',\n InactiveSessionTermination = 'Auth:Setting:SessionManagement.InactiveSessionTermination',\n}\n\nexport const AXPAuthInactiveSessionTerminationOptions = {\n OneWeek: 'oneWeek',\n OneMonth: 'oneMonth',\n ThreeMonths: 'threeMonths',\n SixMonths: 'sixMonths',\n} as const;\n\nexport type AXPAuthInactiveSessionTerminationValue =\n (typeof AXPAuthInactiveSessionTerminationOptions)[keyof typeof AXPAuthInactiveSessionTerminationOptions];\n\n","//#region ---- Contracts barrel ----\n\nexport * from './commands.keys';\nexport * from './datasource.keys';\nexport * from './menu.keys';\nexport * from './permission.keys';\nexport * from './settings.keys';\n\n//#endregion\n","import { AXPMultiLanguageString } from '@acorex/platform/contracts';\nimport { AXPActionMenuItem } from '@acorex/platform/core';\n\n//#region ---- Hook keys ----\n\nexport const PROFILE_PAGE_GROUPS_HOOK = 'profile-page.groups';\nexport const PROFILE_PAGE_SECTIONS_HOOK = 'profile-page.sections';\nexport const PROFILE_PAGE_HEADER_META_HOOK = 'profile-page.header-meta';\n\n//#endregion\n\n//#region ---- Hook payloads ----\n\nexport type AXPUserProfileGroupsPayload = {\n groups: AXPUserProfileGroup[];\n};\n\nexport type AXPUserProfileSectionsPayload = {\n sections: AXPUserProfileSection[];\n};\n\nexport type AXPUserProfileHeaderMetaPayload = {\n items: AXPUserProfileHeaderMetaItem[];\n};\n\n//#endregion\n\n//#region ---- Content modes ----\n\n/** Renders section cards in a configurable grid (default). */\nexport interface AXPUserProfileGroupSectionsContent {\n mode: 'sections';\n}\n\n/** Replaces the entire tab body with a registered page component. */\nexport interface AXPUserProfileGroupComponentContent {\n mode: 'component';\n componentKey: string;\n pageConfig?: Record<string, unknown>;\n}\n\nexport type AXPUserProfileGroupContent =\n | AXPUserProfileGroupSectionsContent\n | AXPUserProfileGroupComponentContent;\n\n/** Standard card with title, description, and action buttons. */\nexport interface AXPUserProfileSectionCardContent {\n mode: 'card';\n actions: AXPUserProfileSectionAction[];\n}\n\n/** Replaces the section slot with a registered page component. */\nexport interface AXPUserProfileSectionComponentContent {\n mode: 'component';\n componentKey: string;\n pageConfig?: Record<string, unknown>;\n}\n\nexport type AXPUserProfileSectionContent =\n | AXPUserProfileSectionCardContent\n | AXPUserProfileSectionComponentContent;\n\n//#endregion\n\n//#region ---- Layout ----\n\n/** Grid placement for a section within the 12-column profile sections grid. */\nexport interface AXPUserProfileSectionLayout {\n /** 1-based column start on md+ breakpoints. */\n col?: number;\n /** Number of columns to span on md+ (default 6). */\n colSpan?: number;\n /** Number of grid rows to span (default 1). */\n rowSpan?: number;\n}\n\n//#endregion\n\n//#region ---- Definitions ----\n\n/** Action on a profile section card. */\nexport type AXPUserProfileSectionAction = AXPActionMenuItem & {\n /** Primary action when the section card is clicked (required for multi-action sections). */\n default?: boolean;\n};\n\n/** Top tab group on the profile hub. */\nexport interface AXPUserProfileGroup {\n id: string;\n /** URL segment under `/:app/profile/:route`; defaults to `id`. */\n route?: string;\n title: AXPMultiLanguageString;\n icon?: string;\n priority?: number;\n /** When omitted, the tab renders its section grid. */\n content?: AXPUserProfileGroupContent;\n}\n\n/** Profile hub section contributed by modules. */\nexport interface AXPUserProfileSection {\n id: string;\n groupId: string;\n title?: AXPMultiLanguageString;\n description?: AXPMultiLanguageString;\n icon?: string;\n priority?: number;\n feature?: string;\n layout?: AXPUserProfileSectionLayout;\n content?: AXPUserProfileSectionContent;\n /** Used when `content` is omitted (card mode). */\n actions?: AXPUserProfileSectionAction[];\n /** Optional contextual block shown instead of the section description. */\n insights?: AXPUserProfileSectionInsight[];\n}\n\n/** Contextual detail row on a profile section card. */\nexport interface AXPUserProfileSectionInsight {\n id: string;\n icon?: string;\n /** Plain line shown when no date is set. */\n text?: string;\n /** Date value formatted in the template when valid. */\n date?: Date;\n /** Optional prefix shown before a formatted relative date. */\n datePrefix?: AXPMultiLanguageString;\n}\n\n/** Extra row in the profile page header (label + value). */\nexport interface AXPUserProfileHeaderMetaItem {\n id: string;\n label: AXPMultiLanguageString;\n value: AXPMultiLanguageString;\n icon?: string;\n priority?: number;\n}\n\n//#endregion\n\n//#region ---- Helpers ----\n\n/** Resolves section content; top-level `actions` imply card mode. */\nexport function resolveUserProfileSectionContent(\n section: AXPUserProfileSection,\n): AXPUserProfileSectionContent {\n if (section.content) {\n return section.content;\n }\n\n return { mode: 'card', actions: section.actions ?? [] };\n}\n\n/** Whether the group renders a full-tab component instead of sections. */\nexport function isUserProfileGroupComponent(group: AXPUserProfileGroup): boolean {\n return group.content?.mode === 'component';\n}\n\n/** Visible actions on a section card. */\nexport function visibleUserProfileSectionActions(\n actions: AXPUserProfileSectionAction[],\n): AXPUserProfileSectionAction[] {\n return actions.filter((action) => action.visible !== false);\n}\n\n/** Default card action: explicit `default`, otherwise the first visible action. */\nexport function resolveDefaultUserProfileSectionAction(\n actions: AXPUserProfileSectionAction[],\n): AXPUserProfileSectionAction | undefined {\n const visibleActions = visibleUserProfileSectionActions(actions);\n if (!visibleActions.length) {\n return undefined;\n }\n\n return visibleActions.find((action) => action.default) ?? visibleActions[0];\n}\n\n//#endregion\n","import { AXPSessionService, AXPUser } from '@acorex/platform/auth';\nimport { AXPUserAvatarService } from '@acorex/platform/layout/components';\nimport { Injectable, inject } from '@angular/core';\n\n//#region ---- Profile page identity service ----\n\n/** Keeps session and avatar cache aligned after self-service profile identity updates. */\n@Injectable({ providedIn: 'root' })\nexport class AXPUserProfileIdentityService {\n //#region ---- Services & Dependencies ----\n\n private readonly sessionService = inject(AXPSessionService);\n private readonly userAvatarService = inject(AXPUserAvatarService);\n\n //#endregion\n\n //#region ---- Public API ----\n\n async applySessionPatch(patch: Partial<Pick<AXPUser, 'name' | 'title' | 'avatar'>>): Promise<void> {\n const session = this.sessionService.getSessionData();\n const userId = session?.user?.id;\n if (!session?.user || !userId) {\n return;\n }\n\n this.sessionService.setSession({\n ...session,\n user: {\n ...session.user,\n ...patch,\n },\n });\n\n await this.refreshAvatar(userId);\n }\n\n async refreshAvatar(userId?: string): Promise<void> {\n const id = userId ?? this.sessionService.user?.id;\n if (!id) {\n return;\n }\n\n await this.userAvatarService.refreshUserInfo(id);\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ---- User activity data source types ----\n\nexport type AXPUserActivityLevel = 0 | 1 | 2 | 3 | 4;\n\nexport interface AXPUserActivityDay {\n date: string;\n count: number;\n level: AXPUserActivityLevel;\n}\n\nexport interface AXPUserActivityWeek {\n days: AXPUserActivityDay[];\n}\n\nexport interface AXPUserActivityStats {\n longestStreak: number;\n avgPerDay: number;\n avgPerWeek: number;\n total: number;\n}\n\n/** Single payload row returned by {@link AXMAuthDataSourceKeys.UserActivity}. */\nexport interface AXPUserActivityDataSourceItem {\n id: string;\n userId: string;\n startDate: string;\n endDate: string;\n weeks: AXPUserActivityWeek[];\n stats: AXPUserActivityStats;\n}\n\nexport interface AXPUserActivityLoadParams {\n userId: string;\n startDate: Date;\n endDate: Date;\n}\n\n//#endregion\n","//#region ---- User activity helpers ----\n\nimport { AXMSecurityManagementDeviceSessionsEntityModel } from '@acorex/modules/security-management';\nimport {\n AXPUserActivityDataSourceItem,\n AXPUserActivityDay,\n AXPUserActivityLevel,\n AXPUserActivityLoadParams,\n AXPUserActivityStats,\n AXPUserActivityWeek,\n} from './user-activity.types';\n\n//#region ---- Constants ----\n\nexport const AUTH_USER_ACTIVITY_DEFAULT_WEEKS = 53;\nconst LEVEL_THRESHOLDS = [0, 3, 8, 15, 30];\n\n//#endregion\n\n//#region ---- Date range ----\n\nexport function resolveDefaultUserActivityDateRange(\n weeksToShow = AUTH_USER_ACTIVITY_DEFAULT_WEEKS,\n referenceDate = new Date(),\n): { startDate: Date; endDate: Date } {\n const today = new Date(referenceDate);\n today.setHours(0, 0, 0, 0);\n\n const endSunday = new Date(today);\n endSunday.setDate(today.getDate() + (6 - today.getDay()));\n\n const startDate = new Date(endSunday);\n startDate.setDate(endSunday.getDate() - weeksToShow * 7 + 1);\n startDate.setHours(0, 0, 0, 0);\n\n return { startDate, endDate: endSunday };\n}\n\n//#endregion\n\n//#region ---- Session aggregation ----\n\nfunction normalizeDateRange(startDate: Date, endDate: Date): { rangeStart: Date; rangeEnd: Date } {\n const start = new Date(startDate);\n const end = new Date(endDate);\n start.setHours(0, 0, 0, 0);\n end.setHours(0, 0, 0, 0);\n return start <= end ? { rangeStart: start, rangeEnd: end } : { rangeStart: end, rangeEnd: start };\n}\n\nfunction toIsoDate(date: Date): string {\n return date.toISOString().slice(0, 10);\n}\n\nfunction toDayKey(value: Date | string): string | undefined {\n const date = new Date(value);\n if (Number.isNaN(date.getTime())) {\n return undefined;\n }\n date.setHours(0, 0, 0, 0);\n return toIsoDate(date);\n}\n\n/** Counts sign-in events per calendar day from device session rows. */\nexport function aggregateDailySessionCounts(\n sessions: ReadonlyArray<AXMSecurityManagementDeviceSessionsEntityModel>,\n params: AXPUserActivityLoadParams,\n): Map<string, number> {\n const { rangeStart, rangeEnd } = normalizeDateRange(params.startDate, params.endDate);\n const counts = new Map<string, number>();\n\n for (const session of sessions) {\n if (session.userId !== params.userId || session.lastLoginDate == null) {\n continue;\n }\n\n const dayKey = toDayKey(session.lastLoginDate);\n if (!dayKey) {\n continue;\n }\n\n const day = new Date(dayKey);\n if (day < rangeStart || day > rangeEnd) {\n continue;\n }\n\n counts.set(dayKey, (counts.get(dayKey) ?? 0) + 1);\n }\n\n return counts;\n}\n\n//#endregion\n\n//#region ---- Week grid ----\n\nexport function countToActivityLevel(count: number): AXPUserActivityLevel {\n if (count <= LEVEL_THRESHOLDS[1]) {\n return count === 0 ? 0 : 1;\n }\n if (count <= LEVEL_THRESHOLDS[2]) {\n return 2;\n }\n if (count <= LEVEL_THRESHOLDS[3]) {\n return 3;\n }\n return 4;\n}\n\nfunction startOfWeekSunday(date: Date): Date {\n const value = new Date(date);\n value.setHours(0, 0, 0, 0);\n value.setDate(value.getDate() - value.getDay());\n return value;\n}\n\nexport function buildUserActivityWeeks(\n params: AXPUserActivityLoadParams,\n dailyCounts: ReadonlyMap<string, number>,\n): AXPUserActivityWeek[] {\n const { rangeStart, rangeEnd } = normalizeDateRange(params.startDate, params.endDate);\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n\n const gridStart = startOfWeekSunday(rangeStart);\n const gridEnd = startOfWeekSunday(rangeEnd);\n gridEnd.setDate(gridEnd.getDate() + 6);\n\n const weeks: AXPUserActivityWeek[] = [];\n const cursor = new Date(gridStart);\n\n while (cursor <= gridEnd) {\n const days: AXPUserActivityDay[] = [];\n\n for (let dayIndex = 0; dayIndex < 7; dayIndex += 1) {\n const date = new Date(cursor);\n const inRange = date >= rangeStart && date <= rangeEnd;\n const dayKey = toIsoDate(date);\n const count = inRange && date <= today ? (dailyCounts.get(dayKey) ?? 0) : 0;\n\n days.push({\n date: dayKey,\n count,\n level: countToActivityLevel(count),\n });\n cursor.setDate(cursor.getDate() + 1);\n }\n\n weeks.push({ days });\n }\n\n return weeks;\n}\n\nexport function computeUserActivityStats(weeks: AXPUserActivityWeek[]): AXPUserActivityStats {\n const days = weeks.flatMap((week) => week.days).filter((day) => day.count > 0);\n const total = days.reduce((sum, day) => sum + day.count, 0);\n const activeDayCount = days.length || 1;\n\n let longestStreak = 0;\n let currentStreak = 0;\n\n for (const week of weeks) {\n for (const day of week.days) {\n if (day.count > 0) {\n currentStreak += 1;\n longestStreak = Math.max(longestStreak, currentStreak);\n } else {\n currentStreak = 0;\n }\n }\n }\n\n const weekCount = weeks.length || 1;\n\n return {\n longestStreak,\n avgPerDay: Math.round(total / activeDayCount),\n avgPerWeek: Math.round(total / weekCount),\n total,\n };\n}\n\nexport function buildUserActivityDataSourceItem(\n params: AXPUserActivityLoadParams,\n sessions: ReadonlyArray<AXMSecurityManagementDeviceSessionsEntityModel>,\n): AXPUserActivityDataSourceItem {\n const dailyCounts = aggregateDailySessionCounts(sessions, params);\n const weeks = buildUserActivityWeeks(params, dailyCounts);\n\n return {\n id: `${params.userId}:${toIsoDate(params.startDate)}:${toIsoDate(params.endDate)}`,\n userId: params.userId,\n startDate: toIsoDate(params.startDate),\n endDate: toIsoDate(params.endDate),\n weeks,\n stats: computeUserActivityStats(weeks),\n };\n}\n\nexport function formatCompactActivityCount(value: number): string {\n if (value >= 1_000_000) {\n return `${(value / 1_000_000).toFixed(2)}M`;\n }\n if (value >= 1_000) {\n return `${Math.round(value / 1000)}K`;\n }\n return String(value);\n}\n\n//#endregion\n","//#region ---- User activity filter helpers ----\n\nimport { AXDataSourceFilterOption } from '@acorex/cdk/common';\n\nfunction isResolvedFilterScalar(value: unknown): value is string | number | Date {\n if (value == null) {\n return false;\n }\n if (value instanceof Date) {\n return !Number.isNaN(value.getTime());\n }\n const text = String(value).trim();\n return text.length > 0 && !text.includes('{{');\n}\n\nfunction parseFilterDate(value: unknown): Date | undefined {\n if (!isResolvedFilterScalar(value)) {\n return undefined;\n }\n if (value instanceof Date) {\n return value;\n }\n const parsed = new Date(String(value));\n return Number.isNaN(parsed.getTime()) ? undefined : parsed;\n}\n\nfunction extractFilterFieldValue(\n filter: AXDataSourceFilterOption | undefined,\n field: string,\n operators: string[],\n): unknown {\n if (!filter) {\n return undefined;\n }\n\n if (filter.filters?.length) {\n for (const child of filter.filters) {\n const value = extractFilterFieldValue(child, field, operators);\n if (value !== undefined) {\n return value;\n }\n }\n return undefined;\n }\n\n const operator = String(filter.operator?.type ?? '');\n if (filter.field === field && operators.includes(operator)) {\n return isResolvedFilterScalar(filter.value) ? filter.value : undefined;\n }\n\n return undefined;\n}\n\nexport function extractUserActivityUserId(filter: AXDataSourceFilterOption | undefined): string | undefined {\n const value = extractFilterFieldValue(filter, 'userId', ['equal', 'eq']);\n if (value == null) {\n return undefined;\n }\n const text = String(value).trim();\n return text.length > 0 ? text : undefined;\n}\n\nexport function extractUserActivityStartDate(filter: AXDataSourceFilterOption | undefined): Date | undefined {\n const gte = parseFilterDate(extractFilterFieldValue(filter, 'startDate', ['gte', 'greaterThanOrEqual', 'equal', 'eq']));\n if (gte) {\n return gte;\n }\n return parseFilterDate(extractFilterFieldValue(filter, 'dateFrom', ['gte', 'greaterThanOrEqual', 'equal', 'eq']));\n}\n\nexport function extractUserActivityEndDate(filter: AXDataSourceFilterOption | undefined): Date | undefined {\n const lte = parseFilterDate(extractFilterFieldValue(filter, 'endDate', ['lte', 'lessThanOrEqual', 'equal', 'eq']));\n if (lte) {\n return lte;\n }\n return parseFilterDate(extractFilterFieldValue(filter, 'dateTo', ['lte', 'lessThanOrEqual', 'equal', 'eq']));\n}\n\n//#endregion\n","//#region ---- User activity data source ----\n\nimport { AXDataSource, AXDataSourceFilterOption } from '@acorex/cdk/common';\nimport {\n AXMSecurityManagementDeviceSessionsEntityModel,\n RootConfig as SecurityManagementRootConfig,\n} from '@acorex/modules/security-management';\nimport { AXPFilterDefinition } from '@acorex/platform/contracts';\nimport { AXPDataSourceDefinition, AXPDataSourceDefinitionProvider, AXPQueryRequest } from '@acorex/platform/core';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\nimport { AXPWidgetsCatalog } from '@acorex/platform/contracts';\nimport { inject } from '@angular/core';\nimport { isEmpty } from 'lodash-es';\nimport {\n extractUserActivityEndDate,\n extractUserActivityStartDate,\n extractUserActivityUserId,\n} from './user-activity-filter.utils';\nimport { AXMAuthDataSourceKeys } from '../../../contracts/datasource.keys';\nimport {\n AXPUserActivityDataSourceItem,\n AXPUserActivityLoadParams,\n} from './user-activity.types';\nimport {\n buildUserActivityDataSourceItem,\n resolveDefaultUserActivityDateRange,\n} from './user-activity.utils';\n\nfunction resolveLoadParams(request?: AXPQueryRequest): AXPUserActivityLoadParams | null {\n const userId = extractUserActivityUserId(request?.filter);\n if (isEmpty(userId)) {\n return null;\n }\n\n const defaultRange = resolveDefaultUserActivityDateRange();\n const startDate = extractUserActivityStartDate(request?.filter) ?? defaultRange.startDate;\n const endDate = extractUserActivityEndDate(request?.filter) ?? defaultRange.endDate;\n\n return {\n userId: userId!,\n startDate,\n endDate,\n };\n}\n\n/** Contribution-style user activity heatmap derived from device session sign-in dates. */\nexport class AXMUserActivityDataSourceDefinition implements AXPDataSourceDefinitionProvider {\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n\n //#endregion\n\n //#region ---- Public API ----\n\n items(): Promise<AXPDataSourceDefinition<AXPUserActivityDataSourceItem>[]> {\n const sampleParams = resolveDefaultUserActivityDateRange();\n const sampleItem = buildUserActivityDataSourceItem(\n { userId: 'sample-user', ...sampleParams },\n [],\n );\n\n return Promise.resolve([\n {\n name: AXMAuthDataSourceKeys.UserActivity,\n title: 'User Activity',\n columns: [\n {\n name: 'id',\n title: 'ID',\n datatype: 'string',\n type: AXPWidgetsCatalog.text,\n },\n {\n name: 'userId',\n title: 'User ID',\n datatype: 'string',\n type: AXPWidgetsCatalog.text,\n },\n {\n name: 'startDate',\n title: 'Start Date',\n datatype: 'date',\n type: AXPWidgetsCatalog.dateTime,\n },\n {\n name: 'endDate',\n title: 'End Date',\n datatype: 'date',\n type: AXPWidgetsCatalog.dateTime,\n },\n ],\n filters: [\n {\n field: 'userId',\n title: 'User',\n operator: { type: 'equal' },\n widget: { type: AXPWidgetsCatalog.text },\n filterType: { advance: true, inline: true },\n } as AXPFilterDefinition,\n {\n field: 'startDate',\n title: 'Start Date',\n operator: { type: 'gte' },\n widget: { type: AXPWidgetsCatalog.dateTime, options: { format: 'date' } },\n filterType: { advance: true, inline: true },\n } as AXPFilterDefinition,\n {\n field: 'endDate',\n title: 'End Date',\n operator: { type: 'lte' },\n widget: { type: AXPWidgetsCatalog.dateTime, options: { format: 'date' } },\n filterType: { advance: true, inline: true },\n } as AXPFilterDefinition,\n ],\n textField: { name: 'id', title: 'ID' },\n valueField: { name: 'id', title: 'ID' },\n samples: [sampleItem],\n source: () =>\n new AXDataSource<AXPUserActivityDataSourceItem>({\n key: 'id',\n pageSize: 1,\n load: async (request) => {\n const params = resolveLoadParams(request);\n if (!params) {\n return { items: [], total: 0 };\n }\n\n const sessions = await this.loadUserSessions(params.userId);\n const item = buildUserActivityDataSourceItem(params, sessions);\n return { items: [item], total: 1 };\n },\n }),\n },\n ]);\n }\n\n //#endregion\n\n //#region ---- Private Methods ----\n\n private async loadUserSessions(\n userId: string,\n ): Promise<AXMSecurityManagementDeviceSessionsEntityModel[]> {\n const response = await this.entityService\n .withEntity(\n SecurityManagementRootConfig.module.name,\n SecurityManagementRootConfig.entities.deviceSessions.name,\n )\n .data<string, AXMSecurityManagementDeviceSessionsEntityModel>()\n .query({\n skip: 0,\n take: 1000,\n filter: {\n field: 'userId',\n operator: { type: 'equal' },\n value: userId,\n } as AXDataSourceFilterOption,\n });\n\n return response.items ?? [];\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ---- Auth data source provider ----\n\nimport { AXPDataSourceDefinitionProvider } from '@acorex/platform/core';\nimport { AXMUserActivityDataSourceDefinition } from './shared/datasources/user-activity';\n\n/**\n * Registers auth module data source definitions.\n */\nexport class AXMAuthDataSourceProvider implements AXPDataSourceDefinitionProvider {\n private readonly userActivity = new AXMUserActivityDataSourceDefinition();\n\n async items() {\n return [...(await this.userActivity.items())];\n }\n}\n\n//#endregion\n","import { AXPUnauthenticatedError, AXPUnauthorizedError } from '@acorex/platform/auth';\nimport { AXPErrorHandler } from '@acorex/platform/common';\nimport { AXPLayoutThemeService } from '@acorex/platform/themes/shared';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { Injectable, NgZone, inject, isDevMode } from '@angular/core';\nimport { Router } from '@angular/router';\n\n@Injectable()\nexport class AXMAuthErrorHandler implements AXPErrorHandler {\n private router = inject(Router);\n private layoutService = inject(AXPLayoutThemeService);\n\n handleError(error: Error, next: (error: any) => void): void {\n if (error instanceof HttpErrorResponse) {\n // if (error.status == 401) {\n // this.router.navigate(['/auth/login']);\n // }\n // else if (error.status == 404) {\n // this.router.navigate(['/404']);\n // }\n } else if (error instanceof AXPUnauthorizedError) {\n const redirectUrl = error.data?.redirectUrl;\n console.error(error.message);\n this.router.navigate(['/401'], { queryParams: redirectUrl ? { redirectUrl: redirectUrl } : null });\n } else if (error instanceof AXPUnauthenticatedError) {\n console.error(error.message);\n const redirectUrl = error.data?.redirectUrl;\n this.router.navigate(['/auth/login'], { queryParams: redirectUrl ? { redirectUrl: redirectUrl } : null });\n } else {\n if (isDevMode()) {\n next(error); // Pass the error to the next handler\n } else {\n next(error); // maybe we need a error page\n }\n }\n this.layoutService.setNavigationLoading(false);\n }\n}\n","import { ActivatedRouteSnapshot, CanActivateFn, RouterStateSnapshot, UrlTree } from '@angular/router';\n\n/**\n * Guard for login page that redirects authenticated users to home page.\n * This guard prevents authenticated users from accessing the login page.\n */\nexport const canActivateLogin: CanActivateFn = async (\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot,\n): Promise<boolean | UrlTree> => {\n // If not authenticated, allow access to login page\n return true;\n};\n","import { InjectionToken } from '@angular/core';\nimport { AuthConfig } from 'angular-oauth2-oidc';\n\nexport enum AXMAuthenticationTypes {\n UsernamePassword,\n UsernameEmailPassword,\n EmailPassword,\n MobilePassword,\n EmailCode,\n MobileCode,\n}\n\nexport const AXM_AUTH_CONFIG_TOKEN = new InjectionToken<AXMAuthConfigs>('app-module-auth-config', {\n providedIn: 'root',\n factory: () => {\n return AXMDefaultAuthConfigs;\n },\n});\n\nexport interface AXMExternalProviderConfig {\n providerName: string;\n}\n\nexport interface AXMAuthConfigs {\n type: AXMAuthenticationTypes;\n // oidc_settings?: UserManagerSettings;\n authConfig?: AuthConfig; // تغییر به optional\n baseUrl?: string; // اضافه کردن baseUrl\n logoutUrl?: string; // اضافه کردن logoutUrl\n end_url?: string;\n signup?: {\n enable: boolean;\n url?: string;\n };\n externalProviders?: {\n [provider: string]: AXMExternalProviderConfig;\n };\n signinPage?: {\n description: string;\n slogan: string;\n };\n defaultStrategyName?: string;\n idleTimeout?: number;\n}\n\nexport const AXMDefaultAuthConfigs: AXMAuthConfigs = {\n type: AXMAuthenticationTypes.UsernamePassword,\n // defaultStrategyName:'oidc',\n // حذف authConfig از اینجا چون از environment خوانده میشود\n defaultStrategyName: 'user-pass',\n};\n\nexport function configAuthModule(config: Partial<AXMAuthConfigs> = AXMDefaultAuthConfigs): AXMAuthConfigs {\n return { ...AXMDefaultAuthConfigs, ...config };\n}\n\n//#region ---- Login Guard Token ----\n\nimport { CanActivateFn } from '@angular/router';\nimport { canActivateLogin } from './pages/login/login.guard';\n\n/**\n * Injection token for login page guard.\n * Apps can provide their own custom guard by providing this token.\n * If not provided, the default guard (canActivateLogin) will be used.\n */\nexport const AXM_LOGIN_GUARD_TOKEN = new InjectionToken<CanActivateFn>('AXM_LOGIN_GUARD_TOKEN', {\n providedIn: 'root',\n factory: () => canActivateLogin,\n});\n\n//#endregion\n","import { coerceUnknownToTrimmedString } from '@acorex/platform/core';\nimport { isNil } from 'lodash-es';\n\n//#region ---- Types ----\n\nexport const AXPAuthPasswordComplexityLevels = {\n Low: 'Low',\n Medium: 'Medium',\n High: 'High',\n} as const;\n\nexport type AXPAuthPasswordComplexityLevel =\n (typeof AXPAuthPasswordComplexityLevels)[keyof typeof AXPAuthPasswordComplexityLevels];\n\nexport interface AXPAuthPasswordComplexityPolicy {\n minLength: number;\n requireUppercase: boolean;\n requireLowercase: boolean;\n requireDigit: boolean;\n requireSpecialCharacter: boolean;\n}\n\n//#endregion\n\n//#region ---- Policy ----\n\nconst PASSWORD_COMPLEXITY_POLICIES: Record<AXPAuthPasswordComplexityLevel, AXPAuthPasswordComplexityPolicy> = {\n [AXPAuthPasswordComplexityLevels.Low]: {\n minLength: 6,\n requireUppercase: false,\n requireLowercase: false,\n requireDigit: false,\n requireSpecialCharacter: false,\n },\n [AXPAuthPasswordComplexityLevels.Medium]: {\n minLength: 8,\n requireUppercase: true,\n requireLowercase: true,\n requireDigit: true,\n requireSpecialCharacter: false,\n },\n [AXPAuthPasswordComplexityLevels.High]: {\n minLength: 12,\n requireUppercase: true,\n requireLowercase: true,\n requireDigit: true,\n requireSpecialCharacter: true,\n },\n};\n\nconst SPECIAL_CHARACTER_PATTERN = /[^a-zA-Z0-9]/;\n\n//#endregion\n\n//#region ---- Utility Methods ----\n\n/**\n * Normalizes tenant password complexity setting values to a supported level.\n */\nexport function normalizePasswordComplexityLevel(value: unknown): AXPAuthPasswordComplexityLevel {\n if (isNil(value)) {\n return AXPAuthPasswordComplexityLevels.Medium;\n }\n\n const normalized = coerceUnknownToTrimmedString(value).toLowerCase();\n\n if (normalized === 'low') {\n return AXPAuthPasswordComplexityLevels.Low;\n }\n\n if (normalized === 'medium') {\n return AXPAuthPasswordComplexityLevels.Medium;\n }\n\n if (normalized === 'high') {\n return AXPAuthPasswordComplexityLevels.High;\n }\n\n return AXPAuthPasswordComplexityLevels.Medium;\n}\n\n/**\n * Returns the validation policy for the given complexity level.\n */\nexport function getPasswordComplexityPolicy(\n level: AXPAuthPasswordComplexityLevel,\n): AXPAuthPasswordComplexityPolicy {\n return PASSWORD_COMPLEXITY_POLICIES[level];\n}\n\n/**\n * Validates a password against the configured complexity policy.\n */\nexport function validatePasswordAgainstComplexity(\n password: string,\n level: AXPAuthPasswordComplexityLevel,\n): boolean {\n const policy = getPasswordComplexityPolicy(level);\n\n if (password.length < policy.minLength) {\n return false;\n }\n\n if (policy.requireUppercase && !/[A-Z]/.test(password)) {\n return false;\n }\n\n if (policy.requireLowercase && !/[a-z]/.test(password)) {\n return false;\n }\n\n if (policy.requireDigit && !/\\d/.test(password)) {\n return false;\n }\n\n if (policy.requireSpecialCharacter && !SPECIAL_CHARACTER_PATTERN.test(password)) {\n return false;\n }\n\n return true;\n}\n\n/**\n * Resolves the i18n key for the password complexity hint shown under the new password field.\n */\nexport function getPasswordComplexityHintKey(level: AXPAuthPasswordComplexityLevel): string {\n return `@auth:profile-page.commands.change-password.complexity.hint.${level.toLowerCase()}`;\n}\n\n/**\n * Resolves the i18n key for the password complexity validation error message.\n */\nexport function getPasswordComplexityValidationMessageKey(level: AXPAuthPasswordComplexityLevel): string {\n return `@auth:profile-page.commands.change-password.complexity.validation.${level.toLowerCase()}`;\n}\n\n//#endregion\n","import { AXPSettingsService } from '@acorex/platform/common';\nimport { AXPPlatformScope } from '@acorex/platform/contracts';\nimport { inject, Injectable } from '@angular/core';\nimport { AXPAuthSettings } from '../../contracts/settings.keys';\nimport {\n AXPAuthPasswordComplexityLevel,\n normalizePasswordComplexityLevel,\n} from '../utils/password-complexity.utils';\n\n//#region ---- Password Complexity Service ----\n\n/**\n * Resolves tenant password complexity policy for auth flows (change password, registration, etc.).\n * Uses tenant scope explicitly so inherited user-scope snapshots do not override tenant policy.\n */\n@Injectable({ providedIn: 'root' })\nexport class AXPAuthPasswordComplexityService {\n //#region ---- Services & Dependencies ----\n\n private readonly settingsService = inject(AXPSettingsService);\n\n //#endregion\n\n //#region ---- Public Methods ----\n\n async getLevel(): Promise<AXPAuthPasswordComplexityLevel> {\n const tenantValue = await this.settingsService\n .scope(AXPPlatformScope.Tenant)\n .get<unknown>(AXPAuthSettings.PasswordComplexity);\n\n if (tenantValue !== undefined && tenantValue !== null) {\n return normalizePasswordComplexityLevel(tenantValue);\n }\n\n const effectiveValue = await this.settingsService.get<unknown>(AXPAuthSettings.PasswordComplexity);\n return normalizePasswordComplexityLevel(effectiveValue);\n }\n\n //#endregion\n}\n\n//#endregion\n","import {\n AXValidationRule,\n AXValidationRuleOptions,\n AXValidationRuleResult,\n} from '@acorex/core/validation';\nimport { inject, Injectable } from '@angular/core';\nimport { isString } from 'lodash-es';\nimport { AXPAuthPasswordComplexityService } from '../shared/services/password-complexity.service';\nimport {\n AXPAuthPasswordComplexityLevel,\n normalizePasswordComplexityLevel,\n validatePasswordAgainstComplexity,\n} from '../shared/utils/password-complexity.utils';\n\n//#region ---- Password Complexity Validation Rule ----\n\nexport interface AXPasswordComplexityValidationRuleOptions extends AXValidationRuleOptions {\n complexity?: AXPAuthPasswordComplexityLevel | string;\n message?: string;\n}\n\n/**\n * Validates passwords against tenant-configured complexity levels (Low, Medium, High).\n */\n@Injectable()\nexport class PasswordComplexityValidationRule implements AXValidationRule {\n //#region ---- Services & Dependencies ----\n\n private readonly passwordComplexityService = inject(AXPAuthPasswordComplexityService);\n\n //#endregion\n\n get name(): string {\n return 'password-complexity';\n }\n\n async validate(\n value: unknown,\n options?: AXPasswordComplexityValidationRuleOptions,\n ): Promise<AXValidationRuleResult> {\n const complexity = await this.resolveComplexity(options?.complexity);\n const message = options?.message ?? '';\n\n if (!isString(value) || value.length === 0) {\n return {\n rule: this.name,\n result: false,\n message,\n value,\n };\n }\n\n const isValid = validatePasswordAgainstComplexity(value, complexity);\n\n return {\n rule: this.name,\n result: isValid,\n message: isValid ? '' : message,\n value,\n };\n }\n\n //#endregion\n\n //#region ---- Utility Methods ----\n\n private async resolveComplexity(\n override: AXPAuthPasswordComplexityLevel | string | undefined,\n ): Promise<AXPAuthPasswordComplexityLevel> {\n if (override !== undefined && override !== null && String(override).trim() !== '') {\n return normalizePasswordComplexityLevel(override);\n }\n\n return this.passwordComplexityService.getLevel();\n }\n\n //#endregion\n}\n\n//#endregion\n","import { AXValidationModule } from '@acorex/core/validation';\nimport { NgModule } from '@angular/core';\nimport { PasswordComplexityValidationRule } from './password-complexity-validation-rule.class';\n\n//#region ---- Auth Validation Rules Module ----\n\n@NgModule({\n imports: [\n AXValidationModule.forChild({\n rules: [PasswordComplexityValidationRule],\n }),\n ],\n})\nexport class AXMAuthValidationRulesModule {}\n\n//#endregion\n","import { Route } from '@angular/router';\nexport const routes: Route[] = [\n {\n path: 'auth',\n children: [\n {\n path: '',\n pathMatch: 'full',\n redirectTo: 'login',\n },\n {\n path: '',\n loadComponent: () =>\n import('./shared/layouts/master/master.layout').then((c) => c.AXPAuthMasterLayoutComponent),\n loadChildren: () => import('./pages/login/login.module').then((c) => c.AXPSignInModule),\n },\n {\n path: '',\n loadComponent: () =>\n import('./shared/layouts/master/master.layout').then((c) => c.AXPAuthMasterLayoutComponent),\n loadChildren: () => import('./pages/two-factor/two-factor.module').then((c) => c.AXPTwoFactorModule),\n },\n {\n path: '',\n loadComponent: () =>\n import('./shared/layouts/master/master.layout').then((c) => c.AXPAuthMasterLayoutComponent),\n loadChildren: () => import('./pages/forgot/routes').then((c) => c),\n },\n {\n path: 'axp-oauth-callback',\n loadComponent: () =>\n import('./pages/callback/oauth-callback.component').then((c) => c.AXPOAuthCallbackComponent),\n },\n {\n path: 'account',\n loadComponent: () => import('./shared/layouts/blank/blank.layout').then((c) => c.AXPAuthBlankLayoutComponent),\n loadChildren: () => import('./pages/account/account.module').then((c) => c.AXPAccountModule),\n },\n // {\n // path: 'signincallback',\n // loadComponent: () =>\n // import('./pages/callback/oauth-callback.component').then((c) => c.AXPOAuthCallbackComponent),\n // },\n // {\n // path: '',\n // loadComponent: () =>\n // import('./shared/layouts/master/master.layout').then((c) => c.AXPAuthMasterLayoutComponent),\n // loadChildren: () => import('./register/register.module').then((c) => c.AXPRegisterModule),\n // },\n ],\n },\n];\n","import { RootConfig } from '@acorex/modules/application-management';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\nimport { AXValueChangedEvent } from '@acorex/cdk/common';\nimport { AXListNavigationDirective, AXListNavigationItemDirective, AXListNavigationModule } from '@acorex/cdk/list-navigation';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPApplication, AXPAuthStrategyRegistryService, AXPSessionContext, AXPSessionService } from '@acorex/platform/auth';\nimport { AXPHomePageService } from '@acorex/platform/common';\nimport { AXPLogoComponent } from '@acorex/platform/layout/components';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, input, OnInit, output, signal, viewChild, viewChildren } from '@angular/core';\nimport { first } from 'rxjs';\n@Component({\n selector: 'axp-app-chooser-list',\n templateUrl: 'app-chooser-list.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n AXButtonModule,\n AXDecoratorModule,\n AXSkeletonModule,\n AXSelectBoxModule,\n AXSearchBoxModule,\n AXListNavigationModule,\n AXTranslationModule,\n AXPLogoComponent,\n ],\n})\nexport class AXPAppChooserListComponent implements OnInit {\n private readonly entityService = inject(AXPEntityService);\n //#region ---- Services & Dependencies ----\n\n private sessionService = inject(AXPSessionService);\n private homePageService = inject(AXPHomePageService);\n private authStrategyRegistry = inject(AXPAuthStrategyRegistryService);\n private applicationService = this.entityService.withEntity(RootConfig.module.name, RootConfig.entities.application.name).data<any, any>();\n private strategyName = this.sessionService.getSessionData()?.strategy;\n private strategy = this.authStrategyRegistry.get(this.strategyName!);\n\n //#endregion\n\n //#region ---- Inputs & Outputs ----\n\n simple = input<boolean>(false);\n applicationChosen = output<void>();\n\n //#endregion\n\n //#region ---- View References ----\n\n private listNav = viewChild(AXListNavigationDirective);\n private listItems = viewChildren(AXListNavigationItemDirective);\n\n //#endregion\n\n //#region ---- State ----\n\n protected isLoading = signal(true);\n protected allApplications = signal<AXPApplication[]>([]);\n protected useSelectBox = computed(() => this.allApplications().length > 3);\n protected selectedApplication = signal<AXPApplication | null>(null);\n protected isSelectBoxOpen = signal(false);\n protected canApply = computed(() => !!this.selectedApplication());\n protected skeletonItems = [1, 2, 3];\n\n //#endregion\n\n //#region ---- Computed Properties ----\n\n protected isApplicationSelected(application: AXPApplication): boolean {\n return application.id === this.sessionService.application?.id;\n }\n\n //#endregion\n\n //#region ---- Constructor ----\n\n constructor() {\n effect(() => {\n if (!this.isLoading() && !this.useSelectBox() && this.allApplications().length > 0) {\n queueMicrotask(() => this.focusFirstListItem());\n }\n });\n }\n\n //#endregion\n\n //#region ---- Lifecycle Methods ----\n\n ngOnInit(): void {\n this.sessionService.applications$.pipe(first()).subscribe((applications) => {\n this.allApplications.set(applications);\n\n if (applications.length > 0) {\n this.selectedApplication.set(applications[0]);\n }\n\n this.isLoading.set(false);\n });\n }\n\n //#endregion\n\n //#region ---- UI Handlers ----\n\n handleApplicationSelect(event: AXValueChangedEvent): void {\n if (!event.isUserInteraction) {\n return;\n }\n\n this.selectedApplication.set((event.component.selectedItems[0] as AXPApplication) ?? null);\n }\n\n handleListItemKeyDown(event: KeyboardEvent, application: AXPApplication): void {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n void this.chooseApplication(application);\n }\n }\n\n handleSelectBoxKeyDown(event: Event): void {\n if (!(event instanceof KeyboardEvent)) {\n return;\n }\n\n if (event.key !== 'Enter' && event.key !== 'NumpadEnter') {\n return;\n }\n\n if (this.isSelectBoxOpen()) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n if (this.canApply()) {\n this.applySelection();\n }\n }\n\n applySelection(): void {\n const application = this.selectedApplication();\n if (application) {\n void this.chooseApplication(application);\n }\n }\n\n async chooseApplication(item: AXPApplication): Promise<void> {\n const tenantId = this.sessionService.tenant?.id || '';\n if (!tenantId) {\n throw new Error('Tenant ID is missing. Cannot choose application.');\n }\n\n const fullApplication = await this.applicationService.byKey(item.id);\n if (!fullApplication) {\n throw new Error(`Application not found: ${item.id}`);\n }\n\n let selectedEdition = item.edition;\n if (!selectedEdition && fullApplication.editions && fullApplication.editions.length > 0) {\n selectedEdition = {\n id: fullApplication.editions[0].id,\n title: fullApplication.editions[0].title,\n description: fullApplication.editions[0].description,\n };\n }\n\n const applicationWithEdition: AXPApplication = {\n ...item,\n version: fullApplication.version || item.version,\n edition: selectedEdition,\n };\n\n if (this.strategy && typeof this.strategy.updateToken === 'function') {\n const updateContext = {\n application: applicationWithEdition,\n user: this.sessionService.user,\n tenant: this.sessionService.tenant,\n };\n await this.sessionService.updateToken(updateContext as AXPSessionContext);\n }\n\n this.applicationChosen.emit();\n await this.homePageService.navigateTo();\n }\n\n //#endregion\n\n //#region ---- Utility Methods ----\n\n private focusFirstListItem(): void {\n const nav = this.listNav();\n const items = this.listItems();\n const applications = this.allApplications();\n const currentIndex = applications.findIndex((application) => this.isApplicationSelected(application));\n\n if (nav && items.length > 0) {\n nav.navigateTo(items[currentIndex >= 0 ? currentIndex : 0]);\n }\n }\n\n //#endregion\n}\n","@if (isLoading()) {\n <div class=\"ax-w-full ax-flex ax-flex-col ax-gap-3\">\n @for (item of skeletonItems; track item) {\n <div class=\"ax-flex ax-gap-2 ax-items-center ax-p-2\">\n <ax-skeleton [animated]=\"true\" class=\"ax-w-12 ax-h-12 ax-rounded-full ax-shrink-0\"></ax-skeleton>\n <ax-skeleton [animated]=\"true\" class=\"ax-flex-1 ax-h-6 ax-rounded-md\"></ax-skeleton>\n </div>\n }\n </div>\n} @else if (useSelectBox()) {\n <div class=\"ax-w-full ax-flex ax-flex-col ax-gap-4\" (keydown.capture)=\"handleSelectBoxKeyDown($event)\">\n <ax-select-box\n class=\"ax-w-full\"\n [dataSource]=\"allApplications()\"\n textField=\"title\"\n valueField=\"id\"\n [itemHeight]=\"56\"\n [value]=\"selectedApplication()\"\n [placeholder]=\"('@auth:application-chooser.select-placeholder' | translate | async) ?? ''\"\n [itemTemplate]=\"applicationItemTemplate\"\n (onOpened)=\"isSelectBoxOpen.set(true)\"\n (onClosed)=\"isSelectBoxOpen.set(false)\"\n (onValueChanged)=\"handleApplicationSelect($event)\"\n >\n <ax-search-box look=\"fill\"></ax-search-box>\n </ax-select-box>\n <ax-button\n class=\"ax-w-full\"\n color=\"primary\"\n [disabled]=\"!canApply()\"\n [text]=\"('@general:actions.apply.title' | translate | async) ?? ''\"\n (onClick)=\"applySelection()\"\n ></ax-button>\n </div>\n} @else {\n <div\n axListNavigation\n #listNav=\"axListNavigation\"\n class=\"ax-w-full ax-overflow-auto ax-max-h-[300px] ax-flex ax-flex-col ax-gap-1\"\n role=\"listbox\"\n >\n @for (application of allApplications(); track application.id) {\n <div\n axListNavigationItem\n #navItem=\"axListNavigationItem\"\n tabindex=\"0\"\n role=\"option\"\n [attr.aria-selected]=\"isApplicationSelected(application)\"\n class=\"ax-flex ax-gap-2 ax-items-center ax-p-2 ax-cursor-pointer ax-rounded-md ax-transition-colors ax-outline-none hover:ax-bg-primary-lightest hover:dark:ax-bg-primary-dark\"\n [class.ax-bg-primary-lighter]=\"isApplicationSelected(application)\"\n [class.dark:ax-bg-primary-darker]=\"isApplicationSelected(application)\"\n [class.ax-text-primary-on-lighter]=\"isApplicationSelected(application)\"\n [class.dark:ax-text-primary-on-darker]=\"isApplicationSelected(application)\"\n [class.ax-ring-2]=\"navItem.isActive()\"\n [class.ax-ring-primary]=\"navItem.isActive()\"\n (click)=\"chooseApplication(application)\"\n (keydown)=\"handleListItemKeyDown($event, application)\"\n >\n <div class=\"ax-flex ax-flex-1 ax-gap-2 ax-items-center ax-min-w-0\">\n <div\n class=\"ax-shrink-0 ax-flex ax-justify-center ax-items-center ax-rounded-full ax-bg-neutral-100\"\n [class.ax-w-10]=\"simple()\"\n [class.ax-h-10]=\"simple()\"\n [class.ax-w-12]=\"!simple()\"\n [class.ax-h-12]=\"!simple()\"\n >\n <axp-logo\n [source]=\"application.logo\"\n [attr.alt]=\"application.title\"\n class=\"!ax-flex ax-items-center ax-justify-center !ax-text-sm ax-bg-neutral-200 dark:ax-bg-neutral-800 ax-rounded-full\"\n [class.ax-w-8]=\"simple()\"\n [class.ax-h-8]=\"simple()\"\n [class.ax-w-10]=\"!simple()\"\n [class.ax-h-10]=\"!simple()\"\n ></axp-logo>\n </div>\n <span class=\"ax-flex-1 ax-truncate ax-text-start md:ax-text-base ax-text-sm\">{{ application.title }}</span>\n @if (application.edition?.title) {\n <span class=\"ax-text-muted ax-text-xs ax-shrink-0\">{{ application.edition?.title }}</span>\n }\n </div>\n </div>\n }\n </div>\n}\n\n<ng-template #applicationItemTemplate let-item>\n <div class=\"ax-flex ax-gap-2 ax-items-center ax-p-2\">\n <div\n class=\"ax-w-10 ax-h-10 ax-flex ax-justify-center ax-items-center ax-rounded-full ax-bg-neutral-100 ax-shrink-0\"\n >\n <axp-logo\n [source]=\"item.data.logo\"\n [attr.alt]=\"item.data.title\"\n class=\"!ax-flex ax-items-center ax-justify-center !ax-text-sm ax-w-8 ax-h-8 ax-bg-neutral-200 ax-rounded-full\"\n ></axp-logo>\n </div>\n <span class=\"ax-flex-1 ax-text-start md:ax-text-base ax-text-sm\">{{ item.data.title }}</span>\n @if (item.data.edition?.title) {\n <span class=\"ax-text-muted ax-text-xs\">{{ item.data.edition.title }}</span>\n }\n </div>\n</ng-template>\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPopoverModule } from '@acorex/components/popover';\nimport { AXPApplication, AXPAuthStrategyRegistryService, AXPSessionService } from '@acorex/platform/auth';\nimport { AXPHomePageService } from '@acorex/platform/common';\nimport { CommonModule } from '@angular/common';\nimport { Component, inject, viewChild } from '@angular/core';\nimport { AXPopoverComponent } from '@acorex/components/popover';\nimport { AXPAppChooserListComponent } from './app-chooser-list.component';\n\n@Component({\n templateUrl: './app-chooser-slot.component.html',\n imports: [CommonModule, AXButtonModule, AXPopoverModule, AXDecoratorModule, AXPAppChooserListComponent],\n})\nexport class AXMAppChooserSlotComponent {\n\n private sessionService = inject(AXPSessionService);\n protected applications$ = this.sessionService.applications$;\n\n private appPopover = viewChild<AXPopoverComponent>('appPopover');\n\n closePopover(): void {\n this.appPopover()?.close();\n }\n}\n","@if (((applications$ | async)?.length ?? 0) > 1) {\n <ax-button color=\"primary\" #appChooser>\n <ax-icon class=\"fa-regular fa-grid-2\"> </ax-icon>\n </ax-button>\n <ax-popover [target]=\"appChooser\" [openOn]=\"'toggle'\" [closeOn]=\"'clickOut'\" #appPopover>\n <div class=\"ax-bg-lightest ax-border ax-overflow-hidden ax-rounded-md ax-shadow-md ax-w-full ax-min-w-64 ax-p-1\">\n <axp-app-chooser-list [simple]=\"true\" (applicationChosen)=\"closePopover()\"></axp-app-chooser-list>\n </div>\n </ax-popover>\n}\n","import { AXValueChangedEvent } from '@acorex/cdk/common';\nimport {\n AXListNavigationDirective,\n AXListNavigationItemDirective,\n AXListNavigationModule,\n} from '@acorex/cdk/list-navigation';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPAuthStrategyRegistryService, AXPSessionService, AXPTenant } from '@acorex/platform/auth';\nimport { AXPIconLogoConfig } from '@acorex/platform/core';\nimport { AXPLogoComponent } from '@acorex/platform/layout/components';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n OnInit,\n output,\n signal,\n viewChild,\n viewChildren,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { first } from 'rxjs';\n\n@Component({\n selector: 'axp-tenant-chooser-list',\n templateUrl: 'tenant-chooser-list.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n FormsModule,\n AXTranslationModule,\n AXButtonModule,\n AXDecoratorModule,\n AXSkeletonModule,\n AXSelectBoxModule,\n AXSearchBoxModule,\n AXListNavigationModule,\n AXPLogoComponent,\n ],\n})\nexport class AXPTenantChooserListComponent implements OnInit {\n //#region ---- Services & Dependencies ----\n\n private sessionService = inject(AXPSessionService);\n private authStrategyRegistry = inject(AXPAuthStrategyRegistryService);\n private router = inject(Router);\n private strategyName = this.sessionService.getSessionData()?.strategy;\n private strategy = this.authStrategyRegistry.get(this.strategyName!);\n\n //#endregion\n\n //#region ---- Inputs & Outputs ----\n\n simple = input<boolean>(false);\n tenantChosen = output<void>();\n\n //#endregion\n\n //#region ---- View References ----\n\n private listNav = viewChild(AXListNavigationDirective);\n private listItems = viewChildren(AXListNavigationItemDirective);\n\n //#endregion\n\n //#region ---- State ----\n\n protected defaultLogo = new AXPIconLogoConfig('fa-solid fa-building', 'neutral-500');\n protected isLoading = signal(true);\n protected allTenants = signal<AXPTenant[]>([]);\n protected searchValue = signal('');\n protected showAll = signal(false);\n protected useSelectBox = computed(() => this.allTenants().length > 3);\n protected selectedTenant = signal<AXPTenant | null>(null);\n protected isSelectBoxOpen = signal(false);\n protected canApply = computed(() => !!this.selectedTenant());\n protected skeletonItems = [1, 2, 3];\n\n /** Tenants shown in the list (respects search and view-all toggle). */\n protected displayedTenants = computed(() => {\n const tenants = this.filterTenants(this.allTenants());\n if (this.showAll() || tenants.length <= 4) {\n return tenants;\n }\n return tenants.slice(0, 4);\n });\n\n protected showSearchAndViewAll = computed(() => this.allTenants().length > 4);\n\n //#endregion\n\n //#region ---- Computed Properties ----\n\n protected isTenantSelected(tenant: AXPTenant): boolean {\n return tenant.id === this.sessionService.tenant?.id;\n }\n\n //#endregion\n\n //#region ---- Constructor ----\n\n constructor() {\n effect(() => {\n if (!this.isLoading() && !this.useSelectBox() && !this.simple() && this.allTenants().length > 0) {\n queueMicrotask(() => this.focusFirstListItem());\n }\n });\n }\n\n //#endregion\n\n //#region ---- Lifecycle Methods ----\n\n ngOnInit(): void {\n this.sessionService.tenants$.pipe(first()).subscribe((tenants) => {\n this.allTenants.set(tenants);\n\n if (tenants.length > 0) {\n this.selectedTenant.set(tenants[0]);\n }\n\n this.isLoading.set(false);\n });\n }\n\n //#endregion\n\n //#region ---- UI Handlers ----\n\n filterTenants(tenants: AXPTenant[]): AXPTenant[] {\n const query = this.searchValue().toLowerCase();\n return tenants.filter((tenant) => tenant.title.toLowerCase().includes(query));\n }\n\n handleSearch(event: string): void {\n if (event !== undefined) {\n this.searchValue.set(event);\n }\n }\n\n showAllTenants(): void {\n this.showAll.update((value) => !value);\n }\n\n handleTenantSelect(event: AXValueChangedEvent): void {\n if (!event.isUserInteraction) {\n return;\n }\n\n this.selectedTenant.set((event.component.selectedItems[0] as AXPTenant) ?? null);\n }\n\n handleListItemKeyDown(event: KeyboardEvent, tenant: AXPTenant): void {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n void this.chooseTenant(tenant);\n }\n }\n\n handleSelectBoxKeyDown(event: Event): void {\n if (!(event instanceof KeyboardEvent)) {\n return;\n }\n\n if (event.key !== 'Enter' && event.key !== 'NumpadEnter') {\n return;\n }\n\n if (this.isSelectBoxOpen()) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n if (this.canApply()) {\n this.applySelection();\n }\n }\n\n applySelection(): void {\n const tenant = this.selectedTenant();\n if (tenant) {\n void this.chooseTenant(tenant);\n }\n }\n\n async chooseTenant(item: AXPTenant): Promise<boolean | void> {\n if (this.strategy) {\n const updateContext = {\n tenant: item,\n user: this.sessionService.user,\n };\n await this.sessionService.updateToken(updateContext);\n }\n\n this.tenantChosen.emit();\n return this.router.navigate(['/auth/account/app-chooser']);\n }\n\n //#endregion\n\n //#region ---- Utility Methods ----\n\n private focusFirstListItem(): void {\n const nav = this.listNav();\n const items = this.listItems();\n const tenants = this.allTenants();\n const currentIndex = tenants.findIndex((tenant) => this.isTenantSelected(tenant));\n\n if (nav && items.length > 0) {\n nav.navigateTo(items[currentIndex >= 0 ? currentIndex : 0]);\n }\n }\n\n //#endregion\n}\n","@if (isLoading()) {\n <div class=\"ax-w-full ax-flex ax-flex-col ax-gap-3\">\n @for (item of skeletonItems; track item) {\n <div class=\"ax-flex ax-gap-2 ax-items-center ax-p-2\">\n <ax-skeleton [animated]=\"true\" class=\"ax-w-12 ax-h-12 ax-rounded-full ax-shrink-0\"></ax-skeleton>\n <ax-skeleton [animated]=\"true\" class=\"ax-flex-1 ax-h-6 ax-rounded-md\"></ax-skeleton>\n </div>\n }\n </div>\n} @else if (simple()) {\n <div class=\"ax-w-full ax-overflow-auto ax-max-h-[300px] ax-pe-2\">\n @for (tenant of allTenants(); track tenant.id) {\n <div\n class=\"ax-flex ax-gap-2 ax-justify-between ax-border-b last:ax-border-b-0 ax-py-3 ax-items-start ax-cursor-pointer\"\n (click)=\"chooseTenant(tenant)\"\n >\n <div class=\"ax-flex ax-flex-1 ax-gap-2 ax-items-center ax-font-medium\">\n <div\n class=\"ax-w-12 ax-h-12 ax-flex ax-justify-center ax-items-center ax-rounded-full ax-bg-neutral-100 ax-m-auto\"\n >\n <axp-logo\n [source]=\"tenant.logo ?? defaultLogo\"\n [attr.alt]=\"tenant.title\"\n class=\"!ax-flex ax-items-center ax-justify-center !ax-text-sm ax-mx-auto ax-w-10 ax-h-10 ax-bg-neutral-200 ax-rounded-full\"\n ></axp-logo>\n </div>\n <span class=\"ax-flex-1 ax-text-start md:ax-text-base ax-text-sm\">{{ tenant.title }}</span>\n </div>\n </div>\n }\n </div>\n} @else if (useSelectBox()) {\n <div class=\"ax-w-full ax-flex ax-flex-col ax-gap-4\" (keydown.capture)=\"handleSelectBoxKeyDown($event)\">\n <ax-select-box\n class=\"ax-w-full\"\n [dataSource]=\"allTenants()\"\n textField=\"title\"\n valueField=\"id\"\n [value]=\"selectedTenant()\"\n [itemHeight]=\"56\"\n [placeholder]=\"('@auth:tenant-chooser.select-placeholder' | translate | async) ?? ''\"\n [itemTemplate]=\"tenantItemTemplate\"\n (onOpened)=\"isSelectBoxOpen.set(true)\"\n (onClosed)=\"isSelectBoxOpen.set(false)\"\n (onValueChanged)=\"handleTenantSelect($event)\"\n >\n <ax-search-box look=\"fill\"></ax-search-box>\n </ax-select-box>\n <ax-button\n class=\"ax-w-full\"\n color=\"primary\"\n [disabled]=\"!canApply()\"\n [text]=\"('@general:actions.apply.title' | translate | async) ?? ''\"\n (onClick)=\"applySelection()\"\n ></ax-button>\n </div>\n} @else {\n @if (showSearchAndViewAll()) {\n <ax-search-box\n [placeholder]=\"'@general:search.title' | translate | async\"\n [ngModel]=\"searchValue()\"\n (ngModelChange)=\"handleSearch($event)\"\n class=\"ax-w-full\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n }\n <div\n axListNavigation\n #listNav=\"axListNavigation\"\n class=\"ax-w-full ax-overflow-auto ax-max-h-[300px] ax-flex ax-flex-col ax-gap-1\"\n role=\"listbox\"\n >\n @for (tenant of displayedTenants(); track tenant.id) {\n <div\n axListNavigationItem\n #navItem=\"axListNavigationItem\"\n tabindex=\"0\"\n role=\"option\"\n [attr.aria-selected]=\"isTenantSelected(tenant)\"\n class=\"ax-flex ax-gap-2 ax-items-center ax-p-2 ax-cursor-pointer ax-rounded-md ax-transition-colors ax-outline-none hover:ax-bg-primary-lightest hover:dark:ax-bg-primary-dark\"\n [class.ax-bg-primary-lighter]=\"isTenantSelected(tenant)\"\n [class.dark:ax-bg-primary-darker]=\"isTenantSelected(tenant)\"\n [class.ax-text-primary-on-lighter]=\"isTenantSelected(tenant)\"\n [class.dark:ax-text-primary-on-darker]=\"isTenantSelected(tenant)\"\n [class.ax-ring-2]=\"navItem.isActive()\"\n [class.ax-ring-primary]=\"navItem.isActive()\"\n (click)=\"chooseTenant(tenant)\"\n (keydown)=\"handleListItemKeyDown($event, tenant)\"\n >\n <div class=\"ax-flex ax-flex-1 ax-gap-2 ax-items-center ax-min-w-0\">\n <div\n class=\"ax-shrink-0 ax-flex ax-justify-center ax-items-center ax-rounded-full ax-bg-neutral-100\"\n [class.ax-w-10]=\"simple()\"\n [class.ax-h-10]=\"simple()\"\n [class.ax-w-12]=\"!simple()\"\n [class.ax-h-12]=\"!simple()\"\n >\n <axp-logo\n [source]=\"tenant.logo ?? defaultLogo\"\n [attr.alt]=\"tenant.title\"\n class=\"!ax-flex ax-items-center ax-justify-center !ax-text-sm ax-bg-neutral-200 dark:ax-bg-neutral-800 ax-rounded-full\"\n [class.ax-w-8]=\"simple()\"\n [class.ax-h-8]=\"simple()\"\n [class.ax-w-10]=\"!simple()\"\n [class.ax-h-10]=\"!simple()\"\n ></axp-logo>\n </div>\n <span class=\"ax-flex-1 ax-truncate ax-text-start md:ax-text-base ax-text-sm\">{{ tenant.title }}</span>\n </div>\n </div>\n }\n </div>\n @if (showSearchAndViewAll()) {\n <div class=\"ax-mt-6 ax-w-full ax-flex ax-justify-center\">\n <ax-button\n (onClick)=\"showAllTenants()\"\n class=\"ax-w-full\"\n look=\"outline\"\n [text]=\"\n showAll()\n ? ('@general:actions.view-less.title' | translate | async)\n : ('@general:actions.view-all.title' | translate | async)\n \"\n ></ax-button>\n </div>\n }\n}\n\n<ng-template #tenantItemTemplate let-item>\n <div class=\"ax-flex ax-gap-2 ax-items-center ax-p-2\">\n <div\n class=\"ax-w-10 ax-h-10 ax-flex ax-justify-center ax-items-center ax-rounded-full ax-bg-neutral-100 ax-shrink-0\"\n >\n <axp-logo\n [source]=\"item.data.logo ?? defaultLogo\"\n [attr.alt]=\"item.data.title\"\n class=\"!ax-flex ax-items-center ax-justify-center !ax-text-sm ax-w-8 ax-h-8 ax-bg-neutral-200 ax-rounded-full\"\n ></axp-logo>\n </div>\n <span class=\"ax-text-start md:ax-text-base ax-text-sm\">{{ item.data.title }}</span>\n </div>\n</ng-template>\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPopoverModule } from '@acorex/components/popover';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { CommonModule } from '@angular/common';\nimport { Component, inject, viewChild } from '@angular/core';\nimport { AXPopoverComponent } from '@acorex/components/popover';\nimport { AXPTenantChooserListComponent } from './tenant-chooser-list.component';\n\n@Component({\n selector: 'axp-tenant-chooser-dropdown',\n templateUrl: 'tenant-chooser-dropdown.component.html',\n imports: [CommonModule, AXButtonModule, AXPopoverModule, AXDecoratorModule, AXPTenantChooserListComponent]\n})\nexport class AXPTenantChooserDropdownComponent {\n private sessionService = inject(AXPSessionService);\n protected tenants$ = this.sessionService.tenants$;\n protected tenant = this.sessionService.tenant;\n\n private tenantPopover = viewChild<AXPopoverComponent>('tenantPopover');\n\n closePopover(): void {\n this.tenantPopover()?.close();\n }\n}\n","@if (tenants$ | async; as tenants) {\n@if (tenants.length > 1) {\n<ax-button [text]=\"tenant?.title ?? ''\" class=\"ax-xs\" look=\"blank\" #tenantChooser>\n <ax-suffix>\n <ax-icon class=\"fa-solid fa-caret-down\"></ax-icon>\n </ax-suffix>\n</ax-button>\n<ax-popover [target]=\"tenantChooser\" [openOn]=\"'toggle'\" [closeOn]=\"'clickOut'\" [adaptivityEnabled]=\"true\"\n #tenantPopover>\n <div class=\"ax-bg-lightest ax-border ax-overflow-hidden ax-rounded-md ax-shadow-md ax-w-full ax-min-w-64 ax-p-1\">\n <axp-tenant-chooser-list [simple]=\"true\" (tenantChosen)=\"closePopover()\"></axp-tenant-chooser-list>\n </div>\n</ax-popover>\n} @else {\n<ax-button [text]=\"tenant?.title ?? ''\" class=\"ax-xs\" look=\"blank\"></ax-button>\n}\n}","import { AXPActionMenuItem } from '@acorex/platform/core';\n\n//#region ---- Profile slot menu hook ----\n\nexport const PROFILE_SLOT_MENU_ITEMS_HOOK = 'profile-slot.menu-items';\n\nexport type AXPProfileSlotMenuBreakOptions = {\n before?: boolean;\n after?: boolean;\n};\n\nexport type AXPProfileSlotMenuItem = Omit<AXPActionMenuItem, 'break'> & {\n break?: AXPProfileSlotMenuBreakOptions;\n};\n\nexport type AXPProfileSlotMenuItemsPayload = {\n items: AXPProfileSlotMenuItem[];\n};\n\nexport function hasProfileSlotMenuBreakBefore(breakOptions?: AXPProfileSlotMenuBreakOptions): boolean {\n return breakOptions?.before === true;\n}\n\nexport function hasProfileSlotMenuBreakAfter(breakOptions?: AXPProfileSlotMenuBreakOptions): boolean {\n return breakOptions?.after === true;\n}\n\n//#endregion\n","import { AXAvatarModule } from '@acorex/components/avatar';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXImageModule } from '@acorex/components/image';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXPopoverComponent, AXPopoverModule } from '@acorex/components/popover';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPSettingsService } from '@acorex/platform/common';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPUserAvatarComponent } from '@acorex/platform/layout/components';\nimport { AXPLayoutThemeService } from '@acorex/platform/themes/shared';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n OnInit,\n ViewEncapsulation,\n inject,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { Router, RouterModule } from '@angular/router';\nimport { AXPExecuteCommand } from '@acorex/platform/contracts';\nimport { AXPKeyboardShortcutBinding, AXPKeyboardShortcutPriority, AXPKeyboardShortcutRegistry, AXPNavigateActionCommand, AXPHookService, chordToKbdItemKeys, getPrimaryKeyboardShortcutChord, normalizeKeyboardShortcuts } from '@acorex/platform/core';\nimport { AXPCommandService } from '@acorex/platform/runtime';\nimport { AXPWorkflowService } from '@acorex/platform/workflow';\nimport { AXPTenantChooserDropdownComponent } from '../tenant-chooser/tenant-chooser-dropdown.component';\nimport { AXPAuthSettings } from '../../../contracts/settings.keys';\nimport {\n AXPProfileSlotMenuItem,\n AXPProfileSlotMenuItemsPayload,\n hasProfileSlotMenuBreakAfter,\n hasProfileSlotMenuBreakBefore,\n PROFILE_SLOT_MENU_ITEMS_HOOK,\n} from './profile-slot-menu.types';\n\n@Component({\n templateUrl: './profile-slot.component.html',\n styleUrl: './profile-slot.component.scss',\n imports: [\n CommonModule,\n RouterModule,\n //\n AXImageModule,\n AXAvatarModule,\n AXPopoverModule,\n AXButtonModule,\n AXDecoratorModule,\n // AXKBDComponent,\n // AXKBDItemComponent,\n AXLoadingModule,\n AXTranslationModule,\n AXPUserAvatarComponent,\n //\n\n AXPTenantChooserDropdownComponent,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AXMAuthProfileSlotComponent implements OnInit {\n //#region ---- Services & Dependencies ----\n\n private readonly router = inject(Router);\n private readonly sessionService = inject(AXPSessionService);\n private readonly themeService = inject(AXPLayoutThemeService);\n private readonly hooks = inject(AXPHookService);\n private readonly workflow = inject(AXPWorkflowService);\n private readonly commandService = inject(AXPCommandService);\n private readonly shortcutRegistry = inject(AXPKeyboardShortcutRegistry);\n private readonly settingsService = inject(AXPSettingsService);\n private readonly destroyRef = inject(DestroyRef);\n\n //#endregion\n\n //#region ---- State ----\n\n protected readonly isDarkMode = this.themeService.isDarkMode;\n\n protected readonly user$ = this.sessionService.user$;\n protected readonly tenant$ = this.sessionService.tenant$;\n protected readonly isAuthenticated$ = this.sessionService.isAuthenticated$;\n private readonly isAuthenticated = toSignal(this.sessionService.isAuthenticated$, { initialValue: false });\n\n protected readonly menuItems = signal<AXPProfileSlotMenuItem[]>([]);\n\n //#endregion\n\n //#region ---- Lifecycle Methods ----\n\n async ngOnInit(): Promise<void> {\n await this.loadMenuItems();\n this.bindLockMenuSettingsReload();\n }\n\n //#endregion\n\n //#region ---- UI Handlers ----\n\n protected appName = () => this.sessionService.application?.name;\n\n protected menuItemClass(item: AXPProfileSlotMenuItem): Record<string, boolean> {\n return {\n 'ax-text-danger-500': item.color === 'danger',\n };\n }\n\n protected readonly hasProfileSlotMenuBreakBefore = hasProfileSlotMenuBreakBefore;\n protected readonly hasProfileSlotMenuBreakAfter = hasProfileSlotMenuBreakAfter;\n\n protected shortcutKeys(chord: string): string[] {\n return chordToKbdItemKeys(chord);\n }\n\n protected primaryShortcut(item: AXPProfileSlotMenuItem): string | undefined {\n return getPrimaryKeyboardShortcutChord(item.shortcuts);\n }\n\n protected async handleMenuItemClick(item: AXPProfileSlotMenuItem, popover: AXPopoverComponent): Promise<void> {\n popover.close();\n\n if (item.command) {\n await this.executeCommand(item.command);\n }\n }\n\n protected handleSignIn(): void {\n this.router.navigate(['/auth/login']);\n }\n\n //#endregion\n\n //#region ---- Private Methods ----\n\n private bindLockMenuSettingsReload(): void {\n this.settingsService.onChanged.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((event) => {\n if (!event.keys.includes(AXPAuthSettings.LockWhenIdleEnabled)) {\n return;\n }\n\n void this.loadMenuItems();\n });\n }\n\n private async loadMenuItems(): Promise<void> {\n const payload = await this.hooks.runAsync<AXPProfileSlotMenuItemsPayload>(PROFILE_SLOT_MENU_ITEMS_HOOK, {\n items: [],\n });\n const items = payload.items ?? [];\n this.menuItems.set(items);\n this.registerMenuShortcuts(items);\n }\n\n private registerMenuShortcuts(items: AXPProfileSlotMenuItem[]): void {\n const shortcuts: AXPKeyboardShortcutBinding[] = [];\n\n for (const item of items) {\n if (item.visible === false || !item.command || !item.shortcuts?.length) {\n continue;\n }\n\n const command = item.command;\n\n for (const shortcut of normalizeKeyboardShortcuts(item.shortcuts)) {\n for (const chord of shortcut.keys) {\n shortcuts.push({\n keys: [chord],\n title: item.title as string,\n group: '@general:keyboard-shortcuts.groups.global',\n allowInEditableFields: shortcut.allowInEditableFields,\n directionBehavior: shortcut.directionBehavior,\n when: () => this.isAuthenticated() && (shortcut.when?.() ?? true),\n handler: () => {\n void this.executeCommand(command);\n },\n });\n }\n }\n }\n\n if (shortcuts.length === 0) {\n return;\n }\n\n this.shortcutRegistry.register({\n owner: this.destroyRef,\n id: 'profile-slot-menu',\n priority: AXPKeyboardShortcutPriority.Global,\n group: '@general:keyboard-shortcuts.groups.global',\n when: () => this.isAuthenticated(),\n shortcuts,\n });\n }\n\n private async executeCommand(command: AXPExecuteCommand): Promise<void> {\n if (command.name === 'navigate') {\n const path = this.resolveNavigatePath(command.options);\n if (!path) {\n return;\n }\n\n await this.workflow.execute('navigate', {\n type: 'router',\n options: { path },\n } as AXPNavigateActionCommand<'router'>);\n return;\n }\n\n if (this.commandService.exists(command.name)) {\n await this.commandService.execute(command.name, command.options ?? {});\n }\n }\n\n private resolveNavigatePath(options?: AXPExecuteCommand['options']): string | undefined {\n if (!options) {\n return undefined;\n }\n\n if (typeof options['path'] === 'string') {\n return options['path'];\n }\n\n const routerOptions = options['router'] as { path?: string } | undefined;\n if (typeof routerOptions?.path === 'string') {\n return routerOptions.path;\n }\n\n const nestedOptions = options['options'] as { path?: string } | undefined;\n return nestedOptions?.path;\n }\n\n //#endregion\n}\n","@if (isAuthenticated$ | async) {\n<div class=\"ax-size-fit\">\n <div #avatar>\n <axp-user-avatar [size]=\"36\" [userId]=\"(user$ | async)?.id!\"></axp-user-avatar>\n </div>\n\n <ax-popover [target]=\"avatar\" [openOn]=\"'toggle'\" [closeOn]=\"'clickOut'\" #p>\n <div class=\"ax-bg-lightest ax-border ax-border-lightest ax-rounded-md ax-shadow-md ax-w-full ax-min-w-64\">\n <div class=\"ax-flex ax-flex-col ax-items-center ax-p-4 ax-border-b\">\n <axp-user-avatar [size]=\"64\" [userId]=\"(user$ | async)?.id!\"></axp-user-avatar>\n\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-mt-2\">\n <div class=\"ax-text-base ax-font-bold\">{{ (user$ | async)?.title }}</div>\n <axp-tenant-chooser-dropdown></axp-tenant-chooser-dropdown>\n </div>\n </div>\n <div class=\"axp-profile-slot-menus\">\n <ul>\n @for (item of menuItems(); track item.name ?? item.title) {\n @if (item.visible != false) {\n @if (hasProfileSlotMenuBreakBefore(item.break)) {\n <li class=\"axp-profile-slot-menu-break\" role=\"separator\"></li>\n }\n <li [class]=\"menuItemClass(item)\">\n <a (click)=\"handleMenuItemClick(item, p)\">\n <i [class]=\"item.icon\"></i>\n <span class=\"ax-flex-1\">{{ item.title | translate | async }}</span>\n <!-- @if (primaryShortcut(item); as shortcut) {\n <ax-kbd class=\"look-text ax-ms-auto ax-shrink-0\">\n <ax-kbd-item [keys]=\"shortcutKeys(shortcut)\"></ax-kbd-item>\n </ax-kbd>\n } -->\n </a>\n </li>\n @if (hasProfileSlotMenuBreakAfter(item.break)) {\n <li class=\"axp-profile-slot-menu-break\" role=\"separator\"></li>\n }\n }\n }\n </ul>\n </div>\n </div>\n </ax-popover>\n</div>\n} @else {\n<ax-button color=\"default\" look=\"blank\" text=\"Sign Up / Sign In\" (click)=\"handleSignIn()\">\n <ax-icon>\n <i class=\"fa-solid fa-user ax-text-slate-400 dark:ax-text-slate-200\"></i>\n </ax-icon>\n</ax-button>\n}","import { AXAvatarModule } from '@acorex/components/avatar';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXHtmlEvent } from '@acorex/cdk/common';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXImageModule } from '@acorex/components/image';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXPopoverComponent, AXPopoverModule } from '@acorex/components/popover';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPDataProvider } from '@acorex/platform/common';\nimport { AXPDeviceService } from '@acorex/platform/core';\nimport { AXPUserAvatarComponent } from '@acorex/platform/layout/components';\nimport { AXPMenuVerticalMode, AXPLayoutThemeService } from '@acorex/platform/themes/shared';\nimport { AsyncPipe } from '@angular/common';\nimport { Component, ViewChild, computed, inject, signal } from '@angular/core';\nimport { Router, RouterModule } from '@angular/router';\nimport { first } from 'rxjs';\nimport { AXPTenantChooserDropdownComponent } from '../tenant-chooser/tenant-chooser-dropdown.component';\n\n@Component({\n templateUrl: './user-profile-card.component.html',\n imports: [\n RouterModule,\n //\n AXImageModule,\n AXAvatarModule,\n AXPopoverModule,\n AXButtonModule,\n AXDecoratorModule,\n AXLoadingModule,\n AXTranslationModule,\n //\n AXPTenantChooserDropdownComponent,\n AsyncPipe,\n AXPUserAvatarComponent,\n ],\n})\nexport class AXMUserProfileCardSlotComponent {\n private router = inject(Router);\n private sessionService = inject(AXPSessionService);\n private dataService = inject(AXPDataProvider, { optional: true });\n private themeStore = inject(AXPLayoutThemeService);\n private deviceService = inject(AXPDeviceService);\n\n protected isCompactMode = computed(() => {\n this.deviceService.screenSize();\n return this.themeStore.effectiveMenuVerticalMode() === AXPMenuVerticalMode.Compact;\n });\n\n protected hasPicture = signal(true);\n protected avatarText = signal<string>('');\n\n constructor() {\n this.loadImage();\n this.getAvatarText();\n }\n protected src!: string;\n protected user$ = this.sessionService.user$;\n protected tenant$ = this.sessionService.tenant$;\n\n protected isAuthenticated$ = this.sessionService.isAuthenticated$;\n\n protected appName = () => this.sessionService.application?.name;\n\n @ViewChild('profilePopover') profilePopover!: AXPopoverComponent;\n\n editProfile() {\n this.router.navigate([`/${this.appName()}/m/securityManagement/e/profile/0/view`]);\n }\n\n async logOut() {\n await this.sessionService.signout();\n }\n\n toggleProfileMenu() {\n this.profilePopover.open();\n }\n\n protected handleSignIn() {\n this.router.navigate(['/auth/login']);\n }\n\n protected onImageError(event: AXHtmlEvent<ErrorEvent>) {\n this.hasPicture.set(false);\n }\n\n protected getAvatarText = () => {\n this.user$.pipe(first()).subscribe((user) => {\n const names = user?.title.split(' ');\n if (names?.length && names?.length > 1) {\n this.avatarText.set(`${names[0][0].toUpperCase()}${names[names.length - 1][0].toUpperCase()}`);\n } else return this.avatarText.set('AC');\n });\n };\n\n private async loadImage() {\n try {\n const url = this.sessionService.user?.avatar as string;\n if (url?.toLowerCase().startsWith('http')) {\n this.src = url;\n } else if (this.sessionService.user?.avatar != 'null' && this.dataService) {\n const blob = await this.dataService.viewFile(url, '');\n this.src = URL.createObjectURL(blob);\n } else {\n //this.src = this.mockerService.avatar();\n }\n } catch (error) {\n this.hasPicture.set(false);\n console.error('Failed to load image by ID:', error);\n this.src = '';\n }\n }\n}\n","@if((isAuthenticated$ | async)) {\n<div class=\"ax-p-3 ax-flex ax-items-center ax-gap-1 ax-border-b ax-border-lighter\" [class.ax-justify-center]=\"isCompactMode()\">\n <div #avatar>\n <axp-user-avatar [size]=\"48\" [userId]=\"(user$ | async)?.id!\"></axp-user-avatar>\n </div>\n @if (!isCompactMode()) {\n <div class=\"ax-flex ax-flex-col\">\n <ax-title class=\"ax-text-sm ax-font-medium ax-px-3\">{{ (user$ | async)?.title }}</ax-title>\n <axp-tenant-chooser-dropdown />\n </div>\n }\n</div>\n}\n","\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPSettingsService } from '@acorex/platform/common';\nimport { AXPPlatformScope } from '@acorex/platform/contracts';\nimport { inject, Injectable } from '@angular/core';\nimport { orderBy } from 'lodash-es';\nimport {\n AXPAuthInactiveSessionTerminationValue,\n AXPAuthSettings,\n} from '../../../contracts/settings.keys';\nimport {\n AXMDeviceSessionsService,\n AXMSecurityManagementDeviceSessionsEntityModel,\n RootConfig as SecurityManagementRootConfig,\n} from '@acorex/modules/security-management';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\n\nexport abstract class AXMUserDeviceSessionsService {\n abstract getSessions(): Promise<AXMSecurityManagementDeviceSessionsEntityModel[]>;\n abstract getCurrentActiveSessions(): Promise<AXMSecurityManagementDeviceSessionsEntityModel>;\n abstract terminateSession(sessionId: string): Promise<void>;\n abstract terminateAllSession(): Promise<void>;\n abstract setInactiveSessionTermination(value: AXPAuthInactiveSessionTerminationValue): Promise<void>;\n}\n\n@Injectable()\nexport class AXMUserDeviceSessionsServiceImp extends AXMUserDeviceSessionsService {\n //#region ---- Services & Dependencies ----\n\n private readonly sessionService = inject(AXPSessionService);\n private readonly entityService = inject(AXPEntityService);\n private readonly deviceSessionsDataAccessor = this.entityService\n .withEntity(SecurityManagementRootConfig.module.name, SecurityManagementRootConfig.entities.deviceSessions.name)\n .data<string, AXMSecurityManagementDeviceSessionsEntityModel>();\n private readonly deviceSessionsService = inject(AXMDeviceSessionsService);\n private readonly settingsService = inject(AXPSettingsService);\n\n //#endregion\n\n override async getSessions(): Promise<AXMSecurityManagementDeviceSessionsEntityModel[]> {\n const userId = this.sessionService.user?.id;\n if (!userId) {\n return [];\n }\n\n const response = await this.deviceSessionsDataAccessor.query();\n return response.items.filter(\n (item) =>\n item.userId === userId &&\n String(item.status).toLowerCase() === 'active' &&\n !item.isActiveSession,\n );\n }\n\n override async getCurrentActiveSessions(): Promise<AXMSecurityManagementDeviceSessionsEntityModel> {\n const userId = this.sessionService.user?.id;\n if (!userId) {\n throw new Error('No user found in session');\n }\n\n const response = await this.deviceSessionsDataAccessor.query();\n const userSessions = response.items.filter(\n (item) => item.userId === userId && String(item.status).toLowerCase() === 'active',\n );\n\n const activeSession = userSessions.find((item) => item.isActiveSession);\n if (activeSession) {\n return activeSession;\n }\n\n const mostRecentSession = orderBy(\n userSessions,\n [(session) => new Date(session.lastLoginDate).getTime()],\n ['desc'],\n )[0];\n\n if (!mostRecentSession) {\n throw new Error('No active session found for current user');\n }\n\n return mostRecentSession;\n }\n\n override async terminateSession(sessionId: string): Promise<void> {\n await this.deviceSessionsDataAccessor.update(sessionId, { status: 'revoked' });\n }\n\n override async terminateAllSession(): Promise<void> {\n await this.deviceSessionsService.terminateAllCurrentUserSessions();\n }\n\n override async setInactiveSessionTermination(value: AXPAuthInactiveSessionTerminationValue): Promise<void> {\n await this.settingsService\n .scope(AXPPlatformScope.User)\n .set(AXPAuthSettings.InactiveSessionTermination, value);\n }\n}\n","import { AXPAuthStrategyRegistryService, AXPSessionService } from '@acorex/platform/auth';\nimport { inject } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivateFn, Router, RouterStateSnapshot } from '@angular/router';\nimport { firstValueFrom } from 'rxjs';\n\nexport const canActivateTenantChooser: CanActivateFn = async (\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot,\n) => {\n const sessionService = inject(AXPSessionService);\n const authStrategyRegistry = inject(AXPAuthStrategyRegistryService);\n const router = inject(Router);\n const strategyName = sessionService.getSessionData()?.strategy;\n const strategy = authStrategyRegistry.get(strategyName!);\n\n if (!sessionService.user?.id) {\n return router.createUrlTree(['/auth/login']);\n }\n\n const tenants = await firstValueFrom(sessionService.tenants$);\n\n if (tenants.length === 0) {\n window.alert(\n 'You do not have any tenant assigned to your account and cannot use the site. Please contact your administrator.',\n );\n return router.createUrlTree(['/auth/login']);\n }\n if (tenants.length === 1) {\n if (strategy && typeof strategy.updateToken === 'function') {\n const updateContext = {\n user: sessionService.user,\n tenant: tenants[0],\n };\n await sessionService.updateToken(updateContext);\n return router.createUrlTree(['/auth/account/app-chooser']);\n }\n return false;\n }\n return true;\n};\n","import { AXPAuthStrategyRegistryService, AXPSessionService } from '@acorex/platform/auth';\nimport { AXPHomePageService } from '@acorex/platform/common';\nimport { inject } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivateFn, Router, RouterStateSnapshot } from '@angular/router';\nimport { firstValueFrom } from 'rxjs';\n\nexport const canActivateAppChooser: CanActivateFn = async (\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot,\n) => {\n const sessionService = inject(AXPSessionService);\n const authStrategyRegistry = inject(AXPAuthStrategyRegistryService);\n const homePageService = inject(AXPHomePageService);\n const router = inject(Router);\n const strategyName = sessionService.getSessionData()?.strategy;\n const strategy = authStrategyRegistry.get(strategyName!);\n const apps = await firstValueFrom(sessionService.applications$);\n\n if (apps.length === 0) {\n await router.navigate(['/auth/login']);\n return false;\n }\n\n if (apps.length === 1) {\n const tenantId = sessionService.tenant?.id;\n if (!tenantId) {\n throw new Error('Tenant ID is missing. Please contact support.');\n }\n if (strategy && typeof strategy.updateToken === 'function') {\n const updateContext = {\n user: sessionService.user,\n tenant: sessionService.tenant,\n application: apps[0],\n };\n await sessionService.updateToken(updateContext);\n\n\n return router.createUrlTree([homePageService.getCurrent().path]);\n }\n return false;\n }\n return true;\n};\n","import { AXPAuthGuard, AXPSessionService } from '@acorex/platform/auth';\nimport { AXPHomePageService } from '@acorex/platform/common';\nimport { AXPComponentSlotModule } from '@acorex/platform/core';\nimport { NgModule, inject } from '@angular/core';\nimport {\n ActivatedRouteSnapshot,\n CanActivateFn,\n ROUTES,\n Router,\n RouterModule,\n RouterStateSnapshot,\n Routes,\n} from '@angular/router';\nimport { firstValueFrom } from 'rxjs';\nimport { AXMAppChooserSlotComponent } from './app-chooser/app-chooser-slot.component';\nimport { AXMAuthProfileSlotComponent } from './profile/profile-slot.component';\nimport { AXMUserProfileCardSlotComponent } from './user-profile-card/user-profile-card.component';\nimport { AXMUserDeviceSessionsService, AXMUserDeviceSessionsServiceImp } from './user-sessions/user-sessions.service';\nimport { canActivateTenantChooser } from './tenant-chooser/tenant-chooser.guard';\nimport { canActivateAppChooser } from './app-chooser/app-chooser.guard';\n\nfunction routesFacory() {\n let routes: Routes = [];\n routes = [\n {\n path: 'tenant-chooser',\n loadComponent: () =>\n import('./tenant-chooser/tenant-chooser.component').then((c) => c.AXPAuthTenantChooserComponent),\n canActivate: [AXPAuthGuard, canActivateTenantChooser],\n },\n {\n path: 'app-chooser',\n loadComponent: () => import('./app-chooser/app-chooser.component').then((c) => c.AXPAuthAppChooserComponent),\n canActivate: [AXPAuthGuard, canActivateAppChooser],\n },\n ];\n return routes;\n}\n\n@NgModule({\n declarations: [],\n imports: [\n RouterModule,\n //\n AXPComponentSlotModule.forChild({\n 'root-side-menu-header': [\n {\n priority: 1,\n name: 'user-card',\n component: AXMUserProfileCardSlotComponent,\n },\n ],\n 'root-header-end': [\n {\n priority: 98,\n name: 'app-choser',\n component: AXMAppChooserSlotComponent,\n },\n {\n priority: 99,\n name: 'profile',\n component: AXMAuthProfileSlotComponent,\n },\n ],\n }),\n ],\n exports: [],\n providers: [\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFacory,\n },\n {\n provide: AXMUserDeviceSessionsService,\n useClass: AXMUserDeviceSessionsServiceImp,\n },\n ],\n})\nexport class AXPAccountModule {}\n","import { AXOverlayRef, AXOverlayService } from '@acorex/cdk/overlay';\nimport { AXPlatform } from '@acorex/core/platform';\nimport { AXPSettingsService } from '@acorex/platform/common';\nimport { AXPSessionService, AXPSessionStatus } from '@acorex/platform/auth';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\nimport { DestroyRef, Injectable, Injector, inject, signal, afterNextRender } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { defaultTo, get, isEmpty, isNil } from 'lodash-es';\nimport { filter, firstValueFrom } from 'rxjs';\n\nimport { AXPAuthSettings } from '../../contracts/settings.keys';\n\n//#region ---- Idle lock service ----\n\nconst IDLE_CHECK_INTERVAL_MS = 1_000;\nconst MOUSE_MOVE_THROTTLE_MS = 1_000;\nconst DEFAULT_LOCK_WHEN_IDLE_MINUTES = 15;\nconst SECURITY_MANAGEMENT_MODULE = 'SecurityManagement';\nconst SECURITY_MANAGEMENT_USER_ENTITY = 'User';\n\nconst LOCK_WHEN_IDLE_SETTING_KEYS = [\n AXPAuthSettings.LockWhenIdleEnabled,\n AXPAuthSettings.LockWhenIdleMinutes,\n] as const;\n\n/**\n * Tracks user inactivity and locks the session overlay when idle threshold is exceeded.\n * Requires the Lock When Idle setting to be enabled; unlock uses PIN when configured, otherwise password.\n * Locked state is stored on {@link AXPSessionService.SESSION_KEY} and survives page refresh and browser restart.\n */\n@Injectable({ providedIn: 'root' })\nexport class AXPIdleLockService {\n //#region ---- State ----\n\n readonly locked = signal(false);\n\n private readonly idleTimeoutMs = signal(DEFAULT_LOCK_WHEN_IDLE_MINUTES * 60_000);\n private readonly enabled = signal(false);\n\n /** Whether manual or idle lock is available (Lock When Idle setting is enabled). */\n readonly canLock = this.enabled.asReadonly();\n\n private readonly storedPinCode = signal('');\n\n private lastActivityAt = Date.now();\n private lastMouseMoveAt = 0;\n private idleCheckTimerId: ReturnType<typeof setInterval> | null = null;\n private overlayRef: AXOverlayRef<unknown> | null = null;\n private overlayOpening = false;\n private enableTask: Promise<void> = Promise.resolve();\n\n //#endregion\n\n //#region ---- Services & Dependencies ----\n\n private readonly sessionService = inject(AXPSessionService);\n private readonly settingsService = inject(AXPSettingsService);\n private readonly entityService = inject(AXPEntityService);\n private readonly overlayService = inject(AXOverlayService);\n private readonly platform = inject(AXPlatform);\n private readonly destroyRef = inject(DestroyRef);\n private readonly injector = inject(Injector);\n\n //#endregion\n\n //#region ---- Constructor ----\n\n constructor() {\n this.sessionService.status$\n .pipe(\n filter(\n (status) =>\n status === AXPSessionStatus.Authenticated ||\n status === AXPSessionStatus.Authorized ||\n status === AXPSessionStatus.SignedOut ||\n status === AXPSessionStatus.Expired,\n ),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe((status) => {\n const isActiveSession =\n status === AXPSessionStatus.Authenticated || status === AXPSessionStatus.Authorized;\n\n if (isActiveSession) {\n void this.scheduleEnable();\n return;\n }\n\n void this.handleInactiveSession(status);\n });\n\n afterNextRender(\n () => {\n if (this.sessionService.isLocked()) {\n void this.scheduleEnable();\n }\n },\n { injector: this.injector },\n );\n\n this.settingsService.onChanged.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((event) => {\n if (!LOCK_WHEN_IDLE_SETTING_KEYS.some((key) => event.keys.includes(key))) {\n return;\n }\n\n void this.applyLockWhenIdleSettingChange();\n });\n }\n\n //#endregion\n\n //#region ---- Public Methods ----\n\n hasPinCode(): boolean {\n return !isEmpty(this.storedPinCode());\n }\n\n verifyPin(pin: string): boolean {\n const expected = this.storedPinCode();\n return !isEmpty(expected) && pin === expected;\n }\n\n async verifyPassword(password: string): Promise<boolean> {\n const userId = this.sessionService.user?.id;\n if (isNil(userId) || isEmpty(password)) {\n return false;\n }\n\n try {\n const user = await this.entityService\n .withEntity(SECURITY_MANAGEMENT_MODULE, SECURITY_MANAGEMENT_USER_ENTITY)\n .data<string>()\n .byKey(userId);\n\n return get(user, 'password') === password;\n } catch (error) {\n console.error('Failed to verify password for session unlock', error);\n return false;\n }\n }\n\n unlock(): void {\n this.locked.set(false);\n this.sessionService.setLocked(false);\n this.closeLockOverlay();\n this.lastActivityAt = Date.now();\n }\n\n /** Locks the session overlay when Lock When Idle is enabled. */\n lockScreen(): void {\n this.lock();\n }\n\n async refreshPinState(): Promise<void> {\n const userId = this.sessionService.user?.id;\n if (isNil(userId)) {\n this.storedPinCode.set('');\n return;\n }\n\n try {\n const user = await this.entityService\n .withEntity(SECURITY_MANAGEMENT_MODULE, SECURITY_MANAGEMENT_USER_ENTITY)\n .data<string>()\n .byKey(userId);\n\n const pinCode = defaultTo(get(user, 'pinCode'), '');\n this.storedPinCode.set(pinCode);\n } catch (error) {\n console.error('Failed to load security PIN for idle lock', error);\n this.storedPinCode.set('');\n }\n }\n\n /** Refreshes lock settings and PIN state for menu/commands. */\n async refreshLockState(): Promise<void> {\n await this.refreshConfiguration();\n await this.refreshPinState();\n }\n\n /** Restores the lock overlay when the persisted session is locked. */\n restoreFromPersistedSession(): Promise<void> {\n return this.scheduleEnable();\n }\n\n /** Re-evaluates idle lock after the user sets or changes their security PIN. */\n async notifyPinChanged(): Promise<void> {\n const status = await firstValueFrom(this.sessionService.status$);\n const isActiveSession =\n status === AXPSessionStatus.Authenticated || status === AXPSessionStatus.Authorized;\n\n if (isActiveSession) {\n await this.scheduleEnable();\n }\n }\n\n //#endregion\n\n //#region ---- Private Methods ----\n\n private scheduleEnable(): Promise<void> {\n this.enableTask = this.enableTask.then(() => this.runEnable());\n return this.enableTask;\n }\n\n private async runEnable(): Promise<void> {\n await this.refreshConfiguration();\n await this.refreshPinState();\n\n if (this.sessionService.isLocked()) {\n this.restoreLockedSession();\n return;\n }\n\n if (!this.enabled()) {\n this.disable(false);\n return;\n }\n\n this.resetUnlockedRuntimeState();\n this.attachActivityListeners();\n this.startIdleCheck();\n }\n\n private restoreLockedSession(): void {\n this.locked.set(true);\n\n if (!this.overlayRef && !this.overlayOpening) {\n void this.openLockOverlay();\n }\n\n if (this.enabled()) {\n this.attachActivityListeners();\n this.startIdleCheck();\n }\n }\n\n private async handleInactiveSession(status: AXPSessionStatus): Promise<void> {\n if (status !== AXPSessionStatus.SignedOut && status !== AXPSessionStatus.Expired) {\n return;\n }\n\n const isLoading = await firstValueFrom(this.sessionService.isLoading$);\n if (isLoading) {\n return;\n }\n\n this.disable(true);\n }\n\n private disable(clearPersistedLock = false): void {\n const preserveLockedSession = this.sessionService.isLocked() && !clearPersistedLock;\n\n this.enabled.set(false);\n\n if (!preserveLockedSession) {\n this.locked.set(false);\n this.closeLockOverlay();\n }\n\n if (clearPersistedLock) {\n this.sessionService.setLocked(false);\n }\n\n this.detachActivityListeners();\n this.stopIdleCheck();\n }\n\n private async refreshConfiguration(): Promise<void> {\n const lockWhenIdleEnabled = await this.settingsService.get<boolean>(AXPAuthSettings.LockWhenIdleEnabled);\n const minutes = await this.settingsService.get<number>(AXPAuthSettings.LockWhenIdleMinutes);\n const resolvedMinutes =\n typeof minutes === 'number' && minutes > 0 ? minutes : DEFAULT_LOCK_WHEN_IDLE_MINUTES;\n\n this.enabled.set(lockWhenIdleEnabled === true);\n this.idleTimeoutMs.set(resolvedMinutes * 60_000);\n }\n\n private async applyLockWhenIdleSettingChange(): Promise<void> {\n const status = await firstValueFrom(this.sessionService.status$);\n const isActiveSession =\n status === AXPSessionStatus.Authenticated || status === AXPSessionStatus.Authorized;\n\n if (!isActiveSession) {\n return;\n }\n\n await this.scheduleEnable();\n }\n\n private recordActivity(): void {\n if (!this.enabled() || this.locked()) {\n return;\n }\n\n this.lastActivityAt = Date.now();\n }\n\n private lock(): void {\n if (!this.enabled() || this.locked()) {\n return;\n }\n\n this.locked.set(true);\n this.sessionService.setLocked(true);\n void this.openLockOverlay();\n }\n\n private openLockOverlay(): void {\n if (this.overlayRef || this.overlayOpening || !this.shouldShowLockOverlay()) {\n return;\n }\n\n afterNextRender(\n () => {\n void this.createLockOverlay();\n },\n { injector: this.injector },\n );\n }\n\n private shouldShowLockOverlay(): boolean {\n return this.locked() || this.sessionService.isLocked();\n }\n\n private async createLockOverlay(): Promise<void> {\n if (this.overlayRef || this.overlayOpening || !this.shouldShowLockOverlay()) {\n return;\n }\n\n this.overlayOpening = true;\n this.locked.set(true);\n\n try {\n const { AXMSessionLockOverlayComponent: overlayComponent } = await import(\n '../../features/session-lock/session-lock-overlay.component'\n );\n\n const panelClasses = ['axm-session-lock-overlay-shell'];\n if (this.platform.isDark()) {\n panelClasses.push('ax-dark');\n }\n\n const ref = await this.overlayService.create(overlayComponent, {\n centered: false,\n width: '100%',\n panelClass: panelClasses,\n backdrop: {\n enabled: false,\n background: false,\n closeOnClick: false,\n },\n onDispose: () => {\n this.overlayRef = null;\n },\n });\n\n if (!this.shouldShowLockOverlay()) {\n ref.dispose();\n return;\n }\n\n this.locked.set(true);\n this.overlayRef = ref;\n } catch (error) {\n console.error('Failed to open session lock overlay', error);\n\n if (this.shouldShowLockOverlay()) {\n window.setTimeout(() => this.openLockOverlay(), 250);\n }\n } finally {\n this.overlayOpening = false;\n }\n }\n\n private closeLockOverlay(): void {\n if (this.overlayRef) {\n this.overlayRef.dispose();\n this.overlayRef = null;\n }\n }\n\n private startIdleCheck(): void {\n this.stopIdleCheck();\n this.idleCheckTimerId = setInterval(() => {\n if (!this.enabled() || this.locked()) {\n return;\n }\n\n if (Date.now() - this.lastActivityAt >= this.idleTimeoutMs()) {\n this.lock();\n }\n }, IDLE_CHECK_INTERVAL_MS);\n }\n\n private stopIdleCheck(): void {\n if (!isNil(this.idleCheckTimerId)) {\n clearInterval(this.idleCheckTimerId);\n this.idleCheckTimerId = null;\n }\n }\n\n private resetUnlockedRuntimeState(): void {\n this.locked.set(false);\n this.closeLockOverlay();\n this.lastActivityAt = Date.now();\n }\n\n //#region ---- Activity listeners ----\n\n private readonly onActivity = (): void => {\n this.recordActivity();\n };\n\n private readonly onMouseMove = (): void => {\n const now = Date.now();\n if (now - this.lastMouseMoveAt < MOUSE_MOVE_THROTTLE_MS) {\n return;\n }\n\n this.lastMouseMoveAt = now;\n this.recordActivity();\n };\n\n private attachActivityListeners(): void {\n this.detachActivityListeners();\n const events: Array<keyof DocumentEventMap> = ['mousedown', 'keydown', 'wheel', 'touchstart', 'scroll', 'click'];\n events.forEach((eventName) => document.addEventListener(eventName, this.onActivity, true));\n document.addEventListener('mousemove', this.onMouseMove, true);\n }\n\n private detachActivityListeners(): void {\n const events: Array<keyof DocumentEventMap> = ['mousedown', 'keydown', 'wheel', 'touchstart', 'scroll', 'click'];\n events.forEach((eventName) => document.removeEventListener(eventName, this.onActivity, true));\n document.removeEventListener('mousemove', this.onMouseMove, true);\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ---- Profile page component keys ----\n\n/** Full-tab activity heatmap on the profile Activity group. */\nexport const PROFILE_ACTIVITY_CHART_COMPONENT_KEY = 'auth.profile-activity-chart';\n\n/** Danger-zone block for the delete-account profile section. */\nexport const PROFILE_DELETE_ACCOUNT_DANGER_ZONE_COMPONENT_KEY = 'auth.profile-delete-account-danger-zone';\n\n//#endregion\n","import { AXPExecuteCommand } from '@acorex/platform/contracts';\nimport { AXPDistributedEventListenerProvider } from '@acorex/platform/core';\nimport { AXMAuthCommandKeys } from '../../../contracts/commands.keys';\nimport {\n AXPUserProfileGroupsPayload,\n AXPUserProfileSectionsPayload,\n PROFILE_PAGE_GROUPS_HOOK,\n PROFILE_PAGE_SECTIONS_HOOK,\n} from './profile-page.types';\nimport {\n PROFILE_ACTIVITY_CHART_COMPONENT_KEY,\n PROFILE_DELETE_ACCOUNT_DANGER_ZONE_COMPONENT_KEY,\n} from './profile-page.component-keys';\n\n//#region ---- Helpers ----\n\nconst comingSoon = (messageKey: string): AXPExecuteCommand => ({\n name: AXMAuthCommandKeys.Profile.ComingSoon,\n options: { messageKey },\n});\n\n//#endregion\n\n//#region ---- Core profile groups ----\n\n/** Registers built-in profile page tab groups. */\nexport const CoreProfileGroupsHookProvider: AXPDistributedEventListenerProvider<\n AXPUserProfileGroupsPayload,\n AXPUserProfileGroupsPayload\n> = {\n key: PROFILE_PAGE_GROUPS_HOOK,\n priority: 0,\n execute: (payload) => ({\n ...payload,\n groups: [\n ...payload.groups,\n {\n id: 'account',\n title: '@auth:profile-page.groups.account.title',\n icon: 'far fa-user',\n priority: 10,\n },\n {\n id: 'security',\n title: '@auth:profile-page.groups.security.title',\n icon: 'far fa-shield-halved',\n priority: 20,\n },\n {\n id: 'requests',\n title: '@auth:profile-page.groups.requests.title',\n icon: 'far fa-inbox',\n priority: 30,\n },\n {\n id: 'activity',\n title: '@auth:profile-page.groups.activity.title',\n icon: 'far fa-clock-rotate-left',\n priority: 40,\n content: {\n mode: 'component',\n componentKey: PROFILE_ACTIVITY_CHART_COMPONENT_KEY,\n },\n },\n ],\n }),\n};\n\n//#endregion\n\n//#region ---- Core profile sections ----\n\n/** Registers built-in profile hub section cards and actions. */\nexport const CoreProfileSectionsHookProvider: AXPDistributedEventListenerProvider<\n AXPUserProfileSectionsPayload,\n AXPUserProfileSectionsPayload\n> = {\n key: PROFILE_PAGE_SECTIONS_HOOK,\n priority: 0,\n execute: (payload) => ({\n ...payload,\n sections: [\n ...payload.sections,\n {\n id: 'basic-info',\n groupId: 'account',\n title: '@auth:profile-page.sections.basic-info.title',\n description: '@auth:profile-page.sections.basic-info.description',\n icon: 'far fa-address-card',\n priority: 10,\n layout: { colSpan: 6 },\n actions: [\n {\n name: 'edit-basic-info',\n title: '@auth:profile-page.sections.basic-info.actions.edit',\n icon: 'far fa-pen',\n command: { name: AXMAuthCommandKeys.Profile.EditAccountInfo },\n },\n ],\n },\n {\n id: 'profile-photo',\n groupId: 'account',\n title: '@auth:profile-page.sections.profile-photo.title',\n description: '@auth:profile-page.sections.profile-photo.description',\n icon: 'far fa-camera',\n priority: 15,\n layout: { colSpan: 6 },\n actions: [\n {\n name: 'change-profile-photo',\n title: '@auth:profile-page.sections.profile-photo.actions.manage',\n icon: 'far fa-pen',\n command: { name: AXMAuthCommandKeys.Profile.ChangePhoto },\n },\n ],\n },\n {\n id: 'change-password',\n groupId: 'security',\n title: '@auth:profile-page.sections.change-password.title',\n description: '@auth:profile-page.sections.change-password.description',\n icon: 'far fa-key',\n priority: 10,\n layout: { colSpan: 6 },\n actions: [\n {\n name: 'change-password',\n title: '@auth:profile-page.sections.change-password.actions.manage',\n icon: 'far fa-pen',\n command: { name: AXMAuthCommandKeys.Security.ChangePassword },\n },\n ],\n },\n {\n id: 'security-pin',\n groupId: 'security',\n title: '@auth:profile-page.sections.security-pin.title',\n description: '@auth:profile-page.sections.security-pin.description',\n icon: 'far fa-lock',\n priority: 15,\n layout: { colSpan: 6 },\n },\n {\n id: 'active-sessions',\n groupId: 'security',\n title: '@auth:profile-page.sections.active-sessions.title',\n description: '@auth:profile-page.sections.active-sessions.description',\n icon: 'far fa-laptop-mobile',\n priority: 20,\n layout: { colSpan: 6 },\n actions: [\n {\n name: 'active-sessions',\n title: '@auth:profile-page.sections.active-sessions.actions.manage',\n icon: 'far fa-arrow-right',\n command: { name: AXMAuthCommandKeys.Session.OpenSessions },\n },\n ],\n },\n {\n id: 'two-factor',\n groupId: 'security',\n title: '@auth:profile-page.sections.two-factor.title',\n description: '@auth:profile-page.sections.two-factor.description',\n icon: 'far fa-shield-keyhole',\n priority: 30,\n layout: { colSpan: 6 },\n actions: [\n {\n name: 'manage-two-factor',\n title: '@auth:profile-page.sections.two-factor.actions.manage',\n icon: 'far fa-pen',\n command: comingSoon('@auth:profile-page.commands.manage-two-factor.coming-soon'),\n },\n ],\n },\n {\n id: 'login-history',\n groupId: 'security',\n title: '@auth:profile-page.sections.login-history.title',\n description: '@auth:profile-page.sections.login-history.description',\n icon: 'far fa-right-to-bracket',\n priority: 40,\n layout: { colSpan: 6 },\n actions: [\n {\n name: 'view-login-history',\n title: '@auth:profile-page.sections.login-history.actions.manage',\n icon: 'far fa-arrow-right',\n command: { name: AXMAuthCommandKeys.Security.ViewLoginHistory },\n },\n ],\n },\n {\n id: 'delete-account',\n groupId: 'account',\n priority: 100,\n content: {\n mode: 'component',\n componentKey: PROFILE_DELETE_ACCOUNT_DANGER_ZONE_COMPONENT_KEY,\n },\n layout: { colSpan: 12 },\n },\n ],\n }),\n};\n\n//#endregion\n","import { inject } from '@angular/core';\nimport { AXPDistributedEventListenerProvider } from '@acorex/platform/core';\n\nimport { AXMAuthCommandKeys } from '../../../contracts/commands.keys';\nimport { AXPIdleLockService } from '../../../shared/services/idle-lock.service';\nimport { AXPUserProfileSectionsPayload, PROFILE_PAGE_SECTIONS_HOOK } from './profile-page.types';\n\n//#region ---- Security PIN section hook ----\n\nconst SECURITY_PIN_SECTION_ID = 'security-pin';\n\n/** Enriches the security PIN section with change/remove actions when a PIN exists. */\nexport const SecurityPinSectionHookProvider: AXPDistributedEventListenerProvider<\n AXPUserProfileSectionsPayload,\n AXPUserProfileSectionsPayload\n> = {\n key: PROFILE_PAGE_SECTIONS_HOOK,\n priority: 10,\n execute: async (payload) => {\n const idleLockService = inject(AXPIdleLockService);\n await idleLockService.refreshPinState();\n\n const hasPinCode = idleLockService.hasPinCode();\n\n return {\n ...payload,\n sections: payload.sections.map((section) => {\n if (section.id !== SECURITY_PIN_SECTION_ID) {\n return section;\n }\n\n return {\n ...section,\n actions: [\n {\n name: 'set-pin-code',\n title: hasPinCode\n ? '@auth:profile-page.sections.security-pin.actions.change'\n : '@auth:profile-page.sections.security-pin.actions.manage',\n icon: 'far fa-pen',\n default: true,\n command: { name: AXMAuthCommandKeys.Security.SetPinCode },\n },\n ...(hasPinCode\n ? [\n {\n name: 'remove-pin-code',\n title: '@auth:profile-page.sections.security-pin.actions.remove',\n icon: 'far fa-trash-can',\n color: 'danger' as const,\n command: { name: AXMAuthCommandKeys.Security.RemovePinCode },\n },\n ]\n : []),\n ],\n };\n }),\n };\n },\n};\n\n//#endregion\n","import { AXPSessionService } from '@acorex/platform/auth';\nimport { Injectable, inject } from '@angular/core';\nimport { isNil } from 'lodash-es';\n\n//#region ---- Password change tracking service ----\n\nconst STORAGE_KEY_PREFIX = 'axp-auth:last-password-change-at:';\n\n/** Persists the last self-service password change timestamp per user (client-side). */\n@Injectable({ providedIn: 'root' })\nexport class AXPAuthPasswordChangeTrackingService {\n //#region ---- Services & Dependencies ----\n\n private readonly sessionService = inject(AXPSessionService);\n\n //#endregion\n\n //#region ---- Public API ----\n\n getLastChangedAt(userId?: string): Date | undefined {\n const id = userId ?? this.sessionService.user?.id;\n if (isNil(id)) {\n return undefined;\n }\n\n const raw = localStorage.getItem(this.buildStorageKey(id));\n if (!raw) {\n return undefined;\n }\n\n const parsed = new Date(raw);\n return Number.isNaN(parsed.getTime()) ? undefined : parsed;\n }\n\n recordChange(userId?: string, changedAt: Date = new Date()): void {\n const id = userId ?? this.sessionService.user?.id;\n if (isNil(id)) {\n return;\n }\n\n localStorage.setItem(this.buildStorageKey(id), changedAt.toISOString());\n }\n\n //#endregion\n\n //#region ---- Private Methods ----\n\n private buildStorageKey(userId: string): string {\n return `${STORAGE_KEY_PREFIX}${userId}`;\n }\n\n //#endregion\n}\n\n//#endregion\n","import {\n AXMSecurityManagementDeviceSessionsEntityModel,\n RootConfig as SecurityManagementRootConfig,\n} from '@acorex/modules/security-management';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\nimport { Injectable, inject } from '@angular/core';\nimport { defaultTo, isEmpty, isNil, orderBy } from 'lodash-es';\n\nimport { AXPAuthPasswordChangeTrackingService } from '../../../shared/services/password-change-tracking.service';\nimport { AXPUserProfileSectionInsight } from './profile-page.types';\n\n//#region ---- Section ids ----\n\nconst CHANGE_PASSWORD_SECTION_ID = 'change-password';\nconst ACTIVE_SESSIONS_SECTION_ID = 'active-sessions';\nconst LOGIN_HISTORY_SECTION_ID = 'login-history';\n\n//#endregion\n\n//#region ---- Profile page security insights service ----\n\n/** Loads contextual security insights for profile section cards. */\n@Injectable({ providedIn: 'root' })\nexport class AXPUserProfileSecurityInsightsService {\n //#region ---- Services & Dependencies ----\n\n private readonly sessionService = inject(AXPSessionService);\n private readonly entityService = inject(AXPEntityService);\n private readonly translateService = inject(AXTranslationService);\n private readonly passwordChangeTrackingService = inject(AXPAuthPasswordChangeTrackingService);\n\n //#endregion\n\n //#region ---- Public API ----\n\n async loadBySectionId(): Promise<Record<string, AXPUserProfileSectionInsight[]>> {\n const userId = this.sessionService.user?.id;\n if (!userId) {\n return {};\n }\n\n const sessions = await this.loadUserSessions(userId);\n\n const insightsBySectionId: Record<string, AXPUserProfileSectionInsight[]> = {};\n\n const passwordInsights = this.buildPasswordInsights(userId);\n if (!isEmpty(passwordInsights)) {\n insightsBySectionId[CHANGE_PASSWORD_SECTION_ID] = passwordInsights;\n }\n\n const activeSessionInsights = await this.buildActiveSessionInsights(sessions);\n if (!isEmpty(activeSessionInsights)) {\n insightsBySectionId[ACTIVE_SESSIONS_SECTION_ID] = activeSessionInsights;\n }\n\n const loginHistoryInsights = this.buildLoginHistoryInsights(sessions);\n if (!isEmpty(loginHistoryInsights)) {\n insightsBySectionId[LOGIN_HISTORY_SECTION_ID] = loginHistoryInsights;\n }\n\n return insightsBySectionId;\n }\n\n //#endregion\n\n //#region ---- Insight builders ----\n\n private buildPasswordInsights(userId: string): AXPUserProfileSectionInsight[] {\n const lastChangedAt = this.passwordChangeTrackingService.getLastChangedAt(userId);\n if (isNil(lastChangedAt)) {\n return [];\n }\n\n return [\n {\n id: 'last-password-change',\n icon: 'fa-light fa-fw fa-clock',\n date: lastChangedAt,\n datePrefix: '@auth:profile-page.sections.change-password.insights.last-changed',\n },\n ];\n }\n\n private async buildActiveSessionInsights(\n sessions: AXMSecurityManagementDeviceSessionsEntityModel[],\n ): Promise<AXPUserProfileSectionInsight[]> {\n const activeSessions = sessions.filter((session) => String(session.status).toLowerCase() === 'active');\n const currentSession =\n activeSessions.find((session) => session.isActiveSession) ??\n orderBy(\n activeSessions,\n [(session) => this.parseValidDate(session.lastLoginDate)?.getTime() ?? 0],\n ['desc'],\n )[0];\n\n if (isNil(currentSession)) {\n return [];\n }\n\n const deviceSummary = this.formatSessionSummary(currentSession);\n if (isEmpty(deviceSummary)) {\n return [];\n }\n\n const otherActiveCount = activeSessions.filter((session) => session.id !== currentSession.id).length;\n const insights: AXPUserProfileSectionInsight[] = [\n {\n id: 'current-session',\n icon: 'fa-light fa-fw fa-laptop',\n text: deviceSummary,\n },\n ];\n\n if (otherActiveCount > 0) {\n insights.push({\n id: 'other-sessions',\n icon: 'fa-light fa-fw fa-mobile-screen',\n text: await this.translateService.translateAsync(\n '@auth:profile-page.sections.active-sessions.insights.other-devices-value',\n { params: { count: otherActiveCount } },\n ),\n });\n }\n\n return insights;\n }\n\n private buildLoginHistoryInsights(\n sessions: AXMSecurityManagementDeviceSessionsEntityModel[],\n ): AXPUserProfileSectionInsight[] {\n const latestSession = orderBy(\n sessions,\n [(session) => this.parseValidDate(session.lastLoginDate)?.getTime() ?? 0],\n ['desc'],\n )[0];\n\n if (isNil(latestSession)) {\n return [];\n }\n\n const insights: AXPUserProfileSectionInsight[] = [];\n const lastLoginDate = this.parseValidDate(latestSession.lastLoginDate);\n\n if (lastLoginDate) {\n insights.push({\n id: 'last-login',\n icon: 'fa-light fa-fw fa-clock-rotate-left',\n date: lastLoginDate,\n datePrefix: '@auth:profile-page.sections.login-history.insights.last-sign-in',\n });\n }\n\n const location = this.formatLoginLocation(latestSession);\n if (!isEmpty(location)) {\n insights.push({\n id: 'last-login-location',\n icon: 'fa-light fa-fw fa-location-dot',\n text: location,\n });\n }\n\n return insights;\n }\n\n //#endregion\n\n //#region ---- Data loading ----\n\n private async loadUserSessions(userId: string): Promise<AXMSecurityManagementDeviceSessionsEntityModel[]> {\n const response = await this.entityService\n .withEntity(\n SecurityManagementRootConfig.module.name,\n SecurityManagementRootConfig.entities.deviceSessions.name,\n )\n .data<string, AXMSecurityManagementDeviceSessionsEntityModel>()\n .query({ skip: 0, take: 1000 });\n\n return (response.items ?? []).filter((item) => item.userId === userId);\n }\n\n //#endregion\n\n //#region ---- Formatting ----\n\n private parseValidDate(value: unknown): Date | undefined {\n if (value instanceof Date) {\n return Number.isNaN(value.getTime()) ? undefined : value;\n }\n\n if (typeof value === 'string' || typeof value === 'number') {\n const parsed = new Date(value);\n return Number.isNaN(parsed.getTime()) ? undefined : parsed;\n }\n\n return undefined;\n }\n\n private formatSessionSummary(session: AXMSecurityManagementDeviceSessionsEntityModel): string {\n const parts = [session.deviceName, session.browser, session.location]\n .map((part) => defaultTo(part, '').trim())\n .filter(Boolean);\n\n return parts.join(' · ');\n }\n\n private formatLoginLocation(session: AXMSecurityManagementDeviceSessionsEntityModel): string {\n const parts = [session.location, session.ipAddress]\n .map((part) => defaultTo(part, '').trim())\n .filter(Boolean);\n\n return parts.join(' · ');\n }\n\n //#endregion\n}\n\n//#endregion\n","import { inject } from '@angular/core';\nimport { AXPDistributedEventListenerProvider } from '@acorex/platform/core';\nimport { isEmpty } from 'lodash-es';\n\nimport { AXPUserProfileSecurityInsightsService } from './profile-page-security-insights.service';\nimport { AXPUserProfileSectionsPayload, PROFILE_PAGE_SECTIONS_HOOK } from './profile-page.types';\n\n//#region ---- Security sections insights hook ----\n\n/** Adds live security context (sessions, login, password) to profile section cards. */\nexport const SecuritySectionsInsightsHookProvider: AXPDistributedEventListenerProvider<\n AXPUserProfileSectionsPayload,\n AXPUserProfileSectionsPayload\n> = {\n key: PROFILE_PAGE_SECTIONS_HOOK,\n priority: 15,\n execute: async (payload) => {\n const insightsService = inject(AXPUserProfileSecurityInsightsService);\n const insightsBySectionId = await insightsService.loadBySectionId();\n\n return {\n ...payload,\n sections: payload.sections.map((section) => {\n const insights = insightsBySectionId[section.id];\n if (isEmpty(insights)) {\n return section;\n }\n\n return {\n ...section,\n insights,\n };\n }),\n };\n },\n};\n\n//#endregion\n","import { AXPActionMenuItem, AXPDistributedEventListenerProvider } from '@acorex/platform/core';\nimport { AXMAuthCommandKeys } from '../../../contracts/commands.keys';\nimport {\n AXPProfileSlotMenuItemsPayload,\n PROFILE_SLOT_MENU_ITEMS_HOOK,\n} from './profile-slot-menu.types';\n\n//#region ---- Profile slot logout menu hook ----\n\n/** Registers the sign-out entry in the profile dropdown. */\nexport const ProfileSlotLogoutMenuHookProvider: AXPDistributedEventListenerProvider<\n AXPProfileSlotMenuItemsPayload,\n AXPProfileSlotMenuItemsPayload\n> = {\n key: PROFILE_SLOT_MENU_ITEMS_HOOK,\n priority: 100,\n execute: (payload) => ({\n ...payload,\n items: [\n ...payload.items,\n {\n name: 'logout',\n title: '@auth:profile.logout',\n icon: 'fa-light fa-arrow-right-from-bracket',\n color: 'danger',\n shortcuts: [{ keys: 'ctrl+shift+q', allowInEditableFields: true }],\n command: { name: AXMAuthCommandKeys.Session.Signout },\n } satisfies AXPActionMenuItem,\n ],\n }),\n};\n\n//#endregion\n","import { inject } from '@angular/core';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPActionMenuItem, AXPDistributedEventListenerProvider } from '@acorex/platform/core';\nimport { AXPProfileSlotMenuItemsPayload, PROFILE_SLOT_MENU_ITEMS_HOOK } from './profile-slot-menu.types';\n\n//#region ---- Profile slot my profile menu hook ----\n\n/** Registers the My Profile entry in the profile dropdown. */\nexport const ProfileSlotMyProfileMenuHookProvider: AXPDistributedEventListenerProvider<\n AXPProfileSlotMenuItemsPayload,\n AXPProfileSlotMenuItemsPayload\n> = {\n key: PROFILE_SLOT_MENU_ITEMS_HOOK,\n priority: -10,\n execute: (payload) => {\n const sessionService = inject(AXPSessionService);\n const appName = sessionService.application?.name;\n\n if (!appName) {\n return payload;\n }\n\n return {\n ...payload,\n items: [\n ...payload.items,\n {\n name: 'my-profile',\n title: '@auth:profile-page.profile-slot.my-profile',\n icon: 'fa-light fa-user',\n shortcuts: [{ keys: 'ctrl+shift+p', allowInEditableFields: true }],\n command: {\n name: 'navigate',\n options: {\n path: `/${appName}/profile/account`,\n },\n },\n } satisfies AXPActionMenuItem,\n ],\n };\n },\n};\n\n//#endregion\n","import { inject } from '@angular/core';\nimport { AXPDistributedEventListenerProvider } from '@acorex/platform/core';\nimport { AXMAuthCommandKeys } from '../../../contracts/commands.keys';\nimport { AXPIdleLockService } from '../../../shared/services/idle-lock.service';\nimport {\n AXPProfileSlotMenuItem,\n AXPProfileSlotMenuItemsPayload,\n PROFILE_SLOT_MENU_ITEMS_HOOK,\n} from './profile-slot-menu.types';\n\n//#region ---- Profile slot lock menu hook ----\n\n/** Registers the manual lock entry when Lock When Idle is enabled. Profile menu reloads on {@link AXPAuthSettings.LockWhenIdleEnabled} changes. */\nexport const ProfileSlotLockMenuHookProvider: AXPDistributedEventListenerProvider<\n AXPProfileSlotMenuItemsPayload,\n AXPProfileSlotMenuItemsPayload\n> = {\n key: PROFILE_SLOT_MENU_ITEMS_HOOK,\n priority: 50,\n execute: async (payload) => {\n const idleLockService = inject(AXPIdleLockService);\n await idleLockService.refreshLockState();\n\n if (!idleLockService.canLock()) {\n return payload;\n }\n\n return {\n ...payload,\n items: [\n ...payload.items,\n {\n name: 'lock-screen',\n title: '@auth:profile.lock',\n icon: 'fa-light fa-lock',\n break: { before: true },\n shortcuts: [{ keys: 'ctrl+alt+l', allowInEditableFields: true }],\n command: { name: AXMAuthCommandKeys.Session.LockScreen },\n } satisfies AXPProfileSlotMenuItem,\n ],\n };\n },\n};\n\n//#endregion\n","import { AXP_MENU_PROVIDER, AXP_PROTECTED_ROUTE_GUARDS, AXP_SETTING_DEFINITION_PROVIDER, AXPCommonModule } from '@acorex/platform/common';\nimport { AXMAuthValidationRulesModule } from './validations/auth-validation-rules.module';\nimport { AXP_PAGE_COMPONENT_PROVIDER } from '@acorex/platform/layout/components';\nimport { AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER, AXP_DATASOURCE_DEFINITION_PROVIDER, provideLazyProvider } from '@acorex/platform/core';\nimport { provideCommandSetups } from '@acorex/platform/runtime';\nimport { AXPRootLayoutComponent } from '@acorex/platform/themes/default';\nimport { CommonModule } from '@angular/common';\nimport { inject, NgModule, provideAppInitializer } from '@angular/core';\nimport { RouterModule, Routes, ROUTES } from '@angular/router';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { filter, firstValueFrom } from 'rxjs';\nimport { AXMAuthCommandKeys } from './contracts/commands.keys';\nimport { routes } from './auth.routes';\nimport { AXMAuthErrorHandler } from './error-handler';\nimport { AXPAccountModule } from './pages/account/account.module';\nimport { AXPIdleLockService } from './shared/services/idle-lock.service';\nimport {\n CoreProfileGroupsHookProvider,\n CoreProfileSectionsHookProvider,\n} from './pages/account/profile-page/core-profile-sections.hook';\nimport { SecurityPinSectionHookProvider } from './pages/account/profile-page/security-pin-section.hook';\nimport { SecuritySectionsInsightsHookProvider } from './pages/account/profile-page/security-sections-insights.hook';\nimport { ProfileSlotLogoutMenuHookProvider } from './pages/account/profile/profile-slot-logout-menu.hook';\nimport { ProfileSlotMyProfileMenuHookProvider } from './pages/account/profile/profile-slot-my-profile-menu.hook';\nimport { ProfileSlotLockMenuHookProvider } from './pages/account/profile/profile-slot-lock-menu.hook';\n\nfunction profileRoutesFactory(): Routes {\n return [\n {\n path: ':app/profile',\n canActivate: [...AXP_PROTECTED_ROUTE_GUARDS],\n data: { tab: true, rootLayout: true },\n loadComponent: () => AXPRootLayoutComponent,\n children: [\n {\n path: '',\n redirectTo: 'account',\n pathMatch: 'full',\n },\n {\n path: ':groupId',\n loadComponent: () =>\n import('./pages/account/profile-page/profile-page.component').then((c) => c.AXMUserProfilePageComponent),\n data: { reuse: true },\n },\n ],\n },\n ];\n}\n\n@NgModule({\n imports: [\n CommonModule,\n AXPCommonModule.forChild({ errorHandlers: [AXMAuthErrorHandler] }),\n RouterModule.forChild(routes),\n AXPAccountModule,\n AXMAuthValidationRulesModule,\n ],\n providers: [\n provideAppInitializer(() => {\n const sessionService = inject(AXPSessionService);\n const idleLockService = inject(AXPIdleLockService);\n\n return (async () => {\n await firstValueFrom(sessionService.isLoading$.pipe(filter((loading) => !loading)));\n\n if (sessionService.isLocked()) {\n await idleLockService.restoreFromPersistedSession();\n }\n })();\n }),\n AXMAuthErrorHandler,\n provideLazyProvider(\n AXP_MENU_PROVIDER,\n () => import('./menu.provider').then(m => m.AXMSecurityManagementModuleMenuProvider)\n ),\n provideLazyProvider(\n AXP_SETTING_DEFINITION_PROVIDER,\n () => import('./settings.provider').then(m => m.AXMSettingProvider)\n ),\n provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () =>\n import('./pages/account/profile-page/profile-page-component.provider').then(\n (module) => module.AXMProfilePageComponentProvider,\n ),\n ),\n provideLazyProvider(\n AXP_DATASOURCE_DEFINITION_PROVIDER,\n () => import('./datasource.provider').then((m) => m.AXMAuthDataSourceProvider),\n ),\n {\n provide: ROUTES,\n multi: true,\n useFactory: profileRoutesFactory,\n },\n provideCommandSetups([\n {\n key: AXMAuthCommandKeys.Profile.Show,\n command: () => import('./commands/show-profile-command').then((c) => c.AXPShowProfileCommand),\n },\n {\n key: AXMAuthCommandKeys.Session.Signout,\n command: () => import('./commands/signout-command').then((c) => c.AXPSignoutCommand),\n },\n {\n key: AXMAuthCommandKeys.Session.OpenSessions,\n command: () => import('./commands/open-sessions.command').then((c) => c.AXPOpenSessionsCommand),\n },\n {\n key: AXMAuthCommandKeys.Session.LockScreen,\n command: () => import('./commands/lock-screen.command').then((c) => c.AXPLockScreenCommand),\n },\n {\n key: AXMAuthCommandKeys.Profile.ChangePhoto,\n command: () => import('./commands/change-photo.command').then((c) => c.AXPChangePhotoCommand),\n },\n {\n key: AXMAuthCommandKeys.Profile.EditAccountInfo,\n command: () => import('./commands/edit-account-info.command').then((c) => c.AXPEditAccountInfoCommand),\n },\n {\n key: AXMAuthCommandKeys.Security.ChangePassword,\n command: () => import('./commands/change-password.command').then((c) => c.AXPChangePasswordCommand),\n },\n {\n key: AXMAuthCommandKeys.Security.SetPinCode,\n command: () => import('./commands/set-pin-code.command').then((c) => c.AXPSetPinCodeCommand),\n },\n {\n key: AXMAuthCommandKeys.Security.RemovePinCode,\n command: () => import('./commands/remove-pin-code.command').then((c) => c.AXPRemovePinCodeCommand),\n },\n {\n key: AXMAuthCommandKeys.Security.ViewLoginHistory,\n command: () => import('./commands/view-login-history.command').then((c) => c.AXPViewLoginHistoryCommand),\n },\n {\n key: AXMAuthCommandKeys.Security.EditSignature,\n command: () => import('./commands/edit-signature.command').then((c) => c.AXPEditSignatureCommand),\n },\n {\n key: AXMAuthCommandKeys.Profile.ComingSoon,\n command: () => import('./commands/profile-coming-soon.command').then((c) => c.AXPProfileComingSoonCommand),\n },\n ]),\n {\n provide: AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER,\n useValue: ProfileSlotLogoutMenuHookProvider,\n multi: true,\n },\n {\n provide: AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER,\n useValue: ProfileSlotMyProfileMenuHookProvider,\n multi: true,\n },\n {\n provide: AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER,\n useValue: ProfileSlotLockMenuHookProvider,\n multi: true,\n },\n {\n provide: AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER,\n useValue: CoreProfileGroupsHookProvider,\n multi: true,\n },\n {\n provide: AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER,\n useValue: CoreProfileSectionsHookProvider,\n multi: true,\n },\n {\n provide: AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER,\n useValue: SecurityPinSectionHookProvider,\n multi: true,\n },\n {\n provide: AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER,\n useValue: SecuritySectionsInsightsHookProvider,\n multi: true,\n },\n ],\n})\nexport class AXMAuthModule {\n constructor() {\n inject(AXPIdleLockService);\n }\n}\n","import {\n AXMSecurityManagementDeviceSessionsEntityModel,\n RootConfig as SecurityManagementRootConfig,\n} from '@acorex/modules/security-management';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\nimport { Injectable, inject } from '@angular/core';\nimport { orderBy } from 'lodash-es';\n\n//#region ---- Login history entry ----\n\nexport interface AXPLoginHistoryEntry {\n id: string;\n device: string;\n location: string;\n ipAddress: string;\n browser: string;\n status: string;\n lastLoginDate: Date | string;\n}\n\n//#endregion\n\n//#region ---- Login history service ----\n\n/** Loads sign-in records for the current user from device session storage. */\n@Injectable({ providedIn: 'root' })\nexport class AXPLoginHistoryService {\n //#region ---- Services & Dependencies ----\n\n private readonly sessionService = inject(AXPSessionService);\n private readonly entityService = inject(AXPEntityService);\n\n //#endregion\n\n //#region ---- Public API ----\n\n async getEntries(): Promise<AXPLoginHistoryEntry[]> {\n const userId = this.sessionService.user?.id;\n if (!userId) {\n return [];\n }\n\n const response = await this.entityService\n .withEntity(\n SecurityManagementRootConfig.module.name,\n SecurityManagementRootConfig.entities.deviceSessions.name,\n )\n .data<string, AXMSecurityManagementDeviceSessionsEntityModel>()\n .query({ skip: 0, take: 1000 });\n\n const items = response.items ?? [];\n\n return orderBy(\n items\n .filter((item) => item.userId === userId)\n .map((item) => ({\n id: item.id,\n device: item.deviceName ?? item.operatingSystem ?? '—',\n location: item.location ?? '—',\n ipAddress: item.ipAddress ?? '—',\n browser: item.browser ?? '—',\n status: String(item.status ?? 'unknown').toLowerCase(),\n lastLoginDate: item.lastLoginDate,\n })),\n [(entry) => new Date(entry.lastLoginDate).getTime()],\n ['desc'],\n );\n }\n\n //#endregion\n}\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["SecurityManagementRootConfig","RootConfig","i1","i2","i6","i7","i3","i4","i5","i8","i9"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-modules-auth-acorex-modules-auth-Nw701LHa.mjs","sources":["../../../../libs/modules/auth/src/lib/contracts/commands.keys.ts","../../../../libs/modules/auth/src/lib/contracts/datasource.keys.ts","../../../../libs/modules/auth/src/lib/contracts/menu.keys.ts","../../../../libs/modules/auth/src/lib/contracts/permission.keys.ts","../../../../libs/modules/auth/src/lib/contracts/settings.keys.ts","../../../../libs/modules/auth/src/lib/contracts/index.ts","../../../../libs/modules/auth/src/lib/pages/account/profile-page/profile-page.types.ts","../../../../libs/modules/auth/src/lib/pages/account/profile-page/profile-page-identity.service.ts","../../../../libs/modules/auth/src/lib/shared/datasources/user-activity/user-activity.types.ts","../../../../libs/modules/auth/src/lib/shared/datasources/user-activity/user-activity.utils.ts","../../../../libs/modules/auth/src/lib/shared/datasources/user-activity/user-activity-filter.utils.ts","../../../../libs/modules/auth/src/lib/shared/datasources/user-activity/user-activity.datasource.ts","../../../../libs/modules/auth/src/lib/datasource.provider.ts","../../../../libs/modules/auth/src/lib/error-handler.ts","../../../../libs/modules/auth/src/lib/pages/login/login.guard.ts","../../../../libs/modules/auth/src/lib/auth.config.ts","../../../../libs/modules/auth/src/lib/shared/utils/password-complexity.utils.ts","../../../../libs/modules/auth/src/lib/shared/services/password-complexity.service.ts","../../../../libs/modules/auth/src/lib/validations/password-complexity-validation-rule.class.ts","../../../../libs/modules/auth/src/lib/validations/auth-validation-rules.module.ts","../../../../libs/modules/auth/src/lib/auth.routes.ts","../../../../libs/modules/auth/src/lib/pages/account/app-chooser/app-chooser-list.component.ts","../../../../libs/modules/auth/src/lib/pages/account/app-chooser/app-chooser-list.component.html","../../../../libs/modules/auth/src/lib/pages/account/app-chooser/app-chooser-slot.component.ts","../../../../libs/modules/auth/src/lib/pages/account/app-chooser/app-chooser-slot.component.html","../../../../libs/modules/auth/src/lib/pages/account/tenant-chooser/tenant-chooser-list.component.ts","../../../../libs/modules/auth/src/lib/pages/account/tenant-chooser/tenant-chooser-list.component.html","../../../../libs/modules/auth/src/lib/pages/account/tenant-chooser/tenant-chooser-dropdown.component.ts","../../../../libs/modules/auth/src/lib/pages/account/tenant-chooser/tenant-chooser-dropdown.component.html","../../../../libs/modules/auth/src/lib/pages/account/profile/profile-slot-menu.types.ts","../../../../libs/modules/auth/src/lib/pages/account/profile/profile-slot.component.ts","../../../../libs/modules/auth/src/lib/pages/account/profile/profile-slot.component.html","../../../../libs/modules/auth/src/lib/pages/account/user-profile-card/user-profile-card.component.ts","../../../../libs/modules/auth/src/lib/pages/account/user-profile-card/user-profile-card.component.html","../../../../libs/modules/auth/src/lib/pages/account/user-sessions/user-sessions.service.ts","../../../../libs/modules/auth/src/lib/pages/account/tenant-chooser/tenant-chooser.guard.ts","../../../../libs/modules/auth/src/lib/pages/account/app-chooser/app-chooser.guard.ts","../../../../libs/modules/auth/src/lib/pages/account/account.module.ts","../../../../libs/modules/auth/src/lib/shared/services/idle-lock.service.ts","../../../../libs/modules/auth/src/lib/pages/account/profile-page/profile-page.component-keys.ts","../../../../libs/modules/auth/src/lib/pages/account/profile-page/core-profile-sections.hook.ts","../../../../libs/modules/auth/src/lib/pages/account/profile-page/security-pin-section.hook.ts","../../../../libs/modules/auth/src/lib/shared/services/password-change-tracking.service.ts","../../../../libs/modules/auth/src/lib/pages/account/profile-page/profile-page-security-insights.service.ts","../../../../libs/modules/auth/src/lib/pages/account/profile-page/security-sections-insights.hook.ts","../../../../libs/modules/auth/src/lib/pages/account/profile/profile-slot-logout-menu.hook.ts","../../../../libs/modules/auth/src/lib/pages/account/profile/profile-slot-my-profile-menu.hook.ts","../../../../libs/modules/auth/src/lib/pages/account/profile/profile-slot-lock-menu.hook.ts","../../../../libs/modules/auth/src/lib/auth.module.ts","../../../../libs/modules/auth/src/lib/shared/services/login-history.service.ts","../../../../libs/modules/auth/src/acorex-modules-auth.ts"],"sourcesContent":["//#region ---- Command keys ----\n\nexport const AXMAuthCommandKeys = {\n Profile: {\n Show: 'auth:profile',\n ChangePhoto: 'auth:change-photo',\n EditAccountInfo: 'auth:edit-account-info',\n ComingSoon: 'auth:profile-coming-soon',\n },\n Session: {\n Signout: 'auth:signout',\n OpenSessions: 'auth:open-sessions',\n LockScreen: 'auth:lock-screen',\n },\n Security: {\n ChangePassword: 'auth:change-password',\n SetPinCode: 'auth:set-pin-code',\n RemovePinCode: 'auth:remove-pin-code',\n ViewLoginHistory: 'auth:view-login-history',\n EditSignature: 'auth:edit-signature',\n },\n} as const;\n\n//#endregion\n","//#region ---- Datasource keys ----\n\n/** Auth module datasource registry names. */\nexport const AXMAuthDataSourceKeys = {\n UserActivity: 'auth-user-activity',\n} as const;\n\n//#endregion\n","export const AXPAuthMenuKeys = {} as const;\n\n","export const AXMPermissionsKeys = {\n Auth: {\n Management: 'Auth:Permission:Management',\n // TODO: Add permission keys when permissions are defined\n },\n};\n","export enum AXPAuthSettings {\n TwoFactorAuth = 'Auth:Setting:Authentication.TwoFactorAuth',\n PasswordComplexity = 'Auth:Setting:Authentication.PasswordComplexity',\n PasswordExpiryDays = 'Auth:Setting:Authentication.PasswordExpiryDays',\n MaxLoginAttempts = 'Auth:Setting:Authentication.MaxLoginAttempts',\n LockoutDuration = 'Auth:Setting:Authentication.LockoutDuration',\n LockWhenIdleEnabled = 'Auth:Setting:SessionManagement.LockWhenIdleEnabled',\n LockWhenIdleMinutes = 'Auth:Setting:SessionManagement.LockWhenIdleMinutes',\n InactiveSessionTermination = 'Auth:Setting:SessionManagement.InactiveSessionTermination',\n}\n\nexport const AXPAuthInactiveSessionTerminationOptions = {\n OneWeek: 'oneWeek',\n OneMonth: 'oneMonth',\n ThreeMonths: 'threeMonths',\n SixMonths: 'sixMonths',\n} as const;\n\nexport type AXPAuthInactiveSessionTerminationValue =\n (typeof AXPAuthInactiveSessionTerminationOptions)[keyof typeof AXPAuthInactiveSessionTerminationOptions];\n\n","//#region ---- Contracts barrel ----\n\nexport * from './commands.keys';\nexport * from './datasource.keys';\nexport * from './menu.keys';\nexport * from './permission.keys';\nexport * from './settings.keys';\n\n//#endregion\n","import { AXPMultiLanguageString } from '@acorex/platform/contracts';\nimport { AXPActionMenuItem } from '@acorex/platform/core';\n\n//#region ---- Hook keys ----\n\nexport const PROFILE_PAGE_GROUPS_HOOK = 'profile-page.groups';\nexport const PROFILE_PAGE_SECTIONS_HOOK = 'profile-page.sections';\nexport const PROFILE_PAGE_HEADER_META_HOOK = 'profile-page.header-meta';\n\n//#endregion\n\n//#region ---- Hook payloads ----\n\nexport type AXPUserProfileGroupsPayload = {\n groups: AXPUserProfileGroup[];\n};\n\nexport type AXPUserProfileSectionsPayload = {\n sections: AXPUserProfileSection[];\n};\n\nexport type AXPUserProfileHeaderMetaPayload = {\n items: AXPUserProfileHeaderMetaItem[];\n};\n\n//#endregion\n\n//#region ---- Content modes ----\n\n/** Renders section cards in a configurable grid (default). */\nexport interface AXPUserProfileGroupSectionsContent {\n mode: 'sections';\n}\n\n/** Replaces the entire tab body with a registered page component. */\nexport interface AXPUserProfileGroupComponentContent {\n mode: 'component';\n componentKey: string;\n pageConfig?: Record<string, unknown>;\n}\n\nexport type AXPUserProfileGroupContent =\n | AXPUserProfileGroupSectionsContent\n | AXPUserProfileGroupComponentContent;\n\n/** Standard card with title, description, and action buttons. */\nexport interface AXPUserProfileSectionCardContent {\n mode: 'card';\n actions: AXPUserProfileSectionAction[];\n}\n\n/** Replaces the section slot with a registered page component. */\nexport interface AXPUserProfileSectionComponentContent {\n mode: 'component';\n componentKey: string;\n pageConfig?: Record<string, unknown>;\n}\n\nexport type AXPUserProfileSectionContent =\n | AXPUserProfileSectionCardContent\n | AXPUserProfileSectionComponentContent;\n\n//#endregion\n\n//#region ---- Layout ----\n\n/** Grid placement for a section within the 12-column profile sections grid. */\nexport interface AXPUserProfileSectionLayout {\n /** 1-based column start on md+ breakpoints. */\n col?: number;\n /** Number of columns to span on md+ (default 6). */\n colSpan?: number;\n /** Number of grid rows to span (default 1). */\n rowSpan?: number;\n}\n\n//#endregion\n\n//#region ---- Definitions ----\n\n/** Action on a profile section card. */\nexport type AXPUserProfileSectionAction = AXPActionMenuItem & {\n /** Primary action when the section card is clicked (required for multi-action sections). */\n default?: boolean;\n};\n\n/** Top tab group on the profile hub. */\nexport interface AXPUserProfileGroup {\n id: string;\n /** URL segment under `/:app/profile/:route`; defaults to `id`. */\n route?: string;\n title: AXPMultiLanguageString;\n icon?: string;\n priority?: number;\n /** When omitted, the tab renders its section grid. */\n content?: AXPUserProfileGroupContent;\n}\n\n/** Profile hub section contributed by modules. */\nexport interface AXPUserProfileSection {\n id: string;\n groupId: string;\n title?: AXPMultiLanguageString;\n description?: AXPMultiLanguageString;\n icon?: string;\n priority?: number;\n feature?: string;\n layout?: AXPUserProfileSectionLayout;\n content?: AXPUserProfileSectionContent;\n /** Used when `content` is omitted (card mode). */\n actions?: AXPUserProfileSectionAction[];\n /** Optional contextual block shown instead of the section description. */\n insights?: AXPUserProfileSectionInsight[];\n}\n\n/** Contextual detail row on a profile section card. */\nexport interface AXPUserProfileSectionInsight {\n id: string;\n icon?: string;\n /** Plain line shown when no date is set. */\n text?: string;\n /** Date value formatted in the template when valid. */\n date?: Date;\n /** Optional prefix shown before a formatted relative date. */\n datePrefix?: AXPMultiLanguageString;\n}\n\n/** Extra row in the profile page header (label + value). */\nexport interface AXPUserProfileHeaderMetaItem {\n id: string;\n label: AXPMultiLanguageString;\n value: AXPMultiLanguageString;\n icon?: string;\n priority?: number;\n}\n\n//#endregion\n\n//#region ---- Helpers ----\n\n/** Resolves section content; top-level `actions` imply card mode. */\nexport function resolveUserProfileSectionContent(\n section: AXPUserProfileSection,\n): AXPUserProfileSectionContent {\n if (section.content) {\n return section.content;\n }\n\n return { mode: 'card', actions: section.actions ?? [] };\n}\n\n/** Whether the group renders a full-tab component instead of sections. */\nexport function isUserProfileGroupComponent(group: AXPUserProfileGroup): boolean {\n return group.content?.mode === 'component';\n}\n\n/** Visible actions on a section card. */\nexport function visibleUserProfileSectionActions(\n actions: AXPUserProfileSectionAction[],\n): AXPUserProfileSectionAction[] {\n return actions.filter((action) => action.visible !== false);\n}\n\n/** Default card action: explicit `default`, otherwise the first visible action. */\nexport function resolveDefaultUserProfileSectionAction(\n actions: AXPUserProfileSectionAction[],\n): AXPUserProfileSectionAction | undefined {\n const visibleActions = visibleUserProfileSectionActions(actions);\n if (!visibleActions.length) {\n return undefined;\n }\n\n return visibleActions.find((action) => action.default) ?? visibleActions[0];\n}\n\n//#endregion\n","import { AXPSessionService, AXPUser } from '@acorex/platform/auth';\nimport { AXPUserAvatarService } from '@acorex/platform/layout/components';\nimport { Injectable, inject } from '@angular/core';\n\n//#region ---- Profile page identity service ----\n\n/** Keeps session and avatar cache aligned after self-service profile identity updates. */\n@Injectable({ providedIn: 'root' })\nexport class AXPUserProfileIdentityService {\n //#region ---- Services & Dependencies ----\n\n private readonly sessionService = inject(AXPSessionService);\n private readonly userAvatarService = inject(AXPUserAvatarService);\n\n //#endregion\n\n //#region ---- Public API ----\n\n async applySessionPatch(patch: Partial<Pick<AXPUser, 'name' | 'title' | 'avatar'>>): Promise<void> {\n const session = this.sessionService.getSessionData();\n const userId = session?.user?.id;\n if (!session?.user || !userId) {\n return;\n }\n\n this.sessionService.setSession({\n ...session,\n user: {\n ...session.user,\n ...patch,\n },\n });\n\n await this.refreshAvatar(userId);\n }\n\n async refreshAvatar(userId?: string): Promise<void> {\n const id = userId ?? this.sessionService.user?.id;\n if (!id) {\n return;\n }\n\n await this.userAvatarService.refreshUserInfo(id);\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ---- User activity data source types ----\n\nexport type AXPUserActivityLevel = 0 | 1 | 2 | 3 | 4;\n\nexport interface AXPUserActivityDay {\n date: string;\n count: number;\n level: AXPUserActivityLevel;\n}\n\nexport interface AXPUserActivityWeek {\n days: AXPUserActivityDay[];\n}\n\nexport interface AXPUserActivityStats {\n longestStreak: number;\n avgPerDay: number;\n avgPerWeek: number;\n total: number;\n}\n\n/** Single payload row returned by {@link AXMAuthDataSourceKeys.UserActivity}. */\nexport interface AXPUserActivityDataSourceItem {\n id: string;\n userId: string;\n startDate: string;\n endDate: string;\n weeks: AXPUserActivityWeek[];\n stats: AXPUserActivityStats;\n}\n\nexport interface AXPUserActivityLoadParams {\n userId: string;\n startDate: Date;\n endDate: Date;\n}\n\n//#endregion\n","//#region ---- User activity helpers ----\n\nimport { AXMSecurityManagementDeviceSessionsEntityModel } from '@acorex/modules/security-management';\nimport {\n AXPUserActivityDataSourceItem,\n AXPUserActivityDay,\n AXPUserActivityLevel,\n AXPUserActivityLoadParams,\n AXPUserActivityStats,\n AXPUserActivityWeek,\n} from './user-activity.types';\n\n//#region ---- Constants ----\n\nexport const AUTH_USER_ACTIVITY_DEFAULT_WEEKS = 53;\nconst LEVEL_THRESHOLDS = [0, 3, 8, 15, 30];\n\n//#endregion\n\n//#region ---- Date range ----\n\nexport function resolveDefaultUserActivityDateRange(\n weeksToShow = AUTH_USER_ACTIVITY_DEFAULT_WEEKS,\n referenceDate = new Date(),\n): { startDate: Date; endDate: Date } {\n const today = new Date(referenceDate);\n today.setHours(0, 0, 0, 0);\n\n const endSunday = new Date(today);\n endSunday.setDate(today.getDate() + (6 - today.getDay()));\n\n const startDate = new Date(endSunday);\n startDate.setDate(endSunday.getDate() - weeksToShow * 7 + 1);\n startDate.setHours(0, 0, 0, 0);\n\n return { startDate, endDate: endSunday };\n}\n\n//#endregion\n\n//#region ---- Session aggregation ----\n\nfunction normalizeDateRange(startDate: Date, endDate: Date): { rangeStart: Date; rangeEnd: Date } {\n const start = new Date(startDate);\n const end = new Date(endDate);\n start.setHours(0, 0, 0, 0);\n end.setHours(0, 0, 0, 0);\n return start <= end ? { rangeStart: start, rangeEnd: end } : { rangeStart: end, rangeEnd: start };\n}\n\nfunction toIsoDate(date: Date): string {\n return date.toISOString().slice(0, 10);\n}\n\nfunction toDayKey(value: Date | string): string | undefined {\n const date = new Date(value);\n if (Number.isNaN(date.getTime())) {\n return undefined;\n }\n date.setHours(0, 0, 0, 0);\n return toIsoDate(date);\n}\n\n/** Counts sign-in events per calendar day from device session rows. */\nexport function aggregateDailySessionCounts(\n sessions: ReadonlyArray<AXMSecurityManagementDeviceSessionsEntityModel>,\n params: AXPUserActivityLoadParams,\n): Map<string, number> {\n const { rangeStart, rangeEnd } = normalizeDateRange(params.startDate, params.endDate);\n const counts = new Map<string, number>();\n\n for (const session of sessions) {\n if (session.userId !== params.userId || session.lastLoginDate == null) {\n continue;\n }\n\n const dayKey = toDayKey(session.lastLoginDate);\n if (!dayKey) {\n continue;\n }\n\n const day = new Date(dayKey);\n if (day < rangeStart || day > rangeEnd) {\n continue;\n }\n\n counts.set(dayKey, (counts.get(dayKey) ?? 0) + 1);\n }\n\n return counts;\n}\n\n//#endregion\n\n//#region ---- Week grid ----\n\nexport function countToActivityLevel(count: number): AXPUserActivityLevel {\n if (count <= LEVEL_THRESHOLDS[1]) {\n return count === 0 ? 0 : 1;\n }\n if (count <= LEVEL_THRESHOLDS[2]) {\n return 2;\n }\n if (count <= LEVEL_THRESHOLDS[3]) {\n return 3;\n }\n return 4;\n}\n\nfunction startOfWeekSunday(date: Date): Date {\n const value = new Date(date);\n value.setHours(0, 0, 0, 0);\n value.setDate(value.getDate() - value.getDay());\n return value;\n}\n\nexport function buildUserActivityWeeks(\n params: AXPUserActivityLoadParams,\n dailyCounts: ReadonlyMap<string, number>,\n): AXPUserActivityWeek[] {\n const { rangeStart, rangeEnd } = normalizeDateRange(params.startDate, params.endDate);\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n\n const gridStart = startOfWeekSunday(rangeStart);\n const gridEnd = startOfWeekSunday(rangeEnd);\n gridEnd.setDate(gridEnd.getDate() + 6);\n\n const weeks: AXPUserActivityWeek[] = [];\n const cursor = new Date(gridStart);\n\n while (cursor <= gridEnd) {\n const days: AXPUserActivityDay[] = [];\n\n for (let dayIndex = 0; dayIndex < 7; dayIndex += 1) {\n const date = new Date(cursor);\n const inRange = date >= rangeStart && date <= rangeEnd;\n const dayKey = toIsoDate(date);\n const count = inRange && date <= today ? (dailyCounts.get(dayKey) ?? 0) : 0;\n\n days.push({\n date: dayKey,\n count,\n level: countToActivityLevel(count),\n });\n cursor.setDate(cursor.getDate() + 1);\n }\n\n weeks.push({ days });\n }\n\n return weeks;\n}\n\nexport function computeUserActivityStats(weeks: AXPUserActivityWeek[]): AXPUserActivityStats {\n const days = weeks.flatMap((week) => week.days).filter((day) => day.count > 0);\n const total = days.reduce((sum, day) => sum + day.count, 0);\n const activeDayCount = days.length || 1;\n\n let longestStreak = 0;\n let currentStreak = 0;\n\n for (const week of weeks) {\n for (const day of week.days) {\n if (day.count > 0) {\n currentStreak += 1;\n longestStreak = Math.max(longestStreak, currentStreak);\n } else {\n currentStreak = 0;\n }\n }\n }\n\n const weekCount = weeks.length || 1;\n\n return {\n longestStreak,\n avgPerDay: Math.round(total / activeDayCount),\n avgPerWeek: Math.round(total / weekCount),\n total,\n };\n}\n\nexport function buildUserActivityDataSourceItem(\n params: AXPUserActivityLoadParams,\n sessions: ReadonlyArray<AXMSecurityManagementDeviceSessionsEntityModel>,\n): AXPUserActivityDataSourceItem {\n const dailyCounts = aggregateDailySessionCounts(sessions, params);\n const weeks = buildUserActivityWeeks(params, dailyCounts);\n\n return {\n id: `${params.userId}:${toIsoDate(params.startDate)}:${toIsoDate(params.endDate)}`,\n userId: params.userId,\n startDate: toIsoDate(params.startDate),\n endDate: toIsoDate(params.endDate),\n weeks,\n stats: computeUserActivityStats(weeks),\n };\n}\n\nexport function formatCompactActivityCount(value: number): string {\n if (value >= 1_000_000) {\n return `${(value / 1_000_000).toFixed(2)}M`;\n }\n if (value >= 1_000) {\n return `${Math.round(value / 1000)}K`;\n }\n return String(value);\n}\n\n//#endregion\n","//#region ---- User activity filter helpers ----\n\nimport { AXDataSourceFilterOption } from '@acorex/cdk/common';\n\nfunction isResolvedFilterScalar(value: unknown): value is string | number | Date {\n if (value == null) {\n return false;\n }\n if (value instanceof Date) {\n return !Number.isNaN(value.getTime());\n }\n const text = String(value).trim();\n return text.length > 0 && !text.includes('{{');\n}\n\nfunction parseFilterDate(value: unknown): Date | undefined {\n if (!isResolvedFilterScalar(value)) {\n return undefined;\n }\n if (value instanceof Date) {\n return value;\n }\n const parsed = new Date(String(value));\n return Number.isNaN(parsed.getTime()) ? undefined : parsed;\n}\n\nfunction extractFilterFieldValue(\n filter: AXDataSourceFilterOption | undefined,\n field: string,\n operators: string[],\n): unknown {\n if (!filter) {\n return undefined;\n }\n\n if (filter.filters?.length) {\n for (const child of filter.filters) {\n const value = extractFilterFieldValue(child, field, operators);\n if (value !== undefined) {\n return value;\n }\n }\n return undefined;\n }\n\n const operator = String(filter.operator?.type ?? '');\n if (filter.field === field && operators.includes(operator)) {\n return isResolvedFilterScalar(filter.value) ? filter.value : undefined;\n }\n\n return undefined;\n}\n\nexport function extractUserActivityUserId(filter: AXDataSourceFilterOption | undefined): string | undefined {\n const value = extractFilterFieldValue(filter, 'userId', ['equal', 'eq']);\n if (value == null) {\n return undefined;\n }\n const text = String(value).trim();\n return text.length > 0 ? text : undefined;\n}\n\nexport function extractUserActivityStartDate(filter: AXDataSourceFilterOption | undefined): Date | undefined {\n const gte = parseFilterDate(extractFilterFieldValue(filter, 'startDate', ['gte', 'greaterThanOrEqual', 'equal', 'eq']));\n if (gte) {\n return gte;\n }\n return parseFilterDate(extractFilterFieldValue(filter, 'dateFrom', ['gte', 'greaterThanOrEqual', 'equal', 'eq']));\n}\n\nexport function extractUserActivityEndDate(filter: AXDataSourceFilterOption | undefined): Date | undefined {\n const lte = parseFilterDate(extractFilterFieldValue(filter, 'endDate', ['lte', 'lessThanOrEqual', 'equal', 'eq']));\n if (lte) {\n return lte;\n }\n return parseFilterDate(extractFilterFieldValue(filter, 'dateTo', ['lte', 'lessThanOrEqual', 'equal', 'eq']));\n}\n\n//#endregion\n","//#region ---- User activity data source ----\n\nimport { AXDataSource, AXDataSourceFilterOption } from '@acorex/cdk/common';\nimport {\n AXMSecurityManagementDeviceSessionsEntityModel,\n RootConfig as SecurityManagementRootConfig,\n} from '@acorex/modules/security-management';\nimport { AXPFilterDefinition } from '@acorex/platform/contracts';\nimport { AXPDataSourceDefinition, AXPDataSourceDefinitionProvider, AXPQueryRequest } from '@acorex/platform/core';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\nimport { AXPWidgetsCatalog } from '@acorex/platform/contracts';\nimport { inject } from '@angular/core';\nimport { isEmpty } from 'lodash-es';\nimport {\n extractUserActivityEndDate,\n extractUserActivityStartDate,\n extractUserActivityUserId,\n} from './user-activity-filter.utils';\nimport { AXMAuthDataSourceKeys } from '../../../contracts/datasource.keys';\nimport {\n AXPUserActivityDataSourceItem,\n AXPUserActivityLoadParams,\n} from './user-activity.types';\nimport {\n buildUserActivityDataSourceItem,\n resolveDefaultUserActivityDateRange,\n} from './user-activity.utils';\n\nfunction resolveLoadParams(request?: AXPQueryRequest): AXPUserActivityLoadParams | null {\n const userId = extractUserActivityUserId(request?.filter);\n if (isEmpty(userId)) {\n return null;\n }\n\n const defaultRange = resolveDefaultUserActivityDateRange();\n const startDate = extractUserActivityStartDate(request?.filter) ?? defaultRange.startDate;\n const endDate = extractUserActivityEndDate(request?.filter) ?? defaultRange.endDate;\n\n return {\n userId: userId!,\n startDate,\n endDate,\n };\n}\n\n/** Contribution-style user activity heatmap derived from device session sign-in dates. */\nexport class AXMUserActivityDataSourceDefinition implements AXPDataSourceDefinitionProvider {\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n\n //#endregion\n\n //#region ---- Public API ----\n\n items(): Promise<AXPDataSourceDefinition<AXPUserActivityDataSourceItem>[]> {\n const sampleParams = resolveDefaultUserActivityDateRange();\n const sampleItem = buildUserActivityDataSourceItem(\n { userId: 'sample-user', ...sampleParams },\n [],\n );\n\n return Promise.resolve([\n {\n name: AXMAuthDataSourceKeys.UserActivity,\n title: 'User Activity',\n columns: [\n {\n name: 'id',\n title: 'ID',\n datatype: 'string',\n type: AXPWidgetsCatalog.text,\n },\n {\n name: 'userId',\n title: 'User ID',\n datatype: 'string',\n type: AXPWidgetsCatalog.text,\n },\n {\n name: 'startDate',\n title: 'Start Date',\n datatype: 'date',\n type: AXPWidgetsCatalog.dateTime,\n },\n {\n name: 'endDate',\n title: 'End Date',\n datatype: 'date',\n type: AXPWidgetsCatalog.dateTime,\n },\n ],\n filters: [\n {\n field: 'userId',\n title: 'User',\n operator: { type: 'equal' },\n widget: { type: AXPWidgetsCatalog.text },\n filterType: { advance: true, inline: true },\n } as AXPFilterDefinition,\n {\n field: 'startDate',\n title: 'Start Date',\n operator: { type: 'gte' },\n widget: { type: AXPWidgetsCatalog.dateTime, options: { format: 'date' } },\n filterType: { advance: true, inline: true },\n } as AXPFilterDefinition,\n {\n field: 'endDate',\n title: 'End Date',\n operator: { type: 'lte' },\n widget: { type: AXPWidgetsCatalog.dateTime, options: { format: 'date' } },\n filterType: { advance: true, inline: true },\n } as AXPFilterDefinition,\n ],\n textField: { name: 'id', title: 'ID' },\n valueField: { name: 'id', title: 'ID' },\n samples: [sampleItem],\n source: () =>\n new AXDataSource<AXPUserActivityDataSourceItem>({\n key: 'id',\n pageSize: 1,\n load: async (request) => {\n const params = resolveLoadParams(request);\n if (!params) {\n return { items: [], total: 0 };\n }\n\n const sessions = await this.loadUserSessions(params.userId);\n const item = buildUserActivityDataSourceItem(params, sessions);\n return { items: [item], total: 1 };\n },\n }),\n },\n ]);\n }\n\n //#endregion\n\n //#region ---- Private Methods ----\n\n private async loadUserSessions(\n userId: string,\n ): Promise<AXMSecurityManagementDeviceSessionsEntityModel[]> {\n const response = await this.entityService\n .withEntity(\n SecurityManagementRootConfig.module.name,\n SecurityManagementRootConfig.entities.deviceSessions.name,\n )\n .data<string, AXMSecurityManagementDeviceSessionsEntityModel>()\n .query({\n skip: 0,\n take: 1000,\n filter: {\n field: 'userId',\n operator: { type: 'equal' },\n value: userId,\n } as AXDataSourceFilterOption,\n });\n\n return response.items ?? [];\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ---- Auth data source provider ----\n\nimport { AXPDataSourceDefinitionProvider } from '@acorex/platform/core';\nimport { AXMUserActivityDataSourceDefinition } from './shared/datasources/user-activity';\n\n/**\n * Registers auth module data source definitions.\n */\nexport class AXMAuthDataSourceProvider implements AXPDataSourceDefinitionProvider {\n private readonly userActivity = new AXMUserActivityDataSourceDefinition();\n\n async items() {\n return [...(await this.userActivity.items())];\n }\n}\n\n//#endregion\n","import { AXPUnauthenticatedError, AXPUnauthorizedError } from '@acorex/platform/auth';\nimport { AXPErrorHandler } from '@acorex/platform/common';\nimport { AXPLayoutThemeService } from '@acorex/platform/themes/shared';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { Injectable, NgZone, inject, isDevMode } from '@angular/core';\nimport { Router } from '@angular/router';\n\n@Injectable()\nexport class AXMAuthErrorHandler implements AXPErrorHandler {\n private router = inject(Router);\n private layoutService = inject(AXPLayoutThemeService);\n\n handleError(error: Error, next: (error: any) => void): void {\n if (error instanceof HttpErrorResponse) {\n // if (error.status == 401) {\n // this.router.navigate(['/auth/login']);\n // }\n // else if (error.status == 404) {\n // this.router.navigate(['/404']);\n // }\n } else if (error instanceof AXPUnauthorizedError) {\n const redirectUrl = error.data?.redirectUrl;\n console.error(error.message);\n this.router.navigate(['/401'], { queryParams: redirectUrl ? { redirectUrl: redirectUrl } : null });\n } else if (error instanceof AXPUnauthenticatedError) {\n console.error(error.message);\n const redirectUrl = error.data?.redirectUrl;\n this.router.navigate(['/auth/login'], { queryParams: redirectUrl ? { redirectUrl: redirectUrl } : null });\n } else {\n if (isDevMode()) {\n next(error); // Pass the error to the next handler\n } else {\n next(error); // maybe we need a error page\n }\n }\n this.layoutService.setNavigationLoading(false);\n }\n}\n","import { ActivatedRouteSnapshot, CanActivateFn, RouterStateSnapshot, UrlTree } from '@angular/router';\n\n/**\n * Guard for login page that redirects authenticated users to home page.\n * This guard prevents authenticated users from accessing the login page.\n */\nexport const canActivateLogin: CanActivateFn = async (\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot,\n): Promise<boolean | UrlTree> => {\n // If not authenticated, allow access to login page\n return true;\n};\n","import { InjectionToken } from '@angular/core';\nimport { AuthConfig } from 'angular-oauth2-oidc';\n\nexport enum AXMAuthenticationTypes {\n UsernamePassword,\n UsernameEmailPassword,\n EmailPassword,\n MobilePassword,\n EmailCode,\n MobileCode,\n}\n\nexport const AXM_AUTH_CONFIG_TOKEN = new InjectionToken<AXMAuthConfigs>('app-module-auth-config', {\n providedIn: 'root',\n factory: () => {\n return AXMDefaultAuthConfigs;\n },\n});\n\nexport interface AXMExternalProviderConfig {\n providerName: string;\n}\n\nexport interface AXMAuthConfigs {\n type: AXMAuthenticationTypes;\n // oidc_settings?: UserManagerSettings;\n authConfig?: AuthConfig; // تغییر به optional\n baseUrl?: string; // اضافه کردن baseUrl\n logoutUrl?: string; // اضافه کردن logoutUrl\n end_url?: string;\n signup?: {\n enable: boolean;\n url?: string;\n };\n externalProviders?: {\n [provider: string]: AXMExternalProviderConfig;\n };\n signinPage?: {\n description: string;\n slogan: string;\n };\n defaultStrategyName?: string;\n idleTimeout?: number;\n}\n\nexport const AXMDefaultAuthConfigs: AXMAuthConfigs = {\n type: AXMAuthenticationTypes.UsernamePassword,\n // defaultStrategyName:'oidc',\n // حذف authConfig از اینجا چون از environment خوانده میشود\n defaultStrategyName: 'user-pass',\n};\n\nexport function configAuthModule(config: Partial<AXMAuthConfigs> = AXMDefaultAuthConfigs): AXMAuthConfigs {\n return { ...AXMDefaultAuthConfigs, ...config };\n}\n\n//#region ---- Login Guard Token ----\n\nimport { CanActivateFn } from '@angular/router';\nimport { canActivateLogin } from './pages/login/login.guard';\n\n/**\n * Injection token for login page guard.\n * Apps can provide their own custom guard by providing this token.\n * If not provided, the default guard (canActivateLogin) will be used.\n */\nexport const AXM_LOGIN_GUARD_TOKEN = new InjectionToken<CanActivateFn>('AXM_LOGIN_GUARD_TOKEN', {\n providedIn: 'root',\n factory: () => canActivateLogin,\n});\n\n//#endregion\n","import { coerceUnknownToTrimmedString } from '@acorex/platform/core';\nimport { isNil } from 'lodash-es';\n\n//#region ---- Types ----\n\nexport const AXPAuthPasswordComplexityLevels = {\n Low: 'Low',\n Medium: 'Medium',\n High: 'High',\n} as const;\n\nexport type AXPAuthPasswordComplexityLevel =\n (typeof AXPAuthPasswordComplexityLevels)[keyof typeof AXPAuthPasswordComplexityLevels];\n\nexport interface AXPAuthPasswordComplexityPolicy {\n minLength: number;\n requireUppercase: boolean;\n requireLowercase: boolean;\n requireDigit: boolean;\n requireSpecialCharacter: boolean;\n}\n\n//#endregion\n\n//#region ---- Policy ----\n\nconst PASSWORD_COMPLEXITY_POLICIES: Record<AXPAuthPasswordComplexityLevel, AXPAuthPasswordComplexityPolicy> = {\n [AXPAuthPasswordComplexityLevels.Low]: {\n minLength: 6,\n requireUppercase: false,\n requireLowercase: false,\n requireDigit: false,\n requireSpecialCharacter: false,\n },\n [AXPAuthPasswordComplexityLevels.Medium]: {\n minLength: 8,\n requireUppercase: true,\n requireLowercase: true,\n requireDigit: true,\n requireSpecialCharacter: false,\n },\n [AXPAuthPasswordComplexityLevels.High]: {\n minLength: 12,\n requireUppercase: true,\n requireLowercase: true,\n requireDigit: true,\n requireSpecialCharacter: true,\n },\n};\n\nconst SPECIAL_CHARACTER_PATTERN = /[^a-zA-Z0-9]/;\n\n//#endregion\n\n//#region ---- Utility Methods ----\n\n/**\n * Normalizes tenant password complexity setting values to a supported level.\n */\nexport function normalizePasswordComplexityLevel(value: unknown): AXPAuthPasswordComplexityLevel {\n if (isNil(value)) {\n return AXPAuthPasswordComplexityLevels.Medium;\n }\n\n const normalized = coerceUnknownToTrimmedString(value).toLowerCase();\n\n if (normalized === 'low') {\n return AXPAuthPasswordComplexityLevels.Low;\n }\n\n if (normalized === 'medium') {\n return AXPAuthPasswordComplexityLevels.Medium;\n }\n\n if (normalized === 'high') {\n return AXPAuthPasswordComplexityLevels.High;\n }\n\n return AXPAuthPasswordComplexityLevels.Medium;\n}\n\n/**\n * Returns the validation policy for the given complexity level.\n */\nexport function getPasswordComplexityPolicy(\n level: AXPAuthPasswordComplexityLevel,\n): AXPAuthPasswordComplexityPolicy {\n return PASSWORD_COMPLEXITY_POLICIES[level];\n}\n\n/**\n * Validates a password against the configured complexity policy.\n */\nexport function validatePasswordAgainstComplexity(\n password: string,\n level: AXPAuthPasswordComplexityLevel,\n): boolean {\n const policy = getPasswordComplexityPolicy(level);\n\n if (password.length < policy.minLength) {\n return false;\n }\n\n if (policy.requireUppercase && !/[A-Z]/.test(password)) {\n return false;\n }\n\n if (policy.requireLowercase && !/[a-z]/.test(password)) {\n return false;\n }\n\n if (policy.requireDigit && !/\\d/.test(password)) {\n return false;\n }\n\n if (policy.requireSpecialCharacter && !SPECIAL_CHARACTER_PATTERN.test(password)) {\n return false;\n }\n\n return true;\n}\n\n/**\n * Resolves the i18n key for the password complexity hint shown under the new password field.\n */\nexport function getPasswordComplexityHintKey(level: AXPAuthPasswordComplexityLevel): string {\n return `@auth:profile-page.commands.change-password.complexity.hint.${level.toLowerCase()}`;\n}\n\n/**\n * Resolves the i18n key for the password complexity validation error message.\n */\nexport function getPasswordComplexityValidationMessageKey(level: AXPAuthPasswordComplexityLevel): string {\n return `@auth:profile-page.commands.change-password.complexity.validation.${level.toLowerCase()}`;\n}\n\n//#endregion\n","import { AXPSettingsService } from '@acorex/platform/common';\nimport { AXPPlatformScope } from '@acorex/platform/contracts';\nimport { inject, Injectable } from '@angular/core';\nimport { AXPAuthSettings } from '../../contracts/settings.keys';\nimport {\n AXPAuthPasswordComplexityLevel,\n normalizePasswordComplexityLevel,\n} from '../utils/password-complexity.utils';\n\n//#region ---- Password Complexity Service ----\n\n/**\n * Resolves tenant password complexity policy for auth flows (change password, registration, etc.).\n * Uses tenant scope explicitly so inherited user-scope snapshots do not override tenant policy.\n */\n@Injectable({ providedIn: 'root' })\nexport class AXPAuthPasswordComplexityService {\n //#region ---- Services & Dependencies ----\n\n private readonly settingsService = inject(AXPSettingsService);\n\n //#endregion\n\n //#region ---- Public Methods ----\n\n async getLevel(): Promise<AXPAuthPasswordComplexityLevel> {\n const tenantValue = await this.settingsService\n .scope(AXPPlatformScope.Tenant)\n .get<unknown>(AXPAuthSettings.PasswordComplexity);\n\n if (tenantValue !== undefined && tenantValue !== null) {\n return normalizePasswordComplexityLevel(tenantValue);\n }\n\n const effectiveValue = await this.settingsService.get<unknown>(AXPAuthSettings.PasswordComplexity);\n return normalizePasswordComplexityLevel(effectiveValue);\n }\n\n //#endregion\n}\n\n//#endregion\n","import {\n AXValidationRule,\n AXValidationRuleOptions,\n AXValidationRuleResult,\n} from '@acorex/core/validation';\nimport { inject, Injectable } from '@angular/core';\nimport { isString } from 'lodash-es';\nimport { AXPAuthPasswordComplexityService } from '../shared/services/password-complexity.service';\nimport {\n AXPAuthPasswordComplexityLevel,\n normalizePasswordComplexityLevel,\n validatePasswordAgainstComplexity,\n} from '../shared/utils/password-complexity.utils';\n\n//#region ---- Password Complexity Validation Rule ----\n\nexport interface AXPasswordComplexityValidationRuleOptions extends AXValidationRuleOptions {\n complexity?: AXPAuthPasswordComplexityLevel | string;\n message?: string;\n}\n\n/**\n * Validates passwords against tenant-configured complexity levels (Low, Medium, High).\n */\n@Injectable()\nexport class PasswordComplexityValidationRule implements AXValidationRule {\n //#region ---- Services & Dependencies ----\n\n private readonly passwordComplexityService = inject(AXPAuthPasswordComplexityService);\n\n //#endregion\n\n get name(): string {\n return 'password-complexity';\n }\n\n async validate(\n value: unknown,\n options?: AXPasswordComplexityValidationRuleOptions,\n ): Promise<AXValidationRuleResult> {\n const complexity = await this.resolveComplexity(options?.complexity);\n const message = options?.message ?? '';\n\n if (!isString(value) || value.length === 0) {\n return {\n rule: this.name,\n result: false,\n message,\n value,\n };\n }\n\n const isValid = validatePasswordAgainstComplexity(value, complexity);\n\n return {\n rule: this.name,\n result: isValid,\n message: isValid ? '' : message,\n value,\n };\n }\n\n //#endregion\n\n //#region ---- Utility Methods ----\n\n private async resolveComplexity(\n override: AXPAuthPasswordComplexityLevel | string | undefined,\n ): Promise<AXPAuthPasswordComplexityLevel> {\n if (override !== undefined && override !== null && String(override).trim() !== '') {\n return normalizePasswordComplexityLevel(override);\n }\n\n return this.passwordComplexityService.getLevel();\n }\n\n //#endregion\n}\n\n//#endregion\n","import { AXValidationModule } from '@acorex/core/validation';\nimport { NgModule } from '@angular/core';\nimport { PasswordComplexityValidationRule } from './password-complexity-validation-rule.class';\n\n//#region ---- Auth Validation Rules Module ----\n\n@NgModule({\n imports: [\n AXValidationModule.forChild({\n rules: [PasswordComplexityValidationRule],\n }),\n ],\n})\nexport class AXMAuthValidationRulesModule {}\n\n//#endregion\n","import { Route } from '@angular/router';\nexport const routes: Route[] = [\n {\n path: 'auth',\n children: [\n {\n path: '',\n pathMatch: 'full',\n redirectTo: 'login',\n },\n {\n path: '',\n loadComponent: () =>\n import('./shared/layouts/master/master.layout').then((c) => c.AXPAuthMasterLayoutComponent),\n loadChildren: () => import('./pages/login/login.module').then((c) => c.AXPSignInModule),\n },\n {\n path: '',\n loadComponent: () =>\n import('./shared/layouts/master/master.layout').then((c) => c.AXPAuthMasterLayoutComponent),\n loadChildren: () => import('./pages/two-factor/two-factor.module').then((c) => c.AXPTwoFactorModule),\n },\n {\n path: '',\n loadComponent: () =>\n import('./shared/layouts/master/master.layout').then((c) => c.AXPAuthMasterLayoutComponent),\n loadChildren: () => import('./pages/forgot/routes').then((c) => c),\n },\n {\n path: 'axp-oauth-callback',\n loadComponent: () =>\n import('./pages/callback/oauth-callback.component').then((c) => c.AXPOAuthCallbackComponent),\n },\n {\n path: 'account',\n loadComponent: () => import('./shared/layouts/blank/blank.layout').then((c) => c.AXPAuthBlankLayoutComponent),\n loadChildren: () => import('./pages/account/account.module').then((c) => c.AXPAccountModule),\n },\n // {\n // path: 'signincallback',\n // loadComponent: () =>\n // import('./pages/callback/oauth-callback.component').then((c) => c.AXPOAuthCallbackComponent),\n // },\n // {\n // path: '',\n // loadComponent: () =>\n // import('./shared/layouts/master/master.layout').then((c) => c.AXPAuthMasterLayoutComponent),\n // loadChildren: () => import('./register/register.module').then((c) => c.AXPRegisterModule),\n // },\n ],\n },\n];\n","import { RootConfig } from '@acorex/modules/application-management';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\nimport { AXValueChangedEvent } from '@acorex/cdk/common';\nimport { AXListNavigationDirective, AXListNavigationItemDirective, AXListNavigationModule } from '@acorex/cdk/list-navigation';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPApplication, AXPAuthStrategyRegistryService, AXPSessionContext, AXPSessionService } from '@acorex/platform/auth';\nimport { AXPHomePageService } from '@acorex/platform/common';\nimport { AXPLogoComponent } from '@acorex/platform/layout/components';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, input, OnInit, output, signal, viewChild, viewChildren } from '@angular/core';\nimport { first } from 'rxjs';\n@Component({\n selector: 'axp-app-chooser-list',\n templateUrl: 'app-chooser-list.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n AXButtonModule,\n AXDecoratorModule,\n AXSkeletonModule,\n AXSelectBoxModule,\n AXSearchBoxModule,\n AXListNavigationModule,\n AXTranslationModule,\n AXPLogoComponent,\n ],\n})\nexport class AXPAppChooserListComponent implements OnInit {\n private readonly entityService = inject(AXPEntityService);\n //#region ---- Services & Dependencies ----\n\n private sessionService = inject(AXPSessionService);\n private homePageService = inject(AXPHomePageService);\n private authStrategyRegistry = inject(AXPAuthStrategyRegistryService);\n private applicationService = this.entityService.withEntity(RootConfig.module.name, RootConfig.entities.application.name).data<any, any>();\n private strategyName = this.sessionService.getSessionData()?.strategy;\n private strategy = this.authStrategyRegistry.get(this.strategyName!);\n\n //#endregion\n\n //#region ---- Inputs & Outputs ----\n\n simple = input<boolean>(false);\n applicationChosen = output<void>();\n\n //#endregion\n\n //#region ---- View References ----\n\n private listNav = viewChild(AXListNavigationDirective);\n private listItems = viewChildren(AXListNavigationItemDirective);\n\n //#endregion\n\n //#region ---- State ----\n\n protected isLoading = signal(true);\n protected allApplications = signal<AXPApplication[]>([]);\n protected useSelectBox = computed(() => this.allApplications().length > 3);\n protected selectedApplication = signal<AXPApplication | null>(null);\n protected isSelectBoxOpen = signal(false);\n protected canApply = computed(() => !!this.selectedApplication());\n protected skeletonItems = [1, 2, 3];\n\n //#endregion\n\n //#region ---- Computed Properties ----\n\n protected isApplicationSelected(application: AXPApplication): boolean {\n return application.id === this.sessionService.application?.id;\n }\n\n //#endregion\n\n //#region ---- Constructor ----\n\n constructor() {\n effect(() => {\n if (!this.isLoading() && !this.useSelectBox() && this.allApplications().length > 0) {\n queueMicrotask(() => this.focusFirstListItem());\n }\n });\n }\n\n //#endregion\n\n //#region ---- Lifecycle Methods ----\n\n ngOnInit(): void {\n this.sessionService.applications$.pipe(first()).subscribe((applications) => {\n this.allApplications.set(applications);\n\n if (applications.length > 0) {\n this.selectedApplication.set(applications[0]);\n }\n\n this.isLoading.set(false);\n });\n }\n\n //#endregion\n\n //#region ---- UI Handlers ----\n\n handleApplicationSelect(event: AXValueChangedEvent): void {\n if (!event.isUserInteraction) {\n return;\n }\n\n this.selectedApplication.set((event.component.selectedItems[0] as AXPApplication) ?? null);\n }\n\n handleListItemKeyDown(event: KeyboardEvent, application: AXPApplication): void {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n void this.chooseApplication(application);\n }\n }\n\n handleSelectBoxKeyDown(event: Event): void {\n if (!(event instanceof KeyboardEvent)) {\n return;\n }\n\n if (event.key !== 'Enter' && event.key !== 'NumpadEnter') {\n return;\n }\n\n if (this.isSelectBoxOpen()) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n if (this.canApply()) {\n this.applySelection();\n }\n }\n\n applySelection(): void {\n const application = this.selectedApplication();\n if (application) {\n void this.chooseApplication(application);\n }\n }\n\n async chooseApplication(item: AXPApplication): Promise<void> {\n const tenantId = this.sessionService.tenant?.id || '';\n if (!tenantId) {\n throw new Error('Tenant ID is missing. Cannot choose application.');\n }\n\n const fullApplication = await this.applicationService.byKey(item.id);\n if (!fullApplication) {\n throw new Error(`Application not found: ${item.id}`);\n }\n\n let selectedEdition = item.edition;\n if (!selectedEdition && fullApplication.editions && fullApplication.editions.length > 0) {\n selectedEdition = {\n id: fullApplication.editions[0].id,\n title: fullApplication.editions[0].title,\n description: fullApplication.editions[0].description,\n };\n }\n\n const applicationWithEdition: AXPApplication = {\n ...item,\n version: fullApplication.version || item.version,\n edition: selectedEdition,\n };\n\n if (this.strategy && typeof this.strategy.updateToken === 'function') {\n const updateContext = {\n application: applicationWithEdition,\n user: this.sessionService.user,\n tenant: this.sessionService.tenant,\n };\n await this.sessionService.updateToken(updateContext as AXPSessionContext);\n }\n\n this.applicationChosen.emit();\n await this.homePageService.navigateTo();\n }\n\n //#endregion\n\n //#region ---- Utility Methods ----\n\n private focusFirstListItem(): void {\n const nav = this.listNav();\n const items = this.listItems();\n const applications = this.allApplications();\n const currentIndex = applications.findIndex((application) => this.isApplicationSelected(application));\n\n if (nav && items.length > 0) {\n nav.navigateTo(items[currentIndex >= 0 ? currentIndex : 0]);\n }\n }\n\n //#endregion\n}\n","@if (isLoading()) {\n <div class=\"ax-w-full ax-flex ax-flex-col ax-gap-3\">\n @for (item of skeletonItems; track item) {\n <div class=\"ax-flex ax-gap-2 ax-items-center ax-p-2\">\n <ax-skeleton [animated]=\"true\" class=\"ax-w-12 ax-h-12 ax-rounded-full ax-shrink-0\"></ax-skeleton>\n <ax-skeleton [animated]=\"true\" class=\"ax-flex-1 ax-h-6 ax-rounded-md\"></ax-skeleton>\n </div>\n }\n </div>\n} @else if (useSelectBox()) {\n <div class=\"ax-w-full ax-flex ax-flex-col ax-gap-4\" (keydown.capture)=\"handleSelectBoxKeyDown($event)\">\n <ax-select-box\n class=\"ax-w-full\"\n [dataSource]=\"allApplications()\"\n textField=\"title\"\n valueField=\"id\"\n [itemHeight]=\"56\"\n [value]=\"selectedApplication()\"\n [placeholder]=\"('@auth:application-chooser.select-placeholder' | translate | async) ?? ''\"\n [itemTemplate]=\"applicationItemTemplate\"\n (onOpened)=\"isSelectBoxOpen.set(true)\"\n (onClosed)=\"isSelectBoxOpen.set(false)\"\n (onValueChanged)=\"handleApplicationSelect($event)\"\n >\n <ax-search-box look=\"fill\"></ax-search-box>\n </ax-select-box>\n <ax-button\n class=\"ax-w-full\"\n color=\"primary\"\n [disabled]=\"!canApply()\"\n [text]=\"('@general:actions.apply.title' | translate | async) ?? ''\"\n (onClick)=\"applySelection()\"\n ></ax-button>\n </div>\n} @else {\n <div\n axListNavigation\n #listNav=\"axListNavigation\"\n class=\"ax-w-full ax-overflow-auto ax-max-h-[300px] ax-flex ax-flex-col ax-gap-1\"\n role=\"listbox\"\n >\n @for (application of allApplications(); track application.id) {\n <div\n axListNavigationItem\n #navItem=\"axListNavigationItem\"\n tabindex=\"0\"\n role=\"option\"\n [attr.aria-selected]=\"isApplicationSelected(application)\"\n class=\"ax-flex ax-gap-2 ax-items-center ax-p-2 ax-cursor-pointer ax-rounded-md ax-transition-colors ax-outline-none hover:ax-bg-primary-lightest hover:dark:ax-bg-primary-dark\"\n [class.ax-bg-primary-lighter]=\"isApplicationSelected(application)\"\n [class.dark:ax-bg-primary-darker]=\"isApplicationSelected(application)\"\n [class.ax-text-primary-on-lighter]=\"isApplicationSelected(application)\"\n [class.dark:ax-text-primary-on-darker]=\"isApplicationSelected(application)\"\n [class.ax-ring-2]=\"navItem.isActive()\"\n [class.ax-ring-primary]=\"navItem.isActive()\"\n (click)=\"chooseApplication(application)\"\n (keydown)=\"handleListItemKeyDown($event, application)\"\n >\n <div class=\"ax-flex ax-flex-1 ax-gap-2 ax-items-center ax-min-w-0\">\n <div\n class=\"ax-shrink-0 ax-flex ax-justify-center ax-items-center ax-rounded-full ax-bg-neutral-100\"\n [class.ax-w-10]=\"simple()\"\n [class.ax-h-10]=\"simple()\"\n [class.ax-w-12]=\"!simple()\"\n [class.ax-h-12]=\"!simple()\"\n >\n <axp-logo\n [source]=\"application.logo\"\n [attr.alt]=\"application.title\"\n class=\"!ax-flex ax-items-center ax-justify-center !ax-text-sm ax-bg-neutral-200 dark:ax-bg-neutral-800 ax-rounded-full\"\n [class.ax-w-8]=\"simple()\"\n [class.ax-h-8]=\"simple()\"\n [class.ax-w-10]=\"!simple()\"\n [class.ax-h-10]=\"!simple()\"\n ></axp-logo>\n </div>\n <span class=\"ax-flex-1 ax-truncate ax-text-start md:ax-text-base ax-text-sm\">{{ application.title }}</span>\n @if (application.edition?.title) {\n <span class=\"ax-text-muted ax-text-xs ax-shrink-0\">{{ application.edition?.title }}</span>\n }\n </div>\n </div>\n }\n </div>\n}\n\n<ng-template #applicationItemTemplate let-item>\n <div class=\"ax-flex ax-gap-2 ax-items-center ax-p-2\">\n <div\n class=\"ax-w-10 ax-h-10 ax-flex ax-justify-center ax-items-center ax-rounded-full ax-bg-neutral-100 ax-shrink-0\"\n >\n <axp-logo\n [source]=\"item.data.logo\"\n [attr.alt]=\"item.data.title\"\n class=\"!ax-flex ax-items-center ax-justify-center !ax-text-sm ax-w-8 ax-h-8 ax-bg-neutral-200 ax-rounded-full\"\n ></axp-logo>\n </div>\n <span class=\"ax-flex-1 ax-text-start md:ax-text-base ax-text-sm\">{{ item.data.title }}</span>\n @if (item.data.edition?.title) {\n <span class=\"ax-text-muted ax-text-xs\">{{ item.data.edition.title }}</span>\n }\n </div>\n</ng-template>\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPopoverModule } from '@acorex/components/popover';\nimport { AXPApplication, AXPAuthStrategyRegistryService, AXPSessionService } from '@acorex/platform/auth';\nimport { AXPHomePageService } from '@acorex/platform/common';\nimport { CommonModule } from '@angular/common';\nimport { Component, inject, viewChild } from '@angular/core';\nimport { AXPopoverComponent } from '@acorex/components/popover';\nimport { AXPAppChooserListComponent } from './app-chooser-list.component';\n\n@Component({\n templateUrl: './app-chooser-slot.component.html',\n imports: [CommonModule, AXButtonModule, AXPopoverModule, AXDecoratorModule, AXPAppChooserListComponent],\n})\nexport class AXMAppChooserSlotComponent {\n\n private sessionService = inject(AXPSessionService);\n protected applications$ = this.sessionService.applications$;\n\n private appPopover = viewChild<AXPopoverComponent>('appPopover');\n\n closePopover(): void {\n this.appPopover()?.close();\n }\n}\n","@if (((applications$ | async)?.length ?? 0) > 1) {\n <ax-button color=\"primary\" #appChooser>\n <ax-icon class=\"fa-regular fa-grid-2\"> </ax-icon>\n </ax-button>\n <ax-popover [target]=\"appChooser\" [openOn]=\"'toggle'\" [closeOn]=\"'clickOut'\" #appPopover>\n <div class=\"ax-bg-lightest ax-border ax-overflow-hidden ax-rounded-md ax-shadow-md ax-w-full ax-min-w-64 ax-p-1\">\n <axp-app-chooser-list [simple]=\"true\" (applicationChosen)=\"closePopover()\"></axp-app-chooser-list>\n </div>\n </ax-popover>\n}\n","import { AXValueChangedEvent } from '@acorex/cdk/common';\nimport {\n AXListNavigationDirective,\n AXListNavigationItemDirective,\n AXListNavigationModule,\n} from '@acorex/cdk/list-navigation';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPAuthStrategyRegistryService, AXPSessionService, AXPTenant } from '@acorex/platform/auth';\nimport { AXPIconLogoConfig } from '@acorex/platform/core';\nimport { AXPLogoComponent } from '@acorex/platform/layout/components';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n OnInit,\n output,\n signal,\n viewChild,\n viewChildren,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { first } from 'rxjs';\n\n@Component({\n selector: 'axp-tenant-chooser-list',\n templateUrl: 'tenant-chooser-list.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n FormsModule,\n AXTranslationModule,\n AXButtonModule,\n AXDecoratorModule,\n AXSkeletonModule,\n AXSelectBoxModule,\n AXSearchBoxModule,\n AXListNavigationModule,\n AXPLogoComponent,\n ],\n})\nexport class AXPTenantChooserListComponent implements OnInit {\n //#region ---- Services & Dependencies ----\n\n private sessionService = inject(AXPSessionService);\n private authStrategyRegistry = inject(AXPAuthStrategyRegistryService);\n private router = inject(Router);\n private strategyName = this.sessionService.getSessionData()?.strategy;\n private strategy = this.authStrategyRegistry.get(this.strategyName!);\n\n //#endregion\n\n //#region ---- Inputs & Outputs ----\n\n simple = input<boolean>(false);\n tenantChosen = output<void>();\n\n //#endregion\n\n //#region ---- View References ----\n\n private listNav = viewChild(AXListNavigationDirective);\n private listItems = viewChildren(AXListNavigationItemDirective);\n\n //#endregion\n\n //#region ---- State ----\n\n protected defaultLogo = new AXPIconLogoConfig('fa-solid fa-building', 'neutral-500');\n protected isLoading = signal(true);\n protected allTenants = signal<AXPTenant[]>([]);\n protected searchValue = signal('');\n protected showAll = signal(false);\n protected useSelectBox = computed(() => this.allTenants().length > 3);\n protected selectedTenant = signal<AXPTenant | null>(null);\n protected isSelectBoxOpen = signal(false);\n protected canApply = computed(() => !!this.selectedTenant());\n protected skeletonItems = [1, 2, 3];\n\n /** Tenants shown in the list (respects search and view-all toggle). */\n protected displayedTenants = computed(() => {\n const tenants = this.filterTenants(this.allTenants());\n if (this.showAll() || tenants.length <= 4) {\n return tenants;\n }\n return tenants.slice(0, 4);\n });\n\n protected showSearchAndViewAll = computed(() => this.allTenants().length > 4);\n\n //#endregion\n\n //#region ---- Computed Properties ----\n\n protected isTenantSelected(tenant: AXPTenant): boolean {\n return tenant.id === this.sessionService.tenant?.id;\n }\n\n //#endregion\n\n //#region ---- Constructor ----\n\n constructor() {\n effect(() => {\n if (!this.isLoading() && !this.useSelectBox() && !this.simple() && this.allTenants().length > 0) {\n queueMicrotask(() => this.focusFirstListItem());\n }\n });\n }\n\n //#endregion\n\n //#region ---- Lifecycle Methods ----\n\n ngOnInit(): void {\n this.sessionService.tenants$.pipe(first()).subscribe((tenants) => {\n this.allTenants.set(tenants);\n\n if (tenants.length > 0) {\n this.selectedTenant.set(tenants[0]);\n }\n\n this.isLoading.set(false);\n });\n }\n\n //#endregion\n\n //#region ---- UI Handlers ----\n\n filterTenants(tenants: AXPTenant[]): AXPTenant[] {\n const query = this.searchValue().toLowerCase();\n return tenants.filter((tenant) => tenant.title.toLowerCase().includes(query));\n }\n\n handleSearch(event: string): void {\n if (event !== undefined) {\n this.searchValue.set(event);\n }\n }\n\n showAllTenants(): void {\n this.showAll.update((value) => !value);\n }\n\n handleTenantSelect(event: AXValueChangedEvent): void {\n if (!event.isUserInteraction) {\n return;\n }\n\n this.selectedTenant.set((event.component.selectedItems[0] as AXPTenant) ?? null);\n }\n\n handleListItemKeyDown(event: KeyboardEvent, tenant: AXPTenant): void {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n void this.chooseTenant(tenant);\n }\n }\n\n handleSelectBoxKeyDown(event: Event): void {\n if (!(event instanceof KeyboardEvent)) {\n return;\n }\n\n if (event.key !== 'Enter' && event.key !== 'NumpadEnter') {\n return;\n }\n\n if (this.isSelectBoxOpen()) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n if (this.canApply()) {\n this.applySelection();\n }\n }\n\n applySelection(): void {\n const tenant = this.selectedTenant();\n if (tenant) {\n void this.chooseTenant(tenant);\n }\n }\n\n async chooseTenant(item: AXPTenant): Promise<boolean | void> {\n if (this.strategy) {\n const updateContext = {\n tenant: item,\n user: this.sessionService.user,\n };\n await this.sessionService.updateToken(updateContext);\n }\n\n this.tenantChosen.emit();\n return this.router.navigate(['/auth/account/app-chooser']);\n }\n\n //#endregion\n\n //#region ---- Utility Methods ----\n\n private focusFirstListItem(): void {\n const nav = this.listNav();\n const items = this.listItems();\n const tenants = this.allTenants();\n const currentIndex = tenants.findIndex((tenant) => this.isTenantSelected(tenant));\n\n if (nav && items.length > 0) {\n nav.navigateTo(items[currentIndex >= 0 ? currentIndex : 0]);\n }\n }\n\n //#endregion\n}\n","@if (isLoading()) {\n <div class=\"ax-w-full ax-flex ax-flex-col ax-gap-3\">\n @for (item of skeletonItems; track item) {\n <div class=\"ax-flex ax-gap-2 ax-items-center ax-p-2\">\n <ax-skeleton [animated]=\"true\" class=\"ax-w-12 ax-h-12 ax-rounded-full ax-shrink-0\"></ax-skeleton>\n <ax-skeleton [animated]=\"true\" class=\"ax-flex-1 ax-h-6 ax-rounded-md\"></ax-skeleton>\n </div>\n }\n </div>\n} @else if (simple()) {\n <div class=\"ax-w-full ax-overflow-auto ax-max-h-[300px] ax-pe-2\">\n @for (tenant of allTenants(); track tenant.id) {\n <div\n class=\"ax-flex ax-gap-2 ax-justify-between ax-border-b last:ax-border-b-0 ax-py-3 ax-items-start ax-cursor-pointer\"\n (click)=\"chooseTenant(tenant)\"\n >\n <div class=\"ax-flex ax-flex-1 ax-gap-2 ax-items-center ax-font-medium\">\n <div\n class=\"ax-w-12 ax-h-12 ax-flex ax-justify-center ax-items-center ax-rounded-full ax-bg-neutral-100 ax-m-auto\"\n >\n <axp-logo\n [source]=\"tenant.logo ?? defaultLogo\"\n [attr.alt]=\"tenant.title\"\n class=\"!ax-flex ax-items-center ax-justify-center !ax-text-sm ax-mx-auto ax-w-10 ax-h-10 ax-bg-neutral-200 ax-rounded-full\"\n ></axp-logo>\n </div>\n <span class=\"ax-flex-1 ax-text-start md:ax-text-base ax-text-sm\">{{ tenant.title }}</span>\n </div>\n </div>\n }\n </div>\n} @else if (useSelectBox()) {\n <div class=\"ax-w-full ax-flex ax-flex-col ax-gap-4\" (keydown.capture)=\"handleSelectBoxKeyDown($event)\">\n <ax-select-box\n class=\"ax-w-full\"\n [dataSource]=\"allTenants()\"\n textField=\"title\"\n valueField=\"id\"\n [value]=\"selectedTenant()\"\n [itemHeight]=\"56\"\n [placeholder]=\"('@auth:tenant-chooser.select-placeholder' | translate | async) ?? ''\"\n [itemTemplate]=\"tenantItemTemplate\"\n (onOpened)=\"isSelectBoxOpen.set(true)\"\n (onClosed)=\"isSelectBoxOpen.set(false)\"\n (onValueChanged)=\"handleTenantSelect($event)\"\n >\n <ax-search-box look=\"fill\"></ax-search-box>\n </ax-select-box>\n <ax-button\n class=\"ax-w-full\"\n color=\"primary\"\n [disabled]=\"!canApply()\"\n [text]=\"('@general:actions.apply.title' | translate | async) ?? ''\"\n (onClick)=\"applySelection()\"\n ></ax-button>\n </div>\n} @else {\n @if (showSearchAndViewAll()) {\n <ax-search-box\n [placeholder]=\"'@general:search.title' | translate | async\"\n [ngModel]=\"searchValue()\"\n (ngModelChange)=\"handleSearch($event)\"\n class=\"ax-w-full\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n }\n <div\n axListNavigation\n #listNav=\"axListNavigation\"\n class=\"ax-w-full ax-overflow-auto ax-max-h-[300px] ax-flex ax-flex-col ax-gap-1\"\n role=\"listbox\"\n >\n @for (tenant of displayedTenants(); track tenant.id) {\n <div\n axListNavigationItem\n #navItem=\"axListNavigationItem\"\n tabindex=\"0\"\n role=\"option\"\n [attr.aria-selected]=\"isTenantSelected(tenant)\"\n class=\"ax-flex ax-gap-2 ax-items-center ax-p-2 ax-cursor-pointer ax-rounded-md ax-transition-colors ax-outline-none hover:ax-bg-primary-lightest hover:dark:ax-bg-primary-dark\"\n [class.ax-bg-primary-lighter]=\"isTenantSelected(tenant)\"\n [class.dark:ax-bg-primary-darker]=\"isTenantSelected(tenant)\"\n [class.ax-text-primary-on-lighter]=\"isTenantSelected(tenant)\"\n [class.dark:ax-text-primary-on-darker]=\"isTenantSelected(tenant)\"\n [class.ax-ring-2]=\"navItem.isActive()\"\n [class.ax-ring-primary]=\"navItem.isActive()\"\n (click)=\"chooseTenant(tenant)\"\n (keydown)=\"handleListItemKeyDown($event, tenant)\"\n >\n <div class=\"ax-flex ax-flex-1 ax-gap-2 ax-items-center ax-min-w-0\">\n <div\n class=\"ax-shrink-0 ax-flex ax-justify-center ax-items-center ax-rounded-full ax-bg-neutral-100\"\n [class.ax-w-10]=\"simple()\"\n [class.ax-h-10]=\"simple()\"\n [class.ax-w-12]=\"!simple()\"\n [class.ax-h-12]=\"!simple()\"\n >\n <axp-logo\n [source]=\"tenant.logo ?? defaultLogo\"\n [attr.alt]=\"tenant.title\"\n class=\"!ax-flex ax-items-center ax-justify-center !ax-text-sm ax-bg-neutral-200 dark:ax-bg-neutral-800 ax-rounded-full\"\n [class.ax-w-8]=\"simple()\"\n [class.ax-h-8]=\"simple()\"\n [class.ax-w-10]=\"!simple()\"\n [class.ax-h-10]=\"!simple()\"\n ></axp-logo>\n </div>\n <span class=\"ax-flex-1 ax-truncate ax-text-start md:ax-text-base ax-text-sm\">{{ tenant.title }}</span>\n </div>\n </div>\n }\n </div>\n @if (showSearchAndViewAll()) {\n <div class=\"ax-mt-6 ax-w-full ax-flex ax-justify-center\">\n <ax-button\n (onClick)=\"showAllTenants()\"\n class=\"ax-w-full\"\n look=\"outline\"\n [text]=\"\n showAll()\n ? ('@general:actions.view-less.title' | translate | async)\n : ('@general:actions.view-all.title' | translate | async)\n \"\n ></ax-button>\n </div>\n }\n}\n\n<ng-template #tenantItemTemplate let-item>\n <div class=\"ax-flex ax-gap-2 ax-items-center ax-p-2\">\n <div\n class=\"ax-w-10 ax-h-10 ax-flex ax-justify-center ax-items-center ax-rounded-full ax-bg-neutral-100 ax-shrink-0\"\n >\n <axp-logo\n [source]=\"item.data.logo ?? defaultLogo\"\n [attr.alt]=\"item.data.title\"\n class=\"!ax-flex ax-items-center ax-justify-center !ax-text-sm ax-w-8 ax-h-8 ax-bg-neutral-200 ax-rounded-full\"\n ></axp-logo>\n </div>\n <span class=\"ax-text-start md:ax-text-base ax-text-sm\">{{ item.data.title }}</span>\n </div>\n</ng-template>\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPopoverModule } from '@acorex/components/popover';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { CommonModule } from '@angular/common';\nimport { Component, inject, viewChild } from '@angular/core';\nimport { AXPopoverComponent } from '@acorex/components/popover';\nimport { AXPTenantChooserListComponent } from './tenant-chooser-list.component';\n\n@Component({\n selector: 'axp-tenant-chooser-dropdown',\n templateUrl: 'tenant-chooser-dropdown.component.html',\n imports: [CommonModule, AXButtonModule, AXPopoverModule, AXDecoratorModule, AXPTenantChooserListComponent]\n})\nexport class AXPTenantChooserDropdownComponent {\n private sessionService = inject(AXPSessionService);\n protected tenants$ = this.sessionService.tenants$;\n protected tenant = this.sessionService.tenant;\n\n private tenantPopover = viewChild<AXPopoverComponent>('tenantPopover');\n\n closePopover(): void {\n this.tenantPopover()?.close();\n }\n}\n","@if (tenants$ | async; as tenants) {\n@if (tenants.length > 1) {\n<ax-button [text]=\"tenant?.title ?? ''\" class=\"ax-xs\" look=\"blank\" #tenantChooser>\n <ax-suffix>\n <ax-icon class=\"fa-solid fa-caret-down\"></ax-icon>\n </ax-suffix>\n</ax-button>\n<ax-popover [target]=\"tenantChooser\" [openOn]=\"'toggle'\" [closeOn]=\"'clickOut'\" [adaptivityEnabled]=\"true\"\n #tenantPopover>\n <div class=\"ax-bg-lightest ax-border ax-overflow-hidden ax-rounded-md ax-shadow-md ax-w-full ax-min-w-64 ax-p-1\">\n <axp-tenant-chooser-list [simple]=\"true\" (tenantChosen)=\"closePopover()\"></axp-tenant-chooser-list>\n </div>\n</ax-popover>\n} @else {\n<ax-button [text]=\"tenant?.title ?? ''\" class=\"ax-xs\" look=\"blank\"></ax-button>\n}\n}","import { AXPActionMenuItem } from '@acorex/platform/core';\n\n//#region ---- Profile slot menu hook ----\n\nexport const PROFILE_SLOT_MENU_ITEMS_HOOK = 'profile-slot.menu-items';\n\nexport type AXPProfileSlotMenuBreakOptions = {\n before?: boolean;\n after?: boolean;\n};\n\nexport type AXPProfileSlotMenuItem = Omit<AXPActionMenuItem, 'break'> & {\n break?: AXPProfileSlotMenuBreakOptions;\n};\n\nexport type AXPProfileSlotMenuItemsPayload = {\n items: AXPProfileSlotMenuItem[];\n};\n\nexport function hasProfileSlotMenuBreakBefore(breakOptions?: AXPProfileSlotMenuBreakOptions): boolean {\n return breakOptions?.before === true;\n}\n\nexport function hasProfileSlotMenuBreakAfter(breakOptions?: AXPProfileSlotMenuBreakOptions): boolean {\n return breakOptions?.after === true;\n}\n\n//#endregion\n","import { AXAvatarModule } from '@acorex/components/avatar';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXImageModule } from '@acorex/components/image';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXPopoverComponent, AXPopoverModule } from '@acorex/components/popover';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPSettingsService } from '@acorex/platform/common';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPUserAvatarComponent } from '@acorex/platform/layout/components';\nimport { AXPLayoutThemeService } from '@acorex/platform/themes/shared';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n OnInit,\n ViewEncapsulation,\n inject,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { Router, RouterModule } from '@angular/router';\nimport { AXPExecuteCommand } from '@acorex/platform/contracts';\nimport { AXPKeyboardShortcutBinding, AXPKeyboardShortcutPriority, AXPKeyboardShortcutRegistry, AXPNavigateActionCommand, AXPHookService, chordToKbdItemKeys, getPrimaryKeyboardShortcutChord, normalizeKeyboardShortcuts } from '@acorex/platform/core';\nimport { AXPCommandService } from '@acorex/platform/runtime';\nimport { AXPWorkflowService } from '@acorex/platform/workflow';\nimport { AXPTenantChooserDropdownComponent } from '../tenant-chooser/tenant-chooser-dropdown.component';\nimport { AXPAuthSettings } from '../../../contracts/settings.keys';\nimport {\n AXPProfileSlotMenuItem,\n AXPProfileSlotMenuItemsPayload,\n hasProfileSlotMenuBreakAfter,\n hasProfileSlotMenuBreakBefore,\n PROFILE_SLOT_MENU_ITEMS_HOOK,\n} from './profile-slot-menu.types';\n\n@Component({\n templateUrl: './profile-slot.component.html',\n styleUrl: './profile-slot.component.scss',\n imports: [\n CommonModule,\n RouterModule,\n //\n AXImageModule,\n AXAvatarModule,\n AXPopoverModule,\n AXButtonModule,\n AXDecoratorModule,\n // AXKBDComponent,\n // AXKBDItemComponent,\n AXLoadingModule,\n AXTranslationModule,\n AXPUserAvatarComponent,\n //\n\n AXPTenantChooserDropdownComponent,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AXMAuthProfileSlotComponent implements OnInit {\n //#region ---- Services & Dependencies ----\n\n private readonly router = inject(Router);\n private readonly sessionService = inject(AXPSessionService);\n private readonly themeService = inject(AXPLayoutThemeService);\n private readonly hooks = inject(AXPHookService);\n private readonly workflow = inject(AXPWorkflowService);\n private readonly commandService = inject(AXPCommandService);\n private readonly shortcutRegistry = inject(AXPKeyboardShortcutRegistry);\n private readonly settingsService = inject(AXPSettingsService);\n private readonly destroyRef = inject(DestroyRef);\n\n //#endregion\n\n //#region ---- State ----\n\n protected readonly isDarkMode = this.themeService.isDarkMode;\n\n protected readonly user$ = this.sessionService.user$;\n protected readonly tenant$ = this.sessionService.tenant$;\n protected readonly isAuthenticated$ = this.sessionService.isAuthenticated$;\n private readonly isAuthenticated = toSignal(this.sessionService.isAuthenticated$, { initialValue: false });\n\n protected readonly menuItems = signal<AXPProfileSlotMenuItem[]>([]);\n\n //#endregion\n\n //#region ---- Lifecycle Methods ----\n\n async ngOnInit(): Promise<void> {\n await this.loadMenuItems();\n this.bindLockMenuSettingsReload();\n }\n\n //#endregion\n\n //#region ---- UI Handlers ----\n\n protected appName = () => this.sessionService.application?.name;\n\n protected menuItemClass(item: AXPProfileSlotMenuItem): Record<string, boolean> {\n return {\n 'ax-text-danger-500': item.color === 'danger',\n };\n }\n\n protected readonly hasProfileSlotMenuBreakBefore = hasProfileSlotMenuBreakBefore;\n protected readonly hasProfileSlotMenuBreakAfter = hasProfileSlotMenuBreakAfter;\n\n protected shortcutKeys(chord: string): string[] {\n return chordToKbdItemKeys(chord);\n }\n\n protected primaryShortcut(item: AXPProfileSlotMenuItem): string | undefined {\n return getPrimaryKeyboardShortcutChord(item.shortcuts);\n }\n\n protected async handleMenuItemClick(item: AXPProfileSlotMenuItem, popover: AXPopoverComponent): Promise<void> {\n popover.close();\n\n if (item.command) {\n await this.executeCommand(item.command);\n }\n }\n\n protected handleSignIn(): void {\n this.router.navigate(['/auth/login']);\n }\n\n //#endregion\n\n //#region ---- Private Methods ----\n\n private bindLockMenuSettingsReload(): void {\n this.settingsService.onChanged.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((event) => {\n if (!event.keys.includes(AXPAuthSettings.LockWhenIdleEnabled)) {\n return;\n }\n\n void this.loadMenuItems();\n });\n }\n\n private async loadMenuItems(): Promise<void> {\n const payload = await this.hooks.runAsync<AXPProfileSlotMenuItemsPayload>(PROFILE_SLOT_MENU_ITEMS_HOOK, {\n items: [],\n });\n const items = payload.items ?? [];\n this.menuItems.set(items);\n this.registerMenuShortcuts(items);\n }\n\n private registerMenuShortcuts(items: AXPProfileSlotMenuItem[]): void {\n const shortcuts: AXPKeyboardShortcutBinding[] = [];\n\n for (const item of items) {\n if (item.visible === false || !item.command || !item.shortcuts?.length) {\n continue;\n }\n\n const command = item.command;\n\n for (const shortcut of normalizeKeyboardShortcuts(item.shortcuts)) {\n for (const chord of shortcut.keys) {\n shortcuts.push({\n keys: [chord],\n title: item.title as string,\n group: '@general:keyboard-shortcuts.groups.global',\n allowInEditableFields: shortcut.allowInEditableFields,\n directionBehavior: shortcut.directionBehavior,\n when: () => this.isAuthenticated() && (shortcut.when?.() ?? true),\n handler: () => {\n void this.executeCommand(command);\n },\n });\n }\n }\n }\n\n if (shortcuts.length === 0) {\n return;\n }\n\n this.shortcutRegistry.register({\n owner: this.destroyRef,\n id: 'profile-slot-menu',\n priority: AXPKeyboardShortcutPriority.Global,\n group: '@general:keyboard-shortcuts.groups.global',\n when: () => this.isAuthenticated(),\n shortcuts,\n });\n }\n\n private async executeCommand(command: AXPExecuteCommand): Promise<void> {\n if (command.name === 'navigate') {\n const path = this.resolveNavigatePath(command.options);\n if (!path) {\n return;\n }\n\n await this.workflow.execute('navigate', {\n type: 'router',\n options: { path },\n } as AXPNavigateActionCommand<'router'>);\n return;\n }\n\n if (this.commandService.exists(command.name)) {\n await this.commandService.execute(command.name, command.options ?? {});\n }\n }\n\n private resolveNavigatePath(options?: AXPExecuteCommand['options']): string | undefined {\n if (!options) {\n return undefined;\n }\n\n if (typeof options['path'] === 'string') {\n return options['path'];\n }\n\n const routerOptions = options['router'] as { path?: string } | undefined;\n if (typeof routerOptions?.path === 'string') {\n return routerOptions.path;\n }\n\n const nestedOptions = options['options'] as { path?: string } | undefined;\n return nestedOptions?.path;\n }\n\n //#endregion\n}\n","@if (isAuthenticated$ | async) {\n<div class=\"ax-size-fit\">\n <div #avatar>\n <axp-user-avatar [size]=\"36\" [userId]=\"(user$ | async)?.id!\"></axp-user-avatar>\n </div>\n\n <ax-popover [target]=\"avatar\" [openOn]=\"'toggle'\" [closeOn]=\"'clickOut'\" #p>\n <div class=\"ax-bg-lightest ax-border ax-border-lightest ax-rounded-md ax-shadow-md ax-w-full ax-min-w-64\">\n <div class=\"ax-flex ax-flex-col ax-items-center ax-p-4 ax-border-b\">\n <axp-user-avatar [size]=\"64\" [userId]=\"(user$ | async)?.id!\"></axp-user-avatar>\n\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-mt-2\">\n <div class=\"ax-text-base ax-font-bold\">{{ (user$ | async)?.title }}</div>\n <axp-tenant-chooser-dropdown></axp-tenant-chooser-dropdown>\n </div>\n </div>\n <div class=\"axp-profile-slot-menus\">\n <ul>\n @for (item of menuItems(); track item.name ?? item.title) {\n @if (item.visible != false) {\n @if (hasProfileSlotMenuBreakBefore(item.break)) {\n <li class=\"axp-profile-slot-menu-break\" role=\"separator\"></li>\n }\n <li [class]=\"menuItemClass(item)\">\n <a (click)=\"handleMenuItemClick(item, p)\">\n <i [class]=\"item.icon\"></i>\n <span class=\"ax-flex-1\">{{ item.title | translate | async }}</span>\n <!-- @if (primaryShortcut(item); as shortcut) {\n <ax-kbd class=\"look-text ax-ms-auto ax-shrink-0\">\n <ax-kbd-item [keys]=\"shortcutKeys(shortcut)\"></ax-kbd-item>\n </ax-kbd>\n } -->\n </a>\n </li>\n @if (hasProfileSlotMenuBreakAfter(item.break)) {\n <li class=\"axp-profile-slot-menu-break\" role=\"separator\"></li>\n }\n }\n }\n </ul>\n </div>\n </div>\n </ax-popover>\n</div>\n} @else {\n<ax-button color=\"default\" look=\"blank\" text=\"Sign Up / Sign In\" (click)=\"handleSignIn()\">\n <ax-icon>\n <i class=\"fa-solid fa-user ax-text-slate-400 dark:ax-text-slate-200\"></i>\n </ax-icon>\n</ax-button>\n}","import { AXAvatarModule } from '@acorex/components/avatar';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXHtmlEvent } from '@acorex/cdk/common';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXImageModule } from '@acorex/components/image';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXPopoverComponent, AXPopoverModule } from '@acorex/components/popover';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPDataProvider } from '@acorex/platform/common';\nimport { AXPDeviceService } from '@acorex/platform/core';\nimport { AXPUserAvatarComponent } from '@acorex/platform/layout/components';\nimport { AXPMenuVerticalMode, AXPLayoutThemeService } from '@acorex/platform/themes/shared';\nimport { AsyncPipe } from '@angular/common';\nimport { Component, ViewChild, computed, inject, signal } from '@angular/core';\nimport { Router, RouterModule } from '@angular/router';\nimport { first } from 'rxjs';\nimport { AXPTenantChooserDropdownComponent } from '../tenant-chooser/tenant-chooser-dropdown.component';\n\n@Component({\n templateUrl: './user-profile-card.component.html',\n imports: [\n RouterModule,\n //\n AXImageModule,\n AXAvatarModule,\n AXPopoverModule,\n AXButtonModule,\n AXDecoratorModule,\n AXLoadingModule,\n AXTranslationModule,\n //\n AXPTenantChooserDropdownComponent,\n AsyncPipe,\n AXPUserAvatarComponent,\n ],\n})\nexport class AXMUserProfileCardSlotComponent {\n private router = inject(Router);\n private sessionService = inject(AXPSessionService);\n private dataService = inject(AXPDataProvider, { optional: true });\n private themeStore = inject(AXPLayoutThemeService);\n private deviceService = inject(AXPDeviceService);\n\n protected isCompactMode = computed(() => {\n this.deviceService.screenSize();\n return this.themeStore.effectiveMenuVerticalMode() === AXPMenuVerticalMode.Compact;\n });\n\n protected hasPicture = signal(true);\n protected avatarText = signal<string>('');\n\n constructor() {\n this.loadImage();\n this.getAvatarText();\n }\n protected src!: string;\n protected user$ = this.sessionService.user$;\n protected tenant$ = this.sessionService.tenant$;\n\n protected isAuthenticated$ = this.sessionService.isAuthenticated$;\n\n protected appName = () => this.sessionService.application?.name;\n\n @ViewChild('profilePopover') profilePopover!: AXPopoverComponent;\n\n editProfile() {\n this.router.navigate([`/${this.appName()}/m/securityManagement/e/profile/0/view`]);\n }\n\n async logOut() {\n await this.sessionService.signout();\n }\n\n toggleProfileMenu() {\n this.profilePopover.open();\n }\n\n protected handleSignIn() {\n this.router.navigate(['/auth/login']);\n }\n\n protected onImageError(event: AXHtmlEvent<ErrorEvent>) {\n this.hasPicture.set(false);\n }\n\n protected getAvatarText = () => {\n this.user$.pipe(first()).subscribe((user) => {\n const names = user?.title.split(' ');\n if (names?.length && names?.length > 1) {\n this.avatarText.set(`${names[0][0].toUpperCase()}${names[names.length - 1][0].toUpperCase()}`);\n } else return this.avatarText.set('AC');\n });\n };\n\n private async loadImage() {\n try {\n const url = this.sessionService.user?.avatar as string;\n if (url?.toLowerCase().startsWith('http')) {\n this.src = url;\n } else if (this.sessionService.user?.avatar != 'null' && this.dataService) {\n const blob = await this.dataService.viewFile(url, '');\n this.src = URL.createObjectURL(blob);\n } else {\n //this.src = this.mockerService.avatar();\n }\n } catch (error) {\n this.hasPicture.set(false);\n console.error('Failed to load image by ID:', error);\n this.src = '';\n }\n }\n}\n","@if((isAuthenticated$ | async)) {\n<div class=\"ax-p-3 ax-flex ax-items-center ax-gap-1 ax-border-b ax-border-lighter\" [class.ax-justify-center]=\"isCompactMode()\">\n <div #avatar>\n <axp-user-avatar [size]=\"48\" [userId]=\"(user$ | async)?.id!\"></axp-user-avatar>\n </div>\n @if (!isCompactMode()) {\n <div class=\"ax-flex ax-flex-col\">\n <ax-title class=\"ax-text-sm ax-font-medium ax-px-3\">{{ (user$ | async)?.title }}</ax-title>\n <axp-tenant-chooser-dropdown />\n </div>\n }\n</div>\n}\n","\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPSettingsService } from '@acorex/platform/common';\nimport { AXPPlatformScope } from '@acorex/platform/contracts';\nimport { inject, Injectable } from '@angular/core';\nimport { orderBy } from 'lodash-es';\nimport {\n AXPAuthInactiveSessionTerminationValue,\n AXPAuthSettings,\n} from '../../../contracts/settings.keys';\nimport {\n AXMDeviceSessionsService,\n AXMSecurityManagementDeviceSessionsEntityModel,\n RootConfig as SecurityManagementRootConfig,\n} from '@acorex/modules/security-management';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\n\nexport abstract class AXMUserDeviceSessionsService {\n abstract getSessions(): Promise<AXMSecurityManagementDeviceSessionsEntityModel[]>;\n abstract getCurrentActiveSessions(): Promise<AXMSecurityManagementDeviceSessionsEntityModel>;\n abstract terminateSession(sessionId: string): Promise<void>;\n abstract terminateAllSession(): Promise<void>;\n abstract setInactiveSessionTermination(value: AXPAuthInactiveSessionTerminationValue): Promise<void>;\n}\n\n@Injectable()\nexport class AXMUserDeviceSessionsServiceImp extends AXMUserDeviceSessionsService {\n //#region ---- Services & Dependencies ----\n\n private readonly sessionService = inject(AXPSessionService);\n private readonly entityService = inject(AXPEntityService);\n private readonly deviceSessionsDataAccessor = this.entityService\n .withEntity(SecurityManagementRootConfig.module.name, SecurityManagementRootConfig.entities.deviceSessions.name)\n .data<string, AXMSecurityManagementDeviceSessionsEntityModel>();\n private readonly deviceSessionsService = inject(AXMDeviceSessionsService);\n private readonly settingsService = inject(AXPSettingsService);\n\n //#endregion\n\n override async getSessions(): Promise<AXMSecurityManagementDeviceSessionsEntityModel[]> {\n const userId = this.sessionService.user?.id;\n if (!userId) {\n return [];\n }\n\n const response = await this.deviceSessionsDataAccessor.query();\n return response.items.filter(\n (item) =>\n item.userId === userId &&\n String(item.status).toLowerCase() === 'active' &&\n !item.isActiveSession,\n );\n }\n\n override async getCurrentActiveSessions(): Promise<AXMSecurityManagementDeviceSessionsEntityModel> {\n const userId = this.sessionService.user?.id;\n if (!userId) {\n throw new Error('No user found in session');\n }\n\n const response = await this.deviceSessionsDataAccessor.query();\n const userSessions = response.items.filter(\n (item) => item.userId === userId && String(item.status).toLowerCase() === 'active',\n );\n\n const activeSession = userSessions.find((item) => item.isActiveSession);\n if (activeSession) {\n return activeSession;\n }\n\n const mostRecentSession = orderBy(\n userSessions,\n [(session) => new Date(session.lastLoginDate).getTime()],\n ['desc'],\n )[0];\n\n if (!mostRecentSession) {\n throw new Error('No active session found for current user');\n }\n\n return mostRecentSession;\n }\n\n override async terminateSession(sessionId: string): Promise<void> {\n await this.deviceSessionsDataAccessor.update(sessionId, { status: 'revoked' });\n }\n\n override async terminateAllSession(): Promise<void> {\n await this.deviceSessionsService.terminateAllCurrentUserSessions();\n }\n\n override async setInactiveSessionTermination(value: AXPAuthInactiveSessionTerminationValue): Promise<void> {\n await this.settingsService\n .scope(AXPPlatformScope.User)\n .set(AXPAuthSettings.InactiveSessionTermination, value);\n }\n}\n","import { AXPAuthStrategyRegistryService, AXPSessionService } from '@acorex/platform/auth';\nimport { inject } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivateFn, Router, RouterStateSnapshot } from '@angular/router';\nimport { firstValueFrom } from 'rxjs';\n\nexport const canActivateTenantChooser: CanActivateFn = async (\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot,\n) => {\n const sessionService = inject(AXPSessionService);\n const authStrategyRegistry = inject(AXPAuthStrategyRegistryService);\n const router = inject(Router);\n const strategyName = sessionService.getSessionData()?.strategy;\n const strategy = authStrategyRegistry.get(strategyName!);\n\n if (!sessionService.user?.id) {\n return router.createUrlTree(['/auth/login']);\n }\n\n const tenants = await firstValueFrom(sessionService.tenants$);\n\n if (tenants.length === 0) {\n window.alert(\n 'You do not have any tenant assigned to your account and cannot use the site. Please contact your administrator.',\n );\n return router.createUrlTree(['/auth/login']);\n }\n if (tenants.length === 1) {\n if (strategy && typeof strategy.updateToken === 'function') {\n const updateContext = {\n user: sessionService.user,\n tenant: tenants[0],\n };\n await sessionService.updateToken(updateContext);\n return router.createUrlTree(['/auth/account/app-chooser']);\n }\n return false;\n }\n return true;\n};\n","import { AXPAuthStrategyRegistryService, AXPSessionService } from '@acorex/platform/auth';\nimport { AXPHomePageService } from '@acorex/platform/common';\nimport { inject } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivateFn, Router, RouterStateSnapshot } from '@angular/router';\nimport { firstValueFrom } from 'rxjs';\n\nexport const canActivateAppChooser: CanActivateFn = async (\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot,\n) => {\n const sessionService = inject(AXPSessionService);\n const authStrategyRegistry = inject(AXPAuthStrategyRegistryService);\n const homePageService = inject(AXPHomePageService);\n const router = inject(Router);\n const strategyName = sessionService.getSessionData()?.strategy;\n const strategy = authStrategyRegistry.get(strategyName!);\n const apps = await firstValueFrom(sessionService.applications$);\n\n if (apps.length === 0) {\n await router.navigate(['/auth/login']);\n return false;\n }\n\n if (apps.length === 1) {\n const tenantId = sessionService.tenant?.id;\n if (!tenantId) {\n throw new Error('Tenant ID is missing. Please contact support.');\n }\n if (strategy && typeof strategy.updateToken === 'function') {\n const updateContext = {\n user: sessionService.user,\n tenant: sessionService.tenant,\n application: apps[0],\n };\n await sessionService.updateToken(updateContext);\n\n\n return router.createUrlTree([homePageService.getCurrent().path]);\n }\n return false;\n }\n return true;\n};\n","import { AXPAuthGuard, AXPSessionService } from '@acorex/platform/auth';\nimport { AXPHomePageService } from '@acorex/platform/common';\nimport { AXPComponentSlotModule } from '@acorex/platform/core';\nimport { NgModule, inject } from '@angular/core';\nimport {\n ActivatedRouteSnapshot,\n CanActivateFn,\n ROUTES,\n Router,\n RouterModule,\n RouterStateSnapshot,\n Routes,\n} from '@angular/router';\nimport { firstValueFrom } from 'rxjs';\nimport { AXMAppChooserSlotComponent } from './app-chooser/app-chooser-slot.component';\nimport { AXMAuthProfileSlotComponent } from './profile/profile-slot.component';\nimport { AXMUserProfileCardSlotComponent } from './user-profile-card/user-profile-card.component';\nimport { AXMUserDeviceSessionsService, AXMUserDeviceSessionsServiceImp } from './user-sessions/user-sessions.service';\nimport { canActivateTenantChooser } from './tenant-chooser/tenant-chooser.guard';\nimport { canActivateAppChooser } from './app-chooser/app-chooser.guard';\n\nfunction routesFacory() {\n let routes: Routes = [];\n routes = [\n {\n path: 'tenant-chooser',\n loadComponent: () =>\n import('./tenant-chooser/tenant-chooser.component').then((c) => c.AXPAuthTenantChooserComponent),\n canActivate: [AXPAuthGuard, canActivateTenantChooser],\n },\n {\n path: 'app-chooser',\n loadComponent: () => import('./app-chooser/app-chooser.component').then((c) => c.AXPAuthAppChooserComponent),\n canActivate: [AXPAuthGuard, canActivateAppChooser],\n },\n ];\n return routes;\n}\n\n@NgModule({\n declarations: [],\n imports: [\n RouterModule,\n //\n AXPComponentSlotModule.forChild({\n 'root-side-menu-header': [\n {\n priority: 1,\n name: 'user-card',\n component: AXMUserProfileCardSlotComponent,\n },\n ],\n 'root-header-end': [\n {\n priority: 98,\n name: 'app-choser',\n component: AXMAppChooserSlotComponent,\n },\n {\n priority: 99,\n name: 'profile',\n component: AXMAuthProfileSlotComponent,\n },\n ],\n }),\n ],\n exports: [],\n providers: [\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFacory,\n },\n {\n provide: AXMUserDeviceSessionsService,\n useClass: AXMUserDeviceSessionsServiceImp,\n },\n ],\n})\nexport class AXPAccountModule {}\n","import { AXOverlayRef, AXOverlayService } from '@acorex/cdk/overlay';\nimport { AXPlatform } from '@acorex/core/platform';\nimport { AXPSettingsService } from '@acorex/platform/common';\nimport { AXPSessionService, AXPSessionStatus } from '@acorex/platform/auth';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\nimport { DestroyRef, Injectable, Injector, inject, signal, afterNextRender } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { defaultTo, get, isEmpty, isNil } from 'lodash-es';\nimport { filter, firstValueFrom } from 'rxjs';\n\nimport { AXPAuthSettings } from '../../contracts/settings.keys';\n\n//#region ---- Idle lock service ----\n\nconst IDLE_CHECK_INTERVAL_MS = 1_000;\nconst MOUSE_MOVE_THROTTLE_MS = 1_000;\nconst DEFAULT_LOCK_WHEN_IDLE_MINUTES = 15;\nconst SECURITY_MANAGEMENT_MODULE = 'SecurityManagement';\nconst SECURITY_MANAGEMENT_USER_ENTITY = 'User';\n\nconst LOCK_WHEN_IDLE_SETTING_KEYS = [\n AXPAuthSettings.LockWhenIdleEnabled,\n AXPAuthSettings.LockWhenIdleMinutes,\n] as const;\n\n/**\n * Tracks user inactivity and locks the session overlay when idle threshold is exceeded.\n * Requires the Lock When Idle setting to be enabled; unlock uses PIN when configured, otherwise password.\n * Locked state is stored on {@link AXPSessionService.SESSION_KEY} and survives page refresh and browser restart.\n */\n@Injectable({ providedIn: 'root' })\nexport class AXPIdleLockService {\n //#region ---- State ----\n\n readonly locked = signal(false);\n\n private readonly idleTimeoutMs = signal(DEFAULT_LOCK_WHEN_IDLE_MINUTES * 60_000);\n private readonly enabled = signal(false);\n\n /** Whether manual or idle lock is available (Lock When Idle setting is enabled). */\n readonly canLock = this.enabled.asReadonly();\n\n private readonly storedPinCode = signal('');\n\n private lastActivityAt = Date.now();\n private lastMouseMoveAt = 0;\n private idleCheckTimerId: ReturnType<typeof setInterval> | null = null;\n private overlayRef: AXOverlayRef<unknown> | null = null;\n private overlayOpening = false;\n private enableTask: Promise<void> = Promise.resolve();\n\n //#endregion\n\n //#region ---- Services & Dependencies ----\n\n private readonly sessionService = inject(AXPSessionService);\n private readonly settingsService = inject(AXPSettingsService);\n private readonly entityService = inject(AXPEntityService);\n private readonly overlayService = inject(AXOverlayService);\n private readonly platform = inject(AXPlatform);\n private readonly destroyRef = inject(DestroyRef);\n private readonly injector = inject(Injector);\n\n //#endregion\n\n //#region ---- Constructor ----\n\n constructor() {\n this.sessionService.status$\n .pipe(\n filter(\n (status) =>\n status === AXPSessionStatus.Authenticated ||\n status === AXPSessionStatus.Authorized ||\n status === AXPSessionStatus.SignedOut ||\n status === AXPSessionStatus.Expired,\n ),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe((status) => {\n const isActiveSession =\n status === AXPSessionStatus.Authenticated || status === AXPSessionStatus.Authorized;\n\n if (isActiveSession) {\n void this.scheduleEnable();\n return;\n }\n\n void this.handleInactiveSession(status);\n });\n\n afterNextRender(\n () => {\n if (this.sessionService.isLocked()) {\n void this.scheduleEnable();\n }\n },\n { injector: this.injector },\n );\n\n this.settingsService.onChanged.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((event) => {\n if (!LOCK_WHEN_IDLE_SETTING_KEYS.some((key) => event.keys.includes(key))) {\n return;\n }\n\n void this.applyLockWhenIdleSettingChange();\n });\n }\n\n //#endregion\n\n //#region ---- Public Methods ----\n\n hasPinCode(): boolean {\n return !isEmpty(this.storedPinCode());\n }\n\n verifyPin(pin: string): boolean {\n const expected = this.storedPinCode();\n return !isEmpty(expected) && pin === expected;\n }\n\n async verifyPassword(password: string): Promise<boolean> {\n const userId = this.sessionService.user?.id;\n if (isNil(userId) || isEmpty(password)) {\n return false;\n }\n\n try {\n const user = await this.entityService\n .withEntity(SECURITY_MANAGEMENT_MODULE, SECURITY_MANAGEMENT_USER_ENTITY)\n .data<string>()\n .byKey(userId);\n\n return get(user, 'password') === password;\n } catch (error) {\n console.error('Failed to verify password for session unlock', error);\n return false;\n }\n }\n\n unlock(): void {\n this.locked.set(false);\n this.sessionService.setLocked(false);\n this.closeLockOverlay();\n this.lastActivityAt = Date.now();\n }\n\n /** Locks the session overlay when Lock When Idle is enabled. */\n lockScreen(): void {\n this.lock();\n }\n\n async refreshPinState(): Promise<void> {\n const userId = this.sessionService.user?.id;\n if (isNil(userId)) {\n this.storedPinCode.set('');\n return;\n }\n\n try {\n const user = await this.entityService\n .withEntity(SECURITY_MANAGEMENT_MODULE, SECURITY_MANAGEMENT_USER_ENTITY)\n .data<string>()\n .byKey(userId);\n\n const pinCode = defaultTo(get(user, 'pinCode'), '');\n this.storedPinCode.set(pinCode);\n } catch (error) {\n console.error('Failed to load security PIN for idle lock', error);\n this.storedPinCode.set('');\n }\n }\n\n /** Refreshes lock settings and PIN state for menu/commands. */\n async refreshLockState(): Promise<void> {\n await this.refreshConfiguration();\n await this.refreshPinState();\n }\n\n /** Restores the lock overlay when the persisted session is locked. */\n restoreFromPersistedSession(): Promise<void> {\n return this.scheduleEnable();\n }\n\n /** Re-evaluates idle lock after the user sets or changes their security PIN. */\n async notifyPinChanged(): Promise<void> {\n const status = await firstValueFrom(this.sessionService.status$);\n const isActiveSession =\n status === AXPSessionStatus.Authenticated || status === AXPSessionStatus.Authorized;\n\n if (isActiveSession) {\n await this.scheduleEnable();\n }\n }\n\n //#endregion\n\n //#region ---- Private Methods ----\n\n private scheduleEnable(): Promise<void> {\n this.enableTask = this.enableTask.then(() => this.runEnable());\n return this.enableTask;\n }\n\n private async runEnable(): Promise<void> {\n await this.refreshConfiguration();\n await this.refreshPinState();\n\n if (this.sessionService.isLocked()) {\n this.restoreLockedSession();\n return;\n }\n\n if (!this.enabled()) {\n this.disable(false);\n return;\n }\n\n this.resetUnlockedRuntimeState();\n this.attachActivityListeners();\n this.startIdleCheck();\n }\n\n private restoreLockedSession(): void {\n this.locked.set(true);\n\n if (!this.overlayRef && !this.overlayOpening) {\n void this.openLockOverlay();\n }\n\n if (this.enabled()) {\n this.attachActivityListeners();\n this.startIdleCheck();\n }\n }\n\n private async handleInactiveSession(status: AXPSessionStatus): Promise<void> {\n if (status !== AXPSessionStatus.SignedOut && status !== AXPSessionStatus.Expired) {\n return;\n }\n\n const isLoading = await firstValueFrom(this.sessionService.isLoading$);\n if (isLoading) {\n return;\n }\n\n this.disable(true);\n }\n\n private disable(clearPersistedLock = false): void {\n const preserveLockedSession = this.sessionService.isLocked() && !clearPersistedLock;\n\n this.enabled.set(false);\n\n if (!preserveLockedSession) {\n this.locked.set(false);\n this.closeLockOverlay();\n }\n\n if (clearPersistedLock) {\n this.sessionService.setLocked(false);\n }\n\n this.detachActivityListeners();\n this.stopIdleCheck();\n }\n\n private async refreshConfiguration(): Promise<void> {\n const lockWhenIdleEnabled = await this.settingsService.get<boolean>(AXPAuthSettings.LockWhenIdleEnabled);\n const minutes = await this.settingsService.get<number>(AXPAuthSettings.LockWhenIdleMinutes);\n const resolvedMinutes =\n typeof minutes === 'number' && minutes > 0 ? minutes : DEFAULT_LOCK_WHEN_IDLE_MINUTES;\n\n this.enabled.set(lockWhenIdleEnabled === true);\n this.idleTimeoutMs.set(resolvedMinutes * 60_000);\n }\n\n private async applyLockWhenIdleSettingChange(): Promise<void> {\n const status = await firstValueFrom(this.sessionService.status$);\n const isActiveSession =\n status === AXPSessionStatus.Authenticated || status === AXPSessionStatus.Authorized;\n\n if (!isActiveSession) {\n return;\n }\n\n await this.scheduleEnable();\n }\n\n private recordActivity(): void {\n if (!this.enabled() || this.locked()) {\n return;\n }\n\n this.lastActivityAt = Date.now();\n }\n\n private lock(): void {\n if (!this.enabled() || this.locked()) {\n return;\n }\n\n this.locked.set(true);\n this.sessionService.setLocked(true);\n void this.openLockOverlay();\n }\n\n private openLockOverlay(): void {\n if (this.overlayRef || this.overlayOpening || !this.shouldShowLockOverlay()) {\n return;\n }\n\n afterNextRender(\n () => {\n void this.createLockOverlay();\n },\n { injector: this.injector },\n );\n }\n\n private shouldShowLockOverlay(): boolean {\n return this.locked() || this.sessionService.isLocked();\n }\n\n private async createLockOverlay(): Promise<void> {\n if (this.overlayRef || this.overlayOpening || !this.shouldShowLockOverlay()) {\n return;\n }\n\n this.overlayOpening = true;\n this.locked.set(true);\n\n try {\n const { AXMSessionLockOverlayComponent: overlayComponent } = await import(\n '../../features/session-lock/session-lock-overlay.component'\n );\n\n const panelClasses = ['axm-session-lock-overlay-shell'];\n if (this.platform.isDark()) {\n panelClasses.push('ax-dark');\n }\n\n const ref = await this.overlayService.create(overlayComponent, {\n centered: false,\n width: '100%',\n panelClass: panelClasses,\n backdrop: {\n enabled: false,\n background: false,\n closeOnClick: false,\n },\n onDispose: () => {\n this.overlayRef = null;\n },\n });\n\n if (!this.shouldShowLockOverlay()) {\n ref.dispose();\n return;\n }\n\n this.locked.set(true);\n this.overlayRef = ref;\n } catch (error) {\n console.error('Failed to open session lock overlay', error);\n\n if (this.shouldShowLockOverlay()) {\n window.setTimeout(() => this.openLockOverlay(), 250);\n }\n } finally {\n this.overlayOpening = false;\n }\n }\n\n private closeLockOverlay(): void {\n if (this.overlayRef) {\n this.overlayRef.dispose();\n this.overlayRef = null;\n }\n }\n\n private startIdleCheck(): void {\n this.stopIdleCheck();\n this.idleCheckTimerId = setInterval(() => {\n if (!this.enabled() || this.locked()) {\n return;\n }\n\n if (Date.now() - this.lastActivityAt >= this.idleTimeoutMs()) {\n this.lock();\n }\n }, IDLE_CHECK_INTERVAL_MS);\n }\n\n private stopIdleCheck(): void {\n if (!isNil(this.idleCheckTimerId)) {\n clearInterval(this.idleCheckTimerId);\n this.idleCheckTimerId = null;\n }\n }\n\n private resetUnlockedRuntimeState(): void {\n this.locked.set(false);\n this.closeLockOverlay();\n this.lastActivityAt = Date.now();\n }\n\n //#region ---- Activity listeners ----\n\n private readonly onActivity = (): void => {\n this.recordActivity();\n };\n\n private readonly onMouseMove = (): void => {\n const now = Date.now();\n if (now - this.lastMouseMoveAt < MOUSE_MOVE_THROTTLE_MS) {\n return;\n }\n\n this.lastMouseMoveAt = now;\n this.recordActivity();\n };\n\n private attachActivityListeners(): void {\n this.detachActivityListeners();\n const events: Array<keyof DocumentEventMap> = ['mousedown', 'keydown', 'wheel', 'touchstart', 'scroll', 'click'];\n events.forEach((eventName) => document.addEventListener(eventName, this.onActivity, true));\n document.addEventListener('mousemove', this.onMouseMove, true);\n }\n\n private detachActivityListeners(): void {\n const events: Array<keyof DocumentEventMap> = ['mousedown', 'keydown', 'wheel', 'touchstart', 'scroll', 'click'];\n events.forEach((eventName) => document.removeEventListener(eventName, this.onActivity, true));\n document.removeEventListener('mousemove', this.onMouseMove, true);\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ---- Profile page component keys ----\n\n/** Full-tab activity heatmap on the profile Activity group. */\nexport const PROFILE_ACTIVITY_CHART_COMPONENT_KEY = 'auth.profile-activity-chart';\n\n/** Danger-zone block for the delete-account profile section. */\nexport const PROFILE_DELETE_ACCOUNT_DANGER_ZONE_COMPONENT_KEY = 'auth.profile-delete-account-danger-zone';\n\n//#endregion\n","import { AXPExecuteCommand } from '@acorex/platform/contracts';\nimport { AXPDistributedEventListenerProvider } from '@acorex/platform/core';\nimport { AXMAuthCommandKeys } from '../../../contracts/commands.keys';\nimport {\n AXPUserProfileGroupsPayload,\n AXPUserProfileSectionsPayload,\n PROFILE_PAGE_GROUPS_HOOK,\n PROFILE_PAGE_SECTIONS_HOOK,\n} from './profile-page.types';\nimport {\n PROFILE_ACTIVITY_CHART_COMPONENT_KEY,\n PROFILE_DELETE_ACCOUNT_DANGER_ZONE_COMPONENT_KEY,\n} from './profile-page.component-keys';\n\n//#region ---- Helpers ----\n\nconst comingSoon = (messageKey: string): AXPExecuteCommand => ({\n name: AXMAuthCommandKeys.Profile.ComingSoon,\n options: { messageKey },\n});\n\n//#endregion\n\n//#region ---- Core profile groups ----\n\n/** Registers built-in profile page tab groups. */\nexport const CoreProfileGroupsHookProvider: AXPDistributedEventListenerProvider<\n AXPUserProfileGroupsPayload,\n AXPUserProfileGroupsPayload\n> = {\n key: PROFILE_PAGE_GROUPS_HOOK,\n priority: 0,\n execute: (payload) => ({\n ...payload,\n groups: [\n ...payload.groups,\n {\n id: 'account',\n title: '@auth:profile-page.groups.account.title',\n icon: 'far fa-user',\n priority: 10,\n },\n {\n id: 'security',\n title: '@auth:profile-page.groups.security.title',\n icon: 'far fa-shield-halved',\n priority: 20,\n },\n {\n id: 'requests',\n title: '@auth:profile-page.groups.requests.title',\n icon: 'far fa-inbox',\n priority: 30,\n },\n {\n id: 'activity',\n title: '@auth:profile-page.groups.activity.title',\n icon: 'far fa-clock-rotate-left',\n priority: 40,\n content: {\n mode: 'component',\n componentKey: PROFILE_ACTIVITY_CHART_COMPONENT_KEY,\n },\n },\n ],\n }),\n};\n\n//#endregion\n\n//#region ---- Core profile sections ----\n\n/** Registers built-in profile hub section cards and actions. */\nexport const CoreProfileSectionsHookProvider: AXPDistributedEventListenerProvider<\n AXPUserProfileSectionsPayload,\n AXPUserProfileSectionsPayload\n> = {\n key: PROFILE_PAGE_SECTIONS_HOOK,\n priority: 0,\n execute: (payload) => ({\n ...payload,\n sections: [\n ...payload.sections,\n {\n id: 'basic-info',\n groupId: 'account',\n title: '@auth:profile-page.sections.basic-info.title',\n description: '@auth:profile-page.sections.basic-info.description',\n icon: 'far fa-address-card',\n priority: 10,\n layout: { colSpan: 6 },\n actions: [\n {\n name: 'edit-basic-info',\n title: '@auth:profile-page.sections.basic-info.actions.edit',\n icon: 'far fa-pen',\n command: { name: AXMAuthCommandKeys.Profile.EditAccountInfo },\n },\n ],\n },\n {\n id: 'profile-photo',\n groupId: 'account',\n title: '@auth:profile-page.sections.profile-photo.title',\n description: '@auth:profile-page.sections.profile-photo.description',\n icon: 'far fa-camera',\n priority: 15,\n layout: { colSpan: 6 },\n actions: [\n {\n name: 'change-profile-photo',\n title: '@auth:profile-page.sections.profile-photo.actions.manage',\n icon: 'far fa-pen',\n command: { name: AXMAuthCommandKeys.Profile.ChangePhoto },\n },\n ],\n },\n {\n id: 'change-password',\n groupId: 'security',\n title: '@auth:profile-page.sections.change-password.title',\n description: '@auth:profile-page.sections.change-password.description',\n icon: 'far fa-key',\n priority: 10,\n layout: { colSpan: 6 },\n actions: [\n {\n name: 'change-password',\n title: '@auth:profile-page.sections.change-password.actions.manage',\n icon: 'far fa-pen',\n command: { name: AXMAuthCommandKeys.Security.ChangePassword },\n },\n ],\n },\n {\n id: 'security-pin',\n groupId: 'security',\n title: '@auth:profile-page.sections.security-pin.title',\n description: '@auth:profile-page.sections.security-pin.description',\n icon: 'far fa-lock',\n priority: 15,\n layout: { colSpan: 6 },\n },\n {\n id: 'active-sessions',\n groupId: 'security',\n title: '@auth:profile-page.sections.active-sessions.title',\n description: '@auth:profile-page.sections.active-sessions.description',\n icon: 'far fa-laptop-mobile',\n priority: 20,\n layout: { colSpan: 6 },\n actions: [\n {\n name: 'active-sessions',\n title: '@auth:profile-page.sections.active-sessions.actions.manage',\n icon: 'far fa-arrow-right',\n command: { name: AXMAuthCommandKeys.Session.OpenSessions },\n },\n ],\n },\n {\n id: 'two-factor',\n groupId: 'security',\n title: '@auth:profile-page.sections.two-factor.title',\n description: '@auth:profile-page.sections.two-factor.description',\n icon: 'far fa-shield-keyhole',\n priority: 30,\n layout: { colSpan: 6 },\n actions: [\n {\n name: 'manage-two-factor',\n title: '@auth:profile-page.sections.two-factor.actions.manage',\n icon: 'far fa-pen',\n command: comingSoon('@auth:profile-page.commands.manage-two-factor.coming-soon'),\n },\n ],\n },\n {\n id: 'login-history',\n groupId: 'security',\n title: '@auth:profile-page.sections.login-history.title',\n description: '@auth:profile-page.sections.login-history.description',\n icon: 'far fa-right-to-bracket',\n priority: 40,\n layout: { colSpan: 6 },\n actions: [\n {\n name: 'view-login-history',\n title: '@auth:profile-page.sections.login-history.actions.manage',\n icon: 'far fa-arrow-right',\n command: { name: AXMAuthCommandKeys.Security.ViewLoginHistory },\n },\n ],\n },\n {\n id: 'delete-account',\n groupId: 'account',\n priority: 100,\n content: {\n mode: 'component',\n componentKey: PROFILE_DELETE_ACCOUNT_DANGER_ZONE_COMPONENT_KEY,\n },\n layout: { colSpan: 12 },\n },\n ],\n }),\n};\n\n//#endregion\n","import { inject } from '@angular/core';\nimport { AXPDistributedEventListenerProvider } from '@acorex/platform/core';\n\nimport { AXMAuthCommandKeys } from '../../../contracts/commands.keys';\nimport { AXPIdleLockService } from '../../../shared/services/idle-lock.service';\nimport { AXPUserProfileSectionsPayload, PROFILE_PAGE_SECTIONS_HOOK } from './profile-page.types';\n\n//#region ---- Security PIN section hook ----\n\nconst SECURITY_PIN_SECTION_ID = 'security-pin';\n\n/** Enriches the security PIN section with change/remove actions when a PIN exists. */\nexport const SecurityPinSectionHookProvider: AXPDistributedEventListenerProvider<\n AXPUserProfileSectionsPayload,\n AXPUserProfileSectionsPayload\n> = {\n key: PROFILE_PAGE_SECTIONS_HOOK,\n priority: 10,\n execute: async (payload) => {\n const idleLockService = inject(AXPIdleLockService);\n await idleLockService.refreshPinState();\n\n const hasPinCode = idleLockService.hasPinCode();\n\n return {\n ...payload,\n sections: payload.sections.map((section) => {\n if (section.id !== SECURITY_PIN_SECTION_ID) {\n return section;\n }\n\n return {\n ...section,\n actions: [\n {\n name: 'set-pin-code',\n title: hasPinCode\n ? '@auth:profile-page.sections.security-pin.actions.change'\n : '@auth:profile-page.sections.security-pin.actions.manage',\n icon: 'far fa-pen',\n default: true,\n command: { name: AXMAuthCommandKeys.Security.SetPinCode },\n },\n ...(hasPinCode\n ? [\n {\n name: 'remove-pin-code',\n title: '@auth:profile-page.sections.security-pin.actions.remove',\n icon: 'far fa-trash-can',\n color: 'danger' as const,\n command: { name: AXMAuthCommandKeys.Security.RemovePinCode },\n },\n ]\n : []),\n ],\n };\n }),\n };\n },\n};\n\n//#endregion\n","import { AXPSessionService } from '@acorex/platform/auth';\nimport { Injectable, inject } from '@angular/core';\nimport { isNil } from 'lodash-es';\n\n//#region ---- Password change tracking service ----\n\nconst STORAGE_KEY_PREFIX = 'axp-auth:last-password-change-at:';\n\n/** Persists the last self-service password change timestamp per user (client-side). */\n@Injectable({ providedIn: 'root' })\nexport class AXPAuthPasswordChangeTrackingService {\n //#region ---- Services & Dependencies ----\n\n private readonly sessionService = inject(AXPSessionService);\n\n //#endregion\n\n //#region ---- Public API ----\n\n getLastChangedAt(userId?: string): Date | undefined {\n const id = userId ?? this.sessionService.user?.id;\n if (isNil(id)) {\n return undefined;\n }\n\n const raw = localStorage.getItem(this.buildStorageKey(id));\n if (!raw) {\n return undefined;\n }\n\n const parsed = new Date(raw);\n return Number.isNaN(parsed.getTime()) ? undefined : parsed;\n }\n\n recordChange(userId?: string, changedAt: Date = new Date()): void {\n const id = userId ?? this.sessionService.user?.id;\n if (isNil(id)) {\n return;\n }\n\n localStorage.setItem(this.buildStorageKey(id), changedAt.toISOString());\n }\n\n //#endregion\n\n //#region ---- Private Methods ----\n\n private buildStorageKey(userId: string): string {\n return `${STORAGE_KEY_PREFIX}${userId}`;\n }\n\n //#endregion\n}\n\n//#endregion\n","import {\n AXMSecurityManagementDeviceSessionsEntityModel,\n RootConfig as SecurityManagementRootConfig,\n} from '@acorex/modules/security-management';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\nimport { Injectable, inject } from '@angular/core';\nimport { defaultTo, isEmpty, isNil, orderBy } from 'lodash-es';\n\nimport { AXPAuthPasswordChangeTrackingService } from '../../../shared/services/password-change-tracking.service';\nimport { AXPUserProfileSectionInsight } from './profile-page.types';\n\n//#region ---- Section ids ----\n\nconst CHANGE_PASSWORD_SECTION_ID = 'change-password';\nconst ACTIVE_SESSIONS_SECTION_ID = 'active-sessions';\nconst LOGIN_HISTORY_SECTION_ID = 'login-history';\n\n//#endregion\n\n//#region ---- Profile page security insights service ----\n\n/** Loads contextual security insights for profile section cards. */\n@Injectable({ providedIn: 'root' })\nexport class AXPUserProfileSecurityInsightsService {\n //#region ---- Services & Dependencies ----\n\n private readonly sessionService = inject(AXPSessionService);\n private readonly entityService = inject(AXPEntityService);\n private readonly translateService = inject(AXTranslationService);\n private readonly passwordChangeTrackingService = inject(AXPAuthPasswordChangeTrackingService);\n\n //#endregion\n\n //#region ---- Public API ----\n\n async loadBySectionId(): Promise<Record<string, AXPUserProfileSectionInsight[]>> {\n const userId = this.sessionService.user?.id;\n if (!userId) {\n return {};\n }\n\n const sessions = await this.loadUserSessions(userId);\n\n const insightsBySectionId: Record<string, AXPUserProfileSectionInsight[]> = {};\n\n const passwordInsights = this.buildPasswordInsights(userId);\n if (!isEmpty(passwordInsights)) {\n insightsBySectionId[CHANGE_PASSWORD_SECTION_ID] = passwordInsights;\n }\n\n const activeSessionInsights = await this.buildActiveSessionInsights(sessions);\n if (!isEmpty(activeSessionInsights)) {\n insightsBySectionId[ACTIVE_SESSIONS_SECTION_ID] = activeSessionInsights;\n }\n\n const loginHistoryInsights = this.buildLoginHistoryInsights(sessions);\n if (!isEmpty(loginHistoryInsights)) {\n insightsBySectionId[LOGIN_HISTORY_SECTION_ID] = loginHistoryInsights;\n }\n\n return insightsBySectionId;\n }\n\n //#endregion\n\n //#region ---- Insight builders ----\n\n private buildPasswordInsights(userId: string): AXPUserProfileSectionInsight[] {\n const lastChangedAt = this.passwordChangeTrackingService.getLastChangedAt(userId);\n if (isNil(lastChangedAt)) {\n return [];\n }\n\n return [\n {\n id: 'last-password-change',\n icon: 'fa-light fa-fw fa-clock',\n date: lastChangedAt,\n datePrefix: '@auth:profile-page.sections.change-password.insights.last-changed',\n },\n ];\n }\n\n private async buildActiveSessionInsights(\n sessions: AXMSecurityManagementDeviceSessionsEntityModel[],\n ): Promise<AXPUserProfileSectionInsight[]> {\n const activeSessions = sessions.filter((session) => String(session.status).toLowerCase() === 'active');\n const currentSession =\n activeSessions.find((session) => session.isActiveSession) ??\n orderBy(\n activeSessions,\n [(session) => this.parseValidDate(session.lastLoginDate)?.getTime() ?? 0],\n ['desc'],\n )[0];\n\n if (isNil(currentSession)) {\n return [];\n }\n\n const deviceSummary = this.formatSessionSummary(currentSession);\n if (isEmpty(deviceSummary)) {\n return [];\n }\n\n const otherActiveCount = activeSessions.filter((session) => session.id !== currentSession.id).length;\n const insights: AXPUserProfileSectionInsight[] = [\n {\n id: 'current-session',\n icon: 'fa-light fa-fw fa-laptop',\n text: deviceSummary,\n },\n ];\n\n if (otherActiveCount > 0) {\n insights.push({\n id: 'other-sessions',\n icon: 'fa-light fa-fw fa-mobile-screen',\n text: await this.translateService.translateAsync(\n '@auth:profile-page.sections.active-sessions.insights.other-devices-value',\n { params: { count: otherActiveCount } },\n ),\n });\n }\n\n return insights;\n }\n\n private buildLoginHistoryInsights(\n sessions: AXMSecurityManagementDeviceSessionsEntityModel[],\n ): AXPUserProfileSectionInsight[] {\n const latestSession = orderBy(\n sessions,\n [(session) => this.parseValidDate(session.lastLoginDate)?.getTime() ?? 0],\n ['desc'],\n )[0];\n\n if (isNil(latestSession)) {\n return [];\n }\n\n const insights: AXPUserProfileSectionInsight[] = [];\n const lastLoginDate = this.parseValidDate(latestSession.lastLoginDate);\n\n if (lastLoginDate) {\n insights.push({\n id: 'last-login',\n icon: 'fa-light fa-fw fa-clock-rotate-left',\n date: lastLoginDate,\n datePrefix: '@auth:profile-page.sections.login-history.insights.last-sign-in',\n });\n }\n\n const location = this.formatLoginLocation(latestSession);\n if (!isEmpty(location)) {\n insights.push({\n id: 'last-login-location',\n icon: 'fa-light fa-fw fa-location-dot',\n text: location,\n });\n }\n\n return insights;\n }\n\n //#endregion\n\n //#region ---- Data loading ----\n\n private async loadUserSessions(userId: string): Promise<AXMSecurityManagementDeviceSessionsEntityModel[]> {\n const response = await this.entityService\n .withEntity(\n SecurityManagementRootConfig.module.name,\n SecurityManagementRootConfig.entities.deviceSessions.name,\n )\n .data<string, AXMSecurityManagementDeviceSessionsEntityModel>()\n .query({ skip: 0, take: 1000 });\n\n return (response.items ?? []).filter((item) => item.userId === userId);\n }\n\n //#endregion\n\n //#region ---- Formatting ----\n\n private parseValidDate(value: unknown): Date | undefined {\n if (value instanceof Date) {\n return Number.isNaN(value.getTime()) ? undefined : value;\n }\n\n if (typeof value === 'string' || typeof value === 'number') {\n const parsed = new Date(value);\n return Number.isNaN(parsed.getTime()) ? undefined : parsed;\n }\n\n return undefined;\n }\n\n private formatSessionSummary(session: AXMSecurityManagementDeviceSessionsEntityModel): string {\n const parts = [session.deviceName, session.browser, session.location]\n .map((part) => defaultTo(part, '').trim())\n .filter(Boolean);\n\n return parts.join(' · ');\n }\n\n private formatLoginLocation(session: AXMSecurityManagementDeviceSessionsEntityModel): string {\n const parts = [session.location, session.ipAddress]\n .map((part) => defaultTo(part, '').trim())\n .filter(Boolean);\n\n return parts.join(' · ');\n }\n\n //#endregion\n}\n\n//#endregion\n","import { inject } from '@angular/core';\nimport { AXPDistributedEventListenerProvider } from '@acorex/platform/core';\nimport { isEmpty } from 'lodash-es';\n\nimport { AXPUserProfileSecurityInsightsService } from './profile-page-security-insights.service';\nimport { AXPUserProfileSectionsPayload, PROFILE_PAGE_SECTIONS_HOOK } from './profile-page.types';\n\n//#region ---- Security sections insights hook ----\n\n/** Adds live security context (sessions, login, password) to profile section cards. */\nexport const SecuritySectionsInsightsHookProvider: AXPDistributedEventListenerProvider<\n AXPUserProfileSectionsPayload,\n AXPUserProfileSectionsPayload\n> = {\n key: PROFILE_PAGE_SECTIONS_HOOK,\n priority: 15,\n execute: async (payload) => {\n const insightsService = inject(AXPUserProfileSecurityInsightsService);\n const insightsBySectionId = await insightsService.loadBySectionId();\n\n return {\n ...payload,\n sections: payload.sections.map((section) => {\n const insights = insightsBySectionId[section.id];\n if (isEmpty(insights)) {\n return section;\n }\n\n return {\n ...section,\n insights,\n };\n }),\n };\n },\n};\n\n//#endregion\n","import { AXPActionMenuItem, AXPDistributedEventListenerProvider } from '@acorex/platform/core';\nimport { AXMAuthCommandKeys } from '../../../contracts/commands.keys';\nimport {\n AXPProfileSlotMenuItemsPayload,\n PROFILE_SLOT_MENU_ITEMS_HOOK,\n} from './profile-slot-menu.types';\n\n//#region ---- Profile slot logout menu hook ----\n\n/** Registers the sign-out entry in the profile dropdown. */\nexport const ProfileSlotLogoutMenuHookProvider: AXPDistributedEventListenerProvider<\n AXPProfileSlotMenuItemsPayload,\n AXPProfileSlotMenuItemsPayload\n> = {\n key: PROFILE_SLOT_MENU_ITEMS_HOOK,\n priority: 100,\n execute: (payload) => ({\n ...payload,\n items: [\n ...payload.items,\n {\n name: 'logout',\n title: '@auth:profile.logout',\n icon: 'fa-light fa-arrow-right-from-bracket',\n color: 'danger',\n shortcuts: [{ keys: 'ctrl+shift+q', allowInEditableFields: true }],\n command: { name: AXMAuthCommandKeys.Session.Signout },\n } satisfies AXPActionMenuItem,\n ],\n }),\n};\n\n//#endregion\n","import { inject } from '@angular/core';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPActionMenuItem, AXPDistributedEventListenerProvider } from '@acorex/platform/core';\nimport { AXPProfileSlotMenuItemsPayload, PROFILE_SLOT_MENU_ITEMS_HOOK } from './profile-slot-menu.types';\n\n//#region ---- Profile slot my profile menu hook ----\n\n/** Registers the My Profile entry in the profile dropdown. */\nexport const ProfileSlotMyProfileMenuHookProvider: AXPDistributedEventListenerProvider<\n AXPProfileSlotMenuItemsPayload,\n AXPProfileSlotMenuItemsPayload\n> = {\n key: PROFILE_SLOT_MENU_ITEMS_HOOK,\n priority: -10,\n execute: (payload) => {\n const sessionService = inject(AXPSessionService);\n const appName = sessionService.application?.name;\n\n if (!appName) {\n return payload;\n }\n\n return {\n ...payload,\n items: [\n ...payload.items,\n {\n name: 'my-profile',\n title: '@auth:profile-page.profile-slot.my-profile',\n icon: 'fa-light fa-user',\n shortcuts: [{ keys: 'ctrl+shift+p', allowInEditableFields: true }],\n command: {\n name: 'navigate',\n options: {\n path: `/${appName}/profile/account`,\n },\n },\n } satisfies AXPActionMenuItem,\n ],\n };\n },\n};\n\n//#endregion\n","import { inject } from '@angular/core';\nimport { AXPDistributedEventListenerProvider } from '@acorex/platform/core';\nimport { AXMAuthCommandKeys } from '../../../contracts/commands.keys';\nimport { AXPIdleLockService } from '../../../shared/services/idle-lock.service';\nimport {\n AXPProfileSlotMenuItem,\n AXPProfileSlotMenuItemsPayload,\n PROFILE_SLOT_MENU_ITEMS_HOOK,\n} from './profile-slot-menu.types';\n\n//#region ---- Profile slot lock menu hook ----\n\n/** Registers the manual lock entry when Lock When Idle is enabled. Profile menu reloads on {@link AXPAuthSettings.LockWhenIdleEnabled} changes. */\nexport const ProfileSlotLockMenuHookProvider: AXPDistributedEventListenerProvider<\n AXPProfileSlotMenuItemsPayload,\n AXPProfileSlotMenuItemsPayload\n> = {\n key: PROFILE_SLOT_MENU_ITEMS_HOOK,\n priority: 50,\n execute: async (payload) => {\n const idleLockService = inject(AXPIdleLockService);\n await idleLockService.refreshLockState();\n\n if (!idleLockService.canLock()) {\n return payload;\n }\n\n return {\n ...payload,\n items: [\n ...payload.items,\n {\n name: 'lock-screen',\n title: '@auth:profile.lock',\n icon: 'fa-light fa-lock',\n break: { before: true },\n shortcuts: [{ keys: 'ctrl+alt+l', allowInEditableFields: true }],\n command: { name: AXMAuthCommandKeys.Session.LockScreen },\n } satisfies AXPProfileSlotMenuItem,\n ],\n };\n },\n};\n\n//#endregion\n","import { AXP_MENU_PROVIDER, AXP_PROTECTED_ROUTE_GUARDS, AXP_SETTING_DEFINITION_PROVIDER, AXPCommonModule } from '@acorex/platform/common';\nimport { AXMAuthValidationRulesModule } from './validations/auth-validation-rules.module';\nimport { AXP_PAGE_COMPONENT_PROVIDER } from '@acorex/platform/layout/components';\nimport { AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER, AXP_DATASOURCE_DEFINITION_PROVIDER, provideLazyProvider } from '@acorex/platform/core';\nimport { provideCommandSetups } from '@acorex/platform/runtime';\nimport { AXPRootLayoutComponent } from '@acorex/platform/themes/default';\nimport { CommonModule } from '@angular/common';\nimport { inject, NgModule, provideAppInitializer } from '@angular/core';\nimport { RouterModule, Routes, ROUTES } from '@angular/router';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { filter, firstValueFrom } from 'rxjs';\nimport { AXMAuthCommandKeys } from './contracts/commands.keys';\nimport { routes } from './auth.routes';\nimport { AXMAuthErrorHandler } from './error-handler';\nimport { AXPAccountModule } from './pages/account/account.module';\nimport { AXPIdleLockService } from './shared/services/idle-lock.service';\nimport {\n CoreProfileGroupsHookProvider,\n CoreProfileSectionsHookProvider,\n} from './pages/account/profile-page/core-profile-sections.hook';\nimport { SecurityPinSectionHookProvider } from './pages/account/profile-page/security-pin-section.hook';\nimport { SecuritySectionsInsightsHookProvider } from './pages/account/profile-page/security-sections-insights.hook';\nimport { ProfileSlotLogoutMenuHookProvider } from './pages/account/profile/profile-slot-logout-menu.hook';\nimport { ProfileSlotMyProfileMenuHookProvider } from './pages/account/profile/profile-slot-my-profile-menu.hook';\nimport { ProfileSlotLockMenuHookProvider } from './pages/account/profile/profile-slot-lock-menu.hook';\n\nfunction profileRoutesFactory(): Routes {\n return [\n {\n path: ':app/profile',\n canActivate: [...AXP_PROTECTED_ROUTE_GUARDS],\n data: { tab: true, rootLayout: true },\n loadComponent: () => AXPRootLayoutComponent,\n children: [\n {\n path: '',\n redirectTo: 'account',\n pathMatch: 'full',\n },\n {\n path: ':groupId',\n loadComponent: () =>\n import('./pages/account/profile-page/profile-page.component').then((c) => c.AXMUserProfilePageComponent),\n data: { reuse: true },\n },\n ],\n },\n ];\n}\n\n@NgModule({\n imports: [\n CommonModule,\n AXPCommonModule.forChild({ errorHandlers: [AXMAuthErrorHandler] }),\n RouterModule.forChild(routes),\n AXPAccountModule,\n AXMAuthValidationRulesModule,\n ],\n providers: [\n provideAppInitializer(() => {\n const sessionService = inject(AXPSessionService);\n const idleLockService = inject(AXPIdleLockService);\n\n return (async () => {\n await firstValueFrom(sessionService.isLoading$.pipe(filter((loading) => !loading)));\n\n if (sessionService.isLocked()) {\n await idleLockService.restoreFromPersistedSession();\n }\n })();\n }),\n AXMAuthErrorHandler,\n provideLazyProvider(\n AXP_MENU_PROVIDER,\n () => import('./menu.provider').then(m => m.AXMSecurityManagementModuleMenuProvider)\n ),\n provideLazyProvider(\n AXP_SETTING_DEFINITION_PROVIDER,\n () => import('./settings.provider').then(m => m.AXMSettingProvider)\n ),\n provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () =>\n import('./pages/account/profile-page/profile-page-component.provider').then(\n (module) => module.AXMProfilePageComponentProvider,\n ),\n ),\n provideLazyProvider(\n AXP_DATASOURCE_DEFINITION_PROVIDER,\n () => import('./datasource.provider').then((m) => m.AXMAuthDataSourceProvider),\n ),\n {\n provide: ROUTES,\n multi: true,\n useFactory: profileRoutesFactory,\n },\n provideCommandSetups([\n {\n key: AXMAuthCommandKeys.Profile.Show,\n command: () => import('./commands/show-profile-command').then((c) => c.AXPShowProfileCommand),\n },\n {\n key: AXMAuthCommandKeys.Session.Signout,\n command: () => import('./commands/signout-command').then((c) => c.AXPSignoutCommand),\n },\n {\n key: AXMAuthCommandKeys.Session.OpenSessions,\n command: () => import('./commands/open-sessions.command').then((c) => c.AXPOpenSessionsCommand),\n },\n {\n key: AXMAuthCommandKeys.Session.LockScreen,\n command: () => import('./commands/lock-screen.command').then((c) => c.AXPLockScreenCommand),\n },\n {\n key: AXMAuthCommandKeys.Profile.ChangePhoto,\n command: () => import('./commands/change-photo.command').then((c) => c.AXPChangePhotoCommand),\n },\n {\n key: AXMAuthCommandKeys.Profile.EditAccountInfo,\n command: () => import('./commands/edit-account-info.command').then((c) => c.AXPEditAccountInfoCommand),\n },\n {\n key: AXMAuthCommandKeys.Security.ChangePassword,\n command: () => import('./commands/change-password.command').then((c) => c.AXPChangePasswordCommand),\n },\n {\n key: AXMAuthCommandKeys.Security.SetPinCode,\n command: () => import('./commands/set-pin-code.command').then((c) => c.AXPSetPinCodeCommand),\n },\n {\n key: AXMAuthCommandKeys.Security.RemovePinCode,\n command: () => import('./commands/remove-pin-code.command').then((c) => c.AXPRemovePinCodeCommand),\n },\n {\n key: AXMAuthCommandKeys.Security.ViewLoginHistory,\n command: () => import('./commands/view-login-history.command').then((c) => c.AXPViewLoginHistoryCommand),\n },\n {\n key: AXMAuthCommandKeys.Security.EditSignature,\n command: () => import('./commands/edit-signature.command').then((c) => c.AXPEditSignatureCommand),\n },\n {\n key: AXMAuthCommandKeys.Profile.ComingSoon,\n command: () => import('./commands/profile-coming-soon.command').then((c) => c.AXPProfileComingSoonCommand),\n },\n ]),\n {\n provide: AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER,\n useValue: ProfileSlotLogoutMenuHookProvider,\n multi: true,\n },\n {\n provide: AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER,\n useValue: ProfileSlotMyProfileMenuHookProvider,\n multi: true,\n },\n {\n provide: AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER,\n useValue: ProfileSlotLockMenuHookProvider,\n multi: true,\n },\n {\n provide: AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER,\n useValue: CoreProfileGroupsHookProvider,\n multi: true,\n },\n {\n provide: AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER,\n useValue: CoreProfileSectionsHookProvider,\n multi: true,\n },\n {\n provide: AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER,\n useValue: SecurityPinSectionHookProvider,\n multi: true,\n },\n {\n provide: AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER,\n useValue: SecuritySectionsInsightsHookProvider,\n multi: true,\n },\n ],\n})\nexport class AXMAuthModule {\n constructor() {\n inject(AXPIdleLockService);\n }\n}\n","import {\n AXMSecurityManagementDeviceSessionsEntityModel,\n RootConfig as SecurityManagementRootConfig,\n} from '@acorex/modules/security-management';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\nimport { Injectable, inject } from '@angular/core';\nimport { orderBy } from 'lodash-es';\n\n//#region ---- Login history entry ----\n\nexport interface AXPLoginHistoryEntry {\n id: string;\n device: string;\n location: string;\n ipAddress: string;\n browser: string;\n status: string;\n lastLoginDate: Date | string;\n}\n\n//#endregion\n\n//#region ---- Login history service ----\n\n/** Loads sign-in records for the current user from device session storage. */\n@Injectable({ providedIn: 'root' })\nexport class AXPLoginHistoryService {\n //#region ---- Services & Dependencies ----\n\n private readonly sessionService = inject(AXPSessionService);\n private readonly entityService = inject(AXPEntityService);\n\n //#endregion\n\n //#region ---- Public API ----\n\n async getEntries(): Promise<AXPLoginHistoryEntry[]> {\n const userId = this.sessionService.user?.id;\n if (!userId) {\n return [];\n }\n\n const response = await this.entityService\n .withEntity(\n SecurityManagementRootConfig.module.name,\n SecurityManagementRootConfig.entities.deviceSessions.name,\n )\n .data<string, AXMSecurityManagementDeviceSessionsEntityModel>()\n .query({ skip: 0, take: 1000 });\n\n const items = response.items ?? [];\n\n return orderBy(\n items\n .filter((item) => item.userId === userId)\n .map((item) => ({\n id: item.id,\n device: item.deviceName ?? item.operatingSystem ?? '—',\n location: item.location ?? '—',\n ipAddress: item.ipAddress ?? '—',\n browser: item.browser ?? '—',\n status: String(item.status ?? 'unknown').toLowerCase(),\n lastLoginDate: item.lastLoginDate,\n })),\n [(entry) => new Date(entry.lastLoginDate).getTime()],\n ['desc'],\n );\n }\n\n //#endregion\n}\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["SecurityManagementRootConfig","RootConfig","i1","i2","i6","i7","i3","i4","i5","i8","i9"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAEO,MAAM,kBAAkB,GAAG;AAChC,IAAA,OAAO,EAAE;AACP,QAAA,IAAI,EAAE,cAAc;AACpB,QAAA,WAAW,EAAE,mBAAmB;AAChC,QAAA,eAAe,EAAE,wBAAwB;AACzC,QAAA,UAAU,EAAE,0BAA0B;AACvC,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA,OAAO,EAAE,cAAc;AACvB,QAAA,YAAY,EAAE,oBAAoB;AAClC,QAAA,UAAU,EAAE,kBAAkB;AAC/B,KAAA;AACD,IAAA,QAAQ,EAAE;AACR,QAAA,cAAc,EAAE,sBAAsB;AACtC,QAAA,UAAU,EAAE,mBAAmB;AAC/B,QAAA,aAAa,EAAE,sBAAsB;AACrC,QAAA,gBAAgB,EAAE,yBAAyB;AAC3C,QAAA,aAAa,EAAE,qBAAqB;AACrC,KAAA;;AAGH;;ACvBA;AAEA;AACO,MAAM,qBAAqB,GAAG;AACnC,IAAA,YAAY,EAAE,oBAAoB;;AAGpC;;ACPO,MAAM,eAAe,GAAG;;ACAxB,MAAM,kBAAkB,GAAG;AAChC,IAAA,IAAI,EAAE;AACJ,QAAA,UAAU,EAAE,4BAA4B;;AAEzC,KAAA;;;ICJS;AAAZ,CAAA,UAAY,eAAe,EAAA;AACzB,IAAA,eAAA,CAAA,eAAA,CAAA,GAAA,2CAA2D;AAC3D,IAAA,eAAA,CAAA,oBAAA,CAAA,GAAA,gDAAqE;AACrE,IAAA,eAAA,CAAA,oBAAA,CAAA,GAAA,gDAAqE;AACrE,IAAA,eAAA,CAAA,kBAAA,CAAA,GAAA,8CAAiE;AACjE,IAAA,eAAA,CAAA,iBAAA,CAAA,GAAA,6CAA+D;AAC/D,IAAA,eAAA,CAAA,qBAAA,CAAA,GAAA,oDAA0E;AAC1E,IAAA,eAAA,CAAA,qBAAA,CAAA,GAAA,oDAA0E;AAC1E,IAAA,eAAA,CAAA,4BAAA,CAAA,GAAA,2DAAwF;AAC1F,CAAC,EATW,eAAe,KAAf,eAAe,GAAA,EAAA,CAAA,CAAA;AAWpB,MAAM,wCAAwC,GAAG;AACtD,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,WAAW,EAAE,aAAa;AAC1B,IAAA,SAAS,EAAE,WAAW;;;ACfxB;AAQA;;ACLA;AAEO,MAAM,wBAAwB,GAAG;AACjC,MAAM,0BAA0B,GAAG;AACnC,MAAM,6BAA6B,GAAG;AAiI7C;AAEA;AAEA;AACM,SAAU,gCAAgC,CAC9C,OAA8B,EAAA;AAE9B,IAAA,IAAI,OAAO,CAAC,OAAO,EAAE;QACnB,OAAO,OAAO,CAAC,OAAO;IACxB;AAEA,IAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE,EAAE;AACzD;AAEA;AACM,SAAU,2BAA2B,CAAC,KAA0B,EAAA;AACpE,IAAA,OAAO,KAAK,CAAC,OAAO,EAAE,IAAI,KAAK,WAAW;AAC5C;AAEA;AACM,SAAU,gCAAgC,CAC9C,OAAsC,EAAA;AAEtC,IAAA,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,OAAO,KAAK,KAAK,CAAC;AAC7D;AAEA;AACM,SAAU,sCAAsC,CACpD,OAAsC,EAAA;AAEtC,IAAA,MAAM,cAAc,GAAG,gCAAgC,CAAC,OAAO,CAAC;AAChE,IAAA,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AAC1B,QAAA,OAAO,SAAS;IAClB;AAEA,IAAA,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,OAAO,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC;AAC7E;AAEA;;AC3KA;AAEA;MAEa,6BAA6B,CAAA;AAD1C,IAAA,WAAA,GAAA;;AAImB,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC1C,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,oBAAoB,CAAC;AAkClE,IAAA;;;IA5BC,MAAM,iBAAiB,CAAC,KAA0D,EAAA;QAChF,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE;AACpD,QAAA,MAAM,MAAM,GAAG,OAAO,EAAE,IAAI,EAAE,EAAE;QAChC,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE;YAC7B;QACF;AAEA,QAAA,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;AAC7B,YAAA,GAAG,OAAO;AACV,YAAA,IAAI,EAAE;gBACJ,GAAG,OAAO,CAAC,IAAI;AACf,gBAAA,GAAG,KAAK;AACT,aAAA;AACF,SAAA,CAAC;AAEF,QAAA,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;IAClC;IAEA,MAAM,aAAa,CAAC,MAAe,EAAA;QACjC,MAAM,EAAE,GAAG,MAAM,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE;QACjD,IAAI,CAAC,EAAE,EAAE;YACP;QACF;QAEA,MAAM,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,EAAE,CAAC;IAClD;8GAnCW,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,6BAA6B,cADhB,MAAM,EAAA,CAAA,CAAA;;2FACnB,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBADzC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACPlC;AAqCA;;ACrCA;AAYA;AAEO,MAAM,gCAAgC,GAAG;AAChD,MAAM,gBAAgB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AAE1C;AAEA;AAEM,SAAU,mCAAmC,CACjD,WAAW,GAAG,gCAAgC,EAC9C,aAAa,GAAG,IAAI,IAAI,EAAE,EAAA;AAE1B,IAAA,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC;IACrC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAE1B,IAAA,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;AACjC,IAAA,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;AAEzD,IAAA,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC;AACrC,IAAA,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5D,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAE9B,IAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE;AAC1C;AAEA;AAEA;AAEA,SAAS,kBAAkB,CAAC,SAAe,EAAE,OAAa,EAAA;AACxD,IAAA,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC;AACjC,IAAA,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC;IAC7B,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1B,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACxB,OAAO,KAAK,IAAI,GAAG,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE;AACnG;AAEA,SAAS,SAAS,CAAC,IAAU,EAAA;IAC3B,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;AACxC;AAEA,SAAS,QAAQ,CAAC,KAAoB,EAAA;AACpC,IAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;IAC5B,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE;AAChC,QAAA,OAAO,SAAS;IAClB;IACA,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACzB,IAAA,OAAO,SAAS,CAAC,IAAI,CAAC;AACxB;AAEA;AACM,SAAU,2BAA2B,CACzC,QAAuE,EACvE,MAAiC,EAAA;AAEjC,IAAA,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,kBAAkB,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC;AACrF,IAAA,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB;AAExC,IAAA,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;AAC9B,QAAA,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,aAAa,IAAI,IAAI,EAAE;YACrE;QACF;QAEA,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC;QAC9C,IAAI,CAAC,MAAM,EAAE;YACX;QACF;AAEA,QAAA,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC;QAC5B,IAAI,GAAG,GAAG,UAAU,IAAI,GAAG,GAAG,QAAQ,EAAE;YACtC;QACF;AAEA,QAAA,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnD;AAEA,IAAA,OAAO,MAAM;AACf;AAEA;AAEA;AAEM,SAAU,oBAAoB,CAAC,KAAa,EAAA;AAChD,IAAA,IAAI,KAAK,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAAE;QAChC,OAAO,KAAK,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;IAC5B;AACA,IAAA,IAAI,KAAK,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAAE;AAChC,QAAA,OAAO,CAAC;IACV;AACA,IAAA,IAAI,KAAK,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAAE;AAChC,QAAA,OAAO,CAAC;IACV;AACA,IAAA,OAAO,CAAC;AACV;AAEA,SAAS,iBAAiB,CAAC,IAAU,EAAA;AACnC,IAAA,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC;IAC5B,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC1B,IAAA,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;AAC/C,IAAA,OAAO,KAAK;AACd;AAEM,SAAU,sBAAsB,CACpC,MAAiC,EACjC,WAAwC,EAAA;AAExC,IAAA,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,kBAAkB,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC;AACrF,IAAA,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE;IACxB,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAE1B,IAAA,MAAM,SAAS,GAAG,iBAAiB,CAAC,UAAU,CAAC;AAC/C,IAAA,MAAM,OAAO,GAAG,iBAAiB,CAAC,QAAQ,CAAC;IAC3C,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAEtC,MAAM,KAAK,GAA0B,EAAE;AACvC,IAAA,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC;AAElC,IAAA,OAAO,MAAM,IAAI,OAAO,EAAE;QACxB,MAAM,IAAI,GAAyB,EAAE;AAErC,QAAA,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,EAAE,QAAQ,IAAI,CAAC,EAAE;AAClD,YAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC;YAC7B,MAAM,OAAO,GAAG,IAAI,IAAI,UAAU,IAAI,IAAI,IAAI,QAAQ;AACtD,YAAA,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC;YAC9B,MAAM,KAAK,GAAG,OAAO,IAAI,IAAI,IAAI,KAAK,IAAI,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YAE3E,IAAI,CAAC,IAAI,CAAC;AACR,gBAAA,IAAI,EAAE,MAAM;gBACZ,KAAK;AACL,gBAAA,KAAK,EAAE,oBAAoB,CAAC,KAAK,CAAC;AACnC,aAAA,CAAC;YACF,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACtC;AAEA,QAAA,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;IACtB;AAEA,IAAA,OAAO,KAAK;AACd;AAEM,SAAU,wBAAwB,CAAC,KAA4B,EAAA;AACnE,IAAA,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;IAC9E,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3D,IAAA,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC;IAEvC,IAAI,aAAa,GAAG,CAAC;IACrB,IAAI,aAAa,GAAG,CAAC;AAErB,IAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE;AAC3B,YAAA,IAAI,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE;gBACjB,aAAa,IAAI,CAAC;gBAClB,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,aAAa,CAAC;YACxD;iBAAO;gBACL,aAAa,GAAG,CAAC;YACnB;QACF;IACF;AAEA,IAAA,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC;IAEnC,OAAO;QACL,aAAa;QACb,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,cAAc,CAAC;QAC7C,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;QACzC,KAAK;KACN;AACH;AAEM,SAAU,+BAA+B,CAC7C,MAAiC,EACjC,QAAuE,EAAA;IAEvE,MAAM,WAAW,GAAG,2BAA2B,CAAC,QAAQ,EAAE,MAAM,CAAC;IACjE,MAAM,KAAK,GAAG,sBAAsB,CAAC,MAAM,EAAE,WAAW,CAAC;IAEzD,OAAO;AACL,QAAA,EAAE,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,CAAA,EAAI,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA,CAAE;QAClF,MAAM,EAAE,MAAM,CAAC,MAAM;AACrB,QAAA,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC;AACtC,QAAA,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC;QAClC,KAAK;AACL,QAAA,KAAK,EAAE,wBAAwB,CAAC,KAAK,CAAC;KACvC;AACH;AAEM,SAAU,0BAA0B,CAAC,KAAa,EAAA;AACtD,IAAA,IAAI,KAAK,IAAI,SAAS,EAAE;AACtB,QAAA,OAAO,CAAA,EAAG,CAAC,KAAK,GAAG,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA,CAAA,CAAG;IAC7C;AACA,IAAA,IAAI,KAAK,IAAI,KAAK,EAAE;QAClB,OAAO,CAAA,EAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,CAAA,CAAA,CAAG;IACvC;AACA,IAAA,OAAO,MAAM,CAAC,KAAK,CAAC;AACtB;AAEA;;AClNA;AAIA,SAAS,sBAAsB,CAAC,KAAc,EAAA;AAC5C,IAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACjB,QAAA,OAAO,KAAK;IACd;AACA,IAAA,IAAI,KAAK,YAAY,IAAI,EAAE;QACzB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IACvC;IACA,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;AACjC,IAAA,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AAChD;AAEA,SAAS,eAAe,CAAC,KAAc,EAAA;AACrC,IAAA,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,EAAE;AAClC,QAAA,OAAO,SAAS;IAClB;AACA,IAAA,IAAI,KAAK,YAAY,IAAI,EAAE;AACzB,QAAA,OAAO,KAAK;IACd;IACA,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACtC,IAAA,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,SAAS,GAAG,MAAM;AAC5D;AAEA,SAAS,uBAAuB,CAC9B,MAA4C,EAC5C,KAAa,EACb,SAAmB,EAAA;IAEnB,IAAI,CAAC,MAAM,EAAE;AACX,QAAA,OAAO,SAAS;IAClB;AAEA,IAAA,IAAI,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE;AAC1B,QAAA,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,OAAO,EAAE;YAClC,MAAM,KAAK,GAAG,uBAAuB,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC;AAC9D,YAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACvB,gBAAA,OAAO,KAAK;YACd;QACF;AACA,QAAA,OAAO,SAAS;IAClB;AAEA,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC;AACpD,IAAA,IAAI,MAAM,CAAC,KAAK,KAAK,KAAK,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AAC1D,QAAA,OAAO,sBAAsB,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,SAAS;IACxE;AAEA,IAAA,OAAO,SAAS;AAClB;AAEM,SAAU,yBAAyB,CAAC,MAA4C,EAAA;AACpF,IAAA,MAAM,KAAK,GAAG,uBAAuB,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACxE,IAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACjB,QAAA,OAAO,SAAS;IAClB;IACA,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;AACjC,IAAA,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,SAAS;AAC3C;AAEM,SAAU,4BAA4B,CAAC,MAA4C,EAAA;IACvF,MAAM,GAAG,GAAG,eAAe,CAAC,uBAAuB,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,KAAK,EAAE,oBAAoB,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IACvH,IAAI,GAAG,EAAE;AACP,QAAA,OAAO,GAAG;IACZ;AACA,IAAA,OAAO,eAAe,CAAC,uBAAuB,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,KAAK,EAAE,oBAAoB,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;AACnH;AAEM,SAAU,0BAA0B,CAAC,MAA4C,EAAA;IACrF,MAAM,GAAG,GAAG,eAAe,CAAC,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAClH,IAAI,GAAG,EAAE;AACP,QAAA,OAAO,GAAG;IACZ;AACA,IAAA,OAAO,eAAe,CAAC,uBAAuB,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;AAC9G;AAEA;;AC9EA;AA4BA,SAAS,iBAAiB,CAAC,OAAyB,EAAA;IAClD,MAAM,MAAM,GAAG,yBAAyB,CAAC,OAAO,EAAE,MAAM,CAAC;AACzD,IAAA,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;AACnB,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,MAAM,YAAY,GAAG,mCAAmC,EAAE;AAC1D,IAAA,MAAM,SAAS,GAAG,4BAA4B,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,YAAY,CAAC,SAAS;AACzF,IAAA,MAAM,OAAO,GAAG,0BAA0B,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,YAAY,CAAC,OAAO;IAEnF,OAAO;AACL,QAAA,MAAM,EAAE,MAAO;QACf,SAAS;QACT,OAAO;KACR;AACH;AAEA;MACa,mCAAmC,CAAA;AAAhD,IAAA,WAAA,GAAA;;AAGmB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;;IAmH3D;;;IA7GE,KAAK,GAAA;AACH,QAAA,MAAM,YAAY,GAAG,mCAAmC,EAAE;AAC1D,QAAA,MAAM,UAAU,GAAG,+BAA+B,CAChD,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,YAAY,EAAE,EAC1C,EAAE,CACH;QAED,OAAO,OAAO,CAAC,OAAO,CAAC;AACrB,YAAA;gBACE,IAAI,EAAE,qBAAqB,CAAC,YAAY;AACxC,gBAAA,KAAK,EAAE,eAAe;AACtB,gBAAA,OAAO,EAAE;AACP,oBAAA;AACE,wBAAA,IAAI,EAAE,IAAI;AACV,wBAAA,KAAK,EAAE,IAAI;AACX,wBAAA,QAAQ,EAAE,QAAQ;wBAClB,IAAI,EAAE,iBAAiB,CAAC,IAAI;AAC7B,qBAAA;AACD,oBAAA;AACE,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,KAAK,EAAE,SAAS;AAChB,wBAAA,QAAQ,EAAE,QAAQ;wBAClB,IAAI,EAAE,iBAAiB,CAAC,IAAI;AAC7B,qBAAA;AACD,oBAAA;AACE,wBAAA,IAAI,EAAE,WAAW;AACjB,wBAAA,KAAK,EAAE,YAAY;AACnB,wBAAA,QAAQ,EAAE,MAAM;wBAChB,IAAI,EAAE,iBAAiB,CAAC,QAAQ;AACjC,qBAAA;AACD,oBAAA;AACE,wBAAA,IAAI,EAAE,SAAS;AACf,wBAAA,KAAK,EAAE,UAAU;AACjB,wBAAA,QAAQ,EAAE,MAAM;wBAChB,IAAI,EAAE,iBAAiB,CAAC,QAAQ;AACjC,qBAAA;AACF,iBAAA;AACD,gBAAA,OAAO,EAAE;AACP,oBAAA;AACE,wBAAA,KAAK,EAAE,QAAQ;AACf,wBAAA,KAAK,EAAE,MAAM;AACb,wBAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;AAC3B,wBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,iBAAiB,CAAC,IAAI,EAAE;wBACxC,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;AACrB,qBAAA;AACxB,oBAAA;AACE,wBAAA,KAAK,EAAE,WAAW;AAClB,wBAAA,KAAK,EAAE,YAAY;AACnB,wBAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;AACzB,wBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;wBACzE,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;AACrB,qBAAA;AACxB,oBAAA;AACE,wBAAA,KAAK,EAAE,SAAS;AAChB,wBAAA,KAAK,EAAE,UAAU;AACjB,wBAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;AACzB,wBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;wBACzE,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;AACrB,qBAAA;AACzB,iBAAA;gBACD,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;gBACtC,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;gBACvC,OAAO,EAAE,CAAC,UAAU,CAAC;AACrB,gBAAA,MAAM,EAAE,MACN,IAAI,YAAY,CAAgC;AAC9C,oBAAA,GAAG,EAAE,IAAI;AACT,oBAAA,QAAQ,EAAE,CAAC;AACX,oBAAA,IAAI,EAAE,OAAO,OAAO,KAAI;AACtB,wBAAA,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC;wBACzC,IAAI,CAAC,MAAM,EAAE;4BACX,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;wBAChC;wBAEA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC;wBAC3D,MAAM,IAAI,GAAG,+BAA+B,CAAC,MAAM,EAAE,QAAQ,CAAC;wBAC9D,OAAO,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;oBACpC,CAAC;iBACF,CAAC;AACL,aAAA;AACF,SAAA,CAAC;IACJ;;;IAMQ,MAAM,gBAAgB,CAC5B,MAAc,EAAA;AAEd,QAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC;AACzB,aAAA,UAAU,CACTA,UAA4B,CAAC,MAAM,CAAC,IAAI,EACxCA,UAA4B,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI;AAE1D,aAAA,IAAI;AACJ,aAAA,KAAK,CAAC;AACL,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,MAAM,EAAE;AACN,gBAAA,KAAK,EAAE,QAAQ;AACf,gBAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;AAC3B,gBAAA,KAAK,EAAE,MAAM;AACc,aAAA;AAC9B,SAAA,CAAC;AAEJ,QAAA,OAAO,QAAQ,CAAC,KAAK,IAAI,EAAE;IAC7B;AAGD;AAED;;ACtKA;AAKA;;AAEG;MACU,yBAAyB,CAAA;AAAtC,IAAA,WAAA,GAAA;AACmB,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,mCAAmC,EAAE;IAK3E;AAHE,IAAA,MAAM,KAAK,GAAA;AACT,QAAA,OAAO,CAAC,IAAI,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC;IAC/C;AACD;AAED;;;;;;;MCRa,mBAAmB,CAAA;AADhC,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,qBAAqB,CAAC;AA2BtD,IAAA;IAzBC,WAAW,CAAC,KAAY,EAAE,IAA0B,EAAA;AAClD,QAAA,IAAI,KAAK,YAAY,iBAAiB,EAAE;;;;;;;QAOxC;AAAO,aAAA,IAAI,KAAK,YAAY,oBAAoB,EAAE;AAChD,YAAA,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,EAAE,WAAW;AAC3C,YAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,EAAE,WAAW,GAAG,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,IAAI,EAAE,CAAC;QACpG;AAAO,aAAA,IAAI,KAAK,YAAY,uBAAuB,EAAE;AACnD,YAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;AAC5B,YAAA,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,EAAE,WAAW;YAC3C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,EAAE,EAAE,WAAW,EAAE,WAAW,GAAG,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,IAAI,EAAE,CAAC;QAC3G;aAAO;YACL,IAAI,SAAS,EAAE,EAAE;AACf,gBAAA,IAAI,CAAC,KAAK,CAAC,CAAC;YACd;iBAAO;AACL,gBAAA,IAAI,CAAC,KAAK,CAAC,CAAC;YACd;QACF;AACA,QAAA,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,KAAK,CAAC;IAChD;8GA5BW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAnB,mBAAmB,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B;;;ACLD;;;AAGG;AACI,MAAM,gBAAgB,GAAkB,OAC7C,KAA6B,EAC7B,KAA0B,KACI;;AAE9B,IAAA,OAAO,IAAI;AACb;;ICTY;AAAZ,CAAA,UAAY,sBAAsB,EAAA;AAChC,IAAA,sBAAA,CAAA,sBAAA,CAAA,kBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,kBAAgB;AAChB,IAAA,sBAAA,CAAA,sBAAA,CAAA,uBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,uBAAqB;AACrB,IAAA,sBAAA,CAAA,sBAAA,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA,GAAA,eAAa;AACb,IAAA,sBAAA,CAAA,sBAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,gBAAc;AACd,IAAA,sBAAA,CAAA,sBAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAS;AACT,IAAA,sBAAA,CAAA,sBAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAU;AACZ,CAAC,EAPW,sBAAsB,KAAtB,sBAAsB,GAAA,EAAA,CAAA,CAAA;MASrB,qBAAqB,GAAG,IAAI,cAAc,CAAiB,wBAAwB,EAAE;AAChG,IAAA,UAAU,EAAE,MAAM;IAClB,OAAO,EAAE,MAAK;AACZ,QAAA,OAAO,qBAAqB;IAC9B,CAAC;AACF,CAAA;AA4BM,MAAM,qBAAqB,GAAmB;IACnD,IAAI,EAAE,sBAAsB,CAAC,gBAAgB;;;AAG7C,IAAA,mBAAmB,EAAE,WAAW;;AAG5B,SAAU,gBAAgB,CAAC,MAAA,GAAkC,qBAAqB,EAAA;AACtF,IAAA,OAAO,EAAE,GAAG,qBAAqB,EAAE,GAAG,MAAM,EAAE;AAChD;AAOA;;;;AAIG;MACU,qBAAqB,GAAG,IAAI,cAAc,CAAgB,uBAAuB,EAAE;AAC9F,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE,MAAM,gBAAgB;AAChC,CAAA;AAED;;ACpEA;AAEO,MAAM,+BAA+B,GAAG;AAC7C,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,IAAI,EAAE,MAAM;CACJ;AAaV;AAEA;AAEA,MAAM,4BAA4B,GAA4E;AAC5G,IAAA,CAAC,+BAA+B,CAAC,GAAG,GAAG;AACrC,QAAA,SAAS,EAAE,CAAC;AACZ,QAAA,gBAAgB,EAAE,KAAK;AACvB,QAAA,gBAAgB,EAAE,KAAK;AACvB,QAAA,YAAY,EAAE,KAAK;AACnB,QAAA,uBAAuB,EAAE,KAAK;AAC/B,KAAA;AACD,IAAA,CAAC,+BAA+B,CAAC,MAAM,GAAG;AACxC,QAAA,SAAS,EAAE,CAAC;AACZ,QAAA,gBAAgB,EAAE,IAAI;AACtB,QAAA,gBAAgB,EAAE,IAAI;AACtB,QAAA,YAAY,EAAE,IAAI;AAClB,QAAA,uBAAuB,EAAE,KAAK;AAC/B,KAAA;AACD,IAAA,CAAC,+BAA+B,CAAC,IAAI,GAAG;AACtC,QAAA,SAAS,EAAE,EAAE;AACb,QAAA,gBAAgB,EAAE,IAAI;AACtB,QAAA,gBAAgB,EAAE,IAAI;AACtB,QAAA,YAAY,EAAE,IAAI;AAClB,QAAA,uBAAuB,EAAE,IAAI;AAC9B,KAAA;CACF;AAED,MAAM,yBAAyB,GAAG,cAAc;AAEhD;AAEA;AAEA;;AAEG;AACG,SAAU,gCAAgC,CAAC,KAAc,EAAA;AAC7D,IAAA,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;QAChB,OAAO,+BAA+B,CAAC,MAAM;IAC/C;IAEA,MAAM,UAAU,GAAG,4BAA4B,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE;AAEpE,IAAA,IAAI,UAAU,KAAK,KAAK,EAAE;QACxB,OAAO,+BAA+B,CAAC,GAAG;IAC5C;AAEA,IAAA,IAAI,UAAU,KAAK,QAAQ,EAAE;QAC3B,OAAO,+BAA+B,CAAC,MAAM;IAC/C;AAEA,IAAA,IAAI,UAAU,KAAK,MAAM,EAAE;QACzB,OAAO,+BAA+B,CAAC,IAAI;IAC7C;IAEA,OAAO,+BAA+B,CAAC,MAAM;AAC/C;AAEA;;AAEG;AACG,SAAU,2BAA2B,CACzC,KAAqC,EAAA;AAErC,IAAA,OAAO,4BAA4B,CAAC,KAAK,CAAC;AAC5C;AAEA;;AAEG;AACG,SAAU,iCAAiC,CAC/C,QAAgB,EAChB,KAAqC,EAAA;AAErC,IAAA,MAAM,MAAM,GAAG,2BAA2B,CAAC,KAAK,CAAC;IAEjD,IAAI,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE;AACtC,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,IAAI,MAAM,CAAC,gBAAgB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AACtD,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,IAAI,MAAM,CAAC,gBAAgB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AACtD,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,IAAI,MAAM,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AAC/C,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,IAAI,MAAM,CAAC,uBAAuB,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AAC/E,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,OAAO,IAAI;AACb;AAEA;;AAEG;AACG,SAAU,4BAA4B,CAAC,KAAqC,EAAA;AAChF,IAAA,OAAO,+DAA+D,KAAK,CAAC,WAAW,EAAE,EAAE;AAC7F;AAEA;;AAEG;AACG,SAAU,yCAAyC,CAAC,KAAqC,EAAA;AAC7F,IAAA,OAAO,qEAAqE,KAAK,CAAC,WAAW,EAAE,EAAE;AACnG;AAEA;;AC/HA;AAEA;;;AAGG;MAEU,gCAAgC,CAAA;AAD7C,IAAA,WAAA,GAAA;;AAImB,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAoB9D,IAAA;;;AAdC,IAAA,MAAM,QAAQ,GAAA;AACZ,QAAA,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC;AAC5B,aAAA,KAAK,CAAC,gBAAgB,CAAC,MAAM;AAC7B,aAAA,GAAG,CAAU,eAAe,CAAC,kBAAkB,CAAC;QAEnD,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,IAAI,EAAE;AACrD,YAAA,OAAO,gCAAgC,CAAC,WAAW,CAAC;QACtD;AAEA,QAAA,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAU,eAAe,CAAC,kBAAkB,CAAC;AAClG,QAAA,OAAO,gCAAgC,CAAC,cAAc,CAAC;IACzD;8GApBW,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAhC,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gCAAgC,cADnB,MAAM,EAAA,CAAA,CAAA;;2FACnB,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAD5C,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACMlC;;AAEG;MAEU,gCAAgC,CAAA;AAD7C,IAAA,WAAA,GAAA;;AAImB,QAAA,IAAA,CAAA,yBAAyB,GAAG,MAAM,CAAC,gCAAgC,CAAC;AAiDtF,IAAA;;AA7CC,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,qBAAqB;IAC9B;AAEA,IAAA,MAAM,QAAQ,CACZ,KAAc,EACd,OAAmD,EAAA;QAEnD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAAC;AACpE,QAAA,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,EAAE;AAEtC,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YAC1C,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,gBAAA,MAAM,EAAE,KAAK;gBACb,OAAO;gBACP,KAAK;aACN;QACH;QAEA,MAAM,OAAO,GAAG,iCAAiC,CAAC,KAAK,EAAE,UAAU,CAAC;QAEpE,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,YAAA,MAAM,EAAE,OAAO;YACf,OAAO,EAAE,OAAO,GAAG,EAAE,GAAG,OAAO;YAC/B,KAAK;SACN;IACH;;;IAMQ,MAAM,iBAAiB,CAC7B,QAA6D,EAAA;AAE7D,QAAA,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;AACjF,YAAA,OAAO,gCAAgC,CAAC,QAAQ,CAAC;QACnD;AAEA,QAAA,OAAO,IAAI,CAAC,yBAAyB,CAAC,QAAQ,EAAE;IAClD;8GAjDW,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAhC,gCAAgC,EAAA,CAAA,CAAA;;2FAAhC,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAD5C;;;ACpBD;MASa,4BAA4B,CAAA;8GAA5B,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAA5B,4BAA4B,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4BAA4B,EAAA,OAAA,EAAA,CALrC,kBAAkB,CAAC,QAAQ,CAAC;gBAC1B,KAAK,EAAE,CAAC,gCAAgC,CAAC;aAC1C,CAAC,CAAA,EAAA,CAAA,CAAA;;2FAGO,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAPxC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,kBAAkB,CAAC,QAAQ,CAAC;4BAC1B,KAAK,EAAE,CAAC,gCAAgC,CAAC;yBAC1C,CAAC;AACH,qBAAA;AACF,iBAAA;;;ACXM,MAAM,MAAM,GAAY;AAC7B,IAAA;AACE,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,QAAQ,EAAE;AACR,YAAA;AACE,gBAAA,IAAI,EAAE,EAAE;AACR,gBAAA,SAAS,EAAE,MAAM;AACjB,gBAAA,UAAU,EAAE,OAAO;AACpB,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,EAAE;AACR,gBAAA,aAAa,EAAE,MACb,OAAO,kDAAuC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,4BAA4B,CAAC;AAC7F,gBAAA,YAAY,EAAE,MAAM,OAAO,iDAA4B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC;AACxF,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,EAAE;AACR,gBAAA,aAAa,EAAE,MACb,OAAO,kDAAuC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,4BAA4B,CAAC;AAC7F,gBAAA,YAAY,EAAE,MAAM,OAAO,sDAAsC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,kBAAkB,CAAC;AACrG,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,EAAE;AACR,gBAAA,aAAa,EAAE,MACb,OAAO,kDAAuC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,4BAA4B,CAAC;AAC7F,gBAAA,YAAY,EAAE,MAAM,OAAO,2CAAuB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACnE,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,oBAAoB;AAC1B,gBAAA,aAAa,EAAE,MACb,OAAO,6DAA2C,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,yBAAyB,CAAC;AAC/F,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,aAAa,EAAE,MAAM,OAAO,iDAAqC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,2BAA2B,CAAC;AAC7G,gBAAA,YAAY,EAAE,MAAM,8DAAwC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC;AAC7F,aAAA;;;;;;;;;;;;AAYF,SAAA;AACF,KAAA;CACF;;MCnBY,0BAA0B,CAAA;;;AAyC3B,IAAA,qBAAqB,CAAC,WAA2B,EAAA;QACzD,OAAO,WAAW,CAAC,EAAE,KAAK,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,EAAE;IAC/D;;;AAMA,IAAA,WAAA,GAAA;AAhDiB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;;AAGjD,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC1C,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC5C,QAAA,IAAA,CAAA,oBAAoB,GAAG,MAAM,CAAC,8BAA8B,CAAC;QAC7D,IAAA,CAAA,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAACC,YAAU,CAAC,MAAM,CAAC,IAAI,EAAEA,YAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,EAAY;QACjI,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,EAAE,QAAQ;QAC7D,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,YAAa,CAAC;;;AAMpE,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAU,KAAK,6EAAC;QAC9B,IAAA,CAAA,iBAAiB,GAAG,MAAM,EAAQ;;;AAM1B,QAAA,IAAA,CAAA,OAAO,GAAG,SAAS,CAAC,yBAAyB,8EAAC;AAC9C,QAAA,IAAA,CAAA,SAAS,GAAG,YAAY,CAAC,6BAA6B,gFAAC;;;AAMrD,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,IAAI,gFAAC;AACxB,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAmB,EAAE,sFAAC;AAC9C,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,mFAAC;AAChE,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAwB,IAAI,0FAAC;AACzD,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,KAAK,sFAAC;AAC/B,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,mBAAmB,EAAE,+EAAC;QACvD,IAAA,CAAA,aAAa,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAejC,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;gBAClF,cAAc,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACjD;AACF,QAAA,CAAC,CAAC;IACJ;;;IAMA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,YAAY,KAAI;AACzE,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC;AAEtC,YAAA,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC3B,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC/C;AAEA,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AAC3B,QAAA,CAAC,CAAC;IACJ;;;AAMA,IAAA,uBAAuB,CAAC,KAA0B,EAAA;AAChD,QAAA,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE;YAC5B;QACF;AAEA,QAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAE,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAoB,IAAI,IAAI,CAAC;IAC5F;IAEA,qBAAqB,CAAC,KAAoB,EAAE,WAA2B,EAAA;AACrE,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;YAC9C,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,KAAK,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC;QAC1C;IACF;AAEA,IAAA,sBAAsB,CAAC,KAAY,EAAA;AACjC,QAAA,IAAI,EAAE,KAAK,YAAY,aAAa,CAAC,EAAE;YACrC;QACF;AAEA,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,aAAa,EAAE;YACxD;QACF;AAEA,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;YAC1B;QACF;QAEA,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AAEvB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB,IAAI,CAAC,cAAc,EAAE;QACvB;IACF;IAEA,cAAc,GAAA;AACZ,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,EAAE;QAC9C,IAAI,WAAW,EAAE;AACf,YAAA,KAAK,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC;QAC1C;IACF;IAEA,MAAM,iBAAiB,CAAC,IAAoB,EAAA;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE;QACrD,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC;QACrE;AAEA,QAAA,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACpE,IAAI,CAAC,eAAe,EAAE;YACpB,MAAM,IAAI,KAAK,CAAC,CAAA,uBAAA,EAA0B,IAAI,CAAC,EAAE,CAAA,CAAE,CAAC;QACtD;AAEA,QAAA,IAAI,eAAe,GAAG,IAAI,CAAC,OAAO;AAClC,QAAA,IAAI,CAAC,eAAe,IAAI,eAAe,CAAC,QAAQ,IAAI,eAAe,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACvF,YAAA,eAAe,GAAG;gBAChB,EAAE,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;gBAClC,KAAK,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK;gBACxC,WAAW,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW;aACrD;QACH;AAEA,QAAA,MAAM,sBAAsB,GAAmB;AAC7C,YAAA,GAAG,IAAI;AACP,YAAA,OAAO,EAAE,eAAe,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO;AAChD,YAAA,OAAO,EAAE,eAAe;SACzB;AAED,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,KAAK,UAAU,EAAE;AACpE,YAAA,MAAM,aAAa,GAAG;AACpB,gBAAA,WAAW,EAAE,sBAAsB;AACnC,gBAAA,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI;AAC9B,gBAAA,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM;aACnC;YACD,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,aAAkC,CAAC;QAC3E;AAEA,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE;AAC7B,QAAA,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE;IACzC;;;IAMQ,kBAAkB,GAAA;AACxB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE;AAC1B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE;AAC9B,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE;AAC3C,QAAA,MAAM,YAAY,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;QAErG,IAAI,GAAG,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,YAAA,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,GAAG,YAAY,GAAG,CAAC,CAAC,CAAC;QAC7D;IACF;8GA5KW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAsBT,yBAAyB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EACpB,6BAA6B,gECvDhE,s+IAuGA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDlFI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACjB,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACjB,iBAAiB,0ZACjB,sBAAsB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,6BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACtB,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,gBAAgB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAGP,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAhBtC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EAAA,eAAA,EAEf,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC;wBACP,YAAY;wBACZ,cAAc;wBACd,iBAAiB;wBACjB,gBAAgB;wBAChB,iBAAiB;wBACjB,iBAAiB;wBACjB,sBAAsB;wBACtB,mBAAmB;wBACnB,gBAAgB;AACjB,qBAAA,EAAA,QAAA,EAAA,s+IAAA,EAAA;AAwB2B,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,yBAAyB,2FACpB,6BAA6B,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MEzCnD,0BAA0B,CAAA;AAJvC,IAAA,WAAA,GAAA;AAMU,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACxC,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa;AAEnD,QAAA,IAAA,CAAA,UAAU,GAAG,SAAS,CAAqB,YAAY,iFAAC;AAKjE,IAAA;IAHC,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE;IAC5B;8GATW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECdvC,shBAUA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDEY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,QAAA,EAAA,WAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,aAAA,EAAA,WAAA,EAAA,YAAA,EAAA,eAAA,EAAA,eAAA,EAAA,YAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,0BAA0B,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAE3F,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAJtC,SAAS;8BAEC,CAAC,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,iBAAiB,EAAE,0BAA0B,CAAC,EAAA,QAAA,EAAA,shBAAA,EAAA;wEAOpD,YAAY,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ME+BpD,6BAA6B,CAAA;;;AAqD9B,IAAA,gBAAgB,CAAC,MAAiB,EAAA;QAC1C,OAAO,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE;IACrD;;;AAMA,IAAA,WAAA,GAAA;;AA1DQ,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC1C,QAAA,IAAA,CAAA,oBAAoB,GAAG,MAAM,CAAC,8BAA8B,CAAC;AAC7D,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QACvB,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,EAAE,QAAQ;QAC7D,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,YAAa,CAAC;;;AAMpE,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAU,KAAK,6EAAC;QAC9B,IAAA,CAAA,YAAY,GAAG,MAAM,EAAQ;;;AAMrB,QAAA,IAAA,CAAA,OAAO,GAAG,SAAS,CAAC,yBAAyB,8EAAC;AAC9C,QAAA,IAAA,CAAA,SAAS,GAAG,YAAY,CAAC,6BAA6B,gFAAC;;;QAMrD,IAAA,CAAA,WAAW,GAAG,IAAI,iBAAiB,CAAC,sBAAsB,EAAE,aAAa,CAAC;AAC1E,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,IAAI,gFAAC;AACxB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAc,EAAE,iFAAC;AACpC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,EAAE,kFAAC;AACxB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,KAAK,8EAAC;AACvB,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,MAAM,GAAG,CAAC,mFAAC;AAC3D,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAmB,IAAI,qFAAC;AAC/C,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,KAAK,sFAAC;AAC/B,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,+EAAC;QAClD,IAAA,CAAA,aAAa,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;;AAGzB,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;YACzC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrD,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE;AACzC,gBAAA,OAAO,OAAO;YAChB;YACA,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AAC5B,QAAA,CAAC,uFAAC;AAEQ,QAAA,IAAA,CAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,MAAM,GAAG,CAAC,2FAAC;QAe3E,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC/F,cAAc,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACjD;AACF,QAAA,CAAC,CAAC;IACJ;;;IAMA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,KAAI;AAC/D,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC;AAE5B,YAAA,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBACtB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACrC;AAEA,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AAC3B,QAAA,CAAC,CAAC;IACJ;;;AAMA,IAAA,aAAa,CAAC,OAAoB,EAAA;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE;QAC9C,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC/E;AAEA,IAAA,YAAY,CAAC,KAAa,EAAA;AACxB,QAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACvB,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;QAC7B;IACF;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC;IACxC;AAEA,IAAA,kBAAkB,CAAC,KAA0B,EAAA;AAC3C,QAAA,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE;YAC5B;QACF;AAEA,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAE,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAe,IAAI,IAAI,CAAC;IAClF;IAEA,qBAAqB,CAAC,KAAoB,EAAE,MAAiB,EAAA;AAC3D,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;YAC9C,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,KAAK,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;QAChC;IACF;AAEA,IAAA,sBAAsB,CAAC,KAAY,EAAA;AACjC,QAAA,IAAI,EAAE,KAAK,YAAY,aAAa,CAAC,EAAE;YACrC;QACF;AAEA,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,aAAa,EAAE;YACxD;QACF;AAEA,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;YAC1B;QACF;QAEA,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AAEvB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB,IAAI,CAAC,cAAc,EAAE;QACvB;IACF;IAEA,cAAc,GAAA;AACZ,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE;QACpC,IAAI,MAAM,EAAE;AACV,YAAA,KAAK,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;QAChC;IACF;IAEA,MAAM,YAAY,CAAC,IAAe,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,MAAM,aAAa,GAAG;AACpB,gBAAA,MAAM,EAAE,IAAI;AACZ,gBAAA,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI;aAC/B;YACD,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,aAAa,CAAC;QACtD;AAEA,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;QACxB,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,2BAA2B,CAAC,CAAC;IAC5D;;;IAMQ,kBAAkB,GAAA;AACxB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE;AAC1B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE;AAC9B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE;AACjC,QAAA,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAEjF,IAAI,GAAG,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,YAAA,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,GAAG,YAAY,GAAG,CAAC,CAAC,CAAC;QAC7D;IACF;8GA7KW,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA7B,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAoBZ,yBAAyB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EACpB,6BAA6B,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvEhE,y1LA+IA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDzGI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,mBAAmB,8BACnB,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,+BAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACjB,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACjB,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACjB,sBAAsB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,6BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,gBAAgB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAGP,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAjBzC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,EAAA,eAAA,EAElB,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC;wBACP,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB,cAAc;wBACd,iBAAiB;wBACjB,gBAAgB;wBAChB,iBAAiB;wBACjB,iBAAiB;wBACjB,sBAAsB;wBACtB,gBAAgB;AACjB,qBAAA,EAAA,QAAA,EAAA,y1LAAA,EAAA;AAsB2B,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,yBAAyB,2FACpB,6BAA6B,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MEzDnD,iCAAiC,CAAA;AAL9C,IAAA,WAAA,GAAA;AAMU,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACxC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ;AACvC,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM;AAErC,QAAA,IAAA,CAAA,aAAa,GAAG,SAAS,CAAqB,eAAe,oFAAC;AAKvE,IAAA;IAHC,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE;IAC/B;8GATW,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjC,iCAAiC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECd9C,+uBAgBC,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDJW,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,QAAA,EAAA,WAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,aAAA,EAAA,WAAA,EAAA,YAAA,EAAA,eAAA,EAAA,eAAA,EAAA,YAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,8IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,6BAA6B,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAE9F,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAL7C,SAAS;+BACE,6BAA6B,EAAA,OAAA,EAE9B,CAAC,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,iBAAiB,EAAE,6BAA6B,CAAC,EAAA,QAAA,EAAA,+uBAAA,EAAA;2EAOpD,eAAe,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEjBvE;AAEO,MAAM,4BAA4B,GAAG,yBAAyB;AAe/D,SAAU,6BAA6B,CAAC,YAA6C,EAAA;AACzF,IAAA,OAAO,YAAY,EAAE,MAAM,KAAK,IAAI;AACtC;AAEM,SAAU,4BAA4B,CAAC,YAA6C,EAAA;AACxF,IAAA,OAAO,YAAY,EAAE,KAAK,KAAK,IAAI;AACrC;AAEA;;MCkCa,2BAA2B,CAAA;AAxBxC,IAAA,WAAA,GAAA;;AA2BmB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC1C,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAC5C,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC;AAC9B,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,kBAAkB,CAAC;AACrC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC1C,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,2BAA2B,CAAC;AACtD,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC5C,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;;;AAM7B,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU;AAEzC,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK;AACjC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO;AACrC,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB;AACzD,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;AAEvF,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAA2B,EAAE,gFAAC;;;QAezD,IAAA,CAAA,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI;QAQ5C,IAAA,CAAA,6BAA6B,GAAG,6BAA6B;QAC7D,IAAA,CAAA,4BAA4B,GAAG,4BAA4B;AA4H/E,IAAA;;;AA9IC,IAAA,MAAM,QAAQ,GAAA;AACZ,QAAA,MAAM,IAAI,CAAC,aAAa,EAAE;QAC1B,IAAI,CAAC,0BAA0B,EAAE;IACnC;AAQU,IAAA,aAAa,CAAC,IAA4B,EAAA;QAClD,OAAO;AACL,YAAA,oBAAoB,EAAE,IAAI,CAAC,KAAK,KAAK,QAAQ;SAC9C;IACH;AAKU,IAAA,YAAY,CAAC,KAAa,EAAA;AAClC,QAAA,OAAO,kBAAkB,CAAC,KAAK,CAAC;IAClC;AAEU,IAAA,eAAe,CAAC,IAA4B,EAAA;AACpD,QAAA,OAAO,+BAA+B,CAAC,IAAI,CAAC,SAAS,CAAC;IACxD;AAEU,IAAA,MAAM,mBAAmB,CAAC,IAA4B,EAAE,OAA2B,EAAA;QAC3F,OAAO,CAAC,KAAK,EAAE;AAEf,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;QACzC;IACF;IAEU,YAAY,GAAA;QACpB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC;IACvC;;;IAMQ,0BAA0B,GAAA;QAChC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC3F,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,mBAAmB,CAAC,EAAE;gBAC7D;YACF;AAEA,YAAA,KAAK,IAAI,CAAC,aAAa,EAAE;AAC3B,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,MAAM,aAAa,GAAA;QACzB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAiC,4BAA4B,EAAE;AACtG,YAAA,KAAK,EAAE,EAAE;AACV,SAAA,CAAC;AACF,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE;AACjC,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;IACnC;AAEQ,IAAA,qBAAqB,CAAC,KAA+B,EAAA;QAC3D,MAAM,SAAS,GAAiC,EAAE;AAElD,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,YAAA,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE;gBACtE;YACF;AAEA,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO;YAE5B,KAAK,MAAM,QAAQ,IAAI,0BAA0B,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AACjE,gBAAA,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,IAAI,EAAE;oBACjC,SAAS,CAAC,IAAI,CAAC;wBACb,IAAI,EAAE,CAAC,KAAK,CAAC;wBACb,KAAK,EAAE,IAAI,CAAC,KAAe;AAC3B,wBAAA,KAAK,EAAE,2CAA2C;wBAClD,qBAAqB,EAAE,QAAQ,CAAC,qBAAqB;wBACrD,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;AAC7C,wBAAA,IAAI,EAAE,MAAM,IAAI,CAAC,eAAe,EAAE,KAAK,QAAQ,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC;wBACjE,OAAO,EAAE,MAAK;AACZ,4BAAA,KAAK,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;wBACnC,CAAC;AACF,qBAAA,CAAC;gBACJ;YACF;QACF;AAEA,QAAA,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;YAC1B;QACF;AAEA,QAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC;YAC7B,KAAK,EAAE,IAAI,CAAC,UAAU;AACtB,YAAA,EAAE,EAAE,mBAAmB;YACvB,QAAQ,EAAE,2BAA2B,CAAC,MAAM;AAC5C,YAAA,KAAK,EAAE,2CAA2C;AAClD,YAAA,IAAI,EAAE,MAAM,IAAI,CAAC,eAAe,EAAE;YAClC,SAAS;AACV,SAAA,CAAC;IACJ;IAEQ,MAAM,cAAc,CAAC,OAA0B,EAAA;AACrD,QAAA,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE;YAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC;YACtD,IAAI,CAAC,IAAI,EAAE;gBACT;YACF;AAEA,YAAA,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE;AACtC,gBAAA,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE,IAAI,EAAE;AACoB,aAAA,CAAC;YACxC;QACF;QAEA,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AAC5C,YAAA,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;QACxE;IACF;AAEQ,IAAA,mBAAmB,CAAC,OAAsC,EAAA;QAChE,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,OAAO,SAAS;QAClB;QAEA,IAAI,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,QAAQ,EAAE;AACvC,YAAA,OAAO,OAAO,CAAC,MAAM,CAAC;QACxB;AAEA,QAAA,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAkC;AACxE,QAAA,IAAI,OAAO,aAAa,EAAE,IAAI,KAAK,QAAQ,EAAE;YAC3C,OAAO,aAAa,CAAC,IAAI;QAC3B;AAEA,QAAA,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,CAAkC;QACzE,OAAO,aAAa,EAAE,IAAI;IAC5B;8GAzKW,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7DxC,4oEAkDC,EAAA,MAAA,EAAA,CAAA,irCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDTG,YAAY,8BACZ,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA;;AAEZ,gBAAA,aAAa,8BACb,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,QAAA,EAAA,WAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,aAAA,EAAA,WAAA,EAAA,YAAA,EAAA,eAAA,EAAA,eAAA,EAAA,YAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,cAAc,6XACd,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA;;;gBAGjB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA;;gBAGtB,iCAAiC,EAAA,QAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAKxB,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAxBvC,SAAS;AAGC,YAAA,IAAA,EAAA,CAAA,EAAA,OAAA,EAAA;wBACP,YAAY;wBACZ,YAAY;;wBAEZ,aAAa;wBACb,cAAc;wBACd,eAAe;wBACf,cAAc;wBACd,iBAAiB;;;wBAGjB,eAAe;wBACf,mBAAmB;wBACnB,sBAAsB;;wBAGtB,iCAAiC;AAClC,qBAAA,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,4oEAAA,EAAA,MAAA,EAAA,CAAA,irCAAA,CAAA,EAAA;;;MEtB1B,+BAA+B,CAAA;AAe1C,IAAA,WAAA,GAAA;AAdQ,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAC1C,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACzD,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAC1C,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAEtC,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AACtC,YAAA,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE;YAC/B,OAAO,IAAI,CAAC,UAAU,CAAC,yBAAyB,EAAE,KAAK,mBAAmB,CAAC,OAAO;AACpF,QAAA,CAAC,oFAAC;AAEQ,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,IAAI,iFAAC;AACzB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAS,EAAE,iFAAC;AAO/B,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK;AACjC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO;AAErC,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB;QAEvD,IAAA,CAAA,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI;QAwBrD,IAAA,CAAA,aAAa,GAAG,MAAK;AAC7B,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;gBAC1C,MAAM,KAAK,GAAG,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;gBACpC,IAAI,KAAK,EAAE,MAAM,IAAI,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE;AACtC,oBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA,EAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA,EAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA,CAAE,CAAC;gBAChG;;oBAAO,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;AACzC,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC;QAxCC,IAAI,CAAC,SAAS,EAAE;QAChB,IAAI,CAAC,aAAa,EAAE;IACtB;IAWA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,OAAO,EAAE,CAAA,sCAAA,CAAwC,CAAC,CAAC;IACpF;AAEA,IAAA,MAAM,MAAM,GAAA;AACV,QAAA,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;IACrC;IAEA,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;IAC5B;IAEU,YAAY,GAAA;QACpB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC;IACvC;AAEU,IAAA,YAAY,CAAC,KAA8B,EAAA;AACnD,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;IAC5B;AAWQ,IAAA,MAAM,SAAS,GAAA;AACrB,QAAA,IAAI;YACF,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,MAAgB;YACtD,IAAI,GAAG,EAAE,WAAW,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AACzC,gBAAA,IAAI,CAAC,GAAG,GAAG,GAAG;YAChB;AAAO,iBAAA,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,IAAI,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE;AACzE,gBAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC;gBACrD,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC;YACtC;iBAAO;;YAEP;QACF;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;AAC1B,YAAA,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC;AACnD,YAAA,IAAI,CAAC,GAAG,GAAG,EAAE;QACf;IACF;8GA1EW,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA/B,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrC5C,mgBAaA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDSI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA;;gBAEZ,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,8IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACjB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA;;gBAEnB,iCAAiC,EAAA,QAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEjC,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EADtB,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIA,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAlB3C,SAAS;AAEC,YAAA,IAAA,EAAA,CAAA,EAAA,OAAA,EAAA;wBACP,YAAY;;wBAEZ,aAAa;wBACb,cAAc;wBACd,eAAe;wBACf,cAAc;wBACd,iBAAiB;wBACjB,eAAe;wBACf,mBAAmB;;wBAEnB,iCAAiC;wBACjC,SAAS;wBACT,sBAAsB;AACvB,qBAAA,EAAA,QAAA,EAAA,mgBAAA,EAAA;;sBA6BA,SAAS;uBAAC,gBAAgB;;;ME/CP,4BAA4B,CAAA;AAMjD;AAGK,MAAO,+BAAgC,SAAQ,4BAA4B,CAAA;AADjF,IAAA,WAAA,GAAA;;;AAImB,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC1C,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;QACxC,IAAA,CAAA,0BAA0B,GAAG,IAAI,CAAC;AAChD,aAAA,UAAU,CAACF,UAA4B,CAAC,MAAM,CAAC,IAAI,EAAEA,UAA4B,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI;AAC9G,aAAA,IAAI,EAA0D;AAChD,QAAA,IAAA,CAAA,qBAAqB,GAAG,MAAM,CAAC,wBAAwB,CAAC;AACxD,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,kBAAkB,CAAC;AA6D9D,IAAA;;AAzDU,IAAA,MAAM,WAAW,GAAA;QACxB,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE;QAC3C,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,OAAO,EAAE;QACX;QAEA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE;AAC9D,QAAA,OAAO,QAAQ,CAAC,KAAK,CAAC,MAAM,CAC1B,CAAC,IAAI,KACH,IAAI,CAAC,MAAM,KAAK,MAAM;YACtB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,KAAK,QAAQ;AAC9C,YAAA,CAAC,IAAI,CAAC,eAAe,CACxB;IACH;AAES,IAAA,MAAM,wBAAwB,GAAA;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE;QAC3C,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC;QAC7C;QAEA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE;AAC9D,QAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CACxC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,KAAK,QAAQ,CACnF;AAED,QAAA,MAAM,aAAa,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,eAAe,CAAC;QACvE,IAAI,aAAa,EAAE;AACjB,YAAA,OAAO,aAAa;QACtB;AAEA,QAAA,MAAM,iBAAiB,GAAG,OAAO,CAC/B,YAAY,EACZ,CAAC,CAAC,OAAO,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE,CAAC,EACxD,CAAC,MAAM,CAAC,CACT,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,iBAAiB,EAAE;AACtB,YAAA,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC;QAC7D;AAEA,QAAA,OAAO,iBAAiB;IAC1B;IAES,MAAM,gBAAgB,CAAC,SAAiB,EAAA;AAC/C,QAAA,MAAM,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAChF;AAES,IAAA,MAAM,mBAAmB,GAAA;AAChC,QAAA,MAAM,IAAI,CAAC,qBAAqB,CAAC,+BAA+B,EAAE;IACpE;IAES,MAAM,6BAA6B,CAAC,KAA6C,EAAA;QACxF,MAAM,IAAI,CAAC;AACR,aAAA,KAAK,CAAC,gBAAgB,CAAC,IAAI;AAC3B,aAAA,GAAG,CAAC,eAAe,CAAC,0BAA0B,EAAE,KAAK,CAAC;IAC3D;8GArEW,+BAA+B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAA/B,+BAA+B,EAAA,CAAA,CAAA;;2FAA/B,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAD3C;;;ACpBM,MAAM,wBAAwB,GAAkB,OACrD,KAA6B,EAC7B,KAA0B,KACxB;AACF,IAAA,MAAM,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAChD,IAAA,MAAM,oBAAoB,GAAG,MAAM,CAAC,8BAA8B,CAAC;AACnE,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7B,MAAM,YAAY,GAAG,cAAc,CAAC,cAAc,EAAE,EAAE,QAAQ;IAC9D,MAAM,QAAQ,GAAG,oBAAoB,CAAC,GAAG,CAAC,YAAa,CAAC;AAExD,IAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,EAAE;QAC5B,OAAO,MAAM,CAAC,aAAa,CAAC,CAAC,aAAa,CAAC,CAAC;IAC9C;IAEA,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC;AAE7D,IAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AACxB,QAAA,MAAM,CAAC,KAAK,CACV,iHAAiH,CAClH;QACD,OAAO,MAAM,CAAC,aAAa,CAAC,CAAC,aAAa,CAAC,CAAC;IAC9C;AACA,IAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;QACxB,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,WAAW,KAAK,UAAU,EAAE;AAC1D,YAAA,MAAM,aAAa,GAAG;gBACpB,IAAI,EAAE,cAAc,CAAC,IAAI;AACzB,gBAAA,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;aACnB;AACD,YAAA,MAAM,cAAc,CAAC,WAAW,CAAC,aAAa,CAAC;YAC/C,OAAO,MAAM,CAAC,aAAa,CAAC,CAAC,2BAA2B,CAAC,CAAC;QAC5D;AACA,QAAA,OAAO,KAAK;IACd;AACA,IAAA,OAAO,IAAI;AACb,CAAC;;ACjCM,MAAM,qBAAqB,GAAkB,OAClD,KAA6B,EAC7B,KAA0B,KACxB;AACF,IAAA,MAAM,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAChD,IAAA,MAAM,oBAAoB,GAAG,MAAM,CAAC,8BAA8B,CAAC;AACnE,IAAA,MAAM,eAAe,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAClD,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7B,MAAM,YAAY,GAAG,cAAc,CAAC,cAAc,EAAE,EAAE,QAAQ;IAC9D,MAAM,QAAQ,GAAG,oBAAoB,CAAC,GAAG,CAAC,YAAa,CAAC;IACxD,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,cAAc,CAAC,aAAa,CAAC;AAE/D,IAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QACrB,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC;AACtC,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACrB,QAAA,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,EAAE,EAAE;QAC1C,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC;QAClE;QACA,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,WAAW,KAAK,UAAU,EAAE;AAC1D,YAAA,MAAM,aAAa,GAAG;gBACpB,IAAI,EAAE,cAAc,CAAC,IAAI;gBACzB,MAAM,EAAE,cAAc,CAAC,MAAM;AAC7B,gBAAA,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;aACrB;AACD,YAAA,MAAM,cAAc,CAAC,WAAW,CAAC,aAAa,CAAC;AAG/C,YAAA,OAAO,MAAM,CAAC,aAAa,CAAC,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC;QAClE;AACA,QAAA,OAAO,KAAK;IACd;AACA,IAAA,OAAO,IAAI;AACb,CAAC;;ACrBD,SAAS,YAAY,GAAA;IACnB,IAAI,MAAM,GAAW,EAAE;AACvB,IAAA,MAAM,GAAG;AACP,QAAA;AACE,YAAA,IAAI,EAAE,gBAAgB;AACtB,YAAA,aAAa,EAAE,MACb,OAAO,6DAA2C,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,6BAA6B,CAAC;AAClG,YAAA,WAAW,EAAE,CAAC,YAAY,EAAE,wBAAwB,CAAC;AACtD,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,aAAa;AACnB,YAAA,aAAa,EAAE,MAAM,OAAO,0DAAqC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,0BAA0B,CAAC;AAC5G,YAAA,WAAW,EAAE,CAAC,YAAY,EAAE,qBAAqB,CAAC;AACnD,SAAA;KACF;AACD,IAAA,OAAO,MAAM;AACf;MA0Ca,gBAAgB,CAAA;8GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YArCzB,YAAY,EAAAE,IAAA,CAAA,sBAAA,CAAA,EAAA,CAAA,CAAA;AAqCH,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,SAAA,EAZhB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,MAAM;AACf,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,UAAU,EAAE,YAAY;AACzB,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,4BAA4B;AACrC,gBAAA,QAAQ,EAAE,+BAA+B;AAC1C,aAAA;AACF,SAAA,EAAA,OAAA,EAAA,CAnCC,YAAY;;YAEZ,sBAAsB,CAAC,QAAQ,CAAC;AAC9B,gBAAA,uBAAuB,EAAE;AACvB,oBAAA;AACE,wBAAA,QAAQ,EAAE,CAAC;AACX,wBAAA,IAAI,EAAE,WAAW;AACjB,wBAAA,SAAS,EAAE,+BAA+B;AAC3C,qBAAA;AACF,iBAAA;AACD,gBAAA,iBAAiB,EAAE;AACjB,oBAAA;AACE,wBAAA,QAAQ,EAAE,EAAE;AACZ,wBAAA,IAAI,EAAE,YAAY;AAClB,wBAAA,SAAS,EAAE,0BAA0B;AACtC,qBAAA;AACD,oBAAA;AACE,wBAAA,QAAQ,EAAE,EAAE;AACZ,wBAAA,IAAI,EAAE,SAAS;AACf,wBAAA,SAAS,EAAE,2BAA2B;AACvC,qBAAA;AACF,iBAAA;aACF,CAAC,CAAA,EAAA,CAAA,CAAA;;2FAeO,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAxC5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,OAAO,EAAE;wBACP,YAAY;;wBAEZ,sBAAsB,CAAC,QAAQ,CAAC;AAC9B,4BAAA,uBAAuB,EAAE;AACvB,gCAAA;AACE,oCAAA,QAAQ,EAAE,CAAC;AACX,oCAAA,IAAI,EAAE,WAAW;AACjB,oCAAA,SAAS,EAAE,+BAA+B;AAC3C,iCAAA;AACF,6BAAA;AACD,4BAAA,iBAAiB,EAAE;AACjB,gCAAA;AACE,oCAAA,QAAQ,EAAE,EAAE;AACZ,oCAAA,IAAI,EAAE,YAAY;AAClB,oCAAA,SAAS,EAAE,0BAA0B;AACtC,iCAAA;AACD,gCAAA;AACE,oCAAA,QAAQ,EAAE,EAAE;AACZ,oCAAA,IAAI,EAAE,SAAS;AACf,oCAAA,SAAS,EAAE,2BAA2B;AACvC,iCAAA;AACF,6BAAA;yBACF,CAAC;AACH,qBAAA;AACD,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,MAAM;AACf,4BAAA,KAAK,EAAE,IAAI;AACX,4BAAA,UAAU,EAAE,YAAY;AACzB,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,4BAA4B;AACrC,4BAAA,QAAQ,EAAE,+BAA+B;AAC1C,yBAAA;AACF,qBAAA;AACF,iBAAA;;;;;;;;AClED;AAEA,MAAM,sBAAsB,GAAG,KAAK;AACpC,MAAM,sBAAsB,GAAG,KAAK;AACpC,MAAM,8BAA8B,GAAG,EAAE;AACzC,MAAM,0BAA0B,GAAG,oBAAoB;AACvD,MAAM,+BAA+B,GAAG,MAAM;AAE9C,MAAM,2BAA2B,GAAG;AAClC,IAAA,eAAe,CAAC,mBAAmB;AACnC,IAAA,eAAe,CAAC,mBAAmB;CAC3B;AAEV;;;;AAIG;MAEU,kBAAkB,CAAA;;;AAoC7B,IAAA,WAAA,GAAA;;AAjCS,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,KAAK,6EAAC;AAEd,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,8BAA8B,GAAG,MAAM,oFAAC;AAC/D,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,KAAK,8EAAC;;AAG/B,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;AAE3B,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,EAAE,oFAAC;AAEnC,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE;QAC3B,IAAA,CAAA,eAAe,GAAG,CAAC;QACnB,IAAA,CAAA,gBAAgB,GAA0C,IAAI;QAC9D,IAAA,CAAA,UAAU,GAAiC,IAAI;QAC/C,IAAA,CAAA,cAAc,GAAG,KAAK;AACtB,QAAA,IAAA,CAAA,UAAU,GAAkB,OAAO,CAAC,OAAO,EAAE;;;AAMpC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC1C,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC5C,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACxC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACzC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC;AAC7B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;;QA6V3B,IAAA,CAAA,UAAU,GAAG,MAAW;YACvC,IAAI,CAAC,cAAc,EAAE;AACvB,QAAA,CAAC;QAEgB,IAAA,CAAA,WAAW,GAAG,MAAW;AACxC,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;YACtB,IAAI,GAAG,GAAG,IAAI,CAAC,eAAe,GAAG,sBAAsB,EAAE;gBACvD;YACF;AAEA,YAAA,IAAI,CAAC,eAAe,GAAG,GAAG;YAC1B,IAAI,CAAC,cAAc,EAAE;AACvB,QAAA,CAAC;QAlWC,IAAI,CAAC,cAAc,CAAC;AACjB,aAAA,IAAI,CACH,MAAM,CACJ,CAAC,MAAM,KACL,MAAM,KAAK,gBAAgB,CAAC,aAAa;YACzC,MAAM,KAAK,gBAAgB,CAAC,UAAU;YACtC,MAAM,KAAK,gBAAgB,CAAC,SAAS;AACrC,YAAA,MAAM,KAAK,gBAAgB,CAAC,OAAO,CACtC,EACD,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AAEpC,aAAA,SAAS,CAAC,CAAC,MAAM,KAAI;AACpB,YAAA,MAAM,eAAe,GACnB,MAAM,KAAK,gBAAgB,CAAC,aAAa,IAAI,MAAM,KAAK,gBAAgB,CAAC,UAAU;YAErF,IAAI,eAAe,EAAE;AACnB,gBAAA,KAAK,IAAI,CAAC,cAAc,EAAE;gBAC1B;YACF;AAEA,YAAA,KAAK,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC;AACzC,QAAA,CAAC,CAAC;QAEJ,eAAe,CACb,MAAK;AACH,YAAA,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,EAAE;AAClC,gBAAA,KAAK,IAAI,CAAC,cAAc,EAAE;YAC5B;QACF,CAAC,EACD,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAC5B;QAED,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;YAC3F,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE;gBACxE;YACF;AAEA,YAAA,KAAK,IAAI,CAAC,8BAA8B,EAAE;AAC5C,QAAA,CAAC,CAAC;IACJ;;;IAMA,UAAU,GAAA;QACR,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;IACvC;AAEA,IAAA,SAAS,CAAC,GAAW,EAAA;AACnB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE;QACrC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,GAAG,KAAK,QAAQ;IAC/C;IAEA,MAAM,cAAc,CAAC,QAAgB,EAAA;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE;QAC3C,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;AACtC,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,IAAI;AACF,YAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;AACrB,iBAAA,UAAU,CAAC,0BAA0B,EAAE,+BAA+B;AACtE,iBAAA,IAAI;iBACJ,KAAK,CAAC,MAAM,CAAC;YAEhB,OAAO,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,QAAQ;QAC3C;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,8CAA8C,EAAE,KAAK,CAAC;AACpE,YAAA,OAAO,KAAK;QACd;IACF;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC;QACpC,IAAI,CAAC,gBAAgB,EAAE;AACvB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE;IAClC;;IAGA,UAAU,GAAA;QACR,IAAI,CAAC,IAAI,EAAE;IACb;AAEA,IAAA,MAAM,eAAe,GAAA;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE;AAC3C,QAAA,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;AACjB,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B;QACF;AAEA,QAAA,IAAI;AACF,YAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;AACrB,iBAAA,UAAU,CAAC,0BAA0B,EAAE,+BAA+B;AACtE,iBAAA,IAAI;iBACJ,KAAK,CAAC,MAAM,CAAC;AAEhB,YAAA,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC;AACnD,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC;QACjC;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,KAAK,CAAC;AACjE,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B;IACF;;AAGA,IAAA,MAAM,gBAAgB,GAAA;AACpB,QAAA,MAAM,IAAI,CAAC,oBAAoB,EAAE;AACjC,QAAA,MAAM,IAAI,CAAC,eAAe,EAAE;IAC9B;;IAGA,2BAA2B,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,cAAc,EAAE;IAC9B;;AAGA,IAAA,MAAM,gBAAgB,GAAA;QACpB,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;AAChE,QAAA,MAAM,eAAe,GACnB,MAAM,KAAK,gBAAgB,CAAC,aAAa,IAAI,MAAM,KAAK,gBAAgB,CAAC,UAAU;QAErF,IAAI,eAAe,EAAE;AACnB,YAAA,MAAM,IAAI,CAAC,cAAc,EAAE;QAC7B;IACF;;;IAMQ,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QAC9D,OAAO,IAAI,CAAC,UAAU;IACxB;AAEQ,IAAA,MAAM,SAAS,GAAA;AACrB,QAAA,MAAM,IAAI,CAAC,oBAAoB,EAAE;AACjC,QAAA,MAAM,IAAI,CAAC,eAAe,EAAE;AAE5B,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,EAAE;YAClC,IAAI,CAAC,oBAAoB,EAAE;YAC3B;QACF;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;AACnB,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YACnB;QACF;QAEA,IAAI,CAAC,yBAAyB,EAAE;QAChC,IAAI,CAAC,uBAAuB,EAAE;QAC9B,IAAI,CAAC,cAAc,EAAE;IACvB;IAEQ,oBAAoB,GAAA;AAC1B,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;QAErB,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAC5C,YAAA,KAAK,IAAI,CAAC,eAAe,EAAE;QAC7B;AAEA,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;YAClB,IAAI,CAAC,uBAAuB,EAAE;YAC9B,IAAI,CAAC,cAAc,EAAE;QACvB;IACF;IAEQ,MAAM,qBAAqB,CAAC,MAAwB,EAAA;AAC1D,QAAA,IAAI,MAAM,KAAK,gBAAgB,CAAC,SAAS,IAAI,MAAM,KAAK,gBAAgB,CAAC,OAAO,EAAE;YAChF;QACF;QAEA,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;QACtE,IAAI,SAAS,EAAE;YACb;QACF;AAEA,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IACpB;IAEQ,OAAO,CAAC,kBAAkB,GAAG,KAAK,EAAA;QACxC,MAAM,qBAAqB,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,kBAAkB;AAEnF,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;QAEvB,IAAI,CAAC,qBAAqB,EAAE;AAC1B,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;YACtB,IAAI,CAAC,gBAAgB,EAAE;QACzB;QAEA,IAAI,kBAAkB,EAAE;AACtB,YAAA,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC;QACtC;QAEA,IAAI,CAAC,uBAAuB,EAAE;QAC9B,IAAI,CAAC,aAAa,EAAE;IACtB;AAEQ,IAAA,MAAM,oBAAoB,GAAA;AAChC,QAAA,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAU,eAAe,CAAC,mBAAmB,CAAC;AACxG,QAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAS,eAAe,CAAC,mBAAmB,CAAC;AAC3F,QAAA,MAAM,eAAe,GACnB,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,GAAG,OAAO,GAAG,8BAA8B;QAEvF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,IAAI,CAAC;QAC9C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,eAAe,GAAG,MAAM,CAAC;IAClD;AAEQ,IAAA,MAAM,8BAA8B,GAAA;QAC1C,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;AAChE,QAAA,MAAM,eAAe,GACnB,MAAM,KAAK,gBAAgB,CAAC,aAAa,IAAI,MAAM,KAAK,gBAAgB,CAAC,UAAU;QAErF,IAAI,CAAC,eAAe,EAAE;YACpB;QACF;AAEA,QAAA,MAAM,IAAI,CAAC,cAAc,EAAE;IAC7B;IAEQ,cAAc,GAAA;QACpB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YACpC;QACF;AAEA,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE;IAClC;IAEQ,IAAI,GAAA;QACV,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YACpC;QACF;AAEA,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACrB,QAAA,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC;AACnC,QAAA,KAAK,IAAI,CAAC,eAAe,EAAE;IAC7B;IAEQ,eAAe,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE;YAC3E;QACF;QAEA,eAAe,CACb,MAAK;AACH,YAAA,KAAK,IAAI,CAAC,iBAAiB,EAAE;QAC/B,CAAC,EACD,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAC5B;IACH;IAEQ,qBAAqB,GAAA;QAC3B,OAAO,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;IACxD;AAEQ,IAAA,MAAM,iBAAiB,GAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE;YAC3E;QACF;AAEA,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AAErB,QAAA,IAAI;YACF,MAAM,EAAE,8BAA8B,EAAE,gBAAgB,EAAE,GAAG,MAAM,OACjE,mEAA4D,CAC7D;AAED,YAAA,MAAM,YAAY,GAAG,CAAC,gCAAgC,CAAC;AACvD,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE;AAC1B,gBAAA,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;YAC9B;YAEA,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,gBAAgB,EAAE;AAC7D,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,KAAK,EAAE,MAAM;AACb,gBAAA,UAAU,EAAE,YAAY;AACxB,gBAAA,QAAQ,EAAE;AACR,oBAAA,OAAO,EAAE,KAAK;AACd,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,YAAY,EAAE,KAAK;AACpB,iBAAA;gBACD,SAAS,EAAE,MAAK;AACd,oBAAA,IAAI,CAAC,UAAU,GAAG,IAAI;gBACxB,CAAC;AACF,aAAA,CAAC;AAEF,YAAA,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE;gBACjC,GAAG,CAAC,OAAO,EAAE;gBACb;YACF;AAEA,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACrB,YAAA,IAAI,CAAC,UAAU,GAAG,GAAG;QACvB;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC;AAE3D,YAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE;AAChC,gBAAA,MAAM,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,GAAG,CAAC;YACtD;QACF;gBAAU;AACR,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK;QAC7B;IACF;IAEQ,gBAAgB,GAAA;AACtB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;AACzB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;QACxB;IACF;IAEQ,cAAc,GAAA;QACpB,IAAI,CAAC,aAAa,EAAE;AACpB,QAAA,IAAI,CAAC,gBAAgB,GAAG,WAAW,CAAC,MAAK;YACvC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;gBACpC;YACF;AAEA,YAAA,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;gBAC5D,IAAI,CAAC,IAAI,EAAE;YACb;QACF,CAAC,EAAE,sBAAsB,CAAC;IAC5B;IAEQ,aAAa,GAAA;QACnB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE;AACjC,YAAA,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC;AACpC,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;QAC9B;IACF;IAEQ,yBAAyB,GAAA;AAC/B,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;QACtB,IAAI,CAAC,gBAAgB,EAAE;AACvB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE;IAClC;IAkBQ,uBAAuB,GAAA;QAC7B,IAAI,CAAC,uBAAuB,EAAE;AAC9B,QAAA,MAAM,MAAM,GAAkC,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,CAAC;QAChH,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC1F,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC;IAChE;IAEQ,uBAAuB,GAAA;AAC7B,QAAA,MAAM,MAAM,GAAkC,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,CAAC;QAChH,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC7F,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC;IACnE;8GApZW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cADL,MAAM,EAAA,CAAA,CAAA;;2FACnB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;AC9BlC;AAEA;AACO,MAAM,oCAAoC,GAAG;AAEpD;AACO,MAAM,gDAAgD,GAAG;AAEhE;;ACMA;AAEA,MAAM,UAAU,GAAG,CAAC,UAAkB,MAAyB;AAC7D,IAAA,IAAI,EAAE,kBAAkB,CAAC,OAAO,CAAC,UAAU;IAC3C,OAAO,EAAE,EAAE,UAAU,EAAE;AACxB,CAAA,CAAC;AAEF;AAEA;AAEA;AACO,MAAM,6BAA6B,GAGtC;AACF,IAAA,GAAG,EAAE,wBAAwB;AAC7B,IAAA,QAAQ,EAAE,CAAC;AACX,IAAA,OAAO,EAAE,CAAC,OAAO,MAAM;AACrB,QAAA,GAAG,OAAO;AACV,QAAA,MAAM,EAAE;YACN,GAAG,OAAO,CAAC,MAAM;AACjB,YAAA;AACE,gBAAA,EAAE,EAAE,SAAS;AACb,gBAAA,KAAK,EAAE,yCAAyC;AAChD,gBAAA,IAAI,EAAE,aAAa;AACnB,gBAAA,QAAQ,EAAE,EAAE;AACb,aAAA;AACD,YAAA;AACE,gBAAA,EAAE,EAAE,UAAU;AACd,gBAAA,KAAK,EAAE,0CAA0C;AACjD,gBAAA,IAAI,EAAE,sBAAsB;AAC5B,gBAAA,QAAQ,EAAE,EAAE;AACb,aAAA;AACD,YAAA;AACE,gBAAA,EAAE,EAAE,UAAU;AACd,gBAAA,KAAK,EAAE,0CAA0C;AACjD,gBAAA,IAAI,EAAE,cAAc;AACpB,gBAAA,QAAQ,EAAE,EAAE;AACb,aAAA;AACD,YAAA;AACE,gBAAA,EAAE,EAAE,UAAU;AACd,gBAAA,KAAK,EAAE,0CAA0C;AACjD,gBAAA,IAAI,EAAE,0BAA0B;AAChC,gBAAA,QAAQ,EAAE,EAAE;AACZ,gBAAA,OAAO,EAAE;AACP,oBAAA,IAAI,EAAE,WAAW;AACjB,oBAAA,YAAY,EAAE,oCAAoC;AACnD,iBAAA;AACF,aAAA;AACF,SAAA;KACF,CAAC;CACH;AAED;AAEA;AAEA;AACO,MAAM,+BAA+B,GAGxC;AACF,IAAA,GAAG,EAAE,0BAA0B;AAC/B,IAAA,QAAQ,EAAE,CAAC;AACX,IAAA,OAAO,EAAE,CAAC,OAAO,MAAM;AACrB,QAAA,GAAG,OAAO;AACV,QAAA,QAAQ,EAAE;YACR,GAAG,OAAO,CAAC,QAAQ;AACnB,YAAA;AACE,gBAAA,EAAE,EAAE,YAAY;AAChB,gBAAA,OAAO,EAAE,SAAS;AAClB,gBAAA,KAAK,EAAE,8CAA8C;AACrD,gBAAA,WAAW,EAAE,oDAAoD;AACjE,gBAAA,IAAI,EAAE,qBAAqB;AAC3B,gBAAA,QAAQ,EAAE,EAAE;AACZ,gBAAA,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE;AACtB,gBAAA,OAAO,EAAE;AACP,oBAAA;AACE,wBAAA,IAAI,EAAE,iBAAiB;AACvB,wBAAA,KAAK,EAAE,qDAAqD;AAC5D,wBAAA,IAAI,EAAE,YAAY;wBAClB,OAAO,EAAE,EAAE,IAAI,EAAE,kBAAkB,CAAC,OAAO,CAAC,eAAe,EAAE;AAC9D,qBAAA;AACF,iBAAA;AACF,aAAA;AACD,YAAA;AACE,gBAAA,EAAE,EAAE,eAAe;AACnB,gBAAA,OAAO,EAAE,SAAS;AAClB,gBAAA,KAAK,EAAE,iDAAiD;AACxD,gBAAA,WAAW,EAAE,uDAAuD;AACpE,gBAAA,IAAI,EAAE,eAAe;AACrB,gBAAA,QAAQ,EAAE,EAAE;AACZ,gBAAA,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE;AACtB,gBAAA,OAAO,EAAE;AACP,oBAAA;AACE,wBAAA,IAAI,EAAE,sBAAsB;AAC5B,wBAAA,KAAK,EAAE,0DAA0D;AACjE,wBAAA,IAAI,EAAE,YAAY;wBAClB,OAAO,EAAE,EAAE,IAAI,EAAE,kBAAkB,CAAC,OAAO,CAAC,WAAW,EAAE;AAC1D,qBAAA;AACF,iBAAA;AACF,aAAA;AACC,YAAA;AACE,gBAAA,EAAE,EAAE,iBAAiB;AACrB,gBAAA,OAAO,EAAE,UAAU;AACnB,gBAAA,KAAK,EAAE,mDAAmD;AAC1D,gBAAA,WAAW,EAAE,yDAAyD;AACtE,gBAAA,IAAI,EAAE,YAAY;AAClB,gBAAA,QAAQ,EAAE,EAAE;AACZ,gBAAA,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE;AACtB,gBAAA,OAAO,EAAE;AACP,oBAAA;AACE,wBAAA,IAAI,EAAE,iBAAiB;AACvB,wBAAA,KAAK,EAAE,4DAA4D;AACnE,wBAAA,IAAI,EAAE,YAAY;wBAClB,OAAO,EAAE,EAAE,IAAI,EAAE,kBAAkB,CAAC,QAAQ,CAAC,cAAc,EAAE;AAC9D,qBAAA;AACF,iBAAA;AACF,aAAA;AACD,YAAA;AACE,gBAAA,EAAE,EAAE,cAAc;AAClB,gBAAA,OAAO,EAAE,UAAU;AACnB,gBAAA,KAAK,EAAE,gDAAgD;AACvD,gBAAA,WAAW,EAAE,sDAAsD;AACnE,gBAAA,IAAI,EAAE,aAAa;AACnB,gBAAA,QAAQ,EAAE,EAAE;AACZ,gBAAA,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE;AACvB,aAAA;AACD,YAAA;AACE,gBAAA,EAAE,EAAE,iBAAiB;AACrB,gBAAA,OAAO,EAAE,UAAU;AACnB,gBAAA,KAAK,EAAE,mDAAmD;AAC1D,gBAAA,WAAW,EAAE,yDAAyD;AACtE,gBAAA,IAAI,EAAE,sBAAsB;AAC5B,gBAAA,QAAQ,EAAE,EAAE;AACZ,gBAAA,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE;AACtB,gBAAA,OAAO,EAAE;AACP,oBAAA;AACE,wBAAA,IAAI,EAAE,iBAAiB;AACvB,wBAAA,KAAK,EAAE,4DAA4D;AACnE,wBAAA,IAAI,EAAE,oBAAoB;wBAC1B,OAAO,EAAE,EAAE,IAAI,EAAE,kBAAkB,CAAC,OAAO,CAAC,YAAY,EAAE;AAC3D,qBAAA;AACF,iBAAA;AACF,aAAA;AACD,YAAA;AACE,gBAAA,EAAE,EAAE,YAAY;AAChB,gBAAA,OAAO,EAAE,UAAU;AACnB,gBAAA,KAAK,EAAE,8CAA8C;AACrD,gBAAA,WAAW,EAAE,oDAAoD;AACjE,gBAAA,IAAI,EAAE,uBAAuB;AAC7B,gBAAA,QAAQ,EAAE,EAAE;AACZ,gBAAA,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE;AACtB,gBAAA,OAAO,EAAE;AACP,oBAAA;AACE,wBAAA,IAAI,EAAE,mBAAmB;AACzB,wBAAA,KAAK,EAAE,uDAAuD;AAC9D,wBAAA,IAAI,EAAE,YAAY;AAClB,wBAAA,OAAO,EAAE,UAAU,CAAC,2DAA2D,CAAC;AACjF,qBAAA;AACF,iBAAA;AACF,aAAA;AACD,YAAA;AACE,gBAAA,EAAE,EAAE,eAAe;AACnB,gBAAA,OAAO,EAAE,UAAU;AACnB,gBAAA,KAAK,EAAE,iDAAiD;AACxD,gBAAA,WAAW,EAAE,uDAAuD;AACpE,gBAAA,IAAI,EAAE,yBAAyB;AAC/B,gBAAA,QAAQ,EAAE,EAAE;AACZ,gBAAA,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE;AACtB,gBAAA,OAAO,EAAE;AACP,oBAAA;AACE,wBAAA,IAAI,EAAE,oBAAoB;AAC1B,wBAAA,KAAK,EAAE,0DAA0D;AACjE,wBAAA,IAAI,EAAE,oBAAoB;wBAC1B,OAAO,EAAE,EAAE,IAAI,EAAE,kBAAkB,CAAC,QAAQ,CAAC,gBAAgB,EAAE;AAChE,qBAAA;AACF,iBAAA;AACF,aAAA;AACD,YAAA;AACE,gBAAA,EAAE,EAAE,gBAAgB;AACpB,gBAAA,OAAO,EAAE,SAAS;AAClB,gBAAA,QAAQ,EAAE,GAAG;AACb,gBAAA,OAAO,EAAE;AACP,oBAAA,IAAI,EAAE,WAAW;AACjB,oBAAA,YAAY,EAAE,gDAAgD;AAC/D,iBAAA;AACD,gBAAA,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;AACxB,aAAA;AACF,SAAA;KACJ,CAAC;CACH;AAED;;ACzMA;AAEA,MAAM,uBAAuB,GAAG,cAAc;AAE9C;AACO,MAAM,8BAA8B,GAGvC;AACF,IAAA,GAAG,EAAE,0BAA0B;AAC/B,IAAA,QAAQ,EAAE,EAAE;AACZ,IAAA,OAAO,EAAE,OAAO,OAAO,KAAI;AACzB,QAAA,MAAM,eAAe,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAClD,QAAA,MAAM,eAAe,CAAC,eAAe,EAAE;AAEvC,QAAA,MAAM,UAAU,GAAG,eAAe,CAAC,UAAU,EAAE;QAE/C,OAAO;AACL,YAAA,GAAG,OAAO;YACV,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,KAAI;AACzC,gBAAA,IAAI,OAAO,CAAC,EAAE,KAAK,uBAAuB,EAAE;AAC1C,oBAAA,OAAO,OAAO;gBAChB;gBAEA,OAAO;AACL,oBAAA,GAAG,OAAO;AACV,oBAAA,OAAO,EAAE;AACP,wBAAA;AACE,4BAAA,IAAI,EAAE,cAAc;AACpB,4BAAA,KAAK,EAAE;AACL,kCAAE;AACF,kCAAE,yDAAyD;AAC7D,4BAAA,IAAI,EAAE,YAAY;AAClB,4BAAA,OAAO,EAAE,IAAI;4BACb,OAAO,EAAE,EAAE,IAAI,EAAE,kBAAkB,CAAC,QAAQ,CAAC,UAAU,EAAE;AAC1D,yBAAA;AACD,wBAAA,IAAI;AACF,8BAAE;AACE,gCAAA;AACE,oCAAA,IAAI,EAAE,iBAAiB;AACvB,oCAAA,KAAK,EAAE,yDAAyD;AAChE,oCAAA,IAAI,EAAE,kBAAkB;AACxB,oCAAA,KAAK,EAAE,QAAiB;oCACxB,OAAO,EAAE,EAAE,IAAI,EAAE,kBAAkB,CAAC,QAAQ,CAAC,aAAa,EAAE;AAC7D,iCAAA;AACF;8BACD,EAAE,CAAC;AACR,qBAAA;iBACF;AACH,YAAA,CAAC,CAAC;SACH;IACH,CAAC;CACF;AAED;;ACzDA;AAEA,MAAM,kBAAkB,GAAG,mCAAmC;AAE9D;MAEa,oCAAoC,CAAA;AADjD,IAAA,WAAA,GAAA;;AAImB,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAuC5D,IAAA;;;AAjCC,IAAA,gBAAgB,CAAC,MAAe,EAAA;QAC9B,MAAM,EAAE,GAAG,MAAM,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE;AACjD,QAAA,IAAI,KAAK,CAAC,EAAE,CAAC,EAAE;AACb,YAAA,OAAO,SAAS;QAClB;AAEA,QAAA,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,GAAG,EAAE;AACR,YAAA,OAAO,SAAS;QAClB;AAEA,QAAA,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;AAC5B,QAAA,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,SAAS,GAAG,MAAM;IAC5D;AAEA,IAAA,YAAY,CAAC,MAAe,EAAE,SAAA,GAAkB,IAAI,IAAI,EAAE,EAAA;QACxD,MAAM,EAAE,GAAG,MAAM,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE;AACjD,QAAA,IAAI,KAAK,CAAC,EAAE,CAAC,EAAE;YACb;QACF;AAEA,QAAA,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,WAAW,EAAE,CAAC;IACzE;;;AAMQ,IAAA,eAAe,CAAC,MAAc,EAAA;AACpC,QAAA,OAAO,CAAA,EAAG,kBAAkB,CAAA,EAAG,MAAM,EAAE;IACzC;8GAvCW,oCAAoC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAApC,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oCAAoC,cADvB,MAAM,EAAA,CAAA,CAAA;;2FACnB,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBADhD,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACIlC;AAEA,MAAM,0BAA0B,GAAG,iBAAiB;AACpD,MAAM,0BAA0B,GAAG,iBAAiB;AACpD,MAAM,wBAAwB,GAAG,eAAe;AAEhD;AAEA;AAEA;MAEa,qCAAqC,CAAA;AADlD,IAAA,WAAA,GAAA;;AAImB,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC1C,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACxC,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,oBAAoB,CAAC;AAC/C,QAAA,IAAA,CAAA,6BAA6B,GAAG,MAAM,CAAC,oCAAoC,CAAC;AAyL9F,IAAA;;;AAnLC,IAAA,MAAM,eAAe,GAAA;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE;QAC3C,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,OAAO,EAAE;QACX;QAEA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;QAEpD,MAAM,mBAAmB,GAAmD,EAAE;QAE9E,MAAM,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC;AAC3D,QAAA,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;AAC9B,YAAA,mBAAmB,CAAC,0BAA0B,CAAC,GAAG,gBAAgB;QACpE;QAEA,MAAM,qBAAqB,GAAG,MAAM,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC;AAC7E,QAAA,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE;AACnC,YAAA,mBAAmB,CAAC,0BAA0B,CAAC,GAAG,qBAAqB;QACzE;QAEA,MAAM,oBAAoB,GAAG,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC;AACrE,QAAA,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE;AAClC,YAAA,mBAAmB,CAAC,wBAAwB,CAAC,GAAG,oBAAoB;QACtE;AAEA,QAAA,OAAO,mBAAmB;IAC5B;;;AAMQ,IAAA,qBAAqB,CAAC,MAAc,EAAA;QAC1C,MAAM,aAAa,GAAG,IAAI,CAAC,6BAA6B,CAAC,gBAAgB,CAAC,MAAM,CAAC;AACjF,QAAA,IAAI,KAAK,CAAC,aAAa,CAAC,EAAE;AACxB,YAAA,OAAO,EAAE;QACX;QAEA,OAAO;AACL,YAAA;AACE,gBAAA,EAAE,EAAE,sBAAsB;AAC1B,gBAAA,IAAI,EAAE,yBAAyB;AAC/B,gBAAA,IAAI,EAAE,aAAa;AACnB,gBAAA,UAAU,EAAE,mEAAmE;AAChF,aAAA;SACF;IACH;IAEQ,MAAM,0BAA0B,CACtC,QAA0D,EAAA;QAE1D,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC;AACtG,QAAA,MAAM,cAAc,GAClB,cAAc,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,eAAe,CAAC;AACzD,YAAA,OAAO,CACL,cAAc,EACd,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,EACzE,CAAC,MAAM,CAAC,CACT,CAAC,CAAC,CAAC;AAEN,QAAA,IAAI,KAAK,CAAC,cAAc,CAAC,EAAE;AACzB,YAAA,OAAO,EAAE;QACX;QAEA,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC;AAC/D,QAAA,IAAI,OAAO,CAAC,aAAa,CAAC,EAAE;AAC1B,YAAA,OAAO,EAAE;QACX;QAEA,MAAM,gBAAgB,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,EAAE,KAAK,cAAc,CAAC,EAAE,CAAC,CAAC,MAAM;AACpG,QAAA,MAAM,QAAQ,GAAmC;AAC/C,YAAA;AACE,gBAAA,EAAE,EAAE,iBAAiB;AACrB,gBAAA,IAAI,EAAE,0BAA0B;AAChC,gBAAA,IAAI,EAAE,aAAa;AACpB,aAAA;SACF;AAED,QAAA,IAAI,gBAAgB,GAAG,CAAC,EAAE;YACxB,QAAQ,CAAC,IAAI,CAAC;AACZ,gBAAA,EAAE,EAAE,gBAAgB;AACpB,gBAAA,IAAI,EAAE,iCAAiC;AACvC,gBAAA,IAAI,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAC9C,0EAA0E,EAC1E,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE,CACxC;AACF,aAAA,CAAC;QACJ;AAEA,QAAA,OAAO,QAAQ;IACjB;AAEQ,IAAA,yBAAyB,CAC/B,QAA0D,EAAA;AAE1D,QAAA,MAAM,aAAa,GAAG,OAAO,CAC3B,QAAQ,EACR,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,EACzE,CAAC,MAAM,CAAC,CACT,CAAC,CAAC,CAAC;AAEJ,QAAA,IAAI,KAAK,CAAC,aAAa,CAAC,EAAE;AACxB,YAAA,OAAO,EAAE;QACX;QAEA,MAAM,QAAQ,GAAmC,EAAE;QACnD,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,aAAa,CAAC;QAEtE,IAAI,aAAa,EAAE;YACjB,QAAQ,CAAC,IAAI,CAAC;AACZ,gBAAA,EAAE,EAAE,YAAY;AAChB,gBAAA,IAAI,EAAE,qCAAqC;AAC3C,gBAAA,IAAI,EAAE,aAAa;AACnB,gBAAA,UAAU,EAAE,iEAAiE;AAC9E,aAAA,CAAC;QACJ;QAEA,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC;AACxD,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YACtB,QAAQ,CAAC,IAAI,CAAC;AACZ,gBAAA,EAAE,EAAE,qBAAqB;AACzB,gBAAA,IAAI,EAAE,gCAAgC;AACtC,gBAAA,IAAI,EAAE,QAAQ;AACf,aAAA,CAAC;QACJ;AAEA,QAAA,OAAO,QAAQ;IACjB;;;IAMQ,MAAM,gBAAgB,CAAC,MAAc,EAAA;AAC3C,QAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC;AACzB,aAAA,UAAU,CACTF,UAA4B,CAAC,MAAM,CAAC,IAAI,EACxCA,UAA4B,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI;AAE1D,aAAA,IAAI;aACJ,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAEjC,OAAO,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC;IACxE;;;AAMQ,IAAA,cAAc,CAAC,KAAc,EAAA;AACnC,QAAA,IAAI,KAAK,YAAY,IAAI,EAAE;AACzB,YAAA,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,SAAS,GAAG,KAAK;QAC1D;QAEA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC1D,YAAA,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;AAC9B,YAAA,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,SAAS,GAAG,MAAM;QAC5D;AAEA,QAAA,OAAO,SAAS;IAClB;AAEQ,IAAA,oBAAoB,CAAC,OAAuD,EAAA;AAClF,QAAA,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ;AACjE,aAAA,GAAG,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE;aACxC,MAAM,CAAC,OAAO,CAAC;AAElB,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;IAC1B;AAEQ,IAAA,mBAAmB,CAAC,OAAuD,EAAA;QACjF,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,SAAS;AAC/C,aAAA,GAAG,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE;aACxC,MAAM,CAAC,OAAO,CAAC;AAElB,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;IAC1B;8GA5LW,qCAAqC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAArC,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qCAAqC,cADxB,MAAM,EAAA,CAAA,CAAA;;2FACnB,qCAAqC,EAAA,UAAA,EAAA,CAAA;kBADjD,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACjBlC;AAEA;AACO,MAAM,oCAAoC,GAG7C;AACF,IAAA,GAAG,EAAE,0BAA0B;AAC/B,IAAA,QAAQ,EAAE,EAAE;AACZ,IAAA,OAAO,EAAE,OAAO,OAAO,KAAI;AACzB,QAAA,MAAM,eAAe,GAAG,MAAM,CAAC,qCAAqC,CAAC;AACrE,QAAA,MAAM,mBAAmB,GAAG,MAAM,eAAe,CAAC,eAAe,EAAE;QAEnE,OAAO;AACL,YAAA,GAAG,OAAO;YACV,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,KAAI;gBACzC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC;AAChD,gBAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;AACrB,oBAAA,OAAO,OAAO;gBAChB;gBAEA,OAAO;AACL,oBAAA,GAAG,OAAO;oBACV,QAAQ;iBACT;AACH,YAAA,CAAC,CAAC;SACH;IACH,CAAC;CACF;AAED;;AC9BA;AAEA;AACO,MAAM,iCAAiC,GAG1C;AACF,IAAA,GAAG,EAAE,4BAA4B;AACjC,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,OAAO,EAAE,CAAC,OAAO,MAAM;AACrB,QAAA,GAAG,OAAO;AACV,QAAA,KAAK,EAAE;YACL,GAAG,OAAO,CAAC,KAAK;AAChB,YAAA;AACE,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,KAAK,EAAE,sBAAsB;AAC7B,gBAAA,IAAI,EAAE,sCAAsC;AAC5C,gBAAA,KAAK,EAAE,QAAQ;gBACf,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC;gBAClE,OAAO,EAAE,EAAE,IAAI,EAAE,kBAAkB,CAAC,OAAO,CAAC,OAAO,EAAE;AAC1B,aAAA;AAC9B,SAAA;KACF,CAAC;CACH;AAED;;AC3BA;AAEA;AACO,MAAM,oCAAoC,GAG7C;AACF,IAAA,GAAG,EAAE,4BAA4B;IACjC,QAAQ,EAAE,CAAC,EAAE;AACb,IAAA,OAAO,EAAE,CAAC,OAAO,KAAI;AACnB,QAAA,MAAM,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAChD,QAAA,MAAM,OAAO,GAAG,cAAc,CAAC,WAAW,EAAE,IAAI;QAEhD,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,OAAO,OAAO;QAChB;QAEA,OAAO;AACL,YAAA,GAAG,OAAO;AACV,YAAA,KAAK,EAAE;gBACL,GAAG,OAAO,CAAC,KAAK;AAChB,gBAAA;AACE,oBAAA,IAAI,EAAE,YAAY;AAClB,oBAAA,KAAK,EAAE,4CAA4C;AACnD,oBAAA,IAAI,EAAE,kBAAkB;oBACxB,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC;AAClE,oBAAA,OAAO,EAAE;AACP,wBAAA,IAAI,EAAE,UAAU;AAChB,wBAAA,OAAO,EAAE;4BACP,IAAI,EAAE,CAAA,CAAA,EAAI,OAAO,CAAA,gBAAA,CAAkB;AACpC,yBAAA;AACF,qBAAA;AAC0B,iBAAA;AAC9B,aAAA;SACF;IACH,CAAC;CACF;AAED;;ACjCA;AAEA;AACO,MAAM,+BAA+B,GAGxC;AACF,IAAA,GAAG,EAAE,4BAA4B;AACjC,IAAA,QAAQ,EAAE,EAAE;AACZ,IAAA,OAAO,EAAE,OAAO,OAAO,KAAI;AACzB,QAAA,MAAM,eAAe,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAClD,QAAA,MAAM,eAAe,CAAC,gBAAgB,EAAE;AAExC,QAAA,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,EAAE;AAC9B,YAAA,OAAO,OAAO;QAChB;QAEA,OAAO;AACL,YAAA,GAAG,OAAO;AACV,YAAA,KAAK,EAAE;gBACL,GAAG,OAAO,CAAC,KAAK;AAChB,gBAAA;AACE,oBAAA,IAAI,EAAE,aAAa;AACnB,oBAAA,KAAK,EAAE,oBAAoB;AAC3B,oBAAA,IAAI,EAAE,kBAAkB;AACxB,oBAAA,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;oBACvB,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC;oBAChE,OAAO,EAAE,EAAE,IAAI,EAAE,kBAAkB,CAAC,OAAO,CAAC,UAAU,EAAE;AACxB,iBAAA;AACnC,aAAA;SACF;IACH,CAAC;CACF;AAED;;AClBA,SAAS,oBAAoB,GAAA;IAC3B,OAAO;AACL,QAAA;AACE,YAAA,IAAI,EAAE,cAAc;AACpB,YAAA,WAAW,EAAE,CAAC,GAAG,0BAA0B,CAAC;YAC5C,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE;AACrC,YAAA,aAAa,EAAE,MAAM,sBAAsB;AAC3C,YAAA,QAAQ,EAAE;AACR,gBAAA;AACE,oBAAA,IAAI,EAAE,EAAE;AACR,oBAAA,UAAU,EAAE,SAAS;AACrB,oBAAA,SAAS,EAAE,MAAM;AAClB,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,UAAU;AAChB,oBAAA,aAAa,EAAE,MACb,OAAO,2DAAqD,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,2BAA2B,CAAC;AAC1G,oBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;AACtB,iBAAA;AACF,aAAA;AACF,SAAA;KACF;AACH;MAqIa,aAAa,CAAA;AACxB,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,kBAAkB,CAAC;IAC5B;8GAHW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAb,aAAa,EAAA,OAAA,EAAA,CAjItB,YAAY,EAAAE,IAAA,CAAA,eAAA,EAAAC,IAAA,CAAA,YAAA,EAGZ,gBAAgB;YAChB,4BAA4B,CAAA,EAAA,CAAA,CAAA;AA6HnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,EAAA,SAAA,EA3Hb;YACT,qBAAqB,CAAC,MAAK;AACzB,gBAAA,MAAM,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAChD,gBAAA,MAAM,eAAe,GAAG,MAAM,CAAC,kBAAkB,CAAC;gBAElD,OAAO,CAAC,YAAW;oBACjB,MAAM,cAAc,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAEnF,oBAAA,IAAI,cAAc,CAAC,QAAQ,EAAE,EAAE;AAC7B,wBAAA,MAAM,eAAe,CAAC,2BAA2B,EAAE;oBACrD;gBACF,CAAC,GAAG;AACN,YAAA,CAAC,CAAC;YACF,mBAAmB;YACnB,mBAAmB,CACjB,iBAAiB,EACjB,MAAM,OAAO,kDAAiB,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,uCAAuC,CAAC,CACrF;YACD,mBAAmB,CACjB,+BAA+B,EAC/B,MAAM,OAAO,sDAAqB,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,kBAAkB,CAAC,CACpE;YACD,mBAAmB,CAAC,2BAA2B,EAAE,MAC/C,OAAO,oEAA8D,CAAC,CAAC,IAAI,CACzE,CAAC,MAAM,KAAK,MAAM,CAAC,+BAA+B,CACnD,CACF;YACD,mBAAmB,CACjB,kCAAkC,EAClC,MAAM,mEAA+B,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,yBAAyB,CAAC,CAC/E;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,MAAM;AACf,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,UAAU,EAAE,oBAAoB;AACjC,aAAA;AACD,YAAA,oBAAoB,CAAC;AACnB,gBAAA;AACE,oBAAA,GAAG,EAAE,kBAAkB,CAAC,OAAO,CAAC,IAAI;AACpC,oBAAA,OAAO,EAAE,MAAM,OAAO,yDAAiC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,qBAAqB,CAAC;AAC9F,iBAAA;AACD,gBAAA;AACE,oBAAA,GAAG,EAAE,kBAAkB,CAAC,OAAO,CAAC,OAAO;AACvC,oBAAA,OAAO,EAAE,MAAM,OAAO,oDAA4B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC;AACrF,iBAAA;AACD,gBAAA;AACE,oBAAA,GAAG,EAAE,kBAAkB,CAAC,OAAO,CAAC,YAAY;AAC5C,oBAAA,OAAO,EAAE,MAAM,OAAO,0DAAkC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,sBAAsB,CAAC;AAChG,iBAAA;AACD,gBAAA;AACE,oBAAA,GAAG,EAAE,kBAAkB,CAAC,OAAO,CAAC,UAAU;AAC1C,oBAAA,OAAO,EAAE,MAAM,OAAO,wDAAgC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC;AAC5F,iBAAA;AACD,gBAAA;AACE,oBAAA,GAAG,EAAE,kBAAkB,CAAC,OAAO,CAAC,WAAW;AAC3C,oBAAA,OAAO,EAAE,MAAM,OAAO,yDAAiC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,qBAAqB,CAAC;AAC9F,iBAAA;AACD,gBAAA;AACE,oBAAA,GAAG,EAAE,kBAAkB,CAAC,OAAO,CAAC,eAAe;AAC/C,oBAAA,OAAO,EAAE,MAAM,OAAO,8DAAsC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,yBAAyB,CAAC;AACvG,iBAAA;AACD,gBAAA;AACE,oBAAA,GAAG,EAAE,kBAAkB,CAAC,QAAQ,CAAC,cAAc;AAC/C,oBAAA,OAAO,EAAE,MAAM,OAAO,4DAAoC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,wBAAwB,CAAC;AACpG,iBAAA;AACD,gBAAA;AACE,oBAAA,GAAG,EAAE,kBAAkB,CAAC,QAAQ,CAAC,UAAU;AAC3C,oBAAA,OAAO,EAAE,MAAM,OAAO,yDAAiC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC;AAC7F,iBAAA;AACD,gBAAA;AACE,oBAAA,GAAG,EAAE,kBAAkB,CAAC,QAAQ,CAAC,aAAa;AAC9C,oBAAA,OAAO,EAAE,MAAM,OAAO,4DAAoC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,uBAAuB,CAAC;AACnG,iBAAA;AACD,gBAAA;AACE,oBAAA,GAAG,EAAE,kBAAkB,CAAC,QAAQ,CAAC,gBAAgB;AACjD,oBAAA,OAAO,EAAE,MAAM,OAAO,+DAAuC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,0BAA0B,CAAC;AACzG,iBAAA;AACD,gBAAA;AACE,oBAAA,GAAG,EAAE,kBAAkB,CAAC,QAAQ,CAAC,aAAa;AAC9C,oBAAA,OAAO,EAAE,MAAM,OAAO,2DAAmC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,uBAAuB,CAAC;AAClG,iBAAA;AACD,gBAAA;AACE,oBAAA,GAAG,EAAE,kBAAkB,CAAC,OAAO,CAAC,UAAU;AAC1C,oBAAA,OAAO,EAAE,MAAM,OAAO,gEAAwC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,2BAA2B,CAAC;AAC3G,iBAAA;aACF,CAAC;AACF,YAAA;AACE,gBAAA,OAAO,EAAE,uCAAuC;AAChD,gBAAA,QAAQ,EAAE,iCAAiC;AAC3C,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,uCAAuC;AAChD,gBAAA,QAAQ,EAAE,oCAAoC;AAC9C,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,uCAAuC;AAChD,gBAAA,QAAQ,EAAE,+BAA+B;AACzC,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,uCAAuC;AAChD,gBAAA,QAAQ,EAAE,6BAA6B;AACvC,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,uCAAuC;AAChD,gBAAA,QAAQ,EAAE,+BAA+B;AACzC,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,uCAAuC;AAChD,gBAAA,QAAQ,EAAE,8BAA8B;AACxC,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,uCAAuC;AAChD,gBAAA,QAAQ,EAAE,oCAAoC;AAC9C,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,OAAA,EAAA,CA/HC,YAAY;YACZ,eAAe,CAAC,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC,mBAAmB,CAAC,EAAE,CAAC;AAClE,YAAA,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC7B,gBAAgB;YAChB,4BAA4B,CAAA,EAAA,CAAA,CAAA;;2FA6HnB,aAAa,EAAA,UAAA,EAAA,CAAA;kBAnIzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,eAAe,CAAC,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC,mBAAmB,CAAC,EAAE,CAAC;AAClE,wBAAA,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC;wBAC7B,gBAAgB;wBAChB,4BAA4B;AAC7B,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACT,qBAAqB,CAAC,MAAK;AACzB,4BAAA,MAAM,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAChD,4BAAA,MAAM,eAAe,GAAG,MAAM,CAAC,kBAAkB,CAAC;4BAElD,OAAO,CAAC,YAAW;gCACjB,MAAM,cAAc,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAEnF,gCAAA,IAAI,cAAc,CAAC,QAAQ,EAAE,EAAE;AAC7B,oCAAA,MAAM,eAAe,CAAC,2BAA2B,EAAE;gCACrD;4BACF,CAAC,GAAG;AACN,wBAAA,CAAC,CAAC;wBACF,mBAAmB;wBACnB,mBAAmB,CACjB,iBAAiB,EACjB,MAAM,OAAO,kDAAiB,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,uCAAuC,CAAC,CACrF;wBACD,mBAAmB,CACjB,+BAA+B,EAC/B,MAAM,OAAO,sDAAqB,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,kBAAkB,CAAC,CACpE;wBACD,mBAAmB,CAAC,2BAA2B,EAAE,MAC/C,OAAO,oEAA8D,CAAC,CAAC,IAAI,CACzE,CAAC,MAAM,KAAK,MAAM,CAAC,+BAA+B,CACnD,CACF;wBACD,mBAAmB,CACjB,kCAAkC,EAClC,MAAM,mEAA+B,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,yBAAyB,CAAC,CAC/E;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,MAAM;AACf,4BAAA,KAAK,EAAE,IAAI;AACX,4BAAA,UAAU,EAAE,oBAAoB;AACjC,yBAAA;AACD,wBAAA,oBAAoB,CAAC;AACnB,4BAAA;AACE,gCAAA,GAAG,EAAE,kBAAkB,CAAC,OAAO,CAAC,IAAI;AACpC,gCAAA,OAAO,EAAE,MAAM,OAAO,yDAAiC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,qBAAqB,CAAC;AAC9F,6BAAA;AACD,4BAAA;AACE,gCAAA,GAAG,EAAE,kBAAkB,CAAC,OAAO,CAAC,OAAO;AACvC,gCAAA,OAAO,EAAE,MAAM,OAAO,oDAA4B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC;AACrF,6BAAA;AACD,4BAAA;AACE,gCAAA,GAAG,EAAE,kBAAkB,CAAC,OAAO,CAAC,YAAY;AAC5C,gCAAA,OAAO,EAAE,MAAM,OAAO,0DAAkC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,sBAAsB,CAAC;AAChG,6BAAA;AACD,4BAAA;AACE,gCAAA,GAAG,EAAE,kBAAkB,CAAC,OAAO,CAAC,UAAU;AAC1C,gCAAA,OAAO,EAAE,MAAM,OAAO,wDAAgC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC;AAC5F,6BAAA;AACD,4BAAA;AACE,gCAAA,GAAG,EAAE,kBAAkB,CAAC,OAAO,CAAC,WAAW;AAC3C,gCAAA,OAAO,EAAE,MAAM,OAAO,yDAAiC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,qBAAqB,CAAC;AAC9F,6BAAA;AACD,4BAAA;AACE,gCAAA,GAAG,EAAE,kBAAkB,CAAC,OAAO,CAAC,eAAe;AAC/C,gCAAA,OAAO,EAAE,MAAM,OAAO,8DAAsC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,yBAAyB,CAAC;AACvG,6BAAA;AACD,4BAAA;AACE,gCAAA,GAAG,EAAE,kBAAkB,CAAC,QAAQ,CAAC,cAAc;AAC/C,gCAAA,OAAO,EAAE,MAAM,OAAO,4DAAoC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,wBAAwB,CAAC;AACpG,6BAAA;AACD,4BAAA;AACE,gCAAA,GAAG,EAAE,kBAAkB,CAAC,QAAQ,CAAC,UAAU;AAC3C,gCAAA,OAAO,EAAE,MAAM,OAAO,yDAAiC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC;AAC7F,6BAAA;AACD,4BAAA;AACE,gCAAA,GAAG,EAAE,kBAAkB,CAAC,QAAQ,CAAC,aAAa;AAC9C,gCAAA,OAAO,EAAE,MAAM,OAAO,4DAAoC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,uBAAuB,CAAC;AACnG,6BAAA;AACD,4BAAA;AACE,gCAAA,GAAG,EAAE,kBAAkB,CAAC,QAAQ,CAAC,gBAAgB;AACjD,gCAAA,OAAO,EAAE,MAAM,OAAO,+DAAuC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,0BAA0B,CAAC;AACzG,6BAAA;AACD,4BAAA;AACE,gCAAA,GAAG,EAAE,kBAAkB,CAAC,QAAQ,CAAC,aAAa;AAC9C,gCAAA,OAAO,EAAE,MAAM,OAAO,2DAAmC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,uBAAuB,CAAC;AAClG,6BAAA;AACD,4BAAA;AACE,gCAAA,GAAG,EAAE,kBAAkB,CAAC,OAAO,CAAC,UAAU;AAC1C,gCAAA,OAAO,EAAE,MAAM,OAAO,gEAAwC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,2BAA2B,CAAC;AAC3G,6BAAA;yBACF,CAAC;AACF,wBAAA;AACE,4BAAA,OAAO,EAAE,uCAAuC;AAChD,4BAAA,QAAQ,EAAE,iCAAiC;AAC3C,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,uCAAuC;AAChD,4BAAA,QAAQ,EAAE,oCAAoC;AAC9C,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,uCAAuC;AAChD,4BAAA,QAAQ,EAAE,+BAA+B;AACzC,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,uCAAuC;AAChD,4BAAA,QAAQ,EAAE,6BAA6B;AACvC,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,uCAAuC;AAChD,4BAAA,QAAQ,EAAE,+BAA+B;AACzC,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,uCAAuC;AAChD,4BAAA,QAAQ,EAAE,8BAA8B;AACxC,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,uCAAuC;AAChD,4BAAA,QAAQ,EAAE,oCAAoC;AAC9C,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA;AACF,iBAAA;;;AC/JD;AAEA;AAEA;MAEa,sBAAsB,CAAA;AADnC,IAAA,WAAA,GAAA;;AAImB,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC1C,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAwC1D,IAAA;;;AAlCC,IAAA,MAAM,UAAU,GAAA;QACd,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE;QAC3C,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,OAAO,EAAE;QACX;AAEA,QAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC;AACzB,aAAA,UAAU,CACTH,UAA4B,CAAC,MAAM,CAAC,IAAI,EACxCA,UAA4B,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI;AAE1D,aAAA,IAAI;aACJ,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAEjC,QAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,IAAI,EAAE;QAElC,OAAO,OAAO,CACZ;aACG,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,KAAK,MAAM;AACvC,aAAA,GAAG,CAAC,CAAC,IAAI,MAAM;YACd,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,MAAM,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,eAAe,IAAI,GAAG;AACtD,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,GAAG;AAC9B,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,GAAG;AAChC,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,GAAG;YAC5B,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC,CAAC,WAAW,EAAE;YACtD,aAAa,EAAE,IAAI,CAAC,aAAa;SAClC,CAAC,CAAC,EACL,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE,CAAC,EACpD,CAAC,MAAM,CAAC,CACT;IACH;8GAzCW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,cADT,MAAM,EAAA,CAAA,CAAA;;2FACnB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;AC1BlC;;AAEG;;;;"}
|