@gen3/frontend 0.10.44
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/dist/cjs/index.js +13572 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/styles.css +7 -0
- package/dist/cjs/styles.css.map +1 -0
- package/dist/dts/api/auth/credentialsLogin.d.ts +10 -0
- package/dist/dts/api/auth/credentialsLogin.d.ts.map +1 -0
- package/dist/dts/api/auth/credentialsLogin.js +104 -0
- package/dist/dts/api/auth/credentialsLogin.js.map +1 -0
- package/dist/dts/api/auth/credentialsLogout.d.ts +3 -0
- package/dist/dts/api/auth/credentialsLogout.d.ts.map +1 -0
- package/dist/dts/api/auth/credentialsLogout.js +53 -0
- package/dist/dts/api/auth/credentialsLogout.js.map +1 -0
- package/dist/dts/api/auth/sessionLogout.d.ts +3 -0
- package/dist/dts/api/auth/sessionLogout.d.ts.map +1 -0
- package/dist/dts/api/auth/sessionLogout.js +89 -0
- package/dist/dts/api/auth/sessionLogout.js.map +1 -0
- package/dist/dts/api/auth/sessionToken.d.ts +13 -0
- package/dist/dts/api/auth/sessionToken.d.ts.map +1 -0
- package/dist/dts/api/auth/sessionToken.js +69 -0
- package/dist/dts/api/auth/sessionToken.js.map +1 -0
- package/dist/dts/components/Buttons/ActionButton.d.ts +4 -0
- package/dist/dts/components/Buttons/ActionButton.d.ts.map +1 -0
- package/dist/dts/components/Buttons/ActionButton.js +9 -0
- package/dist/dts/components/Buttons/ActionButton.js.map +1 -0
- package/dist/dts/components/Buttons/DownloadButtons/DownloadButton.d.ts +76 -0
- package/dist/dts/components/Buttons/DownloadButtons/DownloadButton.d.ts.map +1 -0
- package/dist/dts/components/Buttons/DownloadButtons/DownloadButton.js +82 -0
- package/dist/dts/components/Buttons/DownloadButtons/DownloadButton.js.map +1 -0
- package/dist/dts/components/Buttons/DownloadButtons/index.d.ts +2 -0
- package/dist/dts/components/Buttons/DownloadButtons/index.d.ts.map +1 -0
- package/dist/dts/components/Buttons/DownloadButtons/index.js +2 -0
- package/dist/dts/components/Buttons/DownloadButtons/index.js.map +1 -0
- package/dist/dts/components/Buttons/DropdownButtons/DropdownButton.d.ts +4 -0
- package/dist/dts/components/Buttons/DropdownButtons/DropdownButton.d.ts.map +1 -0
- package/dist/dts/components/Buttons/DropdownButtons/DropdownButton.js +11 -0
- package/dist/dts/components/Buttons/DropdownButtons/DropdownButton.js.map +1 -0
- package/dist/dts/components/Buttons/DropdownButtons/index.d.ts +4 -0
- package/dist/dts/components/Buttons/DropdownButtons/index.d.ts.map +1 -0
- package/dist/dts/components/Buttons/DropdownButtons/index.js +3 -0
- package/dist/dts/components/Buttons/DropdownButtons/index.js.map +1 -0
- package/dist/dts/components/Buttons/DropdownButtons/types.d.ts +17 -0
- package/dist/dts/components/Buttons/DropdownButtons/types.d.ts.map +1 -0
- package/dist/dts/components/Buttons/DropdownButtons/types.js +2 -0
- package/dist/dts/components/Buttons/DropdownButtons/types.js.map +1 -0
- package/dist/dts/components/Buttons/Gen3Button.d.ts +7 -0
- package/dist/dts/components/Buttons/Gen3Button.d.ts.map +1 -0
- package/dist/dts/components/Buttons/Gen3Button.js +9 -0
- package/dist/dts/components/Buttons/Gen3Button.js.map +1 -0
- package/dist/dts/components/CollapsableSidebar/CollapsableSidebar.d.ts +22 -0
- package/dist/dts/components/CollapsableSidebar/CollapsableSidebar.d.ts.map +1 -0
- package/dist/dts/components/CollapsableSidebar/CollapsableSidebar.js +54 -0
- package/dist/dts/components/CollapsableSidebar/CollapsableSidebar.js.map +1 -0
- package/dist/dts/components/CollapsableSidebar/index.d.ts +3 -0
- package/dist/dts/components/CollapsableSidebar/index.d.ts.map +1 -0
- package/dist/dts/components/CollapsableSidebar/index.js +2 -0
- package/dist/dts/components/CollapsableSidebar/index.js.map +1 -0
- package/dist/dts/components/CollapsableSidebar/use-collapsable-sidebar.d.ts +22 -0
- package/dist/dts/components/CollapsableSidebar/use-collapsable-sidebar.d.ts.map +1 -0
- package/dist/dts/components/CollapsableSidebar/use-collapsable-sidebar.js +111 -0
- package/dist/dts/components/CollapsableSidebar/use-collapsable-sidebar.js.map +1 -0
- package/dist/dts/components/Content/ContactWithEmailContent.d.ts +8 -0
- package/dist/dts/components/Content/ContactWithEmailContent.d.ts.map +1 -0
- package/dist/dts/components/Content/ContactWithEmailContent.js +9 -0
- package/dist/dts/components/Content/ContactWithEmailContent.js.map +1 -0
- package/dist/dts/components/Content/LandingPageContent.d.ts +55 -0
- package/dist/dts/components/Content/LandingPageContent.d.ts.map +1 -0
- package/dist/dts/components/Content/LandingPageContent.js +65 -0
- package/dist/dts/components/Content/LandingPageContent.js.map +1 -0
- package/dist/dts/components/Content/ResearchPageContent.d.ts +10 -0
- package/dist/dts/components/Content/ResearchPageContent.d.ts.map +1 -0
- package/dist/dts/components/Content/ResearchPageContent.js +13 -0
- package/dist/dts/components/Content/ResearchPageContent.js.map +1 -0
- package/dist/dts/components/Content/ResourcePageContent.d.ts +14 -0
- package/dist/dts/components/Content/ResourcePageContent.d.ts.map +1 -0
- package/dist/dts/components/Content/ResourcePageContent.js +15 -0
- package/dist/dts/components/Content/ResourcePageContent.js.map +1 -0
- package/dist/dts/components/Content/TextContent.d.ts +15 -0
- package/dist/dts/components/Content/TextContent.d.ts.map +1 -0
- package/dist/dts/components/Content/TextContent.js +73 -0
- package/dist/dts/components/Content/TextContent.js.map +1 -0
- package/dist/dts/components/DataItems/TruncatedStringWithTooltip.d.ts +3 -0
- package/dist/dts/components/DataItems/TruncatedStringWithTooltip.d.ts.map +1 -0
- package/dist/dts/components/DataItems/TruncatedStringWithTooltip.js +35 -0
- package/dist/dts/components/DataItems/TruncatedStringWithTooltip.js.map +1 -0
- package/dist/dts/components/DataItems/types.d.ts +14 -0
- package/dist/dts/components/DataItems/types.d.ts.map +1 -0
- package/dist/dts/components/DataItems/types.js +2 -0
- package/dist/dts/components/DataItems/types.js.map +1 -0
- package/dist/dts/components/Details/DefaultDetailsPanel.d.ts +4 -0
- package/dist/dts/components/Details/DefaultDetailsPanel.d.ts.map +1 -0
- package/dist/dts/components/Details/DefaultDetailsPanel.js +8 -0
- package/dist/dts/components/Details/DefaultDetailsPanel.js.map +1 -0
- package/dist/dts/components/Details/DetailsDrawer.d.ts +4 -0
- package/dist/dts/components/Details/DetailsDrawer.d.ts.map +1 -0
- package/dist/dts/components/Details/DetailsDrawer.js +29 -0
- package/dist/dts/components/Details/DetailsDrawer.js.map +1 -0
- package/dist/dts/components/Details/DetailsFactory.d.ts +5 -0
- package/dist/dts/components/Details/DetailsFactory.d.ts.map +1 -0
- package/dist/dts/components/Details/DetailsFactory.js +17 -0
- package/dist/dts/components/Details/DetailsFactory.js.map +1 -0
- package/dist/dts/components/Details/DetailsModal.d.ts +4 -0
- package/dist/dts/components/Details/DetailsModal.d.ts.map +1 -0
- package/dist/dts/components/Details/DetailsModal.js +39 -0
- package/dist/dts/components/Details/DetailsModal.js.map +1 -0
- package/dist/dts/components/Details/index.d.ts +5 -0
- package/dist/dts/components/Details/index.d.ts.map +1 -0
- package/dist/dts/components/Details/index.js +6 -0
- package/dist/dts/components/Details/index.js.map +1 -0
- package/dist/dts/components/Details/types.d.ts +22 -0
- package/dist/dts/components/Details/types.d.ts.map +1 -0
- package/dist/dts/components/Details/types.js +2 -0
- package/dist/dts/components/Details/types.js.map +1 -0
- package/dist/dts/components/DropdownWithIcon/DropdownWithIcon.d.ts +68 -0
- package/dist/dts/components/DropdownWithIcon/DropdownWithIcon.d.ts.map +1 -0
- package/dist/dts/components/DropdownWithIcon/DropdownWithIcon.js +30 -0
- package/dist/dts/components/DropdownWithIcon/DropdownWithIcon.js.map +1 -0
- package/dist/dts/components/DropdownWithIcon/DropdownWithIcon.unit.test.d.ts +2 -0
- package/dist/dts/components/DropdownWithIcon/DropdownWithIcon.unit.test.d.ts.map +1 -0
- package/dist/dts/components/DropdownWithIcon/DropdownWithIcon.unit.test.js +128 -0
- package/dist/dts/components/DropdownWithIcon/DropdownWithIcon.unit.test.js.map +1 -0
- package/dist/dts/components/ErrorCard.d.ts +8 -0
- package/dist/dts/components/ErrorCard.d.ts.map +1 -0
- package/dist/dts/components/ErrorCard.js +17 -0
- package/dist/dts/components/ErrorCard.js.map +1 -0
- package/dist/dts/components/FilterPanel.d.ts +1 -0
- package/dist/dts/components/FilterPanel.d.ts.map +1 -0
- package/dist/dts/components/FilterPanel.js +2 -0
- package/dist/dts/components/FilterPanel.js.map +1 -0
- package/dist/dts/components/Layout/CardGrid.d.ts +16 -0
- package/dist/dts/components/Layout/CardGrid.d.ts.map +1 -0
- package/dist/dts/components/Layout/CardGrid.js +16 -0
- package/dist/dts/components/Layout/CardGrid.js.map +1 -0
- package/dist/dts/components/Layout/TexturedSidePanel.d.ts +6 -0
- package/dist/dts/components/Layout/TexturedSidePanel.d.ts.map +1 -0
- package/dist/dts/components/Layout/TexturedSidePanel.js +7 -0
- package/dist/dts/components/Layout/TexturedSidePanel.js.map +1 -0
- package/dist/dts/components/Layout/index.d.ts +2 -0
- package/dist/dts/components/Layout/index.d.ts.map +1 -0
- package/dist/dts/components/Layout/index.js +2 -0
- package/dist/dts/components/Layout/index.js.map +1 -0
- package/dist/dts/components/Login/CredentialsLogin.d.ts +6 -0
- package/dist/dts/components/Login/CredentialsLogin.d.ts.map +1 -0
- package/dist/dts/components/Login/CredentialsLogin.js +125 -0
- package/dist/dts/components/Login/CredentialsLogin.js.map +1 -0
- package/dist/dts/components/Login/LoginAccountButton.d.ts +3 -0
- package/dist/dts/components/Login/LoginAccountButton.d.ts.map +1 -0
- package/dist/dts/components/Login/LoginAccountButton.js +65 -0
- package/dist/dts/components/Login/LoginAccountButton.js.map +1 -0
- package/dist/dts/components/Login/LoginButton.d.ts +12 -0
- package/dist/dts/components/Login/LoginButton.d.ts.map +1 -0
- package/dist/dts/components/Login/LoginButton.js +82 -0
- package/dist/dts/components/Login/LoginButton.js.map +1 -0
- package/dist/dts/components/Login/LoginPanel.d.ts +4 -0
- package/dist/dts/components/Login/LoginPanel.d.ts.map +1 -0
- package/dist/dts/components/Login/LoginPanel.js +103 -0
- package/dist/dts/components/Login/LoginPanel.js.map +1 -0
- package/dist/dts/components/Login/LoginProvidersPanel.d.ts +4 -0
- package/dist/dts/components/Login/LoginProvidersPanel.d.ts.map +1 -0
- package/dist/dts/components/Login/LoginProvidersPanel.js +31 -0
- package/dist/dts/components/Login/LoginProvidersPanel.js.map +1 -0
- package/dist/dts/components/Login/index.d.ts +6 -0
- package/dist/dts/components/Login/index.d.ts.map +1 -0
- package/dist/dts/components/Login/index.js +5 -0
- package/dist/dts/components/Login/index.js.map +1 -0
- package/dist/dts/components/Login/types.d.ts +24 -0
- package/dist/dts/components/Login/types.d.ts.map +1 -0
- package/dist/dts/components/Login/types.js +7 -0
- package/dist/dts/components/Login/types.js.map +1 -0
- package/dist/dts/components/Login/utils.d.ts +1 -0
- package/dist/dts/components/Login/utils.d.ts.map +1 -0
- package/dist/dts/components/Login/utils.js +2 -0
- package/dist/dts/components/Login/utils.js.map +1 -0
- package/dist/dts/components/MessagePanel.d.ts +8 -0
- package/dist/dts/components/MessagePanel.d.ts.map +1 -0
- package/dist/dts/components/MessagePanel.js +8 -0
- package/dist/dts/components/MessagePanel.js.map +1 -0
- package/dist/dts/components/Modals/BaseModal.d.ts +37 -0
- package/dist/dts/components/Modals/BaseModal.d.ts.map +1 -0
- package/dist/dts/components/Modals/BaseModal.js +96 -0
- package/dist/dts/components/Modals/BaseModal.js.map +1 -0
- package/dist/dts/components/Modals/CreateCredentialsAPIKeyModal.d.ts +14 -0
- package/dist/dts/components/Modals/CreateCredentialsAPIKeyModal.d.ts.map +1 -0
- package/dist/dts/components/Modals/CreateCredentialsAPIKeyModal.js +49 -0
- package/dist/dts/components/Modals/CreateCredentialsAPIKeyModal.js.map +1 -0
- package/dist/dts/components/Modals/DemoModal.d.ts +3 -0
- package/dist/dts/components/Modals/DemoModal.d.ts.map +1 -0
- package/dist/dts/components/Modals/DemoModal.js +11 -0
- package/dist/dts/components/Modals/DemoModal.js.map +1 -0
- package/dist/dts/components/Modals/DownloadAccessAgreement.d.ts +9 -0
- package/dist/dts/components/Modals/DownloadAccessAgreement.d.ts.map +1 -0
- package/dist/dts/components/Modals/DownloadAccessAgreement.js +19 -0
- package/dist/dts/components/Modals/DownloadAccessAgreement.js.map +1 -0
- package/dist/dts/components/Modals/FirstTimeModal.d.ts +8 -0
- package/dist/dts/components/Modals/FirstTimeModal.d.ts.map +1 -0
- package/dist/dts/components/Modals/FirstTimeModal.js +36 -0
- package/dist/dts/components/Modals/FirstTimeModal.js.map +1 -0
- package/dist/dts/components/Modals/Gen3ModalsProvider.d.ts +9 -0
- package/dist/dts/components/Modals/Gen3ModalsProvider.d.ts.map +1 -0
- package/dist/dts/components/Modals/Gen3ModalsProvider.js +66 -0
- package/dist/dts/components/Modals/Gen3ModalsProvider.js.map +1 -0
- package/dist/dts/components/Modals/GeneralErrorModal.d.ts +4 -0
- package/dist/dts/components/Modals/GeneralErrorModal.d.ts.map +1 -0
- package/dist/dts/components/Modals/GeneralErrorModal.js +10 -0
- package/dist/dts/components/Modals/GeneralErrorModal.js.map +1 -0
- package/dist/dts/components/Modals/NoAccessModal.d.ts +4 -0
- package/dist/dts/components/Modals/NoAccessModal.d.ts.map +1 -0
- package/dist/dts/components/Modals/NoAccessModal.js +13 -0
- package/dist/dts/components/Modals/NoAccessModal.js.map +1 -0
- package/dist/dts/components/Modals/SessionExpiredModal.d.ts +4 -0
- package/dist/dts/components/Modals/SessionExpiredModal.d.ts.map +1 -0
- package/dist/dts/components/Modals/SessionExpiredModal.js +21 -0
- package/dist/dts/components/Modals/SessionExpiredModal.js.map +1 -0
- package/dist/dts/components/Modals/index.d.ts +9 -0
- package/dist/dts/components/Modals/index.d.ts.map +1 -0
- package/dist/dts/components/Modals/index.js +9 -0
- package/dist/dts/components/Modals/index.js.map +1 -0
- package/dist/dts/components/Modals/types.d.ts +15 -0
- package/dist/dts/components/Modals/types.d.ts.map +1 -0
- package/dist/dts/components/Modals/types.js +2 -0
- package/dist/dts/components/Modals/types.js.map +1 -0
- package/dist/dts/components/OverflowTooltippedLabel.d.ts +9 -0
- package/dist/dts/components/OverflowTooltippedLabel.d.ts.map +1 -0
- package/dist/dts/components/OverflowTooltippedLabel.js +22 -0
- package/dist/dts/components/OverflowTooltippedLabel.js.map +1 -0
- package/dist/dts/components/Profile/Credentials.d.ts +10 -0
- package/dist/dts/components/Profile/Credentials.d.ts.map +1 -0
- package/dist/dts/components/Profile/Credentials.js +82 -0
- package/dist/dts/components/Profile/Credentials.js.map +1 -0
- package/dist/dts/components/Profile/CredentialsTable.d.ts +8 -0
- package/dist/dts/components/Profile/CredentialsTable.d.ts.map +1 -0
- package/dist/dts/components/Profile/CredentialsTable.js +89 -0
- package/dist/dts/components/Profile/CredentialsTable.js.map +1 -0
- package/dist/dts/components/Profile/ExternalProviderCard.d.ts +8 -0
- package/dist/dts/components/Profile/ExternalProviderCard.d.ts.map +1 -0
- package/dist/dts/components/Profile/ExternalProviderCard.js +118 -0
- package/dist/dts/components/Profile/ExternalProviderCard.js.map +1 -0
- package/dist/dts/components/Profile/ExternalProvidersPanel.d.ts +3 -0
- package/dist/dts/components/Profile/ExternalProvidersPanel.d.ts.map +1 -0
- package/dist/dts/components/Profile/ExternalProvidersPanel.js +16 -0
- package/dist/dts/components/Profile/ExternalProvidersPanel.js.map +1 -0
- package/dist/dts/components/Profile/ProfileProvider.d.ts +12 -0
- package/dist/dts/components/Profile/ProfileProvider.d.ts.map +1 -0
- package/dist/dts/components/Profile/ProfileProvider.js +18 -0
- package/dist/dts/components/Profile/ProfileProvider.js.map +1 -0
- package/dist/dts/components/Profile/ResourcesFilters.d.ts +13 -0
- package/dist/dts/components/Profile/ResourcesFilters.d.ts.map +1 -0
- package/dist/dts/components/Profile/ResourcesFilters.js +30 -0
- package/dist/dts/components/Profile/ResourcesFilters.js.map +1 -0
- package/dist/dts/components/Profile/ResourcesPanel.d.ts +7 -0
- package/dist/dts/components/Profile/ResourcesPanel.d.ts.map +1 -0
- package/dist/dts/components/Profile/ResourcesPanel.js +16 -0
- package/dist/dts/components/Profile/ResourcesPanel.js.map +1 -0
- package/dist/dts/components/Profile/ResourcesProvider.d.ts +21 -0
- package/dist/dts/components/Profile/ResourcesProvider.d.ts.map +1 -0
- package/dist/dts/components/Profile/ResourcesProvider.js +63 -0
- package/dist/dts/components/Profile/ResourcesProvider.js.map +1 -0
- package/dist/dts/components/Profile/ResourcesTable.d.ts +15 -0
- package/dist/dts/components/Profile/ResourcesTable.d.ts.map +1 -0
- package/dist/dts/components/Profile/ResourcesTable.js +116 -0
- package/dist/dts/components/Profile/ResourcesTable.js.map +1 -0
- package/dist/dts/components/Profile/User.d.ts +3 -0
- package/dist/dts/components/Profile/User.d.ts.map +1 -0
- package/dist/dts/components/Profile/User.js +9 -0
- package/dist/dts/components/Profile/User.js.map +1 -0
- package/dist/dts/components/Profile/index.d.ts +6 -0
- package/dist/dts/components/Profile/index.d.ts.map +1 -0
- package/dist/dts/components/Profile/index.js +5 -0
- package/dist/dts/components/Profile/index.js.map +1 -0
- package/dist/dts/components/Profile/types.d.ts +18 -0
- package/dist/dts/components/Profile/types.d.ts.map +1 -0
- package/dist/dts/components/Profile/types.js +2 -0
- package/dist/dts/components/Profile/types.js.map +1 -0
- package/dist/dts/components/Profile/utils.d.ts +3 -0
- package/dist/dts/components/Profile/utils.d.ts.map +1 -0
- package/dist/dts/components/Profile/utils.js +13 -0
- package/dist/dts/components/Profile/utils.js.map +1 -0
- package/dist/dts/components/Protected/ProtectedContent.d.ts +8 -0
- package/dist/dts/components/Protected/ProtectedContent.d.ts.map +1 -0
- package/dist/dts/components/Protected/ProtectedContent.js +33 -0
- package/dist/dts/components/Protected/ProtectedContent.js.map +1 -0
- package/dist/dts/components/Providers/Gen3Provider.d.ts +21 -0
- package/dist/dts/components/Providers/Gen3Provider.d.ts.map +1 -0
- package/dist/dts/components/Providers/Gen3Provider.js +75 -0
- package/dist/dts/components/Providers/Gen3Provider.js.map +1 -0
- package/dist/dts/components/Tables/CellRenderFactory.d.ts +28 -0
- package/dist/dts/components/Tables/CellRenderFactory.d.ts.map +1 -0
- package/dist/dts/components/Tables/CellRenderFactory.js +61 -0
- package/dist/dts/components/Tables/CellRenderFactory.js.map +1 -0
- package/dist/dts/components/Tables/TableIcons.d.ts +3 -0
- package/dist/dts/components/Tables/TableIcons.d.ts.map +1 -0
- package/dist/dts/components/Tables/TableIcons.js +21 -0
- package/dist/dts/components/Tables/TableIcons.js.map +1 -0
- package/dist/dts/components/Tables/types.d.ts +12 -0
- package/dist/dts/components/Tables/types.d.ts.map +1 -0
- package/dist/dts/components/Tables/types.js +2 -0
- package/dist/dts/components/Tables/types.js.map +1 -0
- package/dist/dts/components/Tables/utils.d.ts +3 -0
- package/dist/dts/components/Tables/utils.d.ts.map +1 -0
- package/dist/dts/components/Tables/utils.js +6 -0
- package/dist/dts/components/Tables/utils.js.map +1 -0
- package/dist/dts/components/Text/MultiPartText.d.ts +12 -0
- package/dist/dts/components/Text/MultiPartText.d.ts.map +1 -0
- package/dist/dts/components/Text/MultiPartText.js +20 -0
- package/dist/dts/components/Text/MultiPartText.js.map +1 -0
- package/dist/dts/components/Text/index.d.ts +3 -0
- package/dist/dts/components/Text/index.d.ts.map +1 -0
- package/dist/dts/components/Text/index.js +3 -0
- package/dist/dts/components/Text/index.js.map +1 -0
- package/dist/dts/components/charts/BarChart.d.ts +4 -0
- package/dist/dts/components/charts/BarChart.d.ts.map +1 -0
- package/dist/dts/components/charts/BarChart.js +57 -0
- package/dist/dts/components/charts/BarChart.js.map +1 -0
- package/dist/dts/components/charts/ChartRendererFactory.d.ts +5 -0
- package/dist/dts/components/charts/ChartRendererFactory.d.ts.map +1 -0
- package/dist/dts/components/charts/ChartRendererFactory.js +23 -0
- package/dist/dts/components/charts/ChartRendererFactory.js.map +1 -0
- package/dist/dts/components/charts/ChartTitleBar.d.ts +11 -0
- package/dist/dts/components/charts/ChartTitleBar.d.ts.map +1 -0
- package/dist/dts/components/charts/ChartTitleBar.js +7 -0
- package/dist/dts/components/charts/ChartTitleBar.js.map +1 -0
- package/dist/dts/components/charts/Charts.d.ts +15 -0
- package/dist/dts/components/charts/Charts.d.ts.map +1 -0
- package/dist/dts/components/charts/Charts.js +26 -0
- package/dist/dts/components/charts/Charts.js.map +1 -0
- package/dist/dts/components/charts/EnumFacetChart.d.ts +20 -0
- package/dist/dts/components/charts/EnumFacetChart.d.ts.map +1 -0
- package/dist/dts/components/charts/EnumFacetChart.js +131 -0
- package/dist/dts/components/charts/EnumFacetChart.js.map +1 -0
- package/dist/dts/components/charts/PieChart.d.ts +6 -0
- package/dist/dts/components/charts/PieChart.d.ts.map +1 -0
- package/dist/dts/components/charts/PieChart.js +25 -0
- package/dist/dts/components/charts/PieChart.js.map +1 -0
- package/dist/dts/components/charts/createChart.d.ts +7 -0
- package/dist/dts/components/charts/createChart.d.ts.map +1 -0
- package/dist/dts/components/charts/createChart.js +21 -0
- package/dist/dts/components/charts/createChart.js.map +1 -0
- package/dist/dts/components/charts/echarts/BarChart.d.ts +4 -0
- package/dist/dts/components/charts/echarts/BarChart.d.ts.map +1 -0
- package/dist/dts/components/charts/echarts/BarChart.js +71 -0
- package/dist/dts/components/charts/echarts/BarChart.js.map +1 -0
- package/dist/dts/components/charts/echarts/DonutChart.d.ts +4 -0
- package/dist/dts/components/charts/echarts/DonutChart.d.ts.map +1 -0
- package/dist/dts/components/charts/echarts/DonutChart.js +51 -0
- package/dist/dts/components/charts/echarts/DonutChart.js.map +1 -0
- package/dist/dts/components/charts/echarts/HorizontalBarChart.d.ts +4 -0
- package/dist/dts/components/charts/echarts/HorizontalBarChart.d.ts.map +1 -0
- package/dist/dts/components/charts/echarts/HorizontalBarChart.js +69 -0
- package/dist/dts/components/charts/echarts/HorizontalBarChart.js.map +1 -0
- package/dist/dts/components/charts/echarts/PieChart.d.ts +4 -0
- package/dist/dts/components/charts/echarts/PieChart.d.ts.map +1 -0
- package/dist/dts/components/charts/echarts/PieChart.js +51 -0
- package/dist/dts/components/charts/echarts/PieChart.js.map +1 -0
- package/dist/dts/components/charts/echarts/ReactECharts.d.ts +12 -0
- package/dist/dts/components/charts/echarts/ReactECharts.d.ts.map +1 -0
- package/dist/dts/components/charts/echarts/ReactECharts.js +55 -0
- package/dist/dts/components/charts/echarts/ReactECharts.js.map +1 -0
- package/dist/dts/components/charts/index.d.ts +7 -0
- package/dist/dts/components/charts/index.d.ts.map +1 -0
- package/dist/dts/components/charts/index.js +7 -0
- package/dist/dts/components/charts/index.js.map +1 -0
- package/dist/dts/components/charts/tests/utils.unit.test.d.ts +2 -0
- package/dist/dts/components/charts/tests/utils.unit.test.d.ts.map +1 -0
- package/dist/dts/components/charts/tests/utils.unit.test.js +49 -0
- package/dist/dts/components/charts/tests/utils.unit.test.js.map +1 -0
- package/dist/dts/components/charts/types.d.ts +12 -0
- package/dist/dts/components/charts/types.d.ts.map +1 -0
- package/dist/dts/components/charts/types.js +2 -0
- package/dist/dts/components/charts/types.js.map +1 -0
- package/dist/dts/components/charts/utils.d.ts +19 -0
- package/dist/dts/components/charts/utils.d.ts.map +1 -0
- package/dist/dts/components/charts/utils.js +63 -0
- package/dist/dts/components/charts/utils.js.map +1 -0
- package/dist/dts/components/counts/CountsValue.d.ts +8 -0
- package/dist/dts/components/counts/CountsValue.d.ts.map +1 -0
- package/dist/dts/components/counts/CountsValue.js +10 -0
- package/dist/dts/components/counts/CountsValue.js.map +1 -0
- package/dist/dts/components/counts/index.d.ts +3 -0
- package/dist/dts/components/counts/index.d.ts.map +1 -0
- package/dist/dts/components/counts/index.js +3 -0
- package/dist/dts/components/counts/index.js.map +1 -0
- package/dist/dts/components/data/config.d.ts +60 -0
- package/dist/dts/components/data/config.d.ts.map +1 -0
- package/dist/dts/components/data/config.js +98 -0
- package/dist/dts/components/data/config.js.map +1 -0
- package/dist/dts/components/data/sampleConfig.d.ts +33 -0
- package/dist/dts/components/data/sampleConfig.d.ts.map +1 -0
- package/dist/dts/components/data/sampleConfig.js +53 -0
- package/dist/dts/components/data/sampleConfig.js.map +1 -0
- package/dist/dts/components/facets/EnumFacet.d.ts +7 -0
- package/dist/dts/components/facets/EnumFacet.d.ts.map +1 -0
- package/dist/dts/components/facets/EnumFacet.js +248 -0
- package/dist/dts/components/facets/EnumFacet.js.map +1 -0
- package/dist/dts/components/facets/ExactValueFacet.d.ts +16 -0
- package/dist/dts/components/facets/ExactValueFacet.d.ts.map +1 -0
- package/dist/dts/components/facets/ExactValueFacet.js +101 -0
- package/dist/dts/components/facets/ExactValueFacet.js.map +1 -0
- package/dist/dts/components/facets/FacetExpander.d.ts +16 -0
- package/dist/dts/components/facets/FacetExpander.d.ts.map +1 -0
- package/dist/dts/components/facets/FacetExpander.js +21 -0
- package/dist/dts/components/facets/FacetExpander.js.map +1 -0
- package/dist/dts/components/facets/FacetSortPanel.d.ts +18 -0
- package/dist/dts/components/facets/FacetSortPanel.d.ts.map +1 -0
- package/dist/dts/components/facets/FacetSortPanel.js +66 -0
- package/dist/dts/components/facets/FacetSortPanel.js.map +1 -0
- package/dist/dts/components/facets/MultiSelectValueFacet.d.ts +16 -0
- package/dist/dts/components/facets/MultiSelectValueFacet.d.ts.map +1 -0
- package/dist/dts/components/facets/MultiSelectValueFacet.js +104 -0
- package/dist/dts/components/facets/MultiSelectValueFacet.js.map +1 -0
- package/dist/dts/components/facets/RangeFacet.d.ts +14 -0
- package/dist/dts/components/facets/RangeFacet.d.ts.map +1 -0
- package/dist/dts/components/facets/RangeFacet.js +68 -0
- package/dist/dts/components/facets/RangeFacet.js.map +1 -0
- package/dist/dts/components/facets/components.d.ts +5 -0
- package/dist/dts/components/facets/components.d.ts.map +1 -0
- package/dist/dts/components/facets/components.js +11 -0
- package/dist/dts/components/facets/components.js.map +1 -0
- package/dist/dts/components/facets/constants.d.ts +4 -0
- package/dist/dts/components/facets/constants.d.ts.map +1 -0
- package/dist/dts/components/facets/constants.js +5 -0
- package/dist/dts/components/facets/constants.js.map +1 -0
- package/dist/dts/components/facets/createFacetCard.d.ts +5 -0
- package/dist/dts/components/facets/createFacetCard.d.ts.map +1 -0
- package/dist/dts/components/facets/createFacetCard.js +18 -0
- package/dist/dts/components/facets/createFacetCard.js.map +1 -0
- package/dist/dts/components/facets/hooks.d.ts +11 -0
- package/dist/dts/components/facets/hooks.d.ts.map +1 -0
- package/dist/dts/components/facets/hooks.js +27 -0
- package/dist/dts/components/facets/hooks.js.map +1 -0
- package/dist/dts/components/facets/types.d.ts +78 -0
- package/dist/dts/components/facets/types.d.ts.map +1 -0
- package/dist/dts/components/facets/types.js +4 -0
- package/dist/dts/components/facets/types.js.map +1 -0
- package/dist/dts/components/facets/utils.d.ts +31 -0
- package/dist/dts/components/facets/utils.d.ts.map +1 -0
- package/dist/dts/components/facets/utils.js +166 -0
- package/dist/dts/components/facets/utils.js.map +1 -0
- package/dist/dts/components/status.d.ts +8 -0
- package/dist/dts/components/status.d.ts.map +1 -0
- package/dist/dts/components/status.js +15 -0
- package/dist/dts/components/status.js.map +1 -0
- package/dist/dts/features/Authz/Gen3Authz.d.ts +7 -0
- package/dist/dts/features/Authz/Gen3Authz.d.ts.map +1 -0
- package/dist/dts/features/Authz/Gen3Authz.js +13 -0
- package/dist/dts/features/Authz/Gen3Authz.js.map +1 -0
- package/dist/dts/features/Authz/Policies/PoliciesPanel.d.ts +3 -0
- package/dist/dts/features/Authz/Policies/PoliciesPanel.d.ts.map +1 -0
- package/dist/dts/features/Authz/Policies/PoliciesPanel.js +7 -0
- package/dist/dts/features/Authz/Policies/PoliciesPanel.js.map +1 -0
- package/dist/dts/features/Authz/Policies/PoliciesTable.d.ts +10 -0
- package/dist/dts/features/Authz/Policies/PoliciesTable.d.ts.map +1 -0
- package/dist/dts/features/Authz/Policies/PoliciesTable.js +85 -0
- package/dist/dts/features/Authz/Policies/PoliciesTable.js.map +1 -0
- package/dist/dts/features/Authz/Policies/tests/ResourceTable.unit.test.d.ts +2 -0
- package/dist/dts/features/Authz/Policies/tests/ResourceTable.unit.test.d.ts.map +1 -0
- package/dist/dts/features/Authz/Policies/tests/ResourceTable.unit.test.js +74 -0
- package/dist/dts/features/Authz/Policies/tests/ResourceTable.unit.test.js.map +1 -0
- package/dist/dts/features/Authz/Provider.d.ts +43 -0
- package/dist/dts/features/Authz/Provider.d.ts.map +1 -0
- package/dist/dts/features/Authz/Provider.js +55 -0
- package/dist/dts/features/Authz/Provider.js.map +1 -0
- package/dist/dts/features/Authz/Resources/ResourcesPanel.d.ts +3 -0
- package/dist/dts/features/Authz/Resources/ResourcesPanel.d.ts.map +1 -0
- package/dist/dts/features/Authz/Resources/ResourcesPanel.js +7 -0
- package/dist/dts/features/Authz/Resources/ResourcesPanel.js.map +1 -0
- package/dist/dts/features/Authz/Resources/ResourcesTable.d.ts +3 -0
- package/dist/dts/features/Authz/Resources/ResourcesTable.d.ts.map +1 -0
- package/dist/dts/features/Authz/Resources/ResourcesTable.js +40 -0
- package/dist/dts/features/Authz/Resources/ResourcesTable.js.map +1 -0
- package/dist/dts/features/Authz/Roles/PermissionnDetailsRow.d.ts +16 -0
- package/dist/dts/features/Authz/Roles/PermissionnDetailsRow.d.ts.map +1 -0
- package/dist/dts/features/Authz/Roles/PermissionnDetailsRow.js +35 -0
- package/dist/dts/features/Authz/Roles/PermissionnDetailsRow.js.map +1 -0
- package/dist/dts/features/Authz/Roles/RolesPanel.d.ts +3 -0
- package/dist/dts/features/Authz/Roles/RolesPanel.d.ts.map +1 -0
- package/dist/dts/features/Authz/Roles/RolesPanel.js +7 -0
- package/dist/dts/features/Authz/Roles/RolesPanel.js.map +1 -0
- package/dist/dts/features/Authz/Roles/RolesTable.d.ts +3 -0
- package/dist/dts/features/Authz/Roles/RolesTable.d.ts.map +1 -0
- package/dist/dts/features/Authz/Roles/RolesTable.js +57 -0
- package/dist/dts/features/Authz/Roles/RolesTable.js.map +1 -0
- package/dist/dts/features/Authz/Users/Cards/UserDetails.d.ts +7 -0
- package/dist/dts/features/Authz/Users/Cards/UserDetails.d.ts.map +1 -0
- package/dist/dts/features/Authz/Users/Cards/UserDetails.js +14 -0
- package/dist/dts/features/Authz/Users/Cards/UserDetails.js.map +1 -0
- package/dist/dts/features/Authz/Users/Cards/index.d.ts +3 -0
- package/dist/dts/features/Authz/Users/Cards/index.d.ts.map +1 -0
- package/dist/dts/features/Authz/Users/Cards/index.js +3 -0
- package/dist/dts/features/Authz/Users/Cards/index.js.map +1 -0
- package/dist/dts/features/Authz/Users/Inputs.d.ts +19 -0
- package/dist/dts/features/Authz/Users/Inputs.d.ts.map +1 -0
- package/dist/dts/features/Authz/Users/Inputs.js +30 -0
- package/dist/dts/features/Authz/Users/Inputs.js.map +1 -0
- package/dist/dts/features/Authz/Users/NewUserPanel.d.ts +6 -0
- package/dist/dts/features/Authz/Users/NewUserPanel.d.ts.map +1 -0
- package/dist/dts/features/Authz/Users/NewUserPanel.js +31 -0
- package/dist/dts/features/Authz/Users/NewUserPanel.js.map +1 -0
- package/dist/dts/features/Authz/Users/UserDetailsPanel.d.ts +8 -0
- package/dist/dts/features/Authz/Users/UserDetailsPanel.d.ts.map +1 -0
- package/dist/dts/features/Authz/Users/UserDetailsPanel.js +12 -0
- package/dist/dts/features/Authz/Users/UserDetailsPanel.js.map +1 -0
- package/dist/dts/features/Authz/Users/UserPanel.d.ts +3 -0
- package/dist/dts/features/Authz/Users/UserPanel.d.ts.map +1 -0
- package/dist/dts/features/Authz/Users/UserPanel.js +38 -0
- package/dist/dts/features/Authz/Users/UserPanel.js.map +1 -0
- package/dist/dts/features/Authz/Users/UserTable.d.ts +8 -0
- package/dist/dts/features/Authz/Users/UserTable.d.ts.map +1 -0
- package/dist/dts/features/Authz/Users/UserTable.js +62 -0
- package/dist/dts/features/Authz/Users/UserTable.js.map +1 -0
- package/dist/dts/features/Authz/index.d.ts +6 -0
- package/dist/dts/features/Authz/index.d.ts.map +1 -0
- package/dist/dts/features/Authz/index.js +5 -0
- package/dist/dts/features/Authz/index.js.map +1 -0
- package/dist/dts/features/Authz/types.d.ts +57 -0
- package/dist/dts/features/Authz/types.d.ts.map +1 -0
- package/dist/dts/features/Authz/types.js +2 -0
- package/dist/dts/features/Authz/types.js.map +1 -0
- package/dist/dts/features/Authz/utils.d.ts +3 -0
- package/dist/dts/features/Authz/utils.d.ts.map +1 -0
- package/dist/dts/features/Authz/utils.js +11 -0
- package/dist/dts/features/Authz/utils.js.map +1 -0
- package/dist/dts/features/CohortBuilder/CohortBuilder.d.ts +3 -0
- package/dist/dts/features/CohortBuilder/CohortBuilder.d.ts.map +1 -0
- package/dist/dts/features/CohortBuilder/CohortBuilder.js +25 -0
- package/dist/dts/features/CohortBuilder/CohortBuilder.js.map +1 -0
- package/dist/dts/features/CohortBuilder/CohortManager.d.ts +6 -0
- package/dist/dts/features/CohortBuilder/CohortManager.d.ts.map +1 -0
- package/dist/dts/features/CohortBuilder/CohortManager.js +17 -0
- package/dist/dts/features/CohortBuilder/CohortManager.js.map +1 -0
- package/dist/dts/features/CohortBuilder/CohortPanel.d.ts +11 -0
- package/dist/dts/features/CohortBuilder/CohortPanel.d.ts.map +1 -0
- package/dist/dts/features/CohortBuilder/CohortPanel.js +181 -0
- package/dist/dts/features/CohortBuilder/CohortPanel.js.map +1 -0
- package/dist/dts/features/CohortBuilder/DownloadsPanel.d.ts +18 -0
- package/dist/dts/features/CohortBuilder/DownloadsPanel.d.ts.map +1 -0
- package/dist/dts/features/CohortBuilder/DownloadsPanel.js +109 -0
- package/dist/dts/features/CohortBuilder/DownloadsPanel.js.map +1 -0
- package/dist/dts/features/CohortBuilder/ExplorerTable/CellRenderers.d.ts +15 -0
- package/dist/dts/features/CohortBuilder/ExplorerTable/CellRenderers.d.ts.map +1 -0
- package/dist/dts/features/CohortBuilder/ExplorerTable/CellRenderers.js +90 -0
- package/dist/dts/features/CohortBuilder/ExplorerTable/CellRenderers.js.map +1 -0
- package/dist/dts/features/CohortBuilder/ExplorerTable/ExploreTableDetails/ExplorerTableDetailsPanelFactory.d.ts +6 -0
- package/dist/dts/features/CohortBuilder/ExplorerTable/ExploreTableDetails/ExplorerTableDetailsPanelFactory.d.ts.map +1 -0
- package/dist/dts/features/CohortBuilder/ExplorerTable/ExploreTableDetails/ExplorerTableDetailsPanelFactory.js +19 -0
- package/dist/dts/features/CohortBuilder/ExplorerTable/ExploreTableDetails/ExplorerTableDetailsPanelFactory.js.map +1 -0
- package/dist/dts/features/CohortBuilder/ExplorerTable/ExploreTableDetails/TableDetailsPanel.d.ts +4 -0
- package/dist/dts/features/CohortBuilder/ExplorerTable/ExploreTableDetails/TableDetailsPanel.d.ts.map +1 -0
- package/dist/dts/features/CohortBuilder/ExplorerTable/ExploreTableDetails/TableDetailsPanel.js +53 -0
- package/dist/dts/features/CohortBuilder/ExplorerTable/ExploreTableDetails/TableDetailsPanel.js.map +1 -0
- package/dist/dts/features/CohortBuilder/ExplorerTable/ExploreTableDetails/index.d.ts +4 -0
- package/dist/dts/features/CohortBuilder/ExplorerTable/ExploreTableDetails/index.d.ts.map +1 -0
- package/dist/dts/features/CohortBuilder/ExplorerTable/ExploreTableDetails/index.js +3 -0
- package/dist/dts/features/CohortBuilder/ExplorerTable/ExploreTableDetails/index.js.map +1 -0
- package/dist/dts/features/CohortBuilder/ExplorerTable/ExploreTableDetails/types.d.ts +26 -0
- package/dist/dts/features/CohortBuilder/ExplorerTable/ExploreTableDetails/types.d.ts.map +1 -0
- package/dist/dts/features/CohortBuilder/ExplorerTable/ExploreTableDetails/types.js +2 -0
- package/dist/dts/features/CohortBuilder/ExplorerTable/ExploreTableDetails/types.js.map +1 -0
- package/dist/dts/features/CohortBuilder/ExplorerTable/ExplorerTable.d.ts +11 -0
- package/dist/dts/features/CohortBuilder/ExplorerTable/ExplorerTable.d.ts.map +1 -0
- package/dist/dts/features/CohortBuilder/ExplorerTable/ExplorerTable.js +210 -0
- package/dist/dts/features/CohortBuilder/ExplorerTable/ExplorerTable.js.map +1 -0
- package/dist/dts/features/CohortBuilder/ExplorerTable/ExplorerTableCellRenderers.d.ts +12 -0
- package/dist/dts/features/CohortBuilder/ExplorerTable/ExplorerTableCellRenderers.d.ts.map +1 -0
- package/dist/dts/features/CohortBuilder/ExplorerTable/ExplorerTableCellRenderers.js +80 -0
- package/dist/dts/features/CohortBuilder/ExplorerTable/ExplorerTableCellRenderers.js.map +1 -0
- package/dist/dts/features/CohortBuilder/ExplorerTable/index.d.ts +6 -0
- package/dist/dts/features/CohortBuilder/ExplorerTable/index.d.ts.map +1 -0
- package/dist/dts/features/CohortBuilder/ExplorerTable/index.js +5 -0
- package/dist/dts/features/CohortBuilder/ExplorerTable/index.js.map +1 -0
- package/dist/dts/features/CohortBuilder/ExplorerTable/types.d.ts +44 -0
- package/dist/dts/features/CohortBuilder/ExplorerTable/types.d.ts.map +1 -0
- package/dist/dts/features/CohortBuilder/ExplorerTable/types.js +2 -0
- package/dist/dts/features/CohortBuilder/ExplorerTable/types.js.map +1 -0
- package/dist/dts/features/CohortBuilder/ExplorerTable/utils.d.ts +3 -0
- package/dist/dts/features/CohortBuilder/ExplorerTable/utils.d.ts.map +1 -0
- package/dist/dts/features/CohortBuilder/ExplorerTable/utils.js +12 -0
- package/dist/dts/features/CohortBuilder/ExplorerTable/utils.js.map +1 -0
- package/dist/dts/features/CohortBuilder/FiltersPanel.d.ts +10 -0
- package/dist/dts/features/CohortBuilder/FiltersPanel.d.ts.map +1 -0
- package/dist/dts/features/CohortBuilder/FiltersPanel.js +9 -0
- package/dist/dts/features/CohortBuilder/FiltersPanel.js.map +1 -0
- package/dist/dts/features/CohortBuilder/QueryExpressionSection.d.ts +11 -0
- package/dist/dts/features/CohortBuilder/QueryExpressionSection.d.ts.map +1 -0
- package/dist/dts/features/CohortBuilder/QueryExpressionSection.js +122 -0
- package/dist/dts/features/CohortBuilder/QueryExpressionSection.js.map +1 -0
- package/dist/dts/features/CohortBuilder/QueryExpressionsExpandedContext.d.ts +8 -0
- package/dist/dts/features/CohortBuilder/QueryExpressionsExpandedContext.d.ts.map +1 -0
- package/dist/dts/features/CohortBuilder/QueryExpressionsExpandedContext.js +3 -0
- package/dist/dts/features/CohortBuilder/QueryExpressionsExpandedContext.js.map +1 -0
- package/dist/dts/features/CohortBuilder/QueryRepresentation.d.ts +26 -0
- package/dist/dts/features/CohortBuilder/QueryRepresentation.d.ts.map +1 -0
- package/dist/dts/features/CohortBuilder/QueryRepresentation.js +201 -0
- package/dist/dts/features/CohortBuilder/QueryRepresentation.js.map +1 -0
- package/dist/dts/features/CohortBuilder/QueryRepresentationLabel.d.ts +6 -0
- package/dist/dts/features/CohortBuilder/QueryRepresentationLabel.d.ts.map +1 -0
- package/dist/dts/features/CohortBuilder/QueryRepresentationLabel.js +8 -0
- package/dist/dts/features/CohortBuilder/QueryRepresentationLabel.js.map +1 -0
- package/dist/dts/features/CohortBuilder/authz/utils.d.ts +5 -0
- package/dist/dts/features/CohortBuilder/authz/utils.d.ts.map +1 -0
- package/dist/dts/features/CohortBuilder/authz/utils.js +43 -0
- package/dist/dts/features/CohortBuilder/authz/utils.js.map +1 -0
- package/dist/dts/features/CohortBuilder/downloads/CohortActionButton.d.ts +4 -0
- package/dist/dts/features/CohortBuilder/downloads/CohortActionButton.d.ts.map +1 -0
- package/dist/dts/features/CohortBuilder/downloads/CohortActionButton.js +23 -0
- package/dist/dts/features/CohortBuilder/downloads/CohortActionButton.js.map +1 -0
- package/dist/dts/features/CohortBuilder/downloads/CohortDropdownActionButton.d.ts +75 -0
- package/dist/dts/features/CohortBuilder/downloads/CohortDropdownActionButton.d.ts.map +1 -0
- package/dist/dts/features/CohortBuilder/downloads/CohortDropdownActionButton.js +54 -0
- package/dist/dts/features/CohortBuilder/downloads/CohortDropdownActionButton.js.map +1 -0
- package/dist/dts/features/CohortBuilder/downloads/actions/downloadManifest.d.ts +19 -0
- package/dist/dts/features/CohortBuilder/downloads/actions/downloadManifest.d.ts.map +1 -0
- package/dist/dts/features/CohortBuilder/downloads/actions/downloadManifest.js +186 -0
- package/dist/dts/features/CohortBuilder/downloads/actions/downloadManifest.js.map +1 -0
- package/dist/dts/features/CohortBuilder/downloads/actions/downloadToFile.d.ts +2 -0
- package/dist/dts/features/CohortBuilder/downloads/actions/downloadToFile.d.ts.map +1 -0
- package/dist/dts/features/CohortBuilder/downloads/actions/downloadToFile.js +65 -0
- package/dist/dts/features/CohortBuilder/downloads/actions/downloadToFile.js.map +1 -0
- package/dist/dts/features/CohortBuilder/downloads/actions/registeredActions.d.ts +11 -0
- package/dist/dts/features/CohortBuilder/downloads/actions/registeredActions.d.ts.map +1 -0
- package/dist/dts/features/CohortBuilder/downloads/actions/registeredActions.js +42 -0
- package/dist/dts/features/CohortBuilder/downloads/actions/registeredActions.js.map +1 -0
- package/dist/dts/features/CohortBuilder/downloads/actions/tests/downloadManifest.unit.test.d.ts +2 -0
- package/dist/dts/features/CohortBuilder/downloads/actions/tests/downloadManifest.unit.test.d.ts.map +1 -0
- package/dist/dts/features/CohortBuilder/downloads/actions/tests/downloadManifest.unit.test.js +157 -0
- package/dist/dts/features/CohortBuilder/downloads/actions/tests/downloadManifest.unit.test.js.map +1 -0
- package/dist/dts/features/CohortBuilder/downloads/actions/utils.d.ts +8 -0
- package/dist/dts/features/CohortBuilder/downloads/actions/utils.d.ts.map +1 -0
- package/dist/dts/features/CohortBuilder/downloads/actions/utils.js +16 -0
- package/dist/dts/features/CohortBuilder/downloads/actions/utils.js.map +1 -0
- package/dist/dts/features/CohortBuilder/downloads/downloadActionHook.d.ts +11 -0
- package/dist/dts/features/CohortBuilder/downloads/downloadActionHook.d.ts.map +1 -0
- package/dist/dts/features/CohortBuilder/downloads/downloadActionHook.js +137 -0
- package/dist/dts/features/CohortBuilder/downloads/downloadActionHook.js.map +1 -0
- package/dist/dts/features/CohortBuilder/hooks.d.ts +3 -0
- package/dist/dts/features/CohortBuilder/hooks.d.ts.map +1 -0
- package/dist/dts/features/CohortBuilder/hooks.js +5 -0
- package/dist/dts/features/CohortBuilder/hooks.js.map +1 -0
- package/dist/dts/features/CohortBuilder/index.d.ts +5 -0
- package/dist/dts/features/CohortBuilder/index.d.ts.map +1 -0
- package/dist/dts/features/CohortBuilder/index.js +4 -0
- package/dist/dts/features/CohortBuilder/index.js.map +1 -0
- package/dist/dts/features/CohortBuilder/style.d.ts +4 -0
- package/dist/dts/features/CohortBuilder/style.d.ts.map +1 -0
- package/dist/dts/features/CohortBuilder/style.js +25 -0
- package/dist/dts/features/CohortBuilder/style.js.map +1 -0
- package/dist/dts/features/CohortBuilder/types.d.ts +92 -0
- package/dist/dts/features/CohortBuilder/types.d.ts.map +1 -0
- package/dist/dts/features/CohortBuilder/types.js +10 -0
- package/dist/dts/features/CohortBuilder/types.js.map +1 -0
- package/dist/dts/features/Crosswalk/CrosswalkPanel.d.ts +4 -0
- package/dist/dts/features/Crosswalk/CrosswalkPanel.d.ts.map +1 -0
- package/dist/dts/features/Crosswalk/CrosswalkPanel.js +100 -0
- package/dist/dts/features/Crosswalk/CrosswalkPanel.js.map +1 -0
- package/dist/dts/features/Crosswalk/CrosswalkTable.d.ts +13 -0
- package/dist/dts/features/Crosswalk/CrosswalkTable.d.ts.map +1 -0
- package/dist/dts/features/Crosswalk/CrosswalkTable.js +81 -0
- package/dist/dts/features/Crosswalk/CrosswalkTable.js.map +1 -0
- package/dist/dts/features/Crosswalk/index.d.ts +4 -0
- package/dist/dts/features/Crosswalk/index.d.ts.map +1 -0
- package/dist/dts/features/Crosswalk/index.js +3 -0
- package/dist/dts/features/Crosswalk/index.js.map +1 -0
- package/dist/dts/features/Crosswalk/types.d.ts +18 -0
- package/dist/dts/features/Crosswalk/types.d.ts.map +1 -0
- package/dist/dts/features/Crosswalk/types.js +2 -0
- package/dist/dts/features/Crosswalk/types.js.map +1 -0
- package/dist/dts/features/Dictionary/CategoryAccordionLabel.d.ts +7 -0
- package/dist/dts/features/Dictionary/CategoryAccordionLabel.d.ts.map +1 -0
- package/dist/dts/features/Dictionary/CategoryAccordionLabel.js +8 -0
- package/dist/dts/features/Dictionary/CategoryAccordionLabel.js.map +1 -0
- package/dist/dts/features/Dictionary/CategoryHeader.d.ts +9 -0
- package/dist/dts/features/Dictionary/CategoryHeader.d.ts.map +1 -0
- package/dist/dts/features/Dictionary/CategoryHeader.js +15 -0
- package/dist/dts/features/Dictionary/CategoryHeader.js.map +1 -0
- package/dist/dts/features/Dictionary/CategoryPanel.d.ts +10 -0
- package/dist/dts/features/Dictionary/CategoryPanel.d.ts.map +1 -0
- package/dist/dts/features/Dictionary/CategoryPanel.js +77 -0
- package/dist/dts/features/Dictionary/CategoryPanel.js.map +1 -0
- package/dist/dts/features/Dictionary/Cell.d.ts +6 -0
- package/dist/dts/features/Dictionary/Cell.d.ts.map +1 -0
- package/dist/dts/features/Dictionary/Cell.js +10 -0
- package/dist/dts/features/Dictionary/Cell.js.map +1 -0
- package/dist/dts/features/Dictionary/Dictionary.d.ts +4 -0
- package/dist/dts/features/Dictionary/Dictionary.d.ts.map +1 -0
- package/dist/dts/features/Dictionary/Dictionary.js +27 -0
- package/dist/dts/features/Dictionary/Dictionary.js.map +1 -0
- package/dist/dts/features/Dictionary/DictionaryProvider.d.ts +19 -0
- package/dist/dts/features/Dictionary/DictionaryProvider.d.ts.map +1 -0
- package/dist/dts/features/Dictionary/DictionaryProvider.js +88 -0
- package/dist/dts/features/Dictionary/DictionaryProvider.js.map +1 -0
- package/dist/dts/features/Dictionary/DictionaryWithContext.d.ts +4 -0
- package/dist/dts/features/Dictionary/DictionaryWithContext.d.ts.map +1 -0
- package/dist/dts/features/Dictionary/DictionaryWithContext.js +30 -0
- package/dist/dts/features/Dictionary/DictionaryWithContext.js.map +1 -0
- package/dist/dts/features/Dictionary/PropertiesTable.d.ts +13 -0
- package/dist/dts/features/Dictionary/PropertiesTable.d.ts.map +1 -0
- package/dist/dts/features/Dictionary/PropertiesTable.js +144 -0
- package/dist/dts/features/Dictionary/PropertiesTable.js.map +1 -0
- package/dist/dts/features/Dictionary/ResultCard.d.ts +9 -0
- package/dist/dts/features/Dictionary/ResultCard.d.ts.map +1 -0
- package/dist/dts/features/Dictionary/ResultCard.js +12 -0
- package/dist/dts/features/Dictionary/ResultCard.js.map +1 -0
- package/dist/dts/features/Dictionary/ResultList.d.ts +10 -0
- package/dist/dts/features/Dictionary/ResultList.d.ts.map +1 -0
- package/dist/dts/features/Dictionary/ResultList.js +20 -0
- package/dist/dts/features/Dictionary/ResultList.js.map +1 -0
- package/dist/dts/features/Dictionary/TableSearch.d.ts +8 -0
- package/dist/dts/features/Dictionary/TableSearch.d.ts.map +1 -0
- package/dist/dts/features/Dictionary/TableSearch.js +140 -0
- package/dist/dts/features/Dictionary/TableSearch.js.map +1 -0
- package/dist/dts/features/Dictionary/ViewSelector.d.ts +8 -0
- package/dist/dts/features/Dictionary/ViewSelector.d.ts.map +1 -0
- package/dist/dts/features/Dictionary/ViewSelector.js +12 -0
- package/dist/dts/features/Dictionary/ViewSelector.js.map +1 -0
- package/dist/dts/features/Dictionary/constants.d.ts +4 -0
- package/dist/dts/features/Dictionary/constants.d.ts.map +1 -0
- package/dist/dts/features/Dictionary/constants.js +4 -0
- package/dist/dts/features/Dictionary/constants.js.map +1 -0
- package/dist/dts/features/Dictionary/data/dictionary.json +18096 -0
- package/dist/dts/features/Dictionary/index.d.ts +4 -0
- package/dist/dts/features/Dictionary/index.d.ts.map +1 -0
- package/dist/dts/features/Dictionary/index.js +3 -0
- package/dist/dts/features/Dictionary/index.js.map +1 -0
- package/dist/dts/features/Dictionary/tests/utils.unit.test.d.ts +2 -0
- package/dist/dts/features/Dictionary/tests/utils.unit.test.d.ts.map +1 -0
- package/dist/dts/features/Dictionary/tests/utils.unit.test.js +33 -0
- package/dist/dts/features/Dictionary/tests/utils.unit.test.js.map +1 -0
- package/dist/dts/features/Dictionary/types.d.ts +85 -0
- package/dist/dts/features/Dictionary/types.d.ts.map +1 -0
- package/dist/dts/features/Dictionary/types.js +2 -0
- package/dist/dts/features/Dictionary/types.js.map +1 -0
- package/dist/dts/features/Dictionary/utils.d.ts +49 -0
- package/dist/dts/features/Dictionary/utils.d.ts.map +1 -0
- package/dist/dts/features/Dictionary/utils.js +144 -0
- package/dist/dts/features/Dictionary/utils.js.map +1 -0
- package/dist/dts/features/Discovery/ActionBar/ActionBar.d.ts +7 -0
- package/dist/dts/features/Discovery/ActionBar/ActionBar.d.ts.map +1 -0
- package/dist/dts/features/Discovery/ActionBar/ActionBar.js +16 -0
- package/dist/dts/features/Discovery/ActionBar/ActionBar.js.map +1 -0
- package/dist/dts/features/Discovery/ActionBar/DataLibraryActionButton.d.ts +15 -0
- package/dist/dts/features/Discovery/ActionBar/DataLibraryActionButton.d.ts.map +1 -0
- package/dist/dts/features/Discovery/ActionBar/DataLibraryActionButton.js +37 -0
- package/dist/dts/features/Discovery/ActionBar/DataLibraryActionButton.js.map +1 -0
- package/dist/dts/features/Discovery/ActionBar/DownloadAsZipButton.d.ts +4 -0
- package/dist/dts/features/Discovery/ActionBar/DownloadAsZipButton.d.ts.map +1 -0
- package/dist/dts/features/Discovery/ActionBar/DownloadAsZipButton.js +12 -0
- package/dist/dts/features/Discovery/ActionBar/DownloadAsZipButton.js.map +1 -0
- package/dist/dts/features/Discovery/ActionBar/DownloadManifestButton.d.ts +4 -0
- package/dist/dts/features/Discovery/ActionBar/DownloadManifestButton.d.ts.map +1 -0
- package/dist/dts/features/Discovery/ActionBar/DownloadManifestButton.js +50 -0
- package/dist/dts/features/Discovery/ActionBar/DownloadManifestButton.js.map +1 -0
- package/dist/dts/features/Discovery/ActionBar/defaults.d.ts +35 -0
- package/dist/dts/features/Discovery/ActionBar/defaults.d.ts.map +1 -0
- package/dist/dts/features/Discovery/ActionBar/defaults.js +22 -0
- package/dist/dts/features/Discovery/ActionBar/defaults.js.map +1 -0
- package/dist/dts/features/Discovery/ActionBar/types.d.ts +5 -0
- package/dist/dts/features/Discovery/ActionBar/types.d.ts.map +1 -0
- package/dist/dts/features/Discovery/ActionBar/types.js +2 -0
- package/dist/dts/features/Discovery/ActionBar/types.js.map +1 -0
- package/dist/dts/features/Discovery/DataLoaders/AggMDSServer/DataLoader.d.ts +3 -0
- package/dist/dts/features/Discovery/DataLoaders/AggMDSServer/DataLoader.d.ts.map +1 -0
- package/dist/dts/features/Discovery/DataLoaders/AggMDSServer/DataLoader.js +83 -0
- package/dist/dts/features/Discovery/DataLoaders/AggMDSServer/DataLoader.js.map +1 -0
- package/dist/dts/features/Discovery/DataLoaders/IndexedMetadata/DataLoader.d.ts +3 -0
- package/dist/dts/features/Discovery/DataLoaders/IndexedMetadata/DataLoader.d.ts.map +1 -0
- package/dist/dts/features/Discovery/DataLoaders/IndexedMetadata/DataLoader.js +88 -0
- package/dist/dts/features/Discovery/DataLoaders/IndexedMetadata/DataLoader.js.map +1 -0
- package/dist/dts/features/Discovery/DataLoaders/MDSAllLocal/DataLoader.d.ts +8 -0
- package/dist/dts/features/Discovery/DataLoaders/MDSAllLocal/DataLoader.d.ts.map +1 -0
- package/dist/dts/features/Discovery/DataLoaders/MDSAllLocal/DataLoader.js +366 -0
- package/dist/dts/features/Discovery/DataLoaders/MDSAllLocal/DataLoader.js.map +1 -0
- package/dist/dts/features/Discovery/DataLoaders/MDSAllLocal/filterByAdvSearch.d.ts +12 -0
- package/dist/dts/features/Discovery/DataLoaders/MDSAllLocal/filterByAdvSearch.d.ts.map +1 -0
- package/dist/dts/features/Discovery/DataLoaders/MDSAllLocal/filterByAdvSearch.js +85 -0
- package/dist/dts/features/Discovery/DataLoaders/MDSAllLocal/filterByAdvSearch.js.map +1 -0
- package/dist/dts/features/Discovery/DataLoaders/MDSAllLocal/filterByTags.d.ts +5 -0
- package/dist/dts/features/Discovery/DataLoaders/MDSAllLocal/filterByTags.d.ts.map +1 -0
- package/dist/dts/features/Discovery/DataLoaders/MDSAllLocal/filterByTags.js +22 -0
- package/dist/dts/features/Discovery/DataLoaders/MDSAllLocal/filterByTags.js.map +1 -0
- package/dist/dts/features/Discovery/DataLoaders/MDSAllLocal/searchFilterSort.d.ts +16 -0
- package/dist/dts/features/Discovery/DataLoaders/MDSAllLocal/searchFilterSort.d.ts.map +1 -0
- package/dist/dts/features/Discovery/DataLoaders/MDSAllLocal/searchFilterSort.js +38 -0
- package/dist/dts/features/Discovery/DataLoaders/MDSAllLocal/searchFilterSort.js.map +1 -0
- package/dist/dts/features/Discovery/DataLoaders/registeredDataLoaders.d.ts +7 -0
- package/dist/dts/features/Discovery/DataLoaders/registeredDataLoaders.d.ts.map +1 -0
- package/dist/dts/features/Discovery/DataLoaders/registeredDataLoaders.js +31 -0
- package/dist/dts/features/Discovery/DataLoaders/registeredDataLoaders.js.map +1 -0
- package/dist/dts/features/Discovery/DataLoaders/types.d.ts +23 -0
- package/dist/dts/features/Discovery/DataLoaders/types.d.ts.map +1 -0
- package/dist/dts/features/Discovery/DataLoaders/types.js +2 -0
- package/dist/dts/features/Discovery/DataLoaders/types.js.map +1 -0
- package/dist/dts/features/Discovery/DataLoaders/utils.d.ts +13 -0
- package/dist/dts/features/Discovery/DataLoaders/utils.d.ts.map +1 -0
- package/dist/dts/features/Discovery/DataLoaders/utils.js +121 -0
- package/dist/dts/features/Discovery/DataLoaders/utils.js.map +1 -0
- package/dist/dts/features/Discovery/Discovery.d.ts +7 -0
- package/dist/dts/features/Discovery/Discovery.d.ts.map +1 -0
- package/dist/dts/features/Discovery/Discovery.js +29 -0
- package/dist/dts/features/Discovery/Discovery.js.map +1 -0
- package/dist/dts/features/Discovery/DiscoveryIndexPanel.d.ts +9 -0
- package/dist/dts/features/Discovery/DiscoveryIndexPanel.d.ts.map +1 -0
- package/dist/dts/features/Discovery/DiscoveryIndexPanel.js +65 -0
- package/dist/dts/features/Discovery/DiscoveryIndexPanel.js.map +1 -0
- package/dist/dts/features/Discovery/DiscoveryProvider.d.ts +15 -0
- package/dist/dts/features/Discovery/DiscoveryProvider.d.ts.map +1 -0
- package/dist/dts/features/Discovery/DiscoveryProvider.js +25 -0
- package/dist/dts/features/Discovery/DiscoveryProvider.js.map +1 -0
- package/dist/dts/features/Discovery/DiscoveryTable.d.ts +16 -0
- package/dist/dts/features/Discovery/DiscoveryTable.d.ts.map +1 -0
- package/dist/dts/features/Discovery/DiscoveryTable.js +109 -0
- package/dist/dts/features/Discovery/DiscoveryTable.js.map +1 -0
- package/dist/dts/features/Discovery/Search/AdvancedSearch.d.ts +10 -0
- package/dist/dts/features/Discovery/Search/AdvancedSearch.d.ts.map +1 -0
- package/dist/dts/features/Discovery/Search/AdvancedSearch.js +34 -0
- package/dist/dts/features/Discovery/Search/AdvancedSearch.js.map +1 -0
- package/dist/dts/features/Discovery/Search/AdvancedSearchPanel.d.ts +4 -0
- package/dist/dts/features/Discovery/Search/AdvancedSearchPanel.d.ts.map +1 -0
- package/dist/dts/features/Discovery/Search/AdvancedSearchPanel.js +21 -0
- package/dist/dts/features/Discovery/Search/AdvancedSearchPanel.js.map +1 -0
- package/dist/dts/features/Discovery/Search/AiSearch.d.ts +12 -0
- package/dist/dts/features/Discovery/Search/AiSearch.d.ts.map +1 -0
- package/dist/dts/features/Discovery/Search/AiSearch.js +210 -0
- package/dist/dts/features/Discovery/Search/AiSearch.js.map +1 -0
- package/dist/dts/features/Discovery/Search/SearchFilters.d.ts +12 -0
- package/dist/dts/features/Discovery/Search/SearchFilters.d.ts.map +1 -0
- package/dist/dts/features/Discovery/Search/SearchFilters.js +40 -0
- package/dist/dts/features/Discovery/Search/SearchFilters.js.map +1 -0
- package/dist/dts/features/Discovery/Search/SearchInput.d.ts +4 -0
- package/dist/dts/features/Discovery/Search/SearchInput.d.ts.map +1 -0
- package/dist/dts/features/Discovery/Search/SearchInput.js +19 -0
- package/dist/dts/features/Discovery/Search/SearchInput.js.map +1 -0
- package/dist/dts/features/Discovery/Search/SearchInputWithSuggestions.d.ts +8 -0
- package/dist/dts/features/Discovery/Search/SearchInputWithSuggestions.d.ts.map +1 -0
- package/dist/dts/features/Discovery/Search/SearchInputWithSuggestions.js +20 -0
- package/dist/dts/features/Discovery/Search/SearchInputWithSuggestions.js.map +1 -0
- package/dist/dts/features/Discovery/Search/tests/utils.unit.test.d.ts +2 -0
- package/dist/dts/features/Discovery/Search/tests/utils.unit.test.d.ts.map +1 -0
- package/dist/dts/features/Discovery/Search/tests/utils.unit.test.js +86 -0
- package/dist/dts/features/Discovery/Search/tests/utils.unit.test.js.map +1 -0
- package/dist/dts/features/Discovery/Search/types.d.ts +22 -0
- package/dist/dts/features/Discovery/Search/types.d.ts.map +1 -0
- package/dist/dts/features/Discovery/Search/types.js +12 -0
- package/dist/dts/features/Discovery/Search/types.js.map +1 -0
- package/dist/dts/features/Discovery/Search/utils.d.ts +5 -0
- package/dist/dts/features/Discovery/Search/utils.d.ts.map +1 -0
- package/dist/dts/features/Discovery/Search/utils.js +50 -0
- package/dist/dts/features/Discovery/Search/utils.js.map +1 -0
- package/dist/dts/features/Discovery/Statistics/StatisticsRendererFactory.d.ts +9 -0
- package/dist/dts/features/Discovery/Statistics/StatisticsRendererFactory.d.ts.map +1 -0
- package/dist/dts/features/Discovery/Statistics/StatisticsRendererFactory.js +44 -0
- package/dist/dts/features/Discovery/Statistics/StatisticsRendererFactory.js.map +1 -0
- package/dist/dts/features/Discovery/Statistics/SummaryStatisticPanel.d.ts +7 -0
- package/dist/dts/features/Discovery/Statistics/SummaryStatisticPanel.d.ts.map +1 -0
- package/dist/dts/features/Discovery/Statistics/SummaryStatisticPanel.js +37 -0
- package/dist/dts/features/Discovery/Statistics/SummaryStatisticPanel.js.map +1 -0
- package/dist/dts/features/Discovery/Statistics/index.d.ts +3 -0
- package/dist/dts/features/Discovery/Statistics/index.d.ts.map +1 -0
- package/dist/dts/features/Discovery/Statistics/index.js +2 -0
- package/dist/dts/features/Discovery/Statistics/index.js.map +1 -0
- package/dist/dts/features/Discovery/Statistics/types.d.ts +20 -0
- package/dist/dts/features/Discovery/Statistics/types.d.ts.map +1 -0
- package/dist/dts/features/Discovery/Statistics/types.js +2 -0
- package/dist/dts/features/Discovery/Statistics/types.js.map +1 -0
- package/dist/dts/features/Discovery/StudyDetails/DetailsAuthorizationIcon.d.ts +9 -0
- package/dist/dts/features/Discovery/StudyDetails/DetailsAuthorizationIcon.d.ts.map +1 -0
- package/dist/dts/features/Discovery/StudyDetails/DetailsAuthorizationIcon.js +12 -0
- package/dist/dts/features/Discovery/StudyDetails/DetailsAuthorizationIcon.js.map +1 -0
- package/dist/dts/features/Discovery/StudyDetails/RendererFactory.d.ts +19 -0
- package/dist/dts/features/Discovery/StudyDetails/RendererFactory.d.ts.map +1 -0
- package/dist/dts/features/Discovery/StudyDetails/RendererFactory.js +56 -0
- package/dist/dts/features/Discovery/StudyDetails/RendererFactory.js.map +1 -0
- package/dist/dts/features/Discovery/StudyDetails/SinglePageStudyDetailsPanel.d.ts +14 -0
- package/dist/dts/features/Discovery/StudyDetails/SinglePageStudyDetailsPanel.d.ts.map +1 -0
- package/dist/dts/features/Discovery/StudyDetails/SinglePageStudyDetailsPanel.js +44 -0
- package/dist/dts/features/Discovery/StudyDetails/SinglePageStudyDetailsPanel.js.map +1 -0
- package/dist/dts/features/Discovery/StudyDetails/StudyDetails.d.ts +3 -0
- package/dist/dts/features/Discovery/StudyDetails/StudyDetails.d.ts.map +1 -0
- package/dist/dts/features/Discovery/StudyDetails/StudyDetails.js +37 -0
- package/dist/dts/features/Discovery/StudyDetails/StudyDetails.js.map +1 -0
- package/dist/dts/features/Discovery/StudyDetails/StudyDetailsPanel.d.ts +10 -0
- package/dist/dts/features/Discovery/StudyDetails/StudyDetailsPanel.d.ts.map +1 -0
- package/dist/dts/features/Discovery/StudyDetails/StudyDetailsPanel.js +19 -0
- package/dist/dts/features/Discovery/StudyDetails/StudyDetailsPanel.js.map +1 -0
- package/dist/dts/features/Discovery/StudyDetails/StudyGroup.d.ts +8 -0
- package/dist/dts/features/Discovery/StudyDetails/StudyGroup.d.ts.map +1 -0
- package/dist/dts/features/Discovery/StudyDetails/StudyGroup.js +31 -0
- package/dist/dts/features/Discovery/StudyDetails/StudyGroup.js.map +1 -0
- package/dist/dts/features/Discovery/StudyDetails/StudyGroupPanel.d.ts +9 -0
- package/dist/dts/features/Discovery/StudyDetails/StudyGroupPanel.d.ts.map +1 -0
- package/dist/dts/features/Discovery/StudyDetails/StudyGroupPanel.js +11 -0
- package/dist/dts/features/Discovery/StudyDetails/StudyGroupPanel.js.map +1 -0
- package/dist/dts/features/Discovery/StudyDetails/StudyItems.d.ts +5 -0
- package/dist/dts/features/Discovery/StudyDetails/StudyItems.d.ts.map +1 -0
- package/dist/dts/features/Discovery/StudyDetails/StudyItems.js +281 -0
- package/dist/dts/features/Discovery/StudyDetails/StudyItems.js.map +1 -0
- package/dist/dts/features/Discovery/StudyPage/DownloadLinksPanel.d.ts +10 -0
- package/dist/dts/features/Discovery/StudyPage/DownloadLinksPanel.d.ts.map +1 -0
- package/dist/dts/features/Discovery/StudyPage/DownloadLinksPanel.js +44 -0
- package/dist/dts/features/Discovery/StudyPage/DownloadLinksPanel.js.map +1 -0
- package/dist/dts/features/Discovery/StudyPage/StudyPage.d.ts +10 -0
- package/dist/dts/features/Discovery/StudyPage/StudyPage.d.ts.map +1 -0
- package/dist/dts/features/Discovery/StudyPage/StudyPage.js +11 -0
- package/dist/dts/features/Discovery/StudyPage/StudyPage.js.map +1 -0
- package/dist/dts/features/Discovery/StudyPage/StudyPageGroup.d.ts +9 -0
- package/dist/dts/features/Discovery/StudyPage/StudyPageGroup.d.ts.map +1 -0
- package/dist/dts/features/Discovery/StudyPage/StudyPageGroup.js +8 -0
- package/dist/dts/features/Discovery/StudyPage/StudyPageGroup.js.map +1 -0
- package/dist/dts/features/Discovery/TableRenderers/CellRendererFactory.d.ts +22 -0
- package/dist/dts/features/Discovery/TableRenderers/CellRendererFactory.d.ts.map +1 -0
- package/dist/dts/features/Discovery/TableRenderers/CellRendererFactory.js +65 -0
- package/dist/dts/features/Discovery/TableRenderers/CellRendererFactory.js.map +1 -0
- package/dist/dts/features/Discovery/TableRenderers/CellRenderers.d.ts +35 -0
- package/dist/dts/features/Discovery/TableRenderers/CellRenderers.d.ts.map +1 -0
- package/dist/dts/features/Discovery/TableRenderers/CellRenderers.js +201 -0
- package/dist/dts/features/Discovery/TableRenderers/CellRenderers.js.map +1 -0
- package/dist/dts/features/Discovery/TableRenderers/DataAccessCellRenderers.d.ts +3 -0
- package/dist/dts/features/Discovery/TableRenderers/DataAccessCellRenderers.d.ts.map +1 -0
- package/dist/dts/features/Discovery/TableRenderers/DataAccessCellRenderers.js +21 -0
- package/dist/dts/features/Discovery/TableRenderers/DataAccessCellRenderers.js.map +1 -0
- package/dist/dts/features/Discovery/TableRenderers/RowRendererFactory.d.ts +23 -0
- package/dist/dts/features/Discovery/TableRenderers/RowRendererFactory.d.ts.map +1 -0
- package/dist/dts/features/Discovery/TableRenderers/RowRendererFactory.js +57 -0
- package/dist/dts/features/Discovery/TableRenderers/RowRendererFactory.js.map +1 -0
- package/dist/dts/features/Discovery/TableRenderers/RowRenderers.d.ts +16 -0
- package/dist/dts/features/Discovery/TableRenderers/RowRenderers.d.ts.map +1 -0
- package/dist/dts/features/Discovery/TableRenderers/RowRenderers.js +23 -0
- package/dist/dts/features/Discovery/TableRenderers/RowRenderers.js.map +1 -0
- package/dist/dts/features/Discovery/TableRenderers/types.d.ts +15 -0
- package/dist/dts/features/Discovery/TableRenderers/types.d.ts.map +1 -0
- package/dist/dts/features/Discovery/TableRenderers/types.js +2 -0
- package/dist/dts/features/Discovery/TableRenderers/types.js.map +1 -0
- package/dist/dts/features/Discovery/TagCloud.d.ts +3 -0
- package/dist/dts/features/Discovery/TagCloud.d.ts.map +1 -0
- package/dist/dts/features/Discovery/TagCloud.js +12 -0
- package/dist/dts/features/Discovery/TagCloud.js.map +1 -0
- package/dist/dts/features/Discovery/index.d.ts +15 -0
- package/dist/dts/features/Discovery/index.d.ts.map +1 -0
- package/dist/dts/features/Discovery/index.js +12 -0
- package/dist/dts/features/Discovery/index.js.map +1 -0
- package/dist/dts/features/Discovery/types.d.ts +239 -0
- package/dist/dts/features/Discovery/types.d.ts.map +1 -0
- package/dist/dts/features/Discovery/types.js +23 -0
- package/dist/dts/features/Discovery/types.js.map +1 -0
- package/dist/dts/features/Discovery/utils/processDataAccess.d.ts +3 -0
- package/dist/dts/features/Discovery/utils/processDataAccess.d.ts.map +1 -0
- package/dist/dts/features/Discovery/utils/processDataAccess.js +73 -0
- package/dist/dts/features/Discovery/utils/processDataAccess.js.map +1 -0
- package/dist/dts/features/Discovery/utils/processDownloadData.d.ts +3 -0
- package/dist/dts/features/Discovery/utils/processDownloadData.d.ts.map +1 -0
- package/dist/dts/features/Discovery/utils/processDownloadData.js +14 -0
- package/dist/dts/features/Discovery/utils/processDownloadData.js.map +1 -0
- package/dist/dts/features/Discovery/utils.d.ts +12 -0
- package/dist/dts/features/Discovery/utils.d.ts.map +1 -0
- package/dist/dts/features/Discovery/utils.js +32 -0
- package/dist/dts/features/Discovery/utils.js.map +1 -0
- package/dist/dts/features/Navigation/ActionMenu.d.ts +7 -0
- package/dist/dts/features/Navigation/ActionMenu.d.ts.map +1 -0
- package/dist/dts/features/Navigation/ActionMenu.js +14 -0
- package/dist/dts/features/Navigation/ActionMenu.js.map +1 -0
- package/dist/dts/features/Navigation/Footer.d.ts +4 -0
- package/dist/dts/features/Navigation/Footer.d.ts.map +1 -0
- package/dist/dts/features/Navigation/Footer.js +48 -0
- package/dist/dts/features/Navigation/Footer.js.map +1 -0
- package/dist/dts/features/Navigation/Gen3Link.d.ts +13 -0
- package/dist/dts/features/Navigation/Gen3Link.d.ts.map +1 -0
- package/dist/dts/features/Navigation/Gen3Link.js +20 -0
- package/dist/dts/features/Navigation/Gen3Link.js.map +1 -0
- package/dist/dts/features/Navigation/Header.d.ts +13 -0
- package/dist/dts/features/Navigation/Header.d.ts.map +1 -0
- package/dist/dts/features/Navigation/Header.js +30 -0
- package/dist/dts/features/Navigation/Header.js.map +1 -0
- package/dist/dts/features/Navigation/HorizontalClean/HorizontalNavigationBar.d.ts +10 -0
- package/dist/dts/features/Navigation/HorizontalClean/HorizontalNavigationBar.d.ts.map +1 -0
- package/dist/dts/features/Navigation/HorizontalClean/HorizontalNavigationBar.js +34 -0
- package/dist/dts/features/Navigation/HorizontalClean/HorizontalNavigationBar.js.map +1 -0
- package/dist/dts/features/Navigation/HoverLink.d.ts +20 -0
- package/dist/dts/features/Navigation/HoverLink.d.ts.map +1 -0
- package/dist/dts/features/Navigation/HoverLink.js +17 -0
- package/dist/dts/features/Navigation/HoverLink.js.map +1 -0
- package/dist/dts/features/Navigation/NavPageLayout.d.ts +11 -0
- package/dist/dts/features/Navigation/NavPageLayout.d.ts.map +1 -0
- package/dist/dts/features/Navigation/NavPageLayout.js +25 -0
- package/dist/dts/features/Navigation/NavPageLayout.js.map +1 -0
- package/dist/dts/features/Navigation/NavigationBar.d.ts +12 -0
- package/dist/dts/features/Navigation/NavigationBar.d.ts.map +1 -0
- package/dist/dts/features/Navigation/NavigationBar.js +48 -0
- package/dist/dts/features/Navigation/NavigationBar.js.map +1 -0
- package/dist/dts/features/Navigation/NavigationBarButton.d.ts +13 -0
- package/dist/dts/features/Navigation/NavigationBarButton.d.ts.map +1 -0
- package/dist/dts/features/Navigation/NavigationBarButton.js +41 -0
- package/dist/dts/features/Navigation/NavigationBarButton.js.map +1 -0
- package/dist/dts/features/Navigation/NavigationButton.d.ts +8 -0
- package/dist/dts/features/Navigation/NavigationButton.d.ts.map +1 -0
- package/dist/dts/features/Navigation/NavigationButton.js +30 -0
- package/dist/dts/features/Navigation/NavigationButton.js.map +1 -0
- package/dist/dts/features/Navigation/NavigationLogo.d.ts +4 -0
- package/dist/dts/features/Navigation/NavigationLogo.d.ts.map +1 -0
- package/dist/dts/features/Navigation/NavigationLogo.js +19 -0
- package/dist/dts/features/Navigation/NavigationLogo.js.map +1 -0
- package/dist/dts/features/Navigation/TopBar.d.ts +20 -0
- package/dist/dts/features/Navigation/TopBar.d.ts.map +1 -0
- package/dist/dts/features/Navigation/TopBar.js +36 -0
- package/dist/dts/features/Navigation/TopBar.js.map +1 -0
- package/dist/dts/features/Navigation/Vertical/LeftSidePanel.d.ts +5 -0
- package/dist/dts/features/Navigation/Vertical/LeftSidePanel.d.ts.map +1 -0
- package/dist/dts/features/Navigation/Vertical/LeftSidePanel.js +16 -0
- package/dist/dts/features/Navigation/Vertical/LeftSidePanel.js.map +1 -0
- package/dist/dts/features/Navigation/Vertical/VerticalTopBar.d.ts +8 -0
- package/dist/dts/features/Navigation/Vertical/VerticalTopBar.d.ts.map +1 -0
- package/dist/dts/features/Navigation/Vertical/VerticalTopBar.js +30 -0
- package/dist/dts/features/Navigation/Vertical/VerticalTopBar.js.map +1 -0
- package/dist/dts/features/Navigation/index.d.ts +11 -0
- package/dist/dts/features/Navigation/index.d.ts.map +1 -0
- package/dist/dts/features/Navigation/index.js +10 -0
- package/dist/dts/features/Navigation/index.js.map +1 -0
- package/dist/dts/features/Navigation/style.d.ts +5 -0
- package/dist/dts/features/Navigation/style.d.ts.map +1 -0
- package/dist/dts/features/Navigation/style.js +5 -0
- package/dist/dts/features/Navigation/style.js.map +1 -0
- package/dist/dts/features/Navigation/types.d.ts +66 -0
- package/dist/dts/features/Navigation/types.d.ts.map +1 -0
- package/dist/dts/features/Navigation/types.js +2 -0
- package/dist/dts/features/Navigation/types.js.map +1 -0
- package/dist/dts/features/Navigation/utils.d.ts +2 -0
- package/dist/dts/features/Navigation/utils.d.ts.map +1 -0
- package/dist/dts/features/Navigation/utils.js +7 -0
- package/dist/dts/features/Navigation/utils.js.map +1 -0
- package/dist/dts/features/Profile/Profile.d.ts +7 -0
- package/dist/dts/features/Profile/Profile.d.ts.map +1 -0
- package/dist/dts/features/Profile/Profile.js +25 -0
- package/dist/dts/features/Profile/Profile.js.map +1 -0
- package/dist/dts/features/Profile/index.d.ts +3 -0
- package/dist/dts/features/Profile/index.d.ts.map +1 -0
- package/dist/dts/features/Profile/index.js +3 -0
- package/dist/dts/features/Profile/index.js.map +1 -0
- package/dist/dts/features/Query/GqlQueryEditor.d.ts +10 -0
- package/dist/dts/features/Query/GqlQueryEditor.d.ts.map +1 -0
- package/dist/dts/features/Query/GqlQueryEditor.js +69 -0
- package/dist/dts/features/Query/GqlQueryEditor.js.map +1 -0
- package/dist/dts/features/Query/QueryPanel.d.ts +7 -0
- package/dist/dts/features/Query/QueryPanel.d.ts.map +1 -0
- package/dist/dts/features/Query/QueryPanel.js +16 -0
- package/dist/dts/features/Query/QueryPanel.js.map +1 -0
- package/dist/dts/features/Query/index.d.ts +3 -0
- package/dist/dts/features/Query/index.d.ts.map +1 -0
- package/dist/dts/features/Query/index.js +3 -0
- package/dist/dts/features/Query/index.js.map +1 -0
- package/dist/dts/features/Query/types.d.ts +7 -0
- package/dist/dts/features/Query/types.d.ts.map +1 -0
- package/dist/dts/features/Query/types.js +2 -0
- package/dist/dts/features/Query/types.js.map +1 -0
- package/dist/dts/features/Submission/SubmissionPanel.d.ts +7 -0
- package/dist/dts/features/Submission/SubmissionPanel.d.ts.map +1 -0
- package/dist/dts/features/Submission/SubmissionPanel.js +13 -0
- package/dist/dts/features/Submission/SubmissionPanel.js.map +1 -0
- package/dist/dts/features/Submission/Tables/ProjectTable.d.ts +4 -0
- package/dist/dts/features/Submission/Tables/ProjectTable.d.ts.map +1 -0
- package/dist/dts/features/Submission/Tables/ProjectTable.js +102 -0
- package/dist/dts/features/Submission/Tables/ProjectTable.js.map +1 -0
- package/dist/dts/features/Submission/Tables/SubmissionsTable.d.ts +3 -0
- package/dist/dts/features/Submission/Tables/SubmissionsTable.d.ts.map +1 -0
- package/dist/dts/features/Submission/Tables/SubmissionsTable.js +95 -0
- package/dist/dts/features/Submission/Tables/SubmissionsTable.js.map +1 -0
- package/dist/dts/features/Submission/Tables/hooks.d.ts +1 -0
- package/dist/dts/features/Submission/Tables/hooks.d.ts.map +1 -0
- package/dist/dts/features/Submission/Tables/hooks.js +2 -0
- package/dist/dts/features/Submission/Tables/hooks.js.map +1 -0
- package/dist/dts/features/Submission/index.d.ts +3 -0
- package/dist/dts/features/Submission/index.d.ts.map +1 -0
- package/dist/dts/features/Submission/index.js +3 -0
- package/dist/dts/features/Submission/index.js.map +1 -0
- package/dist/dts/features/Submission/types.d.ts +13 -0
- package/dist/dts/features/Submission/types.d.ts.map +1 -0
- package/dist/dts/features/Submission/types.js +2 -0
- package/dist/dts/features/Submission/types.js.map +1 -0
- package/dist/dts/features/Submission/utils.d.ts +4 -0
- package/dist/dts/features/Submission/utils.d.ts.map +1 -0
- package/dist/dts/features/Submission/utils.js +13 -0
- package/dist/dts/features/Submission/utils.js.map +1 -0
- package/dist/dts/features/Theme/ColorTheme.d.ts +6 -0
- package/dist/dts/features/Theme/ColorTheme.d.ts.map +1 -0
- package/dist/dts/features/Theme/ColorTheme.js +225 -0
- package/dist/dts/features/Theme/ColorTheme.js.map +1 -0
- package/dist/dts/features/Theme/index.d.ts +3 -0
- package/dist/dts/features/Theme/index.d.ts.map +1 -0
- package/dist/dts/features/Theme/index.js +3 -0
- package/dist/dts/features/Theme/index.js.map +1 -0
- package/dist/dts/features/Workspace/WorkspacesPanel.d.ts +3 -0
- package/dist/dts/features/Workspace/WorkspacesPanel.d.ts.map +1 -0
- package/dist/dts/features/Workspace/WorkspacesPanel.js +7 -0
- package/dist/dts/features/Workspace/WorkspacesPanel.js.map +1 -0
- package/dist/dts/features/Workspace/index.d.ts +4 -0
- package/dist/dts/features/Workspace/index.d.ts.map +1 -0
- package/dist/dts/features/Workspace/index.js +3 -0
- package/dist/dts/features/Workspace/index.js.map +1 -0
- package/dist/dts/features/Workspace/types.d.ts +4 -0
- package/dist/dts/features/Workspace/types.d.ts.map +1 -0
- package/dist/dts/features/Workspace/types.js +2 -0
- package/dist/dts/features/Workspace/types.js.map +1 -0
- package/dist/dts/features/authorization/utils.d.ts +3 -0
- package/dist/dts/features/authorization/utils.d.ts.map +1 -0
- package/dist/dts/features/authorization/utils.js +15 -0
- package/dist/dts/features/authorization/utils.js.map +1 -0
- package/dist/dts/index.d.ts +48 -0
- package/dist/dts/index.d.ts.map +1 -0
- package/dist/dts/index.js +48 -0
- package/dist/dts/index.js.map +1 -0
- package/dist/dts/lib/common/staticProps.d.ts +8 -0
- package/dist/dts/lib/common/staticProps.d.ts.map +1 -0
- package/dist/dts/lib/common/staticProps.js +72 -0
- package/dist/dts/lib/common/staticProps.js.map +1 -0
- package/dist/dts/lib/content/ContentDatabase.d.ts +15 -0
- package/dist/dts/lib/content/ContentDatabase.d.ts.map +1 -0
- package/dist/dts/lib/content/ContentDatabase.js +52 -0
- package/dist/dts/lib/content/ContentDatabase.js.map +1 -0
- package/dist/dts/lib/content/constants.d.ts +2 -0
- package/dist/dts/lib/content/constants.d.ts.map +1 -0
- package/dist/dts/lib/content/constants.js +2 -0
- package/dist/dts/lib/content/constants.js.map +1 -0
- package/dist/dts/lib/content/filesystem.d.ts +9 -0
- package/dist/dts/lib/content/filesystem.d.ts.map +1 -0
- package/dist/dts/lib/content/filesystem.js +64 -0
- package/dist/dts/lib/content/filesystem.js.map +1 -0
- package/dist/dts/lib/content/index.d.ts +4 -0
- package/dist/dts/lib/content/index.d.ts.map +1 -0
- package/dist/dts/lib/content/index.js +11 -0
- package/dist/dts/lib/content/index.js.map +1 -0
- package/dist/dts/lib/content/types.d.ts +24 -0
- package/dist/dts/lib/content/types.d.ts.map +1 -0
- package/dist/dts/lib/content/types.js +2 -0
- package/dist/dts/lib/content/types.js.map +1 -0
- package/dist/dts/lib/session/hooks.d.ts +26 -0
- package/dist/dts/lib/session/hooks.d.ts.map +1 -0
- package/dist/dts/lib/session/hooks.js +115 -0
- package/dist/dts/lib/session/hooks.js.map +1 -0
- package/dist/dts/lib/session/session.d.ts +28 -0
- package/dist/dts/lib/session/session.d.ts.map +1 -0
- package/dist/dts/lib/session/session.js +290 -0
- package/dist/dts/lib/session/session.js.map +1 -0
- package/dist/dts/lib/session/types.d.ts +44 -0
- package/dist/dts/lib/session/types.d.ts.map +1 -0
- package/dist/dts/lib/session/types.js +2 -0
- package/dist/dts/lib/session/types.js.map +1 -0
- package/dist/dts/lib/session/utils.d.ts +3 -0
- package/dist/dts/lib/session/utils.d.ts.map +1 -0
- package/dist/dts/lib/session/utils.js +12 -0
- package/dist/dts/lib/session/utils.js.map +1 -0
- package/dist/dts/pages/404/Custom404Page.d.ts +4 -0
- package/dist/dts/pages/404/Custom404Page.d.ts.map +1 -0
- package/dist/dts/pages/404/Custom404Page.js +9 -0
- package/dist/dts/pages/404/Custom404Page.js.map +1 -0
- package/dist/dts/pages/404/index.d.ts +2 -0
- package/dist/dts/pages/404/index.d.ts.map +1 -0
- package/dist/dts/pages/404/index.js +2 -0
- package/dist/dts/pages/404/index.js.map +1 -0
- package/dist/dts/pages/AiSearch/AiSearch.d.ts +4 -0
- package/dist/dts/pages/AiSearch/AiSearch.d.ts.map +1 -0
- package/dist/dts/pages/AiSearch/AiSearch.js +13 -0
- package/dist/dts/pages/AiSearch/AiSearch.js.map +1 -0
- package/dist/dts/pages/AiSearch/data.d.ts +4 -0
- package/dist/dts/pages/AiSearch/data.d.ts.map +1 -0
- package/dist/dts/pages/AiSearch/data.js +84 -0
- package/dist/dts/pages/AiSearch/data.js.map +1 -0
- package/dist/dts/pages/AiSearch/index.d.ts +3 -0
- package/dist/dts/pages/AiSearch/index.d.ts.map +1 -0
- package/dist/dts/pages/AiSearch/index.js +3 -0
- package/dist/dts/pages/AiSearch/index.js.map +1 -0
- package/dist/dts/pages/Crosswalk/Crosswalk.d.ts +4 -0
- package/dist/dts/pages/Crosswalk/Crosswalk.d.ts.map +1 -0
- package/dist/dts/pages/Crosswalk/Crosswalk.js +24 -0
- package/dist/dts/pages/Crosswalk/Crosswalk.js.map +1 -0
- package/dist/dts/pages/Crosswalk/data.d.ts +16 -0
- package/dist/dts/pages/Crosswalk/data.d.ts.map +1 -0
- package/dist/dts/pages/Crosswalk/data.js +78 -0
- package/dist/dts/pages/Crosswalk/data.js.map +1 -0
- package/dist/dts/pages/Crosswalk/index.d.ts +3 -0
- package/dist/dts/pages/Crosswalk/index.d.ts.map +1 -0
- package/dist/dts/pages/Crosswalk/index.js +3 -0
- package/dist/dts/pages/Crosswalk/index.js.map +1 -0
- package/dist/dts/pages/Crosswalk/types.d.ts +6 -0
- package/dist/dts/pages/Crosswalk/types.d.ts.map +1 -0
- package/dist/dts/pages/Crosswalk/types.js +2 -0
- package/dist/dts/pages/Crosswalk/types.js.map +1 -0
- package/dist/dts/pages/DataDictionary/DataDictionary.d.ts +4 -0
- package/dist/dts/pages/DataDictionary/DataDictionary.d.ts.map +1 -0
- package/dist/dts/pages/DataDictionary/DataDictionary.js +13 -0
- package/dist/dts/pages/DataDictionary/DataDictionary.js.map +1 -0
- package/dist/dts/pages/DataDictionary/data.d.ts +4 -0
- package/dist/dts/pages/DataDictionary/data.d.ts.map +1 -0
- package/dist/dts/pages/DataDictionary/data.js +84 -0
- package/dist/dts/pages/DataDictionary/data.js.map +1 -0
- package/dist/dts/pages/DataDictionary/index.d.ts +3 -0
- package/dist/dts/pages/DataDictionary/index.d.ts.map +1 -0
- package/dist/dts/pages/DataDictionary/index.js +3 -0
- package/dist/dts/pages/DataDictionary/index.js.map +1 -0
- package/dist/dts/pages/DataDictionary/types.d.ts +4 -0
- package/dist/dts/pages/DataDictionary/types.d.ts.map +1 -0
- package/dist/dts/pages/DataDictionary/types.js +2 -0
- package/dist/dts/pages/DataDictionary/types.js.map +1 -0
- package/dist/dts/pages/Discovery/Discovery.d.ts +4 -0
- package/dist/dts/pages/Discovery/Discovery.d.ts.map +1 -0
- package/dist/dts/pages/Discovery/Discovery.js +20 -0
- package/dist/dts/pages/Discovery/Discovery.js.map +1 -0
- package/dist/dts/pages/Discovery/data.d.ts +4 -0
- package/dist/dts/pages/Discovery/data.d.ts.map +1 -0
- package/dist/dts/pages/Discovery/data.js +78 -0
- package/dist/dts/pages/Discovery/data.js.map +1 -0
- package/dist/dts/pages/Discovery/index.d.ts +3 -0
- package/dist/dts/pages/Discovery/index.d.ts.map +1 -0
- package/dist/dts/pages/Discovery/index.js +3 -0
- package/dist/dts/pages/Discovery/index.js.map +1 -0
- package/dist/dts/pages/Discovery/types.d.ts +4 -0
- package/dist/dts/pages/Discovery/types.d.ts.map +1 -0
- package/dist/dts/pages/Discovery/types.js +2 -0
- package/dist/dts/pages/Discovery/types.js.map +1 -0
- package/dist/dts/pages/Explorer/Explorer.d.ts +4 -0
- package/dist/dts/pages/Explorer/Explorer.d.ts.map +1 -0
- package/dist/dts/pages/Explorer/Explorer.js +20 -0
- package/dist/dts/pages/Explorer/Explorer.js.map +1 -0
- package/dist/dts/pages/Explorer/data.d.ts +4 -0
- package/dist/dts/pages/Explorer/data.d.ts.map +1 -0
- package/dist/dts/pages/Explorer/data.js +78 -0
- package/dist/dts/pages/Explorer/data.js.map +1 -0
- package/dist/dts/pages/Explorer/index.d.ts +3 -0
- package/dist/dts/pages/Explorer/index.d.ts.map +1 -0
- package/dist/dts/pages/Explorer/index.js +3 -0
- package/dist/dts/pages/Explorer/index.js.map +1 -0
- package/dist/dts/pages/Explorer/types.d.ts +4 -0
- package/dist/dts/pages/Explorer/types.d.ts.map +1 -0
- package/dist/dts/pages/Explorer/types.js +2 -0
- package/dist/dts/pages/Explorer/types.js.map +1 -0
- package/dist/dts/pages/Landing/Landing.d.ts +8 -0
- package/dist/dts/pages/Landing/Landing.d.ts.map +1 -0
- package/dist/dts/pages/Landing/Landing.js +15 -0
- package/dist/dts/pages/Landing/Landing.js.map +1 -0
- package/dist/dts/pages/Landing/about-us.d.ts +6 -0
- package/dist/dts/pages/Landing/about-us.d.ts.map +1 -0
- package/dist/dts/pages/Landing/about-us.js +81 -0
- package/dist/dts/pages/Landing/about-us.js.map +1 -0
- package/dist/dts/pages/Landing/contact.d.ts +6 -0
- package/dist/dts/pages/Landing/contact.d.ts.map +1 -0
- package/dist/dts/pages/Landing/contact.js +78 -0
- package/dist/dts/pages/Landing/contact.js.map +1 -0
- package/dist/dts/pages/Landing/data.d.ts +3 -0
- package/dist/dts/pages/Landing/data.d.ts.map +1 -0
- package/dist/dts/pages/Landing/data.js +67 -0
- package/dist/dts/pages/Landing/data.js.map +1 -0
- package/dist/dts/pages/Landing/index.d.ts +3 -0
- package/dist/dts/pages/Landing/index.d.ts.map +1 -0
- package/dist/dts/pages/Landing/index.js +3 -0
- package/dist/dts/pages/Landing/index.js.map +1 -0
- package/dist/dts/pages/Landing/resource.d.ts +10 -0
- package/dist/dts/pages/Landing/resource.d.ts.map +1 -0
- package/dist/dts/pages/Landing/resource.js +80 -0
- package/dist/dts/pages/Landing/resource.js.map +1 -0
- package/dist/dts/pages/Login/Login.d.ts +4 -0
- package/dist/dts/pages/Login/Login.d.ts.map +1 -0
- package/dist/dts/pages/Login/Login.js +24 -0
- package/dist/dts/pages/Login/Login.js.map +1 -0
- package/dist/dts/pages/Login/data.d.ts +4 -0
- package/dist/dts/pages/Login/data.d.ts.map +1 -0
- package/dist/dts/pages/Login/data.js +67 -0
- package/dist/dts/pages/Login/data.js.map +1 -0
- package/dist/dts/pages/Login/index.d.ts +3 -0
- package/dist/dts/pages/Login/index.d.ts.map +1 -0
- package/dist/dts/pages/Login/index.js +3 -0
- package/dist/dts/pages/Login/index.js.map +1 -0
- package/dist/dts/pages/Login/types.d.ts +6 -0
- package/dist/dts/pages/Login/types.d.ts.map +1 -0
- package/dist/dts/pages/Login/types.js +2 -0
- package/dist/dts/pages/Login/types.js.map +1 -0
- package/dist/dts/pages/Profile/Profile.d.ts +8 -0
- package/dist/dts/pages/Profile/Profile.d.ts.map +1 -0
- package/dist/dts/pages/Profile/Profile.js +13 -0
- package/dist/dts/pages/Profile/Profile.js.map +1 -0
- package/dist/dts/pages/Profile/data.d.ts +4 -0
- package/dist/dts/pages/Profile/data.d.ts.map +1 -0
- package/dist/dts/pages/Profile/data.js +67 -0
- package/dist/dts/pages/Profile/data.js.map +1 -0
- package/dist/dts/pages/Profile/index.d.ts +3 -0
- package/dist/dts/pages/Profile/index.d.ts.map +1 -0
- package/dist/dts/pages/Profile/index.js +3 -0
- package/dist/dts/pages/Profile/index.js.map +1 -0
- package/dist/dts/pages/Query/Query.d.ts +4 -0
- package/dist/dts/pages/Query/Query.d.ts.map +1 -0
- package/dist/dts/pages/Query/Query.js +13 -0
- package/dist/dts/pages/Query/Query.js.map +1 -0
- package/dist/dts/pages/Query/data.d.ts +4 -0
- package/dist/dts/pages/Query/data.d.ts.map +1 -0
- package/dist/dts/pages/Query/data.js +67 -0
- package/dist/dts/pages/Query/data.js.map +1 -0
- package/dist/dts/pages/Query/index.d.ts +3 -0
- package/dist/dts/pages/Query/index.d.ts.map +1 -0
- package/dist/dts/pages/Query/index.js +3 -0
- package/dist/dts/pages/Query/index.js.map +1 -0
- package/dist/dts/pages/Query/types.d.ts +8 -0
- package/dist/dts/pages/Query/types.d.ts.map +1 -0
- package/dist/dts/pages/Query/types.js +2 -0
- package/dist/dts/pages/Query/types.js.map +1 -0
- package/dist/dts/pages/Submission/Submission.d.ts +4 -0
- package/dist/dts/pages/Submission/Submission.d.ts.map +1 -0
- package/dist/dts/pages/Submission/Submission.js +13 -0
- package/dist/dts/pages/Submission/Submission.js.map +1 -0
- package/dist/dts/pages/Submission/data.d.ts +4 -0
- package/dist/dts/pages/Submission/data.d.ts.map +1 -0
- package/dist/dts/pages/Submission/data.js +78 -0
- package/dist/dts/pages/Submission/data.js.map +1 -0
- package/dist/dts/pages/Submission/index.d.ts +3 -0
- package/dist/dts/pages/Submission/index.d.ts.map +1 -0
- package/dist/dts/pages/Submission/index.js +3 -0
- package/dist/dts/pages/Submission/index.js.map +1 -0
- package/dist/dts/pages/Submission/types.d.ts +6 -0
- package/dist/dts/pages/Submission/types.d.ts.map +1 -0
- package/dist/dts/pages/Submission/types.js +2 -0
- package/dist/dts/pages/Submission/types.js.map +1 -0
- package/dist/dts/pages/Theme/Colors.d.ts +4 -0
- package/dist/dts/pages/Theme/Colors.d.ts.map +1 -0
- package/dist/dts/pages/Theme/Colors.js +13 -0
- package/dist/dts/pages/Theme/Colors.js.map +1 -0
- package/dist/dts/pages/Theme/data.d.ts +4 -0
- package/dist/dts/pages/Theme/data.d.ts.map +1 -0
- package/dist/dts/pages/Theme/data.js +63 -0
- package/dist/dts/pages/Theme/data.js.map +1 -0
- package/dist/dts/pages/Theme/index.d.ts +4 -0
- package/dist/dts/pages/Theme/index.d.ts.map +1 -0
- package/dist/dts/pages/Theme/index.js +3 -0
- package/dist/dts/pages/Theme/index.js.map +1 -0
- package/dist/dts/pages/Workspace/Workspaces.d.ts +4 -0
- package/dist/dts/pages/Workspace/Workspaces.d.ts.map +1 -0
- package/dist/dts/pages/Workspace/Workspaces.js +13 -0
- package/dist/dts/pages/Workspace/Workspaces.js.map +1 -0
- package/dist/dts/pages/Workspace/data.d.ts +4 -0
- package/dist/dts/pages/Workspace/data.d.ts.map +1 -0
- package/dist/dts/pages/Workspace/data.js +67 -0
- package/dist/dts/pages/Workspace/data.js.map +1 -0
- package/dist/dts/pages/Workspace/index.d.ts +3 -0
- package/dist/dts/pages/Workspace/index.d.ts.map +1 -0
- package/dist/dts/pages/Workspace/index.js +3 -0
- package/dist/dts/pages/Workspace/index.js.map +1 -0
- package/dist/dts/pages/Workspace/types.d.ts +6 -0
- package/dist/dts/pages/Workspace/types.d.ts.map +1 -0
- package/dist/dts/pages/Workspace/types.js +2 -0
- package/dist/dts/pages/Workspace/types.js.map +1 -0
- package/dist/dts/pages/[app].d.ts +2 -0
- package/dist/dts/pages/[app].d.ts.map +1 -0
- package/dist/dts/pages/[app].js +5 -0
- package/dist/dts/pages/[app].js.map +1 -0
- package/dist/dts/pages/_document.d.ts +6 -0
- package/dist/dts/pages/_document.d.ts.map +1 -0
- package/dist/dts/pages/_document.js +71 -0
- package/dist/dts/pages/_document.js.map +1 -0
- package/dist/dts/pages/admin/authz/Authz.d.ts +8 -0
- package/dist/dts/pages/admin/authz/Authz.d.ts.map +1 -0
- package/dist/dts/pages/admin/authz/Authz.js +13 -0
- package/dist/dts/pages/admin/authz/Authz.js.map +1 -0
- package/dist/dts/pages/admin/authz/data.d.ts +10 -0
- package/dist/dts/pages/admin/authz/data.d.ts.map +1 -0
- package/dist/dts/pages/admin/authz/data.js +85 -0
- package/dist/dts/pages/admin/authz/data.js.map +1 -0
- package/dist/dts/pages/admin/authz/index.d.ts +3 -0
- package/dist/dts/pages/admin/authz/index.d.ts.map +1 -0
- package/dist/dts/pages/admin/authz/index.js +3 -0
- package/dist/dts/pages/admin/authz/index.js.map +1 -0
- package/dist/dts/pages/api/content/content.d.ts +3 -0
- package/dist/dts/pages/api/content/content.d.ts.map +1 -0
- package/dist/dts/pages/api/content/content.js +53 -0
- package/dist/dts/pages/api/content/content.js.map +1 -0
- package/dist/dts/pages/external/footer.d.ts +6 -0
- package/dist/dts/pages/external/footer.d.ts.map +1 -0
- package/dist/dts/pages/external/footer.js +68 -0
- package/dist/dts/pages/external/footer.js.map +1 -0
- package/dist/dts/pages/index.d.ts +4 -0
- package/dist/dts/pages/index.d.ts.map +1 -0
- package/dist/dts/pages/index.js +55 -0
- package/dist/dts/pages/index.js.map +1 -0
- package/dist/dts/pages/utils/serverSideProps.d.ts +4 -0
- package/dist/dts/pages/utils/serverSideProps.d.ts.map +1 -0
- package/dist/dts/pages/utils/serverSideProps.js +63 -0
- package/dist/dts/pages/utils/serverSideProps.js.map +1 -0
- package/dist/dts/types/styling.d.ts +2 -0
- package/dist/dts/types/styling.d.ts.map +1 -0
- package/dist/dts/types/styling.js +2 -0
- package/dist/dts/types/styling.js.map +1 -0
- package/dist/dts/utils/RendererFactory.d.ts +71 -0
- package/dist/dts/utils/RendererFactory.d.ts.map +1 -0
- package/dist/dts/utils/RendererFactory.js +99 -0
- package/dist/dts/utils/RendererFactory.js.map +1 -0
- package/dist/dts/utils/authMapping.d.ts +4 -0
- package/dist/dts/utils/authMapping.d.ts.map +1 -0
- package/dist/dts/utils/authMapping.js +25 -0
- package/dist/dts/utils/authMapping.js.map +1 -0
- package/dist/dts/utils/colors.d.ts +6 -0
- package/dist/dts/utils/colors.d.ts.map +1 -0
- package/dist/dts/utils/colors.js +87 -0
- package/dist/dts/utils/colors.js.map +1 -0
- package/dist/dts/utils/download.d.ts +36 -0
- package/dist/dts/utils/download.d.ts.map +1 -0
- package/dist/dts/utils/download.js +220 -0
- package/dist/dts/utils/download.js.map +1 -0
- package/dist/dts/utils/focusStyle.d.ts +2 -0
- package/dist/dts/utils/focusStyle.d.ts.map +1 -0
- package/dist/dts/utils/focusStyle.js +2 -0
- package/dist/dts/utils/focusStyle.js.map +1 -0
- package/dist/dts/utils/hash.d.ts +2 -0
- package/dist/dts/utils/hash.d.ts.map +1 -0
- package/dist/dts/utils/hash.js +16 -0
- package/dist/dts/utils/hash.js.map +1 -0
- package/dist/dts/utils/index.d.ts +11 -0
- package/dist/dts/utils/index.d.ts.map +1 -0
- package/dist/dts/utils/index.js +9 -0
- package/dist/dts/utils/index.js.map +1 -0
- package/dist/dts/utils/isType.d.ts +4 -0
- package/dist/dts/utils/isType.d.ts.map +1 -0
- package/dist/dts/utils/isType.js +22 -0
- package/dist/dts/utils/isType.js.map +1 -0
- package/dist/dts/utils/labels.d.ts +8 -0
- package/dist/dts/utils/labels.d.ts.map +1 -0
- package/dist/dts/utils/labels.js +16 -0
- package/dist/dts/utils/labels.js.map +1 -0
- package/dist/dts/utils/mergeDefaultTailwindClassnames.d.ts +12 -0
- package/dist/dts/utils/mergeDefaultTailwindClassnames.d.ts.map +1 -0
- package/dist/dts/utils/mergeDefaultTailwindClassnames.js +34 -0
- package/dist/dts/utils/mergeDefaultTailwindClassnames.js.map +1 -0
- package/dist/dts/utils/strings.d.ts +2 -0
- package/dist/dts/utils/strings.d.ts.map +1 -0
- package/dist/dts/utils/strings.js +6 -0
- package/dist/dts/utils/strings.js.map +1 -0
- package/dist/dts/utils/tailwindConfig.d.ts +48 -0
- package/dist/dts/utils/tailwindConfig.d.ts.map +1 -0
- package/dist/dts/utils/tailwindConfig.js +180 -0
- package/dist/dts/utils/tailwindConfig.js.map +1 -0
- package/dist/dts/utils/tests/colors.unit.test.d.ts +2 -0
- package/dist/dts/utils/tests/colors.unit.test.d.ts.map +1 -0
- package/dist/dts/utils/tests/colors.unit.test.js +36 -0
- package/dist/dts/utils/tests/colors.unit.test.js.map +1 -0
- package/dist/dts/utils/time.d.ts +11 -0
- package/dist/dts/utils/time.d.ts.map +1 -0
- package/dist/dts/utils/time.js +15 -0
- package/dist/dts/utils/time.js.map +1 -0
- package/dist/dts/utils/types.d.ts +13 -0
- package/dist/dts/utils/types.d.ts.map +1 -0
- package/dist/dts/utils/types.js +2 -0
- package/dist/dts/utils/types.js.map +1 -0
- package/dist/dts/utils/useTraceUpdate.d.ts +14 -0
- package/dist/dts/utils/useTraceUpdate.d.ts.map +1 -0
- package/dist/dts/utils/useTraceUpdate.js +30 -0
- package/dist/dts/utils/useTraceUpdate.js.map +1 -0
- package/dist/dts/utils/values.d.ts +5 -0
- package/dist/dts/utils/values.d.ts.map +1 -0
- package/dist/dts/utils/values.js +19 -0
- package/dist/dts/utils/values.js.map +1 -0
- package/dist/esm/index.js +13460 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/styles.css +7 -0
- package/dist/esm/styles.css.map +1 -0
- package/dist/index.d.ts +1336 -0
- package/dist/styles.css +7 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +160 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/features/Navigation/Gen3Link.tsx","../../src/features/Navigation/utils.ts","../../src/utils/mergeDefaultTailwindClassnames.ts","../../src/features/Navigation/Footer.tsx","../../src/lib/session/utils.ts","../../src/api/auth/sessionToken.ts","../../src/lib/session/hooks.ts","../../src/lib/session/session.tsx","../../src/features/Navigation/style.ts","../../src/components/Login/types.ts","../../src/components/Login/LoginButton.tsx","../../src/components/Login/LoginAccountButton.tsx","../../src/features/Navigation/TopBar.tsx","../../src/features/Navigation/HoverLink.tsx","../../src/features/Navigation/NavigationLogo.tsx","../../src/features/Navigation/NavigationBarButton.tsx","../../src/features/Navigation/NavigationBar.tsx","../../src/features/Navigation/ActionMenu.tsx","../../src/features/Navigation/HorizontalClean/HorizontalNavigationBar.tsx","../../src/features/Navigation/Header.tsx","../../src/features/Navigation/NavigationButton.tsx","../../src/features/Navigation/Vertical/LeftSidePanel.tsx","../../src/features/Navigation/NavPageLayout.tsx","../../src/features/Discovery/utils.ts","../../src/features/Discovery/TableRenderers/CellRendererFactory.tsx","../../src/features/Discovery/TableRenderers/RowRenderers.tsx","../../src/features/Discovery/TableRenderers/RowRendererFactory.tsx","../../src/features/Discovery/DiscoveryProvider.tsx","../../src/features/Discovery/types.ts","../../src/features/Discovery/TableRenderers/DataAccessCellRenderers.tsx","../../src/utils/colors.ts","../../src/utils/time.ts","../../src/utils/authMapping.ts","../../src/utils/focusStyle.ts","../../src/utils/strings.ts","../../src/utils/isType.ts","../../src/components/DataItems/TruncatedStringWithTooltip.tsx","../../src/utils/values.ts","../../src/features/Discovery/TableRenderers/CellRenderers.tsx","../../src/features/Discovery/StudyDetails/RendererFactory.tsx","../../src/features/Discovery/StudyDetails/StudyItems.tsx","../../src/features/Discovery/StudyDetails/StudyGroup.tsx","../../src/features/Discovery/StudyDetails/StudyGroupPanel.tsx","../../src/features/Discovery/StudyDetails/StudyDetailsPanel.tsx","../../src/features/Discovery/StudyDetails/DetailsAuthorizationIcon.tsx","../../src/features/Discovery/StudyPage/DownloadLinksPanel.tsx","../../src/features/Discovery/StudyDetails/SinglePageStudyDetailsPanel.tsx","../../src/features/Discovery/StudyDetails/StudyDetails.tsx","../../src/components/Tables/TableIcons.tsx","../../src/features/Discovery/DiscoveryTable.tsx","../../src/components/CollapsableSidebar/use-collapsable-sidebar.ts","../../src/components/CollapsableSidebar/CollapsableSidebar.tsx","../../src/features/Discovery/Search/SearchFilters.tsx","../../src/features/Discovery/Search/types.ts","../../src/features/Discovery/Search/AdvancedSearch.tsx","../../src/features/Discovery/Search/AdvancedSearchPanel.tsx","../../src/features/Discovery/ActionBar/DataLibraryActionButton.tsx","../../src/features/Discovery/ActionBar/ActionBar.tsx","../../src/utils/RendererFactory.tsx","../../src/features/Discovery/Statistics/StatisticsRendererFactory.tsx","../../src/features/Discovery/Statistics/SummaryStatisticPanel.tsx","../../src/features/Discovery/DataLoaders/MDSAllLocal/filterByAdvSearch.ts","../../src/features/Discovery/Search/utils.ts","../../src/features/authorization/utils.ts","../../src/features/Discovery/DataLoaders/utils.ts","../../src/features/Discovery/DataLoaders/MDSAllLocal/DataLoader.ts","../../src/features/Discovery/Search/SearchInputWithSuggestions.tsx","../../src/features/Discovery/Search/AiSearch.tsx","../../src/features/Discovery/DataLoaders/AggMDSServer/DataLoader.ts","../../src/features/Discovery/DataLoaders/IndexedMetadata/DataLoader.ts","../../src/features/Discovery/DataLoaders/registeredDataLoaders.ts","../../src/features/Discovery/DiscoveryIndexPanel.tsx","../../src/features/Discovery/TagCloud.tsx","../../src/components/Profile/User.tsx","../../src/components/Profile/ProfileProvider.tsx","../../src/components/Profile/ResourcesProvider.tsx","../../src/components/Profile/ResourcesFilters.tsx","../../src/components/Login/LoginProvidersPanel.tsx","../../src/components/Layout/TexturedSidePanel.tsx","../../src/components/Login/CredentialsLogin.tsx","../../src/utils/hash.ts","../../src/components/Content/TextContent.tsx","../../src/components/Content/ContactWithEmailContent.tsx","../../src/components/Login/LoginPanel.tsx","../../src/components/Modals/BaseModal.tsx","../../src/components/Modals/FirstTimeModal.tsx","../../src/components/Modals/SessionExpiredModal.tsx","../../src/components/Modals/CreateCredentialsAPIKeyModal.tsx","../../src/components/Modals/NoAccessModal.tsx","../../src/components/Modals/Gen3ModalsProvider.tsx","../../src/components/charts/utils.ts","../../src/components/charts/echarts/ReactECharts.tsx","../../src/components/charts/echarts/BarChart.tsx","../../src/components/charts/echarts/PieChart.tsx","../../src/components/charts/echarts/DonutChart.tsx","../../src/components/charts/echarts/HorizontalBarChart.tsx","../../src/components/charts/ChartRendererFactory.ts","../../src/components/charts/createChart.tsx","../../src/components/charts/Charts.tsx","../../src/components/charts/ChartTitleBar.tsx","../../src/components/charts/EnumFacetChart.tsx","../../src/components/ErrorCard.tsx","../../src/components/facets/utils.ts","../../src/components/facets/hooks.ts","../../src/components/facets/components.ts","../../src/components/OverflowTooltippedLabel.tsx","../../src/components/facets/constants.ts","../../src/components/facets/FacetSortPanel.tsx","../../src/components/facets/FacetExpander.tsx","../../src/components/facets/EnumFacet.tsx","../../src/components/facets/RangeFacet.tsx","../../src/components/facets/MultiSelectValueFacet.tsx","../../src/components/facets/ExactValueFacet.tsx","../../src/components/facets/createFacetCard.tsx","../../src/features/CohortBuilder/FiltersPanel.tsx","../../src/features/CohortBuilder/hooks.ts","../../src/features/CohortBuilder/QueryRepresentationLabel.tsx","../../src/features/CohortBuilder/QueryExpressionsExpandedContext.tsx","../../src/features/CohortBuilder/QueryRepresentation.tsx","../../src/features/CohortBuilder/style.ts","../../src/features/CohortBuilder/QueryExpressionSection.tsx","../../src/features/CohortBuilder/CohortManager.tsx","../../src/components/Tables/utils.ts","../../src/features/CohortBuilder/ExplorerTable/ExplorerTableCellRenderers.tsx","../../src/features/CohortBuilder/ExplorerTable/ExploreTableDetails/TableDetailsPanel.tsx","../../src/features/CohortBuilder/ExplorerTable/ExploreTableDetails/ExplorerTableDetailsPanelFactory.tsx","../../src/components/Details/DetailsModal.tsx","../../src/features/CohortBuilder/ExplorerTable/ExplorerTable.tsx","../../src/components/counts/CountsValue.tsx","../../src/utils/download.tsx","../../src/features/CohortBuilder/downloads/downloadActionHook.tsx","../../src/features/CohortBuilder/downloads/CohortActionButton.tsx","../../src/features/CohortBuilder/downloads/actions/utils.ts","../../src/features/CohortBuilder/downloads/actions/downloadToFile.tsx","../../src/features/CohortBuilder/downloads/actions/downloadManifest.ts","../../src/features/CohortBuilder/downloads/actions/registeredActions.ts","../../src/features/CohortBuilder/downloads/CohortDropdownActionButton.tsx","../../src/features/CohortBuilder/DownloadsPanel.tsx","../../src/features/CohortBuilder/CohortPanel.tsx","../../src/features/CohortBuilder/CohortBuilder.tsx","../../src/features/Query/GqlQueryEditor.tsx","../../src/features/Workspace/WorkspacesPanel.tsx","../../src/lib/content/filesystem.ts","../../src/lib/content/ContentDatabase.ts","../../src/lib/content/constants.ts","../../src/lib/content/index.ts","../../src/lib/common/staticProps.ts","../../src/components/Providers/Gen3Provider.tsx","../../src/components/MessagePanel.tsx","../../src/features/Discovery/Discovery.tsx","../../src/pages/Discovery/Discovery.tsx","../../src/pages/Discovery/data.ts","../../src/features/Query/QueryPanel.tsx","../../src/pages/Query/Query.tsx","../../src/pages/Query/data.ts","../../src/components/Buttons/Gen3Button.tsx","../../src/components/Content/LandingPageContent.tsx","../../src/pages/Landing/Landing.tsx","../../src/pages/Landing/data.ts","../../src/pages/Explorer/Explorer.tsx","../../src/pages/Explorer/data.ts","../../src/features/Theme/ColorTheme.tsx","../../src/pages/Theme/Colors.tsx","../../src/pages/Theme/data.ts","../../src/components/Protected/ProtectedContent.tsx","../../src/components/Profile/CredentialsTable.tsx","../../src/components/Profile/Credentials.tsx","../../src/components/Profile/utils.tsx","../../src/components/Profile/ResourcesTable.tsx","../../src/components/Profile/ResourcesPanel.tsx","../../src/components/Profile/ExternalProviderCard.tsx","../../src/components/Profile/ExternalProvidersPanel.tsx","../../src/features/Profile/Profile.tsx","../../src/pages/Profile/Profile.tsx","../../src/pages/Profile/data.ts","../../src/pages/Login/Login.tsx","../../src/pages/Login/data.ts","../../src/features/Dictionary/utils.ts","../../src/features/Dictionary/ViewSelector.tsx","../../src/features/Dictionary/ResultList.tsx","../../src/features/Dictionary/ResultCard.tsx","../../src/features/Dictionary/constants.ts","../../src/features/Dictionary/DictionaryProvider.tsx","../../src/features/Dictionary/TableSearch.tsx","../../src/features/Dictionary/CategoryHeader.tsx","../../src/features/Dictionary/CategoryAccordionLabel.tsx","../../src/features/Dictionary/PropertiesTable.tsx","../../src/features/Dictionary/CategoryPanel.tsx","../../src/features/Dictionary/Dictionary.tsx","../../src/features/Dictionary/DictionaryWithContext.tsx","../../src/pages/DataDictionary/DataDictionary.tsx","../../src/pages/DataDictionary/data.ts","../../src/features/Authz/Provider.tsx","../../src/features/Authz/Users/UserTable.tsx","../../src/features/Authz/Users/Inputs.tsx","../../src/features/Authz/Users/NewUserPanel.tsx","../../src/features/Authz/Users/Cards/UserDetails.tsx","../../src/features/Authz/Users/UserDetailsPanel.tsx","../../src/features/Authz/Users/UserPanel.tsx","../../src/features/Authz/Roles/PermissionnDetailsRow.tsx","../../src/features/Authz/Roles/RolesTable.tsx","../../src/features/Authz/Roles/RolesPanel.tsx","../../src/features/Authz/Policies/PoliciesTable.tsx","../../src/features/Authz/Policies/PoliciesPanel.tsx","../../src/features/Authz/Resources/ResourcesTable.tsx","../../src/features/Authz/Resources/ResourcesPanel.tsx","../../src/features/Authz/Gen3Authz.tsx","../../src/features/Authz/utils.ts","../../src/pages/admin/authz/Authz.tsx","../../src/pages/admin/authz/data.ts","../../src/pages/404/Custom404Page.tsx","../../src/features/Submission/utils.ts","../../src/features/Submission/Tables/ProjectTable.tsx","../../src/features/Submission/Tables/SubmissionsTable.tsx","../../src/features/Submission/SubmissionPanel.tsx","../../src/pages/Submission/Submission.tsx","../../src/pages/Submission/data.ts","../../src/pages/Workspace/Workspaces.tsx","../../src/pages/Workspace/data.ts","../../src/pages/AiSearch/AiSearch.tsx","../../src/pages/AiSearch/data.ts","../../src/features/Crosswalk/CrosswalkTable.tsx","../../src/features/Crosswalk/CrosswalkPanel.tsx","../../src/pages/Crosswalk/Crosswalk.tsx","../../src/pages/Crosswalk/data.ts","../../src/utils/tailwindConfig.ts","../../src/api/auth/sessionLogout.ts","../../src/api/auth/credentialsLogin.ts","../../src/api/auth/credentialsLogout.ts"],"sourcesContent":["import React from 'react';\nimport Link from 'next/link';\nimport { PropsWithChildren } from 'react';\nimport { FaExternalLinkAlt } from 'react-icons/fa';\n\ninterface ClassProps {\n readonly className?: string;\n}\n\ninterface Gen3LinkProps extends ClassProps {\n readonly href: string;\n readonly linkType?: string;\n readonly text: string;\n readonly showExternalIcon?: boolean;\n}\n\nconst Gen3Link = ({\n className,\n href,\n linkType,\n text,\n showExternalIcon = false,\n}: PropsWithChildren<Gen3LinkProps>) => {\n const portalBasename =\n process.env.NEXT_PUBLIC_PORTAL_BASENAME &&\n process.env.NEXT_PUBLIC_PORTAL_BASENAME !== '/'\n ? process.env.NEXT_PUBLIC_PORTAL_BASENAME\n : '';\n if (linkType === 'gen3ff') {\n return (\n <span className={className}>\n <Link href={href}>{text}</Link>\n </span>\n );\n } else if (linkType === 'portal') {\n return (\n <a\n className={className}\n href={`${portalBasename}${href}`}\n target=\"_parent\"\n >\n {text}\n </a>\n );\n }\n // external link\n return (\n <a className={className} href={href} target=\"_blank\" rel=\"noreferrer\">\n {showExternalIcon ? (\n <FaExternalLinkAlt className=\"pr-1\" title=\"External Link\" />\n ) : null}\n {text}\n </a>\n );\n};\n\nexport default Gen3Link;\n","export const extractClassName = (\n key: string,\n classNames: Record<string, string>,\n): string => {\n if (typeof classNames === 'object' && key in classNames) {\n return classNames[key];\n }\n return '';\n};\n","import { twMerge } from 'tailwind-merge';\n\ntype RecordType = Record<string, string>;\n\n/**\n * Merges default and user values for Tailwind classnames.\n *\n * @param {RecordType} defaultValues - The default values for the classnames.\n * @param {RecordType} userValues - The user-defined values for the classnames.\n * @param {boolean} merge - Whether to merge the default and user values. Default is true.\n * @returns {RecordType} - The merged default and user values for the classnames.\n */\nexport const mergeDefaultTailwindClassnames = (defaultValues: RecordType, userValues: RecordType, merge = true): RecordType => {\n const defaultKeys = Object.keys(defaultValues);\n const mergedValues = { ...defaultValues, ...userValues };\n\n if (merge) {\n defaultKeys.forEach(key => {\n if (userValues[key]) {\n mergedValues[key] = twMerge(defaultValues[key], userValues[key]);\n }\n });\n }\n\n return mergedValues;\n};\n","import React from 'react';\nimport Image from 'next/image';\nimport Gen3Link from './Gen3Link';\nimport { FooterProps } from './types';\nimport { extractClassName } from './utils';\nimport { mergeDefaultTailwindClassnames } from '../../utils/mergeDefaultTailwindClassnames';\n\nconst Footer = ({\n bottomLinks,\n columnLinks,\n footerLogos,\n footerRightLogos,\n classNames = {},\n}: FooterProps) => {\n\n const classNamesDefaults = {\n root: 'bg-primary-lighter text-primary-contrast p-4 shadow-sm',\n };\n\n const mergedClassNames= mergeDefaultTailwindClassnames(classNamesDefaults, classNames);\n\n return (\n <footer>\n <div className={extractClassName('root',mergedClassNames )}>\n <div className=\"flex justify-end\">\n {(footerLogos || [[]]).map((col, index) => {\n return (\n <div\n key={`footer-col-${index}`}\n className={`flex flex-row gap-x-3 mr-8 ${\n col.length > 1 ? 'justify-between' : ''\n }`}\n >\n {col.map((logo) => (\n <Image\n className=\"object-none\"\n key={`icons-${logo.logo}`}\n src={`${logo.logo}`}\n width={logo.width}\n height={logo.height}\n alt={logo.description}\n />\n ))}\n </div>\n );\n })}\n <div className=\"flex w-[100%] pl-10 pt-3\">\n {(columnLinks || []).map(({ heading, items }, i) => (\n <div className=\"flex flex-col pl-10\" key={i}>\n <h1 className=\"font-bold text-xl text-white font-heading\">\n {heading}\n </h1>\n {(items || []).map(({ text, href, linkType }, j) => {\n const attrs = {\n className: `${\n href && 'heal-link-footer'\n } font-medium text-sm p-[2px] text-white font-content`,\n key: j,\n };\n if (href) {\n return (\n <div {...attrs} key={href}>\n <Gen3Link href={href} linkType={linkType} text={text} />\n </div>\n );\n } else {\n return (\n <span {...attrs} key={href}>\n {text}\n </span>\n );\n }\n })}\n </div>\n ))}\n </div>\n </div>\n {(footerRightLogos || [[]]).map((col, index) => {\n return (\n <div\n key={`footer-col-${index}`}\n className={`flex gap-x-6 mr-8 ${\n col.length > 1 ? 'justify-end' : ''\n }`}\n >\n {col.map((logo) => (\n <Image\n key={`icons-${logo.logo}`}\n src={`${logo.logo}`}\n width={logo.width}\n height={logo.height}\n alt={logo.description}\n />\n ))}\n </div>\n );\n })}\n </div>\n {bottomLinks && bottomLinks.length > 0 ? (\n <div className=\"pt-[4px] m-1 text-right text-xs text-white font-content\">\n {bottomLinks.map((link, i) => (\n <React.Fragment key={link.href}>\n <a\n href={link.href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"heal-link-footer\"\n >\n {link.text ? link.text : link.href}\n </a>\n {i !== bottomLinks.length - 1 && <span className=\"mx-1\">|</span>}\n </React.Fragment>\n ))}\n </div>\n ) : null}\n </footer>\n );\n};\n\nexport default Footer;\n","export const pageFromURL = (currentURL: string): string => {\n const paths = currentURL\n .split('/')\n .filter((x) => x !== 'dev.html' && x !== '');\n return paths[paths.length - 1];\n};\n\nexport const isUserOnPage = (pageName: string): boolean => {\n if (typeof window === 'undefined') return false;\n\n return pageFromURL(window.location.href) === pageName;\n};\n","import type { NextApiRequest, NextApiResponse } from 'next';\nimport { getCookie } from 'cookies-next';\nimport { decodeJwt, JWTPayload } from 'jose';\n\nexport const isExpired = (value: number) => value - Date.now() > 0;\n\nexport interface JWTPayloadAndUser extends JWTPayload {\n context: Record<string, string>;\n}\n\n/**\n * returns the access_token expiration, user, and status\n * @param req\n * @param res\n */\nexport default async function (req: NextApiRequest, res: NextApiResponse) {\n\n const access_token = getCookie('access_token', { req, res });\n if (access_token) {\n // TODO: validate the token\n const decodedAccessToken = decodeJwt(\n access_token as string\n ) as unknown as JWTPayloadAndUser;\n return res.status(200).json({\n issued: decodedAccessToken.iat,\n expires: decodedAccessToken.exp,\n userContext: decodedAccessToken.context.user,\n status: decodedAccessToken.exp\n ? isExpired(decodedAccessToken.exp)\n ? 'expired'\n : 'issued'\n : 'invalid',\n });\n }\n\n return res.status(200).json({\n status: 'not present',\n });\n}\n","import { useState } from 'react';\nimport { useDeepCompareEffect } from 'use-deep-compare';\nimport useSWR from 'swr';\nimport { AuthTokenData } from './types';\nimport type { IncomingMessage } from 'http';\nimport { getCookie } from 'cookies-next';\nimport { decodeJwt } from 'jose';\nimport { isExpired, JWTPayloadAndUser } from '../../api/auth/sessionToken';\nimport { type LoginStatus, type JWTSessionStatus } from '@gen3/core';\n\nconst fetcher = (url: string) =>\n fetch(url).then((r) => r.json() as Promise<AuthTokenData>);\n\nexport const useAuthSession = (): AuthTokenData => {\n const { data: sessionToken, error } = useSWR<AuthTokenData>(\n '/api/auth/sessionToken',\n fetcher,\n );\n return error || sessionToken === undefined\n ? { status: 'error' }\n : sessionToken;\n};\n\n/**\n * For server side rendering only\n * @param ctx\n */\nexport const getAuthSession = async (req: IncomingMessage) => {\n const access_token = getCookie('access_token', { req });\n\n if (access_token && typeof access_token === 'string') {\n // TODO get secret and verify JWT\n const decodedAccessToken = (await decodeJwt(\n access_token,\n )) as unknown as JWTPayloadAndUser;\n return {\n issued: decodedAccessToken.iat,\n expires: decodedAccessToken.exp,\n user: decodedAccessToken.context.user,\n status: decodedAccessToken.exp\n ? isExpired(decodedAccessToken.exp)\n ? 'expired'\n : 'issued'\n : 'invalid',\n };\n }\n\n return {\n status: 'not present',\n };\n};\n\nexport type SessionContextValue = {\n userStatus?: LoginStatus;\n status: JWTSessionStatus;\n pending: boolean;\n};\n\nexport const useManageSession = (\n userStatus: LoginStatus,\n): SessionContextValue => {\n const [session, setSession] = useState<SessionContextValue>({\n status: 'not present',\n pending: true,\n });\n\n useDeepCompareEffect(() => {\n if (userStatus === 'authenticated') {\n setSession((prev) => ({\n ...prev,\n userStatus: 'authenticated',\n status: 'issued',\n pending: false,\n }));\n } else if (userStatus === 'not present') {\n // if (isSuccess && existingSession && existingSession.status === 'issued') {\n setSession((prev) => ({\n ...prev,\n userStatus: 'not present',\n status: 'not present',\n pending: true,\n }));\n } else if (userStatus === 'pending') {\n setSession((prev) => ({\n ...prev,\n pending: true,\n status: 'not present',\n userStatus: 'pending',\n }));\n } else if (userStatus === 'unauthenticated') {\n setSession((prev) => ({\n ...prev,\n pending: false,\n status: 'invalid',\n userStatus: 'unauthenticated',\n }));\n }\n }, [userStatus]);\n\n return session;\n};\n","import React, {\n useCallback,\n useEffect,\n useContext,\n useRef,\n useState,\n} from 'react';\nimport { useRouter, NextRouter } from 'next/router';\nimport { Session, SessionProviderProps } from './types';\nimport { isUserOnPage } from './utils';\nimport {\n useCoreDispatch,\n useCoreSelector,\n type CoreState,\n showModal,\n Modals,\n useLazyFetchUserDetailsQuery,\n selectUserAuthStatus,\n GEN3_REDIRECT_URL,\n GEN3_FENCE_API,\n} from '@gen3/core';\nimport { useDeepCompareMemo } from 'use-deep-compare';\nimport { useManageSession } from './hooks';\nimport { showNotification } from '@mantine/notifications';\n\nconst SecondsToMilliseconds = (seconds: number) => seconds * 1000;\nconst MinutesToMilliseconds = (minutes: number) => minutes * 60 * 1000;\n\nexport const logoutSession = async () => {\n await fetch(`${GEN3_FENCE_API}/user/logout?next=${GEN3_REDIRECT_URL}/`, {\n cache: 'no-store',\n });\n};\n\nfunction useOnline() {\n const [isOnline, setIsOnline] = useState(\n typeof navigator !== 'undefined' ? navigator.onLine : false,\n );\n\n const setOnline = () => setIsOnline(true);\n const setOffline = () => setIsOnline(false);\n\n useEffect(() => {\n window.addEventListener('online', setOnline);\n window.addEventListener('offline', setOffline);\n\n return () => {\n window.removeEventListener('online', setOnline);\n window.removeEventListener('offline', setOffline);\n };\n }, []);\n\n return isOnline;\n}\n\nexport const SessionContext = React.createContext<Session | undefined>(\n undefined,\n);\n\n/**\n * Wwe eventually want to use the session token to determine if the user is logged in\n * as opposed to the user status since that check will happen on the server using httpOnly cookies\n * and verification of the session token\n */\nexport const getSession = async () => {\n try {\n const res = await fetch('/api/auth/sessionToken', { cache: 'no-store' });\n if (res.status === 200) {\n return await res.json();\n }\n } catch (error) {\n return { status: 'error' };\n }\n};\n\nexport const useSession = (\n required = false,\n onUnauthenticated?: () => void,\n) => {\n const router = useRouter();\n const session = useContext(SessionContext);\n if (!session) {\n throw new Error(\n '[gen3]: `useSession` must be wrapped in a <SessionProvider />',\n );\n }\n\n if (required && !session.pending && session.status !== 'issued') {\n if (onUnauthenticated) {\n onUnauthenticated();\n } else {\n if (typeof window === 'undefined')\n // route not available on SSR\n return session;\n router.push('Login');\n }\n }\n return session;\n};\n\nexport const useIsAuthenticated = () => {\n const session = useSession();\n return {\n isAuthenticated: session.status === 'issued',\n user: session.userContext,\n };\n};\n\nconst refreshSession = (\n getUserDetails: () => void,\n mostRecentSessionRefreshTimestamp: number,\n updateSessionRefreshTimestamp: (arg0: number) => void,\n): void => {\n const timeSinceLastSessionUpdate =\n Date.now() - mostRecentSessionRefreshTimestamp;\n // don't hit Fence to refresh tokens too frequently\n if (timeSinceLastSessionUpdate < UPDATE_SESSION_LIMIT) {\n return;\n }\n\n // hitting Fence endpoint refreshes token\n updateSessionRefreshTimestamp(Date.now());\n getUserDetails();\n};\n\ntype IntervalFunction = () => unknown | void;\n\nconst useInterval = (callback: IntervalFunction, delay: number | null) => {\n const savedCallback = useRef<IntervalFunction | null>(null);\n\n useEffect(() => {\n if (delay === null) return;\n savedCallback.current = callback;\n });\n\n useEffect(() => {\n if (delay === null) return;\n function tick() {\n if (savedCallback.current !== null) {\n savedCallback.current();\n }\n }\n const id = setInterval(tick, delay);\n return () => clearInterval(id);\n }, [delay]);\n};\n\nconst UPDATE_SESSION_LIMIT = MinutesToMilliseconds(5);\n\n/**\n * SessionProvider creates a React context which keeps track of wether the user is authenticated\n * and if their session is stale and logs them out if they do not preform an action in an alotted amount of time\n * @param children - Pass in a child session if one exists\n * @param session - Pass in a cached session if one exists\n * @param updateSessionTime - Interval of time between fetching session token\n * @param inactiveTimeLimit - Amount of time user is allowed to be inactive before getting logged out if user is tabbed away from page\n * @param workspaceInactivityTimeLimit - Amount of time user is allowed to be inactive if user is tabbed into the site\n * @param logoutInactiveUsers - Whether to log out users that are determined to be inactive or not\n * @returns a Session context that can be used to keep track of user session activity\n */\nexport const SessionProvider = ({\n children,\n session,\n updateSessionTime = 5,\n inactiveTimeLimit = 20,\n workspaceInactivityTimeLimit = 0,\n logoutInactiveUsers = true,\n}: SessionProviderProps) => {\n const router = useRouter();\n const coreDispatch = useCoreDispatch();\n\n const [getUserDetails] = useLazyFetchUserDetailsQuery(); // Fetch user details\n const userStatus = useCoreSelector((state: CoreState) =>\n selectUserAuthStatus(state),\n );\n\n const [mostRecentActivityTimestamp, setMostRecentActivityTimestamp] =\n useState(Date.now());\n\n const [\n mostRecentSessionRefreshTimestamp,\n setMostRecentSessionRefreshTimestamp,\n ] = useState(Date.now());\n\n const inactiveTimeLimitMilliseconds =\n MinutesToMilliseconds(inactiveTimeLimit);\n\n const workspaceInactivityTimeLimitMilliseconds = MinutesToMilliseconds(\n workspaceInactivityTimeLimit,\n );\n const updateSessionIntervalMilliseconds =\n MinutesToMilliseconds(updateSessionTime);\n\n // Update session status using the session token api\n const updateSessionWithSessionApi = async () => {\n // const tokenStatus = await getSession();\n // setSessionInfo(tokenStatus);\n // setPending(false); // not waiting for session to load anymore\n await getUserDetails();\n };\n\n // update session status using the user status\n const updateSessionWithUserStatus = async () => {\n await getUserDetails();\n };\n\n const sessionInfo = useManageSession(userStatus);\n\n // for now we are using the user status to determine if the user is logged in\n const updateSession = useCallback(\n () => updateSessionWithUserStatus(),\n [updateSessionWithUserStatus],\n );\n\n const endSession = async () => {\n logoutSession()\n .then(() => {\n getUserDetails();\n })\n .catch((e) => {\n showNotification({\n title: 'Logout Error',\n message: `error logging in ${e.message}`,\n });\n })\n .finally(() => {\n router.push(`${GEN3_REDIRECT_URL}`); // TODO replace with config option\n });\n };\n /**\n * Update session value every updateSessionInterval seconds\n */\n useEffect(() => {\n updateSession();\n\n if (updateSessionIntervalMilliseconds <= 0) return; // do not poll if updateSessionInterval is 0\n\n const updateUserActivity = () => {\n setMostRecentActivityTimestamp(Date.now());\n };\n\n window.addEventListener('mousedown', updateUserActivity);\n window.addEventListener('keypress', updateUserActivity);\n\n return () => {\n window.removeEventListener('mousedown', updateUserActivity);\n window.removeEventListener('keypress', updateUserActivity);\n };\n }, []); // only call on mount/dismount\n\n useInterval(\n () => {\n if (sessionInfo.status != 'issued') return; // no need to update session if user is not logged in\n if (isUserOnPage('Login') /* || this.popupShown */) return;\n\n const timeSinceLastActivity = Date.now() - mostRecentActivityTimestamp;\n\n if (logoutInactiveUsers) {\n if (\n timeSinceLastActivity >= inactiveTimeLimitMilliseconds &&\n !isUserOnPage('workspace')\n ) {\n coreDispatch(showModal({ modal: Modals.SessionExpireModal }));\n endSession();\n return;\n }\n if (\n workspaceInactivityTimeLimitMilliseconds > 0 &&\n timeSinceLastActivity >= workspaceInactivityTimeLimitMilliseconds &&\n isUserOnPage('workspace')\n ) {\n coreDispatch(showModal({ modal: Modals.SessionExpireModal }));\n endSession();\n return;\n }\n }\n // fetching a userState will renew the session\n refreshSession(\n getUserDetails,\n mostRecentSessionRefreshTimestamp,\n (ts: number) => setMostRecentSessionRefreshTimestamp(ts),\n );\n updateSession();\n },\n updateSessionIntervalMilliseconds > 0\n ? updateSessionIntervalMilliseconds\n : null,\n );\n\n const value: Session = useDeepCompareMemo(() => {\n return {\n ...sessionInfo,\n updateSession,\n endSession,\n };\n }, [sessionInfo, updateSession, endSession]);\n\n return (\n <SessionContext.Provider value={value}>{children}</SessionContext.Provider>\n );\n};\n","export const TooltipStyle = {\n tooltip:\n 'bg-base-darker text-base-contrast-darker text-sm border-1 border-base-darker',\n arrow: 'bg-base-darker ',\n};\n","import { TextContentProps } from '../Content/TextContent';\n\nexport interface Gen3LoginPanelConfig {\n title: string;\n subtitle: string;\n text: string;\n contact: string;\n email: string;\n image: string;\n className: string;\n}\n\nexport interface LoginConfig extends Partial<Gen3LoginPanelConfig> {\n topContent?: ReadonlyArray<TextContentProps>;\n bottomContent?: ReadonlyArray<TextContentProps>;\n showCredentialsLogin?: boolean;\n}\n\nexport interface LoginSelectedProps {\n readonly handleLoginSelected: (_url: string) => void;\n}\n\nexport enum LoginButtonVisibility {\n Hidden = 'hide',\n Visible = 'visible',\n LogoutOnly = 'logoutOnly',\n}\n","import React, { useContext } from 'react';\nimport { UnstyledButton, Tooltip } from '@mantine/core';\nimport { NextRouter, useRouter } from 'next/router';\nimport { usePathname } from 'next/navigation';\nimport { MdLogin as LoginIcon } from 'react-icons/md';\nimport { SessionContext } from '../../lib/session/session';\nimport {\n type CoreState,\n selectUserAuthStatus,\n useCoreSelector,\n isAuthenticated,\n} from '@gen3/core';\nimport { TooltipStyle } from '../../features/Navigation/style';\nimport { LoginButtonVisibility } from './types';\n\nconst handleSelected = async (\n isAuthenticated: boolean,\n router: NextRouter,\n referrer: string,\n endSession?: () => void,\n) => {\n if (!isAuthenticated) await router.push(`Login?redirect=${referrer}`);\n else {\n endSession && endSession();\n }\n};\n\ninterface LoginButtonProps {\n readonly icon?: React.ReactElement | string;\n readonly hideText?: boolean;\n className?: string;\n tooltip?: string;\n visibility: LoginButtonVisibility;\n}\n\nconst LoginButton = ({\n icon = <LoginIcon className=\"pl-1\" size={'1.55rem'} />,\n hideText = false,\n className = 'flex flex-nowrap items-center align-middle border-b-2 hover:border-accent border-transparent mx-2',\n tooltip,\n visibility,\n}: LoginButtonProps) => {\n const router = useRouter();\n\n const pathname = usePathname();\n\n const { endSession } = useContext(SessionContext) ?? {\n endSession: undefined,\n };\n\n const userStatus = useCoreSelector((state: CoreState) =>\n selectUserAuthStatus(state),\n );\n const authenticated = isAuthenticated(userStatus);\n\n if (visibility === LoginButtonVisibility.LogoutOnly && !authenticated)\n return null;\n\n return (\n <Tooltip\n label={tooltip}\n position=\"bottom\"\n withArrow\n multiline\n color=\"base\"\n disabled={tooltip === undefined}\n classNames={TooltipStyle}\n >\n <UnstyledButton\n onClick={() =>\n handleSelected(authenticated, router, pathname, endSession)\n }\n >\n <div\n className={`flex items-center font-medium font-heading ${className}`}\n >\n {!hideText ? (authenticated ? 'Logout' : 'Login') : null}\n {icon}\n </div>\n </UnstyledButton>\n </Tooltip>\n );\n};\n\nexport default LoginButton;\n","import React from 'react';\nimport { UnstyledButton } from '@mantine/core';\nimport { useRouter } from 'next/router';\nimport {\n selectUserAuthStatus,\n selectUserDetails,\n useCoreSelector,\n isAuthenticated,\n type CoreState,\n} from '@gen3/core';\n\nconst LoginAccountButton = () => {\n const router = useRouter();\n\n const handleSelected = async () => {\n await router.push('Profile');\n };\n\n const userStatus = useCoreSelector((state: CoreState) =>\n selectUserAuthStatus(state),\n );\n const userInfo = useCoreSelector((state: CoreState) =>\n selectUserDetails(state),\n );\n\n if (userStatus && isAuthenticated(userStatus)) {\n return (\n <UnstyledButton className=\"mx-2\" onClick={() => handleSelected()}>\n <div className=\"flex flex-nowrap items-center align-middle border-b-2 hover:border-accent border-transparent\">\n {userInfo?.username}\n </div>\n </UnstyledButton>\n );\n }\n return null;\n};\n\nexport default LoginAccountButton;\n","import React, { ReactElement } from 'react';\nimport { Icon } from '@iconify/react';\nimport { mergeDefaultTailwindClassnames } from '../../utils/mergeDefaultTailwindClassnames';\nimport LoginButton from '../../components/Login/LoginButton';\nimport LoginAccountButton from '../../components/Login/LoginAccountButton';\nimport { extractClassName } from './utils';\nimport { LoginButtonVisibility } from '../../components/Login/types';\n\nexport interface NameAndIcon {\n readonly name: string;\n readonly rightIcon?: string;\n readonly leftIcon?: string;\n readonly classNames: Record<string, string>;\n readonly drawBorder?: boolean;\n}\n\nexport interface TopIconButtonProps extends NameAndIcon {\n readonly href: string;\n readonly tooltip?: string;\n}\n\nconst TopIconButton = ({\n name,\n leftIcon = undefined,\n rightIcon = undefined,\n classNames = {},\n drawBorder = true,\n}: NameAndIcon) => {\n const classNamesDefaults = {\n root: `flex items-center align-middle px-2 ${\n drawBorder && 'border-r-2 border-accent'\n } my-2`,\n button:\n 'flex flex-nowrap items-center align-middle border-b-2 hover:border-accent border-transparent',\n leftSection: 'text-secondary-contrast-lighter pr-1',\n label: 'font-content text-secondary-contrast-lighter block',\n rightIcon: 'text-secondary-contrast-lighter pl-1',\n };\n const mergedClassnames = mergeDefaultTailwindClassnames(\n classNamesDefaults,\n classNames,\n );\n\n return (\n <div\n className={extractClassName('root', mergedClassnames)}\n aria-label={name}\n >\n <div\n className={extractClassName('button', mergedClassnames)}\n role=\"button\"\n >\n {leftIcon ? (\n <Icon\n icon={leftIcon}\n className={extractClassName('leftIcon', mergedClassnames)}\n />\n ) : null}\n <p className={extractClassName('label', mergedClassnames)}> {name} </p>\n {rightIcon ? (\n <Icon\n icon={rightIcon}\n className={extractClassName('rightIcon', mergedClassnames)}\n />\n ) : null}\n </div>\n </div>\n );\n};\n\nconst processTopBarItems = (\n items: TopIconButtonProps[],\n showLogin: boolean,\n): ReactElement[] => {\n return items.reduce(\n (acc: ReactElement[], item: TopIconButtonProps, index: number) => {\n const needsBorder = !(index === items.length - 1 && !showLogin);\n acc.push(\n <a className=\"flex\" href={item.href} key={`${item.href}_${item.name}`}>\n {' '}\n <TopIconButton\n name={item.name}\n leftIcon={item.leftIcon}\n rightIcon={item.rightIcon}\n classNames={item.classNames}\n drawBorder={needsBorder}\n />{' '}\n </a>,\n );\n return acc;\n },\n [],\n );\n};\n\nexport interface TopBarProps {\n readonly items: TopIconButtonProps[];\n readonly loginButtonVisibility?: LoginButtonVisibility;\n readonly classNames?: Record<string, string>;\n}\n\nconst TopBar = ({\n items,\n loginButtonVisibility = LoginButtonVisibility.Hidden,\n classNames = {},\n}: TopBarProps) => {\n const classNamesDefaults = {\n root: 'flex justify-end items-center align-middle w-100 bg-secondary-lighter',\n };\n\n const mergedClassnames = mergeDefaultTailwindClassnames(\n classNamesDefaults,\n classNames,\n );\n return (\n <div>\n <header className={extractClassName('root', mergedClassnames)}>\n <nav className=\"flex items-center align-middle\">\n {processTopBarItems(\n items,\n loginButtonVisibility === LoginButtonVisibility.Visible,\n )}\n {loginButtonVisibility != LoginButtonVisibility.Visible ? (\n <LoginAccountButton />\n ) : null}\n {loginButtonVisibility != LoginButtonVisibility.Hidden ? (\n <LoginButton visibility={loginButtonVisibility} />\n ) : null}\n </nav>\n </header>\n </div>\n );\n};\n\nexport default TopBar;\n","import React from 'react';\nimport Link from 'next/link';\n\ninterface ClassProps {\n readonly className?: string;\n}\n\ninterface HoverLinkProps extends ClassProps {\n children?: React.ReactNode;\n readonly href: string;\n}\n\n/**\n * Component representing a hoverable link.\n *\n * @param {Object} props - The properties of the HoverLink component.\n * @param {string} props.className - The class name for the wrapping span element.\n * @param {string} props.href - The URL of the link.\n * @param {ReactNode} props.children - The content of the link.\n * @returns {ReactElement} - The rendered HoverLink component.\n */\nconst HoverLink = ({ className, href, children }: HoverLinkProps) => {\n return (\n <span className={className}>\n <Link href={href} passHref>\n {children}\n </Link>\n </span>\n );\n};\n\nexport default HoverLink;\n","import { NavigationBarLogo } from './types';\nimport HoverLink from './HoverLink';\nimport Image from 'next/image';\nimport React from 'react';\nimport { extractClassName } from './utils';\nimport { mergeDefaultTailwindClassnames } from '../../utils/mergeDefaultTailwindClassnames';\n\nconst NavigationLogo = ({\n src,\n title,\n description,\n basePath = '',\n classNames = {},\n}: NavigationBarLogo) => {\n const classNamesDefaults = {\n root: 'relative flex h-full py-2 justify-start items-center align-middle font-heading font-bold tracking-wide text-xl ml-[5px] mr-[20px]',\n link: 'relative w-96 h-full',\n title: 'border-solid border-base-darker border-l-1 ml-1 mr-3 h-32 w-1',\n titleLink:\n 'font-heading h3-typo pt-2 text-ink-dark hover:text-ink-darkest hover:border-accent hover:border-b-3',\n };\n\n const mergedClassnames = mergeDefaultTailwindClassnames(\n classNamesDefaults,\n classNames,\n );\n\n return (\n <div\n className={extractClassName('root', mergedClassnames)}\n role=\"navigation\"\n >\n <HoverLink\n className={extractClassName('link', mergedClassnames)}\n href=\"/\"\n >\n <Image\n className=\"pr-3 object-contain\"\n fill\n src={`${basePath}${src}`}\n alt={description ?? title ?? 'link back to homepage'}\n />\n </HoverLink>\n {title && (\n <div\n className={extractClassName('title', mergedClassnames)}\n role=\"navigation\"\n >\n <HoverLink\n className={extractClassName('titleLink', mergedClassnames)}\n href={'/'}\n >\n {title}\n </HoverLink>\n </div>\n )}\n </div>\n );\n};\n\nexport default NavigationLogo;\n","import React from 'react';\nimport { NavigationButtonProps } from './types';\nimport Link from 'next/link';\nimport { Icon } from '@iconify/react';\nimport { Tooltip } from '@mantine/core';\nimport { extractClassName } from './utils';\nimport { mergeDefaultTailwindClassnames } from '../../utils/mergeDefaultTailwindClassnames';\nimport { TooltipStyle } from './style';\n\n/**\n * NavigationBarButton: a button for the navigation bar\n * @param tooltip - the tooltip text to display\n * @param icon - the icon to display\n * @param href - the href to link to\n * @param name - the name of the button\n * @param iconHeight - the height of the icon\n * @param classNames - the class names to use for root, label, icon/tooltip and arrow'\n */\nconst NavigationBarButton = ({\n tooltip,\n icon,\n href,\n name,\n iconHeight = '27px',\n classNames = {},\n}: NavigationButtonProps) => {\n const classNamesDefaults = {\n root: `flex flex-col flex-nowrap px-3 py-2 pt-4 items-center align-center text-primary hover:text-accent opacity-80 hover:opacity-100`,\n label: 'pt-1.5 body-typo font-heading text-sm',\n icon: 'mt-0.5 ml-1',\n ...TooltipStyle,\n };\n\n const mergedClassnames = mergeDefaultTailwindClassnames(\n classNamesDefaults,\n classNames,\n );\n return (\n <React.Fragment>\n <Tooltip\n label={tooltip}\n multiline\n position=\"bottom\"\n arrowSize={8}\n withArrow\n zIndex={1000}\n w={220}\n >\n <Link\n href={`${\n // need this to preserve running in hybrid mode\n process.env.NEXT_PUBLIC_PORTAL_BASENAME &&\n process.env.NEXT_PUBLIC_PORTAL_BASENAME !== '/'\n ? process.env.NEXT_PUBLIC_PORTAL_BASENAME\n : ''\n }${href}`}\n >\n <div\n className={extractClassName('root', mergedClassnames)}\n role=\"navigation\"\n >\n <Icon\n height={iconHeight}\n icon={icon}\n className={extractClassName('icon', mergedClassnames)}\n />\n <p className={extractClassName('label', mergedClassnames)}>\n {name}\n </p>\n </div>\n </Link>\n </Tooltip>\n </React.Fragment>\n );\n};\n\nexport default NavigationBarButton;\n","import React, { useState, useEffect } from 'react';\nimport { useRouter } from 'next/router';\nimport { NavigationProps } from './types';\nimport NavigationLogo from './NavigationLogo';\nimport NavigationBarButton from './NavigationBarButton';\nimport { extractClassName } from './utils';\nimport { mergeDefaultTailwindClassnames } from '../../utils/mergeDefaultTailwindClassnames';\n\n/**\n * NavigationBar component\n * @param {Object} NavigationProps - The navigation properties\n * @param {Object} NavigationProps.logo - The logo object\n * @param {Array} NavigationProps.items - The array of navigation items\n * @param {Object} NavigationProps.classNames - The custom class names for different elements of the NavigationBar\n * @returns {JSX.Element} The rendered NavigationBar component\n */\nconst NavigationBar = ({\n logo = undefined,\n items = [],\n classNames = {},\n}: NavigationProps) => {\n const classNamesDefaults = {\n root: 'flex bg-base-max border-b-1 border-base-lighter',\n navigationPanel: 'font-heading font-bold tracking-wide text-xl',\n login:\n 'pl-1 mr-6 bg-base-max text-base-contrast opacity-80 hover:opacity-100',\n };\n\n const mergedClassnames = mergeDefaultTailwindClassnames(\n classNamesDefaults,\n classNames,\n );\n\n const router = useRouter();\n const [current, setCurrent] = useState(router.pathname);\n useEffect(() => {\n setCurrent(router.pathname);\n }, [router.pathname]);\n\n return (\n <div className={extractClassName('root', mergedClassnames)}>\n <div\n className={`flex justify-center items-center align-middle ${extractClassName(\n 'logo',\n mergedClassnames,\n )}`}\n >\n {logo && <NavigationLogo {...{ ...logo }} />}\n </div>\n <div className=\"flex flex-grow\">{/* middle section of header */}</div>\n <div\n className={`grid grid-cols-${items?.length} ${extractClassName(\n 'navigationPanel',\n mergedClassnames,\n )}`}\n >\n {items.map((x, index) => {\n const selectedStyle =\n current === x.href\n ? 'border-accent border-b-4 border-b-accent'\n : '';\n return (\n <div\n key={`${x.name}-${index}`}\n className={`first:border-l-1 border-r-1 border-base-lighter ${selectedStyle}`}\n >\n <NavigationBarButton\n tooltip={x.tooltip}\n icon={x.icon}\n href={x.href}\n name={x.name}\n classNames={x.classNames}\n />\n </div>\n );\n })}\n </div>\n </div>\n );\n};\n\nexport default NavigationBar;\n","import React from 'react';\nimport { Menu, Text, Tooltip } from '@mantine/core';\nimport { PiDotsThreeCircleThin as DotsIcon } from 'react-icons/pi';\nimport Link from 'next/link';\nimport { TopIconButtonProps } from './TopBar';\nimport { TooltipStyle } from './style';\n\ninterface ActionMenuProps {\n items: TopIconButtonProps[];\n}\n\nconst ActionMenu = ({ items }: ActionMenuProps) => {\n return (\n <React.Fragment>\n <Menu>\n <Menu.Target>\n <Tooltip label={'Action Menu'}\n multiline\n color=\"base\"\n classNames={TooltipStyle}\n position=\"bottom\" withArrow>\n <button>\n <DotsIcon size={'3.15rem'} />\n </button>\n </Tooltip>\n </Menu.Target>\n <Menu.Dropdown>\n {items.map((x, index) => {\n return (\n <Menu.Item key={`${x.name}-${index}`}>\n <Link href={x.href}>\n <Text>{x.name}</Text>\n </Link>\n </Menu.Item>\n );\n })}\n </Menu.Dropdown>\n </Menu>\n </React.Fragment>\n );\n};\n\nexport default ActionMenu;\n","import React, { ReactElement } from 'react';\n\nimport { NavigationProps } from '../types';\nimport NavigationBarButton from '../NavigationBarButton';\nimport NavigationLogo from '../NavigationLogo';\nimport { TopBarProps } from '../TopBar';\nimport LoginButton from '../../../components/Login/LoginButton';\nimport { AiOutlineLogin as LoginIcon } from 'react-icons/ai';\nimport { extractClassName } from '../utils';\nimport ActionMenu from '../ActionMenu';\nimport { mergeDefaultTailwindClassnames } from '../../../utils/mergeDefaultTailwindClassnames';\nimport { LoginButtonVisibility } from '../../../components/Login/types';\n\nexport interface HorizontalNavigationBarProps extends NavigationProps {\n readonly actions: TopBarProps;\n loginIcon?: ReactElement | string;\n}\n\nconst HorizontalNavigationBar = ({\n actions,\n items,\n logo = undefined,\n loginIcon = <LoginIcon size={'3.15rem'} />,\n classNames = {},\n}: HorizontalNavigationBarProps) => {\n const classNamesDefaults = {\n root: 'py-3 border-b-1 border-base-light shadow-sm',\n navigationPanel: 'font-heading font-bold tracking-wide text-xl space-x-4',\n login:\n 'pl-1 mr-6 bg-base-max text-base-contrast opacity-80 hover:opacity-100',\n };\n\n const mergedClassnames = mergeDefaultTailwindClassnames(\n classNamesDefaults,\n classNames,\n );\n\n return (\n <div\n className={`flex justify-between ${extractClassName(\n 'root',\n mergedClassnames,\n )}`}\n >\n <div\n className={`flex justify-center items-center align-middle ${extractClassName(\n 'logo',\n mergedClassnames,\n )}`}\n >\n {logo && <NavigationLogo {...{ ...logo }} />}\n </div>\n <div\n className={`flex justify-center items-center align-middle ${extractClassName(\n 'navigationPanel',\n mergedClassnames,\n )}`}\n >\n {items?.map((x, index) => {\n return (\n <div key={`${x.name}-${index}`}>\n <NavigationBarButton\n tooltip={x.tooltip}\n icon={x.icon}\n href={x.href}\n name={x.name}\n classNames={x.classNames}\n />\n </div>\n );\n })}\n </div>\n <div />\n <div className=\"flex items-center align-middle mr-3\">\n {actions.loginButtonVisibility === LoginButtonVisibility.Visible ? (\n <LoginButton\n icon={loginIcon}\n hideText\n className={`${extractClassName('login', mergedClassnames)}`}\n tooltip={'Login to the commons'}\n visibility={actions?.loginButtonVisibility}\n />\n ) : null}\n <ActionMenu items={actions.items} />\n </div>\n </div>\n );\n};\n\nexport default HorizontalNavigationBar;\n","import React from 'react';\nimport TopBar from './TopBar';\nimport NavigationBar from './NavigationBar';\nimport { HeaderProps } from './types';\nimport HorizontalNavigationBar from './HorizontalClean/HorizontalNavigationBar';\n\n/**\n * Header component.\n *\n * @param {object} props - The properties for the Header component.\n * @param {object} props.top - The top bar items and configuration.\n * @param {object} props.navigation - The navigation bar items and configuration.\n * @param {string} props.type - The type of header to render. Default value is 'original'.\n * @returns {JSX.Element} - The rendered Header component.\n */\nconst Header = ({ top, navigation, type = 'original' }: HeaderProps) => {\n return type === 'horizontal' ? (\n <div className=\"w-full\">\n <HorizontalNavigationBar\n logo={navigation.logo}\n title={navigation.title}\n items={navigation.items}\n classNames={{ ...navigation.classNames }}\n actions={top}\n />\n </div>\n ) : type === 'vertical' ? (\n <HorizontalNavigationBar\n logo={navigation.logo}\n title={navigation.title}\n classNames={{ ...navigation.classNames }}\n actions={top}\n />\n ) : (\n <div className=\"w-100\">\n <TopBar\n items={top.items}\n loginButtonVisibility={top?.loginButtonVisibility}\n classNames={{ ...top.classNames }}\n />\n <NavigationBar\n logo={navigation.logo}\n title={navigation.title}\n items={navigation.items}\n />\n </div>\n );\n};\n\nexport default Header;\n","import React from 'react';\nimport { Button, ButtonProps } from '@mantine/core';\n\ntype NavigationButtonProps = ButtonProps &\n React.ComponentPropsWithoutRef<'a'> & { $selected?: boolean };\n\nconst NavigationButton = ({ $selected, ...props }: NavigationButtonProps) => {\n return (\n <Button\n {...props}\n component=\"a\"\n color={$selected ? 'white' : 'gray'}\n variant={$selected ? 'filled' : 'outline'}\n size=\"lg\"\n role=\"navigation\"\n className=\"subpixel-antialiased shadow rounded-lg text-base font-heading font-medium transition hover:bg-heal-purple hover:shadow-[0_4px_5px_0px_rgba(0,0,0,0.35)] hover:border-white hover:underline\"\n />\n );\n};\n\nexport default NavigationButton;\n","import { extractClassName } from '../utils';\nimport NavigationBarButton from '../NavigationBarButton';\nimport React from 'react';\nimport { NavigationProps } from '../types';\nimport { mergeDefaultTailwindClassnames } from '../../../utils/mergeDefaultTailwindClassnames';\n\ntype LeftSidePanelProps = Pick<NavigationProps, 'items' | 'classNames'>;\n\nconst LeftSidePanel = ({\n items = [],\n classNames = {},\n}: LeftSidePanelProps) => {\n const classNamesDefaults = {\n navigationPanel: 'w-32 bg-base-light border-r-2 border-base',\n };\n\n const mergedClassnames = mergeDefaultTailwindClassnames(classNamesDefaults, classNames);\n\n return (\n <div\n className={`flex flex-col justify-start items-center align-middle ${extractClassName(\n 'navigationPanel',\n mergedClassnames,\n )}`}\n >\n {items.map((x, index) => {\n return (\n <div key={`${x.name}-${index}`}>\n <NavigationBarButton\n tooltip={x.tooltip}\n icon={x.icon}\n href={x.href}\n name={x.name}\n classNames={x.classNames}\n />\n </div>\n );\n })}\n </div>\n );\n};\n\nexport default LeftSidePanel;\n","import React, { PropsWithChildren } from 'react';\nimport Head from 'next/head';\nimport Footer from './Footer';\nimport Header from './Header';\nimport {\n FooterProps,\n HeaderData,\n HeaderProps,\n MainContentProps,\n} from './types';\nimport LeftSidePanel from './Vertical/LeftSidePanel';\n\nexport interface NavPageLayoutProps {\n headerProps: HeaderProps;\n footerProps: FooterProps;\n mainProps?: Partial<MainContentProps>;\n headerData: HeaderData;\n}\n\nconst NavPageLayout = ({\n headerProps,\n footerProps,\n mainProps,\n headerData,\n children,\n}: PropsWithChildren<NavPageLayoutProps>) => {\n const mainContentStyle = mainProps?.fixed\n ? 'flex-1 flex overflow-hidden'\n : 'flex grow';\n return (\n <div className=\"flex flex-col justify-between h-screen\">\n <Head>\n <title>{headerData.title}</title>\n <meta\n property=\"og:title\"\n content={headerData.content}\n key={headerData.key}\n />\n </Head>\n <Header {...headerProps}>\n <title>{headerData.title}</title>\n <meta\n property=\"og:title\"\n content={headerData.content}\n key={headerData.key}\n />\n </Header>\n {headerProps.type === 'vertical' ? (\n <div className=\"flex grow\">\n <LeftSidePanel\n items={headerProps.navigation.items}\n classNames={headerProps.navigation.classNames}\n />\n <main className={mainContentStyle}>{children}</main>\n </div>\n ) : (\n <main className={mainContentStyle}>{children}</main>\n )}\n <Footer {...footerProps} />\n </div>\n );\n};\n\nexport default NavPageLayout;\n","import { JSONPath } from 'jsonpath-plus';\nimport { JSONObject } from '@gen3/core';\nimport {\n DiscoveryIndexConfig,\n type TagCategory,\n type TagData,\n type TagsConfig,\n} from './types';\n\nexport const jsonPathAccessor = (path: string) => (row: JSONObject) => {\n // TODO: add logging if path is not found\n return JSONPath({ json: row, path: path });\n};\n\nexport interface TagInfo {\n color: string;\n display: boolean;\n label: string;\n}\n\nexport const getTagInfo = (\n tagData: TagData,\n tagsConfig: TagsConfig,\n): TagInfo => {\n const categoryConfig = tagsConfig.tagCategories.find(\n (category) => category.name === tagData.category,\n );\n if (categoryConfig === undefined)\n return {\n color: 'gray',\n display: tagsConfig?.showUnknownTags ?? false,\n label: tagData.name,\n };\n return {\n color: categoryConfig.color,\n display: categoryConfig?.display ? true : categoryConfig.display,\n label: categoryConfig?.displayName ?? tagData.name,\n };\n};\n\n// function given a Object and key as input will check if the key is present in the object\n// if present return the value of the key else return undefined\nexport const getStringValueFromJSONObject = (\n objectData?: JSONObject,\n key?: string,\n): string | undefined => {\n return key && objectData ? (objectData[key] as string) : undefined;\n};\n\nexport const getManualSortingAndPagination = (config: DiscoveryIndexConfig) => {\n const defaultFeature = 'client';\n const sortingAndPagination =\n config?.features?.dataLoader?.sortingAndPagination ?? defaultFeature;\n return sortingAndPagination === 'server';\n};\n","import React, { ReactElement } from 'react';\nimport { Text } from '@mantine/core';\nimport { JSONObject } from '@gen3/core';\nimport { CellRendererFunction } from './types';\nimport { toString } from 'lodash';\n\nconst defaultCellRenderer : CellRendererFunction = (\n value, params?: JSONObject,\n): ReactElement => {\n if (value === undefined || value === null || toString(value) === '') {\n return (\n <Text>\n {`${\n params && params?.valueIfNotAvailable\n ? params?.valueIfNotAvailable\n : ''\n }`}{' '}\n </Text>\n );\n }\n return <Text>{toString(value)}dfdsfdsf</Text>;\n};\n\nexport interface CellRendererFunctionCatalogEntry {\n [key: string]: CellRendererFunction;\n}\n\nexport class DiscoveryCellRendererFactory {\n private static instance: DiscoveryCellRendererFactory;\n private cellRendererCatalog: Record<\n string,\n CellRendererFunctionCatalogEntry\n > = {};\n\n private constructor() {\n this.cellRendererCatalog = {};\n }\n\n static getInstance(): DiscoveryCellRendererFactory {\n if (!DiscoveryCellRendererFactory.instance) {\n DiscoveryCellRendererFactory.instance =\n new DiscoveryCellRendererFactory();\n }\n return DiscoveryCellRendererFactory.instance;\n }\n\n static getCellRenderer(\n type: string,\n functionName: string,\n ): CellRendererFunction {\n return (\n DiscoveryCellRendererFactory.getInstance().cellRendererCatalog[type][\n functionName\n ] ?? defaultCellRenderer\n );\n }\n\n static registerCellRenderer(\n type: string,\n functionName: string,\n func: CellRendererFunction,\n ): void {\n if (\n DiscoveryCellRendererFactory.getInstance().cellRendererCatalog[type] ===\n undefined\n ) {\n DiscoveryCellRendererFactory.getInstance().cellRendererCatalog[type] = {};\n }\n DiscoveryCellRendererFactory.getInstance().cellRendererCatalog[type][\n functionName\n ] = func;\n }\n\n static registerCellRendererCatalog(\n catalog: Record<string, CellRendererFunctionCatalogEntry>,\n ): void {\n Object.keys(catalog).map((type) => {\n Object.entries(catalog[type]).map(([name, func]) => {\n DiscoveryCellRendererFactory.registerCellRenderer(type, name, func);\n });\n });\n }\n}\n\n/**\n * Retrieve the cell renderer function for the given type and function name\n * @param type\n * @param functionName\n * @param params\n */\nexport const DiscoveryTableCellRenderer = (\n type = 'string',\n functionName = 'default',\n params: JSONObject = {},\n): CellRendererFunction => {\n if (!type) {\n return defaultCellRenderer;\n }\n const func = DiscoveryCellRendererFactory.getCellRenderer(type, functionName);\n if (!func) {\n return defaultCellRenderer;\n }\n return (cellProps): ReactElement => func(cellProps, params);\n};\n","import { MRT_Row } from 'mantine-react-table';\nimport { StudyDetailsField } from '../types';\nimport React, { ReactElement } from 'react';\nimport { Box, Text } from '@mantine/core';\nimport { JSONPath } from 'jsonpath-plus';\n\nexport interface RowRenderFunctionParams<TData extends Record<string, any> = Record<string, any>> {\n row: MRT_Row<TData>;\n}\n\nexport interface RowRendererRegisteredFunctionParams extends RowRenderFunctionParams {\n studyPreviewConfig?: StudyDetailsField;\n}\n\nconst StringRowRenderer = (\n { row }: RowRenderFunctionParams,\n studyPreviewConfig?: StudyDetailsField,\n): ReactElement => {\n if (!studyPreviewConfig) {\n return <React.Fragment></React.Fragment>;\n }\n const value = JSONPath({\n json: row.original,\n path: studyPreviewConfig.field ?? '',\n });\n\n return (\n <Box\n display={'flex'}\n w={'100%'}\n >\n <Text size=\"xs\" lineClamp={2}>\n {value}\n </Text>\n </Box>\n );\n};\n\nexport const Gen3DiscoveryStandardRowPreviewRenderers = {\n string: {\n default: StringRowRenderer,\n },\n};\n\nexport const defaultRowRenderer = StringRowRenderer;\n","import { ReactElement } from 'react';\nimport {\n type RowRenderFunctionParams,\n defaultRowRenderer,\n Gen3DiscoveryStandardRowPreviewRenderers,\n} from './RowRenderers';\nimport { StudyDetailsField } from '../types';\n\n// TODO Tighten up the typing here\nexport type RowRendererFunction = (\n props: RowRenderFunctionParams,\n studyPreviewConfig?: StudyDetailsField,\n) => ReactElement;\n\nexport interface RowRendererFunctionCatalogEntry {\n [key: string]: RowRendererFunction;\n}\n\nexport class DiscoveryRowRendererFactory {\n private static instance: DiscoveryRowRendererFactory;\n private RowRendererCatalog: Record<string, RowRendererFunctionCatalogEntry> =\n {};\n\n private constructor() {\n this.RowRendererCatalog = {};\n }\n\n static getInstance(): DiscoveryRowRendererFactory {\n if (!DiscoveryRowRendererFactory.instance) {\n DiscoveryRowRendererFactory.instance = new DiscoveryRowRendererFactory();\n }\n return DiscoveryRowRendererFactory.instance;\n }\n\n static getRowRenderer(\n type: string,\n functionName: string,\n ): RowRendererFunction {\n if (!(type in DiscoveryRowRendererFactory.getInstance().RowRendererCatalog)) {\n console.log('No row renderer found for type: ', type);\n return defaultRowRenderer;\n }\n\n return (\n DiscoveryRowRendererFactory.getInstance().RowRendererCatalog[type][\n functionName\n ] ?? defaultRowRenderer\n );\n }\n\n static registerRowRenderer(\n type: string,\n functionName: string,\n func: RowRendererFunction,\n ): void {\n if (\n DiscoveryRowRendererFactory.getInstance().RowRendererCatalog[type] ===\n undefined\n ) {\n DiscoveryRowRendererFactory.getInstance().RowRendererCatalog[type] = {};\n }\n DiscoveryRowRendererFactory.getInstance().RowRendererCatalog[type][\n functionName\n ] = func;\n }\n\n static registerRowRendererCatalog(\n catalog: Record<string, RowRendererFunctionCatalogEntry>,\n ): void {\n Object.keys(catalog).map((type) => {\n Object.entries(catalog[type]).map(([name, func]) => {\n DiscoveryRowRendererFactory.registerRowRenderer(type, name, func);\n });\n });\n }\n}\n\n/**\n * Retrieve the Row renderer function for the given type and function name\n * @param studyPreviewConfig\n */\nexport const DiscoveryTableRowRenderer = (\n studyPreviewConfig?: StudyDetailsField,\n): RowRendererFunction => {\n if (!studyPreviewConfig?.contentType) {\n return (row): ReactElement => defaultRowRenderer(row, studyPreviewConfig);\n }\n const func = DiscoveryRowRendererFactory.getRowRenderer(\n studyPreviewConfig?.contentType,\n studyPreviewConfig?.renderer ?? 'default',\n );\n if (!func) {\n throw new Error(`No row renderer found for given config (contentType: ${ studyPreviewConfig?.contentType }, detailRenderer: ${ studyPreviewConfig?.renderer ?? 'default'}`);\n }\n return (row): ReactElement => func(row, studyPreviewConfig);\n};\n\nexport const registerDiscoveryDefaultStudyPreviewRenderers = () => {\n DiscoveryRowRendererFactory.registerRowRendererCatalog(\n Gen3DiscoveryStandardRowPreviewRenderers,\n );\n};\n","import React, { createContext } from 'react';\nimport { DiscoveryIndexConfig } from './types';\nimport { JSONObject } from '@gen3/core';\n\ninterface DiscoveryProviderValue {\n discoveryConfig: DiscoveryIndexConfig;\n setStudyDetails: React.Dispatch<React.SetStateAction<JSONObject>>;\n studyDetails: JSONObject;\n}\n\nconst DiscoveryContext = createContext<DiscoveryProviderValue>({\n discoveryConfig: {} as DiscoveryIndexConfig,\n setStudyDetails: () => null,\n studyDetails: {} as JSONObject,\n});\n\nconst useDiscoveryContext = () => {\n const context = React.useContext(DiscoveryContext);\n if (context === undefined) {\n throw Error(\n 'Discovery must be used must be used inside of a DiscoveryContext',\n );\n }\n return context;\n};\n\nconst DiscoveryProvider = ({\n children,\n discoveryIndexConfig,\n}: {\n children: React.ReactNode;\n discoveryIndexConfig: DiscoveryIndexConfig;\n}) => {\n const [studyDetails, setStudyDetails] = React.useState<JSONObject>({});\n\n return (\n <DiscoveryContext.Provider\n value={{\n discoveryConfig: discoveryIndexConfig,\n setStudyDetails,\n studyDetails,\n }}\n >\n {children}\n </DiscoveryContext.Provider>\n );\n};\n\nexport { useDiscoveryContext, DiscoveryProvider as default };\n","import {\n JSONValue,\n JSONObject,\n type MetadataPaginationParams,\n} from '@gen3/core';\nimport DataLibraryActionButton from './ActionBar/DataLibraryActionButton';\nimport { SummaryStatistics, SummaryStatisticsConfig } from './Statistics/types';\nimport { AdvancedSearchTerms, SearchCombination } from './Search/types';\n\nexport interface TagData {\n name: string;\n category: string;\n}\n\ninterface KeywordSearch {\n keywords?: string[];\n operator: SearchCombination;\n}\n\nexport interface SearchTerms {\n keyword: KeywordSearch;\n advancedSearchTerms: AdvancedSearchTerms;\n selectedTags?: Record<string, boolean>;\n}\n\nexport interface DiscoveryDataLoaderProps extends Record<string, any> {\n pagination: MetadataPaginationParams;\n searchTerms: SearchTerms;\n discoveryConfig: DiscoveryIndexConfig;\n}\n\nexport interface DataRequestStatus {\n isFetching: boolean;\n isLoading: boolean;\n isUninitialized: boolean;\n isSuccess: boolean;\n isError: boolean;\n}\n\nexport interface DiscoverDataHookResponse {\n data: Array<JSONObject>;\n hits: number;\n advancedSearchFilterValues: ReadonlyArray<KeyValueSearchFilter>;\n dataRequestStatus: DataRequestStatus;\n summaryStatistics: SummaryStatistics;\n suggestions: Array<string>;\n clearSearch?: () => void;\n}\n\nexport type DiscoveryTableDataHook = (\n dataHookArgs: DiscoveryDataLoaderProps,\n ...args: any[]\n) => DiscoverDataHookResponse;\n\nexport interface KeyValueSearchFilter {\n key: string;\n keyDisplayName?: string;\n valueDisplayNames?: Record<string, string>;\n}\n\nexport interface AdvancedSearchFilters {\n enabled: boolean;\n field: string;\n displayName: string;\n filters: ReadonlyArray<KeyValueSearchFilter>;\n}\n\nexport interface TagInfo {\n name: string;\n category: string;\n}\n\nexport const isTagInfo = (obj: any): obj is TagInfo => {\n return obj && obj.name && obj.category;\n};\n\nexport const isTagInfoArray = (obj: any): obj is TagInfo[] => {\n return obj && Array.isArray(obj) && obj.every(isTagInfo);\n};\n\nexport interface SearchKV {\n key: string;\n value: any;\n}\n\nexport const isSearchKV = (obj: any): obj is SearchKV => {\n return obj && obj.key && obj.value;\n};\n\nexport const isSearchKVArray = (obj: any): obj is SearchKV[] => {\n return obj && Array.isArray(obj) && obj.every(isSearchKV);\n};\n\nexport interface TagCategory extends TagInfo {\n displayName: string;\n color: string;\n display: boolean;\n}\n\nexport type DiscoveryContentTypes =\n | string\n | 'string'\n | 'number'\n | 'date'\n | 'array'\n | 'link'\n | 'boolean'\n | 'paragraphs';\n\nexport interface StudyColumn {\n name: string;\n field: string;\n contentType?: DiscoveryContentTypes;\n cellRenderFunction?: string;\n params?: JSONObject;\n errorIfNotAvailable?: boolean;\n valueIfNotAvailable?: string | number;\n}\n\nexport interface MinimalFieldMapping {\n authzField: string;\n tagsListFieldName: string;\n dataAvailabilityField: string;\n uid: string;\n}\n\nexport interface StudyDetailsField {\n name: string;\n field: string;\n contentType?: string;\n includeLabel?: boolean;\n includeIfNotAvailable?: boolean;\n valueIfNotAvailable?: string | number;\n renderer?: string;\n params?: Record<string, unknown>;\n classNames?: Record<string, string>;\n}\n\nexport interface StudyPageGroup {\n groupName?: string;\n groupWidth?: 'half' | 'full';\n fields: StudyDetailsField[];\n}\n\nexport interface DataDownloadLinks {\n field: string;\n name?: string;\n className?: Record<string, string>;\n}\n\nexport interface DownloadLinkFields {\n idField: string;\n titleField: string;\n descriptionField: string;\n}\n\nexport interface StudyPageConfig {\n showAllAvailableFields?: boolean;\n header?: {\n field: string;\n className?: string;\n };\n downloadLinks?: DataDownloadLinks;\n downloadLinkFields?: DownloadLinkFields;\n classNames?: Record<string, string>;\n fieldsToShow: Array<StudyPageGroup>; // render multiple groups of fields\n}\n\nexport interface StudyTabTagField extends StudyDetailsField {\n categories?: string[];\n}\n\nexport interface StudyTabGroup {\n header: string;\n fields: Array<StudyDetailsField | StudyTabTagField>;\n}\n\nexport interface StudyDetailTab {\n tabName: string;\n groups: StudyTabGroup[];\n}\n\nexport interface StudyDetailView {\n header: {\n field: string;\n className?: string;\n };\n tabs: StudyDetailTab[];\n}\n\ninterface DiscoveryTableConfig {\n selectableRows?: boolean;\n expandableRows?: boolean;\n expandingRowRenderFunction?: string;\n}\n\ninterface DiscoveryPageTitle {\n enabled: boolean;\n text: string;\n}\n\nexport interface DataLibraryActionButton {\n type:\n | 'manifest'\n | 'zip'\n | 'download'\n | 'link'\n | 'externalLink'\n | 'add-to-workspace';\n label?: string; // label for the action button\n icon?: string;\n requiresLogin?: boolean; // set to true if the action requires login\n tooltip?: string; // tooltip text\n actionFunction: string;\n}\n\nexport interface SearchBar {\n enabled: boolean;\n inputSubtitle: string;\n placeholder?: string;\n searchableTextFields: Array<string>;\n}\n\ninterface TagSearchDropdown {\n enabled?: boolean;\n collapsibleButtonText?: string;\n}\n\nexport interface SearchConfig {\n searchBar?: SearchBar;\n tagSearchDropdown?: TagSearchDropdown;\n}\n\nexport interface AuthorizationValues {\n enabled: boolean;\n menuText: string;\n}\n\nexport interface ExportToDataLibrary {\n buttons: DataLibraryActionButton[];\n enabled?: boolean;\n verifyExternalLogins?: boolean;\n loginRequireForAllButtons?: boolean;\n manifestFieldName?: string;\n}\n\nexport interface DataAuthorization {\n columnTooltip?: string;\n supportedValues?: Record<string, AuthorizationValues>;\n enabled?: boolean;\n}\n\nexport interface AccessFilters {\n [accessLevel: number]: boolean;\n}\n\ninterface DiscoveryIndex {\n indexName: string;\n}\n\ninterface DataLoader {\n dataFetchFunction?: string;\n dataFetchArgs?: JSONObject;\n sortingAndPagination?: 'client' | 'server';\n}\n\nexport interface TagsConfig {\n tagCategories: TagCategory[];\n showUnknownTags?: boolean;\n}\n\n// TODO: Type the rest of the config\nexport interface DiscoveryIndexConfig {\n guidType?: string;\n studyField?: string;\n label?: string;\n features: {\n advSearchFilters?: AdvancedSearchFilters;\n aiSearch?: boolean;\n pageTitle: DiscoveryPageTitle;\n exportToDataLibrary?: ExportToDataLibrary;\n search?: SearchConfig;\n authorization: DataAuthorization;\n dataLoader?: DataLoader;\n };\n aggregations: SummaryStatisticsConfig[];\n tags: TagsConfig;\n tableConfig: DiscoveryTableConfig;\n studyColumns: StudyColumn[];\n studyPreviewField?: StudyDetailsField;\n simpleDetailsView?: StudyPageConfig;\n detailView: StudyDetailView;\n minimalFieldMapping: MinimalFieldMapping;\n}\n\nexport interface DiscoveryConfig {\n metadataConfig: Array<DiscoveryIndexConfig>;\n}\n\nexport interface UserAuthMapping {\n service: string;\n method: string;\n}\n\nexport const accessibleFieldName = '__accessible';\nconst ARBORIST_READ_PRIV = 'read';\n\nexport enum AccessLevel {\n ACCESSIBLE = 1,\n UNACCESSIBLE = 2,\n PENDING = 3,\n NOT_AVAILABLE = 4,\n OTHER = 5,\n}\n\nexport interface DiscoveryResource\n extends Record<string, JSONValue | AccessLevel | TagInfo[] | undefined> {\n [accessibleFieldName]?: AccessLevel;\n tags?: Array<TagInfo>;\n}\n","import React from 'react';\nimport { CellRenderFunctionProps } from './types';\nimport { AccessLevel } from '../types';\nimport {\n LuClock as PendingIcon,\n LuUnlock as UnlockedIcon,\n LuLock as LockedIcon,\n LuCircleSlash as NotAvailableIcon,\n} from 'react-icons/lu';\n\nexport const DataAccessCellRenderer = ({ value }: CellRenderFunctionProps) => {\n if ((value as AccessLevel) === AccessLevel.PENDING) {\n return (\n <PendingIcon color=\"green\">You have access to this study.</PendingIcon>\n );\n }\n if ((value as AccessLevel) === AccessLevel.NOT_AVAILABLE) {\n return (\n <NotAvailableIcon color=\"green\">\n You have access to this study.\n </NotAvailableIcon>\n );\n }\n if ((value as AccessLevel) === AccessLevel.ACCESSIBLE) {\n return (\n <UnlockedIcon color=\"green\">You have access to this study.</UnlockedIcon>\n );\n }\n if ((value as AccessLevel) === AccessLevel.UNACCESSIBLE) {\n return (\n <LockedIcon color=\"green\">You have access to this study.</LockedIcon>\n );\n }\n return <React.Fragment />;\n};\n","import tinycolor, { type Instance } from 'tinycolor2';\n\nconst DEFAULT_NUM_DARK_COLORS = 4;\nconst DEFAULT_NUM_LIGHT_COLORS = 4;\n\nexport const errorColor = tinycolor('#ffffffff');\n\nconst CONTRAST_RANGE = ['#111111', '#FEFEFE'];\n\nconst mix = (startColor: Instance, mixinColor: Instance, weight: number) => {\n if (!mixinColor || !mixinColor.isValid()) {\n throw new Error(\n 'Argument to \"mix\" was not a Color instance, but rather an instance of ' +\n typeof mixinColor,\n );\n }\n\n const color1 = mixinColor;\n const p = weight === undefined ? 0.5 : weight;\n\n const w = 2 * p - 1;\n const a = color1.getAlpha() - startColor.getAlpha();\n\n const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2;\n const w2 = 1 - w1;\n\n return tinycolor.fromRatio({\n r: w1 * color1.toRgb().r + w2 * startColor.toRgb().r,\n g: w1 * color1.toRgb().g + w2 * startColor.toRgb().g,\n b: w1 * color1.toRgb().b + w2 * startColor.toRgb().b,\n a: color1.getAlpha() * p + startColor.getAlpha() * (1 - p),\n });\n};\n\nexport const getColorsList = (\n colorsAmount: number,\n colorsShiftAmount: number,\n mixColor: Instance,\n saturation: number,\n mainColor: Instance,\n) => {\n const colorsList = [];\n const givenColor = mainColor.isValid() ? mainColor : errorColor;\n\n let step;\n for (step = 0; step < colorsAmount; step++) {\n if (mainColor.isValid()) {\n colorsList.push(\n mix(\n givenColor.saturate(((step + 1) / colorsAmount) * (saturation / 100)),\n mixColor,\n ((colorsShiftAmount / 100) * (step + 1)) / colorsAmount,\n ),\n );\n } else {\n colorsList.push(errorColor);\n }\n }\n return colorsList;\n};\n\nconst colorType = [\n 'min',\n 'darkest',\n 'darker',\n 'dark',\n 'DEFAULT',\n 'vivid',\n 'light',\n 'lighter',\n 'lightest',\n 'max',\n];\n\nexport const create10ColorPallet = (\n mainColor: string,\n): Record<string, string> => {\n const darkColors = getColorsList(\n DEFAULT_NUM_DARK_COLORS,\n 90,\n tinycolor('#000000'),\n 20,\n tinycolor(mainColor),\n )\n .reverse()\n .map((color) => color);\n const lightColors = getColorsList(\n DEFAULT_NUM_LIGHT_COLORS,\n 90,\n tinycolor('#ffffff'),\n 20,\n tinycolor(mainColor),\n ).map((color) => color);\n\n return {\n DEFAULT: mainColor,\n vivid: tinycolor(mainColor).saturate(10).toHexString(),\n ...darkColors.reduce((obj, c: Instance, idx) => {\n obj[colorType[idx]] = c.toHexString();\n return obj;\n }, {} as Record<string, string>),\n ...lightColors.reduce((obj, c: Instance, idx) => {\n obj[colorType[idx + 6]] = c.toHexString();\n return obj;\n }, {} as Record<string, string>),\n };\n};\n\nexport const create10ColorAccessibleContrast = (\n pallet: Record<string, string>,\n): Record<string, string> => {\n return Object.entries(pallet).reduce((results, [colorName, value]) => {\n return {\n ...results,\n [colorName]: tinycolor\n .mostReadable(value, CONTRAST_RANGE, {\n includeFallbackColors: true,\n level: 'AAA',\n size: 'large',\n })\n .toHexString(),\n };\n }, {});\n};\n","/**\n * @returns {number} time in seconds since Unix epoch.\n */\nexport function getCurrentUnixTimestamp(): number {\n return Math.floor(Date.now() / 1000);\n}\n\n/**\n * convert unix timestamp to date time string\n * @param {number} unixTime\n * @returns {string} date time string\n */\nexport function unixTimeToString(unixTime: number): string {\n return new Date(unixTime * 1000).toLocaleString();\n}\n","import { UserAuthMapping } from '../features/Discovery/types';\n\nexport const resourcePathFromProjectID = (projectID: string) => {\n const split = projectID.split('-');\n const program = split[0];\n const project = split.length > 1 ? split.slice(1).join('-') : '';\n return `/programs/${program}/projects/${project}`;\n};\n\nexport const userHasMethodForServiceOnResource = (\n method: string,\n service: string,\n resourcePath: string,\n userAuthMapping: Record<string, Array<UserAuthMapping>> = {},\n) => {\n const actions = userAuthMapping[resourcePath];\n // accommodate for '*' logic\n // if we need to check for a specific service/method pair for a resource,\n // e.g.: {service: sheepdog, method: update}\n // then this function should return true if the user has either of\n // the following pair for this policy\n // 1. {service: sheepdog, method: update}\n // 2. {service: sheepdog, method: *}\n // 3. {service: *, method: update}\n // 4. {service: *, method: *}\n return (\n actions !== undefined &&\n actions.some(\n (x) =>\n (x.service === service || x.service === '*') &&\n (x.method === method || x.method === '*'),\n )\n );\n};\n","export const focusStyles =\n 'focus-visible:outline-none focus-visible:ring-offset-2 focus:ring-offset-white rounded-md focus-visible:ring-inset focus-visible:ring-2 focus-visible:ring-focusColor';\n","export const stripTrailingSlash = (str:string):string => {\n return str.endsWith('/') ?\n str.slice(0, -1) :\n str;\n};\n","import React, { CSSProperties } from 'react';\n\nexport const isArrayOfString = (value: any): value is Array<string> => {\n return (\n Array.isArray(value) &&\n value.every((element) => typeof element === 'string')\n );\n};\n\n// Define the valid textTransform values\nconst validTextTransforms: Array<CSSProperties['textTransform']> = [\n 'none',\n 'capitalize',\n 'uppercase',\n 'lowercase',\n 'full-width',\n 'full-size-kana',\n 'inherit',\n 'initial',\n 'revert',\n 'unset',\n];\n\n// Type guard function\nexport const isTextTransform = (\n value: any,\n): value is CSSProperties['textTransform'] => {\n return validTextTransforms.includes(value);\n};\n","import { JSONObject } from '@gen3/core';\nimport { Text, Tooltip } from '@mantine/core';\nimport { isArray } from 'lodash';\nimport React from 'react';\nimport { DataItemRendererFunction, DataItemRenderFunctionProps } from './types';\nimport { isTextTransform } from '../../utils';\n\nexport const TruncatedStringWithTooltip: DataItemRendererFunction = ({\n value,\n params,\n}: DataItemRenderFunctionProps) => {\n let limit = 15;\n if (\n typeof params?.maxLength === 'string' &&\n !isNaN(Number(params?.maxLength))\n ) {\n limit = parseInt(params?.maxLength, 10);\n } else if (typeof params?.maxLength === 'number') {\n limit = params?.maxLength;\n }\n\n const ttValue = isTextTransform(params?.transform)\n ? params?.transform\n : undefined;\n const valueIfNotAvailable = params?.valueIfNotAvailable ?? '';\n const content = value as string | string[];\n\n if (\n content === undefined ||\n content === null ||\n (isArray(content) && content.length === 0)\n ) {\n return <Text>{`${valueIfNotAvailable}`}</Text>;\n }\n\n if (content === '') {\n return <Text>{`${valueIfNotAvailable}`} </Text>;\n }\n const contentString = isArray(content) ? content.join(', ') : content;\n const truncated =\n contentString.length > limit\n ? `${contentString.slice(0, limit)}...`\n : contentString;\n return (\n <Tooltip label={content}>\n <Text tt={ttValue}>{truncated}</Text>\n </Tooltip>\n );\n};\n","import { JSONObject } from '@gen3/core';\nimport { toString } from 'lodash';\n\nexport const isPropertyKey = (value: unknown): value is PropertyKey => {\n return (\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'symbol'\n );\n};\nexport const hasOwnProperty = <X extends object, Y extends PropertyKey>(\n obj?: X,\n prop?: Y,\n): obj is X & Record<Y, unknown> => {\n if (obj === undefined) return false;\n if (prop === undefined) return false;\n return Object.hasOwnProperty.call(obj, prop);\n};\nexport const getParamsValueAsString = (params?: JSONObject, key?: string) => {\n return params && key && key !== '' && isPropertyKey(key) && hasOwnProperty(params, key)\n ? toString(params[key])\n : undefined;\n};\n","import { isArray, toString } from 'lodash';\nimport React, { CSSProperties } from 'react';\nimport { Badge, Text } from '@mantine/core';\nimport Link from 'next/link';\nimport { DiscoveryCellRendererFactory } from './CellRendererFactory';\nimport { getTagInfo } from '../utils';\nimport { useDiscoveryContext } from '../DiscoveryProvider';\nimport { CellRendererFunction, CellRenderFunctionProps } from './types';\nimport { DataAccessCellRenderer } from './DataAccessCellRenderers';\nimport { TruncatedStringWithTooltip } from '../../../components/DataItems/TruncatedStringWithTooltip';\nimport { JSONObject } from '@gen3/core';\n\nimport { getParamsValueAsString } from '../../../utils/values';\n\nconst TruncatedStringWithTooltipCellRenderer: CellRendererFunction = (\n { value }: CellRenderFunctionProps,\n params?: JSONObject,\n) => {\n return <TruncatedStringWithTooltip value={value} params={params} />;\n};\n\n// TODO need to type this\nexport const RenderArrayCell: CellRendererFunction = ({\n value,\n}: CellRenderFunctionProps) => {\n if (isArray(value)) {\n return (\n <div className=\"w-64 flex flex-wrap gap-0.5\">\n {value.map((x, index) => (\n <Badge\n variant=\"outline\"\n classNames={{ root: 'basis-1/3' }}\n color=\"accent-light\"\n key={`${x}-value-${index}`}\n >\n {x}\n </Badge>\n ))}\n </div>\n );\n }\n return <span>value</span>;\n};\n\n// Define the valid textTransform values\nconst validTextTransforms: Array<CSSProperties['textTransform']> = [\n 'none',\n 'capitalize',\n 'uppercase',\n 'lowercase',\n 'full-width',\n 'full-size-kana',\n 'inherit',\n 'initial',\n 'revert',\n 'unset',\n];\n\n// Type guard function\nconst isTextTransform = (\n value: any,\n): value is CSSProperties['textTransform'] => {\n return validTextTransforms.includes(value);\n};\n\nexport const RenderArrayCellNegativePositive: CellRendererFunction = ({\n value,\n cell,\n}: CellRenderFunctionProps) => {\n if (isArray(value)) {\n return (\n <div className=\"w-64 flex flex-wrap gap-0.5\">\n {value.map((x, index) => (\n <Badge\n variant=\"filled\"\n color={x === 'Positive' ? 'green' : 'gray'}\n classNames={{ root: 'basis-1/3' }}\n key={`${cell?.id ?? 'cell'}-value-${index}`}\n >\n {x}\n </Badge>\n ))}\n </div>\n );\n }\n // TODO: This is a hack to get around the fact that the data is not typed\n return <span>{value as any}</span>;\n};\n\nexport const RenderLinkCell: CellRendererFunction = ({\n value,\n}: CellRenderFunctionProps) => {\n const content = value as string;\n return (\n <Link\n href={content}\n onClick={(ev) => ev.stopPropagation()}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n {content}\n </Link>\n );\n};\n\nconst RenderYearOfBirthRestricted: CellRendererFunction = (\n { value }: CellRenderFunctionProps,\n params?: JSONObject,\n) => {\n const ttValue = isTextTransform(params?.transform)\n ? params?.transform\n : undefined;\n const valueIfNotAvailable = params?.valueIfNotAvailable || '';\n const content = value as string | string[];\n if (content === undefined || content === null) {\n return <Text>{`${valueIfNotAvailable}`} </Text>;\n }\n if (content == '') {\n return <Text>{`${valueIfNotAvailable}`} </Text>;\n }\n\n // Check if the content is a string and represents a year less than 1935\n let displayContent;\n if (\n typeof content === 'string' &&\n !isNaN(Number(content)) &&\n Number(content) < 1935\n ) {\n displayContent = '1935';\n } else if (isArray(content)) {\n displayContent = content\n .map((item) => {\n if (\n typeof item === 'string' &&\n !isNaN(Number(item)) &&\n Number(item) < 1935\n ) {\n return '1935';\n }\n return item;\n })\n .join(', ');\n } else {\n displayContent = content;\n }\n\n return <Text tt={ttValue}>{displayContent}</Text>;\n};\n\n// given a field name, extract the value from the row using the type guards above\n\nexport const RenderLinkWithURL: CellRendererFunction = (\n { value, cell }: CellRenderFunctionProps,\n\n params?: JSONObject,\n) => {\n const content = toString(value);\n if (!content) {\n return (\n <Text>{`${\n getParamsValueAsString(params, 'valueIfNotAvailable') ?? ''\n }`}</Text>\n );\n }\n const ttValue = isTextTransform(params?.transform)\n ? params?.transform\n : undefined;\n const rowData = getParamsValueAsString(\n cell?.row?.original,\n toString(params?.['hrefValueFromField']),\n );\n if (rowData) {\n return (\n <a\n href={`http://${rowData}`}\n onClick={(ev) => ev.stopPropagation()}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n <Text c=\"utility.0\" tt={ttValue}>\n {content}\n </Text>\n </a>\n );\n }\n return (\n <a\n href={`http://${content}`}\n onClick={(ev) => ev.stopPropagation()}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n <Text c=\"utility.0\" tt={ttValue}>\n {content} fgh\n </Text>\n </a>\n );\n};\n\nconst RenderStringCell: CellRendererFunction = (\n { value }: CellRenderFunctionProps,\n params?: JSONObject,\n) => {\n const ttValue = isTextTransform(params?.transform)\n ? params?.transform\n : undefined;\n const valueIfNotAvailable = params?.valueIfNotAvailable || '';\n const content = value as string | string[];\n if (content === undefined || content === null) {\n return <Text>{`${valueIfNotAvailable}`} </Text>;\n }\n if (content == '') {\n return <Text>{`${valueIfNotAvailable}`} </Text>;\n }\n return (\n <Text tt={ttValue}>{isArray(content) ? content.join(', ') : content}</Text>\n );\n};\n\nconst RenderNumberCell: CellRendererFunction = (\n { value }: CellRenderFunctionProps,\n params?: JSONObject,\n) => {\n const isContentEmpty = value === undefined || value === null;\n const paramsValueIfNotAvailable = params?.valueIfNotAvailable || '';\n const content = value as number | number[];\n\n if (isContentEmpty) {\n return <Text>{`${paramsValueIfNotAvailable}`}</Text>;\n }\n\n let stringValue = '';\n // check if content is an array of all numbers\n if (isArray(content) && content.every((item) => typeof item === 'number')) {\n stringValue = content.map((v) => (v ? v.toLocaleString() : '')).join('; ');\n } else {\n stringValue = content.toLocaleString();\n }\n\n return <Text>{stringValue}</Text>;\n};\n\nconst RenderParagraphsCell: CellRendererFunction = ({\n value,\n}: CellRenderFunctionProps) => {\n const content = value as string | string[];\n return (\n <React.Fragment>\n {isArray(content)\n ? content\n .join('\\n')\n .split('\\n')\n .map((paragraph, i) => <p key={i}>{paragraph}</p>)\n : content.split('\\n').map((paragraph, i) => <p key={i}>{paragraph}</p>)}\n </React.Fragment>\n );\n};\n\n// TODO This is likely to be replaced by a more general tag component\ninterface TagData {\n name: string;\n category: string;\n}\n\n// TODO Fix below\n// eslint-disable-next-line react/prop-types\nexport const RenderTagsCell: CellRendererFunction = ({\n value,\n}: CellRenderFunctionProps) => {\n const content = value as TagData[];\n const { discoveryConfig: config } = useDiscoveryContext();\n return (\n <div className=\"flex space-x-1 space-y-4\">\n {content.map((x: TagData) => {\n const { color, display, label } = getTagInfo(x, config.tags);\n if (!display) return null;\n return (\n <Badge\n key={x.name}\n role=\"button\"\n size=\"lg\"\n radius=\"sm\"\n variant=\"filled\"\n tabIndex={0}\n aria-label={x.name}\n style={{\n backgroundColor: color,\n borderColor: color,\n color: 'white',\n }}\n >\n {label}\n </Badge>\n );\n })}\n </div>\n );\n};\n\nexport const Gen3DiscoveryStandardCellRenderers = {\n array: {\n NegativePositive: RenderArrayCellNegativePositive,\n default: RenderArrayCell,\n },\n string: {\n default: RenderStringCell,\n yearOfBirthRestricted: RenderYearOfBirthRestricted,\n truncated: TruncatedStringWithTooltipCellRenderer,\n },\n number: {\n default: RenderNumberCell,\n },\n paragraphs: {\n default: RenderParagraphsCell,\n },\n tags: {\n default: RenderTagsCell,\n },\n link: {\n default: RenderLinkCell,\n withURL: RenderLinkWithURL,\n },\n dataAccess: {\n default: DataAccessCellRenderer,\n },\n};\n\nexport const registerDiscoveryDefaultCellRenderers = () => {\n DiscoveryCellRendererFactory.registerCellRendererCatalog(\n Gen3DiscoveryStandardCellRenderers,\n );\n};\n","import React, { ReactElement } from 'react';\nimport { JSONValue } from '@gen3/core';\n\nexport type FieldRendererFunction = (\n fieldValue: JSONValue,\n fieldLabel?: string,\n params?: Record<string, any>, //TODO - define the type of params\n) => JSX.Element;\n\nconst defaultStudyFieldRenderer = (\n fieldValue: JSONValue,\n fieldLabel?: string,\n): ReactElement => {\n return (\n <div className=\"flex w-full justify-between px-1 no-wrap'\">\n {fieldLabel ? <span>{fieldLabel}</span> : null};\n <span>{fieldValue as string}</span>;\n </div>\n );\n};\n\nexport type FieldRendererFunctionMap = Record<string, FieldRendererFunction>;\n\nexport class StudyFieldRendererFactory {\n private static instance: StudyFieldRendererFactory;\n private fieldRendererCatalog: Record<string, FieldRendererFunctionMap> = {};\n\n private constructor() {\n this.fieldRendererCatalog = {};\n }\n\n static getInstance(): StudyFieldRendererFactory {\n if (!StudyFieldRendererFactory.instance) {\n StudyFieldRendererFactory.instance = new StudyFieldRendererFactory();\n }\n return StudyFieldRendererFactory.instance;\n }\n\n static getRenderer(\n type: string,\n functionName: string,\n ): FieldRendererFunction {\n if (\n !(type in StudyFieldRendererFactory.getInstance().fieldRendererCatalog)\n ) {\n console.log('No field renderer found for type: ', type);\n return defaultStudyFieldRenderer;\n }\n return (\n StudyFieldRendererFactory.getInstance().fieldRendererCatalog[type][\n functionName\n ] ?? defaultStudyFieldRenderer\n );\n }\n\n static registerFieldRenderer(\n type: string,\n functionName: string,\n func: FieldRendererFunction,\n ): void {\n if (\n StudyFieldRendererFactory.getInstance().fieldRendererCatalog[type] ===\n undefined\n ) {\n StudyFieldRendererFactory.getInstance().fieldRendererCatalog[type] = {};\n }\n StudyFieldRendererFactory.getInstance().fieldRendererCatalog[type][\n functionName\n ] = func;\n }\n\n static registerFieldRendererCatalog(\n catalog: Record<string, FieldRendererFunctionMap>,\n ): void {\n Object.keys(catalog).map((type) => {\n Object.entries(catalog[type]).map(([name, func]) => {\n StudyFieldRendererFactory.registerFieldRenderer(type, name, func);\n });\n });\n }\n}\n\n/**\n * Retrieve the renderer function for the given type and function name\n * @param type\n * @param functionName\n */\nexport const DiscoveryDetailsRenderer = (\n type = 'string',\n functionName = 'default',\n): FieldRendererFunction => {\n if (!type) {\n return defaultStudyFieldRenderer;\n }\n const func = StudyFieldRendererFactory.getRenderer(type, functionName);\n return (arg1, arg2, arg3): ReactElement => func(arg1, arg2, arg3);\n};\n","import React, { ReactElement } from 'react';\nimport Link from 'next/link';\nimport { isArray, toString } from 'lodash';\nimport { JSONPath } from 'jsonpath-plus';\nimport { Alert, Text } from '@mantine/core';\nimport {\n accessibleFieldName,\n DiscoveryResource,\n AccessLevel,\n StudyDetailsField,\n StudyTabTagField,\n} from '../types';\nimport { RenderTagsCell } from '../TableRenderers/CellRenderers';\nimport {\n StudyFieldRendererFactory,\n FieldRendererFunction,\n FieldRendererFunctionMap,\n DiscoveryDetailsRenderer,\n} from './RendererFactory';\nimport { JSONValue } from '@gen3/core';\n\n/**\n * Converts a JSON value into a React element.\n *\n * @param {JSONValue} value - The JSON value to convert.\n * @returns {ReactElement} The React element representing the JSON value.\n */\nconst jsonValueToElement = (value: JSONValue): ReactElement => {\n if (typeof value === 'string') {\n // if JSONValue is a string, display it inside a span\n return <span>{value}</span>;\n } else if (typeof value === 'boolean') {\n // if JSONValue is a boolean, display it inside a span\n return <span>{value.toString()}</span>;\n } else if (typeof value === 'number') {\n // if JSONValue is a number, display it inside a span\n return <span>{value}</span>;\n } else if (Array.isArray(value)) {\n // if JSONValue is an array, map each item into a list element and wrap them in a ul\n return (\n <ul>\n {value.map((v, i) => (\n <li key={i}>{jsonValueToElement(v)}</li>\n ))}\n </ul>\n );\n } else if (typeof value === 'object' && value !== null) {\n // if JSONValue is an object (excluding null), display each property in its own line,\n // using a recursive call to display the value of each property\n return (\n <ul>\n {Object.entries(value).map(([k, v], i) => (\n <li key={i}>\n <strong>{k}:</strong> {jsonValueToElement(v)}\n </li>\n ))}\n </ul>\n );\n } else {\n // if JSONValue is null, or otherwise unhandled, return an empty fragment\n return <React.Fragment />;\n }\n};\n\n/**\n * Default style for discovery field.\n */\nconst discoveryFieldStyle = 'flex w-full justify-between px-1 no-wrap';\n\n/**\n * Renders a block of text.\n *\n * @param {JSONValue} fieldValue - The value to render.\n * @returns {ReactElement} The rendered block of text.\n */\nconst blockTextField = (fieldValue: JSONValue): ReactElement => (\n <div className={discoveryFieldStyle}>{jsonValueToElement(fieldValue)}</div>\n);\n\n/**\n * Renders a label for a field. If the label text is undefined, returns an empty fragment.\n * @param labelText - the label text to render.\n */\nconst label = (labelText?: string): ReactElement =>\n labelText ? (\n <Text\n tt=\"uppercase\"\n fw=\"500\"\n className=\"p-0.75 whitespace-pre-wrap break-words\"\n >\n {labelText}\n </Text>\n ) : (\n <React.Fragment />\n );\n\n/**\n * Renders a text field component.\n *\n * @param {string} fieldValue - The value to be displayed in the text field.\n * @returns {React.Element} - The rendered text field component.\n */\nconst textField = (fieldValue: JSONValue, style = ''): ReactElement => (\n <span\n className={`text-left overflow-hidden p-0.75 whitespace-pre-wrap break-words ${style}`}\n >\n {toString(fieldValue)}\n </span>\n);\n\n/**\n * Represents a link field component that generates a hyperlink with an optional text label.\n *\n * @param linkValue - The target URL for the hyperlink.\n * @param linkText - The optional text label for the hyperlink. If not provided, the linkValue will be used as the label.\n * @returns A JSX element containing the generated hyperlink.\n */\nconst linkFieldWithOptionalLabel = (\n linkValue: string,\n linkText?: string,\n): ReactElement => (\n <Link href={linkValue} target=\"_blank\" rel=\"noreferrer\">\n {linkText ?? linkValue}\n </Link>\n);\n\nconst linkFieldOnly = (linkValue: string, _?: string) => (\n <Link href={linkValue} target=\"_blank\" rel=\"noreferrer\">\n {linkValue}\n </Link>\n);\n\n/**\n * Represents a link field component that generates a hyperlink with an optional text label.\n *\n * @param linkValue - The target URL for the hyperlink.\n * @returns A JSX element containing the generated hyperlink.\n */\nconst linkField = (linkValue: string) => (\n <Link href={linkValue} target=\"_blank\" rel=\"noreferrer\">\n <Text color=\"utility.0\" className=\"underline\">\n {linkValue}\n </Text>\n </Link>\n);\n\nconst subHeading = (text: string) => (\n <h3 className=\"discovery-subheading\">{text}</h3>\n);\n\nconst labeledSingleLinkField = (\n linkValue: JSONValue,\n labelText?: string,\n parans?: Record<string, any>,\n) =>\n typeof linkValue !== 'string' ? (\n <React.Fragment />\n ) : (\n <div className={discoveryFieldStyle} key={labelText}>\n {label(labelText)} {linkField(linkValue)}\n </div>\n );\n\nconst labeledNumberField = (fieldValue: JSONValue, labelText?: string) => {\n if (typeof fieldValue !== 'number' && typeof fieldValue !== 'string')\n return <React.Fragment />;\n return (\n <div className={discoveryFieldStyle} key={labelText}>\n {label(labelText)} {fieldValue?.toLocaleString()}\n </div>\n );\n};\n\nconst labeledMultipleLinkField = (value: JSONValue, labelText?: string) => {\n const linksText = isArray(value) ? value : [toString(value)];\n return linksText.length ? (\n <div>\n {[\n // labeled first field\n <div className={discoveryFieldStyle} key={labelText}>\n {label(labelText)} {linkField(linksText[0] as string)}\n </div>,\n // unlabeled subsequent fields\n ...linksText.slice(1).map((linkText, i) => (\n <div className={discoveryFieldStyle} key={`${linkText}-${i}`}>\n {label(labelText)}\n {linkField(linkText as string)}\n </div>\n )),\n ]}\n </div>\n ) : (\n <React.Fragment />\n );\n};\n\ninterface LinkWithTitle {\n title: string;\n link: string;\n}\n\nconst unlabeledMultipleLinkField = (\n fieldData: JSONValue,\n fieldName?: string,\n) => {\n if (!isArray(fieldData) || fieldData.length === 0) return <React.Fragment />;\n const links = fieldData[0] as unknown as LinkWithTitle[];\n\n return (\n <div className=\"flex flex-col\" key={`${fieldName}-links`}>\n {links.map((link) => labeledSingleLinkField(link.link, link.title))}\n </div>\n );\n};\n\nconst labeledSingleTextField: FieldRendererFunction = (\n fieldValue: JSONValue,\n fieldLabel?: string,\n params?: Record<string, any>,\n) => {\n let stringFieldValue = '';\n if (typeof fieldValue === 'number') {\n stringFieldValue = fieldValue.toLocaleString();\n } else if (typeof fieldValue !== 'string') return <React.Fragment />;\n\n stringFieldValue = fieldValue as string;\n return (\n <div\n className={discoveryFieldStyle}\n key={`study-details-${fieldLabel}-${stringFieldValue}`}\n >\n {label(fieldLabel)} {textField(stringFieldValue, params?.style ?? '')}\n </div>\n );\n};\n\nconst labeledYearOfBirthRestricted: FieldRendererFunction = (\n fieldValue: JSONValue,\n fieldLabel?: string,\n) => {\n let stringFieldValue = '';\n if (typeof fieldValue === 'number') {\n stringFieldValue = fieldValue.toLocaleString();\n } else if (typeof fieldValue !== 'string') return <React.Fragment />;\n\n stringFieldValue = fieldValue as string;\n\n let displayContent;\n if (\n typeof stringFieldValue === 'string' &&\n !isNaN(Number(stringFieldValue)) &&\n Number(stringFieldValue) < 1935\n ) {\n displayContent = '1935';\n } else if (isArray(stringFieldValue)) {\n displayContent = stringFieldValue\n .map((item) => {\n if (\n typeof item === 'string' &&\n !isNaN(Number(item)) &&\n Number(item) < 1935\n ) {\n return '1935';\n }\n return item;\n })\n .join(', ');\n } else {\n displayContent = stringFieldValue;\n }\n\n return (\n <div\n className={discoveryFieldStyle}\n key={`study-details-${fieldLabel}-${displayContent}`}\n >\n {label(fieldLabel)} {textField(displayContent)}\n </div>\n );\n};\n\nconst labeledParagraph: FieldRendererFunction = (\n fieldValue: JSONValue,\n fieldLabel?: string,\n) => {\n if (typeof fieldValue !== 'string') return <React.Fragment />;\n\n const stringFieldValue = fieldValue as string;\n return (\n <div\n className={`${discoveryFieldStyle}`}\n key={`study-details-${fieldLabel}-${stringFieldValue}`}\n >\n {fieldLabel ? (\n <Text\n tt=\"uppercase\"\n fw=\"500\"\n className=\"p-0.75 mr-4 whitespace-pre-wrap break-words\"\n >\n {fieldLabel}\n </Text>\n ) : (\n <React.Fragment />\n )}\n\n <div>\n <Text className=\"pl-4 text-left p-0.75 whitespace-pre-wrap break-words\">\n {toString(fieldValue)}\n </Text>\n </div>\n </div>\n );\n};\n\nconst labeledMultipleTextField: FieldRendererFunction = (\n fieldsText: JSONValue,\n labelText?: string,\n): ReactElement => {\n return isArray(fieldsText) && fieldsText?.length ? (\n <div>\n {[\n // labeled first field\n <div className={discoveryFieldStyle} key={`study-details-${labelText}`}>\n {label(labelText ?? '')} {textField(fieldsText[0] as string)}\n </div>,\n // unlabeled subsequent fields\n ...fieldsText.slice(1).map((text, i) => (\n <div className={discoveryFieldStyle} key={`${text}-${i}`}>\n <div />\n {textField(text)}\n </div>\n )),\n ]}\n </div>\n ) : (\n <React.Fragment />\n );\n};\n\nconst accessDescriptor: FieldRendererFunction = (\n resource: JSONValue,\n _: string | undefined,\n) => {\n if (typeof resource !== 'object' || !(accessibleFieldName in resource)) {\n return <React.Fragment />;\n }\n\n if (resource[accessibleFieldName] === AccessLevel.ACCESSIBLE) {\n return <Alert color=\"green\">You have access to this study.</Alert>;\n }\n if (resource[accessibleFieldName] === AccessLevel.UNACCESSIBLE) {\n return <Alert color=\"red\">You do not have access to this study.</Alert>;\n }\n return (\n <Alert color=\"yellow\">\n This study does not include data access authorization details.\n </Alert>\n );\n};\n\nconst formatResourceValuesWhenNestedArray = (\n resourceFieldValue: string[],\n): string | string[] => {\n if (\n Array.isArray(resourceFieldValue) &&\n Array.isArray(resourceFieldValue[0])\n ) {\n return resourceFieldValue[0].join(', ');\n }\n return resourceFieldValue;\n};\n\nconst renderDetailTags: FieldRendererFunction = (\n fieldValue: JSONValue,\n _label: string | undefined,\n fieldConfig?: Record<string, any>,\n): ReactElement => {\n //TODO - fix this type\n const resource = fieldValue as DiscoveryResource;\n\n if (fieldConfig === undefined) {\n return <React.Fragment />;\n }\n if (fieldConfig?.categories === undefined) {\n return <React.Fragment />;\n }\n\n if (fieldConfig.contentType === 'tags') {\n const tags = fieldConfig.categories\n ? (resource.tags || []).filter((tag) =>\n fieldConfig.categories?.includes(tag.category),\n )\n : resource.tags;\n\n return (\n <div key={`detail-tag-${fieldConfig.field}`}>\n {RenderTagsCell({ value: tags })}\n </div>\n );\n }\n return <React.Fragment />;\n};\n\nexport const createFieldRendererElement = (\n field: StudyDetailsField | StudyTabTagField,\n resource: JSONValue,\n): ReactElement | null => {\n // determine the value of the field\n let resourceFieldValue =\n field.field && JSONPath({ json: resource, path: field.field });\n\n if (resourceFieldValue === undefined || resourceFieldValue === null) {\n if (field.includeIfNotAvailable === false) return null;\n if (field.valueIfNotAvailable)\n resourceFieldValue = field.valueIfNotAvailable as JSONValue;\n } else\n resourceFieldValue =\n resourceFieldValue.length > 0 ? resourceFieldValue[0] : '';\n\n const label =\n field.includeLabel === undefined || field?.includeLabel\n ? field.name\n : undefined;\n\n const studyFieldRenderer = DiscoveryDetailsRenderer(\n field.contentType,\n field?.renderer ?? 'default',\n );\n switch (field.contentType) {\n case 'accessDescriptor': {\n return studyFieldRenderer(resource, label, field.params);\n }\n case 'tags': {\n return studyFieldRenderer(resource, label, { ...field.params, ...field });\n }\n default:\n if (\n resourceFieldValue &&\n isArray(resourceFieldValue) &&\n resourceFieldValue.length > 0 &&\n resourceFieldValue[0].length !== 0 &&\n resourceFieldValue.every((val: unknown) => typeof val === 'string')\n ) {\n resourceFieldValue =\n formatResourceValuesWhenNestedArray(resourceFieldValue);\n return studyFieldRenderer(resourceFieldValue, label, field.params);\n } else if (\n resourceFieldValue !== undefined ||\n resourceFieldValue !== null\n )\n return studyFieldRenderer(resourceFieldValue, label, field.params);\n }\n\n return null;\n};\n\nconst DefaultGen3StudyDetailsFieldsRenderers: Record<\n string,\n FieldRendererFunctionMap\n> = {\n text: { default: labeledSingleTextField },\n string: {\n default: labeledSingleTextField,\n yearOfBirthRestricted: labeledYearOfBirthRestricted,\n },\n link: { default: labeledSingleLinkField },\n textList: { default: labeledMultipleTextField },\n linkList: {\n default: labeledMultipleLinkField,\n linkWithTitle: unlabeledMultipleLinkField,\n },\n block: { default: blockTextField },\n accessDescriptor: { default: accessDescriptor },\n tags: { default: renderDetailTags },\n number: { default: labeledNumberField },\n paragraphs: { default: labeledParagraph },\n};\n\nStudyFieldRendererFactory.registerFieldRendererCatalog(\n DefaultGen3StudyDetailsFieldsRenderers,\n);\n","import React, { useMemo } from 'react';\nimport { StudyTabGroup } from '../types';\nimport { Text } from '@mantine/core';\nimport { JSONObject } from '@gen3/core';\nimport { createFieldRendererElement } from './StudyItems';\nimport { JSONPath } from 'jsonpath-plus';\n\ninterface StudyTabGroupProps extends StudyTabGroup {\n readonly data: JSONObject;\n}\n\nconst StudyGroup = ({ data, header, fields }: StudyTabGroupProps) => {\n const groupHasContent = useMemo(\n () =>\n fields.some((field) => {\n // TDDO: handle ifFieldIsNotAvailable\n if (!field.field) {\n return false;\n }\n const resourceFieldValue = JSONPath({\n json: data,\n path: field.field,\n });\n return (\n resourceFieldValue &&\n resourceFieldValue.length > 0 &&\n resourceFieldValue[0].length !== 0\n );\n }),\n [fields, data],\n );\n\n if (!groupHasContent) {\n return null;\n }\n\n return (\n <div className=\" flex flex-col\">\n <div className=\"bg-accent-lightest w-full p-1 mb-4\">\n <Text color=\"primary\" fw={700} >{header}</Text>\n </div>\n <div\n className=\"p-4\">\n {fields.map((field) => {\n return createFieldRendererElement(field, data as any);\n })}\n </div>\n </div>\n );\n};\n\nexport default StudyGroup;\n","import React from 'react';\nimport { StudyTabGroup } from '../types';\nimport { JSONObject } from '@gen3/core';\nimport StudyGroup from './StudyGroup';\n\ninterface StudyGroupPanelProps {\n readonly groups: StudyTabGroup[];\n readonly data: JSONObject;\n}\n\nconst StudyGroupPanel = ({ data, groups }: StudyGroupPanelProps) => {\n return (\n <div className=\"flex flex-col my-2 w-full\">\n {groups.map(({ header, fields }) => {\n return (\n <StudyGroup\n data={data}\n header={header}\n fields={fields}\n key={`${header}-study-group`}\n />\n );\n })}\n </div>\n );\n};\n\nexport default StudyGroupPanel;\n","import React, { ReactElement } from 'react';\nimport { Text, Tabs } from '@mantine/core';\nimport { JSONObject } from '@gen3/core';\nimport { StudyDetailView } from '../types';\nimport StudyGroupPanel from './StudyGroupPanel';\nimport { JSONPath } from 'jsonpath-plus';\n\ninterface StudyDetailsPanelProps {\n readonly data: JSONObject;\n readonly studyConfig: StudyDetailView;\n}\n\nconst StudyDetailsPanel = ({\n data,\n studyConfig,\n}: StudyDetailsPanelProps): ReactElement => {\n\n const headerText = JSONPath({\n json: data,\n path: studyConfig?.header?.field ?? '',\n });\n return (\n <div>\n <Text size=\"lg\" w={700} className=\"mb-4\">\n {headerText}\n </Text>\n <Tabs defaultValue={studyConfig?.tabs?.[0]?.tabName}>\n <Tabs.List>\n {studyConfig?.tabs.map((tab) => {\n return (\n <Tabs.Tab value={tab.tabName} key={`${tab.tabName}-details-tab`}>\n {tab.tabName}\n </Tabs.Tab>\n );\n })}\n </Tabs.List>\n {studyConfig?.tabs.map((tab) => {\n return (\n <Tabs.Panel value={tab.tabName} key={`${tab.tabName}-details-tab-panel` }>\n <StudyGroupPanel data={data} groups={tab.groups} />\n </Tabs.Panel>\n );\n })}\n </Tabs>\n </div>\n );\n};\n\nexport default StudyDetailsPanel;\n","import { DataAuthorization, AccessLevel } from '../types';\nimport { JSONObject } from '@gen3/core';\nimport { accessibleFieldName } from '../types';\n\ninterface DetailsAccessProps {\n readonly studyData: JSONObject;\n dataAccess: DataAuthorization;\n}\n\nconst DetailsAuthorizationIcon = ({ studyData, dataAccess } : DetailsAccessProps) => {\n\n const accessStyle = 'flex w-full items-center rounded-sm border-2 py-3 px-1';\n return (\n <div className=\"flex mb-2\">\n {(dataAccess.enabled &&\n studyData[accessibleFieldName]\n && (studyData[accessibleFieldName] === AccessLevel.ACCESSIBLE) ? (\n <div className={`${accessStyle} bg-green-100 border-green-500 text-black pl-2`}>\n You have access to this data.\n </div>\n ) : (\n <div className={`${accessStyle} bg-yellow-100 border-yellow-500 text-black pl-2`}>\n You do not have access to this data.\n </div>\n ))}\n </div>\n );\n};\n\nexport default DetailsAuthorizationIcon;\n","import React, { useMemo } from 'react';\nimport { DataDownloadLinks, DownloadLinkFields } from '../types';\nimport { JSONObject } from '@gen3/core';\nimport { Accordion, Button, Group, Stack, Text } from '@mantine/core';\nimport { FiDownload as DownloadIcon } from 'react-icons/fi';\n\nconst extractFieldData = (\n data: JSONObject,\n fieldsMap: DownloadLinkFields,\n): Record<string, string | undefined> => {\n const result: Record<string, string | undefined> = {};\n Object.keys(fieldsMap).forEach((key) => {\n const value = fieldsMap[key as keyof DownloadLinkFields];\n if (value in data && typeof data[value] === 'string') {\n result[key] = data[value] as string;\n } else {\n result[key] = undefined;\n }\n });\n return result;\n};\n\ninterface DataDownloadLinksProps {\n readonly studyData: JSONObject;\n readonly downloadLinks?: DataDownloadLinks;\n readonly downloadLinkFields?: DownloadLinkFields;\n}\n\nconst DownloadLinksPanel = ({\n studyData,\n downloadLinks,\n downloadLinkFields = {\n titleField: 'title',\n descriptionField: 'description',\n idField: 'guid',\n },\n}: DataDownloadLinksProps) => {\n const downloadEntries = useMemo(() => {\n if (!downloadLinks || !studyData[downloadLinks.field]) return undefined;\n const studyDownloadLinks = studyData[downloadLinks.field] as JSONObject[];\n return studyDownloadLinks.map((data: JSONObject) =>\n extractFieldData(data, downloadLinkFields),\n );\n }, [studyData, downloadLinks, downloadLinkFields]);\n\n return (\n <Accordion>\n <Accordion.Item value=\"downloadLinks\">\n <Accordion.Control>\n <Text>{downloadLinks?.name || 'Data Download Links'}</Text>\n </Accordion.Control>\n <Accordion.Panel>\n <Stack>\n {downloadEntries &&\n downloadEntries.map(\n (entry: Record<string, string | undefined>) => {\n // minimum required fields are title and id\n if (\n entry['titleField'] === undefined ||\n entry['idField'] === undefined\n ) {\n return null;\n }\n const id = entry[downloadLinkFields.idField];\n return (\n <Group key={id} gap='md'>\n <Text>{entry['titleField'] || ''}</Text>\n <Button leftSection={<DownloadIcon />} disabled={!id}>Download File</Button>\n </Group>\n );\n },\n )}\n </Stack>\n </Accordion.Panel>\n </Accordion.Item>\n </Accordion>\n );\n};\n\nexport default DownloadLinksPanel;\n","/**\n * Non tabbed version of the StudyDetailsPanel\n */\nimport React, { ReactElement } from 'react';\nimport { useDeepCompareMemo } from 'use-deep-compare';\nimport { JSONObject, JSONValue } from '@gen3/core';\nimport { DataAuthorization, StudyPageConfig } from '../types';\nimport DetailsAuthorizationIcon from './DetailsAuthorizationIcon';\nimport { JSONPath } from 'jsonpath-plus';\nimport { toString } from 'lodash';\nimport { createFieldRendererElement } from './StudyItems';\nimport DownloadLinksPanel from '../StudyPage/DownloadLinksPanel';\n\nconst StudyTitle = ({\n title,\n className = 'font-header text-lg font-semibold',\n}: {\n title: string;\n className?: string;\n}): ReactElement => {\n return (\n <div>\n <h1 className={className}>{title}</h1>\n </div>\n );\n};\n\ninterface SinglePageStudyDetailsPanelProps {\n readonly data: JSONObject;\n readonly studyConfig?: StudyPageConfig;\n readonly authorization?: DataAuthorization;\n}\n\nconst SinglePageStudyDetailsPanel = ({\n data,\n studyConfig,\n authorization,\n}: SinglePageStudyDetailsPanelProps): ReactElement => {\n let headerText = '';\n if (studyConfig?.header?.field) {\n const res: JSONObject = JSONPath({\n path: studyConfig.header.field,\n json: data,\n });\n headerText = res.length ? toString(res[0]) : '';\n }\n\n const elements = useDeepCompareMemo(() => {\n if (studyConfig === undefined || studyConfig === null) {\n return <div>Study Details Panel not configured</div>;\n } else {\n return studyConfig?.fieldsToShow.map((field) => {\n return (\n <div\n key={`${field.fields.join('-')}-details`}\n className={`px-2 ${\n field.groupWidth == 'full' || field.groupWidth === undefined\n ? 'w-full'\n : 'w-1/2'\n }`}\n >\n <div className=\"flex flex-col\">\n {field?.groupName ? (\n <div className=\"text-lg font-bold\">{field.groupName}</div>\n ) : null}\n {field.fields.map((field) => {\n const element = createFieldRendererElement(\n field,\n data as JSONValue,\n );\n if (element !== null) {\n return (\n <div\n key={`item-${field.field}`}\n className={`flex w-full bg-base-lightest my-1 justify-between rounded-md py-1.5 px-1 text-sm ${\n field?.classNames?.['root'] ?? ''\n }`}\n >\n {element}\n </div>\n );\n }\n })}\n </div>\n </div>\n );\n });\n }\n }, [studyConfig, data]);\n\n return (\n <div className=\"flex flex-col\">\n <StudyTitle\n title={headerText}\n className={studyConfig?.header?.className}\n />\n {authorization !== undefined && authorization?.enabled ? (\n <DetailsAuthorizationIcon studyData={data} dataAccess={authorization} />\n ) : (\n false\n )}\n <div className=\"flex flex-wrap w-full\">{elements}</div>\n {studyConfig?.downloadLinks && (\n <DownloadLinksPanel\n studyData={data}\n downloadLinks={studyConfig?.downloadLinks}\n />\n )}\n </div>\n );\n};\n\nexport default SinglePageStudyDetailsPanel;\n","import { Button, CopyButton, Drawer } from '@mantine/core';\nimport StudyDetailsPanel from './StudyDetailsPanel';\nimport React, { useEffect } from 'react';\nimport { useDiscoveryContext } from '../DiscoveryProvider';\nimport { useDisclosure } from '@mantine/hooks';\nimport { MdKeyboardDoubleArrowLeft as BackIcon } from 'react-icons/md';\nimport SinglePageStudyDetailsPanel from './SinglePageStudyDetailsPanel';\n\nconst StudyDetails = () => {\n const { discoveryConfig: config, studyDetails } = useDiscoveryContext();\n const [opened, { open, close }] = useDisclosure(false);\n const index = config?.minimalFieldMapping?.uid ?? 'unknown';\n let permalink = 'Discovery/notfound';\n\n if (studyDetails) {\n const studyId = studyDetails[index];\n const pagePath = `/discovery/${encodeURIComponent(\n typeof studyId == 'string' ? 'string' : 'unknown',\n )}`;\n permalink = `/${pagePath}`;\n }\n\n useEffect(() => {\n if (Object.keys(studyDetails).length > 0) {\n open();\n }\n }, [studyDetails, open]);\n\n if (!studyDetails) {\n return null;\n }\n\n return (\n <Drawer.Root opened={opened} onClose={close} size=\"50%\" position=\"right\">\n <Drawer.Overlay opacity={0.5} blur={4} />\n <Drawer.Content>\n <Drawer.Header>\n <Button leftSection={<BackIcon />} onClick={close} variant=\"outline\">\n {' '}\n Back{' '}\n </Button>\n <CopyButton value={permalink}>\n {({ copied, copy }) => (\n <Button color={copied ? 'primary' : 'secondary'} onClick={copy}>\n {copied ? 'Copied Permalink' : 'Permalink'}\n </Button>\n )}\n </CopyButton>\n </Drawer.Header>\n <Drawer.Body>\n {config.detailView ?\n <StudyDetailsPanel\n data={studyDetails ?? {}}\n studyConfig={config.detailView}\n /> : config.simpleDetailsView ?\n <SinglePageStudyDetailsPanel data={studyDetails ?? {}} studyConfig={config.simpleDetailsView} authorization={config.features.authorization} /> :\n <div>Study Details Panel not configured</div>}\n </Drawer.Body>\n </Drawer.Content>\n </Drawer.Root>\n );\n};\n\nexport default StudyDetails;\n","import { MRT_Icons } from 'mantine-react-table';\nimport {\n TiArrowUnsorted as Unsorted,\n TiArrowSortedDown as SortDsc,\n TiArrowSortedUp as SortAsc,\n} from 'react-icons/ti';\n\nimport { FiMoreVertical as ColumnMenu } from 'react-icons/fi';\n\nexport const TableIcons: Partial<MRT_Icons> = {\n IconArrowsSort: (props: any) => (\n <Unsorted {...props} className=\"text-accent\" />\n ),\n IconSortAscending: (props: any) => (\n <SortAsc {...props} className=\"text-accent\" />\n ),\n IconSortDescending: (props: any) => (\n <SortDsc {...props} className=\"text-accent\" />\n ),\n IconDotsVertical: (props: any) => (\n <ColumnMenu {...props} className=\"text-accent\" />\n ),\n};\n","import React from 'react';\nimport {\n MantineReactTable,\n MRT_Cell,\n type MRT_PaginationState,\n type MRT_SortingState,\n useMantineReactTable,\n} from 'mantine-react-table';\n\nimport classes from './style/DiscoveryTable.module.css';\n\nimport { getManualSortingAndPagination, jsonPathAccessor } from './utils';\nimport { DiscoveryTableCellRenderer } from './TableRenderers/CellRendererFactory';\nimport { DiscoveryTableRowRenderer } from './TableRenderers/RowRendererFactory';\nimport { useDiscoveryContext } from './DiscoveryProvider';\nimport StudyDetails from './StudyDetails/StudyDetails';\nimport { CellRendererFunction } from './TableRenderers/types';\nimport { JSONObject } from '@gen3/core';\nimport { TableIcons } from '../../components/Tables/TableIcons';\nimport {\n OnChangeFn,\n PaginationState,\n SortingState,\n} from '@tanstack/table-core';\nimport { DataRequestStatus } from './types';\nimport { LoadingOverlay } from '@mantine/core';\nimport { useDeepCompareMemo } from 'use-deep-compare';\n\nconst extractCellValue =\n (func: CellRendererFunction) =>\n ({ cell }: { cell: MRT_Cell<JSONObject> }) =>\n func({ value: cell.getValue() as never, cell });\n\ninterface DiscoveryTableProps {\n data: JSONObject[];\n hits: number;\n dataRequestStatus: DataRequestStatus;\n pagination: MRT_PaginationState;\n sorting: MRT_SortingState;\n setPagination: OnChangeFn<PaginationState>;\n setSorting: OnChangeFn<SortingState>;\n}\n\nconst DiscoveryTable = ({\n data,\n hits,\n dataRequestStatus,\n setSorting,\n setPagination,\n pagination,\n sorting,\n}: DiscoveryTableProps) => {\n const { discoveryConfig: config, setStudyDetails } = useDiscoveryContext();\n const { isLoading, isError, isFetching } = dataRequestStatus;\n const manualSortingAndPagination = getManualSortingAndPagination(config);\n\n const cols = useDeepCompareMemo(() => {\n const studyColumns = config.studyColumns ?? [];\n return studyColumns.map((columnDef, idx) => {\n return {\n key: `${columnDef.field}-${idx}`,\n field: columnDef.field,\n accessorKey: columnDef.field,\n header: columnDef.name,\n accessorFn: jsonPathAccessor(columnDef.field),\n Cell: columnDef?.contentType\n ? extractCellValue(\n DiscoveryTableCellRenderer(\n columnDef?.contentType,\n columnDef?.cellRenderFunction ?? 'default',\n {\n ...(columnDef?.params ?? {}),\n valueIfNotAvailable: columnDef?.valueIfNotAvailable ?? '',\n },\n ),\n )\n : extractCellValue(\n DiscoveryTableCellRenderer(\n 'string',\n columnDef?.cellRenderFunction ?? 'default',\n {\n ...(columnDef?.params ?? {}),\n valueIfNotAvailable: columnDef?.valueIfNotAvailable ?? '',\n },\n ),\n ),\n };\n });\n }, [config.studyColumns]);\n\n const table = useMantineReactTable({\n columns: cols as any[],\n data: data ?? [],\n manualSorting: manualSortingAndPagination,\n manualPagination: manualSortingAndPagination,\n paginateExpandedRows: false,\n ...(manualSortingAndPagination\n ? {\n onPaginationChange: setPagination,\n onSortingChange: setSorting,\n }\n : {}),\n enableRowSelection: config.tableConfig?.selectableRows ?? false,\n rowCount: hits,\n icons: TableIcons,\n enableTopToolbar: false,\n enableColumnFilters: false,\n enableColumnActions: false,\n enableStickyHeader: true,\n enableStickyFooter: true,\n\n // TODO: keep this to explore later\n // mantineTableContainerProps: ({ table }) => {\n // return {\n // sx: {\n // maxHeight: 'calc(100vh - 560px) !important;',\n // },\n // };\n // },\n renderDetailPanel: config.studyPreviewField\n ? DiscoveryTableRowRenderer(config.studyPreviewField)\n : undefined,\n state: {\n isLoading,\n ...(manualSortingAndPagination\n ? {\n pagination,\n sorting,\n }\n : {}),\n showProgressBars: isFetching,\n showAlertBanner: isError,\n expanded: config.tableConfig?.expandableRows === true ? true : undefined,\n columnVisibility: {\n 'mrt-row-expand': false,\n },\n },\n layoutMode: 'semantic',\n mantineDetailPanelProps: {\n style: {\n boxShadow: '0 -2px 0px 0px var(--table-border-color) inset',\n },\n },\n mantineTableHeadCellProps: {\n style: {\n backgroundColor: 'var(--mantine-color-table-1)',\n color: 'var(--mantine-color-table-contrast-1)',\n textAlign: 'center',\n padding: 'var(--mantine-spacing-md)',\n fontWeight: 600,\n fontSize: 'var(--mantine-font-size-sm)',\n textTransform: 'uppercase',\n },\n },\n mantineTableBodyRowProps: ({ row }) => ({\n onClick: () => {\n setStudyDetails(() => {\n return { ...row.original };\n });\n },\n className: classes.tableRow,\n }),\n mantineTableProps: {\n style: {\n backgroundColor: 'var(--mantine-color-base-1)',\n '--mrt-striped-row-background-color': 'var(--mantine-color-base-3)',\n },\n },\n });\n\n return (\n <React.Fragment>\n <StudyDetails />\n <div className=\"grow w-auto inline-block overflow-x-scroll\">\n <LoadingOverlay visible={dataRequestStatus.isLoading} />\n <MantineReactTable table={table} />\n </div>\n </React.Fragment>\n );\n};\n\nexport default DiscoveryTable;\n","import { useRef, useState } from 'react';\nimport { flushSync } from 'react-dom';\nimport { mergeRefs, useDidUpdate } from '@mantine/hooks';\nimport { CSSProperties } from '@mantine/core';\n\nfunction getAutoWidthDuration(width: number | string) {\n if (!width || typeof width === 'string') {\n return 0;\n }\n const constant = width / 36;\n return Math.round((4 + 15 * constant ** 0.25 + constant / 5) * 10);\n}\n\nexport function getElementWidth(\n el: React.RefObject<HTMLElement> | { current?: { scrollWidth: number } },\n) {\n return el?.current ? el.current.scrollWidth : 'auto';\n}\n\nconst raf = typeof window !== 'undefined' && window.requestAnimationFrame;\n\ninterface UseCollapsableSidebar {\n opened: boolean;\n transitionDuration?: number;\n transitionTimingFunction?: string;\n onTransitionEnd?: () => void;\n}\n\ninterface GetCollapseProps {\n [key: string]: unknown;\n style?: CSSProperties;\n onTransitionEnd?: (e: TransitionEvent) => void;\n refKey?: string;\n ref?: React.ForwardedRef<HTMLDivElement>;\n}\n\nexport function useCollapsableSidebar({\n transitionDuration,\n transitionTimingFunction = 'ease',\n onTransitionEnd = () => null,\n opened,\n}: UseCollapsableSidebar): (props: GetCollapseProps) => Record<string, any> {\n const el = useRef<HTMLElement | null>(null);\n const collapsedWidth = 0;\n const collapsedStyles = {\n display: 'none',\n width: 0,\n overflow: 'hidden',\n };\n const [styles, setStylesRaw] = useState<CSSProperties>(\n opened ? {} : collapsedStyles,\n );\n const setStyles = (\n newStyles: object | ((oldStyles: object) => object),\n ): void => {\n flushSync(() => setStylesRaw(newStyles));\n };\n\n const mergeStyles = (newStyles: object): void => {\n setStyles((oldStyles) => ({ ...oldStyles, ...newStyles }));\n };\n\n function getTransitionStyles(width: number | string): {\n transition: string;\n } {\n const _duration = transitionDuration || getAutoWidthDuration(width);\n return {\n transition: `width ${_duration}ms ${transitionTimingFunction}, opacity ${_duration}ms ${transitionTimingFunction}`,\n };\n }\n\n useDidUpdate(() => {\n if (typeof raf === 'function') {\n if (opened) {\n raf(() => {\n mergeStyles({\n willChange: 'width',\n display: 'block',\n overflow: 'hidden',\n });\n raf(() => {\n const width = getElementWidth(el);\n mergeStyles({ ...getTransitionStyles(width), width });\n });\n });\n } else {\n raf(() => {\n const width = getElementWidth(el);\n mergeStyles({\n ...getTransitionStyles(width),\n willChange: 'width',\n width,\n });\n raf(() => mergeStyles({ width: collapsedWidth, overflow: 'hidden' }));\n });\n }\n }\n }, [opened]);\n\n const handleTransitionEnd = (e: React.TransitionEvent): void => {\n if (e.target !== el.current || e.propertyName !== 'width') {\n return;\n }\n\n if (opened) {\n const width = getElementWidth(el);\n\n if (width === styles.width) {\n setStyles({});\n } else {\n mergeStyles({ width });\n }\n\n onTransitionEnd();\n } else if (styles.width === collapsedWidth) {\n setStyles(collapsedStyles);\n onTransitionEnd();\n }\n };\n\n function getCollapseProps({\n style = {},\n refKey = 'ref',\n ...rest\n }: GetCollapseProps = {}) {\n const theirRef: any = rest[refKey];\n return {\n 'aria-hidden': !opened,\n ...rest,\n [refKey]: mergeRefs(el, theirRef),\n onTransitionEnd: handleTransitionEnd,\n style: { boxSizing: 'border-box', ...style, ...styles },\n };\n }\n\n return getCollapseProps;\n}\n","import { useReducedMotion } from '@mantine/hooks';\nimport {\n Box,\n BoxProps,\n Factory,\n factory,\n getStyleObject,\n useMantineTheme,\n useProps,\n} from '@mantine/core';\nimport { useCollapsableSidebar } from './use-collapsable-sidebar';\n\nexport interface CollapsableSidebarProps\n extends BoxProps,\n Omit<React.ComponentPropsWithoutRef<'div'>, keyof BoxProps> {\n /** Opened state */\n in: boolean;\n\n /** Called each time transition ends */\n onTransitionEnd?: () => void;\n\n /** Transition duration in ms, `200` by default */\n transitionDuration?: number;\n\n /** Transition timing function, default value is `ease` */\n transitionTimingFunction?: string;\n\n /** Determines whether opacity should be animated, `true` by default */\n animateOpacity?: boolean;\n}\n\nexport type CollapseSidebarFactory = Factory<{\n props: CollapsableSidebarProps;\n ref: HTMLDivElement;\n}>;\n\nconst defaultProps: Partial<CollapsableSidebarProps> = {\n transitionDuration: 200,\n transitionTimingFunction: 'ease',\n animateOpacity: true,\n};\n\nexport const CollapsableSidebar = factory<CollapseSidebarFactory>(\n (props, ref) => {\n const {\n children,\n in: opened,\n transitionDuration,\n transitionTimingFunction,\n style,\n onTransitionEnd,\n animateOpacity,\n ...others\n } = useProps('Collapse', defaultProps, props);\n\n const theme = useMantineTheme();\n const shouldReduceMotion = useReducedMotion();\n const reduceMotion = theme.respectReducedMotion\n ? shouldReduceMotion\n : false;\n const duration = reduceMotion ? 0 : transitionDuration;\n\n const getCollapseProps = useCollapsableSidebar({\n opened,\n transitionDuration: duration,\n transitionTimingFunction,\n onTransitionEnd,\n });\n\n if (duration === 0) {\n return opened ? <Box {...others}>{children}</Box> : null;\n }\n\n return (\n <Box\n {...getCollapseProps({\n style: {\n opacity: opened || !animateOpacity ? 1 : 0,\n transition: animateOpacity\n ? `opacity ${duration}ms ${transitionTimingFunction}`\n : 'none',\n ...getStyleObject(style, theme),\n },\n ref,\n ...others,\n })}\n >\n {children}\n </Box>\n );\n },\n);\n\nCollapsableSidebar.displayName = '@gen3/frontend/CollapsableSidebar';\n","import React from 'react';\nimport { Checkbox, Paper } from '@mantine/core';\nimport { KeyValueSearchFilter } from '../types';\nimport { SearchFilterState } from './types';\n\ninterface SearchFiltersProps {\n readonly values: string[];\n readonly filter: KeyValueSearchFilter;\n filterState: SearchFilterState;\n setFilterState: React.Dispatch<React.SetStateAction<SearchFilterState>>;\n}\n\nconst SearchFilters = ({\n values,\n filter,\n filterState,\n setFilterState,\n}: SearchFiltersProps) => {\n const { key } = filter;\n return (\n <div className=\"flex flex-col\">\n <Paper>\n {values.map((value) => {\n const valueDisplayName =\n filter.valueDisplayNames && filter.valueDisplayNames[value]\n ? filter.valueDisplayNames[value]\n : value;\n return (\n <Checkbox\n key={`${key}-${value}`}\n checked={filterState[key] && filterState[key][value]}\n label={valueDisplayName}\n onChange={(ev) => {\n const newFilterState = { ...filterState };\n if (!newFilterState[key]) {\n newFilterState[key] = {};\n }\n if (ev.target.checked) {\n newFilterState[key][value] = true;\n } else {\n delete newFilterState[key][value];\n if (Object.keys(newFilterState[key]).length === 0) {\n delete newFilterState[key];\n }\n }\n setFilterState(newFilterState);\n }}\n ></Checkbox>\n );\n })}\n </Paper>\n </div>\n );\n};\n\nexport default SearchFilters;\n","export type SearchFilterState = Record<string, Record<string, boolean>>;\nexport enum SearchCombination {\n and = 'AND',\n or = 'OR',\n}\n\nexport interface AdvancedSearchTerms {\n operation: SearchCombination;\n filters: SearchFilterState;\n}\n\nexport enum AccessSortDirection {\n ASCENDING = 'sort ascending',\n DESCENDING = 'sort descending',\n NONE = 'cancel sorting',\n}\n\nexport type SetAdvancedSearchFiltersFn = (params: AdvancedSearchTerms) => void;\n\nexport interface SearchInputProps {\n searchChanged: (searchTerm: string) => void;\n clearSearch?: () => void;\n placeholder?: string;\n label?: string;\n}\n","import React, { useEffect, useState } from 'react';\nimport { KeyValueSearchFilter } from '../types';\nimport { Accordion, Button, SegmentedControl } from '@mantine/core';\nimport { MdUndo as UndoIcon } from 'react-icons/md';\nimport SearchFilters from './SearchFilters';\nimport {\n SearchCombination,\n SearchFilterState,\n SetAdvancedSearchFiltersFn,\n} from './types';\n\nexport interface AdvancedSearchProps {\n advSearchFilters: ReadonlyArray<KeyValueSearchFilter>;\n setAdvancedSearchFilters: SetAdvancedSearchFiltersFn;\n opened: boolean;\n}\n\nconst AdvancedSearch = ({\n advSearchFilters,\n setAdvancedSearchFilters,\n}: AdvancedSearchProps) => {\n const [searchCombination, setSearchCombination] = useState<SearchCombination>(\n SearchCombination.and,\n );\n const [filterState, setFilterState] = useState<SearchFilterState>({});\n\n useEffect(() => {\n setAdvancedSearchFilters({\n operation: searchCombination,\n filters: filterState,\n });\n }, [searchCombination, filterState, setAdvancedSearchFilters]);\n\n return (\n <React.Fragment>\n <div className=\"flex flex-col\">\n <div className=\"flex flex-row justify-between items-center\">\n <SegmentedControl\n data={[\n { label: 'AND', value: SearchCombination.and },\n { label: 'OR', value: SearchCombination.or },\n ]}\n value={searchCombination}\n size=\"sm\"\n color=\"accent\"\n onChange={(value: string) =>\n setSearchCombination(value as SearchCombination)\n }\n />\n <Button\n size=\"sm\"\n disabled={Object.keys(filterState).length === 0}\n onClick={() => {\n setFilterState({});\n setSearchCombination(SearchCombination.and);\n }}\n leftSection={<UndoIcon />}\n className=\"ml-2\"\n >\n Reset Filters\n </Button>\n </div>\n\n <Accordion className=\"mt-2\" radius=\"sm\" multiple>\n {advSearchFilters.map((filter) => {\n const { key, keyDisplayName, valueDisplayNames } = filter;\n const values = valueDisplayNames\n ? Object.values(valueDisplayNames)\n : [];\n return (\n <Accordion.Item\n value={key}\n key={`discovery-advancedSearch-accordion-${key}`}\n >\n <Accordion.Control key={key}>\n {' '}\n {keyDisplayName || key}\n </Accordion.Control>\n <Accordion.Panel>\n <SearchFilters\n values={values}\n filter={filter}\n filterState={filterState}\n setFilterState={setFilterState}\n />\n </Accordion.Panel>\n </Accordion.Item>\n );\n })}\n </Accordion>\n </div>\n </React.Fragment>\n );\n};\n\nexport default AdvancedSearch;\n","import React from 'react';\nimport { CollapsableSidebar } from '../../../components/CollapsableSidebar';\nimport AdvancedSearch, { AdvancedSearchProps } from './AdvancedSearch';\n\nconst AdvancedSearchPanel = (props: AdvancedSearchProps) => {\n const { opened } = props;\n return (\n <React.Fragment>\n <CollapsableSidebar in={opened}>\n <AdvancedSearch {...props} />\n </CollapsableSidebar>\n </React.Fragment>\n );\n};\n\nexport default AdvancedSearchPanel;\n","import React, { ReactNode, forwardRef } from 'react';\nimport { Button, ButtonProps, Tooltip, Loader } from '@mantine/core';\nimport { FiDownload as DownloadIcon } from 'react-icons/fi';\nimport { useIsUserLoggedIn } from '@gen3/core';\n\nexport interface ExportActionButtonProps {\n label?: string;\n icon?: ReactNode;\n disabled?: boolean;\n toolTip?: string;\n active?: boolean;\n showIcon?: boolean;\n loginRequired?: boolean;\n onClick?: (items: Record<string, any> | Array<any>) => void;\n}\n\nconst DataLibraryActionButton = forwardRef<\n HTMLButtonElement,\n ExportActionButtonProps & ButtonProps\n>(\n (\n {\n label = undefined,\n icon = undefined,\n disabled = false,\n toolTip = undefined,\n onClick = () => null,\n active = false,\n showIcon = true,\n loginRequired = false,\n ...buttonProps\n }: ExportActionButtonProps & ButtonProps,\n ref,\n ) => {\n // TODO Test what idp was used to login and restrict actions to that idp or all or none\n const requiresLogin = !useIsUserLoggedIn() && loginRequired;\n\n const buttonUcon = active ? (\n <Loader size=\"sm\" className=\"p-1\" />\n ) : (\n <DownloadIcon title=\"download\" size={16} />\n );\n\n return (\n <Tooltip disabled={!toolTip} label={toolTip}>\n <Button\n ref={ref}\n onClick={onClick}\n disabled={disabled || requiresLogin}\n leftSection={showIcon ? buttonUcon : undefined}\n {...buttonProps}\n >\n {label}\n </Button>\n </Tooltip>\n );\n },\n);\n\nDataLibraryActionButton.displayName = 'DataLibraryActionButton';\n\nexport default DataLibraryActionButton;\n","import React from 'react';\nimport { ExportToDataLibrary } from '../types';\nimport { FiDownload as DownloadIcon } from 'react-icons/fi';\nimport DataLibraryActionButton from './DataLibraryActionButton';\n\ninterface ActionBarProps {\n config: ExportToDataLibrary;\n}\n\nconst ActionBar = ({ config }: ActionBarProps) => {\n const { buttons } = config;\n\n return (\n <div className=\"flex items-center justify-end py-1 px-2 mb-1 w-full gap-x-1.5 \">\n {buttons?.map((button, index) => {\n return (\n <DataLibraryActionButton\n label={button.label}\n icon={<DownloadIcon />}\n toolTip={button.tooltip}\n loginRequired={config?.loginRequireForAllButtons ?? true}\n onClick={() => {\n console.log('Download $[button.label]');\n }}\n key={`action-button-${index}`}\n />\n );\n // }\n })}\n </div>\n );\n};\n\nexport default ActionBar;\n","import { ReactNode, RefObject } from 'react';\nimport {\n MRT_Cell,\n MRT_Column,\n MRT_Row,\n MRT_TableInstance\n} from 'mantine-react-table';\nimport { JSONObject } from '@gen3/core';\n\nexport type RendererFunction<T> = (props: T, ...params: any[]) => ReactNode;\n\nexport type RenderFunction2 = (props: {\n cell: MRT_Cell<JSONObject>;\n renderedCellValue: ReactNode;\n column: MRT_Column<JSONObject>;\n row: MRT_Row<JSONObject>;\n rowRef?: RefObject<HTMLTableRowElement> | undefined;\n table: MRT_TableInstance<JSONObject>;\n}) => ReactNode;\n\nexport interface RendererFunctionCatalogEntry<T> {\n [key: string]: RendererFunction<T>;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function DefaultItemRenderer<T>(_props: T): ReactNode {\n return <span>DefaultRenderer</span>;\n}\n\ninterface RendererFactoryInterface<T> {\n getRenderer(type: string, functionName: string): RendererFunction<T>;\n registerRenderer(\n type: string,\n functionName: string,\n func: RendererFunction<T>,\n ): void;\n registerRendererCatalog(\n catalog: Record<string, RendererFunctionCatalogEntry<T>>,\n ): void;\n}\n\nexport class RenderFactoryTypedInstance<T>\n implements RendererFactoryInterface<T>\n{\n private catalog: Record<string, RendererFunctionCatalogEntry<T>>;\n private defaultRenderer: RendererFunction<T>;\n\n constructor() {\n this.catalog = {};\n this.defaultRenderer = DefaultItemRenderer;\n }\n\n /**\n * Sets the default renderer function for the specified type.\n *\n * @param {RendererFunction<T>} func - The renderer function to set as the default.\n * @return {void}\n */\n setDefaultRenderer(func: RendererFunction<T>): void {\n this.defaultRenderer = func;\n }\n\n getRenderer(type: string, functionName: string): RendererFunction<T> {\n if (!this.rendererExists(type, functionName)) {\n return DefaultItemRenderer;\n }\n\n return this.catalog[type][functionName];\n }\n\n /**\n * Check if a renderer exists for a given type and function name\n * @param type\n * @param functionName\n * @returns boolean indicating if the renderer exists\n */\n rendererExists(type: string, functionName: string): boolean {\n return type in this.catalog && functionName in this.catalog[type];\n }\n\n /**\n * Registers a renderer function for a given type and function name.\n *\n * @param {string} type - The type of the renderer function.\n * @param {string} functionName - The name of the renderer function.\n * @param {RendererFunction<T>} func - The renderer function to register.\n * @returns {boolean} - True if the registration is successful, false otherwise.\n * @throws {Error} - If any of the input parameters are missing or if the renderer function already exists.\n */\n registerRenderer(\n type: string,\n functionName: string,\n func: RendererFunction<T>,\n ): boolean {\n if (type && functionName && func) {\n try {\n if (!this.catalog[type]) {\n this.catalog[type] = {};\n }\n if (!this.catalog[type][functionName]) {\n this.catalog[type][functionName] = func;\n } else {\n throw new Error(\n `Renderer function ${functionName} already exists for type ${type}`,\n );\n }\n return true;\n } catch (error) {\n console.error(\n `Error registering renderer ${functionName} for type ${type}: ${error}`,\n );\n return false;\n }\n } else {\n throw new Error('Invalid input parameters');\n }\n }\n\n /**\n * Registers a renderer catalog.\n *\n * @param {Record<string, RendererFunctionCatalogEntry<T>>} catalog - The catalog object containing the renderers.\n * @returns {boolean} - True if the catalog was registered successfully, otherwise false.\n */\n registerRendererCatalog(\n catalog: Record<string, RendererFunctionCatalogEntry<T>>,\n ): boolean {\n if (catalog) {\n Object.keys(catalog).forEach((type) => {\n if (catalog[type]) {\n Object.entries(catalog[type]).forEach(([name, func]) => {\n if (typeof func === 'function') {\n try {\n this.registerRenderer(type, name, func);\n } catch (error) {\n new Error(\n `Error registering renderer ${name} for type ${type}: ${error}`,\n );\n return false;\n }\n }\n });\n }\n });\n return true;\n }\n return false;\n }\n}\n\n/**\n * Represents the props required for a cell renderer function.\n */\nexport interface CellRendererFunctionProps<\n T extends Record<string, any> = JSONObject,\n> {\n cell: MRT_Cell<T>;\n renderedCellValue: ReactNode;\n column: MRT_Column<T>;\n row: MRT_Row<T>;\n rowRef?: RefObject<HTMLTableRowElement> | undefined;\n table: MRT_TableInstance<T>;\n}\n","import { RenderFactoryTypedInstance } from '../../../utils/RendererFactory';\nimport { Stack, StackProps, Text } from '@mantine/core';\n\ninterface StatisticRendererProps extends StackProps {\n value: any;\n label: string;\n}\n\nconst defaultStatisticRenderer = ({\n value,\n label,\n ...props\n}: StatisticRendererProps) => {\n return (\n <Stack {...props} align=\"center\">\n <Text size=\"2rem\" color=\"accent\">\n {value}\n </Text>\n <Text size=\"sm\" color=\"primary\" className=\"uppercase\">\n {label}\n </Text>\n </Stack>\n );\n};\n\nconst DefaultRendererCatalog = {\n string: {\n default: defaultStatisticRenderer,\n },\n};\n\nlet instance: RenderFactoryTypedInstance<StatisticRendererProps>;\n\nconst StatisticRendererFactory =\n (): RenderFactoryTypedInstance<StatisticRendererProps> => {\n if (!instance) {\n instance = new RenderFactoryTypedInstance<StatisticRendererProps>();\n instance.registerRendererCatalog(DefaultRendererCatalog);\n }\n return instance;\n };\n\nexport default StatisticRendererFactory;\n","import React from 'react';\nimport { SummaryStatistics } from './types';\nimport StatisticRendererFactory from './StatisticsRendererFactory';\n\nconst BuildSummaryStatisticPanel = (summaries: SummaryStatistics = []) => {\n return summaries.map((summary) => {\n const { name, field, type } = summary;\n if (name && field && type) {\n // TODO replace 'default' with a real value\n const element = StatisticRendererFactory().getRenderer(\n 'string',\n 'default',\n );\n\n return ( element({\n value: summary.value ?? 'N/A',\n label: name,\n key: `stats-item-${name}-${field}-${type}`,\n }));\n }\n });\n};\n\ninterface SummaryStatisticPanelProps {\n summaries: SummaryStatistics;\n}\n\nconst columns = [\n 'grid-cols-0',\n 'grid-cols-1',\n 'grid-cols-2',\n 'grid-cols-3',\n 'grid-cols-4',\n 'grid-cols-5',\n 'grid-cols-6',\n 'grid-cols-7',\n 'grid-cols-8',\n 'grid-cols-9',\n 'grid-cols-10',\n];\n\nconst SummaryStatisticPanel = ({ summaries }: SummaryStatisticPanelProps) => {\n return (\n <div className={`grid ${columns[summaries.length]} grow shrink-0 divide-x-2 divide-accent`} >\n {BuildSummaryStatisticPanel(summaries)}\n </div>\n );\n};\n\nexport default SummaryStatisticPanel;\n","import { JSONObject } from '@gen3/core';\nimport { AdvancedSearchTerms } from '../../Search/types';\nimport { DiscoveryIndexConfig, isSearchKVArray } from '../../types';\n\n/**\n *\n * @param studies\n * @param advancedSearchTerms\n * @param config\n */\nconst filterByAdvSearch = (\n studies: JSONObject[],\n advancedSearchTerms: AdvancedSearchTerms,\n config: DiscoveryIndexConfig,\n): JSONObject[] => {\n // leave if advanced search filters are not enabled\n\n if (\n config.features?.advSearchFilters === undefined ||\n !config.features.advSearchFilters.enabled\n ) {\n return studies;\n }\n\n // if no filters active, show all studies\n const noFiltersActive = Object.values(advancedSearchTerms.filters).every(\n (selectedValues) => {\n if (Object.values(selectedValues).length === 0) {\n return true;\n }\n return Object.values(selectedValues).every((selected) => !selected);\n },\n );\n\n if (noFiltersActive) {\n return studies;\n }\n\n // Combine within filters as AND\n if (advancedSearchTerms.operation === 'AND') {\n return studies.filter((study) =>\n Object.keys(advancedSearchTerms.filters).every((filterName) => {\n const filterValues = Object.keys(\n advancedSearchTerms.filters[filterName],\n );\n // Handle the edge case where no values in this filter are selected\n if (filterValues.length === 0) {\n return true;\n }\n\n if (config.features?.advSearchFilters?.field === undefined) {\n return false;\n }\n\n const studyFilters = study[config.features.advSearchFilters.field];\n if (!isSearchKVArray(studyFilters)) {\n return false;\n }\n\n if (!studyFilters || !studyFilters.length) {\n return false;\n }\n\n const studyFilterValues = studyFilters\n .filter(({ key }) => key === filterName)\n .map(({ value }) => value);\n return filterValues.every((value) => studyFilterValues.includes(value));\n }),\n );\n }\n\n // Combine within filters as OR\n return studies.filter((study) =>\n Object.keys(advancedSearchTerms.filters).some((filterName) => {\n const filterValues = Object.keys(advancedSearchTerms.filters[filterName]);\n // Handle the edge case where no values in this filter are selected\n if (filterValues.length === 0) {\n return true;\n }\n\n if (config.features?.advSearchFilters?.field === undefined) {\n return false;\n }\n\n const studyFilters = study[config.features.advSearchFilters?.field];\n\n if (!isSearchKVArray(studyFilters)) {\n return false;\n }\n\n if (!studyFilters || !studyFilters.length) {\n return false;\n }\n\n return studyFilters.some(\n ({ key, value }) => key === filterName && filterValues.includes(value),\n );\n }),\n );\n};\n\nexport default filterByAdvSearch;\n","import { JSONObject, JSONValue } from '@gen3/core';\nimport { SearchKV, SearchTerms } from '../types';\n\nexport const getFilterValuesByKey = (\n key: string,\n studies: JSONObject[],\n filtersField?: string,\n uidField?: string,\n) => {\n const invalidResults = [] as string[];\n if (!studies) {\n return invalidResults;\n }\n\n if (!filtersField) {\n throw new Error(\n 'Misconfiguration error: missing required configuration property `discoveryConfig.features.advSearchFilters.field`',\n );\n }\n\n if (!uidField) {\n throw new Error(\n 'Misconfiguration error: missing required configuration property `discoveryConfig.features.advSearchFilters.field`',\n );\n }\n\n const filterValuesMap: Record<string, JSONValue> = {};\n studies.forEach((study) => {\n const studyFilters: SearchKV[] =\n (study[filtersField] as unknown as SearchKV[]) ?? [];\n\n if (!studyFilters) {\n // eslint-disable-next-line no-console\n console.warn(\n `Warning: expected to find property '${filtersField}' in study metadata for study ${\n study[uidField] ?? 'unknown'\n }, but could not find it! This study will not be filterable by the advanced search filters.`,\n );\n return invalidResults;\n }\n try {\n studyFilters.forEach((filterValue: SearchKV) => {\n if (filterValue.key === key) {\n filterValuesMap[filterValue.value] = true;\n }\n });\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error(err);\n // eslint-disable-next-line no-console\n console.error(\n `The above error appeared in study ${study[uidField] ?? 'unknown'}`,\n );\n }\n });\n return Object.keys(filterValuesMap);\n};\n// function to check if search terms are empty\nexport const hasSearchTerms = (searchTerms: SearchTerms): boolean => {\n return (\n (searchTerms &&\n searchTerms.keyword.keywords &&\n searchTerms.keyword.keywords.length > 0) &&\n searchTerms.keyword.keywords[0] != '' ||\n (searchTerms.advancedSearchTerms &&\n searchTerms.advancedSearchTerms.filters &&\n Object.values(searchTerms.advancedSearchTerms.filters).some(\n (selectedValues) => {\n return (\n selectedValues &&\n Object.values(selectedValues).some((selected) => selected)\n );\n },\n ))\n );\n};\n","\nimport { type AuthzMapping } from '@gen3/core';\n\nexport const userHasMethodForServiceOnResource = (method: string, service : string, resourcePath: string, userAuthMapping : AuthzMapping = {}) => {\n const actions = userAuthMapping[resourcePath];\n // accommodate for '*' logic\n // if we need to check for a specific service/method pair for a resource,\n // e.g.: {service: sheepdog, method: update}\n // then this function should return true if the user has either of\n // the following pair for this policy\n // 1. {service: sheepdog, method: update}\n // 2. {service: sheepdog, method: *}\n // 3. {service: *, method: update}\n // 4. {service: *, method: *}\n return actions !== undefined && actions.some((x) => ((x.service === service || x.service === '*') && (x.method === method || x.method === '*')));\n};\n","import uniq from 'lodash/uniq';\nimport sum from 'lodash/sum';\nimport { JSONPath } from 'jsonpath-plus';\nimport { type AuthzMapping, JSONObject } from '@gen3/core';\nimport { SummaryStatisticsConfig } from '../Statistics';\nimport { SummaryStatistics } from '../Statistics/types';\nimport { DiscoveryIndexConfig, AccessLevel } from '../types';\nimport { userHasMethodForServiceOnResource } from '../../authorization/utils';\n\n/**\n * Check for non-numeric items in an array and convert them to numbers.\n * Handles strings, numbers, and nested arrays.\n * It will silently convert any non-numeric items to 0 so as not to break the sum.\n * @param fields - array of fields to check\n */\nconst checkForNonNumericItems = (fields: (number | string | any)[]): number[] =>\n fields.map((item) => {\n if (typeof item === 'number') {\n return item;\n }\n // parse any string representation of an integer\n if (typeof item === 'string') {\n return parseInt(item, 10) || 0;\n }\n // if it's an array, recurse and sum the result\n if (Array.isArray(item)) {\n return sum(checkForNonNumericItems(item));\n }\n // if it's not a number, return 0 so as not to break the sum\n return 0;\n });\n\n/**\n * Process a summary statistic using the provided data and summary config\n * @param {JSONObject }data\n * @param {SummaryStatisticsConfig} summary config from Discovery Config\n */\nexport const processSummary = (\n data: JSONObject[],\n summary: SummaryStatisticsConfig,\n): string => {\n const { field, type } = summary;\n let fields = JSONPath({ path: `$..${field}`, json: data });\n // Replace any undefined fields with value 0\n fields = fields.map((item: string | number) =>\n typeof item === 'undefined' ? 0 : item,\n );\n switch (type) {\n case 'sum': {\n // parse any string representation of an integer\n fields = checkForNonNumericItems(fields);\n return sum(fields).toLocaleString();\n }\n case 'count':\n return uniq(fields).length.toLocaleString();\n default:\n throw new Error(\n `Misconfiguration error: Unrecognized aggregation type ${type}. Check the 'aggregations' block of the Discovery page config.`,\n );\n }\n};\n\nexport const processAllSummaries = (\n data: JSONObject[],\n summaries: SummaryStatisticsConfig[],\n) => {\n if (!Array.isArray(data)) {\n throw new Error('Invalid input: data must be an array.');\n }\n if (!Array.isArray(summaries)) {\n throw new Error('Invalid input: summaries must be an array.');\n }\n\n return summaries.reduce((acc, summary) => {\n return [\n ...acc,\n {\n ...summary,\n value: processSummary(data, summary),\n },\n ];\n }, [] as SummaryStatistics);\n};\n\nexport const processAuthorizations = (\n data: Array<JSONObject>,\n config: DiscoveryIndexConfig,\n authMapping: AuthzMapping,\n): Array<JSONObject> => {\n const { authzField, dataAvailabilityField } = config.minimalFieldMapping;\n const { supportedValues } = config.features.authorization;\n\n return data.map((study) => {\n if (typeof study[authzField] !== 'string') return study;\n const studyAuthz = study[authzField] as string;\n let accessible: AccessLevel;\n if (\n supportedValues?.pending?.enabled &&\n dataAvailabilityField &&\n study[dataAvailabilityField] === 'pending'\n ) {\n accessible = AccessLevel.PENDING;\n } else if (supportedValues?.notAvailable?.enabled && !study[authzField]) {\n accessible = AccessLevel.NOT_AVAILABLE;\n } else {\n const isAuthorized =\n userHasMethodForServiceOnResource(\n 'read',\n '*',\n studyAuthz,\n authMapping,\n ) ||\n userHasMethodForServiceOnResource(\n 'read',\n 'peregrine',\n studyAuthz,\n authMapping,\n ) ||\n userHasMethodForServiceOnResource(\n 'read',\n 'guppy',\n studyAuthz,\n authMapping,\n ) ||\n userHasMethodForServiceOnResource(\n 'read-storage',\n 'fence',\n studyAuthz,\n authMapping,\n );\n if (supportedValues?.accessible?.enabled && isAuthorized) {\n accessible = AccessLevel.ACCESSIBLE;\n } else if (supportedValues?.unaccessible?.enabled && !isAuthorized) {\n accessible = AccessLevel.UNACCESSIBLE;\n } else {\n accessible = AccessLevel.OTHER;\n }\n }\n return {\n ...study,\n __accessible: accessible,\n };\n });\n};\n","import { useCallback, useEffect, useState } from 'react';\nimport { JSONPath } from 'jsonpath-plus';\nimport {\n JSONObject,\n MetadataPaginationParams,\n selectAuthzMappingData,\n useCoreSelector,\n useGetAggMDSQuery,\n useGetMDSQuery,\n} from '@gen3/core';\nimport { useMiniSearch } from 'react-minisearch';\nimport MiniSearch, { Suggestion } from 'minisearch';\nimport {\n AdvancedSearchFilters,\n DiscoverDataHookResponse,\n DiscoveryDataLoaderProps,\n KeyValueSearchFilter,\n SearchTerms,\n} from '../../types';\nimport filterByAdvSearch from './filterByAdvSearch';\nimport { getFilterValuesByKey, hasSearchTerms } from '../../Search/utils';\nimport { processAllSummaries, processAuthorizations } from '../utils';\nimport { SummaryStatisticsConfig } from '../../Statistics';\nimport { SummaryStatistics } from '../../Statistics/types';\nimport { useDeepCompareEffect } from 'use-deep-compare';\nimport { GetDataProps, GetDataResponse, MetadataDataHook } from '../types';\nimport { getManualSortingAndPagination } from '../../utils';\nimport { CoreState } from '@gen3/core';\n\n// TODO remove after debugging\n// import { reactWhatChanged as RWC } from 'react-what-changed';\n\nconst buildMiniSearchKeywordQuery = (terms: SearchTerms) => {\n const keywords = terms.keyword.keywords?.filter((x) => x.length > 0) ?? [];\n // TODO See if minisearch can handle this\n // const res = keywords.join(\" \");\n // const res = {\n // combineWith: 'AND',\n // queries: keywords ?? [],\n // };\n\n return keywords[0];\n\n // TODO: see if minisearch can handle this\n // const a = {\n // combineWith: 'AND',\n // queries: Object.keys(terms.advancedSearchTerms.filters).map((field) => {\n // const filter = terms.advancedSearchTerms.filters[field];\n // return {\n // combineWith: 'AND',\n // queries: Object.entries(filter).reduce((acc, [term, selected]) => {\n // if (selected) acc.push({ term, fields: [`advancedSearch.${field}`], combineWith: 'AND' });\n // return acc;\n // }, [] as QueryType[]),\n // };\n // }),\n // };\n};\n\nconst extractValue = (document: JSONObject, field: string) => {\n // TODO See if miniSearch can handle the for advanced search\n // if (field.startsWith('advancedSearch.')) {\n // if (isSearchKVArray(document['advancedSearch'])) {\n // const key = field.split('.')[-1];\n // const result = document['advancedSearch'].filter(x => x.key === key);\n // return result.reduce((acc, cur) => {\n // acc.push(cur.value);\n // return acc;\n // }, [] as string[]).join(\" \");\n //\n // }\n\n const result = JSONPath({ path: field, json: document });\n return result?.length ? result[0] : undefined;\n};\n\nconst suffixes = (term: string, minLength: number): string[] => {\n if (term == null) {\n return [];\n }\n\n const tokens: string[] = [];\n\n for (let i = 0; i <= term.length - minLength; i++) {\n tokens.push(term.slice(i));\n }\n\n return tokens;\n};\n\nconst processAdvancedSearchTerms = (\n advSearchFilters: AdvancedSearchFilters,\n data: JSONObject[],\n uidField: string,\n): ReadonlyArray<KeyValueSearchFilter> => {\n return advSearchFilters.filters.map((filter) => {\n const { key, keyDisplayName } = filter;\n const values = getFilterValuesByKey(\n key,\n data,\n advSearchFilters.field,\n uidField,\n );\n return {\n key,\n keyDisplayName,\n valueDisplayNames: values.reduce((acc, cur) => {\n acc[cur] = cur;\n return acc;\n }, {} as Record<string, string>),\n };\n });\n};\n\nconst useGetMDSData = ({\n guidType = 'unregistered_discovery_metadata',\n maxStudies = 10000,\n studyField = 'gen3_discovery',\n discoveryConfig,\n}: Partial<GetDataProps>): GetDataResponse => {\n const [mdsData, setMDSData] = useState<Array<JSONObject>>([]);\n const [isError, setIsError] = useState(false);\n\n const {\n data,\n isUninitialized,\n isFetching,\n isLoading,\n isSuccess,\n isError: queryIsError,\n } = useGetMDSQuery({\n guidType: guidType,\n studyField: studyField,\n offset: 0,\n pageSize: maxStudies,\n });\n\n const authMapping = useCoreSelector((state: CoreState) =>\n selectAuthzMappingData(state),\n );\n\n useEffect(() => {\n if (data && isSuccess) {\n const studyData = Object.values(data.data).reduce(\n (acc: JSONObject[], cur: JSONObject) => {\n return cur[studyField]\n ? [...acc, cur[studyField] as JSONObject]\n : acc;\n },\n [],\n );\n\n if (discoveryConfig?.features?.authorization.enabled) {\n setMDSData(\n processAuthorizations(studyData, discoveryConfig, authMapping),\n );\n } else setMDSData(studyData);\n }\n }, [authMapping, data, discoveryConfig, isSuccess, studyField]);\n\n useEffect(() => {\n if (queryIsError) {\n setIsError(true);\n }\n }, [queryIsError]);\n\n return {\n mdsData,\n isUninitialized,\n isFetching,\n isLoading,\n isSuccess,\n isError,\n };\n};\n\nconst useGetAggMDSData = ({\n guidType = 'unregistered_discovery_metadata',\n maxStudies = 10000,\n studyField = 'gen3_discovery',\n discoveryConfig,\n}: Partial<GetDataProps>): GetDataResponse => {\n const [mdsData, setMDSData] = useState<Array<JSONObject>>([]);\n const [isError, setIsError] = useState(false);\n\n const {\n data,\n isUninitialized,\n isFetching,\n isLoading,\n isSuccess,\n isError: queryIsError,\n } = useGetAggMDSQuery({\n guidType: guidType,\n studyField: studyField,\n offset: 0,\n pageSize: maxStudies,\n });\n\n const authMapping = useCoreSelector((state: CoreState) =>\n selectAuthzMappingData(state),\n );\n useEffect(() => {\n if (data && isSuccess) {\n if (discoveryConfig?.features?.authorization.enabled) {\n setMDSData(\n processAuthorizations(data.data, discoveryConfig, authMapping),\n );\n } else setMDSData(data.data);\n }\n }, [data, isSuccess, studyField]);\n\n useEffect(() => {\n if (queryIsError) {\n setIsError(true);\n }\n }, [queryIsError]);\n\n return {\n mdsData,\n isUninitialized,\n isFetching,\n isLoading,\n isSuccess,\n isError,\n };\n};\n\ninterface SearchMetadataProps {\n discoveryConfig: any;\n searchTerms: SearchTerms;\n mdsData: JSONObject[];\n isSuccess: boolean;\n}\n\nconst useSearchMetadata = ({\n discoveryConfig,\n searchTerms,\n mdsData,\n isSuccess,\n}: SearchMetadataProps) => {\n const searchOverFields =\n discoveryConfig?.features?.search?.searchBar?.searchableTextFields || [];\n const uidField = discoveryConfig?.minimalFieldMapping?.uid || 'guid';\n\n const [searchedData, setSearchedData] = useState<Array<JSONObject>>([]);\n const [suggestions, setSuggestions] = useState<Array<string>>([]);\n const {\n search,\n autoSuggest,\n searchResults,\n rawResults,\n suggestions: miniSearchSuggestions,\n addAll,\n removeAll,\n clearSearch,\n clearSuggestions,\n } = useMiniSearch([], {\n fields: searchOverFields,\n storeFields: [uidField],\n idField: uidField,\n extractField: extractValue,\n // processTerm: (term) => suffixes(term, 3),\n searchOptions: {\n processTerm: MiniSearch.getDefault('processTerm'),\n },\n });\n\n const isSearching = hasSearchTerms(searchTerms);\n\n const clearSearchTerms = useCallback(() => {\n clearSearch();\n clearSuggestions();\n }, [clearSearch, clearSuggestions]);\n\n useDeepCompareEffect(() => {\n // we have the data, so set it and build the search index and get the advanced search filter values\n if (mdsData && isSuccess && mdsData.length > 0) {\n removeAll();\n // check if an id is missing\n const dataWithIds = mdsData.reduce((acc, cur) => {\n if (!cur[uidField])\n acc.push({\n ...cur,\n [uidField]: Math.random().toString(36).substring(7),\n });\n else acc.push(cur);\n return acc;\n }, [] as JSONObject[]);\n addAll(dataWithIds);\n }\n }, [addAll, isSuccess, mdsData, removeAll, uidField]);\n\n useEffect(() => {\n if (mdsData && isSearching) {\n const searchQuery = buildMiniSearchKeywordQuery(searchTerms);\n if (searchQuery) {\n search(searchQuery);\n autoSuggest(searchQuery);\n }\n }\n }, [autoSuggest, isSearching, mdsData, search, searchTerms]);\n\n useDeepCompareEffect(() => {\n const filterKeywordSearchResults = () => {\n return searchResults ? searchResults : mdsData;\n };\n\n const filterAdvancedSearchResults = (input: JSONObject[]): JSONObject[] => {\n return filterByAdvSearch(\n input,\n searchTerms.advancedSearchTerms,\n discoveryConfig,\n );\n };\n\n setSearchedData(filterAdvancedSearchResults(filterKeywordSearchResults()));\n\n setSuggestions(() => {\n return (\n miniSearchSuggestions?.map(\n (suggestion: Suggestion) => suggestion.suggestion,\n ) ?? []\n );\n });\n }, [\n discoveryConfig,\n mdsData,\n miniSearchSuggestions,\n searchResults,\n searchTerms.advancedSearchTerms,\n ]);\n\n return {\n searchedData: isSearching ? searchedData : mdsData,\n clearSearchTerms: clearSearchTerms,\n suggestions: suggestions,\n };\n};\n\ninterface PaginationHookProps {\n data: JSONObject[];\n pagination: MetadataPaginationParams;\n}\n\nconst usePagination = ({ data, pagination }: PaginationHookProps) => {\n const [paginatedData, setPaginatedData] = useState<JSONObject[]>([]);\n\n useEffect(() => {\n const updatePaginatedData = () => {\n setPaginatedData(\n data.slice(pagination.offset, pagination.offset + pagination.pageSize),\n );\n };\n\n updatePaginatedData();\n }, [data, pagination.offset, pagination.pageSize]);\n\n return {\n paginatedData,\n };\n};\n\ninterface AdvancedSearchFilterValuesHookProps {\n data: JSONObject[];\n advancedSearchFilters: AdvancedSearchFilters;\n uidField: string;\n}\n\nconst useGetAdvancedSearchFilterValues = ({\n data,\n advancedSearchFilters,\n uidField,\n}: AdvancedSearchFilterValuesHookProps) => {\n const [advancedSearchFilterValues, setAdvancedSearchFilterValues] = useState<\n ReadonlyArray<KeyValueSearchFilter>\n >([]);\n\n useEffect(() => {\n if (data) {\n setAdvancedSearchFilterValues(\n processAdvancedSearchTerms(advancedSearchFilters, data, uidField),\n );\n }\n }, [advancedSearchFilters, data, uidField]);\n\n return {\n advancedSearchFilterValues,\n };\n};\n\ninterface SummaryStatisticsHookProps {\n data: JSONObject[];\n aggregationConfig: SummaryStatisticsConfig[];\n}\n\nconst useGetSummaryStatistics = ({\n data,\n aggregationConfig,\n}: SummaryStatisticsHookProps) => {\n const [summaryStatistics, setSummaryStatistics] = useState<SummaryStatistics>(\n [],\n );\n\n useEffect(() => {\n setSummaryStatistics(processAllSummaries(data, aggregationConfig));\n }, [data, aggregationConfig]);\n\n return {\n summaryStatistics,\n };\n};\n\nexport const useLoadAllData = ({\n pagination,\n searchTerms,\n advancedSearchTerms,\n discoveryConfig,\n guidType = 'discovery_metadata',\n maxStudies = 10000,\n studyField = 'gen3_discovery',\n dataHook,\n}: DiscoveryDataLoaderProps & {\n dataHook: MetadataDataHook;\n}): DiscoverDataHookResponse => {\n const uidField = discoveryConfig?.minimalFieldMapping?.uid || 'guid';\n const dataGuidType = discoveryConfig?.guidType ?? guidType;\n const dataStudyField = discoveryConfig?.studyField ?? studyField;\n const [summaryStatistics, setSummaryStatistics] = useState<SummaryStatistics>(\n [],\n );\n\n const {\n mdsData,\n isUninitialized,\n isFetching,\n isLoading,\n isSuccess,\n isError,\n } = dataHook({\n studyField: dataStudyField,\n guidType: dataGuidType,\n maxStudies,\n discoveryConfig,\n });\n\n const manualSortingAndPagination =\n getManualSortingAndPagination(discoveryConfig);\n\n const { advancedSearchFilterValues } = useGetAdvancedSearchFilterValues({\n data: mdsData,\n advancedSearchFilters: discoveryConfig.features?.advSearchFilters ?? {\n enabled: false,\n field: '',\n displayName: '',\n filters: [],\n },\n uidField,\n });\n\n const { searchedData, clearSearchTerms, suggestions } = useSearchMetadata({\n discoveryConfig,\n searchTerms,\n\n mdsData,\n isSuccess,\n });\n\n // TODO: determine if this is even needed\n const { paginatedData } = usePagination({\n data: searchedData,\n pagination,\n });\n\n useEffect(() => {\n setSummaryStatistics(\n processAllSummaries(searchedData, discoveryConfig?.aggregations),\n );\n }, [searchedData, discoveryConfig?.aggregations]);\n\n // const { summaryStatistics } = useGetSummaryStatistics({\n // data: searchedData,\n // aggregationConfig: discoveryConfig?.aggregations,\n // });\n\n return {\n data: manualSortingAndPagination ? paginatedData : searchedData,\n hits: searchedData.length ?? -1,\n clearSearch: clearSearchTerms,\n suggestions: suggestions,\n advancedSearchFilterValues,\n summaryStatistics,\n dataRequestStatus: {\n isUninitialized,\n isFetching,\n isLoading,\n isSuccess,\n isError,\n },\n };\n};\n\nexport const useLoadAllMDSData = ({\n pagination,\n searchTerms,\n advancedSearchTerms,\n discoveryConfig,\n guidType = 'discovery_metadata',\n maxStudies = 10000,\n studyField = 'gen3_discovery',\n}: DiscoveryDataLoaderProps) =>\n useLoadAllData({\n pagination,\n searchTerms,\n advancedSearchTerms,\n discoveryConfig,\n guidType,\n maxStudies,\n studyField,\n dataHook: useGetMDSData,\n });\n\nexport const useLoadAllAggMDSData = ({\n pagination,\n searchTerms,\n advancedSearchTerms,\n discoveryConfig,\n guidType = 'discovery_metadata',\n maxStudies = 10000,\n studyField = 'gen3_discovery',\n}: DiscoveryDataLoaderProps) =>\n useLoadAllData({\n pagination,\n searchTerms,\n advancedSearchTerms,\n discoveryConfig,\n guidType,\n maxStudies,\n studyField,\n dataHook: useGetAggMDSData,\n });\n","import React, { useState } from 'react';\nimport { MdSearch as SearchIcon, MdClose as CloseIcon } from 'react-icons/md';\nimport { Autocomplete } from '@mantine/core';\nimport { SearchInputProps } from './types';\n\ninterface SearchInputWithAutoSuggestProps extends SearchInputProps {\n suggestions: string[];\n limit?: number;\n}\n\nconst SearchInputWithSuggestions = ({\n searchChanged,\n placeholder,\n label,\n suggestions,\n clearSearch = () => null,\n}: SearchInputWithAutoSuggestProps) => {\n const [searchTerm, setSearchTerm] = useState('');\n\n return (\n <div className=\"relative\">\n <Autocomplete\n data={suggestions}\n label={label}\n leftSection={<SearchIcon size={24} />}\n placeholder={placeholder || 'Search...'}\n data-testid=\"discovery-textbox-search-bar\"\n aria-label=\"DiscoverySearch Input\"\n value={searchTerm}\n onChange={(value) => {\n searchChanged(value);\n setSearchTerm(value);\n }}\n classNames={{\n input: 'focus:border-2 focus:border-primary text-sm',\n }}\n size=\"sm\"\n rightSection={\n searchTerm.length > 0 && (\n <CloseIcon\n onClick={() => {\n setSearchTerm('');\n searchChanged('');\n clearSearch();\n }}\n className=\"cursor-pointer\"\n data-testid=\"search-input-clear-search\"\n />\n )\n }\n />\n </div>\n );\n};\n\nexport default SearchInputWithSuggestions;\n","import { useState, useEffect } from 'react';\nimport { MdClose as CloseIcon, MdInfo } from 'react-icons/md';\nimport { PiSparkleFill, PiTrash } from 'react-icons/pi';\nimport { TextInput, Loader, Tabs, Button, UnstyledButton, Title, Divider, Tooltip, Table } from '@mantine/core';\nimport { useAskQuestionMutation, AiSearchResponse } from '@gen3/core';\nimport Markdown from 'react-markdown';\nimport remarkGfm from 'remark-gfm';\nimport { useDeepCompareCallback } from 'use-deep-compare';\nimport { FetchBaseQueryError } from '@reduxjs/toolkit/query/react';\n\ninterface AiSearchProps {\n placeholder?: string;\n uidForStorage?: string;\n}\ninterface HistoryObj {\n [key:string]: {\n loadingStarted: number;\n loadingEnded?: number;\n result?: AiSearchResponse;\n };\n}\n/**\n * AiSearch is an ai chatbot presenting as a searchbar\n * @param uidForStorage - optional id used to store search results Defaults to 'aiSearch'\n * @param placeholder - optional Defaults to 'e.g. Is there any data with subjects diagnosed with lung disease?'\n*/\nconst AiSearch = ({\n placeholder = 'e.g. Is there any data with subjects diagnosed with lung disease?',\n uidForStorage = 'aiSearch',\n}: AiSearchProps) => {\n const [searchTerm, setSearchTerm] = useState('');\n const [searchTermOnSubmit, setSearchTermOnSubmit] = useState('');\n const [aiSearchHistory, setAiSearchHistory] = useState<HistoryObj>({});\n const [resultAreaDisplayed, setResultAreaDisplayed] = useState(false);\n const [showLoading, setShowLoading] = useState(false);\n const [historyTableRows, setHistoryTableRows] = useState<[] | JSX.Element[]>([]);\n const [aiResponseDisplayed, setAiResponseDisplayed] = useState<AiSearchResponse | undefined>();\n const [activeTab, setActiveTab] = useState<string | null>('search');\n const [\n askQuestion,\n { isLoading: apiIsLoading, data: aiResponse, error: aiError },\n // This is the destructured mutation result\n ] = useAskQuestionMutation();\n\n const askAi = () => {\n if (!searchTerm) {\n return;\n }\n setSearchTermOnSubmit(searchTerm);\n\n //check if value has been searched for before\n if (aiSearchHistory[searchTerm]) {\n //if yes check if completed\n if (aiSearchHistory[searchTerm].result?.query) {\n //if yes return those results\n setAiResponseDisplayed(aiSearchHistory[searchTerm].result);\n setShowLoading(false);\n return;\n }\n //if no check time it was started and check if apiIsLoading\n if (apiIsLoading && aiSearchHistory[searchTerm].loadingStarted < (Date.now() + 60000)) {\n //wait longer\n return;\n }\n //otherwise do the api call again\n }\n\n\n //save search term\n setAiSearchHistory(searchHistory => ({\n ...searchHistory,\n [searchTerm]: {loadingStarted: Date.now()}\n }));\n\n\n //make API Call\n setShowLoading(true);\n askQuestion({\n query: searchTerm,\n });\n //clear old data\n setAiResponseDisplayed(undefined);\n //display loading/results area\n setResultAreaDisplayed(true);\n\n };\n useEffect(() => {\n //when api returns data show to user and store\n if (!aiResponse?.query) {\n return;\n }\n //if response matches current ask set setAiResponseDisplayed\n if (aiResponse?.query === searchTermOnSubmit) {\n setAiResponseDisplayed(aiResponse);\n setShowLoading(false);\n }\n\n //update Search History\n setAiSearchHistory(searchHistory => {\n const currentQuery = searchHistory[aiResponse.query];\n currentQuery.loadingEnded = Date.now();\n currentQuery.result = aiResponse;\n return {...searchHistory};\n });\n }, [aiResponse, searchTermOnSubmit]);\n\n useEffect(() => {\n //on load read session storage\n setAiSearchHistory(JSON.parse((sessionStorage.getItem(uidForStorage) || '{}')));\n }, [uidForStorage]);\n\n useEffect(() => {\n //when aiSearchHistory changes save to session storage\n if (aiSearchHistory) {\n sessionStorage.setItem(uidForStorage, JSON.stringify(aiSearchHistory));\n }\n }, [uidForStorage, aiSearchHistory]);\n\n useEffect(() => {\n //if error show to user\n if (aiError) {\n const errorStatus = (aiError as FetchBaseQueryError).status;\n switch (errorStatus) {\n case 401:\n setAiResponseDisplayed({\n topic: 'error',\n conversationId: 'error',\n documents: [],\n query: searchTermOnSubmit,\n response: 'Login required. Please login and try again'} );\n break;\n case 403:\n setAiResponseDisplayed({\n topic: 'error',\n conversationId: 'error',\n documents: [],\n query: searchTermOnSubmit,\n response: 'You do not have permission to access AISearch. Please contact your administrator'});\n break;\n default:\n setAiResponseDisplayed({\n topic: 'error',\n conversationId: 'error',\n documents: [],\n query: searchTermOnSubmit,\n response: 'Something went wrong please refresh and try again'});\n }\n\n setShowLoading(false);\n }\n }, [aiError, searchTermOnSubmit]);\n\n const setCurrentSearch = useDeepCompareCallback((searchTerm:string) => {\n //set search to item\n setAiResponseDisplayed(aiSearchHistory[searchTerm].result);\n setSearchTerm(searchTerm);\n setShowLoading(false);\n setResultAreaDisplayed(true);\n\n //change tab to search tab\n setActiveTab('search');\n\n }, [aiSearchHistory]);\n\n const removeSearchHistory = (searchTerm:string) => {\n setAiSearchHistory(searchHistory => {\n delete searchHistory[searchTerm];\n return {...searchHistory};\n });\n };\n\n useEffect(() => {\n //update history table\n if (aiSearchHistory) {\n setHistoryTableRows(Object.keys(aiSearchHistory).map((searchTerm, index) => {\n const rowInfo = aiSearchHistory[searchTerm];\n return (\n <tr key={index}>\n <td>\n <button className=\"w-full text-left\" onClick={()=>{setCurrentSearch(searchTerm);}}>{new Date(rowInfo.loadingStarted).toLocaleDateString()}</button>\n </td>\n <td>\n <button className=\"w-full text-left\" onClick={()=>{setCurrentSearch(searchTerm);}}>{searchTerm}</button>\n </td>\n <td className=\"text-right\">\n <Tooltip\n label=\"Delete\"\n position=\"bottom\"\n withArrow\n arrowSize={6}\n >\n <button className=\"text-red-600 hover:text-white hover:bg-red-600\" onClick={()=>{removeSearchHistory(searchTerm);}}>\n <PiTrash aria-label=\"Delete\"/>\n </button>\n </Tooltip>\n </td>\n </tr>\n );\n }));\n }\n }, [aiSearchHistory, setCurrentSearch]);\n\n return (\n <Tabs color=\"orange.8\" className=\"w-full\" classNames={{\n tab: 'data-[active=true]:font-bold !text-[16px]',\n }} value={activeTab} onChange={setActiveTab}>\n <Tabs.List>\n <Tooltip\n label=\"AI is a powerful tool, but we cannot guarantee the accuracy of any responses. Feel free to copy and paste perceived dataset names or descriptions from the AI response into the real search bar to try and find any datasets the AI is referring to.\"\n position=\"bottom\"\n withArrow\n arrowSize={6}\n multiline\n w={300}\n >\n <Tabs.Tab value=\"search\" rightSection={<MdInfo className=\"text-[#C7501A]\" aria-label=\"info icon\"/>}>Ask AI About Available Data</Tabs.Tab>\n </Tooltip>\n <Tooltip\n label=\"Your history is only saved temporarily on this device.\"\n position=\"bottom\"\n withArrow\n arrowSize={6}\n multiline\n w={300}\n >\n <Tabs.Tab value=\"history\" rightSection={<MdInfo className=\"text-[#C7501A]\" aria-label=\"info icon\"/>}>Search History</Tabs.Tab>\n </Tooltip>\n </Tabs.List>\n\n <Tabs.Panel value=\"search\" pt=\"xs\">\n <div className=\"relative\">\n <TextInput\n placeholder={placeholder || 'Search...'}\n value={searchTerm}\n onChange={(event) => {\n setSearchTerm(event.target.value);\n }}\n onKeyUp={(e) => e.key === 'Enter' && askAi()}\n classNames={{\n root: '',\n input: `!pr-[250px] ${resultAreaDisplayed && '!rounded-b-none !border-blue-600 !border-b-0'}`,\n }}\n size=\"lg\"\n />\n <div className=\"absolute right-0 top-0 flex items-center\">\n {searchTerm.length > 0 && (\n <UnstyledButton\n className=\"!bg-gray-100 inline-flex text-[#525252] !p-1 rounded-full mr-2\"\n onClick={() => {\n setSearchTerm('');\n setSearchTermOnSubmit('');\n if (showLoading) {\n setResultAreaDisplayed(false);\n setShowLoading(false);\n }\n }}\n >\n Clear <CloseIcon aria-hidden />\n </UnstyledButton>\n )}\n <Button\n color=\"blue.8\"\n type=\"submit\"\n className=\"m-1\"\n size=\"md\"\n leftSection={<PiSparkleFill aria-hidden />}\n onClick={askAi}\n >\n Ask AI\n </Button>\n </div>\n </div>\n <div aria-live=\"polite\">\n {resultAreaDisplayed && (\n <div className=\"border border-blue-600 rounded-b bg-gray-100 py-6\">\n {showLoading ? (\n <div className=\"text-center\">\n <Loader color=\"orange.8\" className=\"inline-block mb-4\"/>\n <div>\n AI response is loading. If you'd like to cancel this search, press the "Clear" button.\n </div>\n </div>\n ) : (\n <div className=\"px-4\">\n <Title order={5} className=\"pb-2\">AI Response</Title>\n <div className=\"border-l-2 border-blue-600 pl-4 py-1\">\n {/** TODO interpret code and add expand */}\n {aiResponseDisplayed?.response ? (\n <Markdown\n remarkPlugins={[remarkGfm]}\n components={{\n // define some formatting for the ai response\n p(props:any) {\n const { node, ...rest } = props;\n return (\n <p\n className=\"text-lg text-primary-contrast my-1\"\n {...rest}\n />\n );\n },\n ol(props:any) {\n const { node, ...rest } = props;\n return (\n <ol\n className=\"list-disc list-inside my-1\"\n {...rest}\n />\n );\n },\n ul(props:any) {\n const { node, ...rest } = props;\n return (\n <ul\n className=\"list-disc list-inside my-1\"\n {...rest}\n />\n );\n },\n li(props:any) {\n const { node, ...rest } = props;\n return <li className=\"text-md\" {...rest} />;\n },\n }}\n >\n {aiResponseDisplayed?.response}\n </Markdown>) : 'Something went wrong please refresh and try again'}\n </div>\n <Divider my=\"sm\" />\n <Title order={5} className=\"pb-2\">Referenced Sources</Title>\n {aiResponseDisplayed?.documents && aiResponseDisplayed.documents.length > 0 ?\n (\n <ul className=\"border-l-2 border-blue-600 pl-4 py-1\">\n {aiResponseDisplayed?.documents.map((document:AiSearchResponse['documents'][0], i:number)=>{\n return (<li key={i} className=\"inline-block after:content-[','] pr-2 last:after:content-none\">{document.metadata.source}</li>);\n })}\n </ul>\n ) :(\n <div className=\"border-l-2 border-blue-600 pl-4 py-1\">\n No referenced sources available.\n </div>\n )}\n </div>\n )}\n </div>\n )}\n </div>\n </Tabs.Panel>\n\n <Tabs.Panel value=\"history\" pt=\"xs\">\n {historyTableRows.length > 0 ? (\n <Table highlightOnHover>\n <thead>\n <tr>\n <th className=\"w-24\">Date</th>\n <th>Search Input</th>\n <th className=\"w-32\">Clear History</th>\n </tr>\n </thead>\n <tbody>{historyTableRows}</tbody>\n </Table>\n ): (\n <Title order={5} className=\"p-2\">No search history at this time</Title>\n )}\n </Tabs.Panel>\n </Tabs>\n );\n};\n\nexport default AiSearch;\n","import { useEffect, useState } from 'react';\n\nimport {\n JSONObject,\n MetadataPaginationParams,\n useGetAggMDSQuery,\n} from '@gen3/core';\nimport {\n AdvancedSearchFilters,\n DiscoverDataHookResponse,\n DiscoveryDataLoaderProps,\n KeyValueSearchFilter,\n SearchTerms,\n} from '../../types';\n\nimport { getFilterValuesByKey, hasSearchTerms } from '../../Search/utils';\n\n// TODO remove after debugging\n// import { reactWhatChanged as RWC } from 'react-what-changed';\n\ninterface QueryType {\n term: string;\n fields: string[];\n combineWith: 'AND' | 'OR';\n}\n\nconst processAdvancedSearchTerms = (\n advSearchFilters: AdvancedSearchFilters,\n data: JSONObject[],\n uidField: string,\n): ReadonlyArray<KeyValueSearchFilter> => {\n return advSearchFilters.filters.map((filter) => {\n const { key, keyDisplayName } = filter;\n const values = getFilterValuesByKey(\n key,\n data,\n advSearchFilters.field,\n uidField,\n );\n return {\n key,\n keyDisplayName,\n valueDisplayNames: values.reduce((acc, cur) => {\n acc[cur] = cur;\n return acc;\n }, {} as Record<string, string>),\n };\n });\n};\n\ninterface GetDataProps {\n offset: number;\n guidType: string;\n pageSize: number;\n studyField: string;\n}\n\nconst useGetData = ({\n offset = 0,\n pageSize = 10,\n guidType = 'discovery_metadata',\n studyField = 'gen3_discovery',\n}: Partial<GetDataProps>) => {\n const [mdsData, setMDSData] = useState<Array<JSONObject>>([]);\n const [isError, setIsError] = useState(false);\n const [total, setTotal] = useState(0);\n\n const {\n data,\n isUninitialized,\n isFetching,\n isLoading,\n isSuccess,\n isError: queryIsError,\n } = useGetAggMDSQuery({\n guidType: guidType,\n studyField: studyField,\n offset: offset,\n pageSize: pageSize,\n });\n\n useEffect(() => {\n if (data && isSuccess) {\n setMDSData(data.data);\n setTotal(data.hits);\n }\n }, [data, isSuccess]);\n\n useEffect(() => {\n if (queryIsError) {\n setIsError(true);\n }\n }, [queryIsError]);\n\n return {\n mdsData,\n total,\n isUninitialized,\n isFetching,\n isLoading,\n isSuccess,\n isError,\n };\n};\n\ninterface SearchMetadataProps {\n discoveryConfig: any;\n searchTerms: SearchTerms;\n mdsData: JSONObject[];\n isSuccess: boolean;\n}\n\ninterface PaginationHookProps {\n data: JSONObject[];\n pagination: MetadataPaginationParams;\n}\n\ninterface AdvancedSearchFilterValuesHookProps {\n data: JSONObject[];\n advancedSearchFilters: AdvancedSearchFilters;\n uidField: string;\n}\n\nexport const useAggMDSServer = ({\n pagination,\n searchTerms,\n advancedSearchTerms,\n discoveryConfig,\n guidType = 'discovery_metadata',\n maxStudies = 10000,\n studyField = 'gen3_discovery',\n}: DiscoveryDataLoaderProps): DiscoverDataHookResponse => {\n const uidField = discoveryConfig?.minimalFieldMapping?.uid || 'guid';\n const dataGuidType = discoveryConfig?.guidType ?? guidType;\n const dataStudyField = discoveryConfig?.studyField ?? studyField;\n const {\n mdsData,\n total,\n isUninitialized,\n isFetching,\n isLoading,\n isSuccess,\n isError,\n } = useGetData({\n ...pagination,\n studyField: dataStudyField,\n guidType: dataGuidType,\n });\n\n return {\n data: mdsData,\n hits: total,\n suggestions: [],\n summaryStatistics: [],\n advancedSearchFilterValues: [],\n dataRequestStatus: {\n isUninitialized,\n isFetching,\n isLoading,\n isSuccess,\n isError,\n },\n };\n};\n","import { useCallback, useEffect, useState } from 'react';\nimport { GetDataProps, GetDataResponse } from '../types';\nimport { processAuthorizations } from '../utils';\nimport {\n useCoreSelector,\n useGetIndexAggMDSQuery,\n selectAuthzMappingData,\n CoreState,\n type JSONObject,\n type IndexedMetadataFilters,\n} from '@gen3/core';\nimport { DiscoveryDataLoaderProps, DiscoveryIndexConfig } from '../../types';\nimport { isArrayOfString } from '../../../../utils/isType';\nimport { useLoadAllData } from '../MDSAllLocal/DataLoader';\n\nconst extractIndexArrayFromConfig = (\n config?: DiscoveryIndexConfig,\n): Array<string> => {\n if (!config) {\n // throw an error or return default value\n return [];\n }\n const dataFetchArgs = config.features?.dataLoader?.dataFetchArgs;\n\n if (!dataFetchArgs?.indexKeys) return [];\n\n if (isArrayOfString(dataFetchArgs.indexKeys)) {\n return dataFetchArgs.indexKeys;\n }\n\n return [];\n};\n\nconst extractFilterEmptyFromConfig = (\n config?: DiscoveryIndexConfig,\n): IndexedMetadataFilters | undefined => {\n if (!config) {\n // throw an error or return default value\n return undefined;\n }\n if (config.features?.dataLoader?.dataFetchArgs?.hasEnoughData) {\n return config.features.dataLoader.dataFetchArgs\n .hasEnoughData as unknown as IndexedMetadataFilters;\n }\n return undefined;\n};\n\nconst useGetIndexedMDSData = ({\n guidType = 'unregistered_discovery_metadata',\n maxStudies = 10000,\n studyField = 'gen3_discovery',\n discoveryConfig,\n}: Partial<GetDataProps>): GetDataResponse => {\n const [mdsData, setMDSData] = useState<Array<JSONObject>>([]);\n const [isError, setIsError] = useState(false);\n\n const indexKeys = extractIndexArrayFromConfig(discoveryConfig);\n const {\n data,\n isUninitialized,\n isFetching,\n isLoading,\n isSuccess,\n isError: queryIsError,\n } = useGetIndexAggMDSQuery({\n guidType: guidType,\n studyField: studyField,\n offset: 0,\n pageSize: maxStudies,\n indexKeys: indexKeys,\n filterEmpty: extractFilterEmptyFromConfig(discoveryConfig),\n });\n\n const authMapping = useCoreSelector((state: CoreState) =>\n selectAuthzMappingData(state),\n );\n\n useEffect(() => {\n if (data && isSuccess) {\n const studyData = data.data;\n if (discoveryConfig?.features?.authorization.enabled) {\n setMDSData(\n processAuthorizations(studyData, discoveryConfig, authMapping),\n );\n } else setMDSData(studyData);\n } else setMDSData([]);\n }, [authMapping, data, discoveryConfig, isSuccess, studyField]);\n\n useEffect(() => {\n if (queryIsError) {\n setIsError(true);\n }\n }, [queryIsError]);\n\n return {\n mdsData,\n isUninitialized,\n isFetching,\n isLoading,\n isSuccess,\n isError,\n };\n};\n\nexport const useLoadAllIndexedAggMDSData = ({\n pagination,\n searchTerms,\n advancedSearchTerms,\n discoveryConfig,\n guidType = 'discovery_metadata',\n maxStudies = 10000,\n studyField = 'gen3_discovery',\n}: DiscoveryDataLoaderProps) =>\n useLoadAllData({\n pagination,\n searchTerms,\n advancedSearchTerms,\n discoveryConfig,\n guidType,\n maxStudies,\n studyField,\n dataHook: useGetIndexedMDSData,\n });\n","// build a factor function that returns a DataLoader for each type of data\n//\n\nimport { DiscoverDataHookResponse, DiscoveryDataLoaderProps } from '../types';\nimport { useAggMDSServer } from './AggMDSServer/DataLoader';\nimport {\n useLoadAllMDSData,\n useLoadAllAggMDSData,\n} from './MDSAllLocal/DataLoader';\nimport { useLoadAllIndexedAggMDSData } from './IndexedMetadata/DataLoader';\n\nexport type DiscoveryDataLoader = (\n _: DiscoveryDataLoaderProps,\n) => DiscoverDataHookResponse;\n\nconst discoveryDataLoaders: Record<string, DiscoveryDataLoader> = {};\n\nexport const registerDiscoveryDataLoader = (\n name: string,\n dataLoader: DiscoveryDataLoader,\n) => {\n discoveryDataLoaders[name] = dataLoader;\n};\n\nexport const getDiscoveryDataLoader = (\n name?: string,\n): DiscoveryDataLoader | undefined => {\n if (name === undefined) {\n console.error('getDiscoveryDataLoader: no name provided');\n return undefined;\n }\n\n if (!(name in discoveryDataLoaders)) {\n console.error('getDiscoveryDataLoader: no data loader found for', name);\n return undefined;\n }\n return discoveryDataLoaders[name];\n};\n\nexport const getDiscoveryDataLoaders = (): string[] => {\n return Object.keys(discoveryDataLoaders);\n};\n\nexport const registerDefaultDiscoveryDataLoaders = () => {\n registerDiscoveryDataLoader('AggMDSServer', useAggMDSServer);\n registerDiscoveryDataLoader('MDSAllLocal', useLoadAllMDSData);\n registerDiscoveryDataLoader('AggMDSAllLocal', useLoadAllAggMDSData);\n registerDiscoveryDataLoader(\n 'IndexedAggMDSAllLocal',\n useLoadAllIndexedAggMDSData,\n );\n};\n\nregisterDefaultDiscoveryDataLoaders();\n","import React, { useMemo, useRef, useState, ReactNode } from 'react';\nimport { DiscoveryIndexConfig } from './types';\nimport DiscoveryTable from './DiscoveryTable';\nimport DiscoveryProvider from './DiscoveryProvider';\nimport { Loader, Text } from '@mantine/core';\nimport AdvancedSearchPanel from './Search/AdvancedSearchPanel';\nimport { MRT_PaginationState, MRT_SortingState } from 'mantine-react-table';\nimport { useDisclosure } from '@mantine/hooks';\nimport { Button } from '@mantine/core';\nimport ActionBar from './ActionBar/ActionBar';\nimport SummaryStatisticPanel from './Statistics/SummaryStatisticPanel';\nimport { useLoadAllMDSData } from './DataLoaders/MDSAllLocal/DataLoader';\nimport { AdvancedSearchTerms, SearchCombination } from './Search/types';\nimport SearchInputWithSuggestions from './Search/SearchInputWithSuggestions';\nimport AiSearch from './Search/AiSearch';\nimport { getDiscoveryDataLoader } from './DataLoaders/registeredDataLoaders';\n\nexport interface DiscoveryIndexPanelProps {\n discoveryConfig: DiscoveryIndexConfig;\n indexSelector: ReactNode | null;\n}\n\nconst DiscoveryIndexPanel = ({\n discoveryConfig,\n indexSelector,\n}: DiscoveryIndexPanelProps) => {\n const dataHook = useMemo(\n () =>\n getDiscoveryDataLoader(\n discoveryConfig?.features?.dataLoader?.dataFetchFunction,\n ) ?? useLoadAllMDSData,\n [discoveryConfig?.features?.dataLoader?.dataFetchFunction],\n );\n const [pagination, setPagination] = useState<MRT_PaginationState>({\n pageIndex: 0,\n pageSize: 10,\n });\n\n const parentDivRef = useRef<HTMLDivElement>(null);\n const [searchBarTerm, setSearchBarTerm] = useState<string[]>([]);\n const [advancedSearchTerms, setAdvancedSearchTerms] =\n useState<AdvancedSearchTerms>({\n operation: SearchCombination.and,\n filters: {},\n });\n\n const searchParam = useMemo(() => {\n return {\n keyword: {\n operator: SearchCombination.and,\n keywords: searchBarTerm,\n },\n advancedSearchTerms: advancedSearchTerms,\n };\n }, [searchBarTerm, advancedSearchTerms]);\n\n // Get all required data from the data hook. This includes the metadata, search suggestions, and results, pagination, etc.\n\n const {\n data,\n hits,\n dataRequestStatus,\n advancedSearchFilterValues,\n suggestions,\n summaryStatistics,\n } = dataHook({\n pagination: {\n offset: pagination.pageIndex * pagination.pageSize,\n pageSize: pagination.pageSize,\n },\n searchTerms: searchParam,\n discoveryConfig,\n });\n\n const [sorting, setSorting] = useState<MRT_SortingState>([]);\n const [showAdvancedSearch, { toggle: toggleAdvancedSearch }] =\n useDisclosure(false);\n\n if (dataRequestStatus.isLoading) {\n return (\n <div className=\"flex w-full py-24 relative justify-center\">\n <Loader variant=\"dots\" />{' '}\n </div>\n );\n }\n\n if (dataRequestStatus.isError) {\n return (\n <div className=\"flex w-full py-24 h-100 relative justify-center\">\n <Text size={'xl'}>Error loading discovery data</Text>\n </div>\n );\n }\n\n return (\n <div className=\"flex flex-col items-center p-4 w-full bg-base-lightest\">\n <DiscoveryProvider discoveryIndexConfig={discoveryConfig}>\n <div className=\"w-full\">\n {discoveryConfig.features?.pageTitle &&\n discoveryConfig?.features?.pageTitle.enabled ? (\n <Text size=\"xl\">{discoveryConfig?.features?.pageTitle.text}</Text>\n ) : null}\n <div className=\"flex items-center p-2 mb-4 bg-base-max rounded-lg\">\n {indexSelector}\n <SummaryStatisticPanel summaries={summaryStatistics} />\n <div className=\"w-3/4 flex flex-col\">\n <SearchInputWithSuggestions\n suggestions={suggestions}\n clearSearch={() => {\n setSearchBarTerm([]);\n }}\n searchChanged={(v) => setSearchBarTerm(v.split(' '))}\n placeholder={\n discoveryConfig?.features?.search?.searchBar?.placeholder ??\n 'Search...'\n }\n label={\n discoveryConfig?.features?.search?.searchBar?.inputSubtitle\n }\n />\n </div>\n </div>\n {discoveryConfig?.features?.aiSearch && (\n <div className=\"mb-4\">\n <div className=\"flex w-full bg-base-max p-4 rounded-lg\">\n <AiSearch />\n </div>\n </div>\n )}\n <div className=\"flex flex-row\">\n {discoveryConfig?.features?.advSearchFilters?.enabled ? (\n <Button onClick={toggleAdvancedSearch} color=\"accent\">\n Filters\n </Button>\n ) : (\n false\n )}\n {discoveryConfig?.features?.exportToDataLibrary?.enabled ? (\n <ActionBar\n config={discoveryConfig.features.exportToDataLibrary}\n />\n ) : null}\n </div>\n <div className=\"flex justify-start\">\n {discoveryConfig?.features?.advSearchFilters?.enabled ? (\n <AdvancedSearchPanel\n advSearchFilters={advancedSearchFilterValues}\n opened={showAdvancedSearch}\n setAdvancedSearchFilters={setAdvancedSearchTerms}\n />\n ) : (\n false\n )}\n <div\n className=\"flex w-full grow-0 bg-base-max border-1 border-base-lighter p-4 rounded-md\"\n ref={parentDivRef}\n >\n <DiscoveryTable\n data={data}\n hits={hits}\n dataRequestStatus={dataRequestStatus}\n setPagination={setPagination}\n setSorting={setSorting}\n pagination={pagination}\n sorting={sorting}\n />\n </div>\n </div>\n </div>\n </DiscoveryProvider>\n </div>\n );\n};\n\nexport default DiscoveryIndexPanel;\n","import React from 'react';\nimport { Badge } from '@mantine/core';\nimport { useGetTagsQuery } from '@gen3/core';\n\ninterface TagCloudProps {\n tagSelector?: (_: string) => void;\n}\n\nconst TagCloud = () => {\n const { isLoading } = useGetTagsQuery('');\n\n if (isLoading) {\n return <div>Is Loading</div>;\n }\n return (\n <div>\n <Badge>Coming Soon</Badge>\n </div>\n );\n};\n\nexport default TagCloud;\n","import React from 'react';\nimport { useUserAuth } from '@gen3/core';\nimport { Avatar, Card, Group, LoadingOverlay, Text } from '@mantine/core';\n\nconst User = () => {\n const { data: userData, isFetching } = useUserAuth();\n\n return (\n <div className=\"w-full h-full\">\n <LoadingOverlay visible={isFetching} />\n <div className=\"flex flex-row justify-end\">\n <Card shadow=\"sm\" radius=\"md\" withBorder>\n <Group justify=\"space-between\" mt=\"md\" mb=\"xs\">\n <Avatar radius=\"xl\" color=\"accent.6\"></Avatar>\n <Text fw={500}>{userData?.username}</Text>\n </Group>\n </Card>\n </div>\n </div>\n );\n};\n\nexport default User;\n","import React, { createContext } from 'react';\nimport { ProfileConfig } from './types';\n\ninterface ProfileProviderValue {\n profileConfig: ProfileConfig;\n}\n\nconst ProfileContext = createContext<ProfileProviderValue>({\n profileConfig: {} as ProfileConfig,\n});\n\nconst useProfileContext = () => {\n const context = React.useContext(ProfileContext);\n if (context === undefined) {\n throw Error(\n 'Profile must be used must be used inside of a ProfileContext',\n );\n }\n return context;\n};\n\nconst ProfileProvider = ({\n children,\n profileConfig,\n}: {\n children: React.ReactNode;\n profileConfig: ProfileConfig;\n}) => {\n return (\n <ProfileContext.Provider value={{ profileConfig }}>\n {children}\n </ProfileContext.Provider>\n );\n};\n\nexport { useProfileContext, ProfileProvider as default };\n","import React, {\n createContext,\n PropsWithChildren,\n useState,\n} from 'react';\nimport {\n useDeepCompareEffect,\n useDeepCompareMemo\n} from 'use-deep-compare';\nimport {\n AuthzMapping, type CoreState,\n ServiceAndMethod,\n useCoreSelector,\n useGetAuthzMappingsQuery,\n UserProfile,\n selectUserDetails\n} from '@gen3/core';\n\ninterface ServicesAndMethodsTypes {\n services: string[];\n methods: string[];\n}\n\ninterface ServicesAndMethodsTypesAsSets {\n services: Set<string>;\n methods: Set<string>;\n}\n\ninterface ResourcesProviderValue {\n userProfile?: Partial<UserProfile>;\n authzMapping?: AuthzMapping;\n servicesAndMethods: ServicesAndMethodsTypes;\n}\n\nconst ResourcesContext = createContext<ResourcesProviderValue>({\n authzMapping: {} as AuthzMapping,\n userProfile: {} as UserProfile,\n servicesAndMethods: { services: [], methods: [] } as ServicesAndMethodsTypes,\n});\n\n// Creates a React context hook from AuthzMapping and UserProfile APIs\nexport const useResourcesContext = () => {\n const context = React.useContext(ResourcesContext);\n if (context === undefined) {\n throw Error(\n 'Resources must be used must be used inside of a ResourcesContext',\n );\n }\n return context;\n};\n\n/**\n * ResourcesProvider fetches permissions data via the authzApi and caches this data\n * for use in other components\n * @param children - List all the API keys for the current user\n * @returns: A provider element that can pass data to other child elements.\n */\nconst ResourcesProvider = ({ children }: PropsWithChildren) => {\n const userProfile = useCoreSelector((state: CoreState) => selectUserDetails(state));\n const { data: authzMapping = {}, isLoading: isAuthZLoading } =\n useGetAuthzMappingsQuery();\n\n const [userProfileState, setUserProfileState] = useState<\n Partial<UserProfile>\n >({});\n const [authzMappingState, setAuthzMappingState] = useState<AuthzMapping>({});\n\n useDeepCompareEffect(() => {\n setUserProfileState(userProfile);\n }, [userProfile]);\n\n useDeepCompareEffect(() => {\n setAuthzMappingState(authzMapping);\n }, [authzMapping]);\n\n const servicesAndMethods = useDeepCompareMemo(() => {\n if (isAuthZLoading) return { services: [], methods: [] };\n if (!authzMappingState) return { services: [], methods: [] };\n const results = Object.values<ServiceAndMethod[]>(authzMappingState).reduce(\n (acc, resource) => {\n return resource.reduce((acc: ServicesAndMethodsTypesAsSets, entry) => {\n acc.services.add(entry.service);\n acc.methods.add(entry.method);\n return acc;\n }, acc);\n },\n {\n services: new Set<string>(),\n methods: new Set<string>(),\n } as ServicesAndMethodsTypesAsSets,\n );\n return {\n services: Array.from(results.services),\n methods: Array.from(results.methods),\n };\n }, [authzMappingState, isAuthZLoading]);\n\n return (\n <ResourcesContext.Provider\n value={{\n userProfile: userProfileState,\n authzMapping: authzMappingState,\n servicesAndMethods,\n }}\n >\n {children}\n </ResourcesContext.Provider>\n );\n};\n\nexport default ResourcesProvider;\n","import React, { useMemo } from 'react';\nimport { Stack, Checkbox, Text } from '@mantine/core';\nimport { useResourcesContext } from './ResourcesProvider';\nimport { useProfileContext } from './ProfileProvider';\n\ninterface ResourcesFiltersProps {\n setFilters: (filters: string[]) => void;\n selectedFilters: string[];\n}\n\n/**\n * ResourcesFilters creates a checkbox filter component from cached arborist data\n * and servicesAndMethods, useProfileContext context hooks.\n * @returns: A resourceFilter component for sorting permissions\n * chart on profile page by relevant microservices\n */\nconst ResourcesFilters = ({\n selectedFilters,\n setFilters,\n}: ResourcesFiltersProps) => {\n const { servicesAndMethods } = useResourcesContext();\n const { profileConfig } = useProfileContext();\n\n const checkboxes = useMemo(() => {\n const serviceColors = profileConfig?.resourceTable?.serviceColors ?? {};\n return servicesAndMethods.services.map((filter: string) => (\n <Checkbox\n className=\"m-2\"\n color={\n filter in serviceColors ? serviceColors[filter].color : 'primary'\n }\n key={filter}\n value={filter}\n label={filter}\n />\n ));\n }, [\n profileConfig?.resourceTable?.serviceColors,\n servicesAndMethods.services,\n ]);\n\n return (\n <div className=\"basis-1/4 mr-4 min-w-fit\">\n <div className=\"flex flex-col border-1 bg-base-max border-base-light\">\n <div className=\"bg-secondary-lighter border-base-lighter border-1 w-full py-1 px-2\">\n <Text size=\"sm\" fw={600}>\n Filter by Service\n </Text>\n </div>\n <Checkbox.Group\n value={selectedFilters}\n onChange={setFilters}\n classNames={{\n label: 'bg-secondary-lighter border-base-lighter border-1 w-full',\n }}\n >\n <Stack mt=\"xs\">{checkboxes}</Stack>\n </Checkbox.Group>\n </div>\n </div>\n );\n};\n\nexport default ResourcesFilters;\n","import React, { useState } from 'react';\nimport { Box, Button, LoadingOverlay, Select, Stack } from '@mantine/core';\nimport {\n type Gen3LoginProvider,\n type NameUrl,\n useGetLoginProvidersQuery,\n} from '@gen3/core';\nimport { LoginSelectedProps } from './types';\n\ninterface LoginProviderItemProps extends LoginSelectedProps {\n readonly provider: Gen3LoginProvider;\n}\n\nconst LoginProviderMultipleItems = ({\n provider,\n handleLoginSelected,\n}: LoginProviderItemProps) => {\n\n const [value, setValue] = useState<string | null>(null);\n return (\n <div className=\"flex flex-col w-full font-medium hover:text-accent-light hover:font-bold\" key={`${provider.name}-login-item`}>\n <Select\n data={provider.urls.map((item: NameUrl) => ({\n value: item.url,\n label: item.name,\n }))}\n classNames={{\n root: 'w-full',\n // item: 'font-medium hover:text-accent-light hover:font-bold',\n }}\n onChange={setValue}\n value={value}\n />\n <Button\n fullWidth\n key={provider.name}\n color=\"accent.3\"\n disabled={!value}\n onClick={() => value && handleLoginSelected(value)}\n >\n {' '}\n {provider.name}\n </Button>\n </div>\n );\n};\n\nconst LoginProviderSingleItem = ({\n provider,\n handleLoginSelected,\n}: LoginProviderItemProps) => {\n return (\n <Button\n fullWidth\n key={provider.name}\n color=\"accent.3\"\n onClick={() => handleLoginSelected(provider.urls[0].url)}\n >\n {' '}\n {provider.name}{' '}\n </Button>\n );\n};\n\nconst LoginProvidersPanel = ({ handleLoginSelected }: LoginSelectedProps) => {\n const { data, isSuccess } = useGetLoginProvidersQuery();\n if (!isSuccess) {\n return <LoadingOverlay visible={!isSuccess} />;\n }\n return (\n <Box className=\"flex flex-col items-center justify-center\">\n <Stack align=\"center\" className=\"w-1/3\">\n {data.default_provider.urls.length > 1 ? (\n <LoginProviderMultipleItems\n provider={data.default_provider}\n handleLoginSelected={handleLoginSelected}\n />\n ) : (\n <LoginProviderSingleItem\n provider={data.default_provider}\n handleLoginSelected={handleLoginSelected}\n />\n )}\n {data?.providers\n .filter((x: any) => x.name !== data.default_provider.name)\n .map((x: Gen3LoginProvider) =>\n x.urls.length > 1 ? (\n <LoginProviderMultipleItems\n key={x.name}\n provider={x}\n handleLoginSelected={handleLoginSelected}\n />\n ) : (\n <LoginProviderSingleItem\n key={x.name}\n provider={x}\n handleLoginSelected={handleLoginSelected}\n />\n ),\n )}\n </Stack>\n </Box>\n );\n};\n\nexport default LoginProvidersPanel;\n","\ninterface TexturedSidePanelProps {\n readonly url?: string;\n}\nconst TexturedSidePanel = ({ url }: TexturedSidePanelProps) => {\n\n return (\n <div\n aria-label={'background image'}\n style={{ backgroundImage: `url(${url})` }}\n className=\"flex h-screen w-full bg-left bg-repeat-y last:-scale-x-100\"\n ></div>\n );\n};\n\nexport default TexturedSidePanel;\n","import React, { useContext, useCallback, useEffect, useState } from 'react';\nimport {\n Box,\n Button,\n Divider,\n FileButton,\n Group,\n Text,\n Textarea,\n} from '@mantine/core';\nimport { notifications } from '@mantine/notifications';\nimport { MdClose as CloseIcon } from 'react-icons/md';\nimport { SessionContext } from '../../lib/session/session';\n\n\ninterface CredentialsLoginProps {\n handleLogin: () => void;\n}\n\nconst CredentialsLogin = ({ handleLogin } : CredentialsLoginProps) => {\n\n const sessionContext = useContext(SessionContext);\n const [credentials, setCredentials] = useState<string | null>(null);\n const [file, setFile] = useState<File | null>(null);\n\n useEffect(() => {\n if (file) {\n const reader = new FileReader();\n reader.onload = (event) => {\n if (event.target?.result) setCredentials(event.target.result as string);\n };\n reader.readAsText(file);\n }\n }, [file]);\n\n const handleCredentialsLogin = useCallback( async (credentials: string) => {\n const updateSession = sessionContext?.updateSession ?? (() => null);\n try {\n const json = await JSON.parse(credentials);\n await fetch('/api/auth/credentialsLogin', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(json),\n });\n updateSession();\n handleLogin();\n\n } catch (e) {\n notifications.show({\n title: 'Format Error',\n message: 'JSON is not valid',\n });\n }\n }, [handleLogin, sessionContext?.updateSession]);\n\n return (\n <Box className=\"flex flex-col items-center justify-center my-2\">\n <Divider\n color=\"black\"\n size=\"md\"\n className=\"w-1/3\"\n label={\n <Text size=\"md\">Authorize with credentials</Text>\n }\n labelPosition=\"center\"\n />\n <Group>\n <Textarea\n value={credentials ?? ''}\n onChange={(event) => {\n setCredentials(event.target.value);\n }}\n classNames={{\n input: 'focus:border-2 focus:border-primary text-sm',\n }}\n size=\"sm\"\n rightSection={\n (\n credentials &&\n credentials?.length > 0 && (\n <CloseIcon\n onClick={() => {\n setCredentials('');\n }}\n className=\"cursor-pointer\"\n data-testid=\"search-input-clear-search\"\n />\n )\n )\n }\n ></Textarea>\n <FileButton onChange={setFile} accept=\"application/json\">\n {(props) => <Button {...props}>...</Button>}\n </FileButton>\n <Button\n color=\"blue\"\n onClick={async () => {\n await handleCredentialsLogin(credentials ?? '');\n }}\n disabled={credentials === null || credentials === ''}\n >\n Authorize\n </Button>\n </Group>\n </Box>\n );\n};\n\nexport default CredentialsLogin;\n","// separate function for hashing logic\nfunction hashString(str: string) {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n hash = str.charCodeAt(i) + ((hash << 5) - hash);\n }\n return hash;\n}\n\n// hash function for a string\nexport function hashCode(str: string) {\n if (str === null || str === '') {\n return 0;\n }\n return hashString(str);\n}\n","import React from 'react';\nimport Markdown from 'react-markdown';\nimport remarkGfm from 'remark-gfm';\n\nimport { hashCode } from '../../utils/hash';\n\nexport enum ContentType {\n Text = 'text',\n TextArray = 'textArray',\n Html = 'html',\n Markdown = 'markdown',\n}\n\nexport interface TextContentProps {\n readonly text: string | string[];\n readonly className?: string;\n readonly type?: ContentType;\n readonly email?: string;\n}\nconst TextContent = ({\n text,\n className = 'inline text-base-contrast color-red-500 font-medium margin-block-start-1 margin-block-end-1',\n type = ContentType.Text,\n}: TextContentProps) => {\n switch (type) {\n case ContentType.Html: {\n const textString = Array.isArray(text) ? text.join('') : text;\n return (\n <p\n className={className}\n dangerouslySetInnerHTML={{ __html: textString }}\n />\n );\n }\n case ContentType.TextArray: {\n const textArray = !Array.isArray(text) ? [text] : text;\n return (\n <div className={className}>\n {textArray.map((item) => (\n <p className=\"my-2\" key={hashCode(item)}>{item}</p>\n ))}\n </div>\n );\n }\n case ContentType.Markdown: {\n const textString = Array.isArray(text) ? text.join('') : text;\n return (\n <div>\n <Markdown\n remarkPlugins={[remarkGfm]}\n components={{\n // define some formatting for the ai response\n p(props:any) {\n const { node, ...rest } = props;\n return (\n <p\n className=\"text-lg text-primary-contrast my-1\"\n {...rest}\n />\n );\n },\n ol(props:any) {\n const { node, ...rest } = props;\n return (\n <ol\n className=\"list-disc list-inside my-1\"\n {...rest}\n />\n );\n },\n ul(props:any) {\n const { node, ...rest } = props;\n return (\n <ul\n className=\"list-disc list-inside my-1\"\n {...rest}\n />\n );\n },\n li(props:any) {\n const { node, ...rest } = props;\n return <li className=\"text-md\" {...rest} />;\n },\n }}\n >\n {textString}\n </Markdown>\n </div>\n );\n }\n case ContentType.Text:\n default:\n return (\n <div className={className}>\n <p>{text}</p>\n </div>\n );\n }\n};\n\nexport default TextContent;\n","import { Anchor } from '@mantine/core';\nimport React from 'react';\n\nexport interface TextContentProps {\n readonly text: string | string[];\n readonly email?: string;\n readonly className?: string;\n}\n\nconst ContactWithEmailContent = ({\n text,\n email,\n className = 'inline color-ink font-medium margin-block-start-1 margin-block-end-1',\n}: TextContentProps) => {\n const textString = Array.isArray(text) ? text.join(' ') : text;\n return (\n <div className={className}>\n <span>\n {textString}\n {email && <Anchor href={`mailto:${email}`}>{` ${email}.`}</Anchor>}\n </span>\n </div>\n );\n};\n\nexport default ContactWithEmailContent;\n","import React, { useCallback } from 'react';\nimport { useRouter } from 'next/router';\nimport { showNotification } from '@mantine/notifications';\nimport TexturedSidePanel from '../Layout/TexturedSidePanel';\nimport LoginProvidersPanel from './LoginProvidersPanel';\nimport CredentialsLogin from './CredentialsLogin';\nimport TextContent from '../Content/TextContent';\nimport { LoginConfig } from './types';\nimport { GEN3_REDIRECT_URL } from '@gen3/core';\nimport ContactWithEmailContent from '../Content/ContactWithEmailContent';\n\nconst filterRedirect = (redirect: string | string[] | undefined) => {\n let redirectPath = '';\n if (Array.isArray(redirect)) {\n redirectPath = redirect[0];\n } else {\n redirectPath = redirect ?? '/';\n }\n return GEN3_REDIRECT_URL\n ? `${GEN3_REDIRECT_URL}/${redirectPath}`\n : redirectPath;\n};\n\nconst LoginPanel = (loginConfig: LoginConfig) => {\n const { image, topContent, bottomContent } = loginConfig;\n\n const router = useRouter();\n const {\n query: { referer },\n } = router;\n\n const handleFenceLoginSelected = useCallback(\n async (loginURL: string) => {\n router\n .push(`${loginURL}?redirect=${filterRedirect(referer)}`)\n .catch((e) => {\n showNotification({\n title: 'Login Error',\n message: `error logging in ${e.message}`,\n });\n });\n },\n [referer, router],\n );\n\n const handleCredentialsLogin = useCallback(async () => {\n await router.push(filterRedirect(referer));\n }, [referer, router]);\n\n return (\n <div className=\"grid grid-cols-6 w-full\">\n <TexturedSidePanel url={image} />\n <div className=\"relative col-span-4 mt-24 flex-col justify-center sm:prose-base lg:prose-lg xl:prose-xl 2xl:prose-xl w-full first:captialize first:font-bold\">\n {topContent?.map((content, index) => (\n <TextContent {...content} key={index} />\n ))}\n\n <LoginProvidersPanel handleLoginSelected={handleFenceLoginSelected} />\n\n {loginConfig?.showCredentialsLogin && (\n <CredentialsLogin handleLogin={handleCredentialsLogin} />\n )}\n\n {bottomContent?.map((content, index) =>\n content?.email ? (\n <ContactWithEmailContent {...content} key={index} />\n ) : (\n <TextContent {...content} key={index} />\n ),\n )}\n </div>\n <TexturedSidePanel url={image} />\n </div>\n );\n};\n\nexport default LoginPanel;\n","import { hideModal, useCoreDispatch, CoreDispatch } from '@gen3/core';\nimport { Button, Modal } from '@mantine/core';\nimport { ReactNode } from 'react';\n\ninterface ButtonOptions {\n onClick?: () => void;\n hideModalOnClick?: boolean;\n title: string;\n dataTestId: string;\n}\n\nconst isButtonOptions = (\n button: ButtonOptions | JSX.Element,\n): button is ButtonOptions => {\n return typeof button === 'object' && 'title' in button;\n};\n\n/**\n * Creates a generalized modal that can be used for a wide variety of purposes.\n * @param buttons - Mantine button options\n * @param dispatch - Dispatch hook to be used for state tracking\n */\nconst renderButtons = (\n buttons: Array<ButtonOptions | JSX.Element>,\n dispatch: CoreDispatch,\n): JSX.Element => {\n return (\n <div className=\"flex justify-end mt-2.5 gap-2\">\n {buttons.map((button) => {\n if (isButtonOptions(button)) {\n const { onClick, title, hideModalOnClick, dataTestId } = button;\n\n return (\n <Button\n data-testid={dataTestId}\n key={title}\n onClick={() => {\n if (onClick) {\n onClick();\n\n if (hideModalOnClick) {\n dispatch(hideModal());\n }\n } else {\n dispatch(hideModal());\n }\n }}\n className=\"!bg-primary hover:!bg-primary-darker\"\n >\n {title}\n </Button>\n );\n } else return button;\n })}\n </div>\n );\n};\n\ninterface Props {\n openModal: boolean;\n title: ReactNode;\n size?: string | number;\n children: ReactNode;\n leftButtons?: Array<ButtonOptions | JSX.Element>;\n buttons?: Array<ButtonOptions | JSX.Element>;\n withCloseButton?: boolean;\n onClose?: () => void;\n closeOnClickOutside?: boolean;\n closeOnEscape?: boolean;\n}\n\n/**\n * Creates a generalized modal that can be used for a wide variety of purposes.\n * @param openModal - Determines whether modal/drawer is opened\n * @param title - Modal title\n * @param size - Controls width of the content area, 'md' by default\n * @param children - Modal content\n * @param leftButtons - Mantine button component args for renderButtons component\n * @param buttons - Mantine button component args for renderButtons component\n * @param withCloseButton - Determines whether the close button should be rendered, true by default\n * @param onClose - Called when modal/drawer is closed\n * @param closeOnClickOutside - Determines whether the modal/drawer should be closed when user clicks on the overlay, true by default\n * @param closeOnEscape - Determines whether onClose should be called when user presses the escape key, true by default\n * @see https://mantine.dev/core/modal/\n * @returns a mantine modal with a built in button for closing the modal\n */\nexport const BaseModal= ({\n openModal,\n title,\n size,\n children,\n leftButtons,\n buttons,\n withCloseButton,\n onClose,\n closeOnClickOutside,\n closeOnEscape,\n}: Props) => {\n const dispatch = useCoreDispatch();\n return (\n <Modal\n opened={openModal}\n title={title}\n zIndex={400}\n onClose={() => {\n dispatch(hideModal());\n if (onClose) {\n onClose();\n }\n }}\n // TODO\n // styles={(theme) => ({\n // header: {\n // fontWeight: 600,\n // paddingBottom: '2.5em',\n // marginBottom: '2em',\n // backgroundColor: theme.colors.primary[4],\n // color: theme.colors['primary-contrast'][4],\n // },\n // close: {\n // color: 'base-darker',\n // }\n // })\n // }\n // styles={(theme) => ({\n // header: {\n // fontWeight: 600,\n // paddingBottom: '2.5em',\n // marginBottom: '2em',\n // backgroundColor: theme.colors.primary[4],\n // color: theme.colors['primary-contrast'][4],\n // },\n // close: {\n // color: 'base-darker',\n // },\n // })}\n // styles={(theme) => ({\n // header: {\n // fontWeight: 600,\n // paddingBottom: '2.5em',\n // marginBottom: '2em',\n // backgroundColor: theme.colors.primary[4],\n // color: theme.colors['primary-contrast'][4],\n // },\n // close: {\n // color: 'base-darker',\n // },\n // })}\n withinPortal={false}\n withCloseButton={withCloseButton ?? true}\n closeOnClickOutside={closeOnClickOutside ?? true}\n closeOnEscape={closeOnEscape ?? true}\n size={size}\n >\n {children}\n <div className=\"flex justify-between items-center\">\n {leftButtons && renderButtons(leftButtons, dispatch)}\n {buttons && renderButtons(buttons, dispatch)}\n </div>\n </Modal>\n );\n};\n","import { Text } from '@mantine/core';\nimport { useCookies } from 'react-cookie';\nimport { BaseModal } from './BaseModal';\nimport TextContent from '../Content/TextContent';\nimport { FirstTimeModalConfig } from './types';\n\ninterface FirstTimeModalProps {\n readonly openModal: boolean;\n config: FirstTimeModalConfig;\n}\n\nexport const FirstTimeModal = ({\n openModal,\n config,\n}: FirstTimeModalProps ): JSX.Element => {\n const [cookie, setCookie] = useCookies(['Gen3-first-time-use']);\n\n const handleAccept = () => {\n cookie['Gen3-first-time-use'] || setCookie('Gen3-first-time-use', true, {\n maxAge: 60 * 60 * 24 * (config?.expireDays ?? 365),\n });\n };\n\n return (\n <BaseModal\n title={\n <Text size=\"lg\" className=\"font-medium font-heading\">\n {config.title ?? 'Welcome to Gen3'}\n </Text>\n }\n openModal={openModal}\n size=\"60%\"\n buttons={[\n {\n title: 'Accept',\n onClick: handleAccept,\n hideModalOnClick: true,\n dataTestId: 'button-intro-warning-accept',\n },\n ]}\n withCloseButton={false}\n closeOnClickOutside={false}\n closeOnEscape={false}\n >\n <div className=\"border-y border-y-base-darker py-4 space-y-4 font-content\">\n <TextContent key={'first_time_use_modal'} {...config.content} />\n </div>\n </BaseModal>\n );\n};\n","import { useCallback } from 'react';\nimport { useRouter } from 'next/router';\nimport { Text } from '@mantine/core';\nimport { BaseModal } from './BaseModal';\n\nexport const SessionExpiredModal = ({\n openModal,\n}: {\n openModal: boolean;\n}): JSX.Element => {\n\n const router = useRouter();\n const onLogout = useCallback(() => {\n router.push('/Login');\n }, [router]);\n\n return (\n <BaseModal\n title={\n <Text size=\"lg\" className=\"font-medium font-heading\">\n Session Timeout\n </Text>\n }\n openModal={openModal}\n size=\"60%\"\n buttons={[\n {\n title: 'Login',\n onClick: onLogout,\n hideModalOnClick: true,\n dataTestId: 'button-session-timeout-logout',\n },\n ]}\n withCloseButton={false}\n closeOnClickOutside={false}\n closeOnEscape={false}\n >\n <div className=\"border-y border-y-base-darker py-4 space-y-4 font-content\">\n <p>\n Your session has expired or you are logged out. Please log in to\n continue.\n </p>\n </div>\n </BaseModal>\n );\n};\n","import { Text } from '@mantine/core';\nimport { BaseModal } from './BaseModal';\nimport FileSaver from 'file-saver';\nimport { APICredentials } from '../Profile/types';\nimport { LoadingOverlay } from '@mantine/core';\nimport { useClipboard } from '@mantine/hooks';\n\nexport const saveToFile = (\n savingStr: string,\n filename = 'credentials.json',\n) => {\n const blob = new Blob([savingStr], { type: 'text/json' });\n FileSaver.saveAs(blob, filename);\n};\n\ninterface CreateCredentialsAPIKeyModalProps {\n openModal: boolean;\n credentials: APICredentials;\n}\n\n/**\n * Creates a specialized modal that is a parto of the Credentials component on the profile page\n * @param openModal - State tracking to keep track of wether the modal should be shown or hidden\n * @param credentials - The new fence credential that is to be shown in the modal\n */\nexport const CreateCredentialsAPIKeyModal = ({\n openModal,\n credentials,\n}: CreateCredentialsAPIKeyModalProps): JSX.Element => {\n\n const clipboard = useClipboard({ timeout: 500 });\nconst copyToClipboard = (credentials:APICredentials) => {\n clipboard.copy(JSON.stringify(credentials));\n };\n\n return (\n <BaseModal\n title={\n <Text size=\"lg\" className=\"font-medium font-heading\">\n Created API Key\n </Text>\n }\n openModal={openModal}\n size=\"60%\"\n leftButtons={[\n {\n title: 'Close',\n hideModalOnClick: true,\n dataTestId: 'button-create-api-key-close',\n },\n ]}\n buttons={[\n {\n title: 'Download',\n hideModalOnClick: false,\n dataTestId: 'button-create-api-key-download',\n onClick: () => {\n saveToFile(JSON.stringify(credentials), 'credentials.json');\n },\n },\n {\n title: 'Copy',\n hideModalOnClick: false,\n dataTestId: 'button-create-api-key-copy',\n onClick: () => {\n copyToClipboard(credentials);\n },\n },\n ]}\n withCloseButton={true}\n closeOnClickOutside={false}\n closeOnEscape={false}\n >\n <div className=\"flex flex-col border-y border-y-base-darker py-4 space-y-4 font-content\">\n {\n credentials.api_key === '' && <LoadingOverlay visible={true} /> // pragma: allowlist-secret;\n }\n <p>\n This key is only shown once. Please copy or save it and store it in a\n safe place.\n </p>\n <div>\n <strong>Key ID:</strong> {credentials.key_id}\n </div>\n <div>\n <strong>API Key:</strong> {credentials.api_key.replace(/./g, '*')}\n </div>\n </div>\n </BaseModal>\n );\n};\n","import { Text } from '@mantine/core';\nimport { BaseModal } from './BaseModal';\n\nexport const NoAccessModal = ({\n openModal,\n }: {\n openModal: boolean;\n}): JSX.Element => {\n return (\n <BaseModal\n title={\n <Text size=\"lg\" className=\"font-medium\">\n Access Alert\n </Text>\n }\n openModal={openModal}\n buttons={[\n {\n title: 'Close',\n dataTestId: 'button-no-access-access-alert-close',\n },\n ]}\n >\n <div className=\"border-y border-y-base-darker p-4\">\n <Text size=\"sm\"> You don't have access to Commons.</Text>\n\n <Text size=\"sm\">\n Please request dbGaP access to the project{' ('}\n <a\n href=\"https://gdc.cancer.gov/access-data/obtaining-access-controlled-data\"\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"text-utility-link underline\"\n >\n click here for more information\n </a>\n ).\n </Text>\n </div>\n </BaseModal>\n );\n};\n","import React, { ReactElement, useMemo } from 'react';\nimport { useCookies } from 'react-cookie';\nimport {\n type CoreState,\n Modals,\n selectCurrentModal,\n showModal,\n useCoreDispatch,\n useCoreSelector,\n useGetCSRFQuery,\n useGetAuthzMappingsQuery,\n} from '@gen3/core';\nimport { FirstTimeModal } from './FirstTimeModal';\nimport { SessionExpiredModal } from './SessionExpiredModal';\nimport { ModalsConfig } from './types';\nimport { defaultComposer } from 'default-composer';\nimport { ContentType } from '../Content/TextContent';\nimport { useDeepCompareEffect } from 'use-deep-compare';\nimport { useIsAuthenticated } from '../../lib/session/session';\n\ninterface Gen3StandardModalsProviderProps {\n config: ModalsConfig;\n children: React.ReactNode;\n}\n\nconst getModal = (\n modal: Modals | string | null,\n config: ModalsConfig,\n): ReactElement | null => {\n let res: ReactElement | null = null;\n switch (modal) {\n case Modals.FirstTimeModal: {\n res = config.systemUseModal?.enabled ? (\n <FirstTimeModal openModal={true} config={config.systemUseModal} />\n ) : null;\n break;\n }\n case Modals.SessionExpireModal: {\n res = <SessionExpiredModal openModal={true} />;\n break;\n }\n }\n return res;\n};\nconst defaultConfig: ModalsConfig = {\n systemUseModal: {\n enabled: true,\n title: 'Welcome to Gen3',\n content: {\n text: [\n 'This is your first time using Gen3.',\n 'Please read and accept the terms of use.',\n ],\n type: ContentType.TextArray,\n },\n scrollToEnableAccept: true,\n expireDays: 365,\n },\n};\n\nconst Gen3ModalsProvider = ({\n config,\n children,\n}: Gen3StandardModalsProviderProps) => {\n useGetCSRFQuery(undefined, { refetchOnFocus: true });\n useGetAuthzMappingsQuery();\n\n const [cookie] = useCookies(['Gen3-first-time-use']);\n const dispatch = useCoreDispatch();\n const modal = useCoreSelector((state: CoreState) =>\n selectCurrentModal(state),\n );\n\n const modalsConfig = useMemo(\n () => defaultComposer(defaultConfig, config),\n [],\n );\n const { isAuthenticated } = useIsAuthenticated();\n\n useDeepCompareEffect(() => {\n if (!cookie['Gen3-first-time-use'] && modalsConfig.systemUseModal.enabled) {\n if (modalsConfig.systemUseModal.showOnlyOnLogin && !isAuthenticated)\n return;\n dispatch && dispatch(showModal({ modal: Modals.FirstTimeModal }));\n }\n }, [\n cookie['Gen3-first-time-use'],\n dispatch,\n modalsConfig.systemUseModal.enabled,\n ]);\n\n return (\n <div className=\"bg-base-max\">\n {modal && getModal(modal, modalsConfig)}\n {children}\n </div>\n );\n};\n\nexport default Gen3ModalsProvider;\n","// import { BinGuru } from 'binguru';\n\nimport { SummaryChart } from './types';\n\nexport const capitalize = (original: string): string => {\n if (original === undefined) {\n throw new Error('capitalize: original is undefined');\n }\n if (original.length === 0) {\n return original;\n }\n return original\n .split(' ')\n .map((word) => `${word.charAt(0).toUpperCase()}${word.slice(1)}`)\n .join(' ');\n};\n\nexport const truncateString = (str: string, n: number): string => {\n if (str.length > n) {\n return str.substring(0, n) + '...';\n } else {\n return str;\n }\n};\n\n// from https://stackoverflow.com/questions/33053310/remove-value-from-object-without-mutation\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport const removeKey = (key: any, { [key]: _, ...rest }) => rest;\n\nexport const processLabel = (label: string): string => {\n return capitalize(label);\n};\n\nexport const processRangeKeyLabel = (key: [number, number]): string => {\n return `${key[0]}-${key[1]}`;\n};\n\n/**\n * Computes the row span for each item in the charts object.\n *\n * @param { Record<string, SummaryChart>} charts - The charts object containing summary charts.\n * @param {number} [numCols=3] - The number of columns per row.\n * @returns {number[]} - An array of row spans for each item in the charts object.\n */\nexport const computeRowSpan = (\n charts: Record<string, SummaryChart>,\n numCols = 3,\n): Array<number> => {\n const numItems = Object.keys(charts).length;\n // compute the number of rows\n const numRows = Math.ceil(numItems / numCols);\n // compute the row span for the last row\n const numLastRow = numItems % numCols;\n\n let spans = new Array(numItems - numLastRow).fill(Math.floor(12 / numCols));\n spans = spans.concat(new Array(numLastRow).fill(Math.floor(12 / numLastRow)));\n return spans;\n};\n","import React, { useRef } from 'react';\nimport { useDeepCompareEffect } from 'use-deep-compare';\nimport { init, getInstanceByDom } from 'echarts';\nimport type { CSSProperties } from 'react';\nimport type { EChartsOption, ECharts, SetOptionOpts } from 'echarts';\n\nexport interface ReactEChartsProps {\n option: EChartsOption;\n style?: CSSProperties;\n settings?: SetOptionOpts;\n loading?: boolean;\n theme?: 'light' | 'dark';\n}\n\nconst ReactECharts = ({\n option,\n style,\n settings,\n loading,\n theme,\n}: ReactEChartsProps): JSX.Element => {\n const chartRef = useRef<HTMLDivElement>(null);\n\n useDeepCompareEffect(() => {\n // Initialize chart\n let chart: ECharts | undefined;\n if (chartRef.current !== null) {\n chart = init(chartRef.current, theme);\n }\n\n // Add chart resize listener\n // ResizeObserver is leading to a bit janky UX\n function resizeChart(event: any) {\n chart?.resize();\n }\n window.addEventListener('resize', resizeChart);\n\n // Return cleanup function\n return () => {\n chart?.dispose();\n window.removeEventListener('resize', resizeChart);\n };\n }, [theme]);\n\n useDeepCompareEffect(() => {\n // Update chart\n if (chartRef.current !== null) {\n const chart = getInstanceByDom(chartRef.current);\n chart?.setOption(option, settings);\n }\n }, [option, settings, theme]);\n\n useDeepCompareEffect(() => {\n // Update chart\n if (chartRef.current !== null) {\n const chart = getInstanceByDom(chartRef.current);\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n loading === true ? chart?.showLoading() : chart?.hideLoading();\n }\n }, [loading]);\n\n return (\n <div ref={chartRef} style={{ width: '100%', height: '100%', ...style }} />\n );\n};\n\nexport default ReactECharts;\n","import React, { useMemo } from 'react';\nimport { processLabel, truncateString } from '../utils';\nimport { ChartProps } from '../types';\nimport ReactECharts, { ReactEChartsProps } from './ReactECharts';\nimport { HistogramDataArray } from '@gen3/core';\nimport type { EChartsOption } from 'echarts';\n\ninterface BarChartData {\n value: number;\n name: string;\n}\n\nconst filterMissing = (facetData: any) =>\n facetData.filter((d: any) => d.key !== '_missing');\n\nconst processChartData = (\n facetData: HistogramDataArray,\n maxBins = 100,\n): BarChartData[] => {\n if (!facetData) {\n return [];\n }\n const data = filterMissing(facetData);\n\n const results = data.slice(0, maxBins).map((d: any) => ({\n value: d.count,\n name: truncateString(processLabel(d.key), 35),\n }));\n return results;\n};\n\nconst processAxis = (facetData: HistogramDataArray, maxBins = 100) => {\n const data = filterMissing(facetData);\n const categories = data\n .slice(0, maxBins)\n .map((d: any) => truncateString(processLabel(d.key), 35));\n return {\n yAxis: [\n {\n type: 'value',\n },\n ],\n xAxis: [\n {\n type: 'category',\n data: categories,\n },\n ],\n } as EChartsOption;\n};\n\nconst BarChart = ({ data }: ChartProps) => {\n const chartDefinition = useMemo((): ReactEChartsProps['option'] => {\n return {\n grid: [\n //TODO: make this configurable\n {\n show: false,\n left: '1%',\n top: 10,\n right: '1%',\n bottom: 7,\n containLabel: true,\n },\n ],\n tooltip: {\n trigger: 'item',\n },\n ...processAxis(data),\n series: [{ type: 'bar', data: processChartData(data) }],\n };\n }, [data]);\n\n return (\n <div className=\"w-full h-64\">\n <ReactECharts option={chartDefinition} />\n </div>\n );\n};\n\nexport default BarChart;\n","import React, { useMemo } from 'react';\nimport { processLabel, truncateString } from '../utils';\nimport ReactECharts, { ReactEChartsProps } from './ReactECharts';\nimport { ChartProps } from '../types';\n\ninterface PieChartData {\n value: number;\n name: string;\n}\n\nconst processChartData = (\n facetData: Record<string, any>,\n maxBins = 100,\n): PieChartData[] => {\n if (!facetData) {\n return [];\n }\n\n const data = facetData.filter((d: any) => d.key !== '_missing');\n\n const results = data.slice(0, maxBins).map((d: any) => ({\n value: d.count,\n name: truncateString(processLabel(d.key), 35),\n }));\n return results;\n};\n\nconst PieChart = ({ data }: ChartProps) => {\n const chartDefinition = useMemo((): ReactEChartsProps['option'] => {\n return {\n label: {\n show: true,\n fontSize: '14',\n },\n emphasis: {\n label: {\n show: true,\n fontSize: '14',\n },\n },\n tooltip: {\n trigger: 'item',\n },\n series: [\n {\n type: 'pie',\n radius: '60%',\n data: processChartData(data),\n label: {\n fontSize: '14',\n fontWeight: 'bold',\n overflow: 'break',\n },\n },\n ],\n };\n }, [data]);\n\n return (\n <div className=\"w-full h-64\">\n <ReactECharts option={chartDefinition} />\n </div>\n );\n};\n\nexport default PieChart;\n","import React, { useMemo } from 'react';\nimport { processLabel, truncateString } from '../utils';\nimport ReactECharts, { ReactEChartsProps } from './ReactECharts';\nimport { HistogramDataArray, HistogramData } from '@gen3/core';\nimport { ChartProps } from '../types';\n\ninterface DonutChartData {\n value: number;\n name: string;\n}\n\nconst processChartData = (\n facetData: HistogramDataArray,\n maxBins = 100,\n): DonutChartData[] => {\n if (!facetData) {\n return [];\n }\n const data = facetData.filter((d: HistogramData) => d.key !== '_missing');\n\n const results = data.slice(0, maxBins).map((d: any) => ({\n value: d.count,\n name: truncateString(processLabel(d.key), 35),\n }));\n return results;\n};\n\nconst DonutChart = ({ data }: ChartProps) => {\n const chartDefinition = useMemo((): ReactEChartsProps['option'] => {\n return {\n legend: {\n type: 'scroll',\n orient: 'vertical',\n align: 'right',\n right: 10,\n top: 20,\n bottom: 20,\n },\n tooltip: {\n trigger: 'item',\n },\n series: [\n {\n type: 'pie',\n radius: ['30%', '60%'],\n data: processChartData(data),\n label: {\n show: false,\n position: 'center',\n },\n labelLine: {\n show: false,\n },\n },\n ],\n };\n }, [data]);\n\n return (\n <div className=\"w-full h-64\">\n <ReactECharts option={chartDefinition} />\n </div>\n );\n};\n\nexport default DonutChart;\n","import React, {useMemo} from 'react';\nimport {processLabel, truncateString} from '../utils';\nimport { ChartProps } from '../types';\nimport ReactECharts, { ReactEChartsProps} from './ReactECharts';\nimport { HistogramData, HistogramDataArray } from '@gen3/core';\n\ninterface BarChartData {\n data: number[];\n name: string;\n type: 'bar';\n stack: string;\n label: {\n show: boolean;\n };\n}\n\nconst ExtractDataCount = (d:HistogramData, _:number | undefined = undefined) : number => d.count;\nconst ExtractDataPercent = (d:HistogramData, total?:number) : number => total? Math.round((((d.count / total) * 100.0) + Number.EPSILON)*100)/100 : 0;\n\nconst processChartData = (\n facetData: HistogramDataArray,\n valueType = 'count',\n total?: number,\n maxBins = 100,\n) : BarChartData[] => {\n\n if (!facetData) {\n return [];\n }\n const data =facetData.filter((d:any) => d.key !== '_missing');\n\n const dataExtractor = valueType === 'count' ? ExtractDataCount : ExtractDataPercent;\n\n const results = data.slice(0, maxBins)\n .map((d:any) => ({ // TODO: fix type of d\n data: [dataExtractor(d, total)] as number[],\n name: truncateString(processLabel(d.key), 35),\n type: 'bar' as const,\n stack: 'value',\n label: {\n show: true\n },\n }));\n return results;\n};\n\nconst HorizontalBarChart = ({ data, valueType, total } : ChartProps) => {\n const chartData = processChartData(data, valueType, total);\n\n const chartDefinition = useMemo(() : ReactEChartsProps['option'] => {\n return {\n tooltip: {\n trigger: 'axis',\n axisPointer: {\n // Use axis to trigger tooltip\n type: 'shadow' // 'shadow' as default; can also be 'line' or 'shadow'\n }\n },\n legend: {\n orient: 'vertical',\n left: '73%',\n type: 'scroll',\n right: 15,\n },\n grid: {\n left: '0%',\n right: '30%',\n bottom: '25%',\n containLabel: true,\n height: '50%',\n },\n xAxis: {\n type: 'value',\n max: 'dataMax',\n },\n yAxis: {\n type: 'category',\n data: ['']\n },\n series: chartData,\n\n }; }, [chartData]);\n\n return (\n <div className=\"w-full h-64\">\n <ReactECharts option={chartDefinition} />\n </div>\n );\n};\n\nexport default HorizontalBarChart;\n","import { RenderFactoryTypedInstance } from '../../utils/RendererFactory';\nimport { ChartProps } from './types';\nimport BarChart from './echarts/BarChart';\nimport PieChart from './echarts/PieChart';\nimport DonutChart from './echarts/DonutChart';\nimport HorizontalBarChart from './echarts/HorizontalBarChart';\n\nconst DefaultChartCatalog = {\n chart: {\n bar: BarChart,\n horizontalStacked: HorizontalBarChart,\n fullPie: PieChart,\n donut: DonutChart,\n },\n};\n\nlet instance: RenderFactoryTypedInstance<ChartProps> | undefined = undefined;\n\nconst ChartRendererFactory = (): RenderFactoryTypedInstance<ChartProps> => {\n if (!instance) {\n instance = new RenderFactoryTypedInstance<ChartProps>();\n instance.registerRendererCatalog(DefaultChartCatalog);\n }\n return instance;\n};\n\nexport default ChartRendererFactory;\n","import React from 'react';\nimport { ChartProps } from './types';\nimport ChartRendererFactory from './ChartRendererFactory';\n\n/** createChart selects which type of chart element to create depending on the\n * values in the exploration page config file.\n */\nexport const createChart = (\n type: string,\n chartProps: ChartProps,\n parameters?: Record<string, any>,\n): React.ReactNode => {\n // TODO: add default chart chart for missing chart type\n const element = ChartRendererFactory().getRenderer('chart', type);\n\n return element({ ...chartProps }, parameters);\n};\n","import { fieldNameToTitle, AggregationsData } from '@gen3/core';\n//import { MdClose as CloseIcon } from 'react-icons/md';\n//import { useDeepCompareMemo } from 'use-deep-compare';\n\nimport {\n // ActionIcon,\n Card,\n Grid,\n Group,\n Text,\n LoadingOverlay,\n} from '@mantine/core';\nimport { createChart } from './createChart';\nimport { SummaryChart } from './types';\n\nimport { computeRowSpan } from './utils';\n\nconst DEFAULT_COLS = 3;\n\nexport type ChartDataConverter = (\n data: Record<string, number>,\n) => Record<string, number>;\n\ninterface ChartsProps {\n index: string;\n charts: Record<string, SummaryChart>;\n counts?: number;\n data: AggregationsData;\n isSuccess: boolean;\n isError?: boolean;\n numCols?: number;\n}\n\n//The Charts component maps the data from ChartsProps into a grid of createChart() ReactNodes\nconst Charts = ({\n index,\n charts,\n data,\n counts,\n isSuccess,\n numCols = DEFAULT_COLS,\n}: ChartsProps) => {\n const spans = computeRowSpan(charts, numCols);\n\n return (\n <Grid className=\"w-full mx-2\">\n {data &&\n Object.keys(charts).map((field, index) => (\n <Grid.Col span={spans[index]} key={`${index}-charts-${field}-col`}>\n <Card shadow={'md'}>\n <Card.Section inheritPadding py=\"xs\">\n <Group justify=\"space-between\">\n <Text fw={900}>\n {charts[field].title ?? fieldNameToTitle(field)}\n </Text>\n {/* // TODO: handle close/hide chart\n <ActionIcon>\n <CloseIcon size=\"1rem\" />\n </ActionIcon>\n */}\n </Group>\n </Card.Section>\n <LoadingOverlay visible={!isSuccess} />\n {createChart(charts[field].chartType, {\n data: data === undefined ? [] : data[field],\n total: counts ?? 1,\n valueType: charts[field].valueType ?? 'count',\n })}\n </Card>\n </Grid.Col>\n ))}\n </Grid>\n );\n};\n\nexport default Charts;\n","import dynamic from 'next/dynamic';\nimport { ReactNode } from 'react';\nimport { JSONArray } from '@gen3/core';\n\n\nexport interface ChartTitleBarProps {\n readonly title?: ReactNode;\n readonly filename: string;\n readonly divId: string;\n readonly jsonData?: JSONArray;\n}\n\nconst ChartTitleBar: React.FC<ChartTitleBarProps> = ({\n divId,\n title,\n filename,\n jsonData,\n}: ChartTitleBarProps) => {\n return (\n <div className=\"flex justify-between items-center\">\n {title}\n </div>\n );\n};\n\nexport default ChartTitleBar;\n","/**\n * A BarChart for Enumerated Facets. The as the chart is wrapped from EnumFacet it does not\n * require the Core Data hooks.\n */\nimport React from 'react';\nimport { useEffect, useState } from 'react';\nimport { Box, Loader, Tooltip } from '@mantine/core';\nimport { useElementSize } from '@mantine/hooks';\nimport {\n VictoryBar,\n VictoryChart,\n VictoryContainer,\n VictoryTheme,\n Bar,\n VictoryAxis,\n VictoryStack,\n VictoryTooltip,\n} from 'victory';\nimport { useMantineTheme } from '@mantine/core';\nimport ChartTitleBar from './ChartTitleBar';\nimport { capitalize } from './utils';\nimport { fieldNameToTitle, EnumFilterValue } from '@gen3/core';\n\nconst maxValuesToDisplay = 7;\n\ninterface FacetChartProps {\n readonly field: string;\n readonly data: Record<string, number>;\n readonly selectedEnums: EnumFilterValue;\n readonly isSuccess: boolean;\n readonly height?: number;\n readonly showTitle?: boolean;\n readonly maxBins?: number;\n readonly valueLabel?: string;\n}\n\n// from https://stackoverflow.com/questions/33053310/remove-value-from-object-without-mutation\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst removeKey = (key : string| number, { [key]: _, ...rest }) : Record<string|number, any> => rest;\n\nconst processChartData = (\n facetData: Record<string|number, any>,\n selectedEnums: EnumFilterValue,\n maxBins = 100,\n) => {\n const data = removeKey('_missing', facetData);\n\n const results = Object.keys(data)\n .filter((d : string| number) =>\n !selectedEnums || selectedEnums.length === 0\n ? d\n : selectedEnums.includes(d),\n )\n .slice(0, maxBins)\n .map((d) => ({\n x: processLabel(d),\n y: data[d],\n }));\n return results.reverse();\n};\n\nexport const EnumFacetChart: React.FC<FacetChartProps> = ({\n field,\n data,\n selectedEnums,\n isSuccess,\n height,\n showTitle = true,\n maxBins = maxValuesToDisplay,\n valueLabel = 'Cases',\n}: FacetChartProps) => {\n const [chart_data, setChartData] = useState<{x:string, y:any}[]>([]);\n const { ref, width } = useElementSize();\n\n useEffect(() => {\n if (isSuccess) {\n const cd = processChartData(data, selectedEnums, maxBins);\n setChartData(cd);\n } else {\n setChartData([]);\n }\n }, [data, selectedEnums, field, isSuccess, maxBins]);\n\n // Create unique ID for this chart\n const chartDivId = `${field}_${Math.floor(Math.random() * 100)}`;\n\n return (\n <div ref={ref}>\n {showTitle ? (\n <ChartTitleBar\n title={fieldNameToTitle(field)}\n divId={chartDivId}\n filename={field}\n />\n ) : null}\n\n {isSuccess && chart_data && chart_data.length > 0 ? (\n <EnumBarChart\n data={chart_data}\n height={height}\n width={width * 2.2}\n label={`# of ${valueLabel}`}\n unitLabel={valueLabel}\n />\n ) : (\n <div className=\"flex flex-row items-center justify-center w-100\">\n <Loader color=\"chart\" size={60} />\n </div>\n )}\n </div>\n );\n};\n\nexport const processLabel = (label: string): string => {\n const tokens = label.split(' ');\n const capitalizedTokens = tokens.map((s) => capitalize(s));\n return capitalizedTokens.join(' ');\n};\n\ninterface EnumBarChartTooltipProps {\n readonly x?: number;\n readonly y?: number;\n readonly datum?: {\n y: number;\n x: string;\n };\n readonly unitLabel?: string;\n}\n\nconst EnumBarChartTooltip: React.FC<EnumBarChartTooltipProps> = ({\n x,\n y,\n datum,\n unitLabel = 'Cases',\n}: EnumBarChartTooltipProps) => {\n const theme = useMantineTheme();\n return (\n <g style={{ pointerEvents: 'none' }}>\n <foreignObject x={x} y={y}>\n <Tooltip\n label={\n <React.Fragment>\n <b>{datum?.x}</b>\n <p>\n {datum?.y.toLocaleString()} {unitLabel}\n </p>\n </React.Fragment>\n }\n withArrow\n opened\n withinPortal\n arrowSize={10}\n style={{\n fontSize: 12,\n backgroundColor: theme.colors.accent[1],\n color: theme.colors.base[9],\n }}\n >\n <Box></Box>\n </Tooltip>\n </foreignObject>\n </g>\n );\n};\n\ninterface EnumBarChartVictoryLabelProps {\n readonly x?: number;\n readonly y?: number;\n readonly text?: string;\n}\n\nconst EnumBarChartVictoryLabel: React.FC<EnumBarChartVictoryLabelProps> = ({\n x = 0,\n y = 0,\n text,\n}: EnumBarChartVictoryLabelProps) => {\n return (\n <foreignObject x={0} y={y - 26} width={'100%'} height=\"25\">\n <div\n style={{\n paddingTop: 2,\n paddingLeft: x + 12,\n paddingRight: 45,\n width: '100%',\n height: '100%',\n position: 'relative',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n fontSize: 23,\n fontFamily: 'Noto Sans, sans-serif',\n }}\n >\n {text}\n </div>\n </foreignObject>\n );\n};\n\ninterface EnumBarChartData {\n x: string;\n y: number;\n}\n\ninterface BarChartProps {\n readonly data: EnumBarChartData[];\n readonly width?: number;\n readonly height?: number;\n readonly label: string;\n readonly unitLabel?: string;\n}\n\nconst EnumBarChart: React.FC<BarChartProps> = ({\n data,\n height,\n width,\n label,\n unitLabel,\n}: BarChartProps) => {\n const max = Math.max(...data.map((d) => d.y));\n const formatter = Intl.NumberFormat('en', { notation: 'compact' });\n const theme = useMantineTheme();\n\n return (\n <VictoryChart\n domainPadding={[data.length === 2 ? 100 : 28, 0]}\n theme={VictoryTheme.material}\n width={width}\n height={height}\n containerComponent={<VictoryContainer role=\"figure\" />}\n >\n <VictoryAxis\n tickLabelComponent={<EnumBarChartVictoryLabel />}\n style={{\n grid: { stroke: 'none' },\n ticks: { size: 0 },\n axis: { strokeWidth: 0 },\n }}\n />\n\n <VictoryAxis\n dependentAxis\n style={{\n grid: { stroke: 'none' },\n axisLabel: { padding: 30, fontSize: 20, fontWeight: 'bold' },\n tickLabels: { fontSize: 18 },\n }}\n tickCount={3}\n tickFormat={(t) => formatter.format(t)}\n label={label}\n crossAxis={false}\n />\n\n <VictoryStack>\n <VictoryBar\n horizontal\n labels={() => ''}\n labelComponent={\n <VictoryTooltip\n flyoutComponent={<EnumBarChartTooltip unitLabel={unitLabel} />}\n />\n }\n style={{\n data: {\n fill: theme.colors.chart[6],\n stroke: theme.colors.chart[6],\n strokeWidth: 1,\n width: 22,\n },\n }}\n alignment=\"end\"\n data={data}\n x=\"x\"\n y=\"y\"\n dataComponent={\n <Bar\n tabIndex={0}\n ariaLabel={({ datum }) => `x: ${datum.x}, y: ${datum.y}`}\n // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/issues/756 https://www.w3.org/TR/graphics-aria-1.0/#graphics-symbol\n // eslint-disable-next-line\n role=\"graphics-symbol\"\n />\n }\n />\n <VictoryBar\n data={data.map((d) => ({ x: d.x, y: max - d.y }))}\n x=\"x\"\n y=\"y\"\n style={{\n data: {\n fill: theme.colors.base[1],\n stroke: theme.colors.base[7],\n strokeWidth: 1,\n width: 22,\n },\n }}\n alignment=\"end\"\n />\n </VictoryStack>\n </VictoryChart>\n );\n};\n","import React, { ReactElement } from 'react';\nimport { Card, Text, Group, ThemeIcon } from '@mantine/core';\nimport { BsExclamationTriangle as IconAlertTriangle } from 'react-icons/bs';\ninterface ErrorCardProps {\n message: string;\n icon?: ReactElement;\n}\n\ninterface ErrorMessageProps {\n message: string;\n}\n\nconst ErrorMessage: React.FunctionComponent<ErrorMessageProps> = ({\n message,\n}: ErrorMessageProps): ReactElement => (\n <Text color=\"utility.4\" size=\"md\" fw=\"md\">\n {message}\n </Text>\n);\n\ninterface CardContainerProps {\n children: React.ReactNode;\n}\n\nconst CardContainer: React.FunctionComponent<CardContainerProps> = ({\n children,\n}: CardContainerProps): ReactElement => (\n <div className=\"flex justify-center pt-10 items-center\">\n <Card\n shadow=\"sm\"\n p=\"lg\"\n className=\"bg-base-lightest border-2 border-base-lighter\"\n >\n <Group align=\"center\">\n <ThemeIcon color=\"utility.4\" variant=\"outline\" radius=\"xl\" size=\"lg\">\n <IconAlertTriangle size={24} />\n </ThemeIcon>\n {children}\n </Group>\n </Card>\n </div>\n);\nconst ErrorCard: React.FunctionComponent<ErrorCardProps> = ({\n message,\n}: ErrorCardProps): ReactElement => (\n <CardContainer>\n <ErrorMessage message={message} />{' '}\n </CardContainer>\n);\n\nexport default ErrorCard;\n","import {\n EnumFilterValue,\n FacetDefinition,\n HistogramData,\n HistogramDataArray,\n Includes,\n Operation,\n selectIndexedFilterByName,\n isOperationWithField,\n updateCohortFilter,\n useCoreDispatch,\n useCoreSelector,\n AggregationsData,\n CoreState,\n} from '@gen3/core';\nimport {\n ClearFacetFunction,\n FromToRange,\n UpdateFacetFilterFunction,\n FieldToName,\n} from './types';\nimport { isArray } from 'lodash';\nimport { TabConfig } from '../../features/CohortBuilder/types';\n\nexport const getAllFieldsFromFilterConfigs = (\n filterTabConfigs: ReadonlyArray<TabConfig>,\n) =>\n filterTabConfigs.reduce((acc, cur) => acc.concat(cur.fields), [] as string[]);\n\ninterface ExplorerResultsData {\n [key: string]: Record<string, any>;\n}\nexport const processBucketData = (\n data?: HistogramDataArray,\n): Record<string, number> => {\n if (!data) return {};\n\n return data.reduce((acc: Record<string, number>, curr: HistogramData) => {\n if (isArray(curr.key)) return acc; // remove this line if you want to support array keys\n acc[curr.key] = curr.count;\n return acc;\n }, {} as Record<string, number>);\n};\n\nexport const processRangeData = (\n data?: HistogramDataArray,\n): Record<string, number> => {\n if (!data) return {};\n\n return data.reduce((acc: Record<string, number>, curr: HistogramData) => {\n // TODO handle this better when keys are undefined\n acc[`${curr.key?.[0]?.toString()}-${curr.key?.[1]?.toString()}`] =\n curr.count;\n return acc;\n }, {} as Record<string, number>);\n};\n\n/**\n * Update the facet filter for an enumeration facet\n * @param fieldName - the name of the field\n * @param values - the values to filter on\n * @param updateFacetFilters - the function to update the facet filters\n * @param clearFilters\n */\nexport const updateFacetEnum = (\n fieldName: string,\n values: EnumFilterValue,\n updateFacetFilters: UpdateFacetFilterFunction,\n clearFilters: ClearFacetFunction,\n): void => {\n if (values === undefined) return;\n if (values.length > 0) {\n // TODO: Assuming Includes by default but this might change to Include|Excludes\n updateFacetFilters(fieldName, {\n operator: 'in',\n field: fieldName,\n operands: values,\n } as Includes);\n }\n // no values remove the filter\n else {\n clearFilters(fieldName);\n }\n};\n\n// Process facets to determine if they are enum, exact, or range\nexport const classifyFacets = (\n data: AggregationsData,\n index: string,\n fieldMapping: ReadonlyArray<FieldToName>,\n facetDefinitionsFromConfig: Record<string, FacetDefinition>,\n): Record<string, FacetDefinition> => {\n if (typeof data !== 'object' || data === null) return {};\n\n // otherwise enum facet\n return Object.entries(data as AggregationsData).reduce(\n (\n acc: Record<string, FacetDefinition>,\n [fieldKey, value]: [string, HistogramDataArray],\n ) => {\n if (!value) return acc; // return if no data, which prevents an application crash\n const dataField = fieldKey.split('.')?.slice(-1)[0] ?? fieldKey;\n // check if range facet\n const type =\n value.length === 1 && isArray(value[0].key) ? 'range' : 'enum';\n const facetName =\n fieldMapping.find((x) => x.field === fieldKey)?.name ?? undefined;\n\n const facetDef = facetDefinitionsFromConfig[fieldKey] ?? {};\n return {\n ...acc,\n [fieldKey]: {\n field: fieldKey,\n dataField: dataField, // get the last part of nested field name\n // this is to maintain compatibility with gitops but should be deprecated\n type: facetDef.type ?? type,\n index: index,\n description: facetDef.description ?? 'Not Available',\n label: facetDef.description ?? facetName,\n // assumption is that the initial data has the min and max values\n range:\n facetDef.range ?? type === 'range'\n ? {\n minimum: Math.floor(Number(value[0].key[0])),\n maximum: Math.ceil(Number(value[0].key[1])),\n }\n : undefined,\n } as FacetDefinition,\n };\n },\n {} as Record<string, FacetDefinition>,\n );\n};\n\nexport const buildNested = (\n field: string,\n leafOperand: Operation,\n): Operation => {\n if (!field.includes('.')) {\n if (isOperationWithField(leafOperand))\n return {\n ...leafOperand,\n field: field,\n } as Operation;\n else return leafOperand;\n }\n\n const splitFieldArray = field.split('.');\n const rootField = splitFieldArray.shift();\n\n return {\n operator: 'nested',\n path: rootField ?? '',\n operand: buildNested(splitFieldArray.join('.'), leafOperand),\n };\n};\n\n/**\n * Update Guppy filters: process nested fields and have the final\n * leaf be filtered\n * @param index\n */\nexport const useUpdateFilters = (index: string) => {\n const dispatch = useCoreDispatch();\n // update the filter for this facet\n\n return (field: string, filter: Operation) => {\n dispatch(\n updateCohortFilter({\n index: index,\n field: field,\n filter: buildNested(field, filter),\n }),\n );\n };\n};\nexport const useGetFacetFilters = (\n index: string,\n field: string,\n): Operation | undefined => {\n return useCoreSelector((state: CoreState) =>\n selectIndexedFilterByName(state, index, field),\n );\n};\n\n/**\n * Given an operation, determine if range is open or closed and extract\n * the range values and operands as a NumericRange\n * @param filter - operation to test\n */\nexport const extractRangeValues = <T extends string | number>(\n filter?: Operation,\n): FromToRange<T> | undefined => {\n if (filter !== undefined) {\n switch (filter.operator) {\n case '>':\n case '>=':\n return {\n from: filter.operand as T,\n fromOp: filter.operator,\n };\n case '<':\n case '<=':\n return {\n to: filter.operand as T,\n toOp: filter.operator,\n };\n case 'and': {\n const a = extractRangeValues<T>(filter.operands[0]);\n const b = extractRangeValues<T>(filter.operands[1]);\n return a && b ? { ...a, ...b } : a ?? b ?? undefined;\n }\n default:\n return undefined;\n }\n } else {\n return undefined;\n }\n};\n\nexport const convertToStringArray = (\n inputArray: (string | number)[],\n): string[] => inputArray.map(String);\n","import {\n type EnumFilterValue,\n useCoreDispatch,\n removeCohortFilter,\n useCoreSelector,\n selectIndexedFilterByName,\n extractEnumFilterValue,\n CoreState,\n} from '@gen3/core';\n\nimport { FromToRange } from './types';\nimport { extractRangeValues } from './utils';\n\n// Core ClearFilters hook\nexport const useClearFilters = (index: string) => {\n const dispatch = useCoreDispatch();\n\n return (field: string) => {\n dispatch(removeCohortFilter({ index, field }));\n };\n};\n\n/**\n * Selector for the facet values (if any) from the current cohort\n * @param field - field name to find filter for\n * @return Value of Filters or undefined\n */\nexport const useExtractEnumFilterValues = (\n index: string,\n field: string,\n): EnumFilterValue => {\n const filter = useCoreSelector((state : CoreState) =>\n selectIndexedFilterByName(state, index, field),\n );\n return filter ? extractEnumFilterValue(filter) : [];\n};\n\n\nexport const useExtractRangeFilterValues = (\n index: string,\n field: string,\n): FromToRange<string | number> | undefined => {\n const filter = useCoreSelector((state : CoreState) =>\n selectIndexedFilterByName(state, index, field),\n );\n return filter ? extractRangeValues(filter) : undefined;\n};\n","import tw from 'tailwind-styled-components';\n\nexport const FacetIconButton = tw.button`\ntext-base-max\nfont-bold\npy-2\npx-1\nrounded\ninline-flex\nitems-center\nhover:text-primary-lightest\n`;\n\nexport const controlsIconStyle =\n 'text-primary-contrast-darker hover:text-primary-lighter';\n\nexport const FacetText = tw.div`\ntext-secondary-contrast font-heading font-semibold text-[1.25em] break-words py-2\n`;\n\nexport const FacetHeader = tw.div`\nflex items-start justify-between flex-nowrap bg-secondary px-1.5\n`;\n","import { ReactNode, useState } from 'react';\nimport { Tooltip } from '@mantine/core';\n\ntype OverflowTooltippedLabelProps = {\n children: ReactNode;\n label: string;\n className?: string;\n};\n\nconst OverflowTooltippedLabel = ({\n children,\n label,\n className = 'flex-grow font-heading text-md pt-0.5',\n}: OverflowTooltippedLabelProps): JSX.Element => {\n const [showTooltip, setShowTooltip] = useState(false);\n\n return (\n <Tooltip\n label={label}\n disabled={!showTooltip}\n position=\"top-start\"\n offset={5}\n multiline\n withArrow\n arrowOffset={20}\n classNames={{\n tooltip:\n 'bg-base-min bg-opacity-90 text-base-contrast-min shadow-lg font-content font-medium text-xs',\n arrow: 'bg-base-min bg-opacity-90',\n }}\n >\n <div\n className={`${className} truncate ... `}\n ref={(el) => {\n if (el) {\n if (el.clientWidth < el.scrollWidth) {\n setShowTooltip(true);\n } else {\n setShowTooltip(false);\n }\n }\n }}\n >\n {children}\n </div>\n </Tooltip>\n );\n};\n\nexport default OverflowTooltippedLabel;\n","export const DEFAULT_VISIBLE_ITEMS = 6;\nconst RANGE_DECIMAL_PRECISION = 1;\n\nexport const DEFAULT_MINIMUM = 0;\nexport const DEFAULT_MAXIMUM = 100;\n","import { Button } from '@mantine/core';\nimport {\n PiCaretUpDownFill as Selector,\n PiCaretDownFill as SortDesIcon,\n PiCaretUpFill as SortAscIcon,\n} from 'react-icons/pi';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { SortType } from './types';\n\ninterface FacetSortPanelProps {\n sortType: SortType;\n valueLabel: string;\n setSort: (sort: SortType) => void;\n field: string;\n}\n\nconst sortTypeToAriaDescription = (\n sortTypeAndDirection: SortType,\n valueLabel: string,\n field: string,\n) => {\n if (sortTypeAndDirection.type === 'alpha') {\n return sortTypeAndDirection.direction === 'asc'\n ? `The ${field} names are now sorted alphabetically ascending`\n : `The ${field} names are now sorted alphabetically descending`;\n } else {\n return sortTypeAndDirection.direction === 'asc'\n ? `The ${field} ${valueLabel} are now sorted numerically ascending`\n : `The ${field} ${valueLabel} are now sorted numerically descending`;\n }\n};\n\n/**\n * FacetCards \"sort\" header supporting sort by A-Z or by Value both ascending and descending\n * @param sortType - current sort type\n * @param valueLabel - Value labels, typically \"case\" \"file\"\n * @param setSort - sets the sort type and direction\n * @param field - specifies the facet table name\n */\nconst FacetSortPanel: React.FC<FacetSortPanelProps> = ({\n sortType,\n valueLabel,\n setSort,\n field,\n}: FacetSortPanelProps) => {\n const liveRegionRef = useRef<any>(null);\n const [sortingStatus, setSortingStatus] = useState('');\n useEffect(() => {\n if (sortingStatus && liveRegionRef?.current) {\n liveRegionRef.current.textContent = sortingStatus;\n }\n }, [sortingStatus]);\n\n const [NameSortIcon, nameIconSize] =\n sortType.type === 'alpha'\n ? sortType.direction === 'asc'\n ? [SortAscIcon, '0.75rem']\n : [SortDesIcon, '0.75rem']\n : [Selector, '1rem'];\n\n const [ValueSortIcon, valueIconSize] =\n sortType.type === 'value'\n ? sortType.direction === 'asc'\n ? [SortAscIcon, '0.75rem']\n : [SortDesIcon, '0.75rem']\n : [Selector, '1rem'];\n\n return (\n <div className=\"flex flex-row items-center justify-between flex-wrap py-1 px-2 mb-1 border-b-2\">\n <Button\n className=\"pl-0 ml-0 api-hovered:accent\"\n variant=\"transparent\"\n size=\"compact-xs\"\n color=\"base-contrast.5\"\n onClick={() => {\n const direction =\n sortType.type === 'alpha' && sortType.direction === 'asc'\n ? 'dsc'\n : 'asc';\n const sortObj: SortType = {\n type: 'alpha',\n direction,\n };\n setSort(sortObj);\n setSortingStatus(sortTypeToAriaDescription(sortObj, 'Name', field));\n }}\n rightSection={<NameSortIcon size={nameIconSize} aria-hidden=\"true\" />}\n aria-label=\"Sort name alphabetically\"\n >\n Name\n </Button>\n <Button\n className=\"pr-0 mr-0\"\n variant=\"transparent\"\n size=\"compact-xs\"\n color=\"base-contrast.5\"\n onClick={() => {\n const direction =\n sortType.type === 'value' && sortType.direction === 'asc'\n ? 'dsc'\n : 'asc';\n const sortObj: SortType = {\n type: 'value',\n direction,\n };\n setSort(sortObj);\n setSortingStatus(\n sortTypeToAriaDescription(sortObj, valueLabel, field),\n );\n }}\n rightSection={<ValueSortIcon size={valueIconSize} aria-hidden=\"true\" />}\n aria-label={`Sort ${valueLabel} numerically`}\n >\n {valueLabel}\n </Button>\n\n <span\n id={`${field}-liveRegion`}\n aria-live=\"polite\"\n ref={liveRegionRef}\n className=\"sr-only\"\n />\n </div>\n );\n};\n\nexport default FacetSortPanel;\n","import React from 'react';\nimport {\n MdAddCircle as MoreIcon,\n MdRemoveCircle as LessIcon,\n} from 'react-icons/md';\nimport tw from 'tailwind-styled-components';\n\nexport const ExpanderLabel = tw.div`\ntext-accent-content-darker\np-1\nfont-bold\ncursor-pointer\ntext-xs\nfont-content-noto\n`;\n\ninterface FacetExpanderProps {\n readonly remainingValues: number;\n readonly isGroupExpanded: boolean;\n readonly onShowChanged: (v: boolean) => void;\n}\n\n/**\n * Component which manages the compact/expanded state of a FacetCard\n * @param remainingValues - number of remaining values when compact \"show 4\"\n * @param isGroupExpanded - true if expanded, false if compact\n * @param onShowChanged - callback to call when the expand/compact button is clicked\n */\nconst FacetExpander: React.FC<FacetExpanderProps> = ({\n remainingValues,\n isGroupExpanded,\n onShowChanged,\n }: FacetExpanderProps) => {\n return (\n <div className=\"mt-3 flex flex-row justify-end border-t-2 p-1.5\">\n {remainingValues > 0 && !isGroupExpanded ? (\n <button\n onClick={() => onShowChanged(!isGroupExpanded)}\n data-testid=\"plus-icon\"\n >\n <div className=\"flex flex-row flex-nowrap items-center \">\n <MoreIcon\n className=\"text-accent\"\n key=\"show-more\"\n size=\"1.5em\"\n aria-hidden=\"true\"\n />\n <ExpanderLabel>{remainingValues} more</ExpanderLabel>\n </div>\n </button>\n ) : isGroupExpanded ? (\n <button\n onClick={() => onShowChanged(!isGroupExpanded)}\n data-testid=\"minus-icon\"\n >\n <div className=\"flex flex-row flex-nowrap items-center\">\n <LessIcon\n className=\"text-accent\"\n key=\"show-less\"\n size=\"1.5em\"\n onClick={() => onShowChanged(!isGroupExpanded)}\n aria-hidden=\"true\"\n />\n <ExpanderLabel>show less</ExpanderLabel>\n </div>\n </button>\n ) : null}\n </div>\n );\n};\n\nexport default FacetExpander;\n","import React, { useEffect, useState, useRef } from 'react';\nimport { fieldNameToTitle } from '@gen3/core';\nimport { EnumFacetChart } from '../charts/EnumFacetChart';\n\nimport {\n MdFlip as FlipIcon,\n MdSearch as SearchIcon,\n MdClose as CloseIcon,\n} from 'react-icons/md';\nimport { FaUndo as UndoIcon } from 'react-icons/fa';\nimport { useDeepCompareCallback, useDeepCompareEffect } from 'use-deep-compare';\nimport {\n ActionIcon,\n Checkbox,\n LoadingOverlay,\n TextInput,\n Tooltip,\n} from '@mantine/core';\nimport {\n FacetHeader,\n FacetText,\n controlsIconStyle,\n FacetIconButton,\n} from './components';\nimport OverflowTooltippedLabel from '../OverflowTooltippedLabel';\nimport { updateFacetEnum } from './utils';\nimport { DEFAULT_VISIBLE_ITEMS } from './constants';\nimport {\n FacetCardProps,\n FacetFilterHooks,\n GetEnumFacetDataFunction,\n} from './types';\n\nimport FacetSortPanel from './FacetSortPanel';\nimport FacetExpander from './FacetExpander';\nimport { SortType } from './types';\n\nconst MAX_VALUES_TO_DISPLAY = 2048;\n\nexport interface EnumFacetHooks extends FacetFilterHooks {\n // get the totals count by type: cases, files, genes, ssms, projects\n useGetFacetData: GetEnumFacetDataFunction;\n}\n\nconst EnumFacet = ({\n field,\n dataHooks,\n valueLabel,\n description,\n facetName,\n showPercent = true,\n hideIfEmpty = true,\n showSearch = true,\n showFlip = false,\n startShowingData = true,\n dismissCallback = undefined,\n width = undefined,\n header = {\n Panel: FacetHeader,\n Label: FacetText,\n iconStyle: controlsIconStyle,\n },\n}: FacetCardProps<EnumFacetHooks>) => {\n const [isGroupExpanded, setIsGroupExpanded] = useState(false);\n const [isSearching, setIsSearching] = useState(false);\n const [searchTerm, setSearchTerm] = useState('');\n const [sortedData, setSortedData] = useState<Record<string | number, number>>(\n {},\n );\n const [sortType, setSortType] = useState<SortType>({\n type: 'alpha',\n direction: 'asc',\n });\n\n const [isFacetView, setIsFacetView] = useState(startShowingData);\n const { data, enumFilters, isSuccess } = dataHooks.useGetFacetData(field);\n\n const cardRef = useRef<HTMLDivElement>(null);\n const [selectedEnums, setSelectedEnums] = useState(enumFilters ?? []);\n const searchInputRef = useRef<HTMLInputElement>(null);\n const totalCount = 1000;\n // TODO Determine if total count is needed\n // const totalCount = dataHooks.useTotalCounts();\n const clearFilters = dataHooks.useClearFilter();\n const updateFacetFilters = dataHooks.useUpdateFacetFilters();\n\n useEffect(() => {\n if (isSearching) {\n searchInputRef?.current?.focus();\n }\n }, [isSearching]);\n\n useDeepCompareEffect(() => {\n setSelectedEnums(enumFilters ?? []);\n }, [enumFilters]);\n\n const maxValuesToDisplay = DEFAULT_VISIBLE_ITEMS;\n\n // update filters when checkbox is selected\n const handleChange = (value: string, checked: boolean) => {\n setFacetChartData({\n ...facetChartData,\n isSuccess: false,\n });\n if (checked) {\n const updated = selectedEnums ? [...selectedEnums, value] : [value];\n updateFacetEnum(field, updated, updateFacetFilters, clearFilters);\n } else {\n const updated = selectedEnums?.filter((x) => x != value);\n updateFacetEnum(field, updated ?? [], updateFacetFilters, clearFilters);\n }\n };\n\n const toggleSearch = () => {\n setIsSearching(!isSearching);\n setSearchTerm('');\n };\n\n const toggleFlip = () => {\n setIsFacetView(!isFacetView);\n };\n\n const [facetChartData, setFacetChartData] = useState<{\n filteredData: [string | number, number][];\n filteredDataObj: Record<string | number, number>;\n remainingValues: number;\n numberOfBarsToDisplay: number;\n isSuccess: boolean;\n height: number;\n cardStyle: string;\n }>({\n filteredData: [],\n filteredDataObj: {},\n remainingValues: 0,\n numberOfBarsToDisplay: maxValuesToDisplay,\n isSuccess: false,\n height: 150,\n cardStyle: 'overflow-hidden h-auto',\n });\n\n const calcCardStyle = useDeepCompareCallback(\n (remainingValues: number) => {\n if (isGroupExpanded) {\n const cardHeight =\n remainingValues > 16\n ? 96\n : remainingValues > 0\n ? Math.min(96, remainingValues * 5 + 40)\n : 24;\n return `flex-none h-${cardHeight} overflow-y-scroll `;\n } else {\n return 'overflow-hidden h-auto';\n }\n },\n [isGroupExpanded],\n );\n\n const calcNumberOfBarsToDisplay = useDeepCompareCallback(\n (visibleItems: number) => {\n const totalNumberOfBars = enumFilters ? enumFilters.length : visibleItems;\n return isGroupExpanded\n ? Math.min(16, totalNumberOfBars)\n : Math.min(maxValuesToDisplay, totalNumberOfBars);\n },\n [isGroupExpanded, enumFilters, maxValuesToDisplay],\n );\n\n useDeepCompareEffect(() => {\n if (isSuccess && data) {\n // get all the data except the missing and empty values\n const tempFilteredData = Object.entries(data)\n .filter((entry) => entry[0] != '_missing' && entry[0] != '')\n .filter((entry) =>\n searchTerm === ''\n ? entry\n : entry[0].toLowerCase().includes(searchTerm.toLowerCase().trim()),\n );\n\n // it is possible that the selected enums are not in the data as their counts are 0\n // therefore we need to add them to the data\n const selectedEnumNotInData = selectedEnums\n ? selectedEnums.reduce((acc, curr) => {\n if (!tempFilteredData.find((x) => x[0] === curr)) {\n acc.push([curr, 0]); // count will be 0\n }\n return acc;\n }, [] as Array<[string | number, number]>)\n : [];\n\n const remainingValues =\n tempFilteredData.length +\n selectedEnumNotInData.length -\n maxValuesToDisplay;\n const cardStyle = calcCardStyle(remainingValues);\n const numberOfBarsToDisplay = calcNumberOfBarsToDisplay(\n tempFilteredData.length + selectedEnumNotInData.length,\n );\n\n setFacetChartData((prevFacetChartData) => ({\n ...prevFacetChartData,\n filteredData: [...tempFilteredData, ...selectedEnumNotInData], // merge any selected enums that are not in the data\n filteredDataObj: Object.fromEntries([\n ...tempFilteredData,\n ...selectedEnumNotInData,\n ]),\n remainingValues,\n numberOfBarsToDisplay,\n isSuccess: true,\n height:\n numberOfBarsToDisplay == 1\n ? 150\n : numberOfBarsToDisplay == 2\n ? 220\n : numberOfBarsToDisplay == 3\n ? 240\n : numberOfBarsToDisplay * 65 + 10,\n cardStyle: cardStyle,\n }));\n } else {\n setFacetChartData((prevFacetChartData) => ({\n ...prevFacetChartData,\n filteredDataObj: {},\n isSuccess: false,\n }));\n }\n }, [\n data,\n isSuccess,\n maxValuesToDisplay,\n searchTerm,\n calcCardStyle,\n calcNumberOfBarsToDisplay,\n selectedEnums,\n ]);\n\n useDeepCompareEffect(() => {\n if (facetChartData.filteredData && facetChartData.filteredData.length > 0) {\n const compareValuesAscending = (\n [, a]: [string | number, number],\n [, b]: [string | number, number],\n ): number => a - b;\n const compareValuesDescending = (\n [, a]: [string | number, number],\n [, b]: [string | number, number],\n ): number => b - a;\n const compareKeysAscending = (\n [a]: [string | number, number],\n [b]: [string | number, number],\n ): number =>\n typeof a === 'string' && typeof b === 'string'\n ? a.localeCompare(b)\n : typeof a === 'number' && typeof b === 'number'\n ? a - b\n : 0;\n\n const compareKeysDescending = (\n [a]: [string | number, number],\n [b]: [string | number, number],\n ): number =>\n typeof a === 'string' && typeof b === 'string'\n ? b.localeCompare(a)\n : typeof a === 'number' && typeof b === 'number'\n ? b - a\n : 0;\n\n let comparisonFn;\n\n if (sortType.type === 'value') {\n comparisonFn =\n sortType.direction === 'dsc'\n ? compareValuesDescending\n : compareValuesAscending;\n } else {\n comparisonFn =\n sortType.direction === 'dsc'\n ? compareKeysDescending\n : compareKeysAscending;\n }\n\n const obj = [...facetChartData.filteredData]\n .sort(comparisonFn)\n .slice(0, !isGroupExpanded ? maxValuesToDisplay : undefined)\n .reduce((acc, [key, value]) => {\n acc[key] = value;\n return acc;\n }, {} as Record<string | number, number>);\n\n const val = Object.fromEntries(\n [...facetChartData.filteredData]\n .sort(comparisonFn)\n .slice(0, !isGroupExpanded ? maxValuesToDisplay : undefined),\n );\n\n setSortedData(obj);\n }\n }, [\n facetChartData.filteredData,\n sortType,\n isGroupExpanded,\n maxValuesToDisplay,\n ]);\n\n if (facetChartData.filteredData.length == 0 && hideIfEmpty) {\n return null; // nothing to render if visibleItems == 0\n }\n\n return (\n <div\n className={`flex flex-col ${\n width ? width : 'mx-1'\n } bg-base-max relative shadow-lg border-base-lighter border-1 rounded-b-md text-xs transition`}\n id={field}\n >\n <div>\n <header.Panel>\n <Tooltip\n label={description}\n position=\"bottom-start\"\n multiline\n w={220}\n withArrow\n disabled={!description}\n >\n <header.Label>\n {facetName ? facetName : fieldNameToTitle(field)}\n </header.Label>\n </Tooltip>\n <div className=\"flex flex-row\">\n {showSearch ? (\n <FacetIconButton onClick={toggleSearch} aria-label=\"Search\">\n <SearchIcon size=\"1.45em\" className={header.iconStyle} />\n </FacetIconButton>\n ) : null}\n {showFlip ? (\n <FacetIconButton\n onClick={toggleFlip}\n aria-label=\"Flip between form and chart\"\n >\n <FlipIcon size=\"1.45em\" className={header.iconStyle} />\n </FacetIconButton>\n ) : null}\n <FacetIconButton\n onClick={() => clearFilters(field)}\n aria-label=\"clear selection\"\n >\n <UndoIcon size=\"1.25em\" className={header.iconStyle} />\n </FacetIconButton>\n {dismissCallback ? (\n <FacetIconButton\n onClick={() => {\n clearFilters(field);\n dismissCallback(field);\n }}\n aria-label=\"Remove the facet\"\n >\n <CloseIcon size=\"1.25em\" className={header.iconStyle} />\n </FacetIconButton>\n ) : null}\n </div>\n </header.Panel>\n </div>\n <div className=\"h-full\">\n {isSearching && (\n <TextInput\n value={searchTerm}\n onChange={(e) => setSearchTerm(e.target.value)}\n aria-label={'search values'}\n ref={searchInputRef}\n className=\"p-2\"\n rightSection={\n searchTerm.length > 0 ? (\n <ActionIcon\n onClick={() => {\n setSearchTerm('');\n searchInputRef.current?.focus();\n }}\n aria-label={'clear search'}\n >\n <CloseIcon />\n </ActionIcon>\n ) : undefined\n }\n />\n )}\n <div\n className={\n isFacetView\n ? 'flip-card h-full '\n : 'flip-card flip-card-flipped h-full'\n }\n ref={cardRef}\n >\n <div\n className={`card-face bg-base-max rounded-b-md flex flex-col justify-between ${\n !isFacetView ? 'invisible' : ''\n }`}\n >\n <div>\n <FacetSortPanel\n sortType={sortType}\n valueLabel={valueLabel}\n setSort={setSortType}\n field={facetName ? facetName : fieldNameToTitle(field)}\n />\n\n <div\n className={facetChartData.cardStyle}\n role=\"group\"\n aria-label=\"Filter values\"\n >\n <LoadingOverlay\n visible={!isSuccess}\n data-testid=\"loading-spinner\"\n />\n {facetChartData.filteredData.length == 0 ? (\n <div className=\"mx-4 font-content\">\n No data for this field\n </div>\n ) : isSuccess ? (\n !sortedData || Object.entries(sortedData).length === 0 ? (\n <div className=\"mx-4\">No results found</div>\n ) : (\n Object.entries(sortedData ?? {}).map(([value, count]) => {\n return (\n <div\n key={`${field}-${value}`}\n className=\"flex flex-row items-center gap-x-1 px-2 \"\n >\n <div className=\"flex-none\">\n <Checkbox\n data-testid={`checkbox-${value}`}\n value={value}\n size=\"xs\"\n color=\"accent\"\n onChange={(e) =>\n handleChange(\n e.currentTarget.value,\n e.currentTarget.checked,\n )\n }\n aria-label={`${value}`}\n classNames={{\n input: 'bg-base hover:bg-accent-darker',\n }}\n checked={\n selectedEnums && selectedEnums.includes(value)\n }\n />\n </div>\n <OverflowTooltippedLabel label={value}>\n <span className=\"font-content\">{value}</span>\n </OverflowTooltippedLabel>\n <div className=\"flex-none text-right w-14 font-content\">\n {count.toLocaleString()}\n </div>\n {showPercent ? (\n <div className=\"flex-none text-right w-18 font-content\">\n (\n {(((count as number) / totalCount) * 100).toFixed(\n 2,\n )}\n %)\n </div>\n ) : null}\n </div>\n );\n })\n )\n ) : (\n <div>\n {\n // uninitialized, loading, error animated bars\n Array.from(Array(maxValuesToDisplay)).map((_, index) => {\n return (\n <div\n key={`${field}-${index}`}\n className=\"flex flex-row items-center px-2\"\n >\n <div className=\"flex-none\">\n <Checkbox\n size=\"xs\"\n className=\"bg-base-lightest text-primary-contrast-lightest hover:bg-base-darkest hover:text-base-contrast-darkest\"\n />\n </div>\n <div className=\"flex-grow h-3.5 align-center justify-center mt-1 ml-1 mr-8 bg-base-light rounded-b-sm animate-pulse\" />\n <div className=\"flex-none h-3.5 align-center justify-center mt-1 w-10 bg-base-light rounded-b-sm animate-pulse\" />\n </div>\n );\n })\n }\n </div>\n )}\n </div>\n </div>\n {\n <FacetExpander\n remainingValues={facetChartData.remainingValues}\n isGroupExpanded={isGroupExpanded}\n onShowChanged={setIsGroupExpanded}\n />\n }\n </div>\n <div\n className={`card-face card-back rounded-b-md bg-base-max h-full pb-1 ${\n isFacetView ? 'invisible' : ''\n }`}\n >\n {facetChartData.filteredData.length === 0 ? (\n <div className=\"mx-4\">No results found</div>\n ) : (\n !isFacetView && (\n <EnumFacetChart\n field={field}\n data={facetChartData.filteredDataObj}\n selectedEnums={selectedEnums}\n isSuccess={facetChartData.isSuccess}\n showTitle={false}\n valueLabel={valueLabel}\n maxBins={facetChartData.numberOfBarsToDisplay}\n height={facetChartData.height}\n />\n )\n )}\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default EnumFacet;\n","import React, { useCallback } from 'react';\nimport { MdClose as CloseIcon } from 'react-icons/md';\nimport { FacetFilterHooks, FromToRangeValues } from './types';\nimport { FaUndo as UndoIcon } from 'react-icons/fa';\nimport { DEFAULT_MAXIMUM, DEFAULT_MINIMUM } from './constants';\n\nimport {\n NumberInput,\n Text,\n LoadingOverlay,\n RangeSlider,\n Tooltip,\n} from '@mantine/core';\nimport {\n FacetHeader,\n FacetText,\n controlsIconStyle,\n FacetIconButton,\n} from './components';\n\nimport {\n FacetCardProps,\n GetRangeFacetDataFunction,\n GetTotalCountsFunction,\n UpdateFacetFilterHook,\n} from './types';\n\nimport { fieldNameToTitle, Intersection } from '@gen3/core';\n\nconst createBucket = (\n field: string,\n lower: number,\n upper: number,\n): Intersection => ({\n operator: 'and',\n operands: [\n {\n field,\n operator: '>=',\n operand: lower,\n },\n {\n field,\n operator: '<=',\n operand: upper,\n },\n ],\n});\n\nexport interface RangeFacetHooks extends FacetFilterHooks {\n useUpdateFacetFilters: UpdateFacetFilterHook;\n useGetFacetData: GetRangeFacetDataFunction;\n useTotalCounts: GetTotalCountsFunction;\n}\n\nexport interface RangeFacetCardProps extends FacetCardProps<RangeFacetHooks> {\n minimum?: number;\n maximum?: number;\n}\n\nconst RangeFacet = ({\n field,\n dataHooks,\n valueLabel,\n description,\n facetName,\n minimum = DEFAULT_MINIMUM,\n maximum = DEFAULT_MAXIMUM,\n showPercent = true,\n hideIfEmpty = true,\n showSearch = true,\n showFlip = true,\n startShowingData = true,\n dismissCallback = undefined,\n width = undefined,\n header = {\n Panel: FacetHeader,\n Label: FacetText,\n iconStyle: controlsIconStyle,\n },\n}: RangeFacetCardProps) => {\n const { data, rangeFilters, isSuccess } = dataHooks.useGetFacetData(field);\n const [minMaxValue, setMinMaxValue] = React.useState<\n FromToRangeValues<number>\n >({\n from: minimum,\n to: maximum,\n });\n\n const clearRangeFilterFromCohort = dataHooks.useClearFilter();\n const clearFilters = useCallback(() => {\n setMinMaxValue({\n from: minimum,\n to: maximum,\n });\n clearRangeFilterFromCohort(field);\n }, [clearRangeFilterFromCohort, field, maximum, minimum]);\n\n const updateRangeFilter = dataHooks.useUpdateFacetFilters();\n const updateFilters = useCallback(\n (from: number, to: number) => {\n updateRangeFilter(field, createBucket(field, from, to));\n setMinMaxValue({\n from: from,\n to: to,\n });\n },\n [field, updateRangeFilter],\n );\n\n return (\n <div\n className={`flex flex-col ${\n width ? width : 'mx-1'\n } bg-base-max relative shadow-lg border-base-lighter border-1 rounded-b-md text-xs transition`}\n id={field}\n >\n <div>\n <header.Panel>\n <Tooltip\n label={description}\n position=\"bottom-start\"\n multiline\n w={220}\n withArrow\n disabled={!description}\n >\n <header.Label>\n {facetName ? facetName : fieldNameToTitle(field)}\n </header.Label>\n </Tooltip>\n <div className=\"flex flex-row\">\n <FacetIconButton\n onClick={() => clearFilters()}\n aria-label=\"clear selection\"\n >\n <UndoIcon size=\"1.25em\" className={header.iconStyle} />\n </FacetIconButton>\n {dismissCallback ? (\n <FacetIconButton\n onClick={() => {\n clearFilters();\n dismissCallback(field);\n }}\n aria-label=\"Remove the facet\"\n >\n <CloseIcon size=\"1.25em\" className={header.iconStyle} />\n </FacetIconButton>\n ) : null}\n </div>\n </header.Panel>\n </div>\n <div className=\"card-face bg-base-max\">\n <div className=\"overflow-hidden px-3.5 h-auto\">\n <LoadingOverlay visible={!isSuccess} />\n <div className=\"flex flex-col gap-y-2 pb-2\">\n <div className=\"flex gap-x-4 items-center\">\n <NumberInput\n label=\"Min\"\n placeholder=\"min\"\n size=\"sm\"\n value={rangeFilters ? rangeFilters.from : minMaxValue.from}\n onChange={(value: number | string) => {\n updateFilters(\n value === '' ? minimum : value as any,\n minMaxValue.to ?? DEFAULT_MAXIMUM,\n );\n }}\n />\n <Text size=\"xl\" className=\"mt-4\">\n -\n </Text>\n <NumberInput\n label=\"Max\"\n placeholder=\"max\"\n size=\"sm\"\n value={rangeFilters ? rangeFilters.to : minMaxValue.to}\n onChange={(value) => {\n updateFilters(\n minMaxValue.from ?? minimum,\n value ? Number(value) : maximum,\n );\n }}\n />\n <div className=\"bg-gray mt-4 border-1\">\n {isSuccess && data && Object.values(data).length > 0\n ? Object.values(data)[0]\n : '...'}\n </div>\n </div>\n\n <RangeSlider\n mt=\"md\"\n color=\"blue\"\n thumbSize={20}\n value={[minMaxValue.from ?? minimum, minMaxValue.to ?? maximum]}\n min={minimum}\n max={maximum}\n onChange={(value) => {\n updateFilters(value[0], value[1]);\n }}\n />\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default RangeFacet;\n","import React, { useState, useMemo } from 'react';\nimport { EnumFacetResponse, FacetCardProps, FacetDataHooks } from './types';\nimport { ActionIcon, Group, MultiSelect, Tooltip } from '@mantine/core';\nimport {\n controlsIconStyle,\n FacetIconButton,\n FacetText,\n FacetHeader,\n} from './components';\nimport { MdClose as CloseIcon } from 'react-icons/md';\nimport { FaUndo as UndoIcon, FaPlus as PlusIcon } from 'react-icons/fa';\nimport {\n Operation,\n Excludes,\n Includes,\n trimFirstFieldNameToTitle,\n} from '@gen3/core';\nimport { useDeepCompareEffect } from 'use-deep-compare';\n\ntype ExactValueProps = Omit<\n FacetCardProps<FacetDataHooks>,\n 'showSearch' | 'showFlip' | 'showPercent' | 'valueLabel'\n>;\n\nconst instanceOfIncludesExcludes = (op: Operation): op is Includes | Excludes =>\n ['in'].includes(op.operator); // TODO: Guppy does not support excludes\n\n/**\n * Extracts the operands if the operation isIncludes or Excludes. Returns an empty Array\n * if filter is not the correct type.\n * @param operation - filters to extract values from\n */\nconst extractValues = (\n operation?: Operation,\n): ReadonlyArray<string | number> => {\n if (operation && instanceOfIncludesExcludes(operation)) {\n return operation.operands;\n }\n return [] as ReadonlyArray<string>;\n};\n\n/**\n * Exact value facet component\n * @param field - field to facet on\n * @param description - description of the facet\n * @param facetName - name of the facet\n * @param dismissCallback - callback function to dismiss the facet\n * @param width - width of the facet\n * @param hooks - hooks to use for the facet\n * @category Facets\n */\nconst MultiSelectValueFacet: React.FC<ExactValueProps> = ({\n field,\n description,\n facetName = undefined,\n dismissCallback = undefined,\n width = undefined,\n dataHooks,\n}: ExactValueProps) => {\n const [selectedValues, setSelectedValues] = useState<string[]>([]); // Handle the state of the TextInput\n const clearFilters = dataHooks.useClearFilter();\n const updateFacetFilters = dataHooks.useUpdateFacetFilters();\n const facetTitle = facetName\n ? facetName\n : trimFirstFieldNameToTitle(field, true);\n const facetValue = dataHooks.useGetFacetFilters(field);\n const facetDataValues = dataHooks.useGetFacetData(field) as EnumFacetResponse;\n\n const dataValues = useMemo(() => {\n if (facetDataValues?.data) {\n return Object.keys(facetDataValues.data).map((key) => {\n return {\n value: key,\n label: key,\n };\n });\n }\n return [];\n }, [facetDataValues?.data]);\n\n useDeepCompareEffect(() => {\n if (!facetValue) {\n setSelectedValues([]);\n } else if (instanceOfIncludesExcludes(facetValue)) {\n const filters = facetValue.operands.map((x: number | string) =>\n x.toString(),\n );\n setSelectedValues(filters);\n }\n }, [facetValue]);\n\n useDeepCompareEffect(() => {\n const setValues = (values: string[]) => {\n if (values.length > 0) {\n if (facetValue && instanceOfIncludesExcludes(facetValue)) {\n // updating facet value\n updateFacetFilters(field, {\n ...facetValue,\n operands: values,\n });\n }\n if (facetValue === undefined) {\n // TODO: Assuming Includes by default but this might change to Include|Excludes\n updateFacetFilters(field, {\n operator: 'in',\n field: field,\n operands: values,\n });\n }\n }\n // no values remove the filter\n else {\n clearFilters(field);\n }\n };\n\n setValues(selectedValues);\n }, [selectedValues]);\n\n return (\n <div\n className={`flex flex-col ${\n width ? width : 'mx-0'\n } bg-base-max relative border-base-lighter border-1 rounded-b-md text-xs transition`}\n >\n <FacetHeader>\n <Tooltip\n disabled={!description}\n label={description}\n position=\"bottom-start\"\n multiline\n w={220}\n withArrow\n transitionProps={{ duration: 200, transition: 'fade' }}\n >\n <FacetText>{facetTitle}</FacetText>\n </Tooltip>\n <div className=\"flex flex-row\">\n <Tooltip label=\"Clear selection\">\n <FacetIconButton\n onClick={() => setSelectedValues([])}\n aria-label=\"clear selection\"\n >\n <UndoIcon size=\"1.15em\" className={controlsIconStyle} />\n </FacetIconButton>\n </Tooltip>\n {dismissCallback && (\n <Tooltip label=\"Remove the facet\">\n <FacetIconButton\n onClick={() => {\n dismissCallback(field);\n }}\n aria-label=\"Remove the facet\"\n >\n <CloseIcon size=\"1.25em\" className={controlsIconStyle} />\n </FacetIconButton>\n </Tooltip>\n )}\n </div>\n </FacetHeader>\n <div className=\"flex flex-nowrap items-center p-2\">\n <MultiSelect\n data-testid=\"multiselect-add-filter-value\"\n size=\"sm\"\n placeholder={`Enter ${facetTitle}`}\n classNames={{ root: 'grow', input: 'border-r-0 rounded-r-none py-1' }}\n aria-label=\"enter value to add filter\"\n value={selectedValues}\n onChange={setSelectedValues}\n data={dataValues}\n searchable\n maxDropdownHeight={200}\n />\n </div>\n </div>\n );\n};\n\nexport default MultiSelectValueFacet;\n","import React, { useState, useMemo } from 'react';\nimport { FacetCardProps, FacetDataHooks } from './types';\nimport { ActionIcon, Badge, Group, TextInput, Tooltip } from '@mantine/core';\nimport {\n controlsIconStyle,\n FacetIconButton,\n FacetText,\n FacetHeader,\n} from './components';\nimport { MdClose as CloseIcon } from 'react-icons/md';\nimport { FaUndo as UndoIcon, FaPlus as PlusIcon } from 'react-icons/fa';\nimport {\n Operation,\n Excludes,\n Includes,\n trimFirstFieldNameToTitle,\n EnumFilterValue,\n} from '@gen3/core';\n\ntype ExactValueProps = Omit<\n FacetCardProps<FacetDataHooks>,\n 'showSearch' | 'showFlip' | 'showPercent' | 'valueLabel'\n>;\n\nconst instanceOfIncludesExcludes = (op: Operation): op is Includes | Excludes =>\n ['in'].includes(op.operator); // TODO: Guppy does not support excludes\n\n/**\n * Extracts the operands if the operation isIncludes or Excludes. Returns an empty Array\n * if filter is not the correct type.\n * @param operation - filters to extract values from\n */\nconst extractValues = (\n operation?: Operation,\n): ReadonlyArray<string | number> => {\n if (operation && instanceOfIncludesExcludes(operation)) {\n return operation.operands;\n }\n return [] as ReadonlyArray<string>;\n};\n\n/**\n * Exact value facet component\n * @param field - field to facet on\n * @param description - description of the facet\n * @param facetName - name of the facet\n * @param dismissCallback - callback function to dismiss the facet\n * @param width - width of the facet\n * @param hooks - hooks to use for the facet\n * @category Facets\n */\nconst ExactValueFacet: React.FC<ExactValueProps> = ({\n field,\n description,\n facetName = undefined,\n dismissCallback = undefined,\n width = undefined,\n dataHooks,\n}: ExactValueProps) => {\n const [textValue, setTextValue] = useState(''); // Handle the state of the TextInput\n const clearFilters = dataHooks.useClearFilter();\n const updateFacetFilters = dataHooks.useUpdateFacetFilters();\n const facetTitle = facetName\n ? facetName\n : trimFirstFieldNameToTitle(field, true);\n const facetValue = dataHooks.useGetFacetFilters(field);\n const textValues = useMemo(() => extractValues(facetValue), [facetValue]);\n\n const setValues = (values: EnumFilterValue) => {\n if (values.length > 0) {\n if (facetValue && instanceOfIncludesExcludes(facetValue)) {\n // updating facet value\n updateFacetFilters(field, {\n ...facetValue,\n operands: values,\n });\n }\n if (facetValue === undefined) {\n // TODO: Assuming Includes by default but this might change to Include|Excludes\n updateFacetFilters(field, {\n operator: 'in',\n field: field,\n operands: values,\n });\n }\n }\n // no values remove the filter\n else {\n clearFilters(field);\n }\n };\n\n const addValue = (s: string | number) => {\n if (s === '') return;\n if (textValues.includes(s)) return;\n setTextValue('');\n setValues([...textValues, s]);\n };\n\n const removeButton = (x: string | number) => {\n return (\n <ActionIcon\n size=\"xs\"\n color=\"white\"\n radius=\"xl\"\n variant=\"transparent\"\n onClick={() => setValues(textValues.filter((i) => i !== x))}\n >\n <CloseIcon size={10} aria-label=\"remove value from filter\" />\n </ActionIcon>\n );\n };\n\n return (\n <div\n className={`flex flex-col ${\n width ? width : 'mx-0'\n } bg-base-max relative border-base-lighter border-1 rounded-b-md text-xs transition`}\n >\n <FacetHeader>\n <Tooltip\n disabled={!description}\n label={description}\n position=\"bottom-start\"\n multiline\n w={220}\n withArrow\n transitionProps={{ duration: 200, transition: 'fade' }}\n >\n <FacetText>{facetTitle}</FacetText>\n </Tooltip>\n <div className=\"flex flex-row\">\n <Tooltip label=\"Clear selection\">\n <FacetIconButton\n onClick={() => clearFilters(field)}\n aria-label=\"clear selection\"\n >\n <UndoIcon size=\"1.15em\" className={controlsIconStyle} />\n </FacetIconButton>\n </Tooltip>\n {dismissCallback && (\n <Tooltip label=\"Remove the facet\">\n <FacetIconButton\n onClick={() => {\n dismissCallback(field);\n }}\n aria-label=\"Remove the facet\"\n >\n <CloseIcon size=\"1.25em\" className={controlsIconStyle} />\n </FacetIconButton>\n </Tooltip>\n )}\n </div>\n </FacetHeader>\n <div className=\"flex flex-nowrap items-center p-2\">\n <TextInput\n data-testid=\"textbox-add-filter-value\"\n size=\"sm\"\n placeholder={`Enter ${facetTitle}`}\n classNames={{ root: 'grow', input: 'border-r-0 rounded-r-none py-1' }}\n aria-label=\"enter value to add filter\"\n value={textValue}\n onChange={(event) => setTextValue(event.currentTarget.value)}\n />\n <ActionIcon\n size=\"lg\"\n aria-label=\"add string value\"\n className=\"bg-accent text-accent-contrast border-base-min border-1 rounded-l-none h-[30px]\"\n onClick={() => {\n if (textValue.length > 0) addValue(textValue.trim());\n }}\n >\n <PlusIcon />\n </ActionIcon>\n </div>\n {/* h-96 is max height for the content of ExactValueFacet, EnumFacet, UploadFacet */}\n <Group\n gap=\"xs\"\n className=\"px-2 py-2 max-h-96 overflow-y-auto\"\n data-testid=\"values group\"\n >\n {textValues.map((x) => (\n <Badge\n size=\"sm\"\n variant=\"filled\"\n color=\"accent\"\n key={x}\n rightSection={removeButton(x)}\n >\n {x}\n </Badge>\n ))}\n </Group>\n </div>\n );\n};\n\nexport default ExactValueFacet;\n","import React from 'react';\nimport { FacetDefinition } from '@gen3/core';\nimport { FacetDataHooks } from './types';\nimport EnumFacet from './EnumFacet';\nimport RangeFacet from './RangeFacet';\nimport MultiSelectValueFacet from './MultiSelectValueFacet';\nimport ExactValueFacet from './ExactValueFacet';\n\nexport const createFacetCard = (\n facetDefinition: FacetDefinition,\n valueLabel: string,\n dataFunctions: FacetDataHooks,\n idPrefix: string,\n dismissCallback: (_arg0: string) => void = () => null,\n hideIfEmpty = false,\n facetName?: string,\n width?: string,\n): React.ReactNode => {\n const { field, type, description } = facetDefinition;\n return (\n <div key={`${idPrefix}-enum-${field}`}>\n {\n {\n enum: (\n <EnumFacet\n key={`${idPrefix}-enum-${field}`}\n valueLabel={valueLabel}\n field={field}\n facetName={facetName}\n description={description}\n hideIfEmpty={hideIfEmpty}\n width={width}\n dataHooks={dataFunctions}\n showPercent={false}\n />\n ),\n range: (\n <RangeFacet\n key={`${idPrefix}-range-${field}`}\n valueLabel={valueLabel}\n field={field}\n facetName={facetName}\n description={description}\n hideIfEmpty={hideIfEmpty}\n width={width}\n dataHooks={dataFunctions}\n minimum={facetDefinition.range?.minimum}\n maximum={facetDefinition.range?.maximum}\n />\n ),\n exact: (\n <ExactValueFacet\n key={`${idPrefix}-exact-${field}`}\n field={field}\n facetName={facetName}\n description={description}\n hideIfEmpty={hideIfEmpty}\n width={width}\n dataHooks={dataFunctions}\n />\n ),\n multiselect: (\n <MultiSelectValueFacet\n key={`${idPrefix}-exact-${field}`}\n field={field}\n facetName={facetName}\n description={description}\n hideIfEmpty={hideIfEmpty}\n width={width}\n dataHooks={dataFunctions}\n />\n ),\n }[type as string]\n }\n </div>\n );\n};\n","import React from 'react';\nimport { FacetDefinition, FacetType } from '@gen3/core';\nimport { createFacetCard } from '../../components/facets/createFacetCard';\nimport { FacetDataHooks } from '../../components/facets/types';\n\ninterface FiltersPanelProps {\n dataFunctions: Record<FacetType, FacetDataHooks>;\n fields: ReadonlyArray<FacetDefinition>;\n valueLabel: string;\n}\n\nexport const FiltersPanel = ({\n fields,\n dataFunctions,\n valueLabel,\n}: FiltersPanelProps): JSX.Element => {\n return (\n <div\n data-testid=\"filters-facets\"\n className=\"flex flex-col gap-y-4 h-full overflow-y-scroll px-4 w-full\"\n >\n {fields.map((facetDefinition) => {\n return createFacetCard(\n facetDefinition,\n valueLabel,\n dataFunctions[facetDefinition.type],\n 'filters-panel',\n undefined,\n false,\n facetDefinition.label,\n 'w-64',\n );\n })}\n </div>\n );\n};\n","import { useCoreSelector, FilterSet, selectCohortFilters } from '@gen3/core';\n\nexport const useCohortFacetFilters = (index:string): FilterSet => {\n return useCoreSelector((state) => selectCohortFilters(state)[index]);\n};\n","import React from 'react';\n\ninterface QueryRepresentationLabelProps {\n readonly value: string | number;\n}\n\nconst QueryRepresentationLabel = (\n { value} : QueryRepresentationLabelProps ) => {\n return <React.Fragment>{value}</React.Fragment>;\n};\n\nexport default QueryRepresentationLabel;\n","import React from 'react';\n\nexport interface CollapsedStateReducerAction {\n type: 'expand' | 'collapse' | 'clear' | 'init' | 'expandAll' | 'collapseAll';\n cohortId: string;\n field?: string;\n}\n\nexport const QueryExpressionsExpandedContext = React.createContext<\n [Record<string, boolean>, (action: CollapsedStateReducerAction) => void]\n>([{}, () => null]);\n","import React, {\n PropsWithChildren,\n ReactElement,\n useContext,\n useEffect,\n} from 'react';\nimport { get } from 'lodash';\nimport {\n Equals,\n GreaterThan,\n GreaterThanOrEquals,\n handleOperation,\n Includes,\n Intersection,\n LessThan,\n LessThanOrEquals,\n NotEquals,\n Operation,\n OperationHandler,\n removeCohortFilter,\n Union,\n useCoreDispatch,\n fieldNameToTitle,\n useCoreSelector,\n selectCurrentCohortId,\n updateCohortFilter,\n Exists,\n Missing,\n ExcludeIfAny,\n Excludes,\n NestedFilter,\n CoreState,\n} from '@gen3/core';\nimport { ActionIcon, Badge, Divider, Group } from '@mantine/core';\nimport { isArray } from 'lodash';\nimport {\n MdClose as ClearIcon,\n MdOutlineArrowBack as LeftArrow,\n MdOutlineArrowForward as RightArrow,\n} from 'react-icons/md';\nimport tw from 'tailwind-styled-components';\nimport OverflowTooltippedLabel from '../../components/OverflowTooltippedLabel';\nimport QueryRepresentationLabel from './QueryRepresentationLabel';\nimport { QueryExpressionsExpandedContext } from './QueryExpressionsExpandedContext';\nimport { buildNested } from '../../components/facets/utils';\nimport { useDeepCompareEffect } from 'use-deep-compare';\n\nconst RemoveButton = ({ value }: { value: string }) => (\n <ActionIcon\n size=\"xs\"\n color=\"base.0\"\n radius=\"xl\"\n variant=\"transparent\"\n aria-label={`remove ${value}`}\n pl={0}\n pr={0}\n >\n <ClearIcon size={12} aria-hidden=\"true\" />\n </ActionIcon>\n);\nconst QueryRepresentationText = tw.div`\nflex truncate ... px-2 py-1 bg-base-max h-full\n`;\n\nconst QueryFieldLabel = tw.div`\nbg-accent-cool-lightest\ntext-base-darkest\nuppercase\npx-1\nborder-primary-darkest\nborder-r-[1.5px]\nflex\nitems-center\n`;\n\nconst QueryItemContainer = tw.div`\nflex\nitems-center\nfont-heading\nshadow-md\nfont-medium\ntext-sm\nborder-[1.5px]\nmr-1\nmb-2\nborder-secondary-darkest\nw-inherit\n`;\n\nconst QueryContainer = tw.div`\nflex\nflex-row\nitems-stretch\nh-full\nbg-base-max\n`;\n\ntype RangeOperation =\n | LessThan\n | LessThanOrEquals\n | GreaterThanOrEquals\n | GreaterThan;\n\ntype ValueOperation = RangeOperation | Equals | NotEquals;\ntype ComparisonOperation = RangeOperation | Equals | NotEquals;\nexport type SetOperation = Includes | Excludes | ExcludeIfAny;\n\nexport const isRangeOperation = (x?: Operation): x is RangeOperation => {\n return (\n x !== undefined &&\n 'operator' in x &&\n ['>=', '>', '<', '<='].includes(x.operator)\n );\n};\n\nexport const isValueOperation = (x: Operation): x is ValueOperation => {\n return 'field' in x;\n};\n\nexport const isNestedFilter = (x: Operation): x is NestedFilter => {\n return 'path' in x;\n};\n\ninterface IncludeExcludeQueryElementProps\n extends Pick<\n Includes | Excludes | ExcludeIfAny,\n 'field' | 'operator' | 'operands'\n > {\n index: string;\n path?: string;\n}\n\nconst IncludeExcludeQueryElement = ({\n index,\n field,\n path,\n operator,\n operands,\n}: IncludeExcludeQueryElementProps) => {\n const dispatch = useCoreDispatch();\n const [queryExpressionsExpanded, setQueryExpressionsExpanded] = useContext(\n QueryExpressionsExpandedContext,\n );\n const currentCohortId = useCoreSelector((state: CoreState) =>\n selectCurrentCohortId(state),\n );\n\n useDeepCompareEffect(() => {\n if (get(queryExpressionsExpanded, field) === undefined) {\n setQueryExpressionsExpanded({\n type: 'expand',\n cohortId: currentCohortId,\n field,\n });\n }\n }, [\n field,\n currentCohortId,\n queryExpressionsExpanded,\n setQueryExpressionsExpanded,\n ]);\n\n const expanded = get(queryExpressionsExpanded, field, true);\n const fieldName = fieldNameToTitle(field);\n const operandsArray = isArray(operands) ? operands : [operands];\n\n return (\n <QueryContainer>\n <QueryFieldLabel>{fieldName}</QueryFieldLabel>\n <ActionIcon\n variant=\"transparent\"\n size={'xs'}\n onClick={() => {\n setQueryExpressionsExpanded({\n type: expanded ? 'collapse' : 'expand',\n cohortId: currentCohortId,\n field,\n });\n }}\n color=\"accent\"\n className=\"ml-1 my-auto hover:bg-accent-darker hover:bg-primary]\"\n aria-label={expanded ? `collapse ${fieldName}` : `expand ${fieldName}`}\n aria-expanded={expanded}\n >\n {expanded ? <LeftArrow /> : <RightArrow />}\n </ActionIcon>\n <Divider\n orientation=\"vertical\"\n size=\"xs\"\n className=\"m-1\"\n color=\"base.2\"\n />\n {!expanded ? (\n <b className=\"text-primary-darkest px-2 py-1 flex items-center\">\n {operands.length}\n </b>\n ) : (\n <QueryRepresentationText>\n <Group gap=\"xs\">\n {operandsArray.map((x: string | number, i) => {\n const value = x.toString();\n return (\n <Badge\n key={`query-rep-${field}-${value}-${i}`}\n data-testid={`query-rep-${field}-${value}-${i}`}\n variant=\"filled\"\n color=\"accent.5\"\n size=\"md\"\n pr={0}\n className=\"normal-case items-center max-w-[162px] cursor-pointer pl-0 pr-0 hover:bg-accent-darker\"\n rightSection={<RemoveButton value={value} />}\n onClick={() => {\n const newOperands = operandsArray.filter((o) => o !== x);\n const fieldToUpdate =\n path && path != '.' ? [path, field].join('.') : field;\n\n if (newOperands.length === 0) {\n setQueryExpressionsExpanded({\n type: 'clear',\n cohortId: currentCohortId,\n field: fieldToUpdate,\n });\n dispatch(\n removeCohortFilter({\n field: fieldToUpdate,\n index: index,\n }),\n );\n } else {\n dispatch(\n updateCohortFilter({\n index,\n field: fieldToUpdate,\n filter: buildNested(fieldToUpdate, {\n operator: operator,\n field: field,\n operands: newOperands,\n }),\n }),\n );\n }\n }}\n >\n <OverflowTooltippedLabel\n label={value}\n className=\"flex-grow text-md font-content\"\n >\n <QueryRepresentationLabel value={value.toString()} />\n </OverflowTooltippedLabel>\n </Badge>\n );\n })}\n </Group>\n </QueryRepresentationText>\n )}\n </QueryContainer>\n );\n};\n\ninterface ComparisonElementProps {\n readonly index: string;\n readonly filter: ValueOperation;\n readonly showLabel?: boolean;\n}\n\nconst ComparisonElement = ({\n index,\n filter,\n showLabel = true,\n}: ComparisonElementProps) => {\n const coreDispatch = useCoreDispatch();\n\n // fix the code below\n const handleKeepMember = (keep: ValueOperation) => {\n coreDispatch(\n updateCohortFilter({ field: keep.field, filter: keep, index: index }),\n );\n };\n\n return (\n <React.Fragment>\n {showLabel ? (\n <QueryFieldLabel>{fieldNameToTitle(filter.field)}</QueryFieldLabel>\n ) : null}\n <div className=\"flex flex-row items-center\">\n <button\n className=\"h-[25px] w-[25px] mx-2 rounded-[50%] bg-accent-cool-lightest text-accent-cool-lightest-contrast pb-1\"\n onClick={() => handleKeepMember(filter)}\n >\n {filter.operator}\n </button>\n <QueryRepresentationText>{filter.operand}</QueryRepresentationText>\n </div>\n </React.Fragment>\n );\n};\n\nconst ExistsElement = ({ field, operator }: Exists | Missing) => {\n return (\n <div className=\"flex flex-row items-center\">\n {fieldNameToTitle(field)} is\n <span className=\"px-1 underline\">{operator}</span>\n </div>\n );\n};\n\ninterface ClosedRangeQueryElementProps {\n readonly index: string;\n readonly lower: ComparisonOperation;\n readonly upper: ComparisonOperation;\n readonly op?: 'and';\n}\n\nexport const ClosedRangeQueryElement = ({\n index,\n lower,\n upper,\n op = 'and',\n}: PropsWithChildren<ClosedRangeQueryElementProps>) => {\n const { field } = lower; // As this is a Range the field for both lower and upper will be the same\n\n return (\n <React.Fragment>\n <QueryElement field={field} index={index}>\n <QueryContainer>\n <ComparisonElement filter={lower} index={index} />\n <div className=\"flex items-center\">\n <span className={'uppercase text-accent-contrast-max font-bold'}>\n {op}\n </span>\n </div>\n <ComparisonElement filter={upper} showLabel={false} index={index} />\n </QueryContainer>\n </QueryElement>\n </React.Fragment>\n );\n};\n\ninterface QueryElementBaseProps {\n readonly index: string;\n}\n\ninterface QueryElementProps {\n index: string;\n field: string;\n children?: React.ReactNode;\n path?: string;\n}\n\nexport const QueryElement = ({\n index,\n field,\n path,\n children,\n}: QueryElementProps) => {\n const coreDispatch = useCoreDispatch();\n const [, setQueryExpressionsExpanded] = useContext(\n QueryExpressionsExpandedContext,\n );\n const currentCohortId = useCoreSelector((state: CoreState) =>\n selectCurrentCohortId(state),\n );\n\n const fieldName = path && path != '.' ? [path, field].join('.') : field;\n const handleRemoveFilter = () => {\n coreDispatch(\n removeCohortFilter({\n index: index,\n field: fieldName,\n }),\n );\n setQueryExpressionsExpanded({\n type: 'clear',\n cohortId: currentCohortId,\n field: fieldName,\n });\n };\n\n return (\n <QueryItemContainer>\n {children}\n {/* ---\n // TODO: enable facet dropdown\n <button onClick={handlePopupFacet}>\n <DropDownIcon size=\"1.5em\" onClick={handlePopupFacet} />\n </button>\n -- */}\n <button\n className=\"bg-accent-vivid p-0 m-0 h-full rounded-r-sm text-white hover:bg-accent-darker\"\n onClick={handleRemoveFilter}\n aria-label={`remove ${fieldNameToTitle(field)}`}\n >\n <ClearIcon size=\"1.5em\" className=\"px-1\" />\n </button>\n </QueryItemContainer>\n );\n};\n\n/**\n * Processes a Filter into a component representation\n */\nclass CohortFilterToComponent implements OperationHandler<ReactElement> {\n private readonly index: string;\n private readonly path?: string;\n\n constructor(index: string, path = '.') {\n this.index = index;\n this.path = path;\n }\n\n handleIncludes = (f: Includes) => (\n <QueryElement key={f.field} {...f} index={this.index} path={this.path}>\n <IncludeExcludeQueryElement {...f} index={this.index} path={this.path} />\n </QueryElement>\n );\n handleExcludes = (f: Excludes) => (\n <QueryElement key={f.field} {...f} index={this.index} path={this.path}>\n <IncludeExcludeQueryElement {...f} index={this.index} path={this.path} />\n </QueryElement>\n );\n handleEquals = (f: Equals) => (\n <QueryElement key={f.field} {...f} index={this.index} path={this.path}>\n <ComparisonElement filter={f} index={this.index} />\n </QueryElement>\n );\n handleNotEquals = (f: NotEquals) => (\n <QueryElement key={f.field} {...f} index={this.index} path={this.path}>\n <ComparisonElement filter={f} index={this.index} />\n </QueryElement>\n );\n handleLessThan = (f: LessThan) => (\n <QueryElement key={f.field} {...f} index={this.index} path={this.path}>\n <ComparisonElement filter={f} index={this.index} />\n </QueryElement>\n );\n handleLessThanOrEquals = (f: LessThanOrEquals) => (\n <QueryElement key={f.field} {...f} index={this.index} path={this.path}>\n <ComparisonElement filter={f} index={this.index} />\n </QueryElement>\n );\n handleGreaterThan = (f: GreaterThan) => (\n <QueryElement key={f.field} {...f} index={this.index} path={this.path}>\n <ComparisonElement filter={f} index={this.index} />\n </QueryElement>\n );\n handleGreaterThanOrEquals = (f: GreaterThanOrEquals) => (\n <QueryElement key={f.field} {...f} index={this.index} path={this.path}>\n <ComparisonElement filter={f} index={this.index} />\n </QueryElement>\n );\n handleExists = (f: Exists) => (\n <QueryElement key={f.field} {...f} index={this.index} path={this.path}>\n <ExistsElement {...f} />\n </QueryElement>\n );\n handleMissing = (f: Missing) => (\n <QueryElement key={f.field} {...f} index={this.index} path={this.path}>\n <ExistsElement {...f} />\n </QueryElement>\n );\n handleExcludeIfAny = (f: ExcludeIfAny) => (\n <QueryElement key={f.field} {...f} index={this.index} path={this.path}>\n <IncludeExcludeQueryElement {...f} index={this.index} />\n </QueryElement>\n );\n\n handleIntersection = (f: Intersection) => {\n if (f.operands.length < 1) return null as unknown as ReactElement;\n\n // special case of ranges combined with AND\n if (\n f.operands.length == 2 &&\n isRangeOperation(f.operands[0]) &&\n isRangeOperation(f.operands[1])\n ) {\n return (\n <ClosedRangeQueryElement\n index={this.index}\n key={(f.operands[0] as ComparisonOperation).field}\n lower={f.operands[0] as ComparisonOperation}\n upper={f.operands[1] as ComparisonOperation}\n />\n );\n }\n // TODO: handle deeper nesting\n return null as unknown as ReactElement;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n handleUnion = (_f: Union) => {\n return <div>Union</div>;\n };\n handleNestedFilter = (op: NestedFilter) => {\n if (isNestedFilter(op.operand)) {\n const newOp = {\n ...op.operand,\n path: [op.path, op.operand.path].join('.'),\n } as NestedFilter;\n return convertFilterToComponent(\n newOp,\n this.index,\n [op.path, op.operand.path].join('.'),\n );\n } else {\n return convertFilterToComponent(op.operand, this.index, op.path);\n }\n };\n}\n\nexport const convertFilterToComponent = (\n filter: Operation,\n index: string,\n path = '.',\n): ReactElement => {\n const handler: OperationHandler<ReactElement> = new CohortFilterToComponent(\n index,\n path,\n );\n return handleOperation(handler, filter);\n};\n","export const SecondaryTabStyle =\n 'flex flex-row items-center bg-base-max text-primary border font-medium ' +\n 'border-solid border-primary hover:bg-secondary-darker ' +\n 'hover:text-secondary-content-lightest rounded-md first:border-r-0 ' +\n 'last:border-l-0 first:rounded-r-none last:rounded-l-none ' +\n 'hover:border-secondary data-active:bg-secondary ' +\n 'data-active:text-secondary-content-max';\n\nexport const getCombinedClassesExpandCollapseQuery = (\n allQueryExpressionsCollapsed: boolean,\n) => {\n const baseClasses =\n 'flex gap-0 items-center border-1 border-base-max rounded-md w-7 h-7';\n const dynamicClasses = allQueryExpressionsCollapsed\n ? 'text-primary bg-base-max'\n : 'text-base-max bg-transparent';\n const disabledClasses = 'disabled:opacity-50';\n const enabledHoverClasses =\n 'enabled:hover:bg-primary-darkest enabled:hover:text-primary-content-lightest enabled:hover:border-primary-darkest';\n return `${dynamicClasses} ${disabledClasses} ${enabledHoverClasses} ${baseClasses}`;\n};\n\nexport const getCombinedClassesForRowCollapse = (\n filtersSectionCollapsed: boolean,\n) => {\n const baseClasses =\n 'border-1 border-white rounded-md w-7 h-7 flex items-center';\n const dynamicClasses = !filtersSectionCollapsed\n ? 'text-primary bg-base-max'\n : 'text-base-max bg-transparent';\n const disabledClasses =\n 'disabled:opacity-50 disabled:bg-base-max disabled:text-primary';\n const enabledHoverClasses =\n 'enabled:hover:bg-primary-darkest enabled:hover:text-primary-content-lightest enabled:hover:border-primary-darkest';\n return `${disabledClasses} ${enabledHoverClasses} ${baseClasses} ${dynamicClasses}`;\n};\n","import React, { useState, useReducer, useRef } from 'react';\nimport { Tooltip } from '@mantine/core';\nimport { useDeepCompareEffect } from 'use-deep-compare';\nimport {\n MdOutlineArrowBackIos as LeftArrowIcon,\n MdOutlineArrowForwardIos as RightArrowIcon,\n MdKeyboardArrowDown as DownArrowIcon,\n MdKeyboardArrowUp as UpArrowIcon,\n} from 'react-icons/md';\nimport tw from 'tailwind-styled-components';\nimport { omit, partial } from 'lodash';\nimport { useCoreDispatch, clearCohortFilters, FilterSet } from '@gen3/core';\nimport OverflowTooltippedLabel from '../../components/OverflowTooltippedLabel';\nimport { convertFilterToComponent } from './QueryRepresentation';\nimport { QueryExpressionsExpandedContext, CollapsedStateReducerAction } from './QueryExpressionsExpandedContext';\n\nimport {\n getCombinedClassesExpandCollapseQuery,\n getCombinedClassesForRowCollapse,\n} from './style';\nimport {\n useUpdateFilters,\n} from '../../components/facets/utils';\nimport { useClearFilters } from '../../components/facets/hooks';\n\nconst QueryExpressionContainer = tw.div`\n flex\n items-center\n bg-base-min\n shadow-[0_-2px_6px_0_rgba(0,0,0,0.16)]\n border-secondary-darkest\n border-1\n border-l-4\n my-4\n mx-3\n`;\n\nconst MAX_HEIGHT_QE_SECTION = 120;\n\n\n\nconst reducer = (\n state: Record<string, Record<string, boolean>>,\n action: CollapsedStateReducerAction\n) => {\n switch (action.type) {\n case 'init':\n return {\n ...state,\n [action.cohortId]: {},\n };\n case 'expand':\n if (action.field) {\n return {\n ...state,\n [action.cohortId]: { ...state[action.cohortId], [action.field]: true },\n };\n } else\n return {\n ...state,\n [action.cohortId]: { ...state[action.cohortId] },\n };\n case 'collapse':\n if (action.field)\n return {\n ...state,\n [action.cohortId]: { ...state[action.cohortId], [action.field]: false },\n };\n else\n return {\n ...state,\n [action.cohortId]: { ...state[action.cohortId] },\n };\n case 'expandAll':\n return {\n ...state,\n [action.cohortId]: Object.fromEntries(\n Object.keys(state[action.cohortId]).map((q) => [q, true]),\n ),\n };\n case 'collapseAll':\n return {\n ...state,\n [action.cohortId]: Object.fromEntries(\n Object.keys(state[action.cohortId]).map((q) => [q, false]),\n ),\n };\n case 'clear':\n if (!action.field) {\n return { ...state, [action.cohortId]: {} };\n } else {\n return {\n ...state,\n [action.cohortId]: omit(state[action.cohortId], action.field),\n };\n }\n }\n};\n\ninterface QueryExpressionSectionProps {\n readonly index: string;\n readonly filters: FilterSet;\n readonly currentCohortName: string;\n readonly currentCohortId: string;\n}\n\n\n\nconst QueryExpressionSection : React.FC<QueryExpressionSectionProps> = ({\n index,\n filters,\n currentCohortName,\n currentCohortId,\n}: QueryExpressionSectionProps) => {\n const [expandedState, setExpandedState] = useReducer(reducer, {});\n const [filtersSectionCollapsed, setFiltersSectionCollapsed] = useState(true);\n const filtersRef = useRef<HTMLDivElement>(null);\n const [QESectionHeight, setQESectionHeight] = useState(0);\n const dispatch = useCoreDispatch();\n\n useDeepCompareEffect(() => {\n if (filtersRef.current) {\n const height = filtersRef.current.scrollHeight;\n setQESectionHeight(\n height > MAX_HEIGHT_QE_SECTION ? MAX_HEIGHT_QE_SECTION : height,\n );\n }\n }, [expandedState, filters, filtersRef]);\n\n const clearAllFilters = () => {\n dispatch(clearCohortFilters({index: index}));\n setExpandedState({ type: 'clear', cohortId: currentCohortId, field: 'unset' });\n };\n const allQueryExpressionsCollapsed = Object.values(\n expandedState?.[currentCohortId] || {},\n ).every((q) => !q);\n\n const noFilters = Object.keys(filters?.root || {}).length === 0;\n\n const dataFunctions = {\n useUpdateFacetFilters: partial(useUpdateFilters, index),\n useClearFilter: partial(useClearFilters, index),\n };\n\n useDeepCompareEffect(() => {\n if (expandedState?.[currentCohortId] === undefined) {\n setExpandedState({ type: 'init', cohortId: currentCohortId, field: 'unset' });\n }\n }, [currentCohortId, expandedState]);\n\n return (\n <QueryExpressionContainer>\n <QueryExpressionsExpandedContext.Provider\n value={[expandedState[currentCohortId], setExpandedState]}\n >\n <div className=\"flex flex-col w-full bg-primary\">\n <div\n data-testid=\"text-cohort-filters-top-row\"\n className=\"flex flex-row py-2 items-center border-secondary-darkest border-b-1\"\n >\n <OverflowTooltippedLabel\n label={currentCohortName}\n className=\"font-bold text-secondary-contrast-darkest ml-3 max-w-[260px]\"\n >\n {currentCohortName}\n </OverflowTooltippedLabel>\n <React.Fragment>\n <button\n data-testid=\"button-clear-all-cohort-filters\"\n className={`text-sm font-montserrat ml-2 px-1 hover:bg-primary-darkest hover:text-primary-content-lightest hover:rounded-md ${\n noFilters\n ? 'hidden'\n : 'cursor-pointer text-secondary-contrast-darkest'\n }`}\n onClick={clearAllFilters}\n disabled={noFilters}\n >\n Clear All\n </button>\n <div className=\"display flex gap-2 ml-auto mr-3\">\n <Tooltip\n label={\n noFilters\n ? 'No values to expand/collapse'\n : allQueryExpressionsCollapsed\n ? 'Expand all values'\n : 'Collapse all values'\n }\n >\n <button\n data-testid=\"button-expand-collapse-cohort-queries\"\n color=\"white\"\n onClick={() =>\n allQueryExpressionsCollapsed\n ? setExpandedState({\n type: 'expandAll',\n cohortId: currentCohortId,\n })\n : setExpandedState({\n type: 'collapseAll',\n cohortId: currentCohortId,\n })\n }\n aria-label=\"Expand/collapse all queries\"\n aria-expanded={!allQueryExpressionsCollapsed}\n className={getCombinedClassesExpandCollapseQuery(\n allQueryExpressionsCollapsed,\n )}\n disabled={noFilters}\n >\n {allQueryExpressionsCollapsed ? (\n <React.Fragment>\n <LeftArrowIcon size={16} aria-hidden=\"true\" />\n <RightArrowIcon size={16} aria-hidden=\"true\" />\n </React.Fragment>\n ) : (\n <React.Fragment>\n <RightArrowIcon size={16} aria-hidden=\"true\" />\n <LeftArrowIcon size={16} aria-hidden=\"true\" />\n </React.Fragment>\n )}\n </button>\n </Tooltip>\n\n <Tooltip\n label={\n noFilters || filtersRef.current != null &&\n filtersRef?.current?.scrollHeight <= MAX_HEIGHT_QE_SECTION\n ? 'All rows are already displayed'\n : filtersSectionCollapsed\n ? 'Display all rows'\n : 'Display fewer rows'\n }\n >\n <button\n data-testid=\"button-expand-collapse-cohort-filters-section\"\n color=\"white\"\n onClick={() =>\n setFiltersSectionCollapsed(!filtersSectionCollapsed)\n }\n aria-label=\"Expand/collapse filters section\"\n aria-expanded={!filtersSectionCollapsed}\n disabled={\n noFilters || filtersRef.current != null &&\n filtersRef?.current?.scrollHeight <= MAX_HEIGHT_QE_SECTION\n }\n className={getCombinedClassesForRowCollapse(\n filtersSectionCollapsed,\n )}\n >\n {filtersSectionCollapsed ? (\n <React.Fragment>\n <DownArrowIcon size={30} aria-hidden=\"true\" />\n </React.Fragment>\n ) : (\n <React.Fragment>\n <UpArrowIcon size={30} aria-hidden=\"true\" />\n </React.Fragment>\n )}\n </button>\n </Tooltip>\n </div>\n </React.Fragment>\n </div>\n <div\n data-testid=\"text-cohort-filters\"\n className=\"flex flex-wrap bg-base-max w-full p-2 overflow-x-hidden\"\n style={\n filtersSectionCollapsed\n ? { maxHeight: `${QESectionHeight}px`, overflowY: 'scroll' }\n : undefined\n }\n ref={filtersRef}\n >\n {noFilters ? (\n <p\n data-testid=\"text-no-active-cohort-filter\"\n className=\"font-content\"\n >\n No filters currently applied.\n </p>\n ) : (\n Object.keys(filters.root).map((k) => {\n return convertFilterToComponent(filters.root[k], index);\n })\n )}\n </div>\n </div>\n </QueryExpressionsExpandedContext.Provider>\n </QueryExpressionContainer>\n );\n};\n\nexport default QueryExpressionSection;\n","import {\n useCoreSelector,\n selectCurrentCohortId,\n selectCurrentCohortName,\n CoreState,\n} from '@gen3/core';\n\nimport { useCohortFacetFilters } from './hooks';\nimport QueryExpressionSection from './QueryExpressionSection';\n\ninterface CohortManagerProps {\n index: string;\n}\n\nconst CohortManager = ( { index } : CohortManagerProps) => {\n const currentCohortId = useCoreSelector((state:CoreState) =>\n selectCurrentCohortId(state)\n );\n const currentCohortName = useCoreSelector((state: CoreState) =>\n selectCurrentCohortName(state)\n );\n const filters = useCohortFacetFilters(index);\n\n return <div className=\"mb-2\">\n <QueryExpressionSection\n index={index}\n filters={filters}\n currentCohortName={currentCohortName}\n currentCohortId={currentCohortId}\n />\n </div>;\n};\n\nexport default CohortManager;\n","import { JSONObject } from '@gen3/core';\nimport { JSONPath } from 'jsonpath-plus';\n\nexport const jsonPathAccessor = (path: string) => (row: JSONObject) => {\n // TODO: add logging if path is not found\n return JSONPath({ json: row, path: path });\n};\n","import { RenderFactoryTypedInstance } from '../../../utils/RendererFactory';\nimport React, { ReactNode } from 'react';\nimport { isArray } from 'lodash';\nimport { Badge, Text } from '@mantine/core';\nimport { CellRendererFunctionProps } from './types';\n\nexport interface CellRendererFunctionCatalogEntry {\n [key: string]: CellRendererFunction;\n}\n\nexport type CellRendererFunction = (\n props: CellRendererFunctionProps,\n ...args: any[]\n) => ReactNode;\n\n// TODO need to type this\nexport const RenderArrayCell: CellRendererFunction = ({\n cell,\n}: CellRendererFunctionProps) => {\n const value = cell.getValue();\n if (isArray(value)) {\n return (\n <div className=\"w-64 flex flex-wrap gap-0.5\">\n {value.map((x, index) => (\n <Badge\n variant=\"outline\"\n classNames={{ root: 'basis-1/3' }}\n color=\"accent-light\"\n key={`${cell.id}-value-${index}`}\n >\n {x}\n </Badge>\n ))}\n </div>\n );\n }\n return <span>value</span>;\n};\n\nexport const RenderArrayCellNegativePositive = ({\n cell,\n}: CellRendererFunctionProps) => {\n const value = cell.getValue();\n if (isArray(value)) {\n return (\n <div className=\"w-64 flex flex-wrap gap-0.5\">\n {value.map((x, index) => (\n <Badge\n variant=\"filled\"\n color={x === 'Positive' ? 'green' : 'gray'}\n classNames={{ root: 'basis-1/3' }}\n key={`${cell.id}-value-${index}`}\n >\n {x}\n </Badge>\n ))}\n </div>\n );\n }\n return <span>value</span>;\n};\n\nconst ValueCellRenderer = ({ cell }: CellRendererFunctionProps) => {\n return <span>{cell.getValue() as ReactNode}</span>;\n};\n\nconst ArrayCellFunctionCatalog = {\n NegativePositive: RenderArrayCellNegativePositive,\n default: RenderArrayCell,\n};\n\nconst RenderLinkCell = (\n { cell }: CellRendererFunctionProps,\n ...args: Array<Record<string, unknown>>\n) => {\n return (\n <a\n href={`${args[0].baseURL}${cell.getValue()}`}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n <Text c=\"blue\" td=\"underline\" fw={700}>\n {' '}\n {cell.getValue() as ReactNode}{' '}\n </Text>\n </a>\n );\n};\n\nconst RenderLinkCellUsingValueMap = (\n { cell }: CellRendererFunctionProps,\n ...args: Array<Record<string, unknown>>\n) => {\n let href = null;\n if (\n typeof args[0] === 'object' &&\n Object.keys(args[0]).includes('valueToURL')\n ) {\n const linkMap = args[0].valueToURL as Record<string, string>;\n href = linkMap[cell.getValue() as string] ?? null;\n }\n if (!href) return <Text fw={700}> {cell.getValue() as ReactNode} </Text>;\n\n return (\n <a href={`${href}`} target=\"_blank\" rel=\"noreferrer\">\n <Text c=\"blue\" td=\"underline\" fw={700}>\n {' '}\n {cell.getValue() as ReactNode}{' '}\n </Text>\n </a>\n );\n};\n\nconst LinkCellFunctionCatalog = {\n default: RenderLinkCell,\n linkWithValueMap: RenderLinkCellUsingValueMap,\n};\n\nlet instance: RenderFactoryTypedInstance<CellRendererFunctionProps>;\n\nexport const ExplorerTableCellRendererFactory =\n (): RenderFactoryTypedInstance<CellRendererFunctionProps> => {\n if (!instance) {\n instance = new RenderFactoryTypedInstance<CellRendererFunctionProps>();\n }\n return instance;\n };\n\n// register default cell renderers\nexport const registerExplorerDefaultCellRenderers = () => {\n ExplorerTableCellRendererFactory().registerRendererCatalog({\n value: {\n default: ValueCellRenderer,\n },\n });\n ExplorerTableCellRendererFactory().registerRendererCatalog({\n array: ArrayCellFunctionCatalog,\n });\n ExplorerTableCellRendererFactory().registerRendererCatalog({\n link: LinkCellFunctionCatalog,\n });\n};\n","import { LoadingOverlay, Stack, Table, Text } from '@mantine/core';\nimport { JSONObject, useGeneralGQLQuery } from '@gen3/core';\nimport ErrorCard from '../../../../components/ErrorCard';\nimport { TableDetailsPanelProps } from './types';\n\ninterface QueryResponse {\n data?: Record<string, Array<any>>;\n}\n\nfunction isQueryResponse(obj: any): obj is QueryResponse {\n // Considering that the data property can be optional\n return (\n typeof obj === 'object' &&\n (obj.data === undefined || typeof obj.data === 'object')\n );\n}\n\nconst ExtractData = (\n data: QueryResponse,\n index: string,\n): Record<string, any> => {\n if (data === undefined || data === null) return {};\n if (data.data === undefined || data.data === null) return {};\n\n return Array.isArray(data.data[index]) && data.data[index].length > 0\n ? data.data[index][0]\n : {};\n};\n\nexport const TableDetailsPanel = ({\n id,\n index,\n tableConfig,\n}: TableDetailsPanelProps) => {\n //const [queryGuppy, { data, isLoading, isError }] = useLazyGeneralGQLQuery();\n const idField = tableConfig.detailsConfig?.idField;\n const { data, isLoading, isError } = useGeneralGQLQuery({\n query: `query ($filter: JSON) {\n ${index} (filter: $filter, accessibility: all) {\n ${tableConfig.fields}\n }\n }`,\n variables: {\n filter: {\n AND: [\n {\n IN: {\n [idField ?? 0]: [id],\n },\n },\n ],\n },\n },\n });\n\n if (!idField || idField === null) {\n return (\n <ErrorCard message={'idField not configure in Tables Details Config'} />\n );\n }\n\n if (isError) {\n return <ErrorCard message={'Error occurred while fetching data'} />;\n }\n\n const queryData = isQueryResponse(data) ? ExtractData(data, index) : {};\n\n const rows = Object.entries(queryData).map(([field, value]) => (\n <tr key={field}>\n <td>\n <Text fw=\"bold\">{field}</Text>\n </td>\n <td>\n <Text>{value ? (value as string) : ''}</Text>\n </td>\n </tr>\n ));\n return (\n <Stack>\n <LoadingOverlay visible={isLoading} />\n <Text color=\"primary.4\">Results for {id}</Text>\n <Table withTableBorder withColumnBorders>\n <thead>\n <tr>\n <th>Field</th>\n <th>Value</th>\n </tr>\n </thead>\n <tbody>{rows}</tbody>\n </Table>\n </Stack>\n );\n};\n\nexport default TableDetailsPanel;\n","import { RenderFactoryTypedInstance } from '../../../../utils/RendererFactory';\nimport { TableDetailsPanelProps } from './types';\nimport TableDetailsPanel from './TableDetailsPanel';\n\nlet instance: RenderFactoryTypedInstance<TableDetailsPanelProps>;\n\nconst DefaultRendererCatalog = {\n tableDetails: {\n default: TableDetailsPanel,\n },\n};\n\nconst ExplorerTableDetailsPanelFactory =\n (): RenderFactoryTypedInstance<TableDetailsPanelProps> => {\n if (!instance) {\n instance = new RenderFactoryTypedInstance<TableDetailsPanelProps>();\n }\n return instance;\n };\n\nexport const registerCohortBuilderDefaultPreviewRenderers = () => {\n ExplorerTableDetailsPanelFactory().registerRendererCatalog(\n DefaultRendererCatalog,\n );\n};\n\nexport default ExplorerTableDetailsPanelFactory;\n","import { useDisclosure } from '@mantine/hooks';\nimport { Modal } from '@mantine/core';\nimport { DetailsComponentProps, DetailsPanelComponentProps } from './types';\nimport { useEffect, useMemo } from 'react';\nimport { mergeDefaultTailwindClassnames } from '../../utils/mergeDefaultTailwindClassnames';\n\nconst DEFAULT_PROPS = {\n body: 'bg-base-max',\n header: '!bg-primary !pb-9 !mb-9',\n title: '!text-primary-contrast !font-bold',\n close: '!bg-base-darker',\n};\n\nexport const DetailsModal = <\n T extends DetailsPanelComponentProps = DetailsPanelComponentProps,\n>({\n title,\n id,\n classNames,\n panel,\n panelProps,\n onClose,\n withCloseButton = true,\n closeOnClickOutside = true,\n closeOnEscape = true,\n size = 'auto',\n}: DetailsComponentProps<T>) => {\n const [opened, { open, close }] = useDisclosure(id !== undefined);\n\n const styling = useMemo(\n () => mergeDefaultTailwindClassnames(DEFAULT_PROPS, classNames ?? {}, true),\n [classNames],\n );\n\n useEffect(() => {\n if (id !== undefined) open();\n else close();\n }, [close, id, open]);\n\n return (\n <Modal\n opened={opened}\n onClose={() => {\n close();\n onClose && onClose(id);\n }}\n title={title}\n withinPortal={true}\n withCloseButton={withCloseButton}\n closeOnClickOutside={closeOnClickOutside}\n closeOnEscape={closeOnEscape}\n size={size}\n yOffset=\"3vh\"\n classNames={styling}\n xOffset={0}\n >\n {panel({ id: id, onClose, ...panelProps })}\n </Modal>\n );\n};\n\nexport default DetailsModal;\n","import React, { useCallback, useMemo, useState } from 'react';\nimport { useDeepCompareMemo } from 'use-deep-compare';\nimport {\n Accessibility,\n CoreState,\n fieldNameToTitle,\n JSONObject,\n selectIndexFilters,\n useCoreSelector,\n useGetRawDataAndTotalCountsQuery,\n} from '@gen3/core';\nimport {\n MantineReactTable,\n type MRT_Column,\n type MRT_PaginationState,\n type MRT_Row,\n type MRT_RowSelectionState,\n type MRT_SortingState,\n useMantineReactTable,\n} from 'mantine-react-table';\nimport { jsonPathAccessor } from '../../../components/Tables/utils';\nimport { TableIcons } from '../../../components/Tables/TableIcons';\nimport {\n ExplorerTableProps,\n SummaryTable,\n CellRendererFunctionProps,\n} from './types';\nimport {\n CellRendererFunction,\n ExplorerTableCellRendererFactory,\n} from './ExplorerTableCellRenderers';\nimport {\n ExplorerTableDetailsPanelFactory,\n type TableDetailsPanelProps,\n} from './ExploreTableDetails';\nimport { DetailsModal } from '../../../components/Details';\n\nconst DEFAULT_PAGE_LIMIT_LABEL = 'Rows per Page (Limited to 10,0000):';\nconst DEFAULT_PAGE_LIMIT = 10000;\n\nconst isRecordAny = (obj: unknown): obj is Record<string, any> => {\n if (Array.isArray(obj)) return false;\n\n return obj !== null && typeof obj === 'object';\n};\n\ninterface ExplorerColumn {\n field: string;\n accessorKey: never;\n header: string;\n accessorFn?: (originalRow: ExplorerColumn) => any;\n Cell?: CellRendererFunction;\n size?: number;\n}\n\n/**\n * Main table component for the explorer page. Fetches data from guppy using\n * useGetRawDataAndTotalCountsQuery() hook that leverages guppy core API slices\n *\n * @param index - Offset to use for fetching/displaying pages of rows\n * @param tableConfig - Inherited from ExplorerPageGetServerSideProps\n */\nconst ExplorerTable = ({ index, tableConfig }: ExplorerTableProps) => {\n const [pagination, setPagination] = useState<MRT_PaginationState>({\n pageIndex: 0,\n pageSize: 10,\n });\n\n const DetailsComponent = DetailsModal<TableDetailsPanelProps>;\n\n const [sorting, setSorting] = useState<MRT_SortingState>([]);\n const [rowSelection, setRowSelection] = useState<MRT_RowSelectionState>({});\n\n const DetailsPanel = useMemo(\n () =>\n ExplorerTableDetailsPanelFactory().getRenderer(\n 'tableDetails',\n tableConfig?.detailsConfig?.panel ?? 'default',\n ),\n [],\n );\n\n const cols = useDeepCompareMemo(() => {\n // setup table columns at the same time\n // TODO: refactor to support more complex table configs\n return tableConfig.fields.map((field) => {\n const columnDef = tableConfig?.columns?.[field];\n\n const cellRendererFunc = columnDef?.type\n ? ExplorerTableCellRendererFactory().getRenderer(\n columnDef?.type,\n columnDef?.cellRenderFunction ?? 'default',\n )\n : undefined;\n\n const cellRendererFuncParams =\n columnDef?.params && isRecordAny(columnDef?.params)\n ? columnDef?.params\n : {};\n return {\n id: field,\n field: field,\n accessorKey: field as never,\n header: columnDef?.title ?? fieldNameToTitle(field),\n accessorFn: columnDef?.accessorPath\n ? jsonPathAccessor(columnDef.accessorPath)\n : undefined,\n Cell:\n cellRendererFunc && columnDef?.params\n ? (cell: CellRendererFunctionProps) =>\n cellRendererFunc(cell, cellRendererFuncParams)\n : cellRendererFunc\n ? cellRendererFunc\n : undefined,\n\n size: columnDef?.width,\n enableSorting: columnDef?.sortable ?? undefined,\n };\n }, [] as MRT_Column<ExplorerColumn>[]);\n }, [tableConfig]);\n\n // TODO: add support for nested fields\n const fields = useMemo(() => cols.map((column) => column.field), [cols]);\n\n const getRowId = useCallback((tableConfig: SummaryTable) => {\n const { detailsConfig } = tableConfig || {};\n const idField: string | undefined = detailsConfig?.idField;\n return (\n originalRow: JSONObject,\n _index: number,\n _parentRow: MRT_Row<JSONObject>,\n ) =>\n idField && Object.keys(originalRow).includes(idField)\n ? (originalRow[idField] as string)\n : undefined;\n }, []);\n\n const cohortFilters = useCoreSelector((state: CoreState) =>\n selectIndexFilters(state, index),\n );\n\n const { data, isLoading, isError, isFetching } =\n useGetRawDataAndTotalCountsQuery({\n type: index,\n fields: fields,\n filters: cohortFilters,\n offset: pagination.pageIndex * pagination.pageSize,\n size: pagination.pageSize,\n sort:\n sorting.length > 0\n ? (sorting.map((x) => {\n return { [x.id]: x.desc ? 'desc' : 'asc' };\n }) as Record<string, 'desc' | 'asc'>[])\n : undefined,\n accessibility: Accessibility.ACCESSIBLE,\n });\n\n const { totalRowCount, limitLabel } = useDeepCompareMemo(() => {\n const pageLimit =\n (tableConfig?.pageLimit && tableConfig?.pageLimit?.limit) ??\n DEFAULT_PAGE_LIMIT;\n const totalRowCount = tableConfig?.pageLimit\n ? Math.min(\n pageLimit,\n data?.data._aggregation?.[index]._totalCount ?? pagination.pageSize,\n )\n : data?.data._aggregation?.[index]._totalCount ?? pagination.pageSize;\n const limitLabel = tableConfig?.pageLimit\n ? tableConfig?.pageLimit?.label ?? DEFAULT_PAGE_LIMIT_LABEL\n : 'Rows per Page:';\n return { totalRowCount, limitLabel };\n }, [tableConfig, data, pagination.pageSize, index]);\n /**\n * mantine-react-table setup\n * @see https://www.mantine-react-table.com/docs/api/table-options\n * @param columns - column options table config\n * @see https://www.mantine-react-table.com/docs/api/column-options\n * @param data - data array, from useGetRawDataAndTotalCountsQuery()\n * @param manualSorting - If this is true, you will be expected to sort your data before it is passed to the table.\n * @param manualPagination - If this is true, you will be expected to manually paginate the rows before passing them to the table\n0.\n * @param paginateExpandedRows - If true expanded rows will be paginated along with the rest of the table (which means expanded rows may span multiple pages) -\n * @param onPaginationChange - If this function is provided, it will be called when the pagination state changes and you will be expected to manage the state yourself\n * @param onSortingChange - If provided, this function will be called with an updaterFn when variable state. sorting changes. Overrides default internal state management\n * @param enableTopToolbar - enables additional ux features\n * @param rowCount - Number of rows in the table\n * @param tableConfig - Inherited from ExplorerPageGetServerSideProps\n * @param {Partial<MRT_TableState<TData>>} state - State management configs\n * @see https://www.mantine-react-table.com/docs/guides/state-management#manage-individual-states-as-needed\n */\n\n const table = useMantineReactTable<JSONObject>({\n columns: cols as any[], //TODO: fix this\n data: data?.data?.[index] ?? [],\n manualSorting: true,\n manualPagination: true,\n enableStickyHeader: true,\n paginateExpandedRows: false,\n onPaginationChange: setPagination,\n onSortingChange: setSorting,\n enableTopToolbar: false,\n getRowId: getRowId(tableConfig),\n rowCount: totalRowCount,\n icons: TableIcons,\n paginationDisplayMode: 'pages',\n enableRowSelection: tableConfig?.selectableRows ?? false,\n localization: { rowsPerPage: limitLabel },\n mantinePaginationProps: {\n rowsPerPageOptions: ['5', '10', '20', '40', '100'],\n withEdges: false, //note: changed from `showFirstLastButtons` in v1.0\n },\n mantineTableHeadCellProps: {\n style: {\n '--mrt-base-background-color': 'var(--mantine-color-table-1)',\n color: `var(--mantine-color-table-contrast-5')`,\n },\n // sx: (theme) => {\n // console.log('theme', theme);\n // return {\n // backgroundColor: theme.colors.table[1],\n // color: theme.colors['table-contrast'][5],\n // textAlign: 'center',\n // padding: theme.spacing.md,\n // fontWeight: 'bold',\n // fontSize: theme.fontSizes.lg,\n // };\n // },\n },\n state: {\n isLoading,\n pagination,\n sorting,\n showProgressBars: isFetching,\n showAlertBanner: isError,\n density: 'xs',\n rowSelection: rowSelection,\n },\n mantineTableBodyRowProps:\n tableConfig.detailsConfig?.mode === 'click'\n ? ({ row }) => ({\n onClick: () => {\n if (Object.keys(rowSelection).includes(row.id)) {\n setRowSelection({});\n } else {\n setRowSelection({ [row.id as string]: true });\n }\n },\n sx: {\n cursor: 'pointer', //you might want to change the cursor too when adding an onClick\n },\n })\n : {},\n });\n return (\n <React.Fragment>\n {Object.keys(rowSelection).length > 0 ? (\n <DetailsComponent\n title={tableConfig?.detailsConfig?.title}\n id={\n Object.keys(rowSelection).length > 0\n ? Object.keys(rowSelection).at(0)\n : undefined\n }\n onClose={() => setRowSelection({})}\n panel={DetailsPanel}\n classNames={tableConfig?.detailsConfig?.classNames}\n panelProps={{\n index,\n tableConfig,\n ...(tableConfig?.detailsConfig?.params ?? {}),\n }}\n />\n ) : null}\n\n <div className=\"inline-block overflow-x-scroll\">\n <MantineReactTable table={table} />\n </div>\n </React.Fragment>\n );\n};\n\nexport default ExplorerTable;\n","import { Paper, LoadingOverlay, Text } from '@mantine/core';\n\ninterface CountsValueProps {\n readonly label: string;\n readonly counts?: number;\n readonly isSuccess: boolean;\n}\n\nconst CountsValue = ({ label, isSuccess, counts }: CountsValueProps) => {\n // TODO handle case of data.length == 1\n return (\n <div className=\"mr-4\">\n <LoadingOverlay visible={!isSuccess} />\n <Paper\n shadow=\"xs\"\n p=\"xs\"\n withBorder\n className=\"bg-primary font-heading text-md font-semibold\"\n >\n {`${counts?.toLocaleString() ?? '...'} ${label}`}\n </Paper>\n </div>\n );\n};\n\nexport default CountsValue;\n","import Cookies from 'universal-cookie';\nimport { CoreDispatch, Modals, showModal } from '@gen3/core';\nimport { Button } from '@mantine/core';\nimport { cleanNotifications, showNotification } from '@mantine/notifications';\nimport { includes, isPlainObject, reduce, uniqueId } from 'lodash';\nimport { RiCloseCircleLine as CloseIcon } from 'react-icons/ri';\n\nconst hashString = (s: string) =>\n s.split('').reduce((acc, c) => (acc << 5) - acc + c.charCodeAt(0), 0);\n\nconst getBody = (iframe: HTMLIFrameElement) => {\n const document = iframe?.contentWindow || iframe?.contentDocument;\n return (document as Window)?.document?.body || (document as Document)?.body;\n};\n\nconst toHtml = (key: string, value: any) =>\n `<input\n type=\"hidden\"\n name=\"${key}\"\n value=\"${\n isPlainObject(value)\n ? JSON.stringify(value).replace(/\"/g, '"')\n : value\n }\"\n />`;\n\nconst customKeys = ['expand', 'fields', 'facets'];\n\nconst processParamObj = (key: string, value: any) =>\n includes(customKeys, key) ? [].concat(value).join() : value;\n\n\n/**\n * A notification box that is used to alert the user that their\n * selected file downloads are in progress\n * @param onClick - Function to handle click on cancel button\n */\nexport const DownloadNotification = ({ onClick }: { onClick: () => void }) => {\n return (\n <div>\n <p>Download preparation in progress. Please wait...</p>\n <Button\n variant=\"white\"\n leftSection={<CloseIcon aria-hidden=\"true\" />}\n style={{ color: '#155276', cursor: 'pointer' }}\n onClick={onClick}\n >\n Cancel Download\n </Button>\n </div>\n );\n};\n\n/*\nTODO - handle slow download notification PEAR-624\nconst SlowDownloadNotification = ({ onClick }: { onClick: () => void }) => (\n <>\n <div>\n <div>\n The download preparation can take time due to different factors (total\n file size, number of files, or number of concurrent users).\n </div>\n <div>\n We recommend that you use the{\" \"}\n <a\n href=\"https://gdc.cancer.gov/access-data/gdc-data-transfer-tool\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {\" \"}\n GDC Data Transfer Tool\n </a>{\" \"}\n or cancel the download and try again later.\n </div>\n <Button\n variant=\"white\"\n leftIcon={<CloseIcon />}\n style={{ color: \"#155276\", cursor: \"pointer\" }}\n onClick={onClick}\n >\n Cancel Download\n </Button>\n </div>\n </>\n);\n*/\n\nexport interface DownloadFunctionParams<\n T extends Record<string, any> = Record<string, any>,\n> {\n endpoint: string;\n params: T;\n method: string;\n dispatch: CoreDispatch;\n done?: () => void;\n Modal403?: Modals;\n Modal400?: Modals;\n customErrorMessage?: string;\n hideNotification?: boolean;\n}\n\nexport type DownloadFunction<\n T extends Record<string, any> = Record<string, any>,\n> = (params: DownloadFunctionParams<T>) => Promise<void>;\n\n/**\n * Trigger a download by attaching an iFrame to the document with the parameters of the request as fields in a form\n * @param endpoint - endpoint to be attached with\n * @param params - body to be attached with post request\n * @param method - Request Method: GET, PUT, POST\n * @param dispatch - dispatch send from the parent component to dispatch Modals\n * @param done - callback function to be called after the download has been initiated\n * @param Modal400 - Modal for 400 error\n * @param Modal403 - Modal for 403 error\n * @param customErrorMessage - custom message to be passed for 400 errors\n * @param hideNotification - hide the notification\n */\n\nconst download = async <T extends Record<string, any> = Record<string, any>>({\n endpoint,\n params,\n method,\n dispatch,\n done,\n Modal400 = Modals.GeneralErrorModal,\n Modal403 = Modals.NoAccessModal,\n customErrorMessage,\n hideNotification = false,\n}: DownloadFunctionParams<T>): Promise<void> => {\n const cookies = new Cookies();\n\n /* Create a cookie with a unique identifier to attach to request. Response from server will use the set-cookie header\n to remove the cookie when the response is received (aka the download starts). This will only work on when the FE and BE\n are on the same domain.\n */\n\n const downloadToken = uniqueId(`${+new Date()}-`);\n const cookieKey = navigator.cookieEnabled\n ? Math.abs(hashString(JSON.stringify(params) + downloadToken)).toString(16)\n : null;\n\n if (cookieKey) {\n cookies.set(cookieKey, downloadToken);\n }\n\n // place notification in timeout to avoid flicker on fast calls\n const showNotificationTimeout = setTimeout(\n () =>\n showNotification({\n message: (\n <DownloadNotification\n onClick={() => {\n iFrame.remove();\n cleanNotifications();\n if (done) {\n done();\n }\n }}\n />\n ),\n styles: () => ({\n root: {\n textAlign: 'center',\n display: hideNotification ? 'none' : 'block',\n },\n closeButton: {\n color: 'black',\n '&:hover': {\n backgroundColor: 'lightslategray',\n },\n },\n }),\n closeButtonProps: { 'aria-label': 'Close notification' },\n }),\n 100,\n ); // set to 100 as that is perceived as instant\n\n const fields = reduce(\n {\n ...params,\n downloadCookieKey: cookieKey,\n downloadCookiePath: '/',\n attachment: true,\n ...(params.filename !== undefined ? { download: params.filename } : {}),\n },\n (result, value, key) => {\n const paramValue = processParamObj(key, value);\n return (\n result +\n [].concat(paramValue).reduce((acc, v) => acc + toHtml(key, v), '')\n );\n },\n '',\n );\n\n const iFrame = document.createElement('iframe');\n iFrame.style.display = 'none';\n iFrame.src = 'about:blank';\n\n // Appending to document body to allow navigation away from the current\n // page and downloads in the background\n document.body.appendChild(iFrame);\n\n const pollForDownloadResult = async () => {\n const executePoll = async (resolve: (value?: unknown) => void) => {\n // Request has been canceled\n const body = getBody(iFrame);\n if (body === undefined) {\n resolve();\n return;\n }\n\n const content = body?.textContent;\n // Download has started\n if (cookieKey !== null && !cookies.get(cookieKey)) {\n clearTimeout(showNotificationTimeout);\n cleanNotifications();\n if (done) {\n done();\n }\n resolve();\n } else {\n const iFrameHasContent = iFrame.contentWindow?.document.body;\n const requestError =\n iFrame.contentWindow?.document.getElementsByTagName('form').length ===\n 0 && content !== '';\n if (iFrameHasContent && requestError) {\n clearTimeout(showNotificationTimeout);\n cleanNotifications();\n\n const errorMessage = /{\"(?:message|error)\":\"([^\"]*)\"/g.exec(\n content ?? 'Undefined',\n )?.[1];\n if (\n errorMessage === 'internal server error' ||\n errorMessage === undefined\n ) {\n dispatch(showModal({ modal: Modal400, message: errorMessage }));\n } else if (\n errorMessage ===\n 'Your token is invalid or expired. Please get a new token.'\n ) {\n dispatch(showModal({ modal: Modal403, message: errorMessage }));\n } else {\n dispatch(\n showModal({\n modal: Modal400,\n message: customErrorMessage || errorMessage,\n }),\n );\n }\n\n if (done) {\n done();\n }\n resolve();\n } else {\n setTimeout(executePoll, 1000, resolve);\n }\n }\n };\n\n return new Promise(executePoll);\n };\n\n const addFormAndSubmit = () => {\n //do all of this together for FireFox support\n const form = document.createElement('form');\n form.method = method.toUpperCase();\n form.action = endpoint;\n form.innerHTML = fields;\n\n getBody(iFrame).appendChild(form);\n\n form.submit();\n };\n\n addFormAndSubmit();\n await pollForDownloadResult();\n iFrame.remove();\n};\n\nexport default download;\n","import { useState, useCallback } from 'react';\nimport { Modals, showModal, useCoreDispatch } from '@gen3/core';\nimport { GuppyActionButtonProps } from '../types';\nimport { cleanNotifications, showNotification } from '@mantine/notifications';\nimport { DownloadNotification } from '../../../utils/download';\nimport { Loader } from '@mantine/core';\nimport { FiDownload } from 'react-icons/fi';\nimport { useDeepCompareCallback } from 'use-deep-compare';\n\nconst showErrorMessage = (error: Error) => {\n showNotification({\n message: error.message,\n });\n};\n\ninterface GuppyDownloadActionHookProps extends Pick<\n GuppyActionButtonProps,\n | 'Modal403'\n | 'Modal400'\n | 'done'\n | 'customErrorMessage'\n | 'hideNotification'\n | 'actionFunction'\n | 'actionArgs'\n> {\n setIsActive?: (active: boolean) => void;\n}\n\nconst useGuppyActionButton = ({\n Modal403 = Modals.NoAccessModal,\n Modal400 = Modals.GeneralErrorModal,\n done,\n customErrorMessage,\n hideNotification = false,\n actionFunction,\n actionArgs,\n setIsActive = (_:boolean) => null,\n}: GuppyDownloadActionHookProps) => {\n const [active, setActive] = useState(false);\n const dispatch = useCoreDispatch();\n\n const handleError = useDeepCompareCallback(\n (error: Error) => {\n const errorMessage: string = error.message;\n if (\n errorMessage === 'internal server error' ||\n errorMessage === undefined\n ) {\n dispatch(showModal({ modal: Modal400, message: errorMessage }));\n } else if (\n errorMessage ===\n 'Your token is invalid or expired. Please get a new token.'\n ) {\n dispatch(showModal({ modal: Modal403, message: errorMessage }));\n } else {\n dispatch(\n showModal({\n modal: Modal400,\n message: customErrorMessage || errorMessage,\n }),\n );\n }\n },\n [Modal400, Modal403, customErrorMessage, dispatch],\n );\n\n const showDownloadNotification = useCallback(\n (controller: AbortController) => {\n showNotification({\n message: (\n <DownloadNotification\n onClick={() => {\n controller.abort();\n cleanNotifications();\n if (done) {\n done();\n }\n }}\n />\n ),\n styles: () => ({\n root: {\n textAlign: 'center',\n display: hideNotification ? 'none' : 'block',\n },\n closeButton: {\n color: 'black',\n '&:hover': {\n backgroundColor: 'lightslategray',\n },\n },\n }),\n closeButtonProps: { 'aria-label': 'Close notification' },\n autoClose: false,\n });\n },\n [done, hideNotification],\n );\n\n const handleClick = async () => {\n\n const controller = new AbortController();\n\n showDownloadNotification(controller);\n setActive(true);\n setIsActive && setIsActive(true);\n await actionFunction(\n actionArgs,\n () => {\n setActive(false);\n setIsActive && setIsActive(false);\n // Clean up notifications...\n cleanNotifications();\n },\n (error) => {\n handleError(error);\n setActive(false);\n setIsActive && setIsActive(false);\n // Clean up notifications...\n cleanNotifications();\n showErrorMessage(error);\n },\n () => {\n setActive(false);\n setIsActive && setIsActive(false);\n // Clean up notifications...\n cleanNotifications();\n },\n controller.signal,\n );\n };\n\n const icon = active ? (\n <Loader size=\"sm\" className=\"p-1\" />\n ) : (\n <FiDownload title=\"download\" size={16} />\n );\n\n return {\n handleClick,\n icon,\n active\n };\n};\n\nexport default useGuppyActionButton;\n","import useGuppyActionButton from './downloadActionHook';\nimport { Button, Tooltip } from '@mantine/core';\nimport { FiDownload } from 'react-icons/fi';\nimport { useRef } from 'react';\nimport { GuppyActionButtonProps } from '../types';\nimport { Modals } from '@gen3/core';\n\nconst CohortActionButton = ({\n activeText,\n inactiveText,\n customStyle,\n showLoading = true,\n showIcon = true,\n disabled = false,\n Modal403 = Modals.NoAccessModal,\n Modal400 = Modals.GeneralErrorModal,\n tooltipText,\n done,\n customErrorMessage,\n hideNotification = false,\n actionFunction,\n actionArgs,\n}: GuppyActionButtonProps) => {\n const { handleClick, icon, active } = useGuppyActionButton({\n Modal403,\n Modal400,\n done,\n customErrorMessage,\n hideNotification,\n actionFunction,\n actionArgs,\n });\n\n const ref = useRef(null);\n return (\n <Tooltip disabled={!tooltipText} label={tooltipText}>\n <Button\n ref={ref}\n leftSection={showIcon && inactiveText && <FiDownload />}\n disabled={disabled}\n className={\n customStyle ||\n `text-base-lightest ${\n disabled ? 'bg-base' : 'bg-primary hover:bg-primary-darker'\n } `\n }\n loading={showLoading && active}\n onClick={handleClick}\n >\n {active ? activeText : inactiveText || icon}\n </Button>\n </Tooltip>\n );\n};\n\nexport default CohortActionButton;\n","\n\n\n\n/**\n * Handles downloading of a Blob object as a file.\n *\n * @param {Blob} data - The Blob object to be downloaded.\n * @param {string} filename - The name of the file to be saved.\n */\nexport const handleDownload = (data: Blob, filename: string) => {\n const aElement = document.createElement('a');\n const href = URL.createObjectURL(data);\n aElement.setAttribute('download', filename);\n aElement.href = href;\n aElement.setAttribute('target', '_blank');\n aElement.click();\n URL.revokeObjectURL(href);\n};\n","import { downloadFromGuppyToBlob, GuppyDownloadDataParams } from '@gen3/core';\nimport { handleDownload } from './utils';\n\nexport const downloadToFileAction = async (\n params: Record<string, any>,\n done?: () => void,\n onError?: (error: Error) => void,\n onAbort?: () => void,\n signal?: AbortSignal,\n): Promise<void> => {\n // call the downloadFromGuppy function\n await downloadFromGuppyToBlob({\n parameters: params as GuppyDownloadDataParams,\n onDone: (data: Blob) => {\n handleDownload(data, params.filename);\n done && done();\n },\n onError: (error: Error) => {\n onError && onError(error);\n },\n onAbort: () => {\n onAbort && onAbort();\n },\n signal,\n });\n};\n","import {\n downloadJSONDataFromGuppy,\n Equals,\n FilterSet,\n GuppyDownloadDataParams,\n Includes,\n JSONObject,\n} from '@gen3/core';\nimport { handleDownload } from './utils';\n\nconst DEFAULT_FILE_FIELDS = ['file_name', 'file_size', 'md5sum', 'object_id'];\n\n/**\n * Process the manifest data given the data and the fields to include in the manifest.\n * Check if the item in the data contains the fields to include in the manifest.\n * if not, remove the item from the data.\n * @param data\n * @param resourceIdField\n * @param manifestFields\n */\nexport const processManifest = (\n data: JSONObject[],\n resourceIdField: string,\n manifestFields: string[],\n) => {\n return data.filter((item) => {\n const hasAllFields = manifestFields.every((field) => {\n return item[field] !== undefined;\n });\n return hasAllFields && item[resourceIdField] !== undefined;\n });\n};\n\nexport interface DownloadToManifestParams extends Record<string, any> {\n resourceIndexType: string;\n resourceIdField: string;\n referenceIdFieldInDataIndex?: string;\n referenceIdFieldInResourceIndex?: string;\n fileFields?: string[];\n}\n\nexport const downloadToManifestAction = async (\n params: Record<string, any>,\n done?: () => void,\n onError?: (error: Error) => void,\n onAbort?: () => void,\n signal?: AbortSignal,\n dataFormat?: string,\n): Promise<void> => {\n const {\n referenceIdFieldInDataIndex,\n referenceIdFieldInResourceIndex,\n resourceIndexType,\n resourceIdField,\n fileFields,\n } = params;\n\n const manifestFields = fileFields ?? DEFAULT_FILE_FIELDS;\n const manifestFilename = params?.filename ?? `${params.type}_manifest.json`;\n\n const cohortFilterParams: GuppyDownloadDataParams = {\n filter: params.filter,\n type: params.type,\n fields: params.fields,\n accessibility: params.accessibility,\n sort: params.sort,\n format: 'json',\n };\n\n // getting data from the same index.\n if (params.type === resourceIndexType) {\n try {\n let resultManifest = await downloadJSONDataFromGuppy({\n parameters: {\n ...cohortFilterParams,\n fields: [referenceIdFieldInDataIndex, ...manifestFields],\n },\n onAbort: onAbort,\n signal: signal,\n });\n resultManifest = processManifest(\n resultManifest,\n resourceIdField,\n manifestFields,\n );\n if (resultManifest.length === 0) {\n throw new Error('No data found for the current filters');\n }\n const str = JSON.stringify(resultManifest, null, 2);\n const blob = new Blob([str], {\n type: 'application/json;charset=utf-8',\n });\n handleDownload(blob, manifestFilename);\n done && done();\n } catch (err) {\n let resultErr;\n if (typeof err === 'string') resultErr = new Error(err);\n if (err instanceof Error) resultErr = err;\n if (!resultErr)\n resultErr = new Error('unknown error in download manifest');\n\n onError && onError(resultErr);\n }\n return;\n }\n // join data from two different indices\n try {\n // get a list of reference IDs from the data index using the current cohort filters\n let refIDList = await downloadJSONDataFromGuppy({\n parameters: {\n ...cohortFilterParams,\n fields: [referenceIdFieldInDataIndex],\n },\n onAbort: onAbort,\n signal: signal,\n });\n // get the reference IDs from the list\n refIDList = refIDList.map(\n (item: JSONObject) => item[referenceIdFieldInDataIndex],\n );\n // create a filter of the ids to use in the resource index\n const refIdsFilter: FilterSet = {\n mode: 'and',\n root: {\n manifest_ids: {\n operator: 'in',\n operands: refIDList as string[],\n field: referenceIdFieldInResourceIndex,\n } as Includes,\n ...(dataFormat\n ? {\n data_format: {\n operator: '=',\n operand: dataFormat,\n field: 'data_format',\n } as Equals,\n }\n : {}),\n },\n };\n\n let resultManifest = await downloadJSONDataFromGuppy({\n parameters: {\n ...cohortFilterParams,\n type: resourceIndexType,\n filter: refIdsFilter,\n fields: [\n referenceIdFieldInResourceIndex,\n resourceIdField,\n ...manifestFields,\n ],\n },\n onAbort: onAbort,\n signal: signal,\n });\n\n resultManifest = resultManifest.filter(\n (x: JSONObject) => !!x[resourceIdField],\n );\n /* eslint-disable no-param-reassign */\n resultManifest.forEach((x: JSONObject) => {\n if (typeof x[resourceIdField] === 'string') {\n x[resourceIdField] = [x[resourceIdField]];\n }\n });\n const bytes = new TextEncoder().encode(JSON.stringify(resultManifest));\n const blob = new Blob([bytes], {\n type: 'application/json;charset=utf-8',\n });\n handleDownload(blob, manifestFilename);\n done && done();\n } catch (err: any) {\n onError && onError(err);\n }\n};\n","import {\n ActionButtonWithArgsFunction,\n ActionButtonFunction,\n} from '../../types';\nimport { downloadToFileAction } from './downloadToFile';\nimport { downloadToManifestAction } from './downloadManifest';\n\n// create a factory for the action creators\n\ninterface ActionCreatorFactoryItem {\n readonly action: ActionButtonWithArgsFunction;\n readonly args: Record<string, any>;\n}\n\nconst registeredButtonActions: Record<string, ActionCreatorFactoryItem> = {};\n\nexport const NullButtonAction: ActionButtonWithArgsFunction = (\n _params,\n done,\n): Promise<void> => {\n return new Promise<void>((done) => {\n done && done();\n });\n};\n\nexport const registerButtonAction = (\n buttonName: string,\n actionItem: ActionCreatorFactoryItem,\n) => {\n registeredButtonActions[buttonName] = actionItem;\n};\n\nexport const findButtonAction = (\n buttonName?: string,\n): ActionCreatorFactoryItem | undefined => {\n if (buttonName === undefined) {\n console.error('getButtonAction: no name provided');\n return undefined;\n }\n\n if (!(buttonName in registeredButtonActions)) {\n console.error('getButtonAction: no action found for', buttonName);\n return undefined;\n }\n return registeredButtonActions[buttonName];\n};\n\nexport const registerDefaultButtonActions = () => {\n registerButtonAction('data-json', {\n action: downloadToFileAction,\n args: { format: 'json' },\n });\n registerButtonAction('data-csv', {\n action: downloadToFileAction,\n args: { format: 'csv' },\n });\n registerButtonAction('data-tsv', {\n action: downloadToFileAction,\n args: { format: 'tsv' },\n });\n registerButtonAction('manifest', {\n action: downloadToManifestAction,\n args: { format: 'manifest' },\n });\n};\n\nregisterDefaultButtonActions();\n","import { Button, Menu, MenuItemProps } from '@mantine/core';\nimport { FloatingPosition } from '@mantine/core';\nimport { ReactNode, useState } from 'react';\nimport { Tooltip } from '@mantine/core';\nimport { IoMdArrowDropdown as Dropdown } from 'react-icons/io';\nimport { focusStyles } from '../../../utils';\nimport useGuppyActionButton from './downloadActionHook';\nimport { Modals } from '@gen3/core';\nimport { ActionButtonWithArgsFunction, GuppyActionButtonProps } from '../types';\nimport { useDeepCompareMemo } from 'use-deep-compare';\n\ninterface GuppyDropdownMenuItemProps\n extends Pick<\n GuppyActionButtonProps,\n | 'disabled'\n | 'Modal400'\n | 'Modal403'\n | 'done'\n | 'customErrorMessage'\n | 'hideNotification'\n | 'actionFunction'\n | 'actionArgs'\n > {\n title: string;\n idx: number;\n setIsActive?: (active: boolean) => void;\n}\n\ninterface GuppyDropdownElementProps {\n title: string;\n icon?: JSX.Element;\n disabled?: boolean;\n actionFunction: ActionButtonWithArgsFunction;\n actionArgs: Record<string, any>;\n}\n\nconst GuppyDropdownMenuItem = ({\n title,\n idx,\n disabled = false,\n Modal403 = Modals.NoAccessModal,\n Modal400 = Modals.GeneralErrorModal,\n done,\n setIsActive = () => null,\n customErrorMessage,\n hideNotification = false,\n actionFunction,\n actionArgs,\n children,\n}: GuppyDropdownMenuItemProps & MenuItemProps) => {\n const { handleClick, icon } = useGuppyActionButton({\n Modal403,\n Modal400,\n done,\n customErrorMessage,\n hideNotification,\n actionFunction,\n actionArgs,\n setIsActive,\n });\n return (\n <Menu.Item\n onClick={() => {\n handleClick && handleClick();\n }}\n key={`${title}-${idx}`}\n data-testid={`${title}-${idx}`}\n leftSection={icon}\n disabled={disabled}\n >\n {children}\n </Menu.Item>\n );\n};\n\ninterface DropdownWithIconProps {\n /**\n * if true, doesn't set width to be \"target\"\n */\n disableTargetWidth?: string;\n /**\n * Left Icon for the taret button, can be undefined too\n */\n leftIcon?: JSX.Element;\n /**\n * Right Icon for the taret button, can be undefined too (default to dropdown icon)\n */\n rightIcon?: JSX.Element;\n /**\n * Content for target button\n */\n TargetButtonChildren: ReactNode;\n /**\n * array dropdown items. Need to pass title, onClick and icon event handler is optional\n */\n dropdownElements: Array<GuppyDropdownElementProps>;\n /**\n * only provide inactiveText if we want label for dropdown elements\n */\n inactiveText?: string;\n /**\n * label to show when menu item's action is executing\n */\n activeText?: string;\n /**\n * custom class / styling for menuLabelText\n */\n menuLabelCustomClass?: string;\n /**\n * custom position for Menu\n */\n customPosition?: FloatingPosition;\n /**\n * whether the dropdown should fill the height with its parent\n */\n fullHeight?: boolean;\n /**\n * custom z-index for Menu, defaults to undefined\n */\n zIndex?: number;\n /**\n * custom test id\n */\n customDataTestId?: string;\n\n /**\n tooltip\n */\n tooltip?: string;\n\n /**\n * aria-label for the button\n */\n buttonAriaLabel?: string;\n\n /**\n * disables the target button and menu\n */\n disabled?: boolean;\n}\n\nconst CohortDropdownActionButton = ({\n disableTargetWidth,\n leftIcon,\n rightIcon = (\n <Dropdown size=\"1.25em\" aria-hidden=\"true\" data-testid=\"dropdown-icon\" />\n ),\n disabled = false,\n dropdownElements,\n activeText,\n inactiveText,\n customPosition,\n fullHeight,\n zIndex = undefined,\n customDataTestId = undefined,\n tooltip = undefined,\n buttonAriaLabel = undefined,\n}: DropdownWithIconProps): JSX.Element => {\n const [isActive, setIsActive] = useState(false);\n\n const menuLabelText = useDeepCompareMemo(() => {\n return isActive ? activeText : inactiveText;\n }, [isActive, activeText, inactiveText]);\n\n return (\n <Menu\n width={disableTargetWidth ?? 'target'}\n {...(customPosition && { position: customPosition })}\n data-testid={customDataTestId ?? 'menu-elem'}\n zIndex={zIndex}\n >\n <Menu.Target>\n <Button\n className={`text-base-lightest data-disabled:bg-base bg-primary hover:bg-primary-darker ${focusStyles}`}\n {...(leftIcon && { leftSection: leftIcon })}\n rightSection={rightIcon}\n disabled={disabled}\n classNames={{\n // rightIcon: 'border-l pl-1 -mr-2',\n root: fullHeight ? 'h-full' : undefined,\n }}\n aria-label={buttonAriaLabel}\n loading={isActive}\n key={menuLabelText}\n >\n <div>\n {tooltip?.length && !disabled ? (\n <div>\n <Tooltip label={tooltip}>\n <div>{menuLabelText}</div>\n </Tooltip>\n </div>\n ) : (\n <div>{menuLabelText}</div>\n )}\n </div>\n </Button>\n </Menu.Target>\n <Menu.Dropdown\n data-testid=\"dropdown-menu-options\"\n className=\"border-1 border-secondary\"\n >\n {dropdownElements?.map(\n ({ title, icon, disabled, actionFunction, actionArgs }, idx) => (\n <GuppyDropdownMenuItem\n key={`${title}-${idx}`}\n data-testid={`${title}-${idx}`}\n leftSection={icon && icon}\n disabled={disabled}\n title={title}\n idx={idx}\n actionFunction={actionFunction}\n actionArgs={actionArgs}\n setIsActive={setIsActive}\n >\n {title}\n </GuppyDropdownMenuItem>\n ),\n )}\n </Menu.Dropdown>\n </Menu>\n );\n};\n\nexport default CohortDropdownActionButton;\n","import React from 'react';\nimport {\n DownloadButtonPropsWithAction,\n DropdownsWithButtonsProps,\n} from './types';\nimport { useDeepCompareMemo } from 'use-deep-compare';\nimport {\n DownloadButtonProps,\n type DropdownButtonProps,\n} from '../../components/Buttons/DropdownButtons';\nimport { Accessibility, FilterSet, useIsUserLoggedIn } from '@gen3/core';\nimport CohortActionButton from './downloads/CohortActionButton';\nimport {\n findButtonAction,\n NullButtonAction,\n} from './downloads/actions/registeredActions';\nimport { Icon } from '@iconify/react';\nimport { MdDownload as DownloadIcon } from 'react-icons/md';\nimport CohortDropdownActionButton from './downloads/CohortDropdownActionButton';\n\nconst makeActionArgs = (button: DownloadButtonProps) => {\n let actionFunction = NullButtonAction;\n let actionArgs = {} as Record<string, any>; // not required but just for clarity\n if (button.action) {\n const actionItem = findButtonAction(button.action);\n if (actionItem) {\n const funcArgs = actionItem.args ?? {};\n const func = actionItem.action;\n actionFunction = func;\n actionArgs = funcArgs;\n }\n }\n\n return { actionFunction, actionArgs };\n};\n\nconst createDownloadMenuButton = (\n props: DropdownButtonProps,\n args: Record<string, any>,\n): JSX.Element => {\n const elements = props.dropdownItems?.map((button) => {\n let actionFunction = NullButtonAction;\n let actionArgs = {};\n\n const buttonAction = button.action ?? button.type;\n\n if (buttonAction) {\n const actionItem = findButtonAction(buttonAction);\n if (actionItem) {\n actionFunction = actionItem.action;\n actionArgs = actionItem.args ?? ({} as Record<string, any>);\n }\n }\n\n return {\n title: button.title,\n activeText: 'Downloading...',\n disabled: button.enabled !== undefined ? !button.enabled : true,\n icon: button?.leftIcon ? (\n <Icon icon={button.leftIcon} />\n ) : (\n <DownloadIcon aria-label={'Download'} />\n ),\n rightSection: button?.rightIcon ? <Icon icon={button.rightIcon} /> : null,\n actionFunction: actionFunction,\n actionArgs: {\n ...args,\n ...actionArgs,\n ...(button.actionArgs ?? ({} as Record<string, any>)),\n },\n } as DownloadButtonPropsWithAction;\n });\n\n return (\n <CohortDropdownActionButton\n inactiveText={props.title}\n activeText={props.actionTitle}\n leftIcon={props.leftIcon ? <Icon icon={props.leftIcon} /> : undefined}\n rightIcon={props.rightIcon ? <Icon icon={props.rightIcon} /> : undefined}\n TargetButtonChildren={'Downloading...'}\n dropdownElements={elements}\n key={props.title}\n />\n );\n};\n\ninterface DownloadsPanelProps {\n readonly dropdowns: Record<string, DropdownsWithButtonsProps>;\n readonly buttons: ReadonlyArray<DownloadButtonProps>;\n readonly loginForDownload?: boolean;\n readonly accessibility?: Accessibility;\n readonly rootPath?: string;\n readonly index: string;\n readonly totalCount: number;\n readonly fields: ReadonlyArray<string>;\n readonly filter: FilterSet;\n readonly sort?: string[];\n}\n\nconst DownloadsPanel = ({\n dropdowns,\n buttons,\n loginForDownload,\n index,\n totalCount,\n fields,\n filter,\n accessibility,\n sort,\n}: DownloadsPanelProps): JSX.Element => {\n const isUserLoggedIn = useIsUserLoggedIn();\n const loginRequired = loginForDownload ? loginForDownload : false;\n\n const dropdownsToRender = useDeepCompareMemo(() => {\n let dropdownsToRender = dropdowns;\n\n if (loginRequired && !isUserLoggedIn) {\n dropdownsToRender = Object.entries(dropdowns ?? {}).reduce(\n (acc, [key, dropdown]) => {\n return {\n ...acc,\n [key]: {\n ...dropdown,\n title: `${dropdown.title} (Login Required)`,\n buttons: dropdown.dropdownItems?.map((button) => ({\n ...button,\n title: `${button.title} (Login Required)`,\n enabled: false,\n })),\n },\n };\n },\n {},\n );\n }\n return dropdownsToRender;\n }, [dropdowns, loginRequired, isUserLoggedIn]);\n\n return dropdowns || buttons ? (\n <div className=\"flex space-x-1\">\n {Object.values(dropdownsToRender).map(\n (dropdown: DropdownsWithButtonsProps) => {\n return createDownloadMenuButton(dropdown, {\n type: index,\n totalCount,\n fields,\n filter,\n accessibility: accessibility ?? Accessibility.ALL,\n // sort: sort, // TODO add sort\n });\n },\n )}\n\n {buttons.map((button) => {\n let disabled = false;\n let actionFunction = NullButtonAction;\n let actionArgs = {};\n const buttonAction = button.action ?? button.type;\n if (buttonAction) {\n const actionItem = findButtonAction(buttonAction);\n if (actionItem) {\n const funcArgs = actionItem.args ?? {};\n const func = actionItem.action;\n actionFunction = func;\n actionArgs = funcArgs ?? ({} as Record<string, any>);\n }\n }\n if (loginRequired && !isUserLoggedIn) {\n disabled = true;\n }\n\n return (\n <CohortActionButton\n activeText={'Downloading...'}\n inactiveText={button.title}\n tooltipText={button.tooltipText}\n disabled={disabled || !button.enabled}\n actionFunction={actionFunction}\n actionArgs={{\n ...actionArgs,\n ...(button.actionArgs ?? ({} as Record<string, any>)),\n type: index,\n totalCount,\n fields,\n filter,\n accessibility: accessibility ?? Accessibility.ALL,\n // sort: sort, // TODO add sort\n }}\n key={button.title}\n />\n );\n })}\n </div>\n ) : (\n <React.Fragment></React.Fragment>\n );\n};\n\nexport default DownloadsPanel;\n","import React, { useMemo, useState } from 'react';\nimport { Tabs } from '@mantine/core';\nimport { partial } from 'lodash';\nimport {\n type FacetDefinition,\n selectIndexFilters,\n useCoreSelector,\n useGetAggsQuery,\n FacetType,\n extractEnumFilterValue,\n CoreState,\n useGetCountsQuery,\n} from '@gen3/core';\nimport { type CohortPanelConfig, type TabConfig, TabsConfig } from './types';\nimport { type SummaryChart } from '../../components/charts/types';\nimport ErrorCard from '../../components/ErrorCard';\nimport { useMediaQuery } from '@mantine/hooks';\n\nimport {\n classifyFacets,\n extractRangeValues,\n getAllFieldsFromFilterConfigs,\n processBucketData,\n processRangeData,\n useGetFacetFilters,\n useUpdateFilters,\n} from '../../components/facets/utils';\nimport { useClearFilters } from '../../components/facets/hooks';\nimport { FacetDataHooks } from '../../components/facets/types';\nimport { FiltersPanel } from './FiltersPanel';\nimport CohortManager from './CohortManager';\nimport { Charts } from '../../components/charts';\nimport ExplorerTable from './ExplorerTable/ExplorerTable';\nimport CountsValue from '../../components/counts/CountsValue';\nimport DownloadsPanel from './DownloadsPanel';\nimport {\n useDeepCompareCallback,\n useDeepCompareEffect,\n useDeepCompareMemo,\n} from 'use-deep-compare';\n\nconst EmptyData = {};\n\ninterface TabbablePanelProps {\n filters: TabsConfig;\n tabTitle: string;\n facetDefinitions: Record<string, FacetDefinition>;\n facetDataHooks: Record<FacetType, FacetDataHooks>;\n}\n\nconst TabbedPanel = ({\n filters,\n tabTitle,\n facetDefinitions,\n facetDataHooks,\n}: TabbablePanelProps) => {\n return (\n <div>\n <Tabs\n variant=\"pills\"\n orientation=\"vertical\"\n keepMounted={false}\n defaultValue={filters?.tabs[0].title ?? 'Filters'}\n >\n <Tabs.List>\n {filters.tabs.map((tab: TabConfig) => {\n return (\n <Tabs.Tab value={tab.title} key={`${tab.title}-tab`}>\n {tab.title}\n </Tabs.Tab>\n );\n })}\n </Tabs.List>\n\n {filters.tabs.map((tab: TabConfig) => {\n return (\n <Tabs.Panel\n value={tab.title}\n key={`filter-${tab.title}-tabPanel`}\n className=\"w-1/4\"\n >\n {Object.keys(facetDefinitions).length > 0 ? (\n <FiltersPanel\n fields={tab.fields.reduce((acc, field) => {\n return [...acc, facetDefinitions[field]];\n }, [] as FacetDefinition[])}\n dataFunctions={facetDataHooks}\n valueLabel={tabTitle}\n />\n ) : null}\n </Tabs.Panel>\n );\n })}\n </Tabs>\n </div>\n );\n};\n\nconst SinglePanel = ({\n filters,\n tabTitle,\n facetDefinitions,\n facetDataHooks,\n}: TabbablePanelProps) => {\n return (\n <div>\n {Object.keys(facetDefinitions).length > 0 ? (\n <FiltersPanel\n fields={filters.tabs[0].fields.reduce((acc, field) => {\n return [...acc, facetDefinitions[field]];\n }, [] as FacetDefinition[])}\n dataFunctions={facetDataHooks}\n valueLabel={tabTitle}\n />\n ) : null}\n </div>\n );\n};\n\n/**\n * The main component that houses the charts, tabs, modals\n * filters, tables, buttons of the exploration page.\n *\n * All of these params come directly from the top level exploration page configuration file or\n * explorer config in legacy gitops.json file.\n * @example see packages/sampleCommons/config/gen3/explorer.json\n */\nexport const CohortPanel = ({\n guppyConfig,\n filters,\n charts = {},\n table,\n tabTitle,\n dropdowns,\n buttons,\n loginForDownload,\n}: CohortPanelConfig): JSX.Element => {\n const isSm = useMediaQuery('(min-width: 639px)');\n const isMd = useMediaQuery('(min-width: 1373px)');\n const isXl = useMediaQuery('(min-width: 1600px)');\n\n let numCols = 3;\n if (isSm) numCols = 1;\n if (isMd) numCols = 2;\n if (isXl) numCols = 4;\n\n const index = guppyConfig.dataType;\n const fields = useMemo(\n () => getAllFieldsFromFilterConfigs(filters?.tabs ?? []),\n [filters?.tabs],\n );\n\n const [facetDefinitions, setFacetDefinitions] = useState<\n Record<string, FacetDefinition>\n >({});\n\n const [summaryCharts, setSummaryCharts] = useState<\n Record<string, SummaryChart>\n >({});\n\n const cohortFilters = useCoreSelector((state: CoreState) =>\n selectIndexFilters(state, index),\n );\n\n const {\n data,\n isSuccess,\n isError: isAggsQueryError,\n } = useGetAggsQuery({\n type: index,\n fields: fields,\n filters: cohortFilters,\n });\n\n const getEnumFacetData = useDeepCompareCallback(\n (field: string) => {\n return {\n data: processBucketData(data?.[field]),\n enumFilters:\n field in cohortFilters.root\n ? extractEnumFilterValue(cohortFilters.root[field])\n : undefined,\n isSuccess: isSuccess,\n };\n },\n [cohortFilters, data, isSuccess],\n );\n\n const getRangeFacetData = useDeepCompareCallback(\n (field: string) => {\n return {\n data: processRangeData(data?.[field]),\n filters: extractRangeValues(cohortFilters.root[field]),\n isSuccess: isSuccess,\n };\n },\n [data, cohortFilters.root, isSuccess],\n );\n\n // Set up the hooks for the facet components to use based on the required index\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const facetDataHooks: Record<FacetType, FacetDataHooks> =\n useDeepCompareMemo(() => {\n return {\n // TODO: see if there a better way to do this\n enum: {\n useGetFacetData: getEnumFacetData,\n useUpdateFacetFilters: partial(useUpdateFilters, index),\n useGetFacetFilters: partial(useGetFacetFilters, index),\n useClearFilter: partial(useClearFilters, index),\n useTotalCounts: undefined,\n },\n exact: {\n useGetFacetData: getEnumFacetData,\n useUpdateFacetFilters: partial(useUpdateFilters, index),\n useGetFacetFilters: partial(useGetFacetFilters, index),\n useClearFilter: partial(useClearFilters, index),\n useTotalCounts: undefined,\n },\n multiselect: {\n useGetFacetData: getEnumFacetData,\n useUpdateFacetFilters: partial(useUpdateFilters, index),\n useGetFacetFilters: partial(useGetFacetFilters, index),\n useClearFilter: partial(useClearFilters, index),\n useTotalCounts: undefined,\n },\n range: {\n useGetFacetData: getRangeFacetData,\n useUpdateFacetFilters: partial(useUpdateFilters, index),\n useGetFacetFilters: partial(useGetFacetFilters, index),\n useClearFilter: partial(useClearFilters, index),\n useTotalCounts: undefined,\n },\n };\n }, [getEnumFacetData, getRangeFacetData, index]);\n\n // Set the facet definitions based on the data only the first time the data is loaded\n useDeepCompareEffect(() => {\n if (isSuccess && Object.keys(facetDefinitions).length === 0) {\n const configFacetDefs = filters?.tabs.reduce(\n (acc: Record<string, FacetDefinition>, tab) => {\n return { ...tab.fieldsConfig, ...acc };\n },\n {},\n );\n\n const facetDefs = classifyFacets(\n data,\n index,\n guppyConfig.fieldMapping,\n configFacetDefs ?? {},\n );\n setFacetDefinitions(facetDefs);\n\n // setup summary charts since nested fields can be listed by the split field name\n\n const summaryCharts = Object.keys(charts).reduce((acc, field) => {\n let chartField = field;\n if (facetDefs?.[field] === undefined) {\n const res = Object.values(facetDefs).filter((def) => {\n return def.dataField === field;\n });\n if (res.length > 0) {\n chartField = res[0].field;\n }\n }\n return {\n ...acc,\n [chartField]: charts[field],\n };\n }, {});\n\n setSummaryCharts(summaryCharts);\n }\n }, [\n isSuccess,\n data,\n facetDefinitions,\n index,\n guppyConfig.fieldMapping,\n charts,\n ]);\n\n const {\n data: counts,\n isSuccess: isCountSuccess,\n isError,\n } = useGetCountsQuery({\n type: index,\n filters: cohortFilters,\n });\n\n if (isError || isAggsQueryError) {\n return <ErrorCard message=\"Unable to fetch data from server\" />; // TODO: replace with configurable message\n }\n\n return (\n <div className=\"flex mt-3 relative\">\n <div>\n {filters?.tabs === undefined ? null : filters?.tabs.length > 1 ? (\n <TabbedPanel\n filters={filters}\n tabTitle={tabTitle}\n facetDefinitions={facetDefinitions}\n facetDataHooks={facetDataHooks}\n />\n ) : (\n <SinglePanel\n filters={filters}\n tabTitle={tabTitle}\n facetDefinitions={facetDefinitions}\n facetDataHooks={facetDataHooks}\n />\n )}\n </div>\n <div className=\"w-full relative\">\n <div className=\"flex flex-col\">\n <CohortManager index={index} />\n\n <div className=\"flex justify-between mb-2 ml-2\">\n <DownloadsPanel\n dropdowns={dropdowns ?? {}}\n buttons={buttons ?? []}\n loginForDownload={loginForDownload}\n index={index}\n totalCount={counts ?? 0}\n fields={table?.fields ?? []}\n filter={cohortFilters}\n />\n\n <CountsValue\n label={guppyConfig.nodeCountTitle}\n counts={counts}\n isSuccess={isCountSuccess}\n />\n </div>\n <Charts\n index={index}\n charts={summaryCharts}\n data={data ?? EmptyData}\n counts={counts}\n isSuccess={isSuccess}\n numCols={numCols}\n />\n {table?.enabled ? (\n <div className=\"mt-2 flex flex-col\">\n <div className=\"grid\">\n <ExplorerTable index={index} tableConfig={table} />\n </div>\n </div>\n ) : (\n false\n )}\n </div>\n </div>\n </div>\n );\n};\n","import React from 'react';\nimport { CohortPanelConfig, CohortBuilderConfiguration } from './types';\nimport { Center, Loader, Tabs } from '@mantine/core';\nimport { CohortPanel } from './CohortPanel';\nimport { useGetCSRFQuery } from '@gen3/core';\n\nexport const CohortBuilder = ({\n explorerConfig,\n}: CohortBuilderConfiguration) => {\n const { isLoading } = useGetCSRFQuery();\n\n if (isLoading) {\n return (\n <Center maw={400} h={100} mx=\"auto\">\n <Loader variant=\"dots\" />\n </Center>\n );\n }\n\n return (\n <div className=\"w-full\">\n <Tabs\n color=\"primary.4\"\n keepMounted={false}\n defaultValue={explorerConfig[0].tabTitle}\n >\n <Tabs.List>\n {explorerConfig.map((panelConfig: CohortPanelConfig) => (\n <Tabs.Tab\n value={panelConfig.tabTitle}\n key={`${panelConfig.tabTitle}-tabList`}\n >\n {panelConfig.tabTitle}\n </Tabs.Tab>\n ))}\n </Tabs.List>\n\n {explorerConfig.map((panelConfig: CohortPanelConfig) => (\n <Tabs.Panel\n value={panelConfig.tabTitle}\n key={`${panelConfig.tabTitle}-tabPanel`}\n >\n <CohortPanel\n {...panelConfig}\n key={`${panelConfig.tabTitle}-CohortPanel`}\n />\n </Tabs.Panel>\n ))}\n </Tabs>\n </div>\n );\n};\n","import React, { ReactElement, useState } from 'react';\n//import GraphiQL from 'graphiql';\nimport type { Fetcher } from '@graphiql/toolkit';\nimport { Text } from '@mantine/core';\nimport {\n GEN3_GUPPY_API,\n selectHeadersWithCSRFToken,\n useCoreSelector,\n} from '@gen3/core';\nimport { GqlQueryEditorProps } from './types';\n\n/**\n * Fetches graphql data from a graphql endpoint if one is specified, or guppy by default.\n * @param graphQLEndpoint - The location of the graphql endpoint.\n * @returns a component containing a GraphiQl editor\n */\nconst GqlQueryEditor = ({\n graphQLEndpoint,\n}: GqlQueryEditorProps): ReactElement => {\n const [query, setQuery] = useState('');\n const headers = useCoreSelector(selectHeadersWithCSRFToken);\n\n // Typically we would put this in core but it's only used here\n const fetcher: Fetcher = async (graphQLParams) => {\n const data = await fetch(graphQLEndpoint || `${GEN3_GUPPY_API}/graphql`, {\n method: 'POST',\n headers: headers,\n body: JSON.stringify(graphQLParams),\n });\n return data.json().catch(() => data.text());\n };\n\n return (\n <div className=\"flex flex-col h-full w-full\">\n <div className=\"flex justify-between items-center m-2\">\n <Text size=\"xl\" fw={500}>\n Query Graph\n </Text>\n </div>\n {/* ---\n <GraphiQL\n editorTheme=\"light\"\n fetcher={fetcher}\n query={query}\n onEditQuery={setQuery}\n >\n <GraphiQL.Logo> {null} </GraphiQL.Logo>\n </GraphiQL>\n --- */}\n </div>\n );\n};\n\nexport default GqlQueryEditor;\n","import { Center, Text } from '@mantine/core';\n\nconst WorkspacesPanel = () => {\n return (\n <Center className=\"m-20 w-full\"><Text size=\"2rem\">Coming soon.</Text></Center>\n );\n};\n\nexport default WorkspacesPanel;\n","import { ContentSource } from './types';\nimport fs from 'fs';\nimport path from 'path';\n\nexport class FilesystemContent implements ContentSource {\n rootPath: string;\n constructor({ rootPath }: { rootPath?: string }) {\n this.rootPath = rootPath || '';\n }\n\n public async get<T extends Record<string, undefined>>(\n filepath: string,\n ): Promise<T> {\n try {\n return await JSON.parse(\n fs.readFileSync(path.join(this.rootPath, filepath)).toString('utf-8'),\n );\n } catch (err) {\n throw new Error(`Cannot process ${filepath}`);\n }\n }\n}\n","import { ContentSource } from './types';\n\n/**\n * The Content management \"datastore\" which is an abstracted interface to\n * some persistent storage of content needed for Gen3's content management system\n */\n\nexport interface CreateDatabase {\n store: ContentSource;\n}\n\nexport class ContentDatabase {\n public store: ContentSource;\n\n constructor(public config: CreateDatabase) {\n this.store = config.store;\n }\n\n public async get<T extends Record<string, any>>(\n filepath: string,\n ): Promise<T> {\n return this.store.get(filepath);\n }\n}\n","export const GEN3_FRONTEND_CONFIGURATION_ROOT =\n process.env.GEN3_FRONTEND_CONFIGURATION_ROOT || './';\n","import { FilesystemContent } from './filesystem';\nimport { ContentDatabase } from './ContentDatabase';\nimport { GEN3_FRONTEND_CONFIGURATION_ROOT } from './constants';\n\nconst ContentRoot = GEN3_FRONTEND_CONFIGURATION_ROOT;\n\nconst setup = () => {\n const config = { store: new FilesystemContent({ rootPath: ContentRoot }) };\n return new ContentDatabase(config);\n};\n\nconst ContentSource = setup();\n\nexport default ContentSource;\n","import {\n FooterProps,\n HeaderProps,\n NavigationProps,\n NavPageLayoutProps,\n TopBarProps,\n} from '../../features/Navigation';\nimport ContentSource from '../content';\nimport { JSONObject, GEN3_COMMONS_NAME } from '@gen3/core';\n\n/**\n * Retrieves navigation page layout properties from configuration.\n * Note: GEN3_COMMONS_NAME depends on siteConfig.json value in the data commons package\n * @returns A Promise resolving to an object containing header and footer props.\n */\nexport const getNavPageLayoutPropsFromConfig =\n async (): Promise<NavPageLayoutProps> => {\n const navigationConfigJSON = await ContentSource.get(\n `config/${GEN3_COMMONS_NAME}/navigation.json`,\n );\n const { topBar, navigation, type = 'original' } = navigationConfigJSON;\n\n const headerProps: HeaderProps = {\n top: topBar as unknown as TopBarProps,\n navigation: navigation as unknown as NavigationProps,\n type,\n };\n const footerProps: FooterProps = await ContentSource.get(\n `config/${GEN3_COMMONS_NAME}/footer.json`,\n );\n return {\n headerProps,\n footerProps,\n headerData: {\n title: 'Gen3 Frontend Framework Page',\n content: 'Gen3 Frontend Framework Page',\n key: 'gen3-common-page',\n },\n };\n };\n","import React, { useEffect, ReactNode } from 'react';\nimport { CoreProvider } from '@gen3/core';\nimport {\n createTheme,\n MantineProvider,\n // createEmotionCache,\n // EmotionCache,\n} from '@mantine/core';\nimport { TenStringArray } from '../../utils';\nimport { SessionProvider } from '../../lib/session/session';\nimport { type RegisteredIcons, type Fonts } from '../../lib/content/types';\nimport { ModalsProvider } from '@mantine/modals';\nimport { Notifications } from '@mantine/notifications';\nimport { addCollection } from '@iconify/react';\nimport { SessionConfiguration } from '../../lib/session/types';\nimport { Gen3ModalsProvider, type ModalsConfig } from '../Modals';\n\ninterface Gen3ProviderProps {\n colors: Record<string, TenStringArray>;\n icons: RegisteredIcons;\n fonts: Fonts;\n sessionConfig: SessionConfiguration;\n modalsConfig: ModalsConfig;\n children?: ReactNode | undefined;\n}\n\n// Define theme for mantine v7\nconst createMantineTheme = (\n fonts: Fonts,\n colors: Record<string, TenStringArray>,\n) => {\n const theme = createTheme({\n // use V2 font in MantineProvider\n fontFamily: fonts.fontFamily,\n // Override default blue color until styles are determined\n colors: {\n white: [\n // TODO: replace with primary theme color\n '#ffffff',\n '#ffffff',\n '#ffffff',\n '#ffffff',\n '#ffffff',\n '#ffffff',\n '#ffffff',\n '#ffffff',\n '#ffffff',\n '#ffffff',\n ],\n // Add default color from tailwind config to Mantine theme\n // note that now getting colors from the tailwindcss-themer which assumes that plugin is last in the\n // plugins declaration.\n // TODO: refactor how the configuration get loaded\n ...Object.fromEntries(\n Object.entries(colors).map(([key, values]) => [\n key,\n Object.values(values),\n ]),\n ),\n },\n primaryColor: 'primary',\n primaryShade: { light: 4, dark: 7 },\n breakpoints: {\n xs: '31.25em',\n sm: '50em',\n md: '62.5em',\n lg: '80em',\n xl: '112.5em',\n },\n });\n\n return theme;\n};\n\n/**\n * Gen3Provider wraps around the entire app and provides general configurations\n * for the whole website like color scheme, icons, fonts, and sessionConfigs like\n * inactivity limits for session timeouts.\n */\nconst Gen3Provider = ({\n colors,\n icons,\n fonts,\n sessionConfig,\n modalsConfig,\n children,\n}: Gen3ProviderProps) => {\n useEffect(() => {\n addCollection(icons);\n }, [icons]);\n\n const theme = createMantineTheme(fonts, colors);\n\n return (\n <CoreProvider>\n <MantineProvider theme={theme}>\n <ModalsProvider>\n <Notifications />\n <SessionProvider {...sessionConfig}>\n <Gen3ModalsProvider config={modalsConfig}>\n {children}\n </Gen3ModalsProvider>\n </SessionProvider>\n </ModalsProvider>\n </MantineProvider>\n </CoreProvider>\n );\n};\n\nexport default Gen3Provider;\n","import React from 'react';\nimport { Paper, Text } from '@mantine/core';\n\ninterface Message {\n message: string;\n code?: string;\n isError?: boolean;\n}\n\nconst MessagePanel = ({ message, isError = false }: Message) => {\n return (\n <div className=\"relative w-full flex flex-col\">\n <Paper shadow=\"md\" radius=\"lg\" p=\"md\">\n <div className=\"w-1/2 mx-auto text-center mt-4 bg-base-lightest hover:bg-base-lighter p-4 border-bg-base-light border-r-8\">\n <Text\n size=\"lg\"\n fw=\"bold\"\n color={isError ? 'red' : 'primary-contrast'}\n >\n {message}\n </Text>\n </div>\n </Paper>\n </div>\n );\n};\n\n\nexport default MessagePanel;\n","import React, { useMemo, useState } from 'react';\nimport { Select, Tabs } from '@mantine/core';\nimport { DiscoveryConfig, DiscoveryIndexConfig } from './types';\nimport DiscoveryIndexPanel from './DiscoveryIndexPanel';\nimport MessagePanel from '../../components/MessagePanel';\n\nconst extractLabel = (c: DiscoveryIndexConfig, idx: number) =>\n c.label ?? c.features?.pageTitle?.text ?? `Index ${idx.toString()}`;\n\nexport interface DiscoveryProps {\n discoveryConfig: DiscoveryConfig;\n}\n\nconst Discovery = ({ discoveryConfig }: DiscoveryProps) => {\n const [metadataIndex, setMetadataIndex] = useState<string>('0');\n\n const menuItems = useMemo(() => {\n return discoveryConfig.metadataConfig.map((n, idx) => {\n return { value: idx.toString(), label: extractLabel(n, idx) };\n });\n }, [discoveryConfig.metadataConfig]);\n\n if (menuItems.length === 0) {\n return <MessagePanel message=\"No discovery configuration\" />;\n }\n\n if (menuItems.length === 1) {\n // no need for tabs\n return (\n <DiscoveryIndexPanel\n discoveryConfig={discoveryConfig.metadataConfig[0]}\n indexSelector={null}\n />\n );\n }\n\n return (\n <div className=\"flex flex-col items-center p-4 w-full bg-base-lightest\">\n <Tabs\n className=\"w-full\"\n defaultValue={metadataIndex}\n onChange={(v: string | null) => {\n setMetadataIndex(v ?? '0');\n }}\n >\n <Tabs.List>\n {menuItems.map((item) => (\n <Tabs.Tab key={item.value} value={item.value}>\n {item.label}\n </Tabs.Tab>\n ))}\n </Tabs.List>\n {menuItems.map((item, i) => (\n <Tabs.Panel value={item.value} key={item.value}>\n <DiscoveryIndexPanel\n discoveryConfig={\n discoveryConfig.metadataConfig[Number.parseInt(item.value)]\n }\n indexSelector={\n menuItems.length < 0 ? (\n <Select\n label=\"Metadata:\"\n data={menuItems}\n value={metadataIndex}\n onChange={(v: string | null) => {\n setMetadataIndex(v ?? '0');\n }}\n />\n ) : null\n }\n />\n </Tabs.Panel>\n ))}\n </Tabs>\n </div>\n );\n};\n\nexport default Discovery;\n","import React from 'react';\nimport { NavPageLayout } from '../../features/Navigation';\nimport Discovery from '../../features/Discovery/Discovery';\nimport { DiscoveryPageProps } from './types';\nimport {\n registerDiscoveryDefaultCellRenderers,\n registerDiscoveryDefaultStudyPreviewRenderers,\n} from '../../features/Discovery';\nimport { Center } from '@mantine/core';\n\nregisterDiscoveryDefaultCellRenderers();\nregisterDiscoveryDefaultStudyPreviewRenderers();\n\nconst DiscoveryPage = ({\n headerProps,\n footerProps,\n discoveryConfig,\n}: DiscoveryPageProps): JSX.Element => {\n if (discoveryConfig === undefined) {\n return (\n <Center maw={400} h={100} mx=\"auto\">\n <div>Discovery config is not defined. Page disabled</div>\n </Center>\n );\n }\n\n return (\n <NavPageLayout\n {...{ headerProps, footerProps }}\n headerData={{\n title: 'Gen3 Discovery Page',\n content: 'Discovery Data',\n key: 'gen3-discovery-page',\n }}\n >\n <Discovery discoveryConfig={discoveryConfig} />\n </NavPageLayout>\n );\n};\n\nexport default DiscoveryPage;\n","import { GetServerSideProps } from 'next';\nimport { GEN3_COMMONS_NAME } from '@gen3/core';\nimport { getNavPageLayoutPropsFromConfig } from '../../lib/common/staticProps';\nimport ContentSource from '../../lib/content';\nimport { type DiscoveryProps } from '../../features/Discovery/Discovery';\nimport type { NavPageLayoutProps } from '../../features/Navigation';\n\nexport const DiscoveryPageGetServerSideProps: GetServerSideProps<\n NavPageLayoutProps\n> = async () => {\n try {\n const discoveryConfig: DiscoveryProps = await ContentSource.get(\n `config/${GEN3_COMMONS_NAME}/discovery.json`,\n );\n return {\n props: {\n ...(await getNavPageLayoutPropsFromConfig()),\n discoveryConfig: discoveryConfig,\n },\n };\n } catch (err) {\n console.error(err);\n return {\n props: {\n ...(await getNavPageLayoutPropsFromConfig()),\n discoveryConfig: undefined,\n },\n };\n }\n};\n","import dynamic from 'next/dynamic';\nimport React from 'react';\nimport { LoadingOverlay } from '@mantine/core';\n\n// Wrapper function for displaying loading element before GqlQueryEditor renders\nconst GqlQueryEditor = dynamic(() => import('./GqlQueryEditor'), {\n loading: () => <LoadingOverlay visible={true} />,\n ssr: false,\n});\n\ninterface QueryPanelProps {\n graphQLEndpoint?: string;\n title?: string;\n}\n\nconst QueryPanel = ({\n graphQLEndpoint,\n}: QueryPanelProps) => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return <GqlQueryEditor graphQLEndpoint={graphQLEndpoint} />;\n};\n\nexport default QueryPanel;\n","import React from 'react';\nimport { NavPageLayout } from '../../features/Navigation';\nimport QueryPanel from '../../features/Query/QueryPanel';\nimport { QueryPageLayoutProps } from './types';\n\nconst QueryPage = ({\n headerProps,\n footerProps,\n queryProps,\n}: QueryPageLayoutProps): JSX.Element => {\n return (\n <NavPageLayout\n {...{ headerProps, footerProps }}\n headerData={{\n title: 'Gen3 Query Page',\n content: 'Query page',\n key: 'gen3-query-page',\n }}\n >\n <QueryPanel graphQLEndpoint={queryProps.graphQLEndpoint} />\n </NavPageLayout>\n );\n};\n\nexport default QueryPage;\n","import { GetServerSideProps } from 'next';\nimport { getNavPageLayoutPropsFromConfig } from '../../lib/common/staticProps';\nimport ContentSource from '../../lib/content';\nimport { type QueryProps } from './types';\nimport { type NavPageLayoutProps } from '../../features/Navigation';\nimport { GEN3_COMMONS_NAME } from '@gen3/core';\n\nexport const QueryPageGetServerSideProps: GetServerSideProps<\n NavPageLayoutProps\n> = async () => {\n const queryProps: QueryProps = await ContentSource.get(\n `config/${GEN3_COMMONS_NAME}/query.json`,\n );\n\n return {\n props: {\n ...(await getNavPageLayoutPropsFromConfig()),\n queryProps: queryProps,\n },\n };\n};\n","import tw from 'tailwind-styled-components';\n\ninterface Gen3ButtonProps {\n colors: string;\n}\n\nexport const Gen3Button = tw.div<Gen3ButtonProps>`\ninline-block\ntext-center\npx-2\npy-2\ntext-accent-contrast-lighter\nleading-[1.5]\nfont-semibold\nuppercase\nborder-4\nborder-solid\nborder-transparent\nrounded-[7px]\n${(p) => `bg-${p.colors}`}\n${(p) => `hover:bg-${p.colors}-max`}\n`;\n\nexport const Gen3ButtonReverse = tw.div<Gen3ButtonProps>`\nbg-base-max\ntext-accent-contrast\nborder-accent-lighter\ninline-block\ntext-center\npx-2\npy-2\ntext-base\nleading-[1.5]\nfont-semibold\nuppercase\nborder-4\nborder-solid\nrounded-[7px]\n`;\n","import * as React from 'react';\nimport { useRouter } from 'next/router';\nimport Image from 'next/image';\n\nimport { Title, TitleOrder } from '@mantine/core';\nimport { IconType } from 'react-icons';\nimport { Gen3Button, Gen3ButtonReverse } from '../Buttons/Gen3Button';\n\nimport {\n MdFormatQuote,\n MdOutlineSearch,\n MdOutlineBarChart,\n MdGroup,\n} from 'react-icons/md';\nimport { FaGraduationCap, FaRegQuestionCircle, FaVideo } from 'react-icons/fa';\nimport Gen3Link from '../../features/Navigation/Gen3Link';\nimport TextContent, { ContentType } from './TextContent';\n\nexport interface LandingPageContentProp {\n content: LandingPageProps;\n}\n\nexport interface leftRightProps {\n readonly text?: string;\n readonly type?: ContentType;\n readonly link?: {\n readonly href: string;\n readonly text: string;\n readonly linkType?: string;\n };\n readonly image?: {\n readonly src: string;\n readonly alt: string;\n };\n}\nexport interface LandingPageProps {\n readonly topTitle?: string;\n readonly body?: ReadonlyArray<{\n readonly title?: {\n readonly text: string;\n readonly level: TitleOrder;\n };\n readonly splitarea?: {\n readonly left: leftRightProps[];\n readonly right: leftRightProps[];\n };\n readonly break?: string;\n readonly cardsArea?: {\n readonly title: string;\n readonly cards: ReadonlyArray<{\n readonly icon: keyof IconType;\n readonly bodyText: string;\n readonly btnText: string;\n readonly href: string;\n readonly linkType?: string;\n }>;\n };\n readonly quoteArea?: {\n readonly quote: string;\n readonly author: string;\n };\n }>;\n}\n\n/**\n * Landing Page contents. Edit this component to change the composition of the landing page.\n * @param content - Refer to LandingPageProps interface above. Loaded from config file\n * located at sampleCommons/config/{commons}/landingPage.json\n */\nconst LandingPageContent = ({ content }: LandingPageContentProp) => {\n const { basePath } = useRouter();\n return (\n <div className=\"sm:mt-8 2xl:mt-10 w-full bg-base-max\">\n {content?.body?.map((component, index) => {\n if (component.title) {\n return (\n <Title\n key={index}\n className={`mb-5 pl-20 pb-2 ${\n index % 2 === 0 ? 'text-primary' : 'text-primary-lighter'\n }`}\n order={component.title.level}\n >\n {/* TODO: verify this color is correct */}\n <span\n className={`${\n index % 2 === 0 ? 'text-primary' : 'text-primary-lighter'\n }}`}\n ></span>\n {component.title.text}\n </Title>\n );\n }\n if (component.splitarea) {\n const splitareaJsx = (area: leftRightProps[]) =>\n area.map((obj, index) => {\n if (obj.text) {\n return (\n <TextContent\n text={obj.text}\n key={index}\n type={obj?.type ?? ContentType.Html}\n className=\"prose sm:prose-base 2xl:prose-lg mb-5 !mt-0\"\n />\n );\n }\n if (obj.link) {\n return (\n <Gen3Button\n colors=\"accent-lighter\"\n className=\"mb-5 mr-5 text-accent-contrast-lighter\"\n key={index}\n >\n <Gen3Link\n className=\"flex items-center\"\n href={obj.link.href}\n linkType={obj.link.linkType}\n text={obj.link.text}\n showExternalIcon\n />\n </Gen3Button>\n );\n }\n if (obj.image) {\n return (\n <div key={index} className=\"h-full relative\">\n <Image\n src={`${basePath}${obj.image.src}`}\n alt={obj.image.alt}\n fill\n />\n </div>\n );\n }\n });\n return (\n <div key={index} className=\"flex mx-20\">\n <div className=\"basis-1/2 pr-10\">\n {splitareaJsx(component.splitarea.left)}\n </div>\n <div className=\"basis-1/2\">\n {splitareaJsx(component.splitarea.right)}\n </div>\n </div>\n );\n }\n if (component.break) {\n return <hr key={index} className=\"border sm:my-10 2xl:my-12\" />;\n }\n if (component.cardsArea) {\n const allowedIcons = {\n FaGraduationCap: FaGraduationCap,\n FaRegQuestionCircle: FaRegQuestionCircle,\n FaVideo: FaVideo,\n MdOutlineSearch: MdOutlineSearch,\n MdOutlineBarChart: MdOutlineBarChart,\n MdGroup: MdGroup,\n };\n return (\n <div key={index} className=\"text-center\">\n <Title className=\"my-5\" order={3}>\n {component.cardsArea.title}\n </Title>\n <ul className=\"gap-4 mx-20 !p-0 flex\">\n {component.cardsArea.cards.map((card, index) => (\n <li\n key={index}\n className=\"border shadow-lg !p-5 w-1/5 flex flex-col justify-between items-center mx-5\"\n >\n {React.createElement(allowedIcons[card.icon], {\n title: `${card.btnText} icon`,\n className: 'inline-block text-7xl text-accent-lighter',\n })}\n <p className=\"block text-primary leading-6 mb-2\">\n {card.bodyText}\n </p>\n <Gen3ButtonReverse\n colors=\"accent-lighter\"\n className=\"mb-5 mr-5 text-base-contrast-lighter\"\n key={index}\n >\n <Gen3Link\n href={card.href}\n linkType={card.linkType}\n text={card.btnText}\n />\n </Gen3ButtonReverse>\n </li>\n ))}\n </ul>\n </div>\n );\n }\n if (component.quoteArea) {\n return (\n <div\n key={index}\n className=\"bg-secondary-lightest sm:p-16 2xl:p-20 text-center sm:mt-16 2xl:mt-20\"\n >\n <div className=\"sm:text-3xl 2xl:text-4xl\">\n {component.quoteArea.author ? (\n <MdFormatQuote\n title=\"quotation mark\"\n className=\"inline rotate-180 text-5xl mb-2\"\n />\n ) : null}\n {component.quoteArea.quote}\n {component.quoteArea.author ? (\n <MdFormatQuote\n title=\"quotation mark\"\n className=\"inline text-5xl mt-2\"\n />\n ) : null}\n </div>\n <div>{component.quoteArea.author}</div>\n </div>\n );\n }\n return null;\n })}\n </div>\n );\n};\n\nexport default LandingPageContent;\n","import React from 'react';\n\n// if we want to use MDX\n// import LandingPageMDX from \"../../content/landing.mdx\"\nimport LandingPageContent, {\n LandingPageProps,\n} from '../../components/Content/LandingPageContent';\nimport NavPageLayout, {\n NavPageLayoutProps,\n} from '../../features/Navigation/NavPageLayout';\n\ninterface Props extends NavPageLayoutProps {\n landingPage: LandingPageProps;\n}\n\nconst LandingPage = ({ headerProps, footerProps, landingPage }: Props) => {\n return (\n <NavPageLayout\n {...{ footerProps, headerProps }}\n headerData={{\n title: 'Gen3 Home Page',\n content: 'Home page',\n key: 'gen3-home-page',\n }}\n >\n <div className=\"flex justify-items-center w-full\">\n <LandingPageContent content={landingPage} />\n </div>\n </NavPageLayout>\n );\n};\n\nexport default LandingPage;\n","// should move this thing into _app.tsx and make a dedicated layout component after https://github.com/vercel/next.js/discussions/10949 is addressed\nimport { GetStaticProps } from 'next';\nimport { getNavPageLayoutPropsFromConfig } from '../../lib/common/staticProps';\nimport ContentSource from '../../lib/content';\nimport { GEN3_COMMONS_NAME } from '@gen3/core';\n\nexport const LandingPageGetStaticProps: GetStaticProps = async () => {\n const navPageLayoutProps = await getNavPageLayoutPropsFromConfig();\n const landingPage = await ContentSource.get(\n `config/${GEN3_COMMONS_NAME}/landingPage.json`,\n );\n return {\n props: {\n ...navPageLayoutProps,\n landingPage,\n },\n };\n};\n","import React from 'react';\nimport { NavPageLayout } from '../../features/Navigation';\nimport { CohortBuilder } from '../../features/CohortBuilder';\nimport { ExplorerPageProps } from './types';\nimport { Center } from '@mantine/core';\nimport {\n registerExplorerDefaultCellRenderers,\n registerCohortBuilderDefaultPreviewRenderers,\n} from '../../features/CohortBuilder';\n\nregisterExplorerDefaultCellRenderers();\nregisterCohortBuilderDefaultPreviewRenderers();\n\nconst ExplorerPage = ({\n headerProps,\n footerProps,\n explorerConfig,\n}: ExplorerPageProps): JSX.Element => {\n if (explorerConfig === undefined) {\n return (\n <Center maw={400} h={100} mx=\"auto\">\n <div>Explorer config is not defined. Page disabled</div>\n </Center>\n );\n }\n\n return (\n <NavPageLayout\n {...{ headerProps, footerProps }}\n headerData={{\n title: 'Gen3 Explorer Page',\n content: 'Explorer Page',\n key: 'gen3-explorer-page',\n }}\n >\n <CohortBuilder explorerConfig={explorerConfig} />\n </NavPageLayout>\n );\n};\n\nexport default ExplorerPage;\n","import { GetServerSideProps } from 'next';\nimport { getNavPageLayoutPropsFromConfig } from '../../lib/common/staticProps';\nimport ContentSource from '../../lib/content';\nimport { CohortBuilderConfiguration } from '../../features/CohortBuilder';\nimport { GEN3_COMMONS_NAME } from '@gen3/core';\nimport type { NavPageLayoutProps } from '../../features/Navigation';\n\nexport const ExplorerPageGetServerSideProps: GetServerSideProps<\n NavPageLayoutProps\n> = async (_context) => {\n\n try {\n const cohortBuilderProps: CohortBuilderConfiguration = await ContentSource.get(\n `config/${GEN3_COMMONS_NAME}/explorer.json`,\n );\n return {\n props: {\n ...(await getNavPageLayoutPropsFromConfig()),\n explorerConfig: cohortBuilderProps,\n },\n };\n } catch (err) {\n console.error(err);\n return {\n props: {\n ...(await getNavPageLayoutPropsFromConfig()),\n explorerConfig: undefined,\n },\n };\n }\n};\n","import React from 'react';\nimport { Divider, Text } from '@mantine/core';\n\nexport const divider_style = {\n label: 'font-medium text-primary-content-darkest text-lg my-2',\n};\n\nconst Gen3FrontendContrastColors: Record<string, ReadonlyArray<string>> = {\n 'base-contrast': [\n 'text-base-contrast-max',\n 'text-base-contrast-lightest',\n 'text-base-contrast-lighter',\n 'text-base-contrast-light',\n 'text-base-contrast',\n 'text-base-contrast-vivid',\n 'text-base-contrast-dark',\n 'text-base-contrast-darker',\n 'text-base-contrast-darkest',\n 'text-base-contrast-min',\n ],\n 'primary-contrast': [\n 'text-primary-contrast-max',\n 'text-primary-contrast-lightest',\n 'text-primary-contrast-lighter',\n 'text-primary-contrast-light',\n 'text-primary-contrast',\n 'text-primary-contrast-vivid',\n 'text-primary-contrast-dark',\n 'text-primary-contrast-darker',\n 'text-primary-contrast-darkest',\n 'text-primary-contrast-min',\n ],\n 'secondary-contrast': [\n 'text-secondary-contrast-max',\n 'text-secondary-contrast-lightest',\n 'text-secondary-contrast-lighter',\n 'text-secondary-contrast-light',\n 'text-secondary-contrast',\n 'text-secondary-contrast-vivid',\n 'text-secondary-contrast-dark',\n 'text-secondary-contrast-darker',\n 'text-secondary-contrast-darkest',\n 'text-secondary-contrast-min',\n ],\n 'accent-contrast': [\n 'text-accent-contrast-max',\n 'text-accent-contrast-lightest',\n 'text-accent-contrast-lighter',\n 'text-accent-contrast-light',\n 'text-accent-contrast',\n 'text-accent-contrast-vivid',\n 'text-accent-contrast-dark',\n 'text-accent-contrast-darker',\n 'text-accent-contrast-darkest',\n 'text-accent-contrast-min',\n ],\n 'accent-warm-contrast': [\n 'text-accent-warm-contrast-max',\n 'text-accent-warm-contrast-lightest',\n 'text-accent-warm-contrast-lighter',\n 'text-accent-warm-contrast-light',\n 'text-accent-warm-contrast',\n 'text-accent-warm-contrast-vivid',\n 'text-accent-warm-contrast-dark',\n 'text-accent-warm-contrast-darker',\n 'text-accent-warm-contrast-darkest',\n 'text-accent-warm-contrast-min',\n ],\n 'accent-cool-contrast': [\n 'text-accent-cool-contrast-max',\n 'text-accent-cool-contrast-lightest',\n 'text-accent-cool-contrast-lighter',\n 'text-accent-cool-contrast-light',\n 'text-accent-cool-contrast',\n 'text-accent-cool-contrast-vivid',\n 'text-accent-cool-contrast-dark',\n 'text-accent-cool-contrast-darker',\n 'text-accent-cool-contrast-darkest',\n 'text-accent-cool-contrast-min',\n ],\n 'chart-contrast': [\n 'text-chart-contrast-max',\n 'text-chart-contrast-lightest',\n 'text-chart-contrast-lighter',\n 'text-chart-contrast-light',\n 'text-chart-contrast',\n 'text-chart-contrast-vivid',\n 'text-chart-contrast-dark',\n 'text-chart-contrast-darker',\n 'text-chart-contrast-darkest',\n 'text-chart-contrast-min',\n ],\n 'utility-contrast': [\n 'text-utility-contrast-link',\n 'text-utility-contrast-success',\n 'text-utility-contrast-warning',\n 'text-utility-contrast-error',\n 'text-utility-contrast-emergency',\n 'text-utility-contrast-info',\n 'text-utility-contrast-category1',\n 'text-utility-contrast-category2',\n 'text-utility-contrast-category3',\n 'text-utility-contrast-category4',\n ],\n};\n\nconst Gen3FrontEndColors: Record<string, ReadonlyArray<string>> = {\n base: [\n 'bg-base-max',\n 'bg-base-lightest',\n 'bg-base-lighter',\n 'bg-base-light',\n 'bg-base',\n 'bg-base-vivid',\n 'bg-base-dark',\n 'bg-base-darker',\n 'bg-base-darkest',\n 'bg-base-min',\n ],\n primary: [\n 'bg-primary-max',\n 'bg-primary-lightest',\n 'bg-primary-lighter',\n 'bg-primary-light',\n 'bg-primary',\n 'bg-primary-vivid',\n 'bg-primary-dark',\n 'bg-primary-darker',\n 'bg-primary-darkest',\n 'bg-primary-min',\n ],\n\n secondary: [\n 'bg-secondary-max',\n 'bg-secondary-lightest',\n 'bg-secondary-lighter',\n 'bg-secondary-light',\n 'bg-secondary',\n 'bg-secondary-vivid',\n 'bg-secondary-dark',\n 'bg-secondary-darker',\n 'bg-secondary-darkest',\n 'bg-secondary-min',\n ],\n\n accent: [\n 'bg-accent-max',\n 'bg-accent-lightest',\n 'bg-accent-lighter',\n 'bg-accent-light',\n 'bg-accent',\n 'bg-accent-vivid',\n 'bg-accent-dark',\n 'bg-accent-darker',\n 'bg-accent-darkest',\n 'bg-accent-min',\n ],\n\n 'accent-warm': [\n 'bg-accent-warm-max',\n 'bg-accent-warm-lightest',\n 'bg-accent-warm-lighter',\n 'bg-accent-warm-light',\n 'bg-accent-warm',\n 'bg-accent-warm-vivid',\n 'bg-accent-warm-dark',\n 'bg-accent-warm-darker',\n 'bg-accent-warm-darkest',\n 'bg-accent-warm-min',\n ],\n 'accent-cool': [\n 'bg-accent-cool-max',\n 'bg-accent-cool-lightest',\n 'bg-accent-cool-lighter',\n 'bg-accent-cool-light',\n 'bg-accent-cool',\n 'bg-accent-cool-vivid',\n 'bg-accent-cool-dark',\n 'bg-accent-cool-darker',\n 'bg-accent-cool-darkest',\n 'bg-accent-cool-min',\n ],\n\n chart: [\n 'bg-chart-max',\n 'bg-chart-lightest',\n 'bg-chart-lighter',\n 'bg-chart-light',\n 'bg-chart',\n 'bg-chart-vivid',\n 'bg-chart-dark',\n 'bg-chart-darker',\n 'bg-chart-darkest',\n 'bg-chart-min',\n ],\n utility: [\n 'bg-utility-link',\n 'bg-utility-success',\n 'bg-utility-warning',\n 'bg-utility-error',\n 'bg-utility-emergency',\n 'bg-utility-info',\n 'bg-utility-category1',\n 'bg-utility-category2',\n 'bg-utility-category3',\n 'bg-utility-category4',\n ],\n};\n\ninterface ColorStylePalletProps {\n readonly name: string;\n readonly colors: ReadonlyArray<string>;\n}\n\ninterface ColorAndContrastStylePalletProps extends ColorStylePalletProps {\n readonly contrast?: ReadonlyArray<string>;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst ColorPalletLine = ({ name, colors }: ColorStylePalletProps) => {\n return (\n <div className=\"flex flex-row items-center font-heading\">\n <div className=\"grid gap-12 grid-cols-11 grid-rows-1 my-1\">\n <p className=\"col-span-3 font-medium w-24\">{name}</p>\n {colors.map((x, i) => (\n <div key={`${x}-${i}`} className={`${x} p-4 px-8 mx-2 rounded`} />\n ))}\n </div>\n </div>\n );\n};\n\nconst ColorAndContrastPalletLine = ({\n name,\n colors,\n contrast = undefined,\n}: ColorAndContrastStylePalletProps) => {\n return (\n <div className=\"grid gap-2 grid-cols-12 grid-rows-1 my-1 mr-6\">\n <p className=\"bg-base-max col-span-2 text-base-contrast-max\">{name}</p>\n {colors.map((x, i) => {\n const ext = x.split('-').slice(-1);\n return (\n <div\n key={`${x}-${i}`}\n className={`${x} ${\n contrast?.[i] ?? ''\n } flex justify-center p-4 px-8 mx-2 rounded border text-sm border-black`}\n >\n {ext}\n </div>\n );\n })}\n </div>\n );\n};\n\nconst ColorTheme = () => {\n return (\n <article className=\"prose font-heading bg-base-max text-base-contrast-max md:prose-md m-4 min-w-full\">\n <p className=\"prose font-semibold text-2xl\">Color Palettes</p>\n <div className=\"flex flex-col mx-4\">\n <div className=\"text-base-contrast-lighter mr-6\">\n The following theme colors are are currently available in this Gen3\n Data Commons.\n </div>\n {Object.keys(Gen3FrontEndColors).map((name: string) => {\n return (\n <ColorAndContrastPalletLine\n key={`${name}-pallet`}\n name={name}\n colors={Gen3FrontEndColors[name]}\n contrast={\n Object.keys(Gen3FrontendContrastColors).filter((element) =>\n element.includes(name),\n ).length > 0\n ? Gen3FrontendContrastColors[`${name}-contrast`]\n : Gen3FrontendContrastColors['primary-contrast']\n }\n />\n );\n })}\n {/* todo: make sure color is this custom one */}\n <div className=\"mr-6 text-[text-base-contrast.3]\">\n <Text>\n <p>\n <b>Gen3 Color Theme is based on USWDS theme color tokens</b> which\n are divided into several high-level role-based color families:{' '}\n <em>\n base, primary, secondary, accent, accent-warm, accent-cool, chart,\n and utility.\n </em>\n </p>\n <b>Base</b> is a project’s neutral color, typically some tint of gray,\n and usually used as the text color throughout.\n <p>\n <b>Primary, secondary, and accent colors</b> can be thought of as\n falling into a proportional 60/30/10 relationship: about 60% of your\n site’s color would be the primary color family, about 30% would be\n the secondary color family, and about 10% would be the accent color\n families (accent-warm and accent-cool). Note that these proportions\n are for non-base colors. In many cases, the neutral base text color\n will be the predominant tone on your site.\n </p>\n <p>\n Each color in the theme has 10 colors:\n <b>\n max, lightest, lighter, light, DEFAULT, vivid, dark, darker,\n darkest, min{' '}\n </b>\n These are padded to 10 color arrays for compatibility with\n Mantine&.s color theme. This allows you to pass\n color="primary|secondary|accent...." to Mantine components\n as documented, this includes accessing lighter or darker version vis\n the primary.N (where N 0..9).\n </p>\n Each of these color also has a contrasting color for text, which is:\n <ul>\n <li>\n <b>\n contrast-max, contrast-lightest, contrast-lighter,\n contrast-light, contrast-DEFAULT, contrast-vivid, contrast-dark,\n contrast-darker, contrast-darkest, contrast-min{' '}\n </b>\n </li>\n </ul>\n <p>\n The contrast color is defined to be a 508 compliant contrast so\n while <b>primary-darker</b> is a darker version of the primary\n color, <b>primary-contrast-darker</b> is a 508 contrast compliant\n color, and it actually lighter, but is named to match the primary\n color shade. This means that consistent use of color-<em>shade</em>{' '}\n and color-contrast-<em>shade</em>, for example{' '}\n <b>bg-primary-lighter</b> and <b>text-primary-contrast-lighter</b>{' '}\n ensures that these two colors will be 508 compliant if the shades\n are defined correctly. The <em>content</em> variant allows finder\n control over the theme but at the risk of creating 508 contrast\n errors Any component using <em>content</em> should be checked for\n 508 contrast issues.\n </p>\n </Text>\n </div>\n </div>\n </article>\n );\n};\n\nexport default ColorTheme;\n","import { NavPageLayout, NavPageLayoutProps } from '../../features/Navigation';\n\nimport ColorTheme from '../../features/Theme/ColorTheme';\n\nconst ColorThemePage = ({ headerProps, footerProps }: NavPageLayoutProps) => {\n return (\n <NavPageLayout\n {...{ headerProps, footerProps }}\n headerData={{\n title: 'Gen3 Theme Page',\n content: 'Theme page',\n key: 'gen3-theme-page',\n }}\n >\n <div className=\"flex justify-items-center w-full\">\n <ColorTheme />\n </div>\n </NavPageLayout>\n );\n};\n\nexport default ColorThemePage;\n","import { GetServerSideProps } from 'next';\nimport { getNavPageLayoutPropsFromConfig } from '../../lib/common/staticProps';\nimport { type NavPageLayoutProps } from '../../features/Navigation';\n\nexport const ColorThemePageGetServerSideProps: GetServerSideProps<\n NavPageLayoutProps\n> = async () => {\n return {\n props: {\n ...(await getNavPageLayoutPropsFromConfig()),\n },\n };\n};\n","import React, { ReactNode } from 'react';\nimport { useRouter } from 'next/router';\nimport { useSession } from '../../lib/session/session';\nimport { Center, LoadingOverlay, Paper, Text } from '@mantine/core';\n\ninterface ProtectedContentProps {\n children?: ReactNode;\n referer?: string;\n}\n\n\nconst ProtectedContent = ({ children, referer }: ProtectedContentProps) => {\n const router = useRouter();\n\n let redirect = referer;\n if (!referer && typeof window !== 'undefined') {\n // route not available on SSR\n redirect = router.asPath;\n }\n\n const onUnauthenticated = () => {\n if (typeof window !== 'undefined')\n // route not available on SSR\n router.push({\n pathname: '/Login',\n query: { referer: redirect },\n });\n };\n\n const { status, pending } = useSession(true, onUnauthenticated);\n if (status !== 'issued') {\n // not logged in\n if (pending) return <LoadingOverlay visible={pending} />;\n else\n return (\n <div className=\"w-full h-full relative\">\n <LoadingOverlay visible={pending} />\n <Center>\n <Paper shadow=\"md\" p=\"md\">\n <Text>\n You are not signed in and cannot access this protected content.\n Please login in.\n </Text>\n </Paper>\n </Center>\n </div>\n );\n }\n\n return <React.Fragment>{children}</React.Fragment>;\n};\n\nexport default ProtectedContent;\n","import React, { useMemo } from 'react';\nimport { ActionIcon, Box, Table } from '@mantine/core';\nimport {\n useGetCredentialsQuery,\n useRemoveCredentialMutation,\n type APIKey,\n useGetCSRFQuery,\n} from '@gen3/core';\nimport { MdDelete as DeleteIcon } from 'react-icons/md';\nimport { LuRefreshCw as RefreshIcon } from 'react-icons/lu';\nimport { unixTimeToString } from '../../utils';\nimport { TableIcons } from '../../components/Tables/TableIcons';\n\nconst SOON_IN_DAYS = 86400 * 5;\n\nimport {\n MantineReactTable,\n MRT_ColumnDef,\n MRT_Cell,\n useMantineReactTable,\n} from 'mantine-react-table';\n\nconst getStatus = (expiration: number, now: number) => {\n if (expiration < now) return 'Expired';\n else if (expiration - now < SOON_IN_DAYS) return 'Expiring Soon';\n return 'Active';\n};\n\ninterface APIKeyStatus {\n actions: 'delete' | 'refreshDelete';\n expiration: number;\n key: string;\n status: string;\n}\n\n/**\n * Defines a Credentials Table that lists all credentials for a logged in user\n * with the ability to delete a given credential using useRemoveCredentialMutation() hook\n * @returns {JSX.Element} The JSX element representing the credentials table.\n */\nconst CredentialsTable = () => {\n const { data: csrfToken } = useGetCSRFQuery();\n const { data: credentials } = useGetCredentialsQuery();\n const [removeCredential] = useRemoveCredentialMutation();\n\n const columns = useMemo(() => {\n return [\n {\n accessorKey: 'key',\n header: 'API Key',\n },\n {\n accessorKey: 'status',\n header: 'Status',\n },\n {\n accessorKey: 'expiration',\n header: 'Expiration Date',\n accessorFn: (apiKey: APIKeyStatus) =>\n unixTimeToString(\n // pragma: allowlist-secret\n apiKey.expiration,\n ),\n },\n {\n accessorKey: 'actions',\n header: 'Actions',\n Cell: ({ row }: MRT_Cell<APIKeyStatus>) => (\n <div className=\"flex items-center\">\n {row.original.actions === 'delete' ? (\n <ActionIcon\n onClick={() =>\n removeCredential({\n csrfToken: csrfToken?.csrfToken,\n id: row.original.key,\n })\n }\n >\n <DeleteIcon />\n </ActionIcon>\n ) : (\n <span>\n {' '}\n <RefreshIcon /> <DeleteIcon />\n </span>\n )}\n </div>\n ),\n },\n ] as MRT_ColumnDef<APIKeyStatus>[];\n }, [csrfToken, removeCredential]);\n\n const currentTimeInSeconds = Math.floor(Date.now() / 1000);\n\n const rows = useMemo(() => {\n return credentials\n ? credentials.reduce((acc: APIKeyStatus[], c: APIKey) => {\n const status = getStatus(c.exp, currentTimeInSeconds);\n return acc.concat({\n key: c.jti,\n expiration: c.exp,\n status: status,\n actions: status === 'Active' ? 'delete' : 'refreshDelete',\n });\n }, [] as APIKeyStatus[])\n : [];\n }, [credentials, currentTimeInSeconds]);\n\n const table = useMantineReactTable<APIKeyStatus>({\n columns,\n data: rows,\n paginationDisplayMode: 'pages',\n positionToolbarAlertBanner: 'bottom',\n enableTopToolbar: false,\n mantineSearchTextInputProps: {\n placeholder: 'Search API Keys',\n },\n icons: TableIcons,\n });\n\n return <MantineReactTable table={table} />;\n};\n\nexport default CredentialsTable;\n","import React, { useEffect, useState } from 'react';\nimport {\n useCoreDispatch,\n showModal,\n Modals,\n useCoreSelector,\n selectCurrentModal,\n APIKey,\n} from '@gen3/core';\nimport { Button, LoadingOverlay, Stack } from '@mantine/core';\nimport { CreateCredentialsAPIKeyModal } from '../Modals';\nimport { APICredentials } from './types';\n\nimport {\n useGetCredentialsQuery,\n useAddNewCredentialMutation,\n useGetCSRFQuery,\n} from '@gen3/core';\n\nimport CredentialsTable from './CredentialsTable';\n\n/**\n * Defines a Credentials Component containing a create credential button\n * and a table that shows all current credentials for logged in user.\n * It also retrieves CSRF token and creates a modal that shows the newly\n * created API key coming from fence.\n * @returns {JSX.Element} The JSX element representing the credentials section.\n */\nconst Credentials = () => {\n // useGetCSRFQuery hook returns a user's JWT token from the default gen3 core API\n const { data: csrfToken } = useGetCSRFQuery();\n const { isLoading } = useGetCredentialsQuery();\n const [addNewCredential, { isLoading: isNewLoading, isSuccess }] =\n useAddNewCredentialMutation();\n const modal = useCoreSelector((state) => selectCurrentModal(state));\n const [newCredential, setCredentials] = useState<APICredentials>({\n api_key: '', // pragma: allowlist-secret;\n key_id: '',\n });\n\n const coreDispatch = useCoreDispatch();\n return (\n <React.Fragment>\n {modal === Modals.CreateCredentialsAPIKeyModal && (\n <CreateCredentialsAPIKeyModal openModal credentials={newCredential} />\n )}\n <div className=\"flex flex-col w-full p-2 relative\">\n <div className=\"flex mb-2\">\n <Button\n color=\"accent.4\"\n onClick={async () => {\n if (csrfToken) {\n await addNewCredential(csrfToken.csrfToken)\n .unwrap()\n .then((credentials) => {\n coreDispatch(\n showModal({ modal: Modals.CreateCredentialsAPIKeyModal }),\n );\n setCredentials(credentials);\n });\n }\n }}\n >\n Create an API Key\n </Button>\n </div>\n <LoadingOverlay visible={isLoading || isNewLoading} />\n <CredentialsTable />\n </div>\n </React.Fragment>\n );\n};\n\nexport default Credentials;\n","import { ServiceAndMethod } from '@gen3/core';\n\nexport const convertToRecordMethodToResource = (\n entries: ServiceAndMethod[],\n filters: string[],\n) => {\n return entries.reduce(\n (acc: Record<string, string[]>, entry: ServiceAndMethod) => {\n if (filters.length > 0 && !filters.includes(entry.service)) return acc;\n if (!(entry.method in acc)) {\n acc[entry.method] = [entry.service];\n } else acc[entry.method].push(entry.service);\n return acc;\n },\n {} as Record<string, string[]>,\n );\n};\n","import React, { useMemo } from 'react';\nimport { type ServiceAndMethod } from '@gen3/core';\nimport { Badge } from '@mantine/core';\nimport { TableIcons } from '../../components/Tables/TableIcons';\n\nimport {\n MantineReactTable,\n MRT_Cell,\n MRT_ColumnDef,\n useMantineReactTable,\n MRT_Icons,\n} from 'mantine-react-table';\nimport { useResourcesContext } from './ResourcesProvider';\nimport { useProfileContext } from './ProfileProvider';\nimport { ServiceColorAndLabel } from './types';\nimport { convertToRecordMethodToResource } from './utils';\n\ninterface ItemResource {\n resource: string;\n methods: Record<string, string[]>;\n}\n\ninterface ResourceBadgeProps {\n resource: string;\n serviceBadgeStyle: Record<string, ServiceColorAndLabel>;\n defaultColor?: string;\n}\n\nconst ResourceBadge = ({\n resource,\n serviceBadgeStyle,\n defaultColor = 'primary',\n}: ResourceBadgeProps): JSX.Element => {\n const { color, label } =\n resource in serviceBadgeStyle\n ? serviceBadgeStyle[resource]\n : { color: defaultColor, label: resource };\n\n return (\n <Badge variant=\"filled\" color={color} aria-label={label}>\n {label}\n </Badge>\n );\n};\n\ninterface ResourcesTableProps {\n filters: string[];\n}\n\n/**\n * ResourcesTable function creates a mantine-react-table'\n * to display user permissions from the useResourcesContext\n * and the useProfileContext context hooks\n *\n * @param filters - filters passed in from filters panel.\n * @returns A resources table for viewing methods, services that user has access to\n * on specified resource paths.\n */\nconst ResourcesTable = ({ filters }: ResourcesTableProps) => {\n const { userProfile, servicesAndMethods } = useResourcesContext();\n const { profileConfig } = useProfileContext();\n let rows: ItemResource[] = [];\n\n rows = useMemo(() => {\n return Object.entries(userProfile?.authz ?? {})\n .map(([key, authz]) => {\n const methods = convertToRecordMethodToResource(authz, filters);\n return {\n resource: key,\n methods: methods,\n };\n })\n .filter((row) => Object.keys(row.methods).length > 0);\n }, [filters, userProfile?.authz]);\n\n const columns = useMemo(() => {\n return [\n {\n header: 'Resource(s)',\n accessorKey: 'resource',\n Cell: ({ row }: MRT_Cell<ItemResource>) => (\n <div>{row.original.resource}</div>\n ),\n mantineTableHeadCellProps: {\n align: 'left',\n },\n mantineTableBodyCellProps: {\n align: 'left',\n },\n },\n ...servicesAndMethods.methods.map((method) => {\n return {\n header: method,\n accessor: 'methods',\n size: 150,\n Cell: ({ row }: MRT_Cell<ItemResource>) => {\n return (\n <div className=\"flex flex-col space-y-1\">\n {method in row.original.methods ? (\n row.original.methods[method].map((resource) => (\n <ResourceBadge\n key={resource}\n resource={resource}\n serviceBadgeStyle={\n profileConfig.resourceTable?.serviceColors ?? {}\n }\n />\n ))\n ) : (\n <span className=\"w-4 h-4\"></span>\n )}\n </div>\n );\n },\n };\n }),\n ] as unknown as MRT_ColumnDef<ItemResource>[];\n }, [profileConfig.resourceTable?.serviceColors, servicesAndMethods.methods]);\n\n const table = useMantineReactTable<ItemResource>({\n columns,\n data: rows,\n enableColumnResizing: true,\n enableTopToolbar: false,\n layoutMode: 'grid',\n icons: TableIcons,\n //Disables the default flex-grow behavior of the table cells\n mantineTableHeadRowProps: {\n style: {\n '--mrt-base-background-color': 'var(--mantine-color-secondary-2)',\n borderColor: 'var(--mantine-color-secondary-2)',\n borderWidth: '1px',\n boxShadow: 'none',\n align: 'center',\n fontSize: 'var(--mantine-font-size-sm)',\n fontWeight: 600,\n color: 'var(--mantine-color-secondary-contrast-2)',\n },\n },\n mantineTableHeadCellProps: {\n align: 'center',\n },\n mantineTableBodyCellProps: {\n align: 'center',\n },\n paginationDisplayMode: 'pages',\n positionToolbarAlertBanner: 'bottom',\n });\n\n return (\n <div className=\"w-full\">\n <MantineReactTable table={table} />\n </div>\n );\n};\n\nexport default ResourcesTable;\n","import { useState } from 'react';\nimport ResourcesFilters from './ResourcesFilters';\nimport ResourcesTable from './ResourcesTable';\nimport ResourcesProvider from './ResourcesProvider';\n\n/**\n * ResourcesPanel gets filters from ResourcesFilters panel and passes those\n * filters into useState setFilters hook to be used as the filters variable in the\n * ResourcesTable on the profile page\n */\nexport const ResourcesPanel = () => {\n const [filters, setFilters] = useState<string[]>([]);\n // Todo add project access Table other table types Resources vs Services Resources vs Methods\n return (\n <ResourcesProvider>\n <div className=\"flex\">\n <ResourcesFilters setFilters={setFilters} selectedFilters={filters} />\n <ResourcesTable filters={filters} />\n </div>\n </ResourcesProvider>\n );\n};\n","import React, { HTMLAttributes, useEffect } from 'react';\nimport { Card, Text, Stack, Button, Center } from '@mantine/core';\nimport { type ExternalProvider, type NamedURL } from '@gen3/core';\nimport {\n IoMdRefresh as ReloadIcon,\n IoMdLogIn as LoginIcon,\n} from 'react-icons/io';\nimport Link from 'next/link';\nimport { useDisclosure } from '@mantine/hooks';\n\n/**\n * Open a new window for authentication.\n * @param url - URL to open\n * @param title - Title of the window\n */\nconst openAuthWindow = (url: string, title: string): Promise<unknown> => {\n const pollInterval = 500;\n return new Promise((resolve, reject) => {\n if (window.navigator.cookieEnabled) {\n const dualScreenLeft = window.screenLeft ?? window.screenX;\n const dualScreenTop = window.screenTop ?? window.screenY;\n\n const width =\n window.innerWidth ??\n document.documentElement.clientWidth ??\n screen.width;\n\n const height =\n window.innerHeight ??\n document.documentElement.clientHeight ??\n screen.height;\n\n const systemZoom = width / window.screen.availWidth;\n\n const left = (width - 500) / 2 / systemZoom + dualScreenLeft;\n const top = (height - 550) / 2 / systemZoom + dualScreenTop;\n\n const win = window.open(\n url,\n title,\n `width=${500 / systemZoom},height=${\n 550 / systemZoom\n },top=${top},left=${left}`,\n );\n\n if (!win) {\n reject('Popup blocked');\n return;\n }\n win?.focus();\n\n const loginAttempt = () => {\n if (win.closed) {\n clearInterval(interval);\n reject('window closed manually');\n }\n try {\n if (\n win.document.URL.includes(location.origin) &&\n !win.document.URL.includes('auth')\n ) {\n win.close();\n clearInterval(interval);\n if (win.document.URL.includes('error=401')) {\n reject('login_error');\n return;\n }\n resolve('success');\n }\n } catch (err) {\n // We just want to catch it and not reject it. Rejecting the promise leads to unexpected behavior\n // where the logged-in status isn't reflected immediately as the program moves ahead w/o users\n // having a chance to log in, requiring a manual screen refresh to update. By catching errors\n // instead of rejecting, we avoid the issue where browser complains about cross origin\n // and ensure a smoother user experience where the promise chain continues until we login and we\n // avoid pre-maturely triggering calls which fetches user info.\n }\n };\n const interval = setInterval(loginAttempt, pollInterval);\n } else {\n reject('No cookies enabled');\n }\n });\n};\n\ninterface ExternalProviderCardProps extends HTMLAttributes<HTMLDivElement> {\n provider: ExternalProvider;\n}\n\nconst ExternalProviderCard: React.FunctionComponent<\n ExternalProviderCardProps\n> = ({ provider }) => {\n const [loading, handler] = useDisclosure();\n return (\n <Card withBorder radius=\"sm\">\n <Card.Section withBorder inheritPadding py=\"xs\">\n <Center>\n <Text truncate size=\"lg\" fw={700} color=\"primary.4\">\n <span aria-label=\"provider-name\">{provider.name} </span>\n </Text>\n </Center>\n </Card.Section>\n <Card.Section inheritPadding py=\"md\">\n <Stack gap=\"md\">\n <div className=\"flex flex-nowrap justify-between items-center\">\n <Text>IDP</Text>\n <Text truncate aria-label=\"provider-idp\">\n {provider.idp}\n </Text>\n </div>\n <div className=\"flex flex-nowrap justify-between items-center\">\n <Text truncate>Provider URL</Text>\n <Link href={provider.base_url} target=\"_blank\" rel=\"noreferrer\">\n <Text truncate color=\"utility.0\" aria-label=\"provider-base-url\">\n {provider.base_url}\n </Text>\n </Link>\n </div>\n <div className=\"flex flex-nowrap justify-between items-center\">\n <Text truncate>Status</Text>\n <Text truncate aria-label=\"provider-status\">\n {provider.refresh_token_expiration\n ? `Expires in ${provider.refresh_token_expiration}`\n : 'Not authorized'}\n </Text>\n </div>\n </Stack>\n </Card.Section>\n <Card.Section inheritPadding p=\"sm\">\n {provider.urls.map((providerUrl: NamedURL, i: number) => (\n <Button\n variant=\"outline\"\n fullWidth\n size=\"md\"\n color=\"accent\"\n disabled={loading}\n key={`${providerUrl.url}-${i}`}\n onClick={async () => {\n const queryChar = providerUrl.url.includes('?') ? '&' : '?';\n handler.open();\n openAuthWindow(\n `${providerUrl.url}${queryChar}redirect=${window.location.pathname}`,\n provider.name,\n ).finally(() => {\n handler.close();\n });\n }}\n aria-label={`provider-button-${provider.name}`}\n leftSection={\n provider.refresh_token_expiration ? (\n <ReloadIcon\n size=\"1.5rem\"\n className=\"text-accent data-disabled:opacity-50\"\n />\n ) : (\n <LoginIcon\n size=\"1.5rem\"\n className=\"text-accent disabled:text-accent/50\"\n />\n )\n }\n >\n <span aria-hidden={true}>\n {provider.refresh_token_expiration\n ? `Refresh ${providerUrl.name}`\n : `Authorize ${providerUrl.name}`}\n </span>\n </Button>\n ))}\n </Card.Section>\n </Card>\n );\n};\n\nexport default ExternalProviderCard;\n","import { useGetExternalLoginsQuery, type ExternalProvider } from '@gen3/core';\nimport { useMemo } from 'react';\n\nimport ExternalProviderCard from './ExternalProviderCard';\nimport { LoadingOverlay } from '@mantine/core';\n\nconst ExternalProvidersPanel = () => {\n const {\n data: externalProviders,\n isLoading,\n isError,\n isSuccess,\n } = useGetExternalLoginsQuery();\n\n const providerCards = useMemo(\n () =>\n externalProviders\n ? externalProviders.providers.map((provider: ExternalProvider) => (\n <ExternalProviderCard key={provider.base_url} provider={provider} />\n ))\n : null,\n [externalProviders],\n );\n\n return (\n <div className=\"mt-6 relative\">\n <LoadingOverlay visible={isLoading} />\n {isError && <div role=\"alert\">Error loading external providers</div>}\n {isSuccess && (\n <div\n className=\"mt-4 grid gap-4 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4\"\n role=\"listbox\"\n >\n {providerCards}\n </div>\n )}\n </div>\n );\n};\n\nexport default ExternalProvidersPanel;\n","import ProtectedContent from '../../components/Protected/ProtectedContent';\nimport Credentials from '../../components/Profile/Credentials';\nimport { Accordion } from '@mantine/core';\nimport { ResourcesPanel } from '../../components/Profile/ResourcesPanel';\nimport { ProfileProvider } from '../../components/Profile';\nimport { ProfileConfig } from '../../components/Profile';\nimport ExternalProvidersPanel from '../../components/Profile/ExternalProvidersPanel';\nimport { PiCaretCircleDownFill as Caret } from 'react-icons/pi';\n\nexport interface ProfileProps {\n profileConfig: ProfileConfig;\n}\n\nconst Profile = ({ profileConfig }: ProfileProps) => {\n return (\n <ProtectedContent>\n <ProfileProvider profileConfig={profileConfig}>\n <div className=\"flex flex-col w-full\">\n <Accordion\n multiple\n variant=\"separated\"\n chevronPosition=\"left\"\n chevron={<Caret color=\"primary.4\" size=\"1.75rem\" />}\n defaultValue={[\n ...['apiKeys', 'resources'],\n ...(profileConfig?.hasExternalLogins ? ['externalLogins'] : []),\n ]}\n classNames={{\n label: 'text-secondary-contrast-lighter font-heading font-bold',\n }}\n >\n {profileConfig?.hasExternalLogins && (\n <Accordion.Item value=\"externalLogins\">\n <div className=\"bg-secondary-lighter\">\n <Accordion.Control>\n Link Account from External Data Resources\n </Accordion.Control>\n </div>\n <Accordion.Panel>\n <ExternalProvidersPanel />\n </Accordion.Panel>\n </Accordion.Item>\n )}\n <Accordion.Item value=\"apiKeys\">\n <div className=\"bg-secondary-lighter\">\n <Accordion.Control>Current API Keys</Accordion.Control>\n </div>\n <Accordion.Panel>\n <Credentials />\n </Accordion.Panel>\n </Accordion.Item>\n <Accordion.Item value=\"resources\">\n <div className=\"bg-secondary-lighter\">\n <Accordion.Control>Resources</Accordion.Control>\n </div>\n <Accordion.Panel>\n <ResourcesPanel />\n </Accordion.Panel>\n </Accordion.Item>\n </Accordion>\n </div>\n </ProfileProvider>\n </ProtectedContent>\n );\n};\n\nexport default Profile;\n","import React from 'react';\nimport { NavPageLayout, NavPageLayoutProps } from '../../features/Navigation';\nimport { Profile } from '../../features/Profile';\nimport { ProfileConfig } from '../../components/Profile';\n\ninterface Props extends NavPageLayoutProps {\n profileConfig: ProfileConfig;\n}\n\nconst ProfilePage = ({ headerProps, footerProps, profileConfig }: Props) => {\n return (\n <NavPageLayout\n {...{ headerProps, footerProps }}\n headerData={{\n title: 'Gen3 Profile Page',\n content: 'Profile page',\n key: 'gen3-profile-page',\n }}\n >\n <Profile profileConfig={profileConfig} />\n </NavPageLayout>\n );\n};\n\nexport default ProfilePage;\n","import { GetServerSideProps } from 'next';\nimport { getNavPageLayoutPropsFromConfig } from '../../lib/common/staticProps';\nimport { type NavPageLayoutProps } from '../../features/Navigation';\nimport { QueryProps } from '../Query/types';\nimport ContentSource from '../../lib/content';\nimport { GEN3_COMMONS_NAME } from '@gen3/core';\n\nexport const ProfilePageGetServerSideProps: GetServerSideProps<\n NavPageLayoutProps\n> = async () => {\n\n const profileConfig: QueryProps = await ContentSource.get(\n `config/${GEN3_COMMONS_NAME}/profile.json`,\n );\n\n return {\n props: {\n ...(await getNavPageLayoutPropsFromConfig()),\n ...{ profileConfig: profileConfig },\n },\n };\n};\n","import { NavPageLayout } from '../../features/Navigation';\nimport LoginPanel from '../../components/Login/LoginPanel';\nimport React from 'react';\nimport { LoginPageLayoutProps } from './types';\n\nconst LoginPage = ({\n headerProps,\n footerProps,\n loginConfig,\n}: LoginPageLayoutProps) => {\n return (\n <NavPageLayout\n {...{ headerProps, footerProps }}\n headerData={{\n title: 'Gen3 Login Page',\n content: 'Login page',\n key: 'gen3-login-page',\n }}\n >\n <LoginPanel {...loginConfig} />\n </NavPageLayout>\n );\n};\n\nexport default LoginPage;\n","import { GetServerSideProps } from 'next';\nimport { NavPageLayoutProps } from '../../features/Navigation';\nimport ContentSource from '../../lib/content';\nimport { getNavPageLayoutPropsFromConfig } from '../../lib/common/staticProps';\nimport { LoginConfig } from '../../components/Login';\nimport { GEN3_COMMONS_NAME } from '@gen3/core';\n\nexport const LoginPageGetServerSideProps: GetServerSideProps<\n NavPageLayoutProps\n> = async () => {\n const loginConfig: LoginConfig = await ContentSource.get(\n `config/${GEN3_COMMONS_NAME}/login.json`,\n );\n\n return {\n props: {\n ...(await getNavPageLayoutPropsFromConfig()),\n ...{ loginConfig : loginConfig },\n },\n };\n};\n","import {\n DictionaryCategory,\n MatchingSearchResult,\n DataDictionary,\n DictionaryEntry,\n DictionaryProperty,\n} from './types';\nimport { capitalize } from 'lodash';\nimport { Data } from 'victory';\n\nexport const categoryFilter = (id: string, dictionary: Record<string, any>) =>\n id.charAt(0) !== '_' &&\n id === dictionary[id].id &&\n dictionary[id].category &&\n dictionary[id].id &&\n dictionary[id].category?.toLowerCase() !== 'internal';\n\nexport const categoryReduce = (categories: any, dictionary: DataDictionary) => {\n return categories\n .map((id: string) => dictionary[id])\n .reduce((d: DictionaryCategory<any>, property: Record<string, string>) => {\n d[property.category] ??= [];\n d[property.category].push(property);\n return d;\n }, {}) as DictionaryCategory<any>;\n};\n\nexport const parseDictionaryNodes = (dictionary: DataDictionary) =>\n Object.keys(dictionary)\n .filter((id) => id.charAt(0) !== '_' && id === dictionary[id].id)\n .map((id) => {\n const originNode = dictionary[id];\n return originNode;\n })\n .filter((node) => node.category && node.id);\n\nexport const getPropertyCount = (\n categories: string[],\n dictionary: DataDictionary,\n) => {\n return categories\n .map((n) => Object.keys(dictionary[n].properties)?.length ?? {})\n .reduce((acc: any, curr: any) => acc + curr);\n};\n\n/**\n * Converts snake_case string to label format.\n *\n * @param {string} snakeCase - The snake_case string to convert.\n * @returns {string} - The resulting label format string.\n */\nexport const snakeCaseToLabel = (snakeCase?: string): string => {\n if (typeof snakeCase !== 'string' || !snakeCase) {\n return 'undefined';\n }\n const words = snakeCase.split('_').filter((word) => word.length > 0);\n return words\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n};\n\nexport const snakeSplit = (snake: string) => {\n return snake\n .split('_')\n .map((name) => capitalize(name))\n .join(' ');\n};\n\nexport const SearchPathToPropertyIdString = (item: MatchingSearchResult) =>\n `${item.node}-${item.category}-${item.property}`;\n\n/**\n * Function to convert PropertyId string to SearchPath\n *\n * @param {string} id - The PropertyId string in the format \"node-category-property\"\n * @returns {MatchingSearchResult} - The corresponding SearchPath object\n *\n * @typedef {object} MatchingSearchResult\n * @property {string} node - The node value extracted from the PropertyId string\n * @property {string} category - The category value extracted from the PropertyId string\n * @property {string} property - The property value extracted from the PropertyId string\n */\nexport const PropertyIdStringToSearchPath = (\n id: string,\n): MatchingSearchResult => {\n const [node, category, property] = id.split('-');\n return { node, category, property };\n};\n\n/**\n * Concatenate the node and category properties of a MatchingSearchResult object.\n *\n * @param {MatchingSearchResult} item - The item containing the node and category properties.\n * @returns {string} - The concatenated string of the node and category.\n */\nexport const toNodeCategory = (item: MatchingSearchResult): string =>\n `${item.node}-${item.category}`;\n\n/**\n * Filters out system properties from the given DataDictionary node.\n *\n * @param {DataDictionary} node - The DataDictionary node to filter properties from.\n * @returns {Object} - The filtered properties object.\n */\nexport const excludeSystemProperties = (\n node: DictionaryEntry,\n): Record<string, DictionaryProperty> => {\n const properties =\n node.properties &&\n Object.keys(node.properties)\n .filter((key) =>\n node.systemProperties ? !node.systemProperties.includes(key) : true,\n )\n .reduce((acc, key) => {\n if (!node.properties) return acc;\n acc[key] = node.properties[key];\n return acc;\n }, {} as Record<string, DictionaryProperty>);\n return properties ?? {};\n};\n\n/**\n * Returns a modified dictionary by excluding system properties from each node's properties.\n *\n * @param {Object} dictionary - The original data dictionary.\n * @returns {DictionaryEntry} - The modified data dictionary with system properties excluded.\n */\nexport const getDictionaryWithExcludeSystemProperties = (\n dictionary: DataDictionary,\n): Record<string, DictionaryEntry> => {\n const ret = Object.keys(dictionary)\n .map((nodeID) => {\n const node = dictionary[nodeID];\n if (!node.properties) return node;\n return {\n ...node,\n properties: excludeSystemProperties(node),\n };\n })\n .reduce((acc, node) => {\n if (!node?.id) return acc;\n acc[node.id] = node;\n return acc;\n }, {} as Record<string, DictionaryEntry>);\n return ret;\n};\n\nexport const removeUnusedFieldsFromDictionaryObject = (\n obj: Record<string, any>,\n) => {\n return Object.keys(obj).reduce((acc, key) => {\n if (categoryFilter(key, obj)) {\n acc[key] = obj[key];\n }\n return acc;\n }, {} as DataDictionary);\n};\n","import React from 'react';\nimport { ViewType } from './types';\n\nconst SelectedStyle = (selected: boolean): string => {\n return `${\n selected\n ? 'bg-primary text-primary-contrast'\n : 'bg-base-max text-base-contrast-max'\n } text-md py-2 px-10 first:rounded-tl-md first:rounded-bl-md last:rounded-tr-md last:rounded-br-md border-2 border-primary`;\n};\n\ninterface ViewSelectorProps {\n view: ViewType;\n setView: (_: ViewType) => void;\n}\nconst ViewSelector = ({ view, setView }: ViewSelectorProps) => {\n return (\n <div className=\"flex justify-center border-b-2 border-0 border-base-light py-10\">\n <button\n className={SelectedStyle(view === 'table')}\n onClick={() => setView('table')}\n >\n Table View\n </button>\n <button\n className={SelectedStyle(view === 'graph')}\n onClick={() => setView('graph')}\n >\n Graph View\n </button>\n </div>\n );\n};\n\nexport default ViewSelector;\n","import { UnstyledButton, Text, Highlight } from '@mantine/core';\nimport { MatchingSearchResult } from './types';\nimport { snakeSplit } from './utils';\n\ninterface ResultListProps {\n matches?: MatchingSearchResult[];\n term: string;\n expanded: boolean;\n selectItem: (_: MatchingSearchResult) => void;\n}\nconst ResultList = ({\n matches,\n term,\n expanded,\n selectItem,\n}: ResultListProps) => {\n return (\n <div>\n {matches?.length && (\n <div\n className={`flex flex-col border border-solid border-base-light rounded-t-sm ${\n matches.length < 4 || (!expanded && matches.length > 4)\n ? 'rounded-b-sm'\n : 'border-b-0'\n }`}\n >\n <div className=\"p-2 border-b-2 border-base-light text-md font-bold bg-primary-max text-primary-contrast-max rounded-t-sm\">\n {term}\n </div>\n {matches.map(\n (\n { node, category, property }: MatchingSearchResult,\n key: number,\n ) => {\n return (\n <div key={key} className=\"flex w-full p-0.5 pl-2 justify-start\">\n <UnstyledButton\n className=\"w-full py-1.5\"\n onClick={() => {\n selectItem({\n node,\n category,\n property,\n });\n }}\n >\n <Text size=\"sm\" truncate=\"end\" className=\"w-full\">\n <Highlight\n component=\"div\"\n highlight={term}\n truncate=\"end\"\n className=\"w-full hover:bg-accent-lighter hover:text-accent-contrast-lighter p-1\"\n >\n {`${snakeSplit(node)} > ${snakeSplit(\n category,\n )} > ${property}`}\n </Highlight>\n </Text>\n </UnstyledButton>\n </div>\n );\n },\n )}\n </div>\n )}\n </div>\n );\n};\n\nexport default ResultList;\n","import {\n MdKeyboardArrowDown as DownArrowIcon,\n MdKeyboardArrowUp as UpArrowIcon,\n} from 'react-icons/md';\nimport ResultList from './ResultList';\nimport { useState } from 'react';\nimport { MatchingSearchResult } from './types';\n\nconst MAX_UNEXPANDED_ITEMS = 4;\n\ninterface ResultCardProps {\n term: string;\n matches?: MatchingSearchResult[];\n selectItem: (_: MatchingSearchResult) => void;\n}\n\nconst ResultCard = ({ term, matches, selectItem }: ResultCardProps) => {\n const [expanded, setExpanded] = useState(false);\n return (\n <div>\n {expanded ? (\n <ResultList\n key={term}\n matches={matches}\n term={term}\n expanded={expanded}\n selectItem={selectItem}\n />\n ) : (\n <ResultList\n key={term}\n matches={matches?.slice(0, MAX_UNEXPANDED_ITEMS)}\n term={term}\n expanded={expanded}\n selectItem={selectItem}\n />\n )}\n {matches && matches?.length > MAX_UNEXPANDED_ITEMS ? (\n <div className=\"flex w-full items-center border-2 border-solid border-base-light border-t-0 rounded-b-md\">\n {expanded ? (\n <button\n className=\"border-none py-1\"\n onClick={() => setExpanded(false)}\n >\n <div className=\"flex font-bold text-sm\">\n <UpArrowIcon size={20} />\n Show Less\n </div>\n </button>\n ) : (\n <button\n className=\"border-none py-1\"\n onClick={() => setExpanded(true)}\n >\n <div className=\"flex font-bold text-sm\">\n <DownArrowIcon size={20} />\n {matches.length - MAX_UNEXPANDED_ITEMS} More\n </div>\n </button>\n )}\n </div>\n ) : (\n <></>\n )}\n </div>\n );\n};\n\nexport default ResultCard;\n","export const MAX_SEARCH_HISTORY = 10;\nexport const KEY_FOR_SEARCH_HISTORY = 'dictionary-search';\nexport const ACCORDION_TRANSITION_DURATION = 0;\n","import React, { createContext, useMemo, useState, ReactNode } from 'react';\nimport {\n DictionaryProps,\n DictionaryEntry,\n DictionarySearchDocument,\n DataDictionary,\n} from './types';\nimport { JSONObject } from '@gen3/core';\nimport {\n categoryFilter,\n categoryReduce,\n getDictionaryWithExcludeSystemProperties,\n} from './utils';\nimport { KEY_FOR_SEARCH_HISTORY, MAX_SEARCH_HISTORY } from './constants';\n\ninterface DictionaryProviderValue extends DictionaryProps {\n setPropertyDetails: React.Dispatch<React.SetStateAction<JSONObject>>;\n propertyDetails: JSONObject;\n categories: any;\n documents: Array<DictionarySearchDocument>;\n visibleCategories: string[];\n dictionary: DataDictionary;\n}\n\nconst DictionaryContext = createContext<DictionaryProviderValue>({\n config: {\n showGraph: false,\n showDownloads: false,\n historyStorageId: KEY_FOR_SEARCH_HISTORY,\n maxHistoryItems: MAX_SEARCH_HISTORY,\n },\n dictionary: {},\n setPropertyDetails: () => null,\n propertyDetails: {} as JSONObject,\n categories: [],\n documents: [],\n visibleCategories: [],\n});\n\nconst useDictionaryContext = () => {\n const context = React.useContext(DictionaryContext);\n if (context === undefined) {\n throw Error(\n 'Discovery must be used must be used inside of a DiscoveryContext',\n );\n }\n return context;\n};\n\ninterface DictionaryProviderProps extends DictionaryProps {\n children: ReactNode;\n dictionary: DataDictionary;\n}\n\nconst DictionaryProvider = ({\n children,\n config,\n dictionary,\n}: DictionaryProviderProps) => {\n const [propertyDetails, setPropertyDetails] = useState<JSONObject>({});\n\n const processedDictionary =\n getDictionaryWithExcludeSystemProperties(dictionary);\n\n const categories = useMemo(() => {\n const filtered = Object.keys(processedDictionary);\n const displayedCategories = categoryReduce(filtered, processedDictionary);\n return displayedCategories;\n }, []);\n\n const visibleCategories = useMemo(\n () =>\n Object.keys(processedDictionary).filter((id) =>\n categoryFilter(id, processedDictionary),\n ),\n [processedDictionary],\n );\n\n const documents = useMemo<Array<DictionarySearchDocument>>(() => {\n if (Object.keys(categories).length === 0)\n return [] as Array<DictionarySearchDocument>;\n\n if (Object.keys(categories).length) {\n return (\n Object.keys(categories)\n .map((c) => {\n return categories[c];\n })\n .flatMap((array) => {\n return array.map((d: any) => {\n return Object.keys(d?.properties).map((key) => {\n const { description, type, term, anyOf } = d['properties'][key];\n return {\n rootCategory: d.category,\n category: d.id,\n id: `${d.category}-${d.id}-${key}`,\n property: key,\n description:\n description ??\n term?.description ??\n anyOf?.[1]?.properties?.id?.term?.description ??\n '',\n type: type ?? anyOf?.[0]?.type ?? '', // TODO add additional types\n };\n });\n });\n }) || []\n ).reduce((acc: DictionaryEntry[], curr: DictionaryEntry[]) => {\n return [...acc, ...curr];\n }, [] as Array<DictionarySearchDocument>);\n }\n }, []);\n\n return (\n <DictionaryContext.Provider\n value={{\n dictionary: processedDictionary,\n config,\n setPropertyDetails,\n propertyDetails,\n categories,\n documents,\n visibleCategories,\n }}\n >\n {children}\n </DictionaryContext.Provider>\n );\n};\nexport { useDictionaryContext, DictionaryProvider as default };\n","import React, { ReactElement, useEffect, useState } from 'react';\nimport {\n Autocomplete,\n AutocompleteProps,\n Button,\n Stack,\n Group,\n} from '@mantine/core';\nimport { MdClose as CloseIcon, MdSearch as SearchIcon } from 'react-icons/md';\nimport ResultCard from './ResultCard';\nimport { useMiniSearch } from 'react-minisearch';\nimport MiniSearch from 'minisearch';\nimport { DictionarySearchDocument, MatchingSearchResult } from './types';\nimport { useDeepCompareEffect, useDeepCompareMemo } from 'use-deep-compare';\nimport { useDictionaryContext } from './DictionaryProvider';\nimport { useLocalStorage } from '@mantine/hooks';\nimport { KEY_FOR_SEARCH_HISTORY, MAX_SEARCH_HISTORY } from './constants';\n\nconst getSearchResults = (\n searchResults: Array<DictionarySearchDocument>,\n): Array<MatchingSearchResult> => {\n const matches: Array<MatchingSearchResult> = [];\n searchResults.forEach((r) => {\n matches.push({\n node: r.rootCategory,\n category: r.category,\n property: r.property,\n });\n });\n return matches.sort((a, b) => {\n if (a.node < b.node) return -1;\n if (a.node > b.node) return 1;\n if (a.category < b.category) return -1;\n if (a.category > b.category) return 1;\n if (a.property < b.property) return -1;\n if (a.property > b.property) return 1;\n return 0;\n });\n};\n\ninterface SearchMatches {\n node: string;\n category: string;\n property: string;\n}\n\ninterface DictionarySearchHistoryObj {\n [key: string]: {\n matches?: SearchMatches[];\n term: string;\n datetime: string;\n };\n}\n\ninterface TableSearchProps {\n selectItem: (_: MatchingSearchResult) => void;\n}\n\nconst TableSearch = ({ selectItem }: TableSearchProps): ReactElement => {\n const { documents, config } = useDictionaryContext();\n const [dictionarySearchResults, setDictionarySearchResults] = useState(\n {} as any,\n );\n const [searchTerm, setSearchTerm] = useState('');\n const [dictionaryTableRows, setDictionaryTableRows] = useState<\n [] | ReactElement[]\n >([]);\n\n const [\n dictionarySearchHistory,\n setDictionarySearchHistory,\n removeDictionarySearchHistory,\n ] = useLocalStorage<DictionarySearchHistoryObj>({\n key: config?.historyStorageId ?? KEY_FOR_SEARCH_HISTORY,\n defaultValue: {},\n });\n\n const {\n search,\n autoSuggest,\n suggestions,\n searchResults,\n clearSearch,\n clearSuggestions,\n } = useMiniSearch(documents, {\n fields: ['description', 'type', 'property'],\n idField: 'id',\n storeFields: ['id'],\n searchOptions: {\n processTerm: MiniSearch.getDefault('processTerm'),\n },\n });\n\n useEffect(() => {\n if (searchTerm.length > 1) {\n search(searchTerm, { combineWith: 'AND' });\n autoSuggest(searchTerm);\n }\n }, [searchTerm, autoSuggest, search]);\n\n useEffect(() => {\n if (searchTerm === '') {\n setDictionarySearchResults({});\n clearSearch();\n clearSuggestions();\n }\n }, [clearSearch, clearSuggestions, searchTerm]);\n\n useEffect(() => {\n if (\n dictionarySearchResults?.term?.length &&\n !Object.keys(dictionarySearchHistory).includes(\n dictionarySearchResults?.term,\n ) &&\n dictionarySearchResults?.matches?.length\n ) {\n let searchHistoryArray = Object.entries(dictionarySearchHistory);\n searchHistoryArray.push([\n dictionarySearchResults?.term,\n {\n term: dictionarySearchResults.term,\n matches: dictionarySearchResults.matches,\n datetime: new Date().toLocaleString(),\n },\n ]);\n searchHistoryArray.sort(\n (a, b) => Date.parse(b[1].datetime) - Date.parse(a[1].datetime),\n );\n // Trim the array to the last 10 items\n searchHistoryArray = searchHistoryArray.slice(\n 0,\n config?.maxHistoryItems ?? MAX_SEARCH_HISTORY,\n );\n // Convert the array back to an object\n const newSearchHistory = Object.fromEntries(searchHistoryArray);\n setDictionarySearchHistory(newSearchHistory);\n }\n }, [\n config?.maxHistoryItems,\n dictionarySearchHistory,\n dictionarySearchResults,\n setDictionarySearchHistory,\n ]);\n\n useDeepCompareEffect(() => {\n if (dictionarySearchHistory) {\n setDictionaryTableRows(\n Object.keys(dictionarySearchHistory).map((d) => {\n return (\n <div key={`dictionary-table-row-${d}`} className=\"my-2\">\n <ResultCard\n term={d}\n matches={dictionarySearchHistory[d]?.matches}\n selectItem={selectItem}\n />\n </div>\n );\n }),\n );\n }\n }, [dictionarySearchHistory]);\n\n const suggestedData = useDeepCompareMemo(\n () =>\n (suggestions || [])?.map(({ suggestion }) => {\n return { value: suggestion };\n }),\n [suggestions],\n );\n\n const renderSuggestedItem: AutocompleteProps['renderOption'] = ({\n option,\n }) => {\n return (\n <div\n className={`h-inherit w-inherit hover:cursor-pointer hover:bg-gray-100 border-0 p-1 ${\n (suggestions || [])\n .map(({ suggestion }) => suggestion)\n .indexOf(option.value) !== 0 && 'border-t-0'\n }`}\n >\n <button\n className=\"border-0\"\n onClick={() => setSearchTerm(option.value)}\n >\n {option.value}\n </button>\n </div>\n );\n };\n\n return (\n <>\n <Stack justify=\"flex-start\" className=\"mt-2\">\n <Autocomplete\n // TODO: replace for v7\n data={suggestedData}\n renderOption={renderSuggestedItem}\n leftSection={<SearchIcon size={24} className=\"text-accent\" />}\n placeholder={'Search in Dictionary'}\n data-testid=\"dictionary-textbox-search-bar\"\n aria-label=\"Dictionary Search Input\"\n value={searchTerm}\n onChange={(value) => {\n setSearchTerm(value as string);\n }}\n onOptionSubmit={(item) => {\n setDictionarySearchResults({\n term: item,\n matches: getSearchResults(searchResults ?? []),\n });\n }}\n classNames={{\n input: 'focus:border-2 focus:border-primary text-sm p-5',\n }}\n size=\"sm\"\n rightSection={\n searchTerm.length > 0 && (\n <CloseIcon\n onClick={() => {\n setSearchTerm('');\n clearSearch();\n clearSuggestions();\n }}\n className=\"cursor-pointer\"\n />\n )\n }\n />\n </Stack>\n\n <Stack justify=\"flex-start\" className=\"mt-2\">\n <span className=\"font-semibold text-sm \">Search Results</span>\n {dictionarySearchResults?.matches?.length > 0 ? (\n <ResultCard\n term={dictionarySearchResults?.term}\n matches={dictionarySearchResults?.matches}\n selectItem={selectItem}\n />\n ) : (\n <span className=\"text-xs items-center\">\n Try a different search query\n </span>\n )}\n </Stack>\n <Stack justify=\"flex-start\" gap=\"xs\" className=\"mt-1\">\n <Group justify=\"space-between\" align=\"center\">\n <span className=\"flex flex-col font-semibold text-sm\">\n Search History\n </span>\n <Button\n variant=\"outline\"\n color=\"accent.4\"\n radius=\"md\"\n onClick={() => removeDictionarySearchHistory()}\n >\n Clear All\n </Button>\n </Group>\n\n {dictionaryTableRows?.length ? (\n <React.Fragment>{dictionaryTableRows}</React.Fragment>\n ) : (\n <React.Fragment></React.Fragment>\n )}\n </Stack>\n </>\n );\n};\n\nexport default TableSearch;\n","import React, { forwardRef, ReactElement } from 'react';\nimport { snakeCaseToLabel } from './utils';\nimport { Avatar } from '@mantine/core';\nimport { Icon } from '@iconify/react';\n\nconst getIcon = (category: string) => {\n const iconName = `gen3:dictionary-icon-${category.replace('_', '-')}`;\n return (\n <Icon color=\"primary-contrast.4\" icon={iconName} height={24} width={24} />\n );\n};\n\ninterface CategoryHeaderProps {\n category: string;\n}\nconst CategoryHeader = ({ category }: CategoryHeaderProps) => {\n return (\n <h3\n className=\"flex text-secondary-contrast-darker font-bold font-size-md bg-secondary-darker mb-0 justify-between h-16 uppercase\"\n id={category}\n >\n <div className=\"flex items-center ml-4\">\n <Avatar\n variant=\"light\"\n size=\"sm\"\n color=\"accent.4\"\n radius=\"xl\"\n style={{ '--avatar-bg': 'var(--mantine-color-accent-0' }}\n >\n {getIcon(category)}\n </Avatar>\n <div className=\"ml-4\">{snakeCaseToLabel(category)}</div>\n </div>\n </h3>\n );\n};\n\nCategoryHeader.displayName = 'CategoryHeader';\n\nexport default CategoryHeader;\n","import { Group, Button, UnstyledButton, Text } from '@mantine/core';\n\ninterface CategoryLabelProps {\n label: string;\n description: string;\n}\n\nconst CategoryAccordionLabel = ({ label, description }: CategoryLabelProps) => {\n return (\n <Group\n wrap='nowrap'\n className=\"odd:text-base-contrast-lightest even:bg-base-contrast-max\"\n >\n <Text className=\"min-w-40 max-w-40\" fw={600}>\n {label}\n </Text>\n <Text size=\"sm\" className=\"opacity-95\">\n {description}\n </Text>\n </Group>\n );\n};\n\nexport default CategoryAccordionLabel;\n","import React, { useMemo, useState } from 'react';\nimport { capitalize } from 'lodash';\nimport {\n MantineReactTable,\n MRT_Cell,\n MRT_Row,\n MRT_ColumnDef,\n useMantineReactTable,\n MRT_RowSelectionState,\n} from 'mantine-react-table';\nimport { DictionaryProperty } from './types';\nimport { useDeepCompareEffect } from 'use-deep-compare';\nimport { List } from '@mantine/core';\nimport { FaCircle as DiscIcon } from 'react-icons/fa';\n\ninterface PropertyTableRowData {\n property: string;\n type: string[];\n required: string;\n description: string;\n property_id: string;\n}\n\ninterface PropertiesTableProps {\n properties: Record<string, DictionaryProperty>;\n required?: string[];\n category: string;\n subCategory: string;\n selectedProperty: string;\n appendRef: (id: string, el: HTMLSpanElement | null) => void;\n}\n\nconst PropertiesTable = ({\n properties,\n required,\n category,\n subCategory,\n selectedProperty,\n appendRef,\n}: PropertiesTableProps) => {\n const [rowSelection, setRowSelection] = useState<MRT_RowSelectionState>({});\n\n useDeepCompareEffect(() => {\n if (selectedProperty) {\n setRowSelection({ [selectedProperty]: true });\n } else setRowSelection({});\n }, [selectedProperty]);\n\n const columns = useMemo<Array<MRT_ColumnDef<PropertyTableRowData>>>(() => {\n return [\n /** TODO: add line to match design\n {\n id: 'decorator',\n header: '',\n Cell: ({ cell, row }: { cell: MRT_Cell; row: MRT_Row }) => {\n return <LineCell />;\n },\n },\n */\n {\n accessorKey: 'property',\n header: 'Property',\n size: 75,\n Cell: ({\n cell,\n row,\n }: {\n cell: MRT_Cell<PropertyTableRowData>;\n row: MRT_Row<PropertyTableRowData>;\n }) => {\n const itemId = `${category}-${subCategory}-${row.original.property_id}`;\n return (\n <span ref={(el) => appendRef(itemId, el)} id={itemId}>\n {cell.getValue<string>()}\n </span>\n );\n },\n },\n {\n accessorKey: 'type',\n header: 'Type',\n size: 90,\n Cell: ({\n cell,\n row,\n }: {\n cell: MRT_Cell<PropertyTableRowData>;\n row: MRT_Row<PropertyTableRowData>;\n }) => {\n return (\n <List\n size=\"sm\"\n spacing=\"xs\"\n center\n classNames={{\n itemWrapper: 'flex items-center',\n }}\n icon={<DiscIcon size=\"0.5rem\" />}\n id={`${category}-${subCategory}-${row.original.property_id}-list`}\n >\n {cell.getValue<string[]>().map((type, index) => (\n <List.Item key={`${row.original.property_id}-${type}-${index}`}>\n {type}\n </List.Item>\n ))}\n </List>\n );\n },\n },\n {\n accessorKey: 'required',\n header: 'Required',\n size: 60,\n },\n {\n accessorKey: 'description',\n header: 'Description',\n },\n ];\n }, []);\n\n const tableData = useMemo(() => {\n const keys = properties ? Object.keys(properties ?? {}) : [];\n return keys.length\n ? keys.map((k) => {\n if (!properties || !Object.keys(properties).includes(k))\n return {\n property: '',\n type: [],\n required: 'No',\n description: '',\n property_id: k,\n } as PropertyTableRowData;\n const row = properties[k];\n return {\n property_id: k,\n property: k\n .split('_')\n .map((name) => capitalize(name))\n .join(' '),\n type: Object.keys(row).includes('anyOf')\n ? row.anyOf?.map(({ type }) => type)\n : Object.keys(row).includes('oneOf')\n ? row.oneOf?.map(({ type }) => type)\n : Object.keys(row).includes('enum')\n ? row.enum\n : [row.type],\n required: required?.includes(k) ? 'Required' : 'No',\n description:\n row?.description ?? row?.term?.description ?? 'No Description',\n } as PropertyTableRowData;\n })\n : ([] as PropertyTableRowData[]);\n }, []);\n const table = useMantineReactTable<PropertyTableRowData>({\n columns,\n data: tableData,\n enablePagination: false,\n enableBottomToolbar: false,\n enableTopToolbar: false,\n enableRowSelection: false,\n getRowId: (originalRow: PropertyTableRowData) => originalRow.property_id,\n mantineTableBodyRowProps: ({ row }) => {\n // highlights the left border of the selected row in the table\n if (Object.keys(rowSelection).includes(row.original.property_id))\n return {\n style: {\n borderLeftWidth: '8px',\n borderLeftColor: 'var(--mantine-color-accent-5)',\n },\n };\n else return {};\n },\n state: { rowSelection },\n mantineTableHeadRowProps: {\n style: {\n '--mrt-base-background-color': 'var(--mantine-color-accent-cool-3)',\n },\n },\n mantineTableHeadCellProps: {\n style: {\n color: 'var(--mantine-color-accent-contrast-cool-3)',\n },\n },\n // mantineTableProps: {\n // style: {\n // borderSpacing: '0rem 0rem',\n // borderCollapse: 'separate',\n // tableLayout: 'fixed',\n // },\n // },\n });\n\n return <MantineReactTable table={table} />;\n};\n\nexport default React.memo(PropertiesTable);\n","import React, { useEffect, useRef, useState, MutableRefObject } from 'react';\nimport CategoryHeader from './CategoryHeader';\nimport { Accordion, Button, Group } from '@mantine/core';\nimport { useScrollIntoView } from '@mantine/hooks';\nimport CategoryAccordionLabel from './CategoryAccordionLabel';\nimport PropertiesTable from './PropertiesTable';\nimport { useDictionaryContext } from './DictionaryProvider';\nimport { DictionaryCategory } from './types';\nimport { useDeepCompareEffect } from 'use-deep-compare';\nimport { MdDownload as DownloadIcon } from 'react-icons/md';\nimport { ACCORDION_TRANSITION_DURATION } from './constants';\nimport { PropertyIdStringToSearchPath, toNodeCategory } from './utils';\n\ninterface CategoryPanel {\n category: string;\n selectedId: string;\n scrollToSelection: (ref: HTMLSpanElement) => void;\n}\n\nconst CategoryPanel = ({\n category,\n selectedId,\n scrollToSelection,\n}: CategoryPanel) => {\n const { dictionary, categories, config } = useDictionaryContext();\n const categoryInfo: Array<DictionaryCategory<string>> = categories[category];\n const [value, setValue] = useState<string | null>(selectedId);\n // const { scrollIntoView, targetRef, } =\n // useScrollIntoView<HTMLSpanElement>({\n // offset: 60,\n // });\n const selectedItems = PropertyIdStringToSearchPath(selectedId);\n const itemRefs = useRef<Record<string, HTMLSpanElement | null>>({});\n\n const appendRef = (id: string, el: HTMLSpanElement | null) => {\n itemRefs.current[id] = el;\n };\n\n const scrollToItem = (id: string) => {\n if (!itemRefs.current || itemRefs.current[id] == null) return;\n const elm = itemRefs.current[id];\n if (elm !== null) {\n scrollToSelection(elm);\n }\n };\n\n // set up a timeout to give the ref time to be rendered in it's final position withing the\n // page.\n useEffect(() => {\n if (\n value !== null &&\n value == toNodeCategory(selectedItems) &&\n selectedItems.property.length > 0\n ) {\n const timer = setTimeout(() => {\n scrollToItem(selectedId);\n }, 5); // Adjust the delay based on your accordion animation duration\n return () => clearTimeout(timer);\n }\n }, [scrollToItem, selectedId, selectedItems, value]);\n\n useDeepCompareEffect(() => {\n if (category == selectedItems.node)\n // set value only if this is the same root category\n setValue(`${selectedItems.node}-${selectedItems.category}`);\n else setValue(null);\n }, [selectedItems]);\n\n return (\n <div className=\"mt-2\" key={`dictionary-entry-${category}`}>\n <CategoryHeader category={category} />\n <Accordion\n chevronPosition=\"left\"\n value={value}\n onChange={setValue}\n variant=\"contained\"\n transitionDuration={ACCORDION_TRANSITION_DURATION}\n styles={{\n chevron: {\n transform: 'rotate(-90deg)',\n '&[dataRotate]': {\n transform: 'rotate(0deg)',\n },\n },\n }}\n >\n {categoryInfo.map(({ title, description, id }) => {\n return (\n <Accordion.Item\n value={`${category}-${id}`}\n key={`${category}-${id}`}\n className=\"odd:bg-base-lightest even:bg-base-max\"\n >\n <Group\n wrap=\"nowrap\"\n className={\n `${category}-${id}` === value\n ? 'border-accent border-l-4'\n : ''\n }\n >\n <Accordion.Control>\n <CategoryAccordionLabel\n label={title}\n description={description}\n />\n </Accordion.Control>\n {config?.showDownloads ? (\n <Group wrap=\"nowrap\" className=\"ml-auto\">\n <Button leftSection={<DownloadIcon />}>TSV</Button>\n <Button leftSection={<DownloadIcon />}>JSON</Button>\n </Group>\n ) : null}\n </Group>\n <Accordion.Panel>\n <div className=\"ml-2\">\n <div className=\"flex flex-col mt-2\">\n <PropertiesTable\n properties={dictionary[id].properties ?? {}}\n required={dictionary[id].required}\n category={category}\n subCategory={id}\n selectedProperty={selectedItems.property}\n appendRef={appendRef}\n />\n </div>\n </div>\n </Accordion.Panel>\n </Accordion.Item>\n );\n })}\n </Accordion>\n </div>\n );\n};\n\nexport default React.memo(CategoryPanel, (prevProps, nextProps) => {\n const selectedItems = PropertyIdStringToSearchPath(nextProps.selectedId);\n // only rerender when selectedItem is for this panel's\n // category and it has changed.\n return (\n prevProps.category === nextProps.category &&\n selectedItems.node === prevProps.category &&\n prevProps.selectedId === nextProps.selectedId &&\n prevProps.scrollToSelection === nextProps.scrollToSelection\n );\n});\n","import React, { useCallback, useState } from 'react';\nimport { MatchingSearchResult, ViewType } from './types';\nimport { getPropertyCount, SearchPathToPropertyIdString } from './utils';\nimport ViewSelector from './ViewSelector';\nimport TableSearch from './TableSearch';\nimport { useDictionaryContext } from './DictionaryProvider';\nimport CategoryPanel from './CategoryPanel';\nimport { useScrollIntoView } from '@mantine/hooks';\n\nconst Dictionary = () => {\n const [selectedId, setSelectedId] = useState('');\n const [view, setView] = useState<ViewType>('table');\n const { dictionary, categories, visibleCategories, config } =\n useDictionaryContext();\n\n const { scrollIntoView, targetRef, scrollableRef } =\n useScrollIntoView<HTMLSpanElement>({\n offset: 60,\n });\n\n const scrollTo = useCallback((item: MatchingSearchResult) => {\n setSelectedId(() => SearchPathToPropertyIdString(item));\n }, []);\n\n const scrollToSelection = useCallback(\n (itemRef: HTMLSpanElement) => {\n targetRef.current = itemRef;\n scrollIntoView();\n },\n [scrollIntoView, targetRef],\n );\n\n return (\n <>\n <div className=\"w-1/4 overflow-auto p-4\">\n <div className=\"h-full\">\n {config?.showGraph ? (\n <ViewSelector view={view} setView={setView} />\n ) : null}\n <span>\n The current commons dictionary has{' '}\n <span className=\"font-bold\">{visibleCategories.length}</span> nodes\n and{' '}\n <span className=\"font-bold\">\n {getPropertyCount(visibleCategories, dictionary)}\n </span>{' '}\n properties\n </span>\n <TableSearch selectItem={scrollTo} />\n </div>\n </div>\n <div\n className=\"w-3/4 overflow-auto p-4 bg-base-lighter\"\n ref={scrollableRef}\n >\n <div className=\"h-full\">\n {Object.keys(categories).length &&\n Object.keys(categories).map((category) => (\n <CategoryPanel\n key={category}\n category={category}\n selectedId={selectedId}\n scrollToSelection={scrollToSelection}\n />\n ))}\n </div>\n </div>\n </>\n );\n};\n\nexport default React.memo(Dictionary);\n","import React, { useEffect, useState } from 'react';\nimport { useGetDictionaryQuery } from '@gen3/core';\nimport { Loader, Text } from '@mantine/core';\nimport Dictionary from './Dictionary';\nimport { DictionaryProps, DataDictionary } from './types';\nimport DictionaryProvider from './DictionaryProvider';\nimport { removeUnusedFieldsFromDictionaryObject } from './utils';\nimport dataDictionary from '../../pages/DataDictionary';\n\nconst DictionaryWithContext = ({ config }: DictionaryProps) => {\n const { data, isFetching, isUninitialized, isLoading, isError, isSuccess } =\n useGetDictionaryQuery();\n const [dictionary, setDictionary] = useState<DataDictionary>({});\n\n useEffect(() => {\n if (isSuccess) {\n const dictionary = removeUnusedFieldsFromDictionaryObject(\n data as unknown as Record<string, any>,\n );\n setDictionary(dictionary);\n }\n }, [data, isSuccess]);\n\n if (\n isLoading ||\n isFetching ||\n isUninitialized ||\n Object.keys(dictionary).length === 0\n ) {\n return (\n <div className=\"flex w-full py-24 relative justify-center\">\n <Loader variant=\"dots\" />{' '}\n </div>\n );\n }\n\n if (isError) {\n return (\n <div className=\"flex w-full py-24 h-100 relative justify-center\">\n <Text size={'xl'}>Error loading discovery data</Text>\n </div>\n );\n }\n\n return (\n <DictionaryProvider config={config} dictionary={dictionary}>\n <Dictionary />\n </DictionaryProvider>\n );\n};\n\nexport default DictionaryWithContext;\n","import { DictionaryWithContext } from '../../features/Dictionary';\nimport { NavPageLayout } from '../../features/Navigation';\nimport { DictionaryPageProps } from './types';\n\nconst DictionaryPage = ({\n headerProps,\n footerProps,\n config,\n}: DictionaryPageProps): JSX.Element => {\n return (\n <NavPageLayout\n {...{ headerProps, footerProps, mainProps: { fixed: true } }}\n headerData={{\n title: 'Gen3 DataDictionary Page',\n content: 'Data Dictionary',\n key: 'gen3-data-dictionary-page',\n }}\n >\n <DictionaryWithContext config={config} />\n </NavPageLayout>\n );\n};\n\nexport default DictionaryPage;\n","import { GetServerSideProps } from 'next';\nimport { getNavPageLayoutPropsFromConfig } from '../../lib/common/staticProps';\nimport { NavPageLayoutProps } from '../../features/Navigation';\nimport { CohortBuilderConfiguration } from '../../features/CohortBuilder';\nimport ContentSource from '../../lib/content';\nimport { GEN3_COMMONS_NAME } from '@gen3/core';\nimport {\n KEY_FOR_SEARCH_HISTORY,\n MAX_SEARCH_HISTORY,\n} from '../../features/Dictionary/constants';\n\nexport const DictionaryPageGetServerSideProps: GetServerSideProps<\n NavPageLayoutProps\n> = async () => {\n try {\n const cohortBuilderProps: CohortBuilderConfiguration =\n await ContentSource.get(`config/${GEN3_COMMONS_NAME}/dictionary.json`);\n return {\n props: {\n ...(await getNavPageLayoutPropsFromConfig()),\n config: cohortBuilderProps,\n },\n };\n } catch (err) {\n console.error(err);\n return {\n props: {\n ...(await getNavPageLayoutPropsFromConfig()),\n config: {\n showGraph: false,\n showDownloads: false,\n historyStorageId: KEY_FOR_SEARCH_HISTORY,\n maxHistoryItems: MAX_SEARCH_HISTORY,\n },\n },\n };\n }\n};\n","import {\n createContext,\n useContext,\n Dispatch,\n ReactElement,\n useReducer,\n} from 'react';\nimport {\n Authz,\n Group,\n Role,\n Policy,\n Permission,\n Resource,\n User,\n} from './types';\n\ntype AuthzContextAction = {\n type: 'addUser' | 'removeUser';\n payload: {\n user?: User;\n role?: Role;\n policy?: Policy;\n group?: Group;\n permission?: Permission;\n resource?: Resource;\n value?: string;\n };\n};\n\nexport const authzReducer = (state: Authz, action: AuthzContextAction) => {\n switch (action.type) {\n case 'addUser':\n return {\n ...state,\n authz: { ...state, users: [...state.users, action.payload.user] },\n };\n case 'removeUser':\n return {\n ...state,\n authz: {\n ...state,\n users: state.users.filter(\n (user) => user.id !== action.payload?.user?.id,\n ),\n },\n };\n default:\n return state;\n }\n};\n\nexport const AuthzContext = createContext<{\n state: Authz;\n dispatch: Dispatch<AuthzContextAction>;\n}>({\n state: {\n users: [],\n groups: [],\n roles: [],\n policies: [],\n resources: [],\n },\n dispatch: () => null,\n});\n\ninterface AuthzProviderProps {\n children: ReactElement;\n authz: Authz;\n}\n\nexport const AuthzProvider = ({\n children,\n authz = {\n users: [],\n groups: [],\n roles: [],\n policies: [],\n resources: [],\n },\n}: AuthzProviderProps) => {\n const [state, dispatch] = useReducer(authzReducer, authz);\n return (\n <AuthzContext.Provider value={{ state, dispatch }}>\n {children}\n </AuthzContext.Provider>\n );\n};\n\nexport const useAuthzContext = () => useContext(AuthzContext);\n","import React, { useContext, useMemo, useState } from 'react';\nimport {\n MantineReactTable,\n type MRT_ColumnDef,\n type MRT_RowSelectionState,\n useMantineReactTable,\n} from 'mantine-react-table';\nimport { User } from '../types';\nimport { AuthzContext } from '../Provider';\nimport { Menu } from '@mantine/core';\n\ninterface UserTableProps {\n setCurrentUser: (user: User) => void;\n setPanelToUserDetail: () => void;\n}\n\nconst UserTable = ({\n setCurrentUser,\n setPanelToUserDetail,\n}: UserTableProps) => {\n const context = useContext(AuthzContext);\n const [rowSelection, setRowSelection] = useState<MRT_RowSelectionState>({});\n\n const users = useMemo(\n () =>\n Object.entries(context.state.users).map(([key, user]) => {\n return { id: key, tags: user.tags };\n }),\n [context.state.users],\n );\n\n const columns = useMemo<MRT_ColumnDef<User>[]>(\n () => [\n {\n id: 'id',\n header: 'User Id',\n accessorFn: (user: User) => user.id,\n },\n {\n id: 'name',\n header: 'Name',\n accessorFn: (user: User) => user.tags?.name,\n },\n {\n id: 'email',\n header: 'Email',\n accessorFn: (user: User) => user.tags?.email,\n },\n ],\n [],\n );\n\n const table = useMantineReactTable<User>({\n columns,\n data: users, //must be memoized or stable (useState, useMemo, defined outside of this component, etc.)\n enableRowActions: true,\n positionActionsColumn: 'last',\n renderRowActionMenuItems: ({ row }) => (\n <React.Fragment>\n <Menu.Item\n onClick={() => {\n setCurrentUser(row.original);\n setPanelToUserDetail();\n }}\n >\n Details\n </Menu.Item>\n <Menu.Item onClick={() => console.info('Delete')}>Delete</Menu.Item>\n </React.Fragment>\n ),\n enableRowSelection: true,\n onRowSelectionChange: setRowSelection,\n state: { rowSelection },\n initialState: { showColumnFilters: true, showGlobalFilter: true },\n paginationDisplayMode: 'pages',\n positionToolbarAlertBanner: 'bottom',\n mantinePaginationProps: {\n radius: 'md',\n size: 'lg',\n },\n mantineSearchTextInputProps: {\n placeholder: 'Search Users',\n },\n });\n\n return <MantineReactTable table={table} />;\n};\n\nexport default UserTable;\n","import { UseFormReturnType } from '@mantine/form';\nimport { TextInput, Switch } from '@mantine/core';\n\nexport interface NewUserFormValues {\n userId: string;\n name: string;\n email: string;\n}\n\nexport const UserId = ({ form }: { form: UseFormReturnType<NewUserFormValues> }) => {\n return <TextInput {...form.getInputProps('userId')} label=\"User Id\" withAsterisk />;\n};\nexport const NameInput = ({\n form\n}: {\n form: UseFormReturnType<NewUserFormValues>;\n}) => {\n return <TextInput {...form.getInputProps('name')} label=\"Full name\" />;\n};\nexport const EmailInput = ({\n form\n}: {\n form: UseFormReturnType<NewUserFormValues>;\n}) => {\n return <TextInput {...form.getInputProps('email')} label=\"Email\" />;\n};\n\nexport const IsAdminInput = ({\n form\n}: {\n form: UseFormReturnType<NewUserFormValues>;\n}) => {\n return <Switch labelPosition=\"left\" label=\"Is Administrator\" />;\n};\n","import { useAuthzContext } from '../Provider';\nimport { Button, Group, Stack } from '@mantine/core';\nimport { useForm } from '@mantine/form';\nimport { EmailInput, IsAdminInput, NameInput, NewUserFormValues, UserId } from './Inputs';\n\ninterface NewUserPanelProps {\n closePanel: () => void;\n}\n\nconst NewUserPanel = ({ closePanel }: NewUserPanelProps) => {\n const context = useAuthzContext();\n const form = useForm<NewUserFormValues>({\n initialValues: { userId: '', name: '', email: '' },\n });\n return (\n <Stack>\n <UserId form={form} />\n <NameInput form={form} />\n <EmailInput form={form} />\n <IsAdminInput form={form} />\n <Group>\n <Button\n aria-label=\"create new user\"\n onClick={() => {\n context.dispatch({\n type: 'addUser',\n payload: {\n user: {\n id: form.values.userId,\n tags: {\n name: form.values.name,\n email: form.values.email,\n },\n },\n },\n });\n closePanel();\n }}\n >\n Create User\n </Button>\n <Button\n aria-label=\"cancel create user\"\n onClick={() => {\n closePanel();\n }}\n >\n Cancel\n </Button>\n </Group>\n </Stack>\n );\n};\n\nexport default NewUserPanel;\n","import { Card, Grid, Group, Stack, Text, Switch } from '@mantine/core';\nimport { useForm, UseFormReturnType } from '@mantine/form';\nimport { User } from '../../types';\nimport { EmailInput, IsAdminInput, NameInput, NewUserFormValues, UserId } from '../Inputs';\n\ninterface UserDetailsProps {\n user: User;\n}\n\nconst UserDetails = ({ user }: UserDetailsProps) => {\n\n const form = useForm<NewUserFormValues>({\n initialValues: { userId: user.id, name: user.tags?.name ?? '', email: user.tags?.email ?? ''},\n });\n\n return (\n <Card shadow=\"sm\" padding=\"md\" radius=\"sm\">\n <Stack>\n <UserId form={form} />\n <NameInput form={form} />\n <EmailInput form={form} />\n <IsAdminInput form={form} />\n </Stack>\n </Card>\n );\n};\n\nexport default UserDetails;\n","\nimport { Button, Group, Stack, Tabs } from '@mantine/core';\nimport { User } from '../types';\nimport { UserDetails } from './Cards';\n\ninterface UserDetailsPanelProps {\n user: User;\n closePanel: () => void;\n}\n\nconst UserDetailsPanel = ({user, closePanel}: UserDetailsPanelProps) => {\n return (\n <Stack>\n <Tabs defaultValue=\"user\"\n classNames = {{\n root: 'w-full',\n panel: 'w-full'\n }}\n >\n <Tabs.List>\n <Tabs.Tab value=\"user\">User</Tabs.Tab>\n <Tabs.Tab value=\"group\">Groups</Tabs.Tab>\n <Tabs.Tab value=\"resource\">Resources</Tabs.Tab>\n <Tabs.Tab value=\"policy\">Policies</Tabs.Tab>\n <Tabs.Tab value=\"role\">Roles</Tabs.Tab>\n </Tabs.List>\n <Tabs.Panel value=\"user\" pl=\"xs\">\n <UserDetails user={user} />\n </Tabs.Panel>\n </Tabs>\n <Group>\n <Button onClick={() => closePanel()}>Close</Button></Group>\n </Stack>\n );\n};\n\nexport default UserDetailsPanel;\n","import { useState } from 'react';\nimport { useDeepCompareCallback } from 'use-deep-compare';\nimport UserTable from './UserTable';\nimport NewUserPanel from './NewUserPanel';\nimport UserDetailPanel from './UserDetailsPanel';\nimport { Button } from '@mantine/core';\nimport { User } from '../types';\n\nenum UserPanelMode {\n UserTable,\n NewUserPanel,\n UserDetailPanel,\n}\n\nconst NullUser: User = {\n id: '',\n tags: {\n name: '',\n email: '',\n },\n};\n\nconst UserPanel = () => {\n const [mode, setMode] = useState<UserPanelMode>(UserPanelMode.UserTable);\n const [ currentUser, setCurrentUser ] = useState<User>(NullUser);\n const panel = useDeepCompareCallback( () => {\n switch(mode) {\n case UserPanelMode.NewUserPanel:\n return <NewUserPanel closePanel={() => setMode(UserPanelMode.UserTable)} />;\n case UserPanelMode.UserDetailPanel:\n return <UserDetailPanel user={currentUser} closePanel={() => setMode(UserPanelMode.UserTable)} />;\n case UserPanelMode.UserTable:\n default:\n return <UserTable setCurrentUser={setCurrentUser} setPanelToUserDetail={()=>setMode(UserPanelMode.UserDetailPanel)}/>;\n }\n }, [mode, currentUser, setCurrentUser, setMode]);\n return (\n <div className=\"flex flex-col\">\n <div className=\"flex justify-end items-center mb-2\">\n <Button\n color=\"secondary\"\n aria-label=\"create new user\"\n onClick={() => setMode(UserPanelMode.NewUserPanel)}\n >\n Create New User\n </Button>\n <Button aria-label=\"delete user\" color=\"secondary\" >Delete User</Button>\n\n </div>\n { panel() }\n </div>\n );\n};\n\nexport default UserPanel;\n","import { UseFormReturnType, useForm } from '@mantine/form';\nimport { TextInput } from '@mantine/core';\nimport { Permission } from '../types';\n\n\nexport const PermissionId = ({ form }: { form: UseFormReturnType<Permission> }) => {\n return <TextInput {...form.getInputProps('id')}withAsterisk />;\n};\nexport const MethodInput = ({\n form\n }: {\n form: UseFormReturnType<Permission>;\n}) => {\n return <TextInput {...form.getInputProps('action.method')} />;\n};\nexport const ServiceInput = ({\n form\n }: {\n form: UseFormReturnType<Permission>;\n}) => {\n return <TextInput {...form.getInputProps('action.service')} />;\n};\n\n\nconst PermissionDetailRow = ({ permission }: { permission: Permission }) => {\n const form = useForm<Permission>({\n initialValues: permission,\n });\n return (\n <tr key={permission.id}>\n <td><PermissionId form={form} /></td>\n <td><ServiceInput form={form} /></td>\n <td><MethodInput form={form} /></td>\n </tr>\n );\n};\n\nexport default PermissionDetailRow;\n","import React, { useContext, useMemo } from 'react';\nimport {\n MantineReactTable,\n type MRT_ColumnDef,\n useMantineReactTable,\n} from 'mantine-react-table';\n\nimport { Role } from '../types';\nimport { AuthzContext } from '../Provider';\nimport { Table, Menu, Stack } from '@mantine/core';\nimport PermissionDetailRow from './PermissionnDetailsRow';\n\nconst RolesTable = () => {\n const context = useContext(AuthzContext);\n\n const columns = useMemo<MRT_ColumnDef<Role>[]>(\n () => [\n {\n id: 'id',\n header: 'Id',\n accessorFn: (role: Role) => role.id,\n },\n {\n id: 'Description',\n header: 'Description',\n accessorFn: (role: Role) => role.description ?? '',\n },\n {\n id: 'Permissions',\n header: 'Permissions',\n accessorFn: (role: Role) => role.permissions.length,\n },\n ],\n [],\n );\n\n const table = useMantineReactTable<Role>({\n columns,\n data: context.state.roles ?? [],\n enableRowActions: true,\n positionActionsColumn: 'last',\n renderRowActionMenuItems: ({ row }) => (\n <React.Fragment>\n <Menu.Item onClick={() => console.info('Delete')}>Delete</Menu.Item>\n </React.Fragment>\n ),\n enableRowSelection: true,\n\n renderDetailPanel: ({ row }) => {\n const subrows = row.original.permissions.map((element) => (\n <PermissionDetailRow key={element.id} permission={element} />\n ));\n\n return (\n <Stack>\n <Table>\n <thead>\n <tr>\n <th>id</th>\n <th>service</th>\n <th>method</th>\n </tr>\n </thead>\n <tbody>{subrows}</tbody>\n </Table>\n </Stack>\n );\n },\n\n initialState: { showColumnFilters: false, showGlobalFilter: true },\n paginationDisplayMode: 'pages',\n positionToolbarAlertBanner: 'bottom',\n mantinePaginationProps: {\n radius: 'md',\n size: 'lg',\n },\n mantineSearchTextInputProps: {\n placeholder: 'Search Roles',\n },\n });\n\n return <MantineReactTable table={table} />;\n\n // return <div>Roles</div>;\n};\n\nexport default RolesTable;\n","import RolesTable from './RolesTable';\n\nconst RolesPanel = () => {\n return <RolesTable />;\n};\n\nexport default RolesPanel;\n","import React, { useContext, useMemo } from 'react';\nimport {\n MantineReactTable,\n type MRT_ColumnDef,\n useMantineReactTable,\n} from 'mantine-react-table';\nimport { Badge, Menu, MultiSelect, Table } from '@mantine/core';\n\nimport { Policy, Resource } from '../types';\nimport { AuthzContext } from '../Provider';\n\n\n\nexport const buildResourcePaths = (resource: Resource, prefix= '', result: string[] = []): string[] => {\n // Add the current resource name to the result array\n const currentName = prefix + '/' + resource.name;\n result.push(currentName);\n\n // If the resource has subresources, recursively call this function on each\n if (resource.subresources) {\n for (const subresource of resource.subresources) {\n buildResourcePaths(subresource, currentName, result);\n }\n }\n\n return result;\n};\n\n/**\n * A Table displaying the allowed services for each method on each resource path\n * Column -> Methods, Row -> Resource Paths, Cell -> Services\n * @context AuthzContext - a context containing authz information\n */\nconst PoliciesTable = () => {\n const context = useContext(AuthzContext);\n const all_roles = context.state.roles.map((role) => role.id);\n // resource_paths is a list of strings, each of which is a path to a resource\n // use a reducer to flatten the list of lists of strings into a single list of strings\n const all_resources = context.state.resources.reduce((acc: string[], resource: Resource) => {\n return acc.concat(buildResourcePaths(resource));\n }, []);\n\n const columns = useMemo<MRT_ColumnDef<Policy>[]>(\n () => [\n {\n id: 'id',\n header: 'Id',\n accessorFn: (policy: Policy) => policy.id,\n },\n {\n id: 'Description',\n header: 'Description',\n accessorFn: (policy: Policy) => policy.description ?? '',\n },\n {\n id: 'role_ids',\n header: 'Roles',\n accessorFn: (policy: Policy) => policy.role_ids,\n Cell: ({ row} ) => {\n return (<MultiSelect data={all_roles} value={row.original.role_ids} onChange={(value) => console.log(value)} />);\n }\n },\n {\n id: 'resource_paths',\n header: 'Resources',\n accessorFn: (policy: Policy) => policy.resource_paths,\n Cell: ({ row}) => {\n return (<MultiSelect data={all_resources} value={row.original.resource_paths} onChange={(value) => console.log(value)} />);\n }\n },\n ],\n [],\n );\n\n const table = useMantineReactTable<Policy>({\n columns,\n data: context.state.policies ?? [],\n enableRowActions: true,\n positionActionsColumn: 'last',\n renderRowActionMenuItems: ({ row }) => (\n <React.Fragment>\n <Menu.Item onClick={() => console.info('Delete')}>Delete</Menu.Item>\n </React.Fragment>\n ),\n enableRowSelection: true,\n paginationDisplayMode: 'pages',\n positionToolbarAlertBanner: 'bottom',\n mantinePaginationProps: {\n radius: 'md',\n size: 'lg',\n },\n\n });\n\n return (\n <div className=\"m-2\">\n <MantineReactTable table={table} />\n </div>\n );\n};\n\nexport default PoliciesTable;\n","import PoliciesTable from './PoliciesTable';\n\nconst PoliciesPanel = () => {\n return (\n <PoliciesTable />\n );\n};\n\nexport default PoliciesPanel;\n","import React, { useContext, useMemo } from 'react';\nimport {\n MantineReactTable,\n type MRT_ColumnDef,\n useMantineReactTable,\n} from 'mantine-react-table';\n\nimport { Resource } from '../types';\nimport { AuthzContext } from '../Provider';\n\ntype ResourceTableData = {\n name: string;\n description: string;\n subRows: ResourceTableData[];\n};\n\nconst expandAll = (data: Resource): ResourceTableData => {\n return {\n name: data.name,\n description: data.description ?? '',\n subRows: data?.subresources?.map((child) => expandAll(child)) ?? [],\n };\n};\n\nconst ResourcesTable = () => {\n const context = useContext(AuthzContext);\n\n const columns = useMemo<MRT_ColumnDef<ResourceTableData>[]>(\n () => [\n {\n name: 'name',\n header: 'name',\n accessorFn: (resource: Resource) => resource.name,\n },\n {\n id: 'Description',\n header: 'Description',\n accessorFn: (resource: Resource) => resource.description ?? '',\n },\n ],\n [],\n );\n\n const data = useMemo<ResourceTableData[]>(\n () => context.state.resources.map((resource) => expandAll(resource)),\n [context.state.resources],\n );\n\n const table = useMantineReactTable<ResourceTableData>({\n columns,\n data,\n enableRowActions: true,\n positionActionsColumn: 'last',\n enableExpanding: true,\n enableExpandAll: true,\n paginateExpandedRows: false,\n });\n\n return (\n <MantineReactTable\n table={table}\n />\n );\n};\n\nexport default ResourcesTable;\n","import ResourcesTable from './ResourcesTable';\n\nconst ResourcesPanel = () => {\n return (\n <ResourcesTable />\n );\n};\n\nexport default ResourcesPanel;\n","import { Tabs } from '@mantine/core';\nimport UserPanel from './Users/UserPanel';\nimport { Authz } from './types';\nimport { AuthzProvider } from './Provider';\nimport RolesPanel from './Roles/RolesPanel';\nimport PoliciesPanel from './Policies/PoliciesPanel';\nimport ResourcesPanel from './Resources/ResourcesPanel';\n\ninterface Gen3AuthzProps {\n authz: Authz;\n}\n\nconst Gen3Authz = ({ authz }: Gen3AuthzProps) => {\n return (\n <div className=\"w-full\">\n <h1>Gen3 Authz</h1>\n <AuthzProvider authz={authz}>\n <Tabs orientation=\"vertical\" defaultValue=\"users\">\n <Tabs.List>\n <Tabs.Tab value=\"users\">Users</Tabs.Tab>\n <Tabs.Tab value=\"groups\">Groups</Tabs.Tab>\n <Tabs.Tab value=\"resources\">Resources</Tabs.Tab>\n <Tabs.Tab value=\"policies\">Policies</Tabs.Tab>\n <Tabs.Tab value=\"roles\">Roles</Tabs.Tab>\n </Tabs.List>\n\n <Tabs.Panel value=\"users\" pl=\"xs\">\n <UserPanel />\n </Tabs.Panel>\n <Tabs.Panel value=\"resources\" pl=\"xs\">\n <ResourcesPanel />\n </Tabs.Panel>\n <Tabs.Panel value=\"policies\" pl=\"xs\">\n <PoliciesPanel />\n </Tabs.Panel>\n <Tabs.Panel value=\"roles\" pl=\"xs\">\n <RolesPanel />\n </Tabs.Panel>\n </Tabs>\n </AuthzProvider>\n </div>\n );\n};\n\nexport default Gen3Authz;\n","import { UserYaml, Authz } from './types';\n\nexport const convertUserYAMLToAuthz = (userYaml: UserYaml) : Authz => {\n // TODO: add populate of User and other fields\n return {\n users: userYaml.users,\n groups: userYaml.authz.groups,\n resources: userYaml.authz.resources,\n roles: userYaml.authz.roles,\n policies: userYaml.authz.policies\n } as Authz;\n};\n","import React from 'react';\nimport {\n NavPageLayout,\n NavPageLayoutProps,\n} from '../../../features/Navigation';\nimport { Gen3Authz, type Authz } from '../../../features/Authz';\n\ninterface Props extends NavPageLayoutProps {\n authz: Authz;\n}\n\nconst AuthzPage = ({ headerProps, footerProps, authz }: Props) => {\n return (\n <NavPageLayout\n {...{ headerProps, footerProps }}\n headerProps={headerProps}\n headerData={{\n title: 'Gen3 Authz Editor Page',\n content: 'Authz Editor page',\n key: 'gen3-authz-editor-page',\n }}\n >\n <Gen3Authz authz={authz} />\n </NavPageLayout>\n );\n};\n\nexport default AuthzPage;\n","import fs from 'fs';\nimport path from 'path';\nimport YAML from 'yaml';\nimport { GEN3_COMMONS_NAME } from '@gen3/core';\nimport { getNavPageLayoutPropsFromConfig } from '../../../lib/common/staticProps';\nimport { convertUserYAMLToAuthz } from '../../../features/Authz';\n\n\nexport const AdminAuthZPageGetServerSideProps = async () => {\n\n const rootPath = `config/${GEN3_COMMONS_NAME}/`;\n const filepath = 'user.yaml';\n let data: Record<string, any> = {};\n\n try {\n const contents = fs.readFileSync(path.join(rootPath, filepath), 'utf8');\n data = await YAML.parse(contents);\n } catch (err) {\n throw new Error(`Cannot process ${rootPath}${filepath}`);\n }\n return {\n props: {\n ...(await getNavPageLayoutPropsFromConfig()),\n // TODO: add support for helm and original user.yaml layout\n authz: convertUserYAMLToAuthz(data['fence']['USER_YAML']),\n },\n };\n};\n","import React from 'react';\nimport { NextPage } from 'next';\nimport Head from 'next/head';\nimport Link from 'next/link';\n\nconst Custom404Page: NextPage = () => {\n return (\n <React.Fragment>\n <Head>\n <title>Page Not Found</title>\n <meta\n property=\"og:title\"\n content=\"Gen3 Portal Page Not Found\"\n key=\"gen3-page-not-found\"\n />\n </Head>\n <div className=\"flex flex-col justify-center items-center h-full p-8 gap-2\">\n <h1 className=\"text-2xl\">Page Not Found</h1>\n <span>Sorry, we couldn't find the page you were looking for.</span>\n <Link href=\"/\" className=\"text-primary underline\">\n Click here to go to the Portal's home page.\n </Link>\n </div>\n </React.Fragment>\n );\n};\n\nexport default Custom404Page;\n","import { ProjectTableColumn } from './types';\n\nexport const extractMappingFromProjectTableConfig = (columns: ProjectTableColumn[]) => {\n const mapping: Record<string, string> = {};\n columns.forEach((column) => {\n mapping[column.field] = column.field;\n });\n return mapping;\n};\n\nexport const buildQuery = (fields:string[]) => {\n return fields.map((field) => {\n return `${field}:${field}(project_id: $name)`;\n });\n};\n","import React, { useMemo, useState } from 'react';\nimport {\n MantineReactTable,\n type MRT_PaginationState,\n useMantineReactTable,\n} from 'mantine-react-table';\nimport { Loader, Text } from '@mantine/core';\nimport { useGetProjectsDetailsQuery } from '@gen3/core';\nimport { ProjectTableConfig } from '../types';\nimport { buildQuery } from '../utils';\n\nconst projectQuery = {\n query: 'query { project(first:0) {code, project_id, availability_type}}',\n};\n\nconst ProjectTable = ({ columns }: ProjectTableConfig) => {\n const [pagination, setPagination] = useState<MRT_PaginationState>({\n pageIndex: 0,\n pageSize: 10,\n });\n\n const mapping = useMemo(() => {\n const mapping: Record<string, string> = {};\n columns.forEach((column) => {\n mapping[column.field] = column.field;\n });\n return mapping;\n }, [columns]);\n\n const detailQuery = {\n query: `query projectDetailQuery(\n $name: [String]\n) {\n project(project_id: $name) {\n name: project_id\n code\n id\n }\n ${buildQuery(Object.keys(mapping)).join('\\n')}\n}`,\n };\n\n const { data, isLoading, isFetching, isError } = useGetProjectsDetailsQuery({\n size: 10,\n projectQuery: projectQuery,\n projectDetailsQuery: detailQuery,\n mapping: mapping,\n });\n const cols = useMemo(() => {\n return [\n {\n field: 'name',\n accessorKey: 'project.name',\n header: 'Project',\n },\n ...columns.map((columnDef) => {\n return {\n field: columnDef.field,\n accessorKey: columnDef.field,\n header: columnDef.name,\n };\n }),\n ];\n }, [columns]);\n\n const table = useMantineReactTable({\n columns: cols,\n data: data?.details ?? [],\n manualSorting: true,\n manualPagination: true,\n paginateExpandedRows: false,\n onPaginationChange: setPagination,\n rowCount: data?.hits ?? 0,\n enableTopToolbar: false,\n layoutMode: 'semantic',\n state: {\n isLoading,\n pagination,\n showProgressBars: isFetching,\n showAlertBanner: isError,\n columnVisibility: {\n 'mrt-row-expand': false,\n },\n },\n mantineTableHeadCellProps: {\n style: {\n backgroundColor: 'var(--mantine-color-table-8)',\n color: 'var(--mantine-color-table-0)',\n textAlign: 'center',\n padding: 'var(--mantine-spacing-md)',\n fontWeight: 'bold',\n fontSize: 'var(--mantine-font-size-lg)',\n textTransform: 'uppercase',\n },\n },\n mantineTableProps: {\n style: {\n backgroundColor: 'var(--mantine-color-base-9)',\n },\n },\n });\n\n if (isLoading) {\n return (\n <div className=\"flex w-full py-24 relative justify-center\">\n <Loader variant=\"dots\" />{' '}\n </div>\n );\n }\n\n if (isError) {\n return (\n <div className=\"flex w-full py-24 h-100 relative justify-center\">\n <Text size={'xl'}>Error loading project data</Text>\n </div>\n );\n }\n\n return (\n <div className=\"flex w-full bg-base-max p-4 rounded-lg\">\n <div className=\"grow w-auto inline-block overflow-x-scroll\">\n <MantineReactTable table={table} />\n </div>\n </div>\n );\n};\n\nexport default ProjectTable;\n","import React, { useMemo } from 'react';\nimport { MantineReactTable, useMantineReactTable } from 'mantine-react-table';\nimport { filesize } from 'filesize';\nimport {\n useGetSubmissionsQuery,\n SubmissionInfo,\n SubmissionDocument,\n} from '@gen3/core';\nimport { Loader, Text } from '@mantine/core';\n\nconst cols = [\n {\n field: 'job_id',\n accessorKey: 'job_id',\n header: 'Id',\n },\n {\n field: 'submitter',\n accessorKey: 'submitter',\n header: 'Submitter',\n },\n {\n field: 'project_id',\n accessorKey: 'project_id',\n header: 'Project',\n },\n {\n field: 'created_datetime',\n accessorKey: 'created_datetime',\n header: 'Created Date',\n },\n {\n field: 'state',\n accessorKey: 'state',\n header: 'State',\n },\n];\n\nconst SubmissionsTable = () => {\n const { data, isLoading, isFetching, isError } = useGetSubmissionsQuery();\n\n const rows = useMemo(() => {\n if (data) {\n return data.transactionList.map((row: SubmissionInfo) => {\n const fileSizeTotal = filesize(\n row.documents.reduce(\n (acc: number, doc: SubmissionDocument) => acc + doc.doc_size,\n 0,\n ),\n );\n\n return {\n job_id: row.id,\n submitter: row.submitter,\n project_id: row.project_id,\n created_datetime: row.created_datetime,\n state: row.state,\n fileSize: fileSizeTotal,\n };\n });\n }\n return [];\n }, [data]);\n\n const table = useMantineReactTable({\n columns: cols,\n data: rows,\n manualSorting: true,\n manualPagination: false,\n paginateExpandedRows: false,\n rowCount: rows.length,\n enableTopToolbar: false,\n layoutMode: 'semantic',\n state: {\n isLoading,\n showProgressBars: isFetching,\n showAlertBanner: isError,\n columnVisibility: {\n 'mrt-row-expand': false,\n },\n },\n mantineTableHeadCellProps: {\n style: {\n backgroundColor: 'var(--mantine-color-secondary-8)',\n color: 'var(--mantine-color-table-0)',\n textAlign: 'center',\n padding: 'var(--mantine-spacing-md)',\n fontWeight: 'bold',\n fontSize: 'var(--mantine-font-size-lg)',\n textTransform: 'uppercase',\n },\n },\n mantineTableProps: {\n style: {\n backgroundColor: 'var(--mantine-color-base-9)',\n },\n },\n });\n\n if (isLoading) {\n return (\n <div className=\"flex w-full py-24 relative justify-center\">\n <Loader variant=\"dots\" />{' '}\n </div>\n );\n }\n\n if (isError) {\n return (\n <div className=\"flex w-full py-24 h-100 relative justify-center\">\n <Text size={'xl'}>Error loading project data</Text>\n </div>\n );\n }\n\n return (\n <div className=\"flex w-full bg-base-max p-4 rounded-lg\">\n <div className=\"grow w-auto inline-block overflow-x-scroll\">\n <MantineReactTable table={table} />\n </div>\n </div>\n );\n};\n\nexport default SubmissionsTable;\n","import React, { ReactElement} from 'react';\nimport { SubmissionConfig } from './types';\nimport ProjectTable from './Tables/ProjectTable';\nimport MessagePanel from '../../components/MessagePanel';\nimport SubmissionsTable from './Tables/SubmissionsTable';\n\n\n\nconst SubmissionPanel = ( { config }: { config?: SubmissionConfig}) : ReactElement => {\n\n if (!config) {\n return ( <MessagePanel message=\"Submission config is not defined. Page disabled\" />);\n }\n\n return (\n <div className=\"flex flex-col items-center p-4 w-full bg-base-lightest\">\n <ProjectTable columns={ config.projectTable.columns } />\n <SubmissionsTable />\n </div>\n );\n};\n\nexport default SubmissionPanel;\n","import React from 'react';\nimport { NavPageLayout } from '../../features/Navigation';\nimport SubmissionPanel from '../../features/Submission/SubmissionPanel';\nimport { SubmissionsPageLayoutProps } from './types';\n\nconst SubmissionPage = ({\n submissionConfig,\n headerProps,\n footerProps,\n}: SubmissionsPageLayoutProps): JSX.Element => {\n return (\n <NavPageLayout\n footerProps={footerProps}\n headerProps={headerProps}\n headerData={{\n title: 'Gen3 Submission Page',\n content: 'Submission page',\n key: 'gen3-submission-page',\n }}\n >\n <SubmissionPanel config={submissionConfig} />\n </NavPageLayout>\n );\n};\n\nexport default SubmissionPage;\n","import { GetServerSideProps } from 'next';\nimport { getNavPageLayoutPropsFromConfig } from '../../lib/common/staticProps';\nimport { SubmissionConfig } from '../../features/Submission/types';\nimport ContentSource from '../../lib/content';\nimport { GEN3_COMMONS_NAME } from '@gen3/core';\nimport { SubmissionsPageLayoutProps } from './types';\n\nexport const SubmissionPageGetServerSideProps: GetServerSideProps<\n SubmissionsPageLayoutProps\n> = async () => {\n try {\n const submissionConfig: SubmissionConfig = await ContentSource.get(\n `config/${GEN3_COMMONS_NAME}/submission.json`,\n );\n\n return {\n props: {\n ...(await getNavPageLayoutPropsFromConfig()),\n submissionConfig: submissionConfig,\n },\n };\n } catch (err) {\n console.error(err);\n return {\n props: {\n ...(await getNavPageLayoutPropsFromConfig()),\n submissionConfig: undefined,\n },\n };\n }\n};\n","import React from 'react';\nimport { NavPageLayout } from '../../features/Navigation';\nimport { WorkspacesPanel } from '../../features/Workspace';\nimport { WorkspacePageProps } from './types';\n\nconst WorkspacesPage = ({\n headerProps,\n footerProps,\n workspaceProps,\n}: WorkspacePageProps): JSX.Element => {\n return (\n <NavPageLayout\n {...{ headerProps, footerProps }}\n headerData={{\n title: 'Gen3 Workspace Page',\n content: 'Workspace page',\n key: 'gen3-workspace-page',\n }}\n >\n <WorkspacesPanel />\n </NavPageLayout>\n );\n};\n\nexport default WorkspacesPage;\n","import { GetServerSideProps } from 'next';\nimport { getNavPageLayoutPropsFromConfig } from '../../lib/common/staticProps';\nimport ContentSource from '../../lib/content';\nimport { GEN3_COMMONS_NAME } from '@gen3/core';\nimport { WorkspaceConfiguration } from '../../features/Workspace';\nimport { WorkspacePageProps } from './types';\n\nexport const WorkspacesPageGetServerSideProps: GetServerSideProps<\n WorkspacePageProps\n> = async (_context) => {\n const workspaceProps: WorkspaceConfiguration = await ContentSource.get(\n `config/${GEN3_COMMONS_NAME}/workspaces.json`,\n );\n\n return {\n props: {\n ...(await getNavPageLayoutPropsFromConfig()),\n workspaceProps,\n },\n };\n};\n","import React from 'react';\nimport { NavPageLayout } from '../../features/Navigation';\nimport type { NavPageLayoutProps } from '../../features/Navigation';\nimport AiSearch from '../../features/Discovery/Search/AiSearch';\n\nconst AISearchPage = ({\n headerProps,\n footerProps,\n}: NavPageLayoutProps): JSX.Element => {\n return (\n <NavPageLayout\n {...{ headerProps, footerProps }}\n headerData={{\n title: 'Gen3 AI Search Page',\n content: 'AI Search',\n key: 'gen3-ai-search-page',\n }}\n >\n <div className=\"p-5 w-full\">\n <AiSearch />\n </div>\n </NavPageLayout>\n );\n};\n\nexport default AISearchPage;\n","import { GetServerSideProps } from 'next';\nimport { getNavPageLayoutPropsFromConfig } from '../../lib/common/staticProps';\nimport type { NavPageLayoutProps } from '../../features/Navigation';\n\nexport const AISearchPageGetServerSideProps: GetServerSideProps<\n NavPageLayoutProps\n> = async () => {\n try {\n return {\n props: {\n ...(await getNavPageLayoutPropsFromConfig()),\n },\n };\n } catch (err) {\n console.error(err);\n return {\n props: {\n headerProps: {\n top: {\n items: [],\n },\n navigation: {},\n },\n footerProps: {},\n headerData: {\n title: 'Gen3 AI Search Page',\n content: 'AI Search',\n key: 'gen3-ai-search-page',\n },\n },\n };\n }\n};\n","import { MantineReactTable, useMantineReactTable } from 'mantine-react-table';\nimport { CrosswalkMapping } from './types';\nimport React, { useMemo } from 'react';\nimport { Text } from '@mantine/core';\nimport { TableIcons } from '../../components/Tables/TableIcons';\n\ninterface CrosswalkTableProps {\n mapping: CrosswalkMapping;\n data: Array<any>;\n isFetching: boolean;\n isSuccess: boolean;\n isError: boolean;\n tableMessage: string;\n showSubmittedIdInTable: boolean;\n}\n\nconst CrosswalkTable = ({\n mapping,\n data,\n isFetching,\n isError,\n tableMessage,\n showSubmittedIdInTable,\n}: CrosswalkTableProps) => {\n const cols = useMemo(() => {\n return [\n ...(showSubmittedIdInTable\n ? [\n {\n accessorKey: 'from',\n header: mapping.source.label,\n },\n ]\n : []),\n\n ...mapping.external.map((columnDef, idx) => {\n return {\n accessorKey: `to.${mapping.external[idx].id}`,\n header: columnDef.label,\n };\n }),\n ];\n }, []);\n\n const table = useMantineReactTable({\n columns: cols as any[],\n data: data,\n manualSorting: false,\n manualPagination: false,\n paginateExpandedRows: false,\n rowCount: data.length,\n enableTopToolbar: false,\n icons: TableIcons,\n enableStickyHeader: true,\n state: {\n isLoading: isFetching,\n showProgressBars: isFetching,\n showAlertBanner: isError,\n columnVisibility: {\n 'mrt-row-expand': false,\n },\n },\n layoutMode: 'semantic',\n mantineTableHeadCellProps: {\n style: {\n backgroundColor: 'var(--mantine-color-table-3)',\n color: 'var(--mantine-color-table-9)',\n textAlign: 'center',\n padding: 'var(--mantine-spacing-md)',\n fontWeight: 600,\n fontSize: 'var(--mantine-font-size-sm)',\n textTransform: 'uppercase',\n },\n },\n // mantineTableContainerProps: ({ table }) => {\n // return {\n // sx: {\n // maxHeight: 'calc(100vh - 560px) !important;',\n // },\n // };\n // },\n mantineTableProps: {\n style: {\n backgroundColor: 'var(--mantine-color-base-1)',\n },\n },\n renderEmptyRowsFallback: () => {\n return (\n <div className=\"flex justify-center items-center content-center h-96 w-full\">\n <Text>{tableMessage}</Text>\n </div>\n );\n },\n });\n\n return (\n <div className=\"grow w-auto inline-block overflow-x-auto\">\n <MantineReactTable table={table} />\n </div>\n );\n};\n\nexport default CrosswalkTable;\n","import React, { useState, useEffect } from 'react';\nimport { Group, Stack, Button, Textarea } from '@mantine/core';\nimport { useClipboard } from '@mantine/hooks';\nimport { useLazyGetCrosswalkDataQuery, CrosswalkInfo } from '@gen3/core';\nimport { type CrosswalkConfig, CrosswalkMapping } from './types';\nimport CrosswalkTable from './CrosswalkTable';\n\nconst MIN_ROWS = 18;\n\n/**\n *\n */\nconst buildCSVData = (\n data: Array<CrosswalkInfo>,\n mapping: CrosswalkMapping,\n includeSourceId?: boolean,\n) => {\n const results = [\n // add the header\n includeSourceId\n ? `${mapping.source.label},${mapping.external\n .map((x) => x.label)\n .join(',')}`\n : mapping.external.map((x) => x.label).join(','),\n // add data\n ...data.map((x) => {\n const rest = mapping.external.map((columnDef) => x.to[columnDef.id]);\n return includeSourceId ? `${x.from},${rest.join(',')}` : rest.join(',');\n }),\n ].join('\\n');\n return results;\n};\n\nconst downloadData = (data: string) => {\n const csvData = encodeURI(`data:text/csv;charset=utf-8,${data}`);\n const link = document.createElement('a');\n link.href = csvData;\n link.download = 'crosswalk_data.csv';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n};\n\nconst CrosswalkPanel = ({\n mapping,\n showSubmittedIdInTable,\n}: CrosswalkConfig) => {\n const [query, setQuery] = useState<string>('');\n const [sourceIds, setSourceIds] = useState<string>('');\n const clipboard = useClipboard({ timeout: 500 });\n\n const [tableMessage, setTableMessage] = useState<string>('');\n\n const [getMapping, { data, isFetching, isError, isSuccess }] =\n useLazyGetCrosswalkDataQuery();\n\n const clear = () => {\n setSourceIds('');\n setQuery('');\n getMapping({\n ids: [],\n toPaths: mapping.external.map((x) => ({\n id: x.id,\n dataPath: x.dataPath,\n })),\n });\n };\n\n useEffect(() => {\n if (query.length == 0) {\n setTableMessage('No crosswalk ids submitted');\n return;\n }\n if (isError) {\n setTableMessage('Error returned from crosswalk service');\n }\n\n if (isSuccess && data && data.length == 0) {\n setTableMessage('No results found');\n }\n }, [query, isError, isSuccess, data?.length]);\n\n const onSubmit = () => {\n getMapping({\n ids: sourceIds.split(/,|\\r?\\n|\\r|\\n/g),\n toPaths: mapping.external.map((x) => ({\n id: x.id,\n dataPath: x.dataPath,\n })),\n });\n setQuery(sourceIds);\n };\n\n const updateIdQuery = (values: string) => {\n setSourceIds(values);\n };\n\n return (\n <Group\n wrap='nowrap'\n className=\"w-full items-start justify-start bg-base-lightest\"\n align=\"stretch\"\n >\n <Stack align=\"stretch\" justify=\"flex-start\" className=\"p-2 w-1/4\">\n <Group\n wrap='nowrap'>\n <Button\n size=\"md\"\n color=\"secondary.4\"\n disabled={sourceIds.length == 0}\n onClick={() => onSubmit()}\n >\n Submit\n </Button>\n <Button\n size=\"md\"\n color=\"secondary.4\"\n disabled={sourceIds.length == 0}\n onClick={() => clear()}\n >\n Clear\n </Button>\n </Group>\n <Textarea\n placeholder=\"IDs...\"\n radius=\"md\"\n size=\"md\"\n required\n value={sourceIds}\n minRows={MIN_ROWS}\n onChange={(event) => updateIdQuery(event.currentTarget.value)}\n classNames={{\n root: 'h-full',\n wrapper: 'h-full',\n }}\n styles={{\n input: { height: '100%' },\n }}\n />\n </Stack>\n <Stack\n align=\"stretch\"\n justify=\"flex-start\"\n className=\"w-full p-2 border-0\"\n >\n <Group justify=\"flex-end\">\n <Button\n variant=\"outline\"\n size=\"md\"\n color={clipboard.copied ? 'accent.4' : 'accent-warm.4'}\n onClick={() => {\n if (data)\n clipboard.copy(\n buildCSVData(data, mapping, showSubmittedIdInTable),\n );\n }}\n disabled={!data || data.length == 0}\n >\n Copy\n </Button>\n <Button\n variant=\"outline\"\n size=\"md\"\n onClick={() => {\n if (data)\n downloadData(\n buildCSVData(data, mapping, showSubmittedIdInTable),\n );\n }}\n disabled={!data || data.length == 0}\n >\n Download\n </Button>\n </Group>\n <CrosswalkTable\n mapping={mapping}\n data={data ?? []}\n isFetching={isFetching}\n isSuccess={isSuccess}\n isError={isError}\n tableMessage={tableMessage}\n showSubmittedIdInTable={showSubmittedIdInTable ?? false}\n />\n </Stack>\n </Group>\n );\n};\n\nexport default CrosswalkPanel;\n","import React from 'react';\nimport { NavPageLayout } from '../../features/Navigation';\nimport { CrosswalkPanel } from '../../features/Crosswalk';\nimport { CrosswalkPageLayoutProps } from './types';\n\nconst CrosswalkPage = ({\n headerProps,\n footerProps,\n config,\n}: CrosswalkPageLayoutProps): JSX.Element => {\n return (\n <NavPageLayout\n {...{ headerProps, footerProps }}\n headerData={{\n title: 'Gen3 Crosswalk Page',\n content: 'Crosswalk Data',\n key: 'gen3-crosswalk-page',\n }}\n >\n <CrosswalkPanel {...config} />\n </NavPageLayout>\n );\n};\n\nexport default CrosswalkPage;\n","import { GetServerSideProps } from 'next';\nimport { getNavPageLayoutPropsFromConfig } from '../../lib/common/staticProps';\nimport ContentSource from '../../lib/content';\nimport {\n type CrosswalkConfig,\n type CrosswalkName,\n} from '../../features/Crosswalk';\nimport { type NavPageLayoutProps } from '../../features/Navigation';\nimport { GEN3_COMMONS_NAME } from '@gen3/core';\nimport { CrosswalkMapping } from '../../features/Crosswalk/types';\n\ninterface InitialCrosswalkInfo extends CrosswalkName {\n dataPath: string;\n}\n\nexport interface InitialCrosswalkConfig {\n showSubmittedIdInTable?: boolean;\n mapping: {\n source: CrosswalkName;\n external: Array<InitialCrosswalkInfo>;\n };\n}\n\nexport const CrosswalkPageGetServerSideProps: GetServerSideProps<\n NavPageLayoutProps\n> = async () => {\n const initialConfig: InitialCrosswalkConfig = await ContentSource.get(\n `config/${GEN3_COMMONS_NAME}/crosswalk.json`,\n );\n const regex = /->/g;\n const processedConfig = {\n showSubmittedIdInTable: initialConfig.showSubmittedIdInTable,\n mapping: {\n source: initialConfig.mapping.source,\n external: initialConfig.mapping.external.map((entry) => ({\n ...entry,\n dataPath: entry.dataPath\n .split(regex)\n .map((x) => JSON.stringify([x]))\n .join('.'), // To Support JSONPath when a key is a URL\n })),\n },\n };\n\n return {\n props: {\n ...(await getNavPageLayoutPropsFromConfig()),\n config: processedConfig,\n },\n };\n};\n","/** @type {import('tailwindcss').Config} */\n/* eslint-disable @typescript-eslint/no-var-requires */\nimport plugin from 'tailwindcss/plugin';\n\nexport const TailwindConfig = (themer: any) => {\n return {\n important: '#__next',\n content: [\n './src/pages/**/*.{js,ts,jsx,tsx}',\n './src/components/**/*.{js,ts,jsx,tsx}',\n './src/features/**/*.{js,ts,jsx,tsx}',\n ],\n theme: {\n extend: {\n colors: {\n heal: {\n primary: '#99286B',\n secondary: '#402264',\n light_purple: '#F6EFF1',\n purple: '#532565',\n magenta: '#982568',\n red: '#981F32',\n coral: '#BF362E',\n orange: '#E07C3E',\n dark_gray: '#373A3C',\n medium_gray: '#818A91',\n light_gray: '#DDDDDD',\n blue: '#0044B3',\n },\n midrc: {\n secondary: '#421C52',\n },\n gen3: {\n secondary: '#3283C8',\n primary: '#05B8EE',\n lime: '#7EC500',\n iris: '#AD91FF',\n rose: '#E74C3C',\n bee: '#F4B940',\n pink: '#FF7ABC',\n highlight_orange: '#EF8523',\n highlight_orange_light: '#FF9635',\n mint: '#26D9B1',\n coal: '#4A4A4A',\n cloud: '#F5F5F5',\n gray: '#606060',\n lightgray: '#9B9B9B',\n smoke: '#D1D1D1',\n silver: '#E7E7E7',\n black: '#000000',\n white: '#FFFFFF',\n titanium: '#707070',\n obsidian: '#757575',\n },\n ...themer,\n },\n fontFamily: {\n montserrat: ['Montserrat', 'sans-serif'],\n sans: ['Source Sans Pro', 'sans-serif'],\n },\n fontSize: {\n tiny: '0.625rem',\n },\n borderWidth: {\n DEFAULT: '1px',\n 0: '0',\n 1: '1px',\n 2: '2px',\n 3: '3px',\n 4: '4px',\n 6: '6px',\n 8: '8px',\n },\n width: {\n 'screen/1.5': '75vw',\n 'screen/2': '50vw',\n 'screen/3': 'calc(100vw / 3)',\n 'screen/4': 'calc(100vw / 4)',\n 'screen/5': 'calc(100vw / 5)',\n },\n gridTemplateColumns: {\n '2flex1': '1fr auto',\n },\n transitionProperty: {\n height: 'height',\n },\n variants: {\n textColor: ['responsive', 'hover', 'focus', 'group-hover'],\n extend: {},\n },\n },\n },\n variants: {\n extend: {},\n },\n plugins: [\n require('@tailwindcss/forms'),\n require('@tailwindcss/typography'),\n require('@tailwindcss/forms')({\n strategy: 'class',\n }),\n plugin(function ({\n addVariant,\n }: {\n addVariant: (\n _1: string,\n _2: string | string[] | (() => string) | (() => string)[],\n ) => void;\n }) {\n // add mantine.dev variants\n addVariant('api-checked', '&[api-checked]');\n addVariant('api-active', '&[api-active]');\n addVariant('api-selected', '&[api-selected]');\n addVariant('api-hovered', '&[api-hovered]');\n addVariant('api-disabled', '&[api-disabled]');\n addVariant('api-in-range', '&[api-in-range]');\n addVariant('api-first-in-range', '&[api-first-in-range]');\n addVariant('api-last-in-range', '&[api-last-in-range]');\n }),\n plugin(function ({ addUtilities }: { addUtilities: (_1: any) => void }) {\n const newUtilities = {\n '.nextImageFillFix': {\n width: 'auto !important',\n right: 'auto !important',\n 'min-width': '0 !important',\n },\n };\n addUtilities(newUtilities);\n }),\n plugin(function ({\n addComponents,\n }: {\n addComponents: (_1: any) => void;\n }) {\n addComponents({\n '.heal-btn': {\n display: 'inline-block',\n textAlign: 'center',\n padding: '0.375rem 1rem',\n fontSize: '1rem',\n lineHeight: '1.5',\n fontWeight: '600',\n textTransform: 'uppercase',\n color: '#ffffff',\n border: '4px solid transparent',\n borderRadius: '7px',\n backgroundColor: '#982568',\n '&:hover, &:focus': {\n backgroundColor: '#ffffff',\n borderColor: '#982568',\n color: '#982568',\n },\n },\n '.heal-btn-purple': {\n backgroundColor: '#532565',\n '&:hover, &:focus': {\n color: '#532565',\n borderColor: '#532565',\n backgroundColor: '#ffffff',\n },\n },\n '.heal-btn-rev': {\n color: '#982568',\n borderColor: '#982568',\n backgroundColor: '#ffffff',\n '&:hover, &:focus': {\n backgroundColor: '#982568',\n borderColor: 'transparent',\n color: '#ffffff',\n },\n },\n '.heal-link-footer': {\n color: '#FFFFFF',\n '&:hover, &:focus': {\n color: '#c0b3c5',\n },\n },\n });\n }),\n ],\n };\n};\n","import type { NextApiRequest, NextApiResponse } from 'next';\n\nimport { GEN3_FENCE_API } from '@gen3/core';\nimport cookie from 'cookie';\nimport { deleteCookie } from 'cookies-next';\n\nexport default async function (req: NextApiRequest, res: NextApiResponse) {\n\n await fetch(`${GEN3_FENCE_API}/user/logout`,\n {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n\n res.setHeader('Set-Cookie', [\n cookie.serialize('fence', '', {\n sameSite: 'lax',\n httpOnly: true,\n secure: true,\n path: '/',\n expires: new Date(0),\n }),\n cookie.serialize('access_token', '', {\n sameSite: 'lax',\n httpOnly: true,\n secure: true,\n path: '/',\n expires: new Date(0),\n }),\n // delete the credentials_token cookie for credentials login\n cookie.serialize('credentials_token', '', {\n sameSite: 'lax',\n httpOnly: process.env.NODE_ENV === 'production',\n secure: process.env.NODE_ENV === 'production',\n path: '/',\n expires: new Date(0),\n }),\n ]);\n deleteCookie( 'credentials_token', {\n req, res,\n sameSite: 'lax',\n httpOnly: process.env.NODE_ENV === 'production',\n secure: process.env.NODE_ENV === 'production',\n });\n res.status(200).json({ success: 'success' });\n}\n","import type { NextApiRequest, NextApiResponse } from 'next';\nimport { deleteCookie, setCookie } from 'cookies-next';\nimport { decodeJwt, JWTPayload } from 'jose';\nimport { GEN3_FENCE_API } from '@gen3/core';\n\n/**\n * Credentials login set up a access_token cookie. This is used to authenticate the user\n * Note that in development mode, the access token is stored in a cookie but in production\n * it should be stored in a secure httpOnly cookie.\n * @param req - NextApiRequest\n * @param res - NextApiResponse\n */\nexport default async function (req: NextApiRequest, res: NextApiResponse) {\n\n const params = req.body;\n\n const response = await fetch(`${GEN3_FENCE_API}/user/credentials/api/access_token`,\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n api_key: params.api_key,\n key_id: params.key_id,\n }),\n});\n\n if (response.status !== 200) {\n deleteCookie( 'credentials_token', {\n req, res,\n sameSite: 'lax',\n httpOnly: process.env.NODE_ENV === 'production',\n secure: process.env.NODE_ENV === 'production',\n });\n return res.status(response.status).json({ message: 'Invalid token' });\n }\n\n const json = await response.json();\n const {\n access_token\n } = json;\n\n // TODO: validate the token\n const payload = decodeJwt(access_token) as JWTPayload;\n\n if (!payload) {\n deleteCookie( 'credentials_token', {\n req, res,\n sameSite: 'lax',\n httpOnly: process.env.NODE_ENV === 'production',\n secure: process.env.NODE_ENV === 'production',\n });\n return res.status(400).json({ message: 'Invalid token' });\n }\n setCookie( 'credentials_token', access_token, {\n req, res,\n maxAge: payload && payload.exp && payload.iat ? payload.exp - payload.iat : 60 * 60 * 20,\n sameSite: 'lax',\n httpOnly: process.env.NODE_ENV === 'production',\n secure: process.env.NODE_ENV === 'production',\n });\n\n return res.status(200).json({ message: 'Session token set' });\n}\n","import type { NextApiRequest, NextApiResponse } from 'next';\nimport { deleteCookie } from 'cookies-next';\n\nexport default async function (req: NextApiRequest, res: NextApiResponse) {\n deleteCookie( 'credentials_token', {\n req, res,\n sameSite: 'lax',\n httpOnly: process.env.NODE_ENV === 'production',\n secure: process.env.NODE_ENV === 'production',\n });\n res.redirect(307, '/');\n}\n"],"names":["Gen3Link","className","href","linkType","text","showExternalIcon","portalBasename","process","env","NEXT_PUBLIC_PORTAL_BASENAME","_jsx","span","Link","a","target","_jsxs","rel","FaExternalLinkAlt","title","extractClassName","key","classNames","mergeDefaultTailwindClassnames","defaultValues","userValues","merge","defaultKeys","Object","keys","mergedValues","forEach","twMerge","Footer","bottomLinks","columnLinks","footerLogos","footerRightLogos","classNamesDefaults","root","mergedClassNames","footer","div","map","col","index","length","logo","Image","src","width","height","alt","description","heading","items","i","h1","j","attrs","_createElement","link","React","Fragment","pageFromURL","currentURL","paths","split","filter","x","isUserOnPage","pageName","window","location","isExpired","value","Date","now","req","res","access_token","getCookie","decodedAccessToken","decodeJwt","status","json","issued","iat","expires","exp","userContext","context","user","useManageSession","userStatus","session","setSession","useState","pending","useDeepCompareEffect","prev","MinutesToMilliseconds","minutes","logoutSession","fetch","GEN3_FENCE_API","GEN3_REDIRECT_URL","cache","SessionContext","createContext","undefined","useSession","required","onUnauthenticated","router","useRouter","useContext","Error","push","useIsAuthenticated","isAuthenticated","refreshSession","getUserDetails","mostRecentSessionRefreshTimestamp","updateSessionRefreshTimestamp","timeSinceLastSessionUpdate","UPDATE_SESSION_LIMIT","useInterval","callback","delay","savedCallback","useRef","useEffect","current","tick","id","setInterval","clearInterval","SessionProvider","children","updateSessionTime","inactiveTimeLimit","workspaceInactivityTimeLimit","logoutInactiveUsers","coreDispatch","useCoreDispatch","useLazyFetchUserDetailsQuery","useCoreSelector","state","selectUserAuthStatus","mostRecentActivityTimestamp","setMostRecentActivityTimestamp","setMostRecentSessionRefreshTimestamp","inactiveTimeLimitMilliseconds","workspaceInactivityTimeLimitMilliseconds","updateSessionIntervalMilliseconds","updateSessionWithUserStatus","sessionInfo","updateSession","useCallback","endSession","then","catch","e","showNotification","message","finally","updateUserActivity","addEventListener","removeEventListener","timeSinceLastActivity","showModal","modal","Modals","SessionExpireModal","ts","useDeepCompareMemo","Provider","TooltipStyle","tooltip","arrow","LoginButtonVisibility","handleSelected","referrer","LoginButton","icon","LoginIcon","size","hideText","visibility","pathname","usePathname","authenticated","LogoutOnly","Tooltip","label","position","withArrow","multiline","color","disabled","UnstyledButton","onClick","LoginAccountButton","userInfo","selectUserDetails","username","TopIconButton","name","leftIcon","rightIcon","drawBorder","button","leftSection","mergedClassnames","aria-label","role","Icon","p","processTopBarItems","showLogin","reduce","acc","item","needsBorder","TopBar","loginButtonVisibility","Hidden","header","nav","Visible","HoverLink","passHref","NavigationLogo","basePath","titleLink","fill","NavigationBarButton","iconHeight","arrowSize","zIndex","w","NavigationBar","navigationPanel","login","setCurrent","selectedStyle","ActionMenu","Menu","Target","DotsIcon","Dropdown","Item","Text","HorizontalNavigationBar","actions","loginIcon","Header","top","navigation","type","NavigationButton","$selected","props","Button","component","variant","LeftSidePanel","NavPageLayout","headerProps","footerProps","mainProps","headerData","mainContentStyle","fixed","Head","meta","property","content","main","jsonPathAccessor","path","row","JSONPath","getTagInfo","tagData","tagsConfig","categoryConfig","tagCategories","find","category","display","showUnknownTags","displayName","getManualSortingAndPagination","config","defaultFeature","sortingAndPagination","features","dataLoader","defaultCellRenderer","params","toString","valueIfNotAvailable","DiscoveryCellRendererFactory","cellRendererCatalog","getInstance","instance","getCellRenderer","functionName","registerCellRenderer","func","registerCellRendererCatalog","catalog","entries","DiscoveryTableCellRenderer","cellProps","StringRowRenderer","studyPreviewConfig","original","field","Box","lineClamp","Gen3DiscoveryStandardRowPreviewRenderers","string","default","defaultRowRenderer","DiscoveryRowRendererFactory","RowRendererCatalog","getRowRenderer","console","log","registerRowRenderer","registerRowRendererCatalog","DiscoveryTableRowRenderer","contentType","renderer","registerDiscoveryDefaultStudyPreviewRenderers","DiscoveryContext","discoveryConfig","setStudyDetails","studyDetails","useDiscoveryContext","DiscoveryProvider","discoveryIndexConfig","isSearchKV","obj","isSearchKVArray","Array","isArray","every","accessibleFieldName","AccessLevel","DataAccessCellRenderer","PENDING","PendingIcon","NOT_AVAILABLE","NotAvailableIcon","ACCESSIBLE","UnlockedIcon","UNACCESSIBLE","LockedIcon","DEFAULT_NUM_DARK_COLORS","DEFAULT_NUM_LIGHT_COLORS","errorColor","tinycolor","CONTRAST_RANGE","mix","startColor","mixinColor","weight","isValid","color1","getAlpha","w1","w2","fromRatio","r","toRgb","g","b","getColorsList","colorsAmount","colorsShiftAmount","mixColor","saturation","mainColor","colorsList","givenColor","step","saturate","colorType","create10ColorPallet","darkColors","reverse","lightColors","DEFAULT","vivid","toHexString","c","idx","create10ColorAccessibleContrast","pallet","results","colorName","mostReadable","includeFallbackColors","level","getCurrentUnixTimestamp","Math","floor","unixTimeToString","unixTime","toLocaleString","resourcePathFromProjectID","projectID","program","project","slice","join","userHasMethodForServiceOnResource","method","service","resourcePath","userAuthMapping","some","focusStyles","stripTrailingSlash","str","endsWith","isArrayOfString","element","validTextTransforms","isTextTransform","includes","TruncatedStringWithTooltip","limit","maxLength","isNaN","Number","parseInt","ttValue","transform","contentString","truncated","tt","isPropertyKey","hasOwnProperty","prop","call","getParamsValueAsString","TruncatedStringWithTooltipCellRenderer","RenderArrayCell","Badge","RenderArrayCellNegativePositive","cell","RenderLinkCell","ev","stopPropagation","RenderYearOfBirthRestricted","displayContent","RenderLinkWithURL","rowData","RenderStringCell","RenderNumberCell","isContentEmpty","paramsValueIfNotAvailable","stringValue","v","RenderParagraphsCell","paragraph","RenderTagsCell","tags","radius","tabIndex","style","backgroundColor","borderColor","Gen3DiscoveryStandardCellRenderers","array","NegativePositive","yearOfBirthRestricted","number","paragraphs","withURL","dataAccess","registerDiscoveryDefaultCellRenderers","defaultStudyFieldRenderer","fieldValue","fieldLabel","StudyFieldRendererFactory","fieldRendererCatalog","getRenderer","registerFieldRenderer","registerFieldRendererCatalog","DiscoveryDetailsRenderer","arg1","arg2","arg3","jsonValueToElement","ul","li","k","strong","discoveryFieldStyle","blockTextField","labelText","fw","textField","linkField","linkValue","labeledSingleLinkField","parans","labeledNumberField","labeledMultipleLinkField","linksText","linkText","unlabeledMultipleLinkField","fieldData","fieldName","links","labeledSingleTextField","stringFieldValue","labeledYearOfBirthRestricted","labeledParagraph","labeledMultipleTextField","fieldsText","accessDescriptor","resource","_","Alert","formatResourceValuesWhenNestedArray","resourceFieldValue","renderDetailTags","_label","fieldConfig","categories","tag","createFieldRendererElement","includeIfNotAvailable","includeLabel","studyFieldRenderer","val","DefaultGen3StudyDetailsFieldsRenderers","textList","linkList","linkWithTitle","block","StudyGroup","data","fields","groupHasContent","useMemo","StudyGroupPanel","groups","StudyDetailsPanel","studyConfig","headerText","Tabs","defaultValue","tabs","tabName","List","tab","Tab","Panel","DetailsAuthorizationIcon","studyData","accessStyle","enabled","extractFieldData","fieldsMap","result","DownloadLinksPanel","downloadLinks","downloadLinkFields","titleField","descriptionField","idField","downloadEntries","studyDownloadLinks","Accordion","Control","Stack","entry","Group","gap","DownloadIcon","StudyTitle","SinglePageStudyDetailsPanel","authorization","elements","fieldsToShow","groupWidth","groupName","StudyDetails","opened","open","close","useDisclosure","minimalFieldMapping","uid","permalink","studyId","pagePath","encodeURIComponent","Drawer","Root","onClose","Overlay","opacity","blur","Content","BackIcon","CopyButton","copied","copy","Body","detailView","simpleDetailsView","TableIcons","IconArrowsSort","Unsorted","IconSortAscending","SortAsc","IconSortDescending","SortDsc","IconDotsVertical","ColumnMenu","extractCellValue","getValue","DiscoveryTable","hits","dataRequestStatus","setSorting","setPagination","pagination","sorting","isLoading","isError","isFetching","manualSortingAndPagination","cols","studyColumns","columnDef","accessorKey","accessorFn","Cell","cellRenderFunction","table","useMantineReactTable","columns","manualSorting","manualPagination","paginateExpandedRows","onPaginationChange","onSortingChange","enableRowSelection","tableConfig","selectableRows","rowCount","icons","enableTopToolbar","enableColumnFilters","enableColumnActions","enableStickyHeader","enableStickyFooter","renderDetailPanel","studyPreviewField","showProgressBars","showAlertBanner","expanded","expandableRows","columnVisibility","layoutMode","mantineDetailPanelProps","boxShadow","mantineTableHeadCellProps","textAlign","padding","fontWeight","fontSize","textTransform","mantineTableBodyRowProps","classes","tableRow","mantineTableProps","LoadingOverlay","visible","MantineReactTable","getAutoWidthDuration","constant","round","getElementWidth","el","scrollWidth","raf","requestAnimationFrame","useCollapsableSidebar","transitionDuration","transitionTimingFunction","onTransitionEnd","collapsedWidth","collapsedStyles","overflow","styles","setStylesRaw","setStyles","newStyles","flushSync","mergeStyles","oldStyles","getTransitionStyles","_duration","transition","useDidUpdate","willChange","handleTransitionEnd","propertyName","getCollapseProps","refKey","rest","theirRef","mergeRefs","boxSizing","defaultProps","animateOpacity","CollapsableSidebar","factory","ref","in","others","useProps","theme","useMantineTheme","shouldReduceMotion","useReducedMotion","reduceMotion","respectReducedMotion","duration","getStyleObject","SearchFilters","values","filterState","setFilterState","Paper","valueDisplayName","valueDisplayNames","Checkbox","checked","onChange","newFilterState","SearchCombination","AccessSortDirection","AdvancedSearch","advSearchFilters","setAdvancedSearchFilters","searchCombination","setSearchCombination","and","operation","filters","SegmentedControl","or","UndoIcon","multiple","keyDisplayName","AdvancedSearchPanel","DataLibraryActionButton","forwardRef","toolTip","active","showIcon","loginRequired","buttonProps","requiresLogin","useIsUserLoggedIn","buttonUcon","Loader","ActionBar","buttons","loginRequireForAllButtons","DefaultItemRenderer","_props","RenderFactoryTypedInstance","constructor","defaultRenderer","setDefaultRenderer","rendererExists","registerRenderer","error","registerRendererCatalog","defaultStatisticRenderer","align","DefaultRendererCatalog","StatisticRendererFactory","BuildSummaryStatisticPanel","summaries","summary","SummaryStatisticPanel","filterByAdvSearch","studies","advancedSearchTerms","noFiltersActive","selectedValues","selected","study","filterName","filterValues","studyFilters","studyFilterValues","getFilterValuesByKey","filtersField","uidField","invalidResults","filterValuesMap","warn","filterValue","err","hasSearchTerms","searchTerms","keyword","keywords","checkForNonNumericItems","sum","processSummary","uniq","processAllSummaries","processAuthorizations","authMapping","authzField","dataAvailabilityField","supportedValues","studyAuthz","accessible","notAvailable","isAuthorized","unaccessible","OTHER","__accessible","buildMiniSearchKeywordQuery","terms","extractValue","document","processAdvancedSearchTerms","cur","useGetMDSData","guidType","maxStudies","studyField","mdsData","setMDSData","setIsError","isUninitialized","isSuccess","queryIsError","useGetMDSQuery","offset","pageSize","selectAuthzMappingData","useGetAggMDSData","useGetAggMDSQuery","useSearchMetadata","searchOverFields","search","searchBar","searchableTextFields","searchedData","setSearchedData","suggestions","setSuggestions","autoSuggest","searchResults","rawResults","miniSearchSuggestions","addAll","removeAll","clearSearch","clearSuggestions","useMiniSearch","storeFields","extractField","searchOptions","processTerm","MiniSearch","getDefault","isSearching","clearSearchTerms","dataWithIds","random","substring","searchQuery","filterKeywordSearchResults","filterAdvancedSearchResults","input","suggestion","usePagination","paginatedData","setPaginatedData","updatePaginatedData","useGetAdvancedSearchFilterValues","advancedSearchFilters","advancedSearchFilterValues","setAdvancedSearchFilterValues","useLoadAllData","dataHook","dataGuidType","dataStudyField","summaryStatistics","setSummaryStatistics","aggregations","useLoadAllMDSData","useLoadAllAggMDSData","SearchInputWithSuggestions","searchChanged","placeholder","searchTerm","setSearchTerm","Autocomplete","SearchIcon","data-testid","rightSection","CloseIcon","AiSearch","uidForStorage","searchTermOnSubmit","setSearchTermOnSubmit","aiSearchHistory","setAiSearchHistory","resultAreaDisplayed","setResultAreaDisplayed","showLoading","setShowLoading","historyTableRows","setHistoryTableRows","aiResponseDisplayed","setAiResponseDisplayed","activeTab","setActiveTab","askQuestion","apiIsLoading","aiResponse","aiError","useAskQuestionMutation","askAi","query","loadingStarted","searchHistory","currentQuery","loadingEnded","JSON","parse","sessionStorage","getItem","setItem","stringify","errorStatus","topic","conversationId","documents","response","setCurrentSearch","useDeepCompareCallback","removeSearchHistory","rowInfo","tr","td","toLocaleDateString","PiTrash","MdInfo","pt","TextInput","event","onKeyUp","aria-hidden","PiSparkleFill","aria-live","Title","order","Markdown","remarkPlugins","remarkGfm","components","node","ol","Divider","my","metadata","source","Table","highlightOnHover","thead","th","tbody","useGetData","total","setTotal","useAggMDSServer","extractIndexArrayFromConfig","dataFetchArgs","indexKeys","extractFilterEmptyFromConfig","hasEnoughData","useGetIndexedMDSData","useGetIndexAggMDSQuery","filterEmpty","useLoadAllIndexedAggMDSData","discoveryDataLoaders","registerDiscoveryDataLoader","getDiscoveryDataLoader","registerDefaultDiscoveryDataLoaders","DiscoveryIndexPanel","indexSelector","dataFetchFunction","pageIndex","parentDivRef","searchBarTerm","setSearchBarTerm","setAdvancedSearchTerms","searchParam","operator","showAdvancedSearch","toggle","toggleAdvancedSearch","pageTitle","inputSubtitle","aiSearch","exportToDataLibrary","TagCloud","useGetTagsQuery","User","userData","useUserAuth","Card","shadow","withBorder","justify","mt","mb","Avatar","ProfileContext","profileConfig","useProfileContext","ProfileProvider","ResourcesContext","authzMapping","userProfile","servicesAndMethods","services","methods","useResourcesContext","ResourcesProvider","isAuthZLoading","useGetAuthzMappingsQuery","userProfileState","setUserProfileState","authzMappingState","setAuthzMappingState","add","Set","from","ResourcesFilters","selectedFilters","setFilters","checkboxes","serviceColors","resourceTable","LoginProviderMultipleItems","provider","handleLoginSelected","setValue","Select","urls","url","fullWidth","LoginProviderSingleItem","LoginProvidersPanel","useGetLoginProvidersQuery","default_provider","providers","TexturedSidePanel","backgroundImage","CredentialsLogin","handleLogin","sessionContext","credentials","setCredentials","file","setFile","reader","FileReader","onload","readAsText","handleCredentialsLogin","headers","body","notifications","show","labelPosition","Textarea","FileButton","accept","hashString","hash","charCodeAt","hashCode","ContentType","TextContent","textString","dangerouslySetInnerHTML","__html","textArray","ContactWithEmailContent","email","Anchor","filterRedirect","redirect","redirectPath","LoginPanel","loginConfig","image","topContent","bottomContent","referer","handleFenceLoginSelected","loginURL","showCredentialsLogin","isButtonOptions","renderButtons","dispatch","hideModalOnClick","dataTestId","hideModal","BaseModal","openModal","leftButtons","withCloseButton","closeOnClickOutside","closeOnEscape","Modal","withinPortal","FirstTimeModal","cookie","setCookie","useCookies","handleAccept","maxAge","expireDays","SessionExpiredModal","onLogout","saveToFile","savingStr","filename","blob","Blob","FileSaver","saveAs","CreateCredentialsAPIKeyModal","clipboard","useClipboard","timeout","copyToClipboard","api_key","key_id","replace","NoAccessModal","getModal","systemUseModal","defaultConfig","TextArray","scrollToEnableAccept","Gen3ModalsProvider","useGetCSRFQuery","refetchOnFocus","selectCurrentModal","modalsConfig","defaultComposer","showOnlyOnLogin","capitalize","word","charAt","toUpperCase","truncateString","n","removeKey","processLabel","processRangeKeyLabel","computeRowSpan","charts","numCols","numItems","numLastRow","spans","concat","ReactECharts","option","settings","loading","chartRef","chart","init","resizeChart","resize","dispose","getInstanceByDom","setOption","hideLoading","filterMissing","facetData","d","processChartData","maxBins","count","processAxis","yAxis","xAxis","BarChart","chartDefinition","grid","left","right","bottom","containLabel","trigger","series","PieChart","emphasis","DonutChart","legend","orient","labelLine","ExtractDataCount","ExtractDataPercent","EPSILON","valueType","dataExtractor","stack","HorizontalBarChart","chartData","axisPointer","max","DefaultChartCatalog","bar","horizontalStacked","fullPie","donut","ChartRendererFactory","createChart","chartProps","parameters","DEFAULT_COLS","Charts","counts","Grid","Col","Section","inheritPadding","py","fieldNameToTitle","chartType","ChartTitleBar","divId","jsonData","maxValuesToDisplay","selectedEnums","y","EnumFacetChart","showTitle","valueLabel","chart_data","setChartData","useElementSize","cd","chartDivId","EnumBarChart","unitLabel","tokens","capitalizedTokens","s","EnumBarChartTooltip","datum","pointerEvents","foreignObject","colors","accent","base","EnumBarChartVictoryLabel","paddingTop","paddingLeft","paddingRight","textOverflow","whiteSpace","fontFamily","formatter","Intl","NumberFormat","notation","VictoryChart","domainPadding","VictoryTheme","material","containerComponent","VictoryContainer","VictoryAxis","tickLabelComponent","stroke","ticks","axis","strokeWidth","dependentAxis","axisLabel","tickLabels","tickCount","tickFormat","t","format","crossAxis","VictoryStack","VictoryBar","horizontal","labels","labelComponent","VictoryTooltip","flyoutComponent","alignment","dataComponent","Bar","ariaLabel","ErrorMessage","CardContainer","ThemeIcon","IconAlertTriangle","ErrorCard","getAllFieldsFromFilterConfigs","filterTabConfigs","processBucketData","curr","processRangeData","updateFacetEnum","updateFacetFilters","clearFilters","operands","classifyFacets","fieldMapping","facetDefinitionsFromConfig","fieldKey","dataField","facetName","facetDef","range","minimum","maximum","ceil","buildNested","leafOperand","isOperationWithField","splitFieldArray","rootField","shift","operand","useUpdateFilters","updateCohortFilter","useGetFacetFilters","selectIndexedFilterByName","extractRangeValues","fromOp","to","toOp","useClearFilters","removeCohortFilter","FacetIconButton","tw","controlsIconStyle","FacetText","FacetHeader","OverflowTooltippedLabel","showTooltip","setShowTooltip","arrowOffset","clientWidth","DEFAULT_VISIBLE_ITEMS","DEFAULT_MINIMUM","DEFAULT_MAXIMUM","sortTypeToAriaDescription","sortTypeAndDirection","direction","FacetSortPanel","sortType","setSort","liveRegionRef","sortingStatus","setSortingStatus","textContent","NameSortIcon","nameIconSize","SortAscIcon","SortDesIcon","Selector","ValueSortIcon","valueIconSize","sortObj","ExpanderLabel","FacetExpander","remainingValues","isGroupExpanded","onShowChanged","MoreIcon","LessIcon","EnumFacet","dataHooks","showPercent","hideIfEmpty","showSearch","showFlip","startShowingData","dismissCallback","Label","iconStyle","setIsGroupExpanded","setIsSearching","sortedData","setSortedData","setSortType","isFacetView","setIsFacetView","enumFilters","useGetFacetData","cardRef","setSelectedEnums","searchInputRef","totalCount","useClearFilter","useUpdateFacetFilters","focus","handleChange","setFacetChartData","facetChartData","updated","toggleSearch","toggleFlip","filteredData","filteredDataObj","numberOfBarsToDisplay","cardStyle","calcCardStyle","cardHeight","min","calcNumberOfBarsToDisplay","visibleItems","totalNumberOfBars","tempFilteredData","toLowerCase","trim","selectedEnumNotInData","prevFacetChartData","fromEntries","compareValuesAscending","compareValuesDescending","compareKeysAscending","localeCompare","compareKeysDescending","comparisonFn","sort","FlipIcon","ActionIcon","currentTarget","toFixed","createBucket","lower","upper","RangeFacet","rangeFilters","minMaxValue","setMinMaxValue","clearRangeFilterFromCohort","updateRangeFilter","updateFilters","NumberInput","RangeSlider","thumbSize","instanceOfIncludesExcludes","op","MultiSelectValueFacet","setSelectedValues","facetTitle","trimFirstFieldNameToTitle","facetValue","facetDataValues","dataValues","setValues","transitionProps","MultiSelect","searchable","maxDropdownHeight","extractValues","ExactValueFacet","textValue","setTextValue","textValues","addValue","removeButton","PlusIcon","createFacetCard","facetDefinition","dataFunctions","idPrefix","enum","exact","multiselect","FiltersPanel","useCohortFacetFilters","selectCohortFilters","QueryRepresentationLabel","QueryExpressionsExpandedContext","RemoveButton","pl","pr","ClearIcon","QueryRepresentationText","QueryFieldLabel","QueryItemContainer","QueryContainer","isRangeOperation","isNestedFilter","IncludeExcludeQueryElement","queryExpressionsExpanded","setQueryExpressionsExpanded","currentCohortId","selectCurrentCohortId","get","cohortId","operandsArray","aria-expanded","LeftArrow","RightArrow","orientation","newOperands","o","fieldToUpdate","ComparisonElement","showLabel","handleKeepMember","keep","ExistsElement","ClosedRangeQueryElement","QueryElement","handleRemoveFilter","CohortFilterToComponent","handleIncludes","f","handleExcludes","handleEquals","handleNotEquals","handleLessThan","handleLessThanOrEquals","handleGreaterThan","handleGreaterThanOrEquals","handleExists","handleMissing","handleExcludeIfAny","handleIntersection","handleUnion","_f","handleNestedFilter","newOp","convertFilterToComponent","handler","handleOperation","getCombinedClassesExpandCollapseQuery","allQueryExpressionsCollapsed","baseClasses","dynamicClasses","disabledClasses","enabledHoverClasses","getCombinedClassesForRowCollapse","filtersSectionCollapsed","QueryExpressionContainer","MAX_HEIGHT_QE_SECTION","reducer","action","q","omit","QueryExpressionSection","currentCohortName","expandedState","setExpandedState","useReducer","setFiltersSectionCollapsed","filtersRef","QESectionHeight","setQESectionHeight","scrollHeight","clearAllFilters","clearCohortFilters","noFilters","partial","LeftArrowIcon","RightArrowIcon","DownArrowIcon","UpArrowIcon","maxHeight","overflowY","CohortManager","selectCurrentCohortName","ValueCellRenderer","ArrayCellFunctionCatalog","args","baseURL","RenderLinkCellUsingValueMap","linkMap","valueToURL","LinkCellFunctionCatalog","linkWithValueMap","ExplorerTableCellRendererFactory","registerExplorerDefaultCellRenderers","isQueryResponse","ExtractData","TableDetailsPanel","detailsConfig","useGeneralGQLQuery","variables","AND","IN","queryData","rows","withTableBorder","withColumnBorders","tableDetails","ExplorerTableDetailsPanelFactory","registerCohortBuilderDefaultPreviewRenderers","DEFAULT_PROPS","DetailsModal","panel","panelProps","styling","yOffset","xOffset","DEFAULT_PAGE_LIMIT_LABEL","DEFAULT_PAGE_LIMIT","isRecordAny","ExplorerTable","DetailsComponent","rowSelection","setRowSelection","DetailsPanel","cellRendererFunc","cellRendererFuncParams","accessorPath","enableSorting","sortable","column","getRowId","originalRow","_index","_parentRow","cohortFilters","selectIndexFilters","useGetRawDataAndTotalCountsQuery","desc","accessibility","Accessibility","totalRowCount","limitLabel","pageLimit","_aggregation","_totalCount","paginationDisplayMode","localization","rowsPerPage","mantinePaginationProps","rowsPerPageOptions","withEdges","density","mode","sx","cursor","at","CountsValue","DownloadNotification","showErrorMessage","useGuppyActionButton","Modal403","Modal400","GeneralErrorModal","done","customErrorMessage","hideNotification","actionFunction","actionArgs","setIsActive","setActive","handleError","errorMessage","showDownloadNotification","controller","abort","cleanNotifications","closeButton","closeButtonProps","autoClose","handleClick","AbortController","signal","FiDownload","CohortActionButton","activeText","inactiveText","customStyle","tooltipText","handleDownload","aElement","createElement","URL","createObjectURL","setAttribute","click","revokeObjectURL","downloadToFileAction","onError","onAbort","downloadFromGuppyToBlob","onDone","DEFAULT_FILE_FIELDS","processManifest","resourceIdField","manifestFields","hasAllFields","downloadToManifestAction","dataFormat","referenceIdFieldInDataIndex","referenceIdFieldInResourceIndex","resourceIndexType","fileFields","manifestFilename","cohortFilterParams","resultManifest","downloadJSONDataFromGuppy","resultErr","refIDList","refIdsFilter","manifest_ids","data_format","bytes","TextEncoder","encode","registeredButtonActions","NullButtonAction","_params","Promise","registerButtonAction","buttonName","actionItem","findButtonAction","registerDefaultButtonActions","GuppyDropdownMenuItem","CohortDropdownActionButton","disableTargetWidth","dropdownElements","customPosition","fullHeight","customDataTestId","buttonAriaLabel","isActive","menuLabelText","createDownloadMenuButton","dropdownItems","buttonAction","actionTitle","TargetButtonChildren","DownloadsPanel","dropdowns","loginForDownload","isUserLoggedIn","dropdownsToRender","dropdown","ALL","funcArgs","EmptyData","TabbedPanel","tabTitle","facetDefinitions","facetDataHooks","keepMounted","SinglePanel","CohortPanel","guppyConfig","isSm","useMediaQuery","isMd","isXl","dataType","setFacetDefinitions","summaryCharts","setSummaryCharts","isAggsQueryError","useGetAggsQuery","getEnumFacetData","extractEnumFilterValue","getRangeFacetData","useTotalCounts","configFacetDefs","fieldsConfig","facetDefs","chartField","def","isCountSuccess","useGetCountsQuery","nodeCountTitle","CohortBuilder","explorerConfig","Center","maw","h","mx","panelConfig","GqlQueryEditor","graphQLEndpoint","selectHeadersWithCSRFToken","WorkspacesPanel","FilesystemContent","rootPath","filepath","fs","readFileSync","ContentDatabase","store","GEN3_FRONTEND_CONFIGURATION_ROOT","ContentRoot","setup","ContentSource","getNavPageLayoutPropsFromConfig","navigationConfigJSON","GEN3_COMMONS_NAME","topBar","createMantineTheme","fonts","createTheme","white","primaryColor","primaryShade","light","dark","breakpoints","xs","sm","md","lg","xl","Gen3Provider","sessionConfig","addCollection","CoreProvider","MantineProvider","ModalsProvider","Notifications","MessagePanel","extractLabel","Discovery","metadataIndex","setMetadataIndex","menuItems","metadataConfig","DiscoveryPage","DiscoveryPageGetServerSideProps","dynamic","ssr","QueryPanel","QueryPage","queryProps","QueryPageGetServerSideProps","Gen3Button","Gen3ButtonReverse","LandingPageContent","splitarea","splitareaJsx","area","Html","break","hr","cardsArea","allowedIcons","FaGraduationCap","FaRegQuestionCircle","FaVideo","MdOutlineSearch","MdOutlineBarChart","MdGroup","cards","card","btnText","bodyText","quoteArea","author","MdFormatQuote","quote","LandingPage","landingPage","LandingPageGetStaticProps","navPageLayoutProps","ExplorerPage","ExplorerPageGetServerSideProps","_context","cohortBuilderProps","Gen3FrontendContrastColors","Gen3FrontEndColors","primary","secondary","utility","ColorAndContrastPalletLine","contrast","ext","ColorTheme","article","em","ColorThemePage","ColorThemePageGetServerSideProps","ProtectedContent","asPath","SOON_IN_DAYS","getStatus","expiration","CredentialsTable","csrfToken","useGetCredentialsQuery","removeCredential","useRemoveCredentialMutation","apiKey","DeleteIcon","RefreshIcon","currentTimeInSeconds","jti","positionToolbarAlertBanner","mantineSearchTextInputProps","Credentials","addNewCredential","isNewLoading","useAddNewCredentialMutation","newCredential","unwrap","convertToRecordMethodToResource","ResourceBadge","serviceBadgeStyle","defaultColor","ResourcesTable","authz","mantineTableBodyCellProps","accessor","enableColumnResizing","mantineTableHeadRowProps","borderWidth","ResourcesPanel","openAuthWindow","pollInterval","resolve","reject","navigator","cookieEnabled","dualScreenLeft","screenLeft","screenX","dualScreenTop","screenTop","screenY","innerWidth","documentElement","screen","innerHeight","clientHeight","systemZoom","availWidth","win","loginAttempt","closed","interval","origin","ExternalProviderCard","truncate","idp","base_url","refresh_token_expiration","providerUrl","queryChar","ReloadIcon","ExternalProvidersPanel","externalProviders","useGetExternalLoginsQuery","providerCards","Profile","chevronPosition","chevron","Caret","hasExternalLogins","ProfilePage","ProfilePageGetServerSideProps","LoginPage","LoginPageGetServerSideProps","categoryFilter","dictionary","categoryReduce","getPropertyCount","properties","snakeCaseToLabel","snakeCase","words","snakeSplit","snake","SearchPathToPropertyIdString","PropertyIdStringToSearchPath","toNodeCategory","excludeSystemProperties","systemProperties","getDictionaryWithExcludeSystemProperties","ret","nodeID","removeUnusedFieldsFromDictionaryObject","SelectedStyle","ViewSelector","view","setView","ResultList","matches","term","selectItem","Highlight","highlight","MAX_UNEXPANDED_ITEMS","ResultCard","setExpanded","_Fragment","MAX_SEARCH_HISTORY","KEY_FOR_SEARCH_HISTORY","ACCORDION_TRANSITION_DURATION","DictionaryContext","showGraph","showDownloads","historyStorageId","maxHistoryItems","setPropertyDetails","propertyDetails","visibleCategories","useDictionaryContext","DictionaryProvider","processedDictionary","filtered","displayedCategories","flatMap","anyOf","rootCategory","getSearchResults","TableSearch","dictionarySearchResults","setDictionarySearchResults","dictionaryTableRows","setDictionaryTableRows","dictionarySearchHistory","setDictionarySearchHistory","removeDictionarySearchHistory","useLocalStorage","combineWith","searchHistoryArray","datetime","newSearchHistory","suggestedData","renderSuggestedItem","indexOf","renderOption","onOptionSubmit","getIcon","iconName","CategoryHeader","h3","CategoryAccordionLabel","wrap","PropertiesTable","subCategory","selectedProperty","appendRef","itemId","property_id","spacing","center","itemWrapper","DiscIcon","tableData","oneOf","enablePagination","enableBottomToolbar","borderLeftWidth","borderLeftColor","memo","CategoryPanel","selectedId","scrollToSelection","categoryInfo","selectedItems","itemRefs","scrollToItem","elm","timer","setTimeout","clearTimeout","prevProps","nextProps","Dictionary","setSelectedId","scrollIntoView","targetRef","scrollableRef","useScrollIntoView","scrollTo","itemRef","DictionaryWithContext","useGetDictionaryQuery","setDictionary","DictionaryPage","DictionaryPageGetServerSideProps","authzReducer","users","payload","AuthzContext","roles","policies","resources","AuthzProvider","useAuthzContext","UserTable","setCurrentUser","setPanelToUserDetail","enableRowActions","positionActionsColumn","renderRowActionMenuItems","info","onRowSelectionChange","initialState","showColumnFilters","showGlobalFilter","UserId","form","getInputProps","withAsterisk","NameInput","EmailInput","IsAdminInput","Switch","NewUserPanel","closePanel","useForm","initialValues","userId","UserDetails","UserDetailsPanel","UserPanelMode","NullUser","UserPanel","setMode","currentUser","UserDetailPanel","PermissionId","MethodInput","ServiceInput","PermissionDetailRow","permission","RolesTable","permissions","subrows","RolesPanel","buildResourcePaths","prefix","currentName","subresources","subresource","PoliciesTable","all_roles","all_resources","policy","role_ids","resource_paths","PoliciesPanel","expandAll","subRows","child","enableExpanding","enableExpandAll","Gen3Authz","convertUserYAMLToAuthz","userYaml","AuthzPage","AdminAuthZPageGetServerSideProps","contents","YAML","Custom404Page","buildQuery","projectQuery","ProjectTable","mapping","detailQuery","useGetProjectsDetailsQuery","projectDetailsQuery","details","SubmissionsTable","useGetSubmissionsQuery","transactionList","fileSizeTotal","filesize","doc","doc_size","job_id","submitter","project_id","created_datetime","fileSize","SubmissionPanel","projectTable","SubmissionPage","submissionConfig","SubmissionPageGetServerSideProps","WorkspacesPage","workspaceProps","WorkspacesPageGetServerSideProps","AISearchPage","AISearchPageGetServerSideProps","CrosswalkTable","tableMessage","showSubmittedIdInTable","external","renderEmptyRowsFallback","MIN_ROWS","buildCSVData","includeSourceId","downloadData","csvData","encodeURI","download","appendChild","removeChild","CrosswalkPanel","setQuery","sourceIds","setSourceIds","setTableMessage","getMapping","useLazyGetCrosswalkDataQuery","clear","ids","toPaths","dataPath","onSubmit","updateIdQuery","minRows","wrapper","CrosswalkPage","CrosswalkPageGetServerSideProps","initialConfig","regex","processedConfig","TailwindConfig","themer","important","extend","heal","light_purple","purple","magenta","red","coral","orange","dark_gray","medium_gray","light_gray","blue","midrc","gen3","lime","iris","rose","bee","pink","highlight_orange","highlight_orange_light","mint","coal","cloud","gray","lightgray","smoke","silver","black","titanium","obsidian","montserrat","sans","tiny","gridTemplateColumns","transitionProperty","variants","textColor","plugins","require","strategy","plugin","addVariant","addUtilities","newUtilities","addComponents","lineHeight","border","borderRadius","setHeader","serialize","sameSite","httpOnly","secure","NODE_ENV","deleteCookie","success"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,MAAMA,QAAW,GAAA,CAAC,EAChBC,SAAS,EACTC,IAAI,EACJC,QAAQ,EACRC,IAAI,EACJC,gBAAAA,GAAmB,KAAK,EACS,GAAA;AACjC,IAAA,MAAMC,iBACJC,OAAQC,CAAAA,GAAG,CAACC,2BAA2B,IACvCF,OAAQC,CAAAA,GAAG,CAACC,2BAA2B,KAAK,GACxCF,GAAAA,OAAAA,CAAQC,GAAG,CAACC,2BAA2B,GACvC,EAAA,CAAA;AACN,IAAA,IAAIN,aAAa,QAAU,EAAA;AACzB,QAAA,qBACEO,GAACC,CAAAA,MAAAA,EAAAA;YAAKV,SAAWA,EAAAA,SAAAA;AACf,YAAA,QAAA,gBAAAS,GAACE,CAAAA,IAAAA,EAAAA;gBAAKV,IAAMA,EAAAA,IAAAA;AAAOE,gBAAAA,QAAAA,EAAAA,IAAAA;;;KAGlB,MAAA,IAAID,aAAa,QAAU,EAAA;AAChC,QAAA,qBACEO,GAACG,CAAAA,GAAAA,EAAAA;YACCZ,SAAWA,EAAAA,SAAAA;AACXC,YAAAA,IAAAA,EAAM,CAAC,EAAEI,cAAe,CAAA,EAAEJ,KAAK,CAAC;YAChCY,MAAO,EAAA,SAAA;AAENV,YAAAA,QAAAA,EAAAA,IAAAA;;AAGP,KAAA;;AAEA,IAAA,qBACEW,IAACF,CAAAA,GAAAA,EAAAA;QAAEZ,SAAWA,EAAAA,SAAAA;QAAWC,IAAMA,EAAAA,IAAAA;QAAMY,MAAO,EAAA,QAAA;QAASE,GAAI,EAAA,YAAA;;AACtDX,YAAAA,gBAAAA,iBACCK,GAACO,CAAAA,iBAAAA,EAAAA;gBAAkBhB,SAAU,EAAA,MAAA;gBAAOiB,KAAM,EAAA,eAAA;AACxC,aAAA,CAAA,GAAA,IAAA;AACHd,YAAAA,IAAAA;;;AAGP;;ACtDO,MAAMe,gBAAmB,GAAA,CAC9BC,GACAC,EAAAA,UAAAA,GAAAA;AAEA,IAAA,IAAI,OAAOA,UAAAA,KAAe,QAAYD,IAAAA,GAAAA,IAAOC,UAAY,EAAA;QACvD,OAAOA,UAAU,CAACD,GAAI,CAAA,CAAA;AACxB,KAAA;IACA,OAAO,EAAA,CAAA;AACT,CAAE;;ACJF;;;;;;;AAOC,IACM,MAAME,8BAAAA,GAAiC,CAACC,aAA2BC,EAAAA,UAAAA,EAAwBC,QAAQ,IAAI,GAAA;IAC5G,MAAMC,WAAAA,GAAcC,MAAOC,CAAAA,IAAI,CAACL,aAAAA,CAAAA,CAAAA;AAChC,IAAA,MAAMM,YAAe,GAAA;AAAE,QAAA,GAAGN,aAAa;AAAE,QAAA,GAAGC,UAAU;AAAC,KAAA,CAAA;AAEvD,IAAA,IAAIC,KAAO,EAAA;QACTC,WAAYI,CAAAA,OAAO,CAACV,CAAAA,GAAAA,GAAAA;YAClB,IAAII,UAAU,CAACJ,GAAAA,CAAI,EAAE;gBACnBS,YAAY,CAACT,GAAI,CAAA,GAAGW,OAAQR,CAAAA,aAAa,CAACH,GAAI,CAAA,EAAEI,UAAU,CAACJ,GAAI,CAAA,CAAA,CAAA;AACjE,aAAA;AACF,SAAA,CAAA,CAAA;AACF,KAAA;IAEA,OAAOS,YAAAA,CAAAA;AACT,CAAE;;AClBF,MAAMG,MAAS,GAAA,CAAC,EACdC,WAAW,EACXC,WAAW,EACXC,WAAW,EACXC,gBAAgB,EAChBf,UAAa,GAAA,EAAE,EACH,GAAA;AAEZ,IAAA,MAAMgB,kBAAqB,GAAA;QACzBC,IAAM,EAAA,wDAAA;AACR,KAAA,CAAA;IAEA,MAAMC,gBAAAA,GAAkBjB,+BAA+Be,kBAAoBhB,EAAAA,UAAAA,CAAAA,CAAAA;AAE3E,IAAA,qBACEN,IAACyB,CAAAA,QAAAA,EAAAA;;0BACCzB,IAAC0B,CAAAA,KAAAA,EAAAA;AAAIxC,gBAAAA,SAAAA,EAAWkB,iBAAiB,MAAOoB,EAAAA,gBAAAA,CAAAA;;kCACtCxB,IAAC0B,CAAAA,KAAAA,EAAAA;wBAAIxC,SAAU,EAAA,kBAAA;;AACXkC,4BAAAA,CAAAA,WAAe,IAAA;gCAAC,EAAE;AAAC,6BAAD,EAAGO,GAAG,CAAC,CAACC,GAAKC,EAAAA,KAAAA,GAAAA;AAC/B,gCAAA,qBACElC,GAAC+B,CAAAA,KAAAA,EAAAA;oCAECxC,SAAW,EAAA,CAAC,2BAA2B,EACrC0C,GAAAA,CAAIE,MAAM,GAAG,CAAA,GAAI,iBAAoB,GAAA,EAAA,CACtC,CAAC;AAEDF,oCAAAA,QAAAA,EAAAA,GAAAA,CAAID,GAAG,CAAC,CAACI,IAAAA,iBACRpC,GAACqC,CAAAA,KAAAA,EAAAA;4CACC9C,SAAU,EAAA,aAAA;AAEV+C,4CAAAA,GAAAA,EAAK,CAAC,EAAEF,IAAKA,CAAAA,IAAI,CAAC,CAAC;AACnBG,4CAAAA,KAAAA,EAAOH,KAAKG,KAAK;AACjBC,4CAAAA,MAAAA,EAAQJ,KAAKI,MAAM;AACnBC,4CAAAA,GAAAA,EAAKL,KAAKM,WAAW;AAJhB,yCAAA,EAAA,CAAC,MAAM,EAAEN,IAAKA,CAAAA,IAAI,CAAC,CAAC,CAAA,CAAA;mCARxB,CAAC,WAAW,EAAEF,KAAAA,CAAM,CAAC,CAAA,CAAA;AAiBhC,6BAAA,CAAA;0CACAlC,GAAC+B,CAAAA,KAAAA,EAAAA;gCAAIxC,SAAU,EAAA,0BAAA;AACZ,gCAAA,QAAA,EAACiC,CAAAA,WAAAA,IAAe,EAAC,EAAGQ,GAAG,CAAC,CAAC,EAAEW,OAAO,EAAEC,KAAK,EAAE,EAAEC,kBAC5CxC,IAAC0B,CAAAA,KAAAA,EAAAA;wCAAIxC,SAAU,EAAA,qBAAA;;0DACbS,GAAC8C,CAAAA,IAAAA,EAAAA;gDAAGvD,SAAU,EAAA,2CAAA;AACXoD,gDAAAA,QAAAA,EAAAA,OAAAA;;AAEDC,4CAAAA,CAAAA,KAAS,IAAA,EAAE,EAAEZ,GAAG,CAAC,CAAC,EAAEtC,IAAI,EAAEF,IAAI,EAAEC,QAAQ,EAAE,EAAEsD,CAAAA,GAAAA;AAC5C,gDAAA,MAAMC,KAAQ,GAAA;AACZzD,oDAAAA,SAAAA,EAAW,CAAC,EACVC,IAAQ,IAAA,kBAAA,CACT,oDAAoD,CAAC;oDACtDkB,GAAKqC,EAAAA,CAAAA;AACP,iDAAA,CAAA;AACA,gDAAA,IAAIvD,IAAM,EAAA;AACR,oDAAA,qBACEyD,aAAClB,CAAAA,KAAAA,EAAAA;AAAK,wDAAA,GAAGiB,KAAK;wDAAEtC,GAAKlB,EAAAA,IAAAA;qEACnBQ,GAACV,CAAAA,QAAAA,EAAAA;wDAASE,IAAMA,EAAAA,IAAAA;wDAAMC,QAAUA,EAAAA,QAAAA;wDAAUC,IAAMA,EAAAA,IAAAA;;iDAG/C,MAAA;AACL,oDAAA,qBACEuD,aAAChD,CAAAA,MAAAA,EAAAA;AAAM,wDAAA,GAAG+C,KAAK;wDAAEtC,GAAKlB,EAAAA,IAAAA;AACnBE,qDAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AAGP,iDAAA;AACF,6CAAA,CAAA;;AAxBwCmD,qCAAAA,EAAAA,CAAAA,CAAAA,CAAAA;;;;AA6B9CnB,oBAAAA,CAAAA,gBAAoB,IAAA;wBAAC,EAAE;AAAC,qBAAD,EAAGM,GAAG,CAAC,CAACC,GAAKC,EAAAA,KAAAA,GAAAA;AACpC,wBAAA,qBACElC,GAAC+B,CAAAA,KAAAA,EAAAA;4BAECxC,SAAW,EAAA,CAAC,kBAAkB,EAC5B0C,GAAAA,CAAIE,MAAM,GAAG,CAAA,GAAI,aAAgB,GAAA,EAAA,CAClC,CAAC;AAEDF,4BAAAA,QAAAA,EAAAA,GAAAA,CAAID,GAAG,CAAC,CAACI,IAAAA,iBACRpC,GAACqC,CAAAA,KAAAA,EAAAA;AAECC,oCAAAA,GAAAA,EAAK,CAAC,EAAEF,IAAKA,CAAAA,IAAI,CAAC,CAAC;AACnBG,oCAAAA,KAAAA,EAAOH,KAAKG,KAAK;AACjBC,oCAAAA,MAAAA,EAAQJ,KAAKI,MAAM;AACnBC,oCAAAA,GAAAA,EAAKL,KAAKM,WAAW;AAJhB,iCAAA,EAAA,CAAC,MAAM,EAAEN,IAAKA,CAAAA,IAAI,CAAC,CAAC,CAAA,CAAA;2BAPxB,CAAC,WAAW,EAAEF,KAAAA,CAAM,CAAC,CAAA,CAAA;AAgBhC,qBAAA,CAAA;;;AAEDX,YAAAA,WAAAA,IAAeA,WAAYY,CAAAA,MAAM,GAAG,CAAA,iBACnCnC,GAAC+B,CAAAA,KAAAA,EAAAA;gBAAIxC,SAAU,EAAA,yDAAA;AACZgC,gBAAAA,QAAAA,EAAAA,WAAAA,CAAYS,GAAG,CAAC,CAACkB,MAAML,CACtB,iBAAAxC,IAAA,CAAC8C,eAAMC,QAAQ,EAAA;;0CACbpD,GAACG,CAAAA,GAAAA,EAAAA;AACCX,gCAAAA,IAAAA,EAAM0D,KAAK1D,IAAI;gCACfY,MAAO,EAAA,QAAA;gCACPE,GAAI,EAAA,qBAAA;gCACJf,SAAU,EAAA,kBAAA;AAET2D,gCAAAA,QAAAA,EAAAA,IAAAA,CAAKxD,IAAI,GAAGwD,IAAAA,CAAKxD,IAAI,GAAGwD,KAAK1D,IAAI;;AAEnCqD,4BAAAA,CAAAA,KAAMtB,WAAYY,CAAAA,MAAM,GAAG,CAAA,kBAAKnC,GAACC,CAAAA,MAAAA,EAAAA;gCAAKV,SAAU,EAAA,MAAA;AAAO,gCAAA,QAAA,EAAA,GAAA;;;AATrC2D,qBAAAA,EAAAA,IAAAA,CAAK1D,IAAI,CAAA,CAAA;AAahC,aAAA,CAAA,GAAA,IAAA;;;AAGV;;ACrHO,MAAM6D,cAAc,CAACC,UAAAA,GAAAA;IAC1B,MAAMC,KAAAA,GAAQD,UACXE,CAAAA,KAAK,CAAC,GAAA,CAAA,CACNC,MAAM,CAAC,CAACC,CAAAA,GAAMA,CAAM,KAAA,UAAA,IAAcA,CAAM,KAAA,EAAA,CAAA,CAAA;AAC3C,IAAA,OAAOH,KAAK,CAACA,KAAMpB,CAAAA,MAAM,GAAG,CAAE,CAAA,CAAA;AAChC,CAAE,CAAA;AAEK,MAAMwB,eAAe,CAACC,QAAAA,GAAAA;IAC3B,IAAI,OAAOC,MAAW,KAAA,WAAA,EAAa,OAAO,KAAA,CAAA;AAE1C,IAAA,OAAOR,WAAYQ,CAAAA,MAAAA,CAAOC,QAAQ,CAACtE,IAAI,CAAMoE,KAAAA,QAAAA,CAAAA;AAC/C,CAAE;;ACPK,MAAMG,YAAY,CAACC,KAAAA,GAAkBA,QAAQC,IAAKC,CAAAA,GAAG,KAAK,CAAE,CAAA;AAMnE;;;;AAIC,IACc,2BAAA,CAAgBC,GAAmB,EAAEC,GAAoB,EAAA;IAEtE,MAAMC,YAAAA,GAAeC,UAAU,cAAgB,EAAA;AAAEH,QAAAA,GAAAA;AAAKC,QAAAA,GAAAA;AAAI,KAAA,CAAA,CAAA;AAC1D,IAAA,IAAIC,YAAc,EAAA;;AAEhB,QAAA,MAAME,qBAAqBC,SACzBH,CAAAA,YAAAA,CAAAA,CAAAA;AAEF,QAAA,OAAOD,GAAIK,CAAAA,MAAM,CAAC,GAAA,CAAA,CAAKC,IAAI,CAAC;AAC1BC,YAAAA,MAAAA,EAAQJ,mBAAmBK,GAAG;AAC9BC,YAAAA,OAAAA,EAASN,mBAAmBO,GAAG;YAC/BC,WAAaR,EAAAA,kBAAAA,CAAmBS,OAAO,CAACC,IAAI;YAC5CR,MAAQF,EAAAA,kBAAAA,CAAmBO,GAAG,GAC1Bf,SAAAA,CAAUQ,mBAAmBO,GAAG,CAAA,GAC9B,YACA,QACF,GAAA,SAAA;AACN,SAAA,CAAA,CAAA;AACF,KAAA;AAEA,IAAA,OAAOV,GAAIK,CAAAA,MAAM,CAAC,GAAA,CAAA,CAAKC,IAAI,CAAC;QAC1BD,MAAQ,EAAA,aAAA;AACV,KAAA,CAAA,CAAA;AACF;;ACoBO,MAAMS,mBAAmB,CAC9BC,UAAAA,GAAAA;AAEA,IAAA,MAAM,CAACC,OAAAA,EAASC,UAAW,CAAA,GAAGC,QAA8B,CAAA;QAC1Db,MAAQ,EAAA,aAAA;QACRc,OAAS,EAAA,IAAA;AACX,KAAA,CAAA,CAAA;IAEAC,oBAAqB,CAAA,IAAA;AACnB,QAAA,IAAIL,eAAe,eAAiB,EAAA;YAClCE,UAAW,CAAA,CAACI,QAAU;AACpB,oBAAA,GAAGA,IAAI;oBACPN,UAAY,EAAA,eAAA;oBACZV,MAAQ,EAAA,QAAA;oBACRc,OAAS,EAAA,KAAA;iBACX,CAAA,CAAA,CAAA;SACK,MAAA,IAAIJ,eAAe,aAAe,EAAA;;YAEvCE,UAAW,CAAA,CAACI,QAAU;AACpB,oBAAA,GAAGA,IAAI;oBACPN,UAAY,EAAA,aAAA;oBACZV,MAAQ,EAAA,aAAA;oBACRc,OAAS,EAAA,IAAA;iBACX,CAAA,CAAA,CAAA;SACK,MAAA,IAAIJ,eAAe,SAAW,EAAA;YACnCE,UAAW,CAAA,CAACI,QAAU;AACpB,oBAAA,GAAGA,IAAI;oBACPF,OAAS,EAAA,IAAA;oBACTd,MAAQ,EAAA,aAAA;oBACRU,UAAY,EAAA,SAAA;iBACd,CAAA,CAAA,CAAA;SACK,MAAA,IAAIA,eAAe,iBAAmB,EAAA;YAC3CE,UAAW,CAAA,CAACI,QAAU;AACpB,oBAAA,GAAGA,IAAI;oBACPF,OAAS,EAAA,KAAA;oBACTd,MAAQ,EAAA,SAAA;oBACRU,UAAY,EAAA,iBAAA;iBACd,CAAA,CAAA,CAAA;AACF,SAAA;KACC,EAAA;AAACA,QAAAA,UAAAA;AAAW,KAAA,CAAA,CAAA;IAEf,OAAOC,OAAAA,CAAAA;AACT,CAAE;;AC1EF,MAAMM,qBAAwB,GAAA,CAACC,OAAoBA,GAAAA,OAAAA,GAAU,EAAK,GAAA,IAAA,CAAA;AAE3D,MAAMC,aAAgB,GAAA,UAAA;IAC3B,MAAMC,KAAAA,CAAM,CAAC,EAAEC,cAAAA,CAAe,kBAAkB,EAAEC,iBAAAA,CAAkB,CAAC,CAAC,EAAE;QACtEC,KAAO,EAAA,UAAA;AACT,KAAA,CAAA,CAAA;AACF,CAAE,CAAA;AAuBK,MAAMC,cAAAA,iBAAiB9C,cAAM+C,CAAAA,aAAa,CAC/CC,SACA,CAAA,CAAA;AAkBK,MAAMC,UAAAA,GAAa,CACxBC,QAAAA,GAAW,KAAK,EAChBC,iBAAAA,GAAAA;AAEA,IAAA,MAAMC,MAASC,GAAAA,SAAAA,EAAAA,CAAAA;AACf,IAAA,MAAMpB,UAAUqB,UAAWR,CAAAA,cAAAA,CAAAA,CAAAA;AAC3B,IAAA,IAAI,CAACb,OAAS,EAAA;AACZ,QAAA,MAAM,IAAIsB,KACR,CAAA,+DAAA,CAAA,CAAA;AAEJ,KAAA;IAEA,IAAIL,QAAAA,IAAY,CAACjB,OAAQG,CAAAA,OAAO,IAAIH,OAAQX,CAAAA,MAAM,KAAK,QAAU,EAAA;AAC/D,QAAA,IAAI6B,iBAAmB,EAAA;AACrBA,YAAAA,iBAAAA,EAAAA,CAAAA;SACK,MAAA;YACL,IAAI,OAAOzC,MAAW,KAAA,WAAA;YAEpB,OAAOuB,OAAAA,CAAAA;AACTmB,YAAAA,MAAAA,CAAOI,IAAI,CAAC,OAAA,CAAA,CAAA;AACd,SAAA;AACF,KAAA;IACA,OAAOvB,OAAAA,CAAAA;AACT,CAAE,CAAA;AAEK,MAAMwB,kBAAqB,GAAA,IAAA;AAChC,IAAA,MAAMxB,OAAUgB,GAAAA,UAAAA,EAAAA,CAAAA;IAChB,OAAO;QACLS,eAAiBzB,EAAAA,OAAAA,CAAQX,MAAM,KAAK,QAAA;AACpCQ,QAAAA,IAAAA,EAAMG,QAAQL,WAAW;AAC3B,KAAA,CAAA;AACF,CAAE,CAAA;AAEF,MAAM+B,cAAAA,GAAiB,CACrBC,cAAAA,EACAC,iCACAC,EAAAA,6BAAAA,GAAAA;IAEA,MAAMC,0BAAAA,GACJjD,IAAKC,CAAAA,GAAG,EAAK8C,GAAAA,iCAAAA,CAAAA;;AAEf,IAAA,IAAIE,6BAA6BC,oBAAsB,EAAA;AACrD,QAAA,OAAA;AACF,KAAA;;AAGAF,IAAAA,6BAAAA,CAA8BhD,KAAKC,GAAG,EAAA,CAAA,CAAA;AACtC6C,IAAAA,cAAAA,EAAAA,CAAAA;AACF,CAAA,CAAA;AAIA,MAAMK,WAAAA,GAAc,CAACC,QAA4BC,EAAAA,KAAAA,GAAAA;AAC/C,IAAA,MAAMC,gBAAgBC,MAAgC,CAAA,IAAA,CAAA,CAAA;IAEtDC,SAAU,CAAA,IAAA;AACR,QAAA,IAAIH,UAAU,IAAM,EAAA,OAAA;AACpBC,QAAAA,aAAAA,CAAcG,OAAO,GAAGL,QAAAA,CAAAA;AAC1B,KAAA,CAAA,CAAA;IAEAI,SAAU,CAAA,IAAA;AACR,QAAA,IAAIH,UAAU,IAAM,EAAA,OAAA;QACpB,SAASK,IAAAA,GAAAA;YACP,IAAIJ,aAAAA,CAAcG,OAAO,KAAK,IAAM,EAAA;AAClCH,gBAAAA,aAAAA,CAAcG,OAAO,EAAA,CAAA;AACvB,aAAA;AACF,SAAA;QACA,MAAME,EAAAA,GAAKC,YAAYF,IAAML,EAAAA,KAAAA,CAAAA,CAAAA;AAC7B,QAAA,OAAO,IAAMQ,aAAcF,CAAAA,EAAAA,CAAAA,CAAAA;KAC1B,EAAA;AAACN,QAAAA,KAAAA;AAAM,KAAA,CAAA,CAAA;AACZ,CAAA,CAAA;AAEA,MAAMH,uBAAuBzB,qBAAsB,CAAA,CAAA,CAAA,CAAA;AAEnD;;;;;;;;;;IAWO,MAAMqC,eAAkB,GAAA,CAAC,EAC9BC,QAAQ,EACR5C,OAAO,EACP6C,iBAAAA,GAAoB,CAAC,EACrBC,iBAAAA,GAAoB,EAAE,EACtBC,4BAAAA,GAA+B,CAAC,EAChCC,mBAAAA,GAAsB,IAAI,EACL,GAAA;AACrB,IAAA,MAAM7B,MAASC,GAAAA,SAAAA,EAAAA,CAAAA;AACf,IAAA,MAAM6B,YAAeC,GAAAA,eAAAA,EAAAA,CAAAA;AAErB,IAAA,MAAM,CAACvB,cAAAA,CAAe,GAAGwB,4BAAAA,EAAAA,CAAAA;AACzB,IAAA,MAAMpD,UAAaqD,GAAAA,eAAAA,CAAgB,CAACC,KAAAA,GAClCC,oBAAqBD,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA;AAGvB,IAAA,MAAM,CAACE,2BAA6BC,EAAAA,8BAAAA,CAA+B,GACjEtD,QAAAA,CAASrB,KAAKC,GAAG,EAAA,CAAA,CAAA;AAEnB,IAAA,MAAM,CACJ8C,iCACA6B,EAAAA,oCAAAA,CACD,GAAGvD,QAAAA,CAASrB,KAAKC,GAAG,EAAA,CAAA,CAAA;AAErB,IAAA,MAAM4E,gCACJpD,qBAAsBwC,CAAAA,iBAAAA,CAAAA,CAAAA;AAExB,IAAA,MAAMa,2CAA2CrD,qBAC/CyC,CAAAA,4BAAAA,CAAAA,CAAAA;AAEF,IAAA,MAAMa,oCACJtD,qBAAsBuC,CAAAA,iBAAAA,CAAAA,CAAAA;;AAWxB,IAAA,MAAMgB,2BAA8B,GAAA,UAAA;QAClC,MAAMlC,cAAAA,EAAAA,CAAAA;AACR,KAAA,CAAA;AAEA,IAAA,MAAMmC,cAAchE,gBAAiBC,CAAAA,UAAAA,CAAAA,CAAAA;;IAGrC,MAAMgE,aAAAA,GAAgBC,WACpB,CAAA,IAAMH,2BACN,EAAA,EAAA;AAACA,QAAAA,2BAAAA;AAA4B,KAAA,CAAA,CAAA;AAG/B,IAAA,MAAMI,UAAa,GAAA,UAAA;AACjBzD,QAAAA,aAAAA,EAAAA,CACG0D,IAAI,CAAC,IAAA;AACJvC,YAAAA,cAAAA,EAAAA,CAAAA;SAEDwC,CAAAA,CAAAA,KAAK,CAAC,CAACC,CAAAA,GAAAA;YACNC,gBAAiB,CAAA;gBACfjJ,KAAO,EAAA,cAAA;AACPkJ,gBAAAA,OAAAA,EAAS,CAAC,iBAAiB,EAAEF,CAAEE,CAAAA,OAAO,CAAC,CAAC;AAC1C,aAAA,CAAA,CAAA;AACF,SAAA,CAAA,CACCC,OAAO,CAAC,IAAA;AACPpD,YAAAA,MAAAA,CAAOI,IAAI,CAAC,CAAC,EAAEZ,iBAAkB,CAAA,CAAC;AACpC,SAAA,CAAA,CAAA;AACJ,KAAA,CAAA;AACA;;AAEC,MACD0B,SAAU,CAAA,IAAA;AACR0B,QAAAA,aAAAA,EAAAA,CAAAA;QAEA,IAAIH,iCAAAA,IAAqC,CAAG,EAAA,OAAA;AAE5C,QAAA,MAAMY,kBAAqB,GAAA,IAAA;AACzBhB,YAAAA,8BAAAA,CAA+B3E,KAAKC,GAAG,EAAA,CAAA,CAAA;AACzC,SAAA,CAAA;QAEAL,MAAOgG,CAAAA,gBAAgB,CAAC,WAAaD,EAAAA,kBAAAA,CAAAA,CAAAA;QACrC/F,MAAOgG,CAAAA,gBAAgB,CAAC,UAAYD,EAAAA,kBAAAA,CAAAA,CAAAA;QAEpC,OAAO,IAAA;YACL/F,MAAOiG,CAAAA,mBAAmB,CAAC,WAAaF,EAAAA,kBAAAA,CAAAA,CAAAA;YACxC/F,MAAOiG,CAAAA,mBAAmB,CAAC,UAAYF,EAAAA,kBAAAA,CAAAA,CAAAA;AACzC,SAAA,CAAA;KACC,EAAA,EAAE;IAELxC,WACE,CAAA,IAAA;AACE,QAAA,IAAI8B,WAAYzE,CAAAA,MAAM,IAAI,QAAA,EAAU;AACpC,QAAA,IAAId,aAAa,OAAmC,CAAA,EAAA,OAAA;QAEpD,MAAMoG,qBAAAA,GAAwB9F,IAAKC,CAAAA,GAAG,EAAKyE,GAAAA,2BAAAA,CAAAA;AAE3C,QAAA,IAAIP,mBAAqB,EAAA;AACvB,YAAA,IACE2B,qBAAyBjB,IAAAA,6BAAAA,IACzB,CAACnF,YAAAA,CAAa,WACd,CAAA,EAAA;AACA0E,gBAAAA,YAAAA,CAAa2B,SAAU,CAAA;AAAEC,oBAAAA,KAAAA,EAAOC,OAAOC,kBAAkB;AAAC,iBAAA,CAAA,CAAA,CAAA;AAC1Dd,gBAAAA,UAAAA,EAAAA,CAAAA;AACA,gBAAA,OAAA;AACF,aAAA;AACA,YAAA,IACEN,wCAA2C,GAAA,CAAA,IAC3CgB,qBAAyBhB,IAAAA,wCAAAA,IACzBpF,aAAa,WACb,CAAA,EAAA;AACA0E,gBAAAA,YAAAA,CAAa2B,SAAU,CAAA;AAAEC,oBAAAA,KAAAA,EAAOC,OAAOC,kBAAkB;AAAC,iBAAA,CAAA,CAAA,CAAA;AAC1Dd,gBAAAA,UAAAA,EAAAA,CAAAA;AACA,gBAAA,OAAA;AACF,aAAA;AACF,SAAA;;AAEAvC,QAAAA,cAAAA,CACEC,cACAC,EAAAA,iCAAAA,EACA,CAACoD,EAAAA,GAAevB,oCAAqCuB,CAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AAEvDjB,QAAAA,aAAAA,EAAAA,CAAAA;KAEFH,EAAAA,iCAAAA,GAAoC,IAChCA,iCACA,GAAA,IAAA,CAAA,CAAA;AAGN,IAAA,MAAMhF,QAAiBqG,kBAAmB,CAAA,IAAA;QACxC,OAAO;AACL,YAAA,GAAGnB,WAAW;AACdC,YAAAA,aAAAA;AACAE,YAAAA,UAAAA;AACF,SAAA,CAAA;KACC,EAAA;AAACH,QAAAA,WAAAA;AAAaC,QAAAA,aAAAA;AAAeE,QAAAA,UAAAA;AAAW,KAAA,CAAA,CAAA;IAE3C,qBACErJ,GAAA,CAACiG,eAAeqE,QAAQ,EAAA;QAACtG,KAAOA,EAAAA,KAAAA;AAAQgE,QAAAA,QAAAA,EAAAA,QAAAA;;AAE5C,CAAE;;AC5SK,MAAMuC,YAAe,GAAA;IAC1BC,OACE,EAAA,8EAAA;IACFC,KAAO,EAAA,iBAAA;AACT,CAAE;;;ACkBUC,CAAAA,SAAAA,qBAAAA,EAAAA;;;;GAAAA,qBAAAA,KAAAA,qBAAAA,GAAAA,EAAAA,CAAAA,CAAAA;;ACPZ,MAAMC,cAAiB,GAAA,OACrB9D,eACAN,EAAAA,MAAAA,EACAqE,QACAvB,EAAAA,UAAAA,GAAAA;IAEA,IAAI,CAACxC,eAAiB,EAAA,MAAMN,MAAOI,CAAAA,IAAI,CAAC,CAAC,eAAe,EAAEiE,QAAAA,CAAS,CAAC,CAAA,CAAA;AAC/D,SAAA;QACHvB,UAAcA,IAAAA,UAAAA,EAAAA,CAAAA;AAChB,KAAA;AACF,CAAA,CAAA;AAUA,MAAMwB,WAAc,GAAA,CAAC,EACnBC,IAAAA,iBAAO9K,GAAC+K,CAAAA,OAAAA,EAAAA;IAAUxL,SAAU,EAAA,MAAA;IAAOyL,IAAM,EAAA,SAAA;EAAa,EACtDC,QAAAA,GAAW,KAAK,EAChB1L,SAAAA,GAAY,mGAAmG,EAC/GiL,OAAO,EACPU,UAAU,EACO,GAAA;AACjB,IAAA,MAAM3E,MAASC,GAAAA,SAAAA,EAAAA,CAAAA;AAEf,IAAA,MAAM2E,QAAWC,GAAAA,WAAAA,EAAAA,CAAAA;AAEjB,IAAA,MAAM,EAAE/B,UAAU,EAAE,GAAG5C,WAAWR,cAAmB,CAAA,IAAA;QACnDoD,UAAYlD,EAAAA,SAAAA;AACd,KAAA,CAAA;AAEA,IAAA,MAAMhB,UAAaqD,GAAAA,eAAAA,CAAgB,CAACC,KAAAA,GAClCC,oBAAqBD,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA;AAEvB,IAAA,MAAM4C,gBAAgBxE,eAAgB1B,CAAAA,UAAAA,CAAAA,CAAAA;AAEtC,IAAA,IAAI+F,eAAeR,qBAAsBY,CAAAA,UAAU,IAAI,CAACD,eACtD,OAAO,IAAA,CAAA;AAET,IAAA,qBACErL,GAACuL,CAAAA,OAAAA,EAAAA;QACCC,KAAOhB,EAAAA,OAAAA;QACPiB,QAAS,EAAA,QAAA;QACTC,SAAS,EAAA,IAAA;QACTC,SAAS,EAAA,IAAA;QACTC,KAAM,EAAA,MAAA;AACNC,QAAAA,QAAAA,EAAUrB,OAAYrE,KAAAA,SAAAA;QACtBxF,UAAY4J,EAAAA,YAAAA;AAEZ,QAAA,QAAA,gBAAAvK,GAAC8L,CAAAA,cAAAA,EAAAA;AACCC,YAAAA,OAAAA,EAAS,IACPpB,cAAAA,CAAeU,aAAe9E,EAAAA,MAAAA,EAAQ4E,QAAU9B,EAAAA,UAAAA,CAAAA;AAGlD,YAAA,QAAA,gBAAAhJ,IAAC0B,CAAAA,KAAAA,EAAAA;AACCxC,gBAAAA,SAAAA,EAAW,CAAC,2CAA2C,EAAEA,SAAAA,CAAU,CAAC;;oBAEnE,CAAC0L,QAAAA,GAAYI,aAAgB,GAAA,QAAA,GAAW,OAAW,GAAA,IAAA;AACnDP,oBAAAA,IAAAA;;;;;AAKX;;ACvEA,MAAMkB,kBAAqB,GAAA,IAAA;AACzB,IAAA,MAAMzF,MAASC,GAAAA,SAAAA,EAAAA,CAAAA;AAEf,IAAA,MAAMmE,cAAiB,GAAA,UAAA;QACrB,MAAMpE,MAAAA,CAAOI,IAAI,CAAC,SAAA,CAAA,CAAA;AACpB,KAAA,CAAA;AAEA,IAAA,MAAMxB,UAAaqD,GAAAA,eAAAA,CAAgB,CAACC,KAAAA,GAClCC,oBAAqBD,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA;AAEvB,IAAA,MAAMwD,QAAWzD,GAAAA,eAAAA,CAAgB,CAACC,KAAAA,GAChCyD,iBAAkBzD,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA;IAGpB,IAAItD,UAAAA,IAAc0B,gBAAgB1B,UAAa,CAAA,EAAA;AAC7C,QAAA,qBACEnF,GAAC8L,CAAAA,cAAAA,EAAAA;YAAevM,SAAU,EAAA,MAAA;AAAOwM,YAAAA,OAAAA,EAAS,IAAMpB,cAAAA,EAAAA;AAC9C,YAAA,QAAA,gBAAA3K,GAAC+B,CAAAA,KAAAA,EAAAA;gBAAIxC,SAAU,EAAA,8FAAA;0BACZ0M,QAAUE,EAAAA,QAAAA;;;AAInB,KAAA;IACA,OAAO,IAAA,CAAA;AACT,CAAA;;ACdA,MAAMC,gBAAgB,CAAC,EACrBC,IAAI,EACJC,WAAWnG,SAAS,EACpBoG,SAAYpG,GAAAA,SAAS,EACrBxF,UAAa,GAAA,EAAE,EACf6L,UAAAA,GAAa,IAAI,EACL,GAAA;AACZ,IAAA,MAAM7K,kBAAqB,GAAA;AACzBC,QAAAA,IAAAA,EAAM,CAAC,oCAAoC,EACzC4K,UAAc,IAAA,0BAAA,CACf,KAAK,CAAC;QACPC,MACE,EAAA,8FAAA;QACFC,WAAa,EAAA,sCAAA;QACblB,KAAO,EAAA,oDAAA;QACPe,SAAW,EAAA,sCAAA;AACb,KAAA,CAAA;IACA,MAAMI,gBAAAA,GAAmB/L,+BACvBe,kBACAhB,EAAAA,UAAAA,CAAAA,CAAAA;AAGF,IAAA,qBACEX,GAAC+B,CAAAA,KAAAA,EAAAA;AACCxC,QAAAA,SAAAA,EAAWkB,iBAAiB,MAAQkM,EAAAA,gBAAAA,CAAAA;QACpCC,YAAYP,EAAAA,IAAAA;AAEZ,QAAA,QAAA,gBAAAhM,IAAC0B,CAAAA,KAAAA,EAAAA;AACCxC,YAAAA,SAAAA,EAAWkB,iBAAiB,QAAUkM,EAAAA,gBAAAA,CAAAA;YACtCE,IAAK,EAAA,QAAA;;AAEJP,gBAAAA,QAAAA,iBACCtM,GAAC8M,CAAAA,IAAAA,EAAAA;oBACChC,IAAMwB,EAAAA,QAAAA;AACN/M,oBAAAA,SAAAA,EAAWkB,iBAAiB,UAAYkM,EAAAA,gBAAAA,CAAAA;AAExC,iBAAA,CAAA,GAAA,IAAA;8BACJtM,IAAC0M,CAAAA,GAAAA,EAAAA;AAAExN,oBAAAA,SAAAA,EAAWkB,iBAAiB,OAASkM,EAAAA,gBAAAA,CAAAA;;AAAmB,wBAAA,GAAA;AAAEN,wBAAAA,IAAAA;AAAK,wBAAA,GAAA;;;AACjEE,gBAAAA,SAAAA,iBACCvM,GAAC8M,CAAAA,IAAAA,EAAAA;oBACChC,IAAMyB,EAAAA,SAAAA;AACNhN,oBAAAA,SAAAA,EAAWkB,iBAAiB,WAAakM,EAAAA,gBAAAA,CAAAA;AAEzC,iBAAA,CAAA,GAAA,IAAA;;;;AAIZ,CAAA,CAAA;AAEA,MAAMK,kBAAAA,GAAqB,CACzBpK,KACAqK,EAAAA,SAAAA,GAAAA;AAEA,IAAA,OAAOrK,KAAMsK,CAAAA,MAAM,CACjB,CAACC,KAAqBC,IAA0BlL,EAAAA,KAAAA,GAAAA;QAC9C,MAAMmL,WAAAA,GAAc,EAAEnL,KAAAA,KAAUU,MAAMT,MAAM,GAAG,CAAK,IAAA,CAAC8K,SAAQ,CAAA,CAAA;QAC7DE,GAAIxG,CAAAA,IAAI,eACNtG,IAACF,CAAAA,GAAAA,EAAAA;YAAEZ,SAAU,EAAA,MAAA;AAAOC,YAAAA,IAAAA,EAAM4N,KAAK5N,IAAI;;AAChC,gBAAA,GAAA;8BACDQ,GAACoM,CAAAA,aAAAA,EAAAA;AACCC,oBAAAA,IAAAA,EAAMe,KAAKf,IAAI;AACfC,oBAAAA,QAAAA,EAAUc,KAAKd,QAAQ;AACvBC,oBAAAA,SAAAA,EAAWa,KAAKb,SAAS;AACzB5L,oBAAAA,UAAAA,EAAYyM,KAAKzM,UAAU;oBAC3B6L,UAAYa,EAAAA,WAAAA;;AACX,gBAAA,GAAA;;WARqC,CAAC,EAAED,KAAK5N,IAAI,CAAC,CAAC,EAAE4N,IAAAA,CAAKf,IAAI,CAAC,CAAC,CAAA,CAAA,CAAA;QAWvE,OAAOc,GAAAA,CAAAA;AACT,KAAA,EACA,EAAE,CAAA,CAAA;AAEN,CAAA,CAAA;AAQA,MAAMG,MAAS,GAAA,CAAC,EACd1K,KAAK,EACL2K,qBAAAA,GAAwB7C,qBAAsB8C,CAAAA,MAAM,EACpD7M,UAAAA,GAAa,EAAE,EACH,GAAA;AACZ,IAAA,MAAMgB,kBAAqB,GAAA;QACzBC,IAAM,EAAA,uEAAA;AACR,KAAA,CAAA;IAEA,MAAM+K,gBAAAA,GAAmB/L,+BACvBe,kBACAhB,EAAAA,UAAAA,CAAAA,CAAAA;AAEF,IAAA,qBACEX,GAAC+B,CAAAA,KAAAA,EAAAA;AACC,QAAA,QAAA,gBAAA/B,GAACyN,CAAAA,QAAAA,EAAAA;AAAOlO,YAAAA,SAAAA,EAAWkB,iBAAiB,MAAQkM,EAAAA,gBAAAA,CAAAA;AAC1C,YAAA,QAAA,gBAAAtM,IAACqN,CAAAA,KAAAA,EAAAA;gBAAInO,SAAU,EAAA,gCAAA;;oBACZyN,kBACCpK,CAAAA,KAAAA,EACA2K,qBAA0B7C,KAAAA,qBAAAA,CAAsBiD,OAAO,CAAA;AAExDJ,oBAAAA,qBAAAA,IAAyB7C,qBAAsBiD,CAAAA,OAAO,iBACrD3N,GAAA,CAACgM,kBACC,EAAA,EAAA,CAAA,GAAA,IAAA;oBACHuB,qBAAyB7C,IAAAA,qBAAAA,CAAsB8C,MAAM,iBACpDxN,GAAC6K,CAAAA,WAAAA,EAAAA;wBAAYK,UAAYqC,EAAAA,qBAAAA;AACvB,qBAAA,CAAA,GAAA,IAAA;;;;;AAKd,CAAA;;ACxHA;;;;;;;;IASA,MAAMK,YAAY,CAAC,EAAErO,SAAS,EAAEC,IAAI,EAAEwI,QAAQ,EAAkB,GAAA;AAC9D,IAAA,qBACEhI,GAACC,CAAAA,MAAAA,EAAAA;QAAKV,SAAWA,EAAAA,SAAAA;AACf,QAAA,QAAA,gBAAAS,GAACE,CAAAA,IAAAA,EAAAA;YAAKV,IAAMA,EAAAA,IAAAA;YAAMqO,QAAQ,EAAA,IAAA;AACvB7F,YAAAA,QAAAA,EAAAA,QAAAA;;;AAIT;;ACtBA,MAAM8F,cAAiB,GAAA,CAAC,EACtBxL,GAAG,EACH9B,KAAK,EACLkC,WAAW,EACXqL,WAAW,EAAE,EACbpN,UAAa,GAAA,EAAE,EACG,GAAA;AAClB,IAAA,MAAMgB,kBAAqB,GAAA;QACzBC,IAAM,EAAA,mIAAA;QACNsB,IAAM,EAAA,sBAAA;QACN1C,KAAO,EAAA,+DAAA;QACPwN,SACE,EAAA,qGAAA;AACJ,KAAA,CAAA;IAEA,MAAMrB,gBAAAA,GAAmB/L,+BACvBe,kBACAhB,EAAAA,UAAAA,CAAAA,CAAAA;AAGF,IAAA,qBACEN,IAAC0B,CAAAA,KAAAA,EAAAA;AACCxC,QAAAA,SAAAA,EAAWkB,iBAAiB,MAAQkM,EAAAA,gBAAAA,CAAAA;QACpCE,IAAK,EAAA,YAAA;;0BAEL7M,GAAC4N,CAAAA,SAAAA,EAAAA;AACCrO,gBAAAA,SAAAA,EAAWkB,iBAAiB,MAAQkM,EAAAA,gBAAAA,CAAAA;gBACpCnN,IAAK,EAAA,GAAA;AAEL,gBAAA,QAAA,gBAAAQ,GAACqC,CAAAA,KAAAA,EAAAA;oBACC9C,SAAU,EAAA,qBAAA;oBACV0O,IAAI,EAAA,IAAA;AACJ3L,oBAAAA,GAAAA,EAAK,CAAC,EAAEyL,QAAS,CAAA,EAAEzL,IAAI,CAAC;AACxBG,oBAAAA,GAAAA,EAAKC,eAAelC,KAAS,IAAA,uBAAA;;;AAGhCA,YAAAA,KAAAA,kBACCR,GAAC+B,CAAAA,KAAAA,EAAAA;AACCxC,gBAAAA,SAAAA,EAAWkB,iBAAiB,OAASkM,EAAAA,gBAAAA,CAAAA;gBACrCE,IAAK,EAAA,YAAA;AAEL,gBAAA,QAAA,gBAAA7M,GAAC4N,CAAAA,SAAAA,EAAAA;AACCrO,oBAAAA,SAAAA,EAAWkB,iBAAiB,WAAakM,EAAAA,gBAAAA,CAAAA;oBACzCnN,IAAM,EAAA,GAAA;AAELgB,oBAAAA,QAAAA,EAAAA,KAAAA;;;;;AAMb,CAAA;;ACjDA;;;;;;;;AAQC,IACD,MAAM0N,mBAAsB,GAAA,CAAC,EAC3B1D,OAAO,EACPM,IAAI,EACJtL,IAAI,EACJ6M,IAAI,EACJ8B,UAAa,GAAA,MAAM,EACnBxN,UAAa,GAAA,EAAE,EACO,GAAA;AACtB,IAAA,MAAMgB,kBAAqB,GAAA;QACzBC,IAAM,EAAA,CAAC,8HAA8H,CAAC;QACtI4J,KAAO,EAAA,uCAAA;QACPV,IAAM,EAAA,aAAA;AACN,QAAA,GAAGP,YAAY;AACjB,KAAA,CAAA;IAEA,MAAMoC,gBAAAA,GAAmB/L,+BACvBe,kBACAhB,EAAAA,UAAAA,CAAAA,CAAAA;IAEF,qBACEX,GAAA,CAACmD,eAAMC,QAAQ,EAAA;AACb,QAAA,QAAA,gBAAApD,GAACuL,CAAAA,OAAAA,EAAAA;YACCC,KAAOhB,EAAAA,OAAAA;YACPmB,SAAS,EAAA,IAAA;YACTF,QAAS,EAAA,QAAA;YACT2C,SAAW,EAAA,CAAA;YACX1C,SAAS,EAAA,IAAA;YACT2C,MAAQ,EAAA,IAAA;YACRC,CAAG,EAAA,GAAA;AAEH,YAAA,QAAA,gBAAAtO,GAACE,CAAAA,IAAAA,EAAAA;gBACCV,IAAM,EAAA,CAAC;AAELK,gBAAAA,OAAAA,CAAQC,GAAG,CAACC,2BAA2B,IACvCF,OAAQC,CAAAA,GAAG,CAACC,2BAA2B,KAAK,GACxCF,GAAAA,OAAAA,CAAQC,GAAG,CAACC,2BAA2B,GACvC,EACL,CAAA,EAAEP,KAAK,CAAC;AAET,gBAAA,QAAA,gBAAAa,IAAC0B,CAAAA,KAAAA,EAAAA;AACCxC,oBAAAA,SAAAA,EAAWkB,iBAAiB,MAAQkM,EAAAA,gBAAAA,CAAAA;oBACpCE,IAAK,EAAA,YAAA;;sCAEL7M,GAAC8M,CAAAA,IAAAA,EAAAA;4BACCtK,MAAQ2L,EAAAA,UAAAA;4BACRrD,IAAMA,EAAAA,IAAAA;AACNvL,4BAAAA,SAAAA,EAAWkB,iBAAiB,MAAQkM,EAAAA,gBAAAA,CAAAA;;sCAEtC3M,GAAC+M,CAAAA,GAAAA,EAAAA;AAAExN,4BAAAA,SAAAA,EAAWkB,iBAAiB,OAASkM,EAAAA,gBAAAA,CAAAA;AACrCN,4BAAAA,QAAAA,EAAAA,IAAAA;;;;;;;AAOf,CAAA;;AClEA;;;;;;;AAOC,IACKkC,MAAAA,aAAAA,GAAgB,CAAC,EACrBnM,IAAO+D,GAAAA,SAAS,EAChBvD,KAAAA,GAAQ,EAAE,EACVjC,UAAa,GAAA,EAAE,EACC,GAAA;AAChB,IAAA,MAAMgB,kBAAqB,GAAA;QACzBC,IAAM,EAAA,iDAAA;QACN4M,eAAiB,EAAA,8CAAA;QACjBC,KACE,EAAA,uEAAA;AACJ,KAAA,CAAA;IAEA,MAAM9B,gBAAAA,GAAmB/L,+BACvBe,kBACAhB,EAAAA,UAAAA,CAAAA,CAAAA;AAGF,IAAA,MAAM4F,MAASC,GAAAA,SAAAA,EAAAA,CAAAA;AACf,IAAA,MAAM,CAACkB,OAASgH,EAAAA,UAAAA,CAAW,GAAGpJ,QAAAA,CAASiB,OAAO4E,QAAQ,CAAA,CAAA;IACtD1D,SAAU,CAAA,IAAA;AACRiH,QAAAA,UAAAA,CAAWnI,OAAO4E,QAAQ,CAAA,CAAA;KACzB,EAAA;AAAC5E,QAAAA,MAAAA,CAAO4E,QAAQ;AAAC,KAAA,CAAA,CAAA;AAEpB,IAAA,qBACE9K,IAAC0B,CAAAA,KAAAA,EAAAA;AAAIxC,QAAAA,SAAAA,EAAWkB,iBAAiB,MAAQkM,EAAAA,gBAAAA,CAAAA;;0BACvC3M,GAAC+B,CAAAA,KAAAA,EAAAA;AACCxC,gBAAAA,SAAAA,EAAW,CAAC,8CAA8C,EAAEkB,gBAC1D,CAAA,MAAA,EACAkM,kBACA,CAAC;AAEFvK,gBAAAA,QAAAA,EAAAA,IAAAA,kBAAQpC,GAAC8N,CAAAA,cAAAA,EAAAA;AAAqB,oBAAA,GAAG1L,IAAI;;;0BAExCpC,GAAC+B,CAAAA,KAAAA,EAAAA;gBAAIxC,SAAU,EAAA,gBAAA;;0BACfS,GAAC+B,CAAAA,KAAAA,EAAAA;gBACCxC,SAAW,EAAA,CAAC,eAAe,EAAEqD,KAAOT,EAAAA,MAAAA,CAAO,CAAC,EAAE1B,gBAAAA,CAC5C,iBACAkM,EAAAA,gBAAAA,CAAAA,CACA,CAAC;0BAEF/J,KAAMZ,CAAAA,GAAG,CAAC,CAAC0B,CAAGxB,EAAAA,KAAAA,GAAAA;AACb,oBAAA,MAAMyM,aACJjH,GAAAA,OAAAA,KAAYhE,CAAElE,CAAAA,IAAI,GACd,0CACA,GAAA,EAAA,CAAA;AACN,oBAAA,qBACEQ,GAAC+B,CAAAA,KAAAA,EAAAA;AAECxC,wBAAAA,SAAAA,EAAW,CAAC,gDAAgD,EAAEoP,aAAAA,CAAc,CAAC;AAE7E,wBAAA,QAAA,gBAAA3O,GAACkO,CAAAA,mBAAAA,EAAAA;AACC1D,4BAAAA,OAAAA,EAAS9G,EAAE8G,OAAO;AAClBM,4BAAAA,IAAAA,EAAMpH,EAAEoH,IAAI;AACZtL,4BAAAA,IAAAA,EAAMkE,EAAElE,IAAI;AACZ6M,4BAAAA,IAAAA,EAAM3I,EAAE2I,IAAI;AACZ1L,4BAAAA,UAAAA,EAAY+C,EAAE/C,UAAU;;AARrB,qBAAA,EAAA,CAAC,EAAE+C,CAAE2I,CAAAA,IAAI,CAAC,CAAC,EAAEnK,MAAM,CAAC,CAAA,CAAA;AAY/B,iBAAA,CAAA;;;;AAIR;;ACpEA,MAAM0M,UAAa,GAAA,CAAC,EAAEhM,KAAK,EAAmB,GAAA;IAC5C,qBACE5C,GAAA,CAACmD,eAAMC,QAAQ,EAAA;AACb,QAAA,QAAA,gBAAA/C,IAACwO,CAAAA,IAAAA,EAAAA;;AACC,8BAAA7O,GAAA,CAAC6O,KAAKC,MAAM,EAAA;AACV,oBAAA,QAAA,gBAAA9O,GAACuL,CAAAA,OAAAA,EAAAA;wBAAQC,KAAO,EAAA,aAAA;wBACPG,SAAS,EAAA,IAAA;wBACTC,KAAM,EAAA,MAAA;wBACNjL,UAAY4J,EAAAA,YAAAA;wBACZkB,QAAS,EAAA,QAAA;wBAASC,SAAS,EAAA,IAAA;AACpC,wBAAA,QAAA,gBAAA1L,GAACyM,CAAAA,QAAAA,EAAAA;AACC,4BAAA,QAAA,gBAAAzM,GAAC+O,CAAAA,qBAAAA,EAAAA;gCAAS/D,IAAM,EAAA,SAAA;;;;;AAIpB,8BAAAhL,GAAA,CAAC6O,KAAKG,QAAQ,EAAA;8BACXpM,KAAMZ,CAAAA,GAAG,CAAC,CAAC0B,CAAGxB,EAAAA,KAAAA,GAAAA;wBACb,qBACElC,GAAA,CAAC6O,KAAKI,IAAI,EAAA;AACR,4BAAA,QAAA,gBAAAjP,GAACE,CAAAA,IAAAA,EAAAA;AAAKV,gCAAAA,IAAAA,EAAMkE,EAAElE,IAAI;AAChB,gCAAA,QAAA,gBAAAQ,GAACkP,CAAAA,IAAAA,EAAAA;AAAMxL,oCAAAA,QAAAA,EAAAA,CAAAA,CAAE2I,IAAI;;;AAFD,yBAAA,EAAA,CAAC,EAAE3I,CAAE2I,CAAAA,IAAI,CAAC,CAAC,EAAEnK,MAAM,CAAC,CAAA,CAAA;AAMxC,qBAAA,CAAA;;;;;AAKV,CAAA;;ACtBA,MAAMiN,uBAAAA,GAA0B,CAAC,EAC/BC,OAAO,EACPxM,KAAK,EACLR,IAAO+D,GAAAA,SAAS,EAChBkJ,SAAAA,iBAAYrP,GAAC+K,CAAAA,cAAAA,EAAAA;IAAUC,IAAM,EAAA,SAAA;EAAa,EAC1CrK,UAAAA,GAAa,EAAE,EACc,GAAA;AAC7B,IAAA,MAAMgB,kBAAqB,GAAA;QACzBC,IAAM,EAAA,6CAAA;QACN4M,eAAiB,EAAA,wDAAA;QACjBC,KACE,EAAA,uEAAA;AACJ,KAAA,CAAA;IAEA,MAAM9B,gBAAAA,GAAmB/L,+BACvBe,kBACAhB,EAAAA,UAAAA,CAAAA,CAAAA;AAGF,IAAA,qBACEN,IAAC0B,CAAAA,KAAAA,EAAAA;AACCxC,QAAAA,SAAAA,EAAW,CAAC,qBAAqB,EAAEkB,gBACjC,CAAA,MAAA,EACAkM,kBACA,CAAC;;0BAEH3M,GAAC+B,CAAAA,KAAAA,EAAAA;AACCxC,gBAAAA,SAAAA,EAAW,CAAC,8CAA8C,EAAEkB,gBAC1D,CAAA,MAAA,EACAkM,kBACA,CAAC;AAEFvK,gBAAAA,QAAAA,EAAAA,IAAAA,kBAAQpC,GAAC8N,CAAAA,cAAAA,EAAAA;AAAqB,oBAAA,GAAG1L,IAAI;;;0BAExCpC,GAAC+B,CAAAA,KAAAA,EAAAA;AACCxC,gBAAAA,SAAAA,EAAW,CAAC,8CAA8C,EAAEkB,gBAC1D,CAAA,iBAAA,EACAkM,kBACA,CAAC;0BAEF/J,KAAOZ,EAAAA,GAAAA,CAAI,CAAC0B,CAAGxB,EAAAA,KAAAA,GAAAA;AACd,oBAAA,qBACElC,GAAC+B,CAAAA,KAAAA,EAAAA;AACC,wBAAA,QAAA,gBAAA/B,GAACkO,CAAAA,mBAAAA,EAAAA;AACC1D,4BAAAA,OAAAA,EAAS9G,EAAE8G,OAAO;AAClBM,4BAAAA,IAAAA,EAAMpH,EAAEoH,IAAI;AACZtL,4BAAAA,IAAAA,EAAMkE,EAAElE,IAAI;AACZ6M,4BAAAA,IAAAA,EAAM3I,EAAE2I,IAAI;AACZ1L,4BAAAA,UAAAA,EAAY+C,EAAE/C,UAAU;;AANlB,qBAAA,EAAA,CAAC,EAAE+C,CAAE2I,CAAAA,IAAI,CAAC,CAAC,EAAEnK,MAAM,CAAC,CAAA,CAAA;AAUlC,iBAAA,CAAA;;0BAEFlC,GAAC+B,CAAAA,KAAAA,EAAAA,EAAAA,CAAAA;0BACD1B,IAAC0B,CAAAA,KAAAA,EAAAA;gBAAIxC,SAAU,EAAA,qCAAA;;AACZ6P,oBAAAA,OAAAA,CAAQ7B,qBAAqB,KAAK7C,qBAAsBiD,CAAAA,OAAO,iBAC9D3N,GAAC6K,CAAAA,WAAAA,EAAAA;wBACCC,IAAMuE,EAAAA,SAAAA;wBACNpE,QAAQ,EAAA,IAAA;AACR1L,wBAAAA,SAAAA,EAAW,CAAC,EAAEkB,gBAAiB,CAAA,OAAA,EAASkM,kBAAkB,CAAC;wBAC3DnC,OAAS,EAAA,sBAAA;AACTU,wBAAAA,UAAAA,EAAYkE,OAAS7B,EAAAA,qBAAAA;AAErB,qBAAA,CAAA,GAAA,IAAA;kCACJvN,GAAC4O,CAAAA,UAAAA,EAAAA;AAAWhM,wBAAAA,KAAAA,EAAOwM,QAAQxM,KAAK;;;;;;AAIxC,CAAA;;ACjFA;;;;;;;;IASA,MAAM0M,MAAS,GAAA,CAAC,EAAEC,GAAG,EAAEC,UAAU,EAAEC,IAAO,GAAA,UAAU,EAAe,GAAA;IACjE,OAAOA,IAAAA,KAAS,6BACdzP,GAAC+B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAU,EAAA,QAAA;AACb,QAAA,QAAA,gBAAAS,GAACmP,CAAAA,uBAAAA,EAAAA;AACC/M,YAAAA,IAAAA,EAAMoN,WAAWpN,IAAI;AACrB5B,YAAAA,KAAAA,EAAOgP,WAAWhP,KAAK;AACvBoC,YAAAA,KAAAA,EAAO4M,WAAW5M,KAAK;YACvBjC,UAAY,EAAA;AAAE,gBAAA,GAAG6O,WAAW7O,UAAU;AAAC,aAAA;YACvCyO,OAASG,EAAAA,GAAAA;;AAGXE,KAAAA,CAAAA,GAAAA,IAAAA,KAAS,2BACXzP,GAACmP,CAAAA,uBAAAA,EAAAA;AACC/M,QAAAA,IAAAA,EAAMoN,WAAWpN,IAAI;AACrB5B,QAAAA,KAAAA,EAAOgP,WAAWhP,KAAK;QACvBG,UAAY,EAAA;AAAE,YAAA,GAAG6O,WAAW7O,UAAU;AAAC,SAAA;QACvCyO,OAASG,EAAAA,GAAAA;uBAGXlP,IAAC0B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAU,EAAA,OAAA;;0BACbS,GAACsN,CAAAA,MAAAA,EAAAA;AACC1K,gBAAAA,KAAAA,EAAO2M,IAAI3M,KAAK;AAChB2K,gBAAAA,qBAAAA,EAAuBgC,GAAKhC,EAAAA,qBAAAA;gBAC5B5M,UAAY,EAAA;AAAE,oBAAA,GAAG4O,IAAI5O,UAAU;AAAC,iBAAA;;0BAElCX,GAACuO,CAAAA,aAAAA,EAAAA;AACCnM,gBAAAA,IAAAA,EAAMoN,WAAWpN,IAAI;AACrB5B,gBAAAA,KAAAA,EAAOgP,WAAWhP,KAAK;AACvBoC,gBAAAA,KAAAA,EAAO4M,WAAW5M,KAAK;;;;AAI/B;;ACzCA,MAAM8M,mBAAmB,CAAC,EAAEC,SAAS,EAAE,GAAGC,KAA8B,EAAA,GAAA;AACtE,IAAA,qBACE5P,GAAC6P,CAAAA,MAAAA,EAAAA;AACE,QAAA,GAAGD,KAAK;QACTE,SAAU,EAAA,GAAA;AACVlE,QAAAA,KAAAA,EAAO+D,YAAY,OAAU,GAAA,MAAA;AAC7BI,QAAAA,OAAAA,EAASJ,YAAY,QAAW,GAAA,SAAA;QAChC3E,IAAK,EAAA,IAAA;QACL6B,IAAK,EAAA,YAAA;QACLtN,SAAU,EAAA,4LAAA;;AAGhB;;ACVA,MAAMyQ,aAAAA,GAAgB,CAAC,EACrBpN,KAAAA,GAAQ,EAAE,EACVjC,UAAAA,GAAa,EAAE,EACI,GAAA;AACnB,IAAA,MAAMgB,kBAAqB,GAAA;QACzB6M,eAAiB,EAAA,2CAAA;AACnB,KAAA,CAAA;IAEA,MAAM7B,gBAAAA,GAAmB/L,+BAA+Be,kBAAoBhB,EAAAA,UAAAA,CAAAA,CAAAA;AAE5E,IAAA,qBACEX,GAAC+B,CAAAA,KAAAA,EAAAA;AACCxC,QAAAA,SAAAA,EAAW,CAAC,sDAAsD,EAAEkB,gBAClE,CAAA,iBAAA,EACAkM,kBACA,CAAC;kBAEF/J,KAAMZ,CAAAA,GAAG,CAAC,CAAC0B,CAAGxB,EAAAA,KAAAA,GAAAA;AACb,YAAA,qBACElC,GAAC+B,CAAAA,KAAAA,EAAAA;AACC,gBAAA,QAAA,gBAAA/B,GAACkO,CAAAA,mBAAAA,EAAAA;AACC1D,oBAAAA,OAAAA,EAAS9G,EAAE8G,OAAO;AAClBM,oBAAAA,IAAAA,EAAMpH,EAAEoH,IAAI;AACZtL,oBAAAA,IAAAA,EAAMkE,EAAElE,IAAI;AACZ6M,oBAAAA,IAAAA,EAAM3I,EAAE2I,IAAI;AACZ1L,oBAAAA,UAAAA,EAAY+C,EAAE/C,UAAU;;AANlB,aAAA,EAAA,CAAC,EAAE+C,CAAE2I,CAAAA,IAAI,CAAC,CAAC,EAAEnK,MAAM,CAAC,CAAA,CAAA;AAUlC,SAAA,CAAA;;AAGN,CAAA;;ACrBA,MAAM+N,aAAgB,GAAA,CAAC,EACrBC,WAAW,EACXC,WAAW,EACXC,SAAS,EACTC,UAAU,EACVrI,QAAQ,EAC8B,GAAA;IACtC,MAAMsI,gBAAAA,GAAmBF,SAAWG,EAAAA,KAAAA,GAChC,6BACA,GAAA,WAAA,CAAA;AACJ,IAAA,qBACElQ,IAAC0B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAU,EAAA,wCAAA;;0BACbc,IAACmQ,CAAAA,IAAAA,EAAAA;;kCACCxQ,GAACQ,CAAAA,OAAAA,EAAAA;AAAO6P,wBAAAA,QAAAA,EAAAA,UAAAA,CAAW7P,KAAK;;kCACxBR,GAACyQ,CAAAA,MAAAA,EAAAA;wBACCC,QAAS,EAAA,UAAA;AACTC,wBAAAA,OAAAA,EAASN,WAAWM,OAAO;AACtBN,qBAAAA,EAAAA,UAAAA,CAAW3P,GAAG,CAAA;;;0BAGvBL,IAACiP,CAAAA,MAAAA,EAAAA;AAAQ,gBAAA,GAAGY,WAAW;;kCACrBlQ,GAACQ,CAAAA,OAAAA,EAAAA;AAAO6P,wBAAAA,QAAAA,EAAAA,UAAAA,CAAW7P,KAAK;;kCACxBR,GAACyQ,CAAAA,MAAAA,EAAAA;wBACCC,QAAS,EAAA,UAAA;AACTC,wBAAAA,OAAAA,EAASN,WAAWM,OAAO;AACtBN,qBAAAA,EAAAA,UAAAA,CAAW3P,GAAG,CAAA;;;YAGtBwP,WAAYT,CAAAA,IAAI,KAAK,UAAA,iBACpBpP,IAAC0B,CAAAA,KAAAA,EAAAA;gBAAIxC,SAAU,EAAA,WAAA;;kCACbS,GAACgQ,CAAAA,aAAAA,EAAAA;wBACCpN,KAAOsN,EAAAA,WAAAA,CAAYV,UAAU,CAAC5M,KAAK;wBACnCjC,UAAYuP,EAAAA,WAAAA,CAAYV,UAAU,CAAC7O,UAAU;;kCAE/CX,GAAC4Q,CAAAA,MAAAA,EAAAA;wBAAKrR,SAAW+Q,EAAAA,gBAAAA;AAAmBtI,wBAAAA,QAAAA,EAAAA,QAAAA;;;+BAGtChI,GAAC4Q,CAAAA,MAAAA,EAAAA;gBAAKrR,SAAW+Q,EAAAA,gBAAAA;AAAmBtI,gBAAAA,QAAAA,EAAAA,QAAAA;;0BAEtChI,GAACsB,CAAAA,MAAAA,EAAAA;AAAQ,gBAAA,GAAG6O,WAAW;;;;AAG7B;;;;ACpDO,MAAMU,kBAAAA,GAAmB,CAACC,IAAAA,GAAiB,CAACC,GAAAA,GAAAA;;AAEjD,QAAA,OAAOC,QAAS,CAAA;YAAEtM,IAAMqM,EAAAA,GAAAA;YAAKD,IAAMA,EAAAA,IAAAA;AAAK,SAAA,CAAA,CAAA;KACxC,CAAA;AAQK,MAAMG,UAAa,GAAA,CACxBC,OACAC,EAAAA,UAAAA,GAAAA;AAEA,IAAA,MAAMC,cAAiBD,GAAAA,UAAAA,CAAWE,aAAa,CAACC,IAAI,CAClD,CAACC,QAAAA,GAAaA,QAASlF,CAAAA,IAAI,KAAK6E,OAAAA,CAAQK,QAAQ,CAAA,CAAA;IAElD,IAAIH,cAAAA,KAAmBjL,WACrB,OAAO;QACLyF,KAAO,EAAA,MAAA;AACP4F,QAAAA,OAAAA,EAASL,YAAYM,eAAmB,IAAA,KAAA;AACxCjG,QAAAA,KAAAA,EAAO0F,QAAQ7E,IAAI;AACrB,KAAA,CAAA;IACF,OAAO;AACLT,QAAAA,KAAAA,EAAOwF,eAAexF,KAAK;AAC3B4F,QAAAA,OAAAA,EAASJ,cAAgBI,EAAAA,OAAAA,GAAU,IAAOJ,GAAAA,cAAAA,CAAeI,OAAO;QAChEhG,KAAO4F,EAAAA,cAAAA,EAAgBM,WAAeR,IAAAA,OAAAA,CAAQ7E,IAAI;AACpD,KAAA,CAAA;AACF,EAAE;AAWK,MAAMsF,gCAAgC,CAACC,MAAAA,GAAAA;AAC5C,IAAA,MAAMC,cAAiB,GAAA,QAAA,CAAA;AACvB,IAAA,MAAMC,oBACJF,GAAAA,MAAAA,EAAQG,QAAUC,EAAAA,UAAAA,EAAYF,oBAAwBD,IAAAA,cAAAA,CAAAA;AACxD,IAAA,OAAOC,oBAAyB,KAAA,QAAA,CAAA;AAClC,CAAE;;AChDF,MAAMG,mBAAAA,GAA6C,CACjDjO,KAAOkO,EAAAA,MAAAA,GAAAA;AAEP,IAAA,IAAIlO,UAAUmC,SAAanC,IAAAA,KAAAA,KAAU,IAAQmO,IAAAA,QAAAA,CAASnO,WAAW,EAAI,EAAA;AACnE,QAAA,qBACE3D,IAAC6O,CAAAA,IAAAA,EAAAA;;AACE,gBAAA,CAAC,EACAgD,MAAUA,IAAAA,MAAAA,EAAQE,sBACdF,MAAQE,EAAAA,mBAAAA,GACR,GACL,CAAC;AAAE,gBAAA,GAAA;;;AAGV,KAAA;AACA,IAAA,qBAAO/R,IAAC6O,CAAAA,IAAAA,EAAAA;;YAAMiD,QAASnO,CAAAA,KAAAA,CAAAA;AAAO,YAAA,UAAA;;;AAChC,CAAA,CAAA;AAMO,MAAMqO,4BAAAA,CAAAA;IAOX,WAAsB,EAAA;AALdC,QAAAA,IAAAA,CAAAA,mBAAAA,GAGJ,EAAC,CAAA;QAGH,IAAI,CAACA,mBAAmB,GAAG,EAAC,CAAA;AAC9B,KAAA;AAEA,IAAA,OAAOC,WAA4C,GAAA;QACjD,IAAI,CAACF,4BAA6BG,CAAAA,QAAQ,EAAE;YAC1CH,4BAA6BG,CAAAA,QAAQ,GACnC,IAAIH,4BAAAA,EAAAA,CAAAA;AACR,SAAA;AACA,QAAA,OAAOA,6BAA6BG,QAAQ,CAAA;AAC9C,KAAA;AAEA,IAAA,OAAOC,eACLhD,CAAAA,IAAY,EACZiD,YAAoB,EACE;QACtB,OACEL,4BAAAA,CAA6BE,WAAW,EAAGD,CAAAA,mBAAmB,CAAC7C,IAAK,CAAA,CAClEiD,aACD,IAAIT,mBAAAA,CAAAA;AAET,KAAA;AAEA,IAAA,OAAOU,qBACLlD,IAAY,EACZiD,YAAoB,EACpBE,IAA0B,EACpB;AACN,QAAA,IACEP,6BAA6BE,WAAW,EAAA,CAAGD,mBAAmB,CAAC7C,IAAAA,CAAK,KACpEtJ,SACA,EAAA;AACAkM,YAAAA,4BAAAA,CAA6BE,WAAW,EAAGD,CAAAA,mBAAmB,CAAC7C,IAAAA,CAAK,GAAG,EAAC,CAAA;AAC1E,SAAA;AACA4C,QAAAA,4BAAAA,CAA6BE,WAAW,EAAGD,CAAAA,mBAAmB,CAAC7C,IAAK,CAAA,CAClEiD,aACD,GAAGE,IAAAA,CAAAA;AACN,KAAA;IAEA,OAAOC,2BAAAA,CACLC,OAAyD,EACnD;AACN7R,QAAAA,MAAAA,CAAOC,IAAI,CAAC4R,OAAS9Q,CAAAA,CAAAA,GAAG,CAAC,CAACyN,IAAAA,GAAAA;YACxBxO,MAAO8R,CAAAA,OAAO,CAACD,OAAO,CAACrD,IAAAA,CAAK,CAAEzN,CAAAA,GAAG,CAAC,CAAC,CAACqK,IAAAA,EAAMuG,IAAK,CAAA,GAAA;gBAC7CP,4BAA6BM,CAAAA,oBAAoB,CAAClD,IAAAA,EAAMpD,IAAMuG,EAAAA,IAAAA,CAAAA,CAAAA;AAChE,aAAA,CAAA,CAAA;AACF,SAAA,CAAA,CAAA;AACF,KAAA;AACF,CAAA;AAEA;;;;;AAKC,IACM,MAAMI,0BAA6B,GAAA,CACxCvD,IAAO,GAAA,QAAQ,EACfiD,YAAAA,GAAe,SAAS,EACxBR,MAAqB,GAAA,EAAE,GAAA;AAEvB,IAAA,IAAI,CAACzC,IAAM,EAAA;QACT,OAAOwC,mBAAAA,CAAAA;AACT,KAAA;AACA,IAAA,MAAMW,IAAOP,GAAAA,4BAAAA,CAA6BI,eAAe,CAAChD,IAAMiD,EAAAA,YAAAA,CAAAA,CAAAA;AAChE,IAAA,IAAI,CAACE,IAAM,EAAA;QACT,OAAOX,mBAAAA,CAAAA;AACT,KAAA;IACA,OAAO,CAACgB,SAA4BL,GAAAA,IAAAA,CAAKK,SAAWf,EAAAA,MAAAA,CAAAA,CAAAA;AACtD,CAAE;;ACzFF,MAAMgB,iBAAoB,GAAA,CACxB,EAAEnC,GAAG,EAA2B,EAChCoC,kBAAAA,GAAAA;AAEA,IAAA,IAAI,CAACA,kBAAoB,EAAA;QACvB,qBAAOnT,GAAA,CAACmD,eAAMC,QAAQ,EAAA,EAAA,CAAA,CAAA;AACxB,KAAA;AACA,IAAA,MAAMY,QAAQgN,QAAS,CAAA;AACrBtM,QAAAA,IAAAA,EAAMqM,IAAIqC,QAAQ;QAClBtC,IAAMqC,EAAAA,kBAAAA,CAAmBE,KAAK,IAAI,EAAA;AACpC,KAAA,CAAA,CAAA;AAEA,IAAA,qBACErT,GAACsT,CAAAA,GAAAA,EAAAA;QACC9B,OAAS,EAAA,MAAA;QACTlD,CAAG,EAAA,MAAA;AAEH,QAAA,QAAA,gBAAAtO,GAACkP,CAAAA,IAAAA,EAAAA;YAAKlE,IAAK,EAAA,IAAA;YAAKuI,SAAW,EAAA,CAAA;AACxBvP,YAAAA,QAAAA,EAAAA,KAAAA;;;AAIT,CAAA,CAAA;AAEO,MAAMwP,wCAA2C,GAAA;IACtDC,MAAQ,EAAA;QACNC,OAASR,EAAAA,iBAAAA;AACX,KAAA;AACF,CAAE,CAAA;AAEK,MAAMS,qBAAqBT,iBAAkB;;AC1B7C,MAAMU,2BAAAA,CAAAA;IAKX,WAAsB,EAAA;AAHdC,QAAAA,IAAAA,CAAAA,kBAAAA,GACN,EAAC,CAAA;QAGD,IAAI,CAACA,kBAAkB,GAAG,EAAC,CAAA;AAC7B,KAAA;AAEA,IAAA,OAAOtB,WAA2C,GAAA;QAChD,IAAI,CAACqB,2BAA4BpB,CAAAA,QAAQ,EAAE;YACzCoB,2BAA4BpB,CAAAA,QAAQ,GAAG,IAAIoB,2BAAAA,EAAAA,CAAAA;AAC7C,SAAA;AACA,QAAA,OAAOA,4BAA4BpB,QAAQ,CAAA;AAC7C,KAAA;AAEA,IAAA,OAAOsB,cACLrE,CAAAA,IAAY,EACZiD,YAAoB,EACC;QACrB,IAAI,EAAEjD,IAAQmE,IAAAA,2BAAAA,CAA4BrB,WAAW,EAAGsB,CAAAA,kBAAkB,CAAG,EAAA;YAC3EE,OAAQC,CAAAA,GAAG,CAAC,kCAAoCvE,EAAAA,IAAAA,CAAAA,CAAAA;YAChD,OAAOkE,kBAAAA,CAAAA;AACT,SAAA;QAEA,OACEC,2BAAAA,CAA4BrB,WAAW,EAAGsB,CAAAA,kBAAkB,CAACpE,IAAK,CAAA,CAChEiD,aACD,IAAIiB,kBAAAA,CAAAA;AAET,KAAA;AAEA,IAAA,OAAOM,oBACLxE,IAAY,EACZiD,YAAoB,EACpBE,IAAyB,EACnB;AACN,QAAA,IACEgB,4BAA4BrB,WAAW,EAAA,CAAGsB,kBAAkB,CAACpE,IAAAA,CAAK,KAClEtJ,SACA,EAAA;AACAyN,YAAAA,2BAAAA,CAA4BrB,WAAW,EAAGsB,CAAAA,kBAAkB,CAACpE,IAAAA,CAAK,GAAG,EAAC,CAAA;AACxE,SAAA;AACAmE,QAAAA,2BAAAA,CAA4BrB,WAAW,EAAGsB,CAAAA,kBAAkB,CAACpE,IAAK,CAAA,CAChEiD,aACD,GAAGE,IAAAA,CAAAA;AACN,KAAA;IAEA,OAAOsB,0BAAAA,CACLpB,OAAwD,EAClD;AACN7R,QAAAA,MAAAA,CAAOC,IAAI,CAAC4R,OAAS9Q,CAAAA,CAAAA,GAAG,CAAC,CAACyN,IAAAA,GAAAA;YACxBxO,MAAO8R,CAAAA,OAAO,CAACD,OAAO,CAACrD,IAAAA,CAAK,CAAEzN,CAAAA,GAAG,CAAC,CAAC,CAACqK,IAAAA,EAAMuG,IAAK,CAAA,GAAA;gBAC7CgB,2BAA4BK,CAAAA,mBAAmB,CAACxE,IAAAA,EAAMpD,IAAMuG,EAAAA,IAAAA,CAAAA,CAAAA;AAC9D,aAAA,CAAA,CAAA;AACF,SAAA,CAAA,CAAA;AACF,KAAA;AACF,CAAA;AAEA;;;IAIO,MAAMuB,yBAAAA,GAA4B,CACvChB,kBAAAA,GAAAA;IAEA,IAAI,CAACA,oBAAoBiB,WAAa,EAAA;QACpC,OAAO,CAACrD,GAAsB4C,GAAAA,kBAAAA,CAAmB5C,GAAKoC,EAAAA,kBAAAA,CAAAA,CAAAA;AACxD,KAAA;AACA,IAAA,MAAMP,OAAOgB,2BAA4BE,CAAAA,cAAc,CACrDX,kBAAoBiB,EAAAA,WAAAA,EACpBjB,oBAAoBkB,QAAY,IAAA,SAAA,CAAA,CAAA;AAElC,IAAA,IAAI,CAACzB,IAAM,EAAA;AACT,QAAA,MAAM,IAAIlM,KAAAA,CAAM,CAAC,qDAAqD,EAAGyM,kBAAAA,EAAoBiB,WAAa,CAAA,kBAAkB,EAAGjB,kBAAAA,EAAoBkB,QAAY,IAAA,SAAA,CAAU,CAAC,CAAA,CAAA;AAC5K,KAAA;IACA,OAAO,CAACtD,GAAsB6B,GAAAA,IAAAA,CAAK7B,GAAKoC,EAAAA,kBAAAA,CAAAA,CAAAA;AAC1C,CAAE,CAAA;MAEWmB,6CAAgD,GAAA,IAAA;AAC3DV,IAAAA,2BAAAA,CAA4BM,0BAA0B,CACpDV,wCAAAA,CAAAA,CAAAA;AAEJ;;AC3FA,MAAMe,iCAAmBrO,aAAsC,CAAA;AAC7DsO,IAAAA,eAAAA,EAAiB,EAAC;AAClBC,IAAAA,eAAAA,EAAiB,IAAM,IAAA;AACvBC,IAAAA,YAAAA,EAAc,EAAC;AACjB,CAAA,CAAA,CAAA;AAEA,MAAMC,mBAAsB,GAAA,IAAA;IAC1B,MAAM3P,OAAAA,GAAU7B,cAAMsD,CAAAA,UAAU,CAAC8N,gBAAAA,CAAAA,CAAAA;AACjC,IAAA,IAAIvP,YAAYmB,SAAW,EAAA;AACzB,QAAA,MAAMO,KACJ,CAAA,kEAAA,CAAA,CAAA;AAEJ,KAAA;IACA,OAAO1B,OAAAA,CAAAA;AACT,EAAA;AAEA,MAAM4P,oBAAoB,CAAC,EACzB5M,QAAQ,EACR6M,oBAAoB,EAIrB,GAAA;AACC,IAAA,MAAM,CAACH,YAAcD,EAAAA,eAAAA,CAAgB,GAAGtR,cAAMmC,CAAAA,QAAQ,CAAa,EAAC,CAAA,CAAA;IAEpE,qBACEtF,GAAA,CAACuU,iBAAiBjK,QAAQ,EAAA;QACxBtG,KAAO,EAAA;YACLwQ,eAAiBK,EAAAA,oBAAAA;AACjBJ,YAAAA,eAAAA;AACAC,YAAAA,YAAAA;AACF,SAAA;AAEC1M,QAAAA,QAAAA,EAAAA,QAAAA;;AAGP;;ACuCO,MAAM8M,aAAa,CAACC,GAAAA,GAAAA;AACzB,IAAA,OAAOA,GAAOA,IAAAA,GAAAA,CAAIrU,GAAG,IAAIqU,IAAI/Q,KAAK,CAAA;AACpC,CAAE,CAAA;AAEK,MAAMgR,kBAAkB,CAACD,GAAAA,GAAAA;AAC9B,IAAA,OAAOA,OAAOE,KAAMC,CAAAA,OAAO,CAACH,GAAQA,CAAAA,IAAAA,GAAAA,CAAII,KAAK,CAACL,UAAAA,CAAAA,CAAAA;AAChD,CAAE,CAAA;AAqNK,MAAMM,sBAAsB,cAAe,CAAA;;AAGtCC,CAAAA,SAAAA,WAAAA,EAAAA;;;;;;GAAAA,WAAAA,KAAAA,WAAAA,GAAAA,EAAAA,CAAAA,CAAAA;;ACzSL,MAAMC,sBAAAA,GAAyB,CAAC,EAAEtR,KAAK,EAA2B,GAAA;AACvE,IAAA,IAAI,KAACA,KAA0BqR,WAAYE,CAAAA,OAAO,EAAE;AAClD,QAAA,qBACEvV,GAACwV,CAAAA,OAAAA,EAAAA;YAAY5J,KAAM,EAAA,OAAA;AAAQ,YAAA,QAAA,EAAA,gCAAA;;AAE/B,KAAA;AACA,IAAA,IAAI,KAAC5H,KAA0BqR,WAAYI,CAAAA,aAAa,EAAE;AACxD,QAAA,qBACEzV,GAAC0V,CAAAA,aAAAA,EAAAA;YAAiB9J,KAAM,EAAA,OAAA;AAAQ,YAAA,QAAA,EAAA,gCAAA;;AAIpC,KAAA;AACA,IAAA,IAAI,KAAC5H,KAA0BqR,WAAYM,CAAAA,UAAU,EAAE;AACrD,QAAA,qBACE3V,GAAC4V,CAAAA,QAAAA,EAAAA;YAAahK,KAAM,EAAA,OAAA;AAAQ,YAAA,QAAA,EAAA,gCAAA;;AAEhC,KAAA;AACA,IAAA,IAAI,KAAC5H,KAA0BqR,WAAYQ,CAAAA,YAAY,EAAE;AACvD,QAAA,qBACE7V,GAAC8V,CAAAA,MAAAA,EAAAA;YAAWlK,KAAM,EAAA,OAAA;AAAQ,YAAA,QAAA,EAAA,gCAAA;;AAE9B,KAAA;IACA,qBAAO5L,GAAA,CAACmD,eAAMC,QAAQ,EAAA,EAAA,CAAA,CAAA;AACxB,CAAE;;AChCF,MAAM2S,uBAA0B,GAAA,CAAA,CAAA;AAChC,MAAMC,wBAA2B,GAAA,CAAA,CAAA;AAE1B,MAAMC,UAAaC,GAAAA,SAAAA,CAAU,WAAa,CAAA,CAAA;AAEjD,MAAMC,cAAiB,GAAA;AAAC,IAAA,SAAA;AAAW,IAAA,SAAA;AAAU,CAAA,CAAA;AAE7C,MAAMC,GAAAA,GAAM,CAACC,UAAAA,EAAsBC,UAAsBC,EAAAA,MAAAA,GAAAA;AACvD,IAAA,IAAI,CAACD,UAAAA,IAAc,CAACA,UAAAA,CAAWE,OAAO,EAAI,EAAA;QACxC,MAAM,IAAI9P,KACR,CAAA,wEAAA,GACE,OAAO4P,UAAAA,CAAAA,CAAAA;AAEb,KAAA;AAEA,IAAA,MAAMG,MAASH,GAAAA,UAAAA,CAAAA;IACf,MAAMvJ,CAAAA,GAAIwJ,MAAWpQ,KAAAA,SAAAA,GAAY,GAAMoQ,GAAAA,MAAAA,CAAAA;IAEvC,MAAMjI,CAAAA,GAAI,IAAIvB,CAAI,GAAA,CAAA,CAAA;AAClB,IAAA,MAAM5M,CAAIsW,GAAAA,MAAAA,CAAOC,QAAQ,EAAA,GAAKL,WAAWK,QAAQ,EAAA,CAAA;IAEjD,MAAMC,EAAAA,GAAK,CAAErI,CAAAA,CAAInO,GAAAA,CAAAA,KAAM,CAAC,CAAA,GAAImO,CAAI,GAACA,CAAAA,CAAInO,GAAAA,CAAAA,KAAM,CAAA,GAAImO,IAAInO,CAAAA,CAAC,IAAK,CAAA,IAAK,CAAA,CAAA;AAC9D,IAAA,MAAMyW,KAAK,CAAID,GAAAA,EAAAA,CAAAA;IAEf,OAAOT,SAAAA,CAAUW,SAAS,CAAC;QACzBC,CAAGH,EAAAA,EAAAA,GAAKF,MAAOM,CAAAA,KAAK,EAAGD,CAAAA,CAAC,GAAGF,EAAKP,GAAAA,UAAAA,CAAWU,KAAK,EAAA,CAAGD,CAAC;QACpDE,CAAGL,EAAAA,EAAAA,GAAKF,MAAOM,CAAAA,KAAK,EAAGC,CAAAA,CAAC,GAAGJ,EAAKP,GAAAA,UAAAA,CAAWU,KAAK,EAAA,CAAGC,CAAC;QACpDC,CAAGN,EAAAA,EAAAA,GAAKF,MAAOM,CAAAA,KAAK,EAAGE,CAAAA,CAAC,GAAGL,EAAKP,GAAAA,UAAAA,CAAWU,KAAK,EAAA,CAAGE,CAAC;QACpD9W,CAAGsW,EAAAA,MAAAA,CAAOC,QAAQ,EAAK3J,GAAAA,CAAAA,GAAIsJ,WAAWK,QAAQ,EAAA,IAAM,CAAA,GAAI3J,CAAAA,CAAAA;AAC1D,KAAA,CAAA,CAAA;AACF,CAAA,CAAA;AAEO,MAAMmK,aAAgB,GAAA,CAC3BC,YACAC,EAAAA,iBAAAA,EACAC,UACAC,UACAC,EAAAA,SAAAA,GAAAA;AAEA,IAAA,MAAMC,aAAa,EAAE,CAAA;AACrB,IAAA,MAAMC,UAAaF,GAAAA,SAAAA,CAAUf,OAAO,EAAA,GAAKe,SAAYtB,GAAAA,UAAAA,CAAAA;IAErD,IAAIyB,IAAAA,CAAAA;AACJ,IAAA,IAAKA,IAAO,GAAA,CAAA,EAAGA,IAAOP,GAAAA,YAAAA,EAAcO,IAAQ,EAAA,CAAA;QAC1C,IAAIH,SAAAA,CAAUf,OAAO,EAAI,EAAA;YACvBgB,UAAW7Q,CAAAA,IAAI,CACbyP,GACEqB,CAAAA,UAAAA,CAAWE,QAAQ,CAAGD,CAAAA,IAAAA,GAAO,CAAA,IAAKP,gBAAiBG,UAAAA,GAAa,GAAE,CAAA,CAAA,EAClED,QACA,EAAED,oBAAoB,GAAQM,IAAAA,IAAO,GAAA,CAAA,CAAMP,GAAAA,YAAAA,CAAAA,CAAAA,CAAAA;SAG1C,MAAA;AACLK,YAAAA,UAAAA,CAAW7Q,IAAI,CAACsP,UAAAA,CAAAA,CAAAA;AAClB,SAAA;AACF,KAAA;IACA,OAAOuB,UAAAA,CAAAA;AACT,CAAE,CAAA;AAEF,MAAMI,SAAY,GAAA;AAChB,IAAA,KAAA;AACA,IAAA,SAAA;AACA,IAAA,QAAA;AACA,IAAA,MAAA;AACA,IAAA,SAAA;AACA,IAAA,OAAA;AACA,IAAA,OAAA;AACA,IAAA,SAAA;AACA,IAAA,UAAA;AACA,IAAA,KAAA;AACD,CAAA,CAAA;AAEM,MAAMC,sBAAsB,CACjCN,SAAAA,GAAAA;AAEA,IAAA,MAAMO,UAAaZ,GAAAA,aAAAA,CACjBnB,uBACA,EAAA,EAAA,EACAG,UAAU,SACV,CAAA,EAAA,EAAA,EACAA,SAAUqB,CAAAA,SAAAA,CAAAA,CAAAA,CAETQ,OAAO,EAAA,CACP/V,GAAG,CAAC,CAAC4J,KAAUA,GAAAA,KAAAA,CAAAA,CAAAA;AAClB,IAAA,MAAMoM,WAAcd,GAAAA,aAAAA,CAClBlB,wBACA,EAAA,EAAA,EACAE,SAAU,CAAA,SAAA,CAAA,EACV,EACAA,EAAAA,SAAAA,CAAUqB,SACVvV,CAAAA,CAAAA,CAAAA,GAAG,CAAC,CAAC4J,KAAUA,GAAAA,KAAAA,CAAAA,CAAAA;IAEjB,OAAO;QACLqM,OAASV,EAAAA,SAAAA;AACTW,QAAAA,KAAAA,EAAOhC,SAAUqB,CAAAA,SAAAA,CAAAA,CAAWI,QAAQ,CAAC,IAAIQ,WAAW,EAAA;AACpD,QAAA,GAAGL,UAAW5K,CAAAA,MAAM,CAAC,CAAC6H,KAAKqD,CAAaC,EAAAA,GAAAA,GAAAA;AACtCtD,YAAAA,GAAG,CAAC6C,SAAS,CAACS,IAAI,CAAC,GAAGD,EAAED,WAAW,EAAA,CAAA;YACnC,OAAOpD,GAAAA,CAAAA;AACT,SAAA,EAAG,EAA6B,CAAA;AAChC,QAAA,GAAGiD,WAAY9K,CAAAA,MAAM,CAAC,CAAC6H,KAAKqD,CAAaC,EAAAA,GAAAA,GAAAA;YACvCtD,GAAG,CAAC6C,SAAS,CAACS,GAAAA,GAAM,EAAE,CAAC,GAAGD,EAAED,WAAW,EAAA,CAAA;YACvC,OAAOpD,GAAAA,CAAAA;AACT,SAAA,EAAG,EAA6B,CAAA;AAClC,KAAA,CAAA;AACF,EAAE;AAEK,MAAMuD,kCAAkC,CAC7CC,MAAAA,GAAAA;IAEA,OAAOtX,MAAAA,CAAO8R,OAAO,CAACwF,MAAQrL,CAAAA,CAAAA,MAAM,CAAC,CAACsL,OAAAA,EAAS,CAACC,SAAAA,EAAWzU,KAAM,CAAA,GAAA;QAC/D,OAAO;AACL,YAAA,GAAGwU,OAAO;AACV,YAAA,CAACC,YAAYvC,SAAAA,CACVwC,YAAY,CAAC1U,OAAOmS,cAAgB,EAAA;gBACnCwC,qBAAuB,EAAA,IAAA;gBACvBC,KAAO,EAAA,KAAA;gBACP5N,IAAM,EAAA,OAAA;AACR,aAAA,CAAA,CACCmN,WAAW,EAAA;AAChB,SAAA,CAAA;AACF,KAAA,EAAG,EAAC,CAAA,CAAA;AACN;;AC3HA;;AAEC,IACM,SAASU,uBAAAA,GAAAA;AACd,IAAA,OAAOC,IAAKC,CAAAA,KAAK,CAAC9U,IAAAA,CAAKC,GAAG,EAAK,GAAA,IAAA,CAAA,CAAA;AACjC,CAAA;AAEA;;;;IAKO,SAAS8U,gBAAAA,CAAiBC,QAAgB,EAAA;AAC/C,IAAA,OAAO,IAAIhV,IAAAA,CAAKgV,QAAW,GAAA,IAAA,CAAA,CAAMC,cAAc,EAAA,CAAA;AACjD;;ACZO,MAAMC,4BAA4B,CAACC,SAAAA,GAAAA;IACxC,MAAM5V,KAAAA,GAAQ4V,SAAU5V,CAAAA,KAAK,CAAC,GAAA,CAAA,CAAA;IAC9B,MAAM6V,OAAAA,GAAU7V,KAAK,CAAC,CAAE,CAAA,CAAA;IACxB,MAAM8V,OAAAA,GAAU9V,KAAMrB,CAAAA,MAAM,GAAG,CAAA,GAAIqB,KAAM+V,CAAAA,KAAK,CAAC,CAAA,CAAA,CAAGC,IAAI,CAAC,GAAO,CAAA,GAAA,EAAA,CAAA;AAC9D,IAAA,OAAO,CAAC,UAAU,EAAEH,QAAQ,UAAU,EAAEC,QAAQ,CAAC,CAAA;AACnD,EAAE;AAEK,MAAMG,sCAAoC,CAC/CC,MAAAA,EACAC,SACAC,YACAC,EAAAA,eAAAA,GAA0D,EAAE,GAAA;IAE5D,MAAMzK,OAAAA,GAAUyK,eAAe,CAACD,YAAa,CAAA,CAAA;;;;;;;;;;IAU7C,OACExK,OAAAA,KAAYjJ,SACZiJ,IAAAA,OAAAA,CAAQ0K,IAAI,CACV,CAACpW,CAAAA,GACC,CAACA,CAAEiW,CAAAA,OAAO,KAAKA,OAAAA,IAAWjW,EAAEiW,OAAO,KAAK,GAAE,MACzCjW,CAAAA,CAAEgW,MAAM,KAAKA,MAAUhW,IAAAA,CAAAA,CAAEgW,MAAM,KAAK,GAAE,CAAA,CAAA,CAAA;AAG/C;;ACjCO,MAAMK,cACX;;ACDK,MAAMC,qBAAqB,CAACC,GAAAA,GAAAA;IACjC,OAAOA,GAAAA,CAAIC,QAAQ,CAAC,GAAA,CAAA,GAClBD,IAAIV,KAAK,CAAC,CAAG,EAAA,CAAC,CACdU,CAAAA,GAAAA,GAAAA,CAAAA;AACJ;;ACFO,MAAME,kBAAkB,CAACnW,KAAAA,GAAAA;IAC9B,OACEiR,KAAAA,CAAMC,OAAO,CAAClR,KACdA,CAAAA,IAAAA,KAAAA,CAAMmR,KAAK,CAAC,CAACiF,OAAY,GAAA,OAAOA,OAAY,KAAA,QAAA,CAAA,CAAA;AAEhD,EAAE;AAEF;AACA,MAAMC,qBAA6D,GAAA;AACjE,IAAA,MAAA;AACA,IAAA,YAAA;AACA,IAAA,WAAA;AACA,IAAA,WAAA;AACA,IAAA,YAAA;AACA,IAAA,gBAAA;AACA,IAAA,SAAA;AACA,IAAA,SAAA;AACA,IAAA,QAAA;AACA,IAAA,OAAA;AACD,CAAA,CAAA;AAED;AACO,MAAMC,oBAAkB,CAC7BtW,KAAAA,GAAAA;IAEA,OAAOqW,qBAAAA,CAAoBE,QAAQ,CAACvW,KAAAA,CAAAA,CAAAA;AACtC;;ACrBO,MAAMwW,0BAAuD,GAAA,CAAC,EACnExW,KAAK,EACLkO,MAAM,EACsB,GAAA;AAC5B,IAAA,IAAIuI,KAAQ,GAAA,EAAA,CAAA;IACZ,IACE,OAAOvI,QAAQwI,SAAc,KAAA,QAAA,IAC7B,CAACC,KAAMC,CAAAA,MAAAA,CAAO1I,QAAQwI,SACtB,CAAA,CAAA,EAAA;QACAD,KAAQI,GAAAA,QAAAA,CAAS3I,QAAQwI,SAAW,EAAA,EAAA,CAAA,CAAA;AACtC,KAAA,MAAO,IAAI,OAAOxI,MAAQwI,EAAAA,SAAAA,KAAc,QAAU,EAAA;AAChDD,QAAAA,KAAAA,GAAQvI,MAAQwI,EAAAA,SAAAA,CAAAA;AAClB,KAAA;AAEA,IAAA,MAAMI,OAAUR,GAAAA,iBAAAA,CAAgBpI,MAAQ6I,EAAAA,SAAAA,CAAAA,GACpC7I,QAAQ6I,SACR5U,GAAAA,SAAAA,CAAAA;IACJ,MAAMiM,mBAAAA,GAAsBF,QAAQE,mBAAuB,IAAA,EAAA,CAAA;AAC3D,IAAA,MAAMzB,OAAU3M,GAAAA,KAAAA,CAAAA;IAEhB,IACE2M,OAAAA,KAAYxK,aACZwK,OAAY,KAAA,IAAA,IACXuE,QAAQvE,OAAYA,CAAAA,IAAAA,OAAAA,CAAQxO,MAAM,KAAK,CACxC,EAAA;AACA,QAAA,qBAAOnC,GAACkP,CAAAA,IAAAA,EAAAA;sBAAM,CAAC,EAAEkD,oBAAoB,CAAC;;AACxC,KAAA;AAEA,IAAA,IAAIzB,YAAY,EAAI,EAAA;AAClB,QAAA,qBAAOtQ,IAAC6O,CAAAA,IAAAA,EAAAA;;gBAAM,CAAC,EAAEkD,oBAAoB,CAAC;AAAC,gBAAA,GAAA;;;AACzC,KAAA;AACA,IAAA,MAAM4I,gBAAgB9F,OAAQvE,CAAAA,OAAAA,CAAAA,GAAWA,OAAQ6I,CAAAA,IAAI,CAAC,IAAQ7I,CAAAA,GAAAA,OAAAA,CAAAA;AAC9D,IAAA,MAAMsK,SACJD,GAAAA,aAAAA,CAAc7Y,MAAM,GAAGsY,QACnB,CAAC,EAAEO,aAAczB,CAAAA,KAAK,CAAC,CAAA,EAAGkB,KAAO,CAAA,CAAA,GAAG,CAAC,GACrCO,aAAAA,CAAAA;AACN,IAAA,qBACEhb,GAACuL,CAAAA,OAAAA,EAAAA;QAAQC,KAAOmF,EAAAA,OAAAA;AACd,QAAA,QAAA,gBAAA3Q,GAACkP,CAAAA,IAAAA,EAAAA;YAAKgM,EAAIJ,EAAAA,OAAAA;AAAUG,YAAAA,QAAAA,EAAAA,SAAAA;;;AAG1B,CAAE;;AC7CK,MAAME,gBAAgB,CAACnX,KAAAA,GAAAA;AAC5B,IAAA,OACE,OAAOA,KAAU,KAAA,QAAA,IACjB,OAAOA,KAAU,KAAA,QAAA,IACjB,OAAOA,KAAU,KAAA,QAAA,CAAA;AAErB,CAAE,CAAA;AACK,MAAMoX,cAAiB,GAAA,CAC5BrG,GACAsG,EAAAA,IAAAA,GAAAA;IAEA,IAAItG,GAAAA,KAAQ5O,WAAW,OAAO,KAAA,CAAA;IAC9B,IAAIkV,IAAAA,KAASlV,WAAW,OAAO,KAAA,CAAA;AAC/B,IAAA,OAAOlF,MAAOma,CAAAA,cAAc,CAACE,IAAI,CAACvG,GAAKsG,EAAAA,IAAAA,CAAAA,CAAAA;AACzC,CAAE,CAAA;AACK,MAAME,sBAAyB,GAAA,CAACrJ,MAAqBxR,EAAAA,GAAAA,GAAAA;AAC1D,IAAA,OAAOwR,MAAUxR,IAAAA,GAAAA,IAAOA,GAAQ,KAAA,EAAA,IAAMya,aAAcza,CAAAA,GAAAA,CAAAA,IAAQ0a,cAAelJ,CAAAA,MAAAA,EAAQxR,GAC/EyR,CAAAA,GAAAA,QAAAA,CAASD,MAAM,CAACxR,IAAI,CACpByF,GAAAA,SAAAA,CAAAA;AACN,CAAE;;ACRF,MAAMqV,sCAA+D,GAAA,CACnE,EAAExX,KAAK,EAA2B,EAClCkO,MAAAA,GAAAA;AAEA,IAAA,qBAAOlS,GAACwa,CAAAA,0BAAAA,EAAAA;QAA2BxW,KAAOA,EAAAA,KAAAA;QAAOkO,MAAQA,EAAAA,MAAAA;;AAC3D,CAAA,CAAA;AAEA;AACO,MAAMuJ,iBAAAA,GAAwC,CAAC,EACpDzX,KAAK,EACmB,GAAA;AACxB,IAAA,IAAIkR,QAAQlR,KAAQ,CAAA,EAAA;AAClB,QAAA,qBACEhE,GAAC+B,CAAAA,KAAAA,EAAAA;YAAIxC,SAAU,EAAA,6BAAA;AACZyE,YAAAA,QAAAA,EAAAA,KAAAA,CAAMhC,GAAG,CAAC,CAAC0B,CAAAA,EAAGxB,sBACblC,GAAC0b,CAAAA,KAAAA,EAAAA;oBACC3L,OAAQ,EAAA,SAAA;oBACRpP,UAAY,EAAA;wBAAEiB,IAAM,EAAA,WAAA;AAAY,qBAAA;oBAChCgK,KAAM,EAAA,cAAA;AAGLlI,oBAAAA,QAAAA,EAAAA,CAAAA;AAFI,iBAAA,EAAA,CAAC,EAAEA,CAAAA,CAAE,OAAO,EAAExB,MAAM,CAAC,CAAA,CAAA;;AAOpC,KAAA;AACA,IAAA,qBAAOlC,GAACC,CAAAA,MAAAA,EAAAA;AAAK,QAAA,QAAA,EAAA,OAAA;;AACf,CAAE,CAAA;AAEF;AACA,MAAMoa,mBAA6D,GAAA;AACjE,IAAA,MAAA;AACA,IAAA,YAAA;AACA,IAAA,WAAA;AACA,IAAA,WAAA;AACA,IAAA,YAAA;AACA,IAAA,gBAAA;AACA,IAAA,SAAA;AACA,IAAA,SAAA;AACA,IAAA,QAAA;AACA,IAAA,OAAA;AACD,CAAA,CAAA;AAED;AACA,MAAMC,kBAAkB,CACtBtW,KAAAA,GAAAA;IAEA,OAAOqW,mBAAAA,CAAoBE,QAAQ,CAACvW,KAAAA,CAAAA,CAAAA;AACtC,CAAA,CAAA;AAEO,MAAM2X,iCAAwD,GAAA,CAAC,EACpE3X,KAAK,EACL4X,IAAI,EACoB,GAAA;AACxB,IAAA,IAAI1G,QAAQlR,KAAQ,CAAA,EAAA;AAClB,QAAA,qBACEhE,GAAC+B,CAAAA,KAAAA,EAAAA;YAAIxC,SAAU,EAAA,6BAAA;AACZyE,YAAAA,QAAAA,EAAAA,KAAAA,CAAMhC,GAAG,CAAC,CAAC0B,CAAAA,EAAGxB,sBACblC,GAAC0b,CAAAA,KAAAA,EAAAA;oBACC3L,OAAQ,EAAA,QAAA;oBACRnE,KAAOlI,EAAAA,CAAAA,KAAM,aAAa,OAAU,GAAA,MAAA;oBACpC/C,UAAY,EAAA;wBAAEiB,IAAM,EAAA,WAAA;AAAY,qBAAA;AAG/B8B,oBAAAA,QAAAA,EAAAA,CAAAA;AAFI,iBAAA,EAAA,CAAC,EAAEkY,IAAMhU,EAAAA,EAAAA,IAAM,OAAO,OAAO,EAAE1F,MAAM,CAAC,CAAA,CAAA;;AAOrD,KAAA;;AAEA,IAAA,qBAAOlC,GAACC,CAAAA,MAAAA,EAAAA;AAAM+D,QAAAA,QAAAA,EAAAA,KAAAA;;AAChB,CAAE,CAAA;AAEK,MAAM6X,gBAAAA,GAAuC,CAAC,EACnD7X,KAAK,EACmB,GAAA;AACxB,IAAA,MAAM2M,OAAU3M,GAAAA,KAAAA,CAAAA;AAChB,IAAA,qBACEhE,GAACE,CAAAA,IAAAA,EAAAA;QACCV,IAAMmR,EAAAA,OAAAA;QACN5E,OAAS,EAAA,CAAC+P,EAAOA,GAAAA,EAAAA,CAAGC,eAAe,EAAA;QACnC3b,MAAO,EAAA,QAAA;QACPE,GAAI,EAAA,YAAA;AAEHqQ,QAAAA,QAAAA,EAAAA,OAAAA;;AAGP,CAAE,CAAA;AAEF,MAAMqL,2BAAoD,GAAA,CACxD,EAAEhY,KAAK,EAA2B,EAClCkO,MAAAA,GAAAA;AAEA,IAAA,MAAM4I,OAAUR,GAAAA,eAAAA,CAAgBpI,MAAQ6I,EAAAA,SAAAA,CAAAA,GACpC7I,QAAQ6I,SACR5U,GAAAA,SAAAA,CAAAA;IACJ,MAAMiM,mBAAAA,GAAsBF,QAAQE,mBAAuB,IAAA,EAAA,CAAA;AAC3D,IAAA,MAAMzB,OAAU3M,GAAAA,KAAAA,CAAAA;IAChB,IAAI2M,OAAAA,KAAYxK,SAAawK,IAAAA,OAAAA,KAAY,IAAM,EAAA;AAC7C,QAAA,qBAAOtQ,IAAC6O,CAAAA,IAAAA,EAAAA;;gBAAM,CAAC,EAAEkD,oBAAoB,CAAC;AAAC,gBAAA,GAAA;;;AACzC,KAAA;AACA,IAAA,IAAIzB,WAAW,EAAI,EAAA;AACjB,QAAA,qBAAOtQ,IAAC6O,CAAAA,IAAAA,EAAAA;;gBAAM,CAAC,EAAEkD,oBAAoB,CAAC;AAAC,gBAAA,GAAA;;;AACzC,KAAA;;IAGA,IAAI6J,cAAAA,CAAAA;IACJ,IACE,OAAOtL,YAAY,QACnB,IAAA,CAACgK,MAAMC,MAAOjK,CAAAA,OAAAA,CAAAA,CAAAA,IACdiK,MAAOjK,CAAAA,OAAAA,CAAAA,GAAW,IAClB,EAAA;QACAsL,cAAiB,GAAA,MAAA,CAAA;KACZ,MAAA,IAAI/G,QAAQvE,OAAU,CAAA,EAAA;QAC3BsL,cAAiBtL,GAAAA,OAAAA,CACd3O,GAAG,CAAC,CAACoL,IAAAA,GAAAA;YACJ,IACE,OAAOA,SAAS,QAChB,IAAA,CAACuN,MAAMC,MAAOxN,CAAAA,IAAAA,CAAAA,CAAAA,IACdwN,MAAOxN,CAAAA,IAAAA,CAAAA,GAAQ,IACf,EAAA;gBACA,OAAO,MAAA,CAAA;AACT,aAAA;YACA,OAAOA,IAAAA,CAAAA;AACT,SAAA,CAAA,CACCoM,IAAI,CAAC,IAAA,CAAA,CAAA;KACH,MAAA;QACLyC,cAAiBtL,GAAAA,OAAAA,CAAAA;AACnB,KAAA;AAEA,IAAA,qBAAO3Q,GAACkP,CAAAA,IAAAA,EAAAA;QAAKgM,EAAIJ,EAAAA,OAAAA;AAAUmB,QAAAA,QAAAA,EAAAA,cAAAA;;AAC7B,CAAA,CAAA;AAEA;AAEO,MAAMC,oBAA0C,CACrD,EAAElY,KAAK,EAAE4X,IAAI,EAA2B,EAExC1J,MAAAA,GAAAA;AAEA,IAAA,MAAMvB,UAAUwB,QAASnO,CAAAA,KAAAA,CAAAA,CAAAA;AACzB,IAAA,IAAI,CAAC2M,OAAS,EAAA;AACZ,QAAA,qBACE3Q,GAACkP,CAAAA,IAAAA,EAAAA;AAAM,YAAA,QAAA,EAAA,CAAC,EACNqM,sBAAAA,CAAuBrJ,MAAQ,EAAA,qBAAA,CAAA,IAA0B,GAC1D,CAAC;;AAEN,KAAA;AACA,IAAA,MAAM4I,OAAUR,GAAAA,eAAAA,CAAgBpI,MAAQ6I,EAAAA,SAAAA,CAAAA,GACpC7I,QAAQ6I,SACR5U,GAAAA,SAAAA,CAAAA;IACJ,MAAMgW,OAAAA,GAAUZ,uBACdK,IAAM7K,EAAAA,GAAAA,EAAKqC,UACXjB,QAASD,CAAAA,MAAAA,GAAS,oBAAqB,CAAA,CAAA,CAAA,CAAA;AAEzC,IAAA,IAAIiK,OAAS,EAAA;AACX,QAAA,qBACEnc,GAACG,CAAAA,GAAAA,EAAAA;AACCX,YAAAA,IAAAA,EAAM,CAAC,OAAO,EAAE2c,OAAAA,CAAQ,CAAC;YACzBpQ,OAAS,EAAA,CAAC+P,EAAOA,GAAAA,EAAAA,CAAGC,eAAe,EAAA;YACnC3b,MAAO,EAAA,QAAA;YACPE,GAAI,EAAA,YAAA;AAEJ,YAAA,QAAA,gBAAAN,GAACkP,CAAAA,IAAAA,EAAAA;gBAAKkJ,CAAE,EAAA,WAAA;gBAAY8C,EAAIJ,EAAAA,OAAAA;AACrBnK,gBAAAA,QAAAA,EAAAA,OAAAA;;;AAIT,KAAA;AACA,IAAA,qBACE3Q,GAACG,CAAAA,GAAAA,EAAAA;AACCX,QAAAA,IAAAA,EAAM,CAAC,OAAO,EAAEmR,OAAAA,CAAQ,CAAC;QACzB5E,OAAS,EAAA,CAAC+P,EAAOA,GAAAA,EAAAA,CAAGC,eAAe,EAAA;QACnC3b,MAAO,EAAA,QAAA;QACPE,GAAI,EAAA,YAAA;AAEJ,QAAA,QAAA,gBAAAD,IAAC6O,CAAAA,IAAAA,EAAAA;YAAKkJ,CAAE,EAAA,WAAA;YAAY8C,EAAIJ,EAAAA,OAAAA;;AACrBnK,gBAAAA,OAAAA;AAAQ,gBAAA,MAAA;;;;AAIjB,CAAE,CAAA;AAEF,MAAMyL,gBAAyC,GAAA,CAC7C,EAAEpY,KAAK,EAA2B,EAClCkO,MAAAA,GAAAA;AAEA,IAAA,MAAM4I,OAAUR,GAAAA,eAAAA,CAAgBpI,MAAQ6I,EAAAA,SAAAA,CAAAA,GACpC7I,QAAQ6I,SACR5U,GAAAA,SAAAA,CAAAA;IACJ,MAAMiM,mBAAAA,GAAsBF,QAAQE,mBAAuB,IAAA,EAAA,CAAA;AAC3D,IAAA,MAAMzB,OAAU3M,GAAAA,KAAAA,CAAAA;IAChB,IAAI2M,OAAAA,KAAYxK,SAAawK,IAAAA,OAAAA,KAAY,IAAM,EAAA;AAC7C,QAAA,qBAAOtQ,IAAC6O,CAAAA,IAAAA,EAAAA;;gBAAM,CAAC,EAAEkD,oBAAoB,CAAC;AAAC,gBAAA,GAAA;;;AACzC,KAAA;AACA,IAAA,IAAIzB,WAAW,EAAI,EAAA;AACjB,QAAA,qBAAOtQ,IAAC6O,CAAAA,IAAAA,EAAAA;;gBAAM,CAAC,EAAEkD,oBAAoB,CAAC;AAAC,gBAAA,GAAA;;;AACzC,KAAA;AACA,IAAA,qBACEpS,GAACkP,CAAAA,IAAAA,EAAAA;QAAKgM,EAAIJ,EAAAA,OAAAA;AAAU5F,QAAAA,QAAAA,EAAAA,OAAAA,CAAQvE,OAAWA,CAAAA,GAAAA,OAAAA,CAAQ6I,IAAI,CAAC,IAAQ7I,CAAAA,GAAAA,OAAAA;;AAEhE,CAAA,CAAA;AAEA,MAAM0L,gBAAyC,GAAA,CAC7C,EAAErY,KAAK,EAA2B,EAClCkO,MAAAA,GAAAA;IAEA,MAAMoK,cAAAA,GAAiBtY,KAAUmC,KAAAA,SAAAA,IAAanC,KAAU,KAAA,IAAA,CAAA;IACxD,MAAMuY,yBAAAA,GAA4BrK,QAAQE,mBAAuB,IAAA,EAAA,CAAA;AACjE,IAAA,MAAMzB,OAAU3M,GAAAA,KAAAA,CAAAA;AAEhB,IAAA,IAAIsY,cAAgB,EAAA;AAClB,QAAA,qBAAOtc,GAACkP,CAAAA,IAAAA,EAAAA;sBAAM,CAAC,EAAEqN,0BAA0B,CAAC;;AAC9C,KAAA;AAEA,IAAA,IAAIC,WAAc,GAAA,EAAA,CAAA;;IAElB,IAAItH,OAAAA,CAAQvE,YAAYA,OAAQwE,CAAAA,KAAK,CAAC,CAAC/H,IAAAA,GAAS,OAAOA,IAAAA,KAAS,QAAW,CAAA,EAAA;QACzEoP,WAAc7L,GAAAA,OAAAA,CAAQ3O,GAAG,CAAC,CAACya,CAAAA,GAAOA,CAAIA,GAAAA,CAAAA,CAAEvD,cAAc,EAAA,GAAK,EAAKM,CAAAA,CAAAA,IAAI,CAAC,IAAA,CAAA,CAAA;KAChE,MAAA;AACLgD,QAAAA,WAAAA,GAAc7L,QAAQuI,cAAc,EAAA,CAAA;AACtC,KAAA;AAEA,IAAA,qBAAOlZ,GAACkP,CAAAA,IAAAA,EAAAA;AAAMsN,QAAAA,QAAAA,EAAAA,WAAAA;;AAChB,CAAA,CAAA;AAEA,MAAME,oBAA6C,GAAA,CAAC,EAClD1Y,KAAK,EACmB,GAAA;AACxB,IAAA,MAAM2M,OAAU3M,GAAAA,KAAAA,CAAAA;IAChB,qBACEhE,GAAA,CAACmD,eAAMC,QAAQ,EAAA;AACZ8R,QAAAA,QAAAA,EAAAA,OAAAA,CAAQvE,OACLA,CAAAA,GAAAA,OAAAA,CACG6I,IAAI,CAAC,IACLhW,CAAAA,CAAAA,KAAK,CAAC,IAAA,CAAA,CACNxB,GAAG,CAAC,CAAC2a,SAAAA,EAAW9Z,kBAAM7C,GAAC+M,CAAAA,GAAAA,EAAAA;AAAW4P,gBAAAA,QAAAA,EAAAA,SAAAA;eAAJ9Z,CACjC8N,CAAAA,CAAAA,GAAAA,OAAAA,CAAQnN,KAAK,CAAC,IAAA,CAAA,CAAMxB,GAAG,CAAC,CAAC2a,SAAW9Z,EAAAA,CAAAA,iBAAM7C,GAAC+M,CAAAA,GAAAA,EAAAA;AAAW4P,gBAAAA,QAAAA,EAAAA,SAAAA;AAAJ9Z,aAAAA,EAAAA,CAAAA,CAAAA,CAAAA;;AAG5D,CAAA,CAAA;AAQA;AACA;AACO,MAAM+Z,cAAAA,GAAuC,CAAC,EACnD5Y,KAAK,EACmB,GAAA;AACxB,IAAA,MAAM2M,OAAU3M,GAAAA,KAAAA,CAAAA;AAChB,IAAA,MAAM,EAAEwQ,eAAAA,EAAiB5C,MAAM,EAAE,GAAG+C,mBAAAA,EAAAA,CAAAA;AACpC,IAAA,qBACE3U,GAAC+B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAU,EAAA,0BAAA;kBACZoR,OAAQ3O,CAAAA,GAAG,CAAC,CAAC0B,CAAAA,GAAAA;YACZ,MAAM,EAAEkI,KAAK,EAAE4F,OAAO,EAAEhG,KAAK,EAAE,GAAGyF,UAAAA,CAAWvN,CAAGkO,EAAAA,MAAAA,CAAOiL,IAAI,CAAA,CAAA;YAC3D,IAAI,CAACrL,SAAS,OAAO,IAAA,CAAA;AACrB,YAAA,qBACExR,GAAC0b,CAAAA,KAAAA,EAAAA;gBAEC7O,IAAK,EAAA,QAAA;gBACL7B,IAAK,EAAA,IAAA;gBACL8R,MAAO,EAAA,IAAA;gBACP/M,OAAQ,EAAA,QAAA;gBACRgN,QAAU,EAAA,CAAA;AACVnQ,gBAAAA,YAAAA,EAAYlJ,EAAE2I,IAAI;gBAClB2Q,KAAO,EAAA;oBACLC,eAAiBrR,EAAAA,KAAAA;oBACjBsR,WAAatR,EAAAA,KAAAA;oBACbA,KAAO,EAAA,OAAA;AACT,iBAAA;AAECJ,gBAAAA,QAAAA,EAAAA,KAAAA;AAbI9H,aAAAA,EAAAA,CAAAA,CAAE2I,IAAI,CAAA,CAAA;AAgBjB,SAAA,CAAA;;AAGN,CAAE,CAAA;AAEK,MAAM8Q,kCAAqC,GAAA;IAChDC,KAAO,EAAA;QACLC,gBAAkB1B,EAAAA,iCAAAA;QAClBjI,OAAS+H,EAAAA,iBAAAA;AACX,KAAA;IACAhI,MAAQ,EAAA;QACNC,OAAS0I,EAAAA,gBAAAA;QACTkB,qBAAuBtB,EAAAA,2BAAAA;QACvBf,SAAWO,EAAAA,sCAAAA;AACb,KAAA;IACA+B,MAAQ,EAAA;QACN7J,OAAS2I,EAAAA,gBAAAA;AACX,KAAA;IACAmB,UAAY,EAAA;QACV9J,OAASgJ,EAAAA,oBAAAA;AACX,KAAA;IACAG,IAAM,EAAA;QACJnJ,OAASkJ,EAAAA,cAAAA;AACX,KAAA;IACA1Z,IAAM,EAAA;QACJwQ,OAASmI,EAAAA,gBAAAA;QACT4B,OAASvB,EAAAA,iBAAAA;AACX,KAAA;IACAwB,UAAY,EAAA;QACVhK,OAAS4B,EAAAA,sBAAAA;AACX,KAAA;AACF,CAAE,CAAA;MAEWqI,qCAAwC,GAAA,IAAA;AACnDtL,IAAAA,4BAAAA,CAA6BQ,2BAA2B,CACtDsK,kCAAAA,CAAAA,CAAAA;AAEJ;;AClUA,MAAMS,yBAAAA,GAA4B,CAChCC,UACAC,EAAAA,UAAAA,GAAAA;AAEA,IAAA,qBACEzd,IAAC0B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAU,EAAA,2CAAA;;AACZue,YAAAA,UAAAA,iBAAa9d,GAACC,CAAAA,MAAAA,EAAAA;AAAM6d,gBAAAA,QAAAA,EAAAA,UAAAA;AAAqB,aAAA,CAAA,GAAA,IAAA;AAAK,YAAA,GAAA;0BAC/C9d,GAACC,CAAAA,MAAAA,EAAAA;AAAM4d,gBAAAA,QAAAA,EAAAA,UAAAA;;AAA4B,YAAA,GAAA;;;AAGzC,CAAA,CAAA;AAIO,MAAME,yBAAAA,CAAAA;IAIX,WAAsB,EAAA;AAFdC,QAAAA,IAAAA,CAAAA,oBAAAA,GAAiE,EAAC,CAAA;QAGxE,IAAI,CAACA,oBAAoB,GAAG,EAAC,CAAA;AAC/B,KAAA;AAEA,IAAA,OAAOzL,WAAyC,GAAA;QAC9C,IAAI,CAACwL,yBAA0BvL,CAAAA,QAAQ,EAAE;YACvCuL,yBAA0BvL,CAAAA,QAAQ,GAAG,IAAIuL,yBAAAA,EAAAA,CAAAA;AAC3C,SAAA;AACA,QAAA,OAAOA,0BAA0BvL,QAAQ,CAAA;AAC3C,KAAA;AAEA,IAAA,OAAOyL,WACLxO,CAAAA,IAAY,EACZiD,YAAoB,EACG;QACvB,IACE,EAAEjD,IAAQsO,IAAAA,yBAAAA,CAA0BxL,WAAW,EAAGyL,CAAAA,oBAAoB,CACtE,EAAA;YACAjK,OAAQC,CAAAA,GAAG,CAAC,oCAAsCvE,EAAAA,IAAAA,CAAAA,CAAAA;YAClD,OAAOmO,yBAAAA,CAAAA;AACT,SAAA;QACA,OACEG,yBAAAA,CAA0BxL,WAAW,EAAGyL,CAAAA,oBAAoB,CAACvO,IAAK,CAAA,CAChEiD,aACD,IAAIkL,yBAAAA,CAAAA;AAET,KAAA;AAEA,IAAA,OAAOM,sBACLzO,IAAY,EACZiD,YAAoB,EACpBE,IAA2B,EACrB;AACN,QAAA,IACEmL,0BAA0BxL,WAAW,EAAA,CAAGyL,oBAAoB,CAACvO,IAAAA,CAAK,KAClEtJ,SACA,EAAA;AACA4X,YAAAA,yBAAAA,CAA0BxL,WAAW,EAAGyL,CAAAA,oBAAoB,CAACvO,IAAAA,CAAK,GAAG,EAAC,CAAA;AACxE,SAAA;AACAsO,QAAAA,yBAAAA,CAA0BxL,WAAW,EAAGyL,CAAAA,oBAAoB,CAACvO,IAAK,CAAA,CAChEiD,aACD,GAAGE,IAAAA,CAAAA;AACN,KAAA;IAEA,OAAOuL,4BAAAA,CACLrL,OAAiD,EAC3C;AACN7R,QAAAA,MAAAA,CAAOC,IAAI,CAAC4R,OAAS9Q,CAAAA,CAAAA,GAAG,CAAC,CAACyN,IAAAA,GAAAA;YACxBxO,MAAO8R,CAAAA,OAAO,CAACD,OAAO,CAACrD,IAAAA,CAAK,CAAEzN,CAAAA,GAAG,CAAC,CAAC,CAACqK,IAAAA,EAAMuG,IAAK,CAAA,GAAA;gBAC7CmL,yBAA0BG,CAAAA,qBAAqB,CAACzO,IAAAA,EAAMpD,IAAMuG,EAAAA,IAAAA,CAAAA,CAAAA;AAC9D,aAAA,CAAA,CAAA;AACF,SAAA,CAAA,CAAA;AACF,KAAA;AACF,CAAA;AAEA;;;;IAKO,MAAMwL,wBAA2B,GAAA,CACtC3O,OAAO,QAAQ,EACfiD,eAAe,SAAS,GAAA;AAExB,IAAA,IAAI,CAACjD,IAAM,EAAA;QACT,OAAOmO,yBAAAA,CAAAA;AACT,KAAA;AACA,IAAA,MAAMhL,IAAOmL,GAAAA,yBAAAA,CAA0BE,WAAW,CAACxO,IAAMiD,EAAAA,YAAAA,CAAAA,CAAAA;AACzD,IAAA,OAAO,CAAC2L,IAAMC,EAAAA,IAAAA,EAAMC,IAAuB3L,GAAAA,IAAAA,CAAKyL,MAAMC,IAAMC,EAAAA,IAAAA,CAAAA,CAAAA;AAC9D,CAAE;;AC3EF;;;;;IAMA,MAAMC,qBAAqB,CAACxa,KAAAA,GAAAA;IAC1B,IAAI,OAAOA,UAAU,QAAU,EAAA;;AAE7B,QAAA,qBAAOhE,GAACC,CAAAA,MAAAA,EAAAA;AAAM+D,YAAAA,QAAAA,EAAAA,KAAAA;;KACT,MAAA,IAAI,OAAOA,KAAAA,KAAU,SAAW,EAAA;;AAErC,QAAA,qBAAOhE,GAACC,CAAAA,MAAAA,EAAAA;AAAM+D,YAAAA,QAAAA,EAAAA,KAAAA,CAAMmO,QAAQ,EAAA;;KACvB,MAAA,IAAI,OAAOnO,KAAAA,KAAU,QAAU,EAAA;;AAEpC,QAAA,qBAAOhE,GAACC,CAAAA,MAAAA,EAAAA;AAAM+D,YAAAA,QAAAA,EAAAA,KAAAA;;AAChB,KAAA,MAAO,IAAIiR,KAAAA,CAAMC,OAAO,CAAClR,KAAQ,CAAA,EAAA;;AAE/B,QAAA,qBACEhE,GAACye,CAAAA,IAAAA,EAAAA;AACEza,YAAAA,QAAAA,EAAAA,KAAAA,CAAMhC,GAAG,CAAC,CAACya,CAAAA,EAAG5Z,kBACb7C,GAAC0e,CAAAA,IAAAA,EAAAA;8BAAYF,kBAAmB/B,CAAAA,CAAAA,CAAAA;AAAvB5Z,iBAAAA,EAAAA,CAAAA,CAAAA,CAAAA;;AAIjB,KAAA,MAAO,IAAI,OAAOmB,KAAU,KAAA,QAAA,IAAYA,UAAU,IAAM,EAAA;;;AAGtD,QAAA,qBACEhE,GAACye,CAAAA,IAAAA,EAAAA;sBACExd,MAAO8R,CAAAA,OAAO,CAAC/O,KAAAA,CAAAA,CAAOhC,GAAG,CAAC,CAAC,CAAC2c,CAAGlC,EAAAA,CAAAA,CAAE,EAAE5Z,CAAAA,iBAClCxC,IAACqe,CAAAA,IAAAA,EAAAA;;sCACCre,IAACue,CAAAA,QAAAA,EAAAA;;AAAQD,gCAAAA,CAAAA;AAAE,gCAAA,GAAA;;;AAAU,wBAAA,GAAA;wBAAEH,kBAAmB/B,CAAAA,CAAAA,CAAAA;;AADnC5Z,iBAAAA,EAAAA,CAAAA,CAAAA,CAAAA;;KAMV,MAAA;;QAEL,qBAAO7C,GAAA,CAACmD,eAAMC,QAAQ,EAAA,EAAA,CAAA,CAAA;AACxB,KAAA;AACF,CAAA,CAAA;AAEA;;AAEC,IACD,MAAMyb,mBAAsB,GAAA,0CAAA,CAAA;AAE5B;;;;;AAKC,IACD,MAAMC,cAAAA,GAAiB,CAACjB,UAAAA,iBACtB7d,GAAC+B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAWsf,EAAAA,mBAAAA;kBAAsBL,kBAAmBX,CAAAA,UAAAA,CAAAA;;AAG3D;;;AAGC,IACD,MAAMrS,KAAAA,GAAQ,CAACuT,SAAAA,GACbA,0BACE/e,GAACkP,CAAAA,IAAAA,EAAAA;QACCgM,EAAG,EAAA,WAAA;QACH8D,EAAG,EAAA,KAAA;QACHzf,SAAU,EAAA,wCAAA;AAETwf,QAAAA,QAAAA,EAAAA,SAAAA;AAGH,KAAA,CAAA,iBAAA/e,GAAA,CAACmD,eAAMC,QAAQ,EAAA,EAAA,CAAA,CAAA;AAGnB;;;;;AAKC,IACD,MAAM6b,SAAY,GAAA,CAACpB,YAAuBb,KAAQ,GAAA,EAAE,iBAClDhd,GAACC,CAAAA,MAAAA,EAAAA;AACCV,QAAAA,SAAAA,EAAW,CAAC,iEAAiE,EAAEyd,KAAAA,CAAM,CAAC;kBAErF7K,QAAS0L,CAAAA,UAAAA,CAAAA;;AA0Bd;;;;;AAKC,IACD,MAAMqB,SAAAA,GAAY,CAACC,SAAAA,iBACjBnf,GAACE,CAAAA,IAAAA,EAAAA;QAAKV,IAAM2f,EAAAA,SAAAA;QAAW/e,MAAO,EAAA,QAAA;QAASE,GAAI,EAAA,YAAA;AACzC,QAAA,QAAA,gBAAAN,GAACkP,CAAAA,IAAAA,EAAAA;YAAKtD,KAAM,EAAA,WAAA;YAAYrM,SAAU,EAAA,WAAA;AAC/B4f,YAAAA,QAAAA,EAAAA,SAAAA;;;AASP,MAAMC,sBAAyB,GAAA,CAC7BD,SACAJ,EAAAA,SAAAA,EACAM,MAEA,GAAA,OAAOF,SAAc,KAAA,QAAA,iBACnBnf,GAACmD,CAAAA,cAAAA,CAAMC,QAAQ,EAAA,EAAA,CAAA,iBAEf/C,IAAC0B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAWsf,EAAAA,mBAAAA;;YACbrT,KAAMuT,CAAAA,SAAAA,CAAAA;AAAW,YAAA,GAAA;YAAEG,SAAUC,CAAAA,SAAAA,CAAAA;;AADUJ,KAAAA,EAAAA,SAAAA,CAAAA,CAAAA;AAK9C,MAAMO,kBAAAA,GAAqB,CAACzB,UAAuBkB,EAAAA,SAAAA,GAAAA;IACjD,IAAI,OAAOlB,eAAe,QAAY,IAAA,OAAOA,eAAe,QAC1D,EAAA,qBAAO7d,GAACmD,CAAAA,cAAAA,CAAMC,QAAQ,EAAA,EAAA,CAAA,CAAA;AACxB,IAAA,qBACE/C,IAAC0B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAWsf,EAAAA,mBAAAA;;YACbrT,KAAMuT,CAAAA,SAAAA,CAAAA;AAAW,YAAA,GAAA;YAAElB,UAAY3E,EAAAA,cAAAA,EAAAA;;AADQ6F,KAAAA,EAAAA,SAAAA,CAAAA,CAAAA;AAI9C,CAAA,CAAA;AAEA,MAAMQ,wBAAAA,GAA2B,CAACvb,KAAkB+a,EAAAA,SAAAA,GAAAA;IAClD,MAAMS,SAAAA,GAAYtK,OAAQlR,CAAAA,KAAAA,CAAAA,GAASA,KAAQ,GAAA;QAACmO,QAASnO,CAAAA,KAAAA,CAAAA;AAAO,KAAA,CAAA;IAC5D,OAAOwb,SAAAA,CAAUrd,MAAM,iBACrBnC,GAAC+B,CAAAA,KAAAA,EAAAA;AACE,QAAA,QAAA,EAAA;;0BAEC1B,IAAC0B,CAAAA,KAAAA,EAAAA;gBAAIxC,SAAWsf,EAAAA,mBAAAA;;oBACbrT,KAAMuT,CAAAA,SAAAA,CAAAA;AAAW,oBAAA,GAAA;oBAAEG,SAAUM,CAAAA,SAAS,CAAC,CAAE,CAAA,CAAA;;AADFT,aAAAA,EAAAA,SAAAA,CAAAA;;eAIvCS,SAAUjG,CAAAA,KAAK,CAAC,CAAGvX,CAAAA,CAAAA,GAAG,CAAC,CAACyd,QAAAA,EAAU5c,kBACnCxC,IAAC0B,CAAAA,KAAAA,EAAAA;oBAAIxC,SAAWsf,EAAAA,mBAAAA;;wBACbrT,KAAMuT,CAAAA,SAAAA,CAAAA;wBACNG,SAAUO,CAAAA,QAAAA,CAAAA;;AAF6B,iBAAA,EAAA,CAAC,EAAEA,QAAAA,CAAS,CAAC,EAAE5c,EAAE,CAAC,CAAA,CAAA;AAK/D,SAAA;AAGH,KAAA,CAAA,iBAAA7C,GAAA,CAACmD,eAAMC,QAAQ,EAAA,EAAA,CAAA,CAAA;AAEnB,CAAA,CAAA;AAOA,MAAMsc,0BAAAA,GAA6B,CACjCC,SACAC,EAAAA,SAAAA,GAAAA;IAEA,IAAI,CAAC1K,OAAQyK,CAAAA,SAAAA,CAAAA,IAAcA,SAAUxd,CAAAA,MAAM,KAAK,CAAG,EAAA,qBAAOnC,GAACmD,CAAAA,cAAAA,CAAMC,QAAQ,EAAA,EAAA,CAAA,CAAA;IACzE,MAAMyc,KAAAA,GAAQF,SAAS,CAAC,CAAE,CAAA,CAAA;AAE1B,IAAA,qBACE3f,GAAC+B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAU,EAAA,eAAA;kBACZsgB,KAAM7d,CAAAA,GAAG,CAAC,CAACkB,IAAAA,GAASkc,uBAAuBlc,IAAKA,CAAAA,IAAI,EAAEA,IAAAA,CAAK1C,KAAK,CAAA,CAAA;OAD/B,CAAC,EAAEof,SAAU,CAAA,MAAM,CAAC,CAAA,CAAA;AAI5D,CAAA,CAAA;AAEA,MAAME,sBAAAA,GAAgD,CACpDjC,UAAAA,EACAC,UACA5L,EAAAA,MAAAA,GAAAA;AAEA,IAAA,IAAI6N,gBAAmB,GAAA,EAAA,CAAA;IACvB,IAAI,OAAOlC,eAAe,QAAU,EAAA;AAClCkC,QAAAA,gBAAAA,GAAmBlC,WAAW3E,cAAc,EAAA,CAAA;AAC9C,KAAA,MAAO,IAAI,OAAO2E,UAAAA,KAAe,UAAU,qBAAO7d,GAAA,CAACmD,eAAMC,QAAQ,EAAA,EAAA,CAAA,CAAA;IAEjE2c,gBAAmBlC,GAAAA,UAAAA,CAAAA;AACnB,IAAA,qBACExd,IAAC0B,CAAAA,KAAAA,EAAAA;QACCxC,SAAWsf,EAAAA,mBAAAA;;YAGVrT,KAAMsS,CAAAA,UAAAA,CAAAA;AAAY,YAAA,GAAA;YAAEmB,SAAUc,CAAAA,gBAAAA,EAAkB7N,QAAQ8K,KAAS,IAAA,EAAA,CAAA;;AAF7D,KAAA,EAAA,CAAC,cAAc,EAAEc,UAAAA,CAAW,CAAC,EAAEiC,iBAAiB,CAAC,CAAA,CAAA;AAK5D,CAAA,CAAA;AAEA,MAAMC,4BAAAA,GAAsD,CAC1DnC,UACAC,EAAAA,UAAAA,GAAAA;AAEA,IAAA,IAAIiC,gBAAmB,GAAA,EAAA,CAAA;IACvB,IAAI,OAAOlC,eAAe,QAAU,EAAA;AAClCkC,QAAAA,gBAAAA,GAAmBlC,WAAW3E,cAAc,EAAA,CAAA;AAC9C,KAAA,MAAO,IAAI,OAAO2E,UAAAA,KAAe,UAAU,qBAAO7d,GAAA,CAACmD,eAAMC,QAAQ,EAAA,EAAA,CAAA,CAAA;IAEjE2c,gBAAmBlC,GAAAA,UAAAA,CAAAA;IAEnB,IAAI5B,cAAAA,CAAAA;IACJ,IACE,OAAO8D,qBAAqB,QAC5B,IAAA,CAACpF,MAAMC,MAAOmF,CAAAA,gBAAAA,CAAAA,CAAAA,IACdnF,MAAOmF,CAAAA,gBAAAA,CAAAA,GAAoB,IAC3B,EAAA;QACA9D,cAAiB,GAAA,MAAA,CAAA;KACZ,MAAA,IAAI/G,QAAQ6K,gBAAmB,CAAA,EAAA;QACpC9D,cAAiB8D,GAAAA,gBAAAA,CACd/d,GAAG,CAAC,CAACoL,IAAAA,GAAAA;YACJ,IACE,OAAOA,SAAS,QAChB,IAAA,CAACuN,MAAMC,MAAOxN,CAAAA,IAAAA,CAAAA,CAAAA,IACdwN,MAAOxN,CAAAA,IAAAA,CAAAA,GAAQ,IACf,EAAA;gBACA,OAAO,MAAA,CAAA;AACT,aAAA;YACA,OAAOA,IAAAA,CAAAA;AACT,SAAA,CAAA,CACCoM,IAAI,CAAC,IAAA,CAAA,CAAA;KACH,MAAA;QACLyC,cAAiB8D,GAAAA,gBAAAA,CAAAA;AACnB,KAAA;AAEA,IAAA,qBACE1f,IAAC0B,CAAAA,KAAAA,EAAAA;QACCxC,SAAWsf,EAAAA,mBAAAA;;YAGVrT,KAAMsS,CAAAA,UAAAA,CAAAA;AAAY,YAAA,GAAA;YAAEmB,SAAUhD,CAAAA,cAAAA,CAAAA;;AAF1B,KAAA,EAAA,CAAC,cAAc,EAAE6B,UAAAA,CAAW,CAAC,EAAE7B,eAAe,CAAC,CAAA,CAAA;AAK1D,CAAA,CAAA;AAEA,MAAMgE,gBAAAA,GAA0C,CAC9CpC,UACAC,EAAAA,UAAAA,GAAAA;AAEA,IAAA,IAAI,OAAOD,UAAe,KAAA,QAAA,EAAU,qBAAO7d,GAAA,CAACmD,eAAMC,QAAQ,EAAA,EAAA,CAAA,CAAA;AAE1D,IAAA,MAAM2c,gBAAmBlC,GAAAA,UAAAA,CAAAA;AACzB,IAAA,qBACExd,IAAC0B,CAAAA,KAAAA,EAAAA;QACCxC,SAAW,EAAA,CAAC,EAAEsf,mBAAAA,CAAoB,CAAC;;AAGlCf,YAAAA,UAAAA,iBACC9d,GAACkP,CAAAA,IAAAA,EAAAA;gBACCgM,EAAG,EAAA,WAAA;gBACH8D,EAAG,EAAA,KAAA;gBACHzf,SAAU,EAAA,6CAAA;AAETue,gBAAAA,QAAAA,EAAAA,UAAAA;AAGH,aAAA,CAAA,iBAAA9d,GAAA,CAACmD,eAAMC,QAAQ,EAAA,EAAA,CAAA;0BAGjBpD,GAAC+B,CAAAA,KAAAA,EAAAA;AACC,gBAAA,QAAA,gBAAA/B,GAACkP,CAAAA,IAAAA,EAAAA;oBAAK3P,SAAU,EAAA,uDAAA;8BACb4S,QAAS0L,CAAAA,UAAAA,CAAAA;;;;AAhBT,KAAA,EAAA,CAAC,cAAc,EAAEC,UAAAA,CAAW,CAAC,EAAEiC,iBAAiB,CAAC,CAAA,CAAA;AAqB5D,CAAA,CAAA;AAEA,MAAMG,wBAAAA,GAAkD,CACtDC,UACApB,EAAAA,SAAAA,GAAAA;AAEA,IAAA,OAAO7J,OAAQiL,CAAAA,UAAAA,CAAAA,IAAeA,UAAYhe,EAAAA,MAAAA,iBACxCnC,GAAC+B,CAAAA,KAAAA,EAAAA;AACE,QAAA,QAAA,EAAA;;0BAEC1B,IAAC0B,CAAAA,KAAAA,EAAAA;gBAAIxC,SAAWsf,EAAAA,mBAAAA;;AACbrT,oBAAAA,KAAAA,CAAMuT,SAAa,IAAA,EAAA,CAAA;AAAI,oBAAA,GAAA;oBAAEE,SAAUkB,CAAAA,UAAU,CAAC,CAAE,CAAA,CAAA;;eADT,CAAC,cAAc,EAAEpB,SAAAA,CAAU,CAAC,CAAA;;eAInEoB,UAAW5G,CAAAA,KAAK,CAAC,CAAGvX,CAAAA,CAAAA,GAAG,CAAC,CAACtC,IAAAA,EAAMmD,kBAChCxC,IAAC0B,CAAAA,KAAAA,EAAAA;oBAAIxC,SAAWsf,EAAAA,mBAAAA;;sCACd7e,GAAC+B,CAAAA,KAAAA,EAAAA,EAAAA,CAAAA;wBACAkd,SAAUvf,CAAAA,IAAAA,CAAAA;;AAF6B,iBAAA,EAAA,CAAC,EAAEA,IAAAA,CAAK,CAAC,EAAEmD,EAAE,CAAC,CAAA,CAAA;AAK3D,SAAA;AAGH,KAAA,CAAA,iBAAA7C,GAAA,CAACmD,eAAMC,QAAQ,EAAA,EAAA,CAAA,CAAA;AAEnB,CAAA,CAAA;AAEA,MAAMgd,gBAAAA,GAA0C,CAC9CC,QACAC,EAAAA,CAAAA,GAAAA;AAEA,IAAA,IAAI,OAAOD,QAAa,KAAA,QAAA,IAAY,EAAEjL,mBAAAA,IAAuBiL,QAAO,CAAI,EAAA;QACtE,qBAAOrgB,GAAA,CAACmD,eAAMC,QAAQ,EAAA,EAAA,CAAA,CAAA;AACxB,KAAA;AAEA,IAAA,IAAIid,QAAQ,CAACjL,mBAAAA,CAAoB,KAAKC,WAAAA,CAAYM,UAAU,EAAE;AAC5D,QAAA,qBAAO3V,GAACugB,CAAAA,KAAAA,EAAAA;YAAM3U,KAAM,EAAA,OAAA;AAAQ,YAAA,QAAA,EAAA,gCAAA;;AAC9B,KAAA;AACA,IAAA,IAAIyU,QAAQ,CAACjL,mBAAAA,CAAoB,KAAKC,WAAAA,CAAYQ,YAAY,EAAE;AAC9D,QAAA,qBAAO7V,GAACugB,CAAAA,KAAAA,EAAAA;YAAM3U,KAAM,EAAA,KAAA;AAAM,YAAA,QAAA,EAAA,uCAAA;;AAC5B,KAAA;AACA,IAAA,qBACE5L,GAACugB,CAAAA,KAAAA,EAAAA;QAAM3U,KAAM,EAAA,QAAA;AAAS,QAAA,QAAA,EAAA,gEAAA;;AAI1B,CAAA,CAAA;AAEA,MAAM4U,sCAAsC,CAC1CC,kBAAAA,GAAAA;IAEA,IACExL,KAAAA,CAAMC,OAAO,CAACuL,kBACdxL,CAAAA,IAAAA,KAAAA,CAAMC,OAAO,CAACuL,kBAAkB,CAAC,CAAA,CAAE,CACnC,EAAA;AACA,QAAA,OAAOA,kBAAkB,CAAC,CAAE,CAAA,CAACjH,IAAI,CAAC,IAAA,CAAA,CAAA;AACpC,KAAA;IACA,OAAOiH,kBAAAA,CAAAA;AACT,CAAA,CAAA;AAEA,MAAMC,gBAAAA,GAA0C,CAC9C7C,UAAAA,EACA8C,MACAC,EAAAA,WAAAA,GAAAA;;AAGA,IAAA,MAAMP,QAAWxC,GAAAA,UAAAA,CAAAA;AAEjB,IAAA,IAAI+C,gBAAgBza,SAAW,EAAA;QAC7B,qBAAOnG,GAAA,CAACmD,eAAMC,QAAQ,EAAA,EAAA,CAAA,CAAA;AACxB,KAAA;IACA,IAAIwd,WAAAA,EAAaC,eAAe1a,SAAW,EAAA;QACzC,qBAAOnG,GAAA,CAACmD,eAAMC,QAAQ,EAAA,EAAA,CAAA,CAAA;AACxB,KAAA;IAEA,IAAIwd,WAAAA,CAAYxM,WAAW,KAAK,MAAQ,EAAA;QACtC,MAAMyI,IAAAA,GAAO+D,WAAYC,CAAAA,UAAU,GAC9BR,CAAAA,QAASxD,CAAAA,IAAI,IAAI,EAAE,EAAEpZ,MAAM,CAAC,CAACqd,GAC5BF,GAAAA,WAAAA,CAAYC,UAAU,EAAEtG,SAASuG,GAAIvP,CAAAA,QAAQ,CAE/C8O,CAAAA,GAAAA,QAAAA,CAASxD,IAAI,CAAA;AAEjB,QAAA,qBACE7c,GAAC+B,CAAAA,KAAAA,EAAAA;sBACE6a,cAAe,CAAA;gBAAE5Y,KAAO6Y,EAAAA,IAAAA;AAAK,aAAA,CAAA;AADtB,SAAA,EAAA,CAAC,WAAW,EAAE+D,WAAYvN,CAAAA,KAAK,CAAC,CAAC,CAAA,CAAA;AAI/C,KAAA;IACA,qBAAOrT,GAAA,CAACmD,eAAMC,QAAQ,EAAA,EAAA,CAAA,CAAA;AACxB,CAAA,CAAA;AAEO,MAAM2d,0BAA6B,GAAA,CACxC1N,KACAgN,EAAAA,QAAAA,GAAAA;;AAGA,IAAA,IAAII,kBACFpN,GAAAA,KAAAA,CAAMA,KAAK,IAAIrC,QAAS,CAAA;QAAEtM,IAAM2b,EAAAA,QAAAA;AAAUvP,QAAAA,IAAAA,EAAMuC,MAAMA,KAAK;AAAC,KAAA,CAAA,CAAA;IAE9D,IAAIoN,kBAAAA,KAAuBta,SAAasa,IAAAA,kBAAAA,KAAuB,IAAM,EAAA;AACnE,QAAA,IAAIpN,KAAM2N,CAAAA,qBAAqB,KAAK,KAAA,EAAO,OAAO,IAAA,CAAA;AAClD,QAAA,IAAI3N,KAAMjB,CAAAA,mBAAmB,EAC3BqO,kBAAAA,GAAqBpN,MAAMjB,mBAAmB,CAAA;KAEhDqO,MAAAA,kBAAAA,GACEA,mBAAmBte,MAAM,GAAG,IAAIse,kBAAkB,CAAC,EAAE,GAAG,EAAA,CAAA;IAE5D,MAAMjV,KAAAA,GACJ6H,MAAM4N,YAAY,KAAK9a,aAAakN,KAAO4N,EAAAA,YAAAA,GACvC5N,KAAMhH,CAAAA,IAAI,GACVlG,SAAAA,CAAAA;AAEN,IAAA,MAAM+a,qBAAqB9C,wBACzB/K,CAAAA,KAAAA,CAAMe,WAAW,EACjBf,OAAOgB,QAAY,IAAA,SAAA,CAAA,CAAA;AAErB,IAAA,OAAQhB,MAAMe,WAAW;QACvB,KAAK,kBAAA;AAAoB,YAAA;AACvB,gBAAA,OAAO8M,kBAAmBb,CAAAA,QAAAA,EAAU7U,KAAO6H,EAAAA,KAAAA,CAAMnB,MAAM,CAAA,CAAA;AACzD,aAAA;QACA,KAAK,MAAA;AAAQ,YAAA;gBACX,OAAOgP,kBAAAA,CAAmBb,UAAU7U,KAAO,EAAA;AAAE,oBAAA,GAAG6H,MAAMnB,MAAM;AAAE,oBAAA,GAAGmB,KAAK;AAAC,iBAAA,CAAA,CAAA;AACzE,aAAA;AACA,QAAA;YACE,IACEoN,kBAAAA,IACAvL,QAAQuL,kBACRA,CAAAA,IAAAA,kBAAAA,CAAmBte,MAAM,GAAG,CAAA,IAC5Bse,kBAAkB,CAAC,CAAA,CAAE,CAACte,MAAM,KAAK,KACjCse,kBAAmBtL,CAAAA,KAAK,CAAC,CAACgM,GAAAA,GAAiB,OAAOA,GAAAA,KAAQ,QAC1D,CAAA,EAAA;AACAV,gBAAAA,kBAAAA,GACED,mCAAoCC,CAAAA,kBAAAA,CAAAA,CAAAA;AACtC,gBAAA,OAAOS,kBAAmBT,CAAAA,kBAAAA,EAAoBjV,KAAO6H,EAAAA,KAAAA,CAAMnB,MAAM,CAAA,CAAA;aAC5D,MAAA,IACLuO,kBAAuBta,KAAAA,SAAAA,IACvBsa,kBAAuB,KAAA,IAAA,EAEvB,OAAOS,kBAAmBT,CAAAA,kBAAAA,EAAoBjV,KAAO6H,EAAAA,KAAAA,CAAMnB,MAAM,CAAA,CAAA;AACvE,KAAA;IAEA,OAAO,IAAA,CAAA;AACT,CAAE,CAAA;AAEF,MAAMkP,sCAGF,GAAA;IACF1hB,IAAM,EAAA;QAAEgU,OAASoM,EAAAA,sBAAAA;AAAuB,KAAA;IACxCrM,MAAQ,EAAA;QACNC,OAASoM,EAAAA,sBAAAA;QACTxC,qBAAuB0C,EAAAA,4BAAAA;AACzB,KAAA;IACA9c,IAAM,EAAA;QAAEwQ,OAAS0L,EAAAA,sBAAAA;AAAuB,KAAA;IACxCiC,QAAU,EAAA;QAAE3N,OAASwM,EAAAA,wBAAAA;AAAyB,KAAA;IAC9CoB,QAAU,EAAA;QACR5N,OAAS6L,EAAAA,wBAAAA;QACTgC,aAAe7B,EAAAA,0BAAAA;AACjB,KAAA;IACA8B,KAAO,EAAA;QAAE9N,OAASoL,EAAAA,cAAAA;AAAe,KAAA;IACjCsB,gBAAkB,EAAA;QAAE1M,OAAS0M,EAAAA,gBAAAA;AAAiB,KAAA;IAC9CvD,IAAM,EAAA;QAAEnJ,OAASgN,EAAAA,gBAAAA;AAAiB,KAAA;IAClCnD,MAAQ,EAAA;QAAE7J,OAAS4L,EAAAA,kBAAAA;AAAmB,KAAA;IACtC9B,UAAY,EAAA;QAAE9J,OAASuM,EAAAA,gBAAAA;AAAiB,KAAA;AAC1C,CAAA,CAAA;AAEAlC,yBAAAA,CAA0BI,4BAA4B,CACpDiD,sCAAAA,CAAAA;;ACpdIK,MAAAA,UAAAA,GAAa,CAAC,EAAEC,IAAI,EAAEjU,MAAM,EAAEkU,MAAM,EAAsB,GAAA;AAC9D,IAAA,MAAMC,kBAAkBC,OACtB,CAAA,IACEF,MAAO7H,CAAAA,IAAI,CAAC,CAACzG,KAAAA,GAAAA;;YAEX,IAAI,CAACA,KAAMA,CAAAA,KAAK,EAAE;gBAChB,OAAO,KAAA,CAAA;AACT,aAAA;AACA,YAAA,MAAMoN,qBAAqBzP,QAAS,CAAA;gBAClCtM,IAAMgd,EAAAA,IAAAA;AACN5Q,gBAAAA,IAAAA,EAAMuC,MAAMA,KAAK;AACnB,aAAA,CAAA,CAAA;YACA,OACEoN,kBAAAA,IACAA,kBAAmBte,CAAAA,MAAM,GAAG,CAAA,IAC5Bse,kBAAkB,CAAC,CAAA,CAAE,CAACte,MAAM,KAAK,CAAA,CAAA;SAGvC,CAAA,EAAA;AAACwf,QAAAA,MAAAA;AAAQD,QAAAA,IAAAA;AAAK,KAAA,CAAA,CAAA;AAGhB,IAAA,IAAI,CAACE,eAAiB,EAAA;QACpB,OAAO,IAAA,CAAA;AACT,KAAA;AAEA,IAAA,qBACEvhB,IAAC0B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAU,EAAA,gBAAA;;0BACbS,GAAC+B,CAAAA,KAAAA,EAAAA;gBAAIxC,SAAU,EAAA,oCAAA;AACb,gBAAA,QAAA,gBAAAS,GAACkP,CAAAA,IAAAA,EAAAA;oBAAKtD,KAAM,EAAA,SAAA;oBAAUoT,EAAI,EAAA,GAAA;AAAOvR,oBAAAA,QAAAA,EAAAA,MAAAA;;;0BAEnCzN,GAAC+B,CAAAA,KAAAA,EAAAA;gBACCxC,SAAU,EAAA,KAAA;0BACToiB,MAAO3f,CAAAA,GAAG,CAAC,CAACqR,KAAAA,GAAAA;AACX,oBAAA,OAAO0N,2BAA2B1N,KAAOqO,EAAAA,IAAAA,CAAAA,CAAAA;AAC3C,iBAAA,CAAA;;;;AAIR;;ACvCA,MAAMI,kBAAkB,CAAC,EAAEJ,IAAI,EAAEK,MAAM,EAAwB,GAAA;AAC7D,IAAA,qBACE/hB,GAAC+B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAU,EAAA,2BAAA;AACZwiB,QAAAA,QAAAA,EAAAA,MAAAA,CAAO/f,GAAG,CAAC,CAAC,EAAEyL,MAAM,EAAEkU,MAAM,EAAE,GAAA;AAC7B,YAAA,qBACE3hB,GAACyhB,CAAAA,UAAAA,EAAAA;gBACCC,IAAMA,EAAAA,IAAAA;gBACNjU,MAAQA,EAAAA,MAAAA;gBACRkU,MAAQA,EAAAA,MAAAA;eACH,CAAC,EAAElU,MAAO,CAAA,YAAY,CAAC,CAAA,CAAA;AAGlC,SAAA,CAAA;;AAGN,CAAA;;ACbA,MAAMuU,oBAAoB,CAAC,EACzBN,IAAI,EACJO,WAAW,EACY,GAAA;AAEvB,IAAA,MAAMC,aAAalR,QAAS,CAAA;QAC1BtM,IAAMgd,EAAAA,IAAAA;QACN5Q,IAAMmR,EAAAA,WAAAA,EAAaxU,QAAQ4F,KAAS,IAAA,EAAA;AACtC,KAAA,CAAA,CAAA;AACA,IAAA,qBACEhT,IAAC0B,CAAAA,KAAAA,EAAAA;;0BACC/B,GAACkP,CAAAA,IAAAA,EAAAA;gBAAKlE,IAAK,EAAA,IAAA;gBAAKsD,CAAG,EAAA,GAAA;gBAAK/O,SAAU,EAAA,MAAA;AAC/B2iB,gBAAAA,QAAAA,EAAAA,UAAAA;;0BAEH7hB,IAAC8hB,CAAAA,IAAAA,EAAAA;AAAKC,gBAAAA,YAAAA,EAAcH,WAAaI,EAAAA,IAAAA,GAAO,CAAA,CAAE,EAAEC,OAAAA;;AAC1C,kCAAAtiB,GAAA,CAACmiB,KAAKI,IAAI,EAAA;kCACPN,WAAaI,EAAAA,IAAAA,CAAKrgB,IAAI,CAACwgB,GAAAA,GAAAA;4BACtB,qBACExiB,GAAA,CAACmiB,KAAKM,GAAG,EAAA;AAACze,gCAAAA,KAAAA,EAAOwe,IAAIF,OAAO;AACzBE,gCAAAA,QAAAA,EAAAA,GAAAA,CAAIF,OAAO;AADqB,6BAAA,EAAA,CAAC,EAAEE,GAAAA,CAAIF,OAAO,CAAC,YAAY,CAAC,CAAA,CAAA;AAInE,yBAAA,CAAA;;oBAECL,WAAaI,EAAAA,IAAAA,CAAKrgB,IAAI,CAACwgB,GAAAA,GAAAA;wBACtB,qBACExiB,GAAA,CAACmiB,KAAKO,KAAK,EAAA;AAAC1e,4BAAAA,KAAAA,EAAOwe,IAAIF,OAAO;AAC5B,4BAAA,QAAA,gBAAAtiB,GAAC8hB,CAAAA,eAAAA,EAAAA;gCAAgBJ,IAAMA,EAAAA,IAAAA;AAAMK,gCAAAA,MAAAA,EAAQS,IAAIT,MAAM;;AADZ,yBAAA,EAAA,CAAC,EAAES,GAAAA,CAAIF,OAAO,CAAC,kBAAkB,CAAC,CAAA,CAAA;AAI3E,qBAAA,CAAA;;;;;AAIV,CAAA;;ACrCA,MAAMK,2BAA2B,CAAC,EAAEC,SAAS,EAAElF,UAAU,EAAuB,GAAA;AAE9E,IAAA,MAAMmF,WAAc,GAAA,wDAAA,CAAA;AACpB,IAAA,qBACE7iB,GAAC+B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAU,EAAA,WAAA;AACXme,QAAAA,QAAAA,EAAAA,UAAAA,CAAWoF,OAAO,IAClBF,SAAS,CAACxN,mBAAoB,CAAA,IAC1BwN,SAAS,CAACxN,mBAAoB,CAAA,KAAKC,WAAYM,CAAAA,UAAU,iBAC3D3V,GAAC+B,CAAAA,KAAAA,EAAAA;AAAIxC,YAAAA,SAAAA,EAAW,CAAC,EAAEsjB,WAAY,CAAA,8CAA8C,CAAC;AAAE,YAAA,QAAA,EAAA,+BAAA;2BAIhF7iB,GAAC+B,CAAAA,KAAAA,EAAAA;AAAIxC,YAAAA,SAAAA,EAAW,CAAC,EAAEsjB,WAAY,CAAA,gDAAgD,CAAC;AAAE,YAAA,QAAA,EAAA,sCAAA;;;AAM5F,CAAA;;ACrBA,MAAME,gBAAAA,GAAmB,CACvBrB,IACAsB,EAAAA,SAAAA,GAAAA;AAEA,IAAA,MAAMC,SAA6C,EAAC,CAAA;AACpDhiB,IAAAA,MAAAA,CAAOC,IAAI,CAAC8hB,SAAW5hB,CAAAA,CAAAA,OAAO,CAAC,CAACV,GAAAA,GAAAA;QAC9B,MAAMsD,KAAAA,GAAQgf,SAAS,CAACtiB,GAAgC,CAAA,CAAA;AACxD,QAAA,IAAIsD,SAAS0d,IAAQ,IAAA,OAAOA,IAAI,CAAC1d,KAAAA,CAAM,KAAK,QAAU,EAAA;AACpDif,YAAAA,MAAM,CAACviB,GAAAA,CAAI,GAAGghB,IAAI,CAAC1d,KAAM,CAAA,CAAA;SACpB,MAAA;YACLif,MAAM,CAACviB,IAAI,GAAGyF,SAAAA,CAAAA;AAChB,SAAA;AACF,KAAA,CAAA,CAAA;IACA,OAAO8c,MAAAA,CAAAA;AACT,CAAA,CAAA;AAQA,MAAMC,qBAAqB,CAAC,EAC1BN,SAAS,EACTO,aAAa,EACbC,kBAAqB,GAAA;IACnBC,UAAY,EAAA,OAAA;IACZC,gBAAkB,EAAA,aAAA;IAClBC,OAAS,EAAA,MAAA;AACX,CAAC,EACsB,GAAA;AACvB,IAAA,MAAMC,kBAAkB3B,OAAQ,CAAA,IAAA;QAC9B,IAAI,CAACsB,iBAAiB,CAACP,SAAS,CAACO,aAAc9P,CAAAA,KAAK,CAAC,EAAE,OAAOlN,SAAAA,CAAAA;AAC9D,QAAA,MAAMsd,kBAAqBb,GAAAA,SAAS,CAACO,aAAAA,CAAc9P,KAAK,CAAC,CAAA;AACzD,QAAA,OAAOoQ,mBAAmBzhB,GAAG,CAAC,CAAC0f,IAAAA,GAC7BqB,iBAAiBrB,IAAM0B,EAAAA,kBAAAA,CAAAA,CAAAA,CAAAA;KAExB,EAAA;AAACR,QAAAA,SAAAA;AAAWO,QAAAA,aAAAA;AAAeC,QAAAA,kBAAAA;AAAmB,KAAA,CAAA,CAAA;AAEjD,IAAA,qBACEpjB,GAAC0jB,CAAAA,SAAAA,EAAAA;gCACCrjB,IAAA,CAACqjB,UAAUzU,IAAI,EAAA;YAACjL,KAAM,EAAA,eAAA;;AACpB,8BAAAhE,GAAA,CAAC0jB,UAAUC,OAAO,EAAA;AAChB,oBAAA,QAAA,gBAAA3jB,GAACkP,CAAAA,IAAAA,EAAAA;AAAMiU,wBAAAA,QAAAA,EAAAA,aAAAA,EAAe9W,IAAQ,IAAA,qBAAA;;;AAEhC,8BAAArM,GAAA,CAAC0jB,UAAUhB,KAAK,EAAA;AACd,oBAAA,QAAA,gBAAA1iB,GAAC4jB,CAAAA,KAAAA,EAAAA;kCACEJ,eACCA,IAAAA,eAAAA,CAAgBxhB,GAAG,CACjB,CAAC6hB,KAAAA,GAAAA;;4BAEC,IACEA,KAAK,CAAC,YAAa,CAAA,KAAK1d,aACxB0d,KAAK,CAAC,SAAU,CAAA,KAAK1d,SACrB,EAAA;gCACA,OAAO,IAAA,CAAA;AACT,6BAAA;AACA,4BAAA,MAAMyB,EAAKic,GAAAA,KAAK,CAACT,kBAAAA,CAAmBG,OAAO,CAAC,CAAA;AAC5C,4BAAA,qBACEljB,IAACyjB,CAAAA,KAAAA,EAAAA;gCAAeC,GAAI,EAAA,IAAA;;kDAClB/jB,GAACkP,CAAAA,IAAAA,EAAAA;kDAAM2U,KAAK,CAAC,aAAa,IAAI,EAAA;;kDAC9B7jB,GAAC6P,CAAAA,MAAAA,EAAAA;AAAOnD,wCAAAA,WAAAA,gBAAa1M,GAACgkB,CAAAA,UAAAA,EAAAA,EAAAA,CAAAA;AAAiBnY,wCAAAA,QAAAA,EAAU,CAACjE,EAAAA;AAAI,wCAAA,QAAA,EAAA,eAAA;;;AAF5CA,6BAAAA,EAAAA,EAAAA,CAAAA,CAAAA;AAKhB,yBAAA,CAAA;;;;;;AAOhB,CAAA;;AChEA,MAAMqc,aAAa,CAAC,EAClBzjB,KAAK,EACLjB,SAAAA,GAAY,mCAAmC,EAIhD,GAAA;AACC,IAAA,qBACES,GAAC+B,CAAAA,KAAAA,EAAAA;AACC,QAAA,QAAA,gBAAA/B,GAAC8C,CAAAA,IAAAA,EAAAA;YAAGvD,SAAWA,EAAAA,SAAAA;AAAYiB,YAAAA,QAAAA,EAAAA,KAAAA;;;AAGjC,CAAA,CAAA;AAQA,MAAM0jB,2BAAAA,GAA8B,CAAC,EACnCxC,IAAI,EACJO,WAAW,EACXkC,aAAa,EACoB,GAAA;AACjC,IAAA,IAAIjC,UAAa,GAAA,EAAA,CAAA;IACjB,IAAID,WAAAA,EAAaxU,QAAQ4F,KAAO,EAAA;AAC9B,QAAA,MAAMjP,MAAkB4M,QAAS,CAAA;YAC/BF,IAAMmR,EAAAA,WAAAA,CAAYxU,MAAM,CAAC4F,KAAK;YAC9B3O,IAAMgd,EAAAA,IAAAA;AACR,SAAA,CAAA,CAAA;AACAQ,QAAAA,UAAAA,GAAa9d,IAAIjC,MAAM,GAAGgQ,SAAS/N,GAAG,CAAC,EAAE,CAAI,GAAA,EAAA,CAAA;AAC/C,KAAA;AAEA,IAAA,MAAMggB,WAAW/Z,kBAAmB,CAAA,IAAA;QAClC,IAAI4X,WAAAA,KAAgB9b,SAAa8b,IAAAA,WAAAA,KAAgB,IAAM,EAAA;AACrD,YAAA,qBAAOjiB,GAAC+B,CAAAA,KAAAA,EAAAA;AAAI,gBAAA,QAAA,EAAA,oCAAA;;SACP,MAAA;YACL,OAAOkgB,WAAAA,EAAaoC,YAAariB,CAAAA,GAAAA,CAAI,CAACqR,KAAAA,GAAAA;AACpC,gBAAA,qBACErT,GAAC+B,CAAAA,KAAAA,EAAAA;AAECxC,oBAAAA,SAAAA,EAAW,CAAC,KAAK,EACf8T,KAAAA,CAAMiR,UAAU,IAAI,MAAUjR,IAAAA,KAAAA,CAAMiR,UAAU,KAAKne,SAC/C,GAAA,QAAA,GACA,QACL,CAAC;AAEF,oBAAA,QAAA,gBAAA9F,IAAC0B,CAAAA,KAAAA,EAAAA;wBAAIxC,SAAU,EAAA,eAAA;;AACZ8T,4BAAAA,KAAAA,EAAOkR,0BACNvkB,GAAC+B,CAAAA,KAAAA,EAAAA;gCAAIxC,SAAU,EAAA,mBAAA;AAAqB8T,gCAAAA,QAAAA,EAAAA,KAAAA,CAAMkR,SAAS;AACjD,6BAAA,CAAA,GAAA,IAAA;AACHlR,4BAAAA,KAAAA,CAAMsO,MAAM,CAAC3f,GAAG,CAAC,CAACqR,KAAAA,GAAAA;gCACjB,MAAM+G,OAAAA,GAAU2G,2BACd1N,KACAqO,EAAAA,IAAAA,CAAAA,CAAAA;AAEF,gCAAA,IAAItH,YAAY,IAAM,EAAA;AACpB,oCAAA,qBACEpa,GAAC+B,CAAAA,KAAAA,EAAAA;wCAECxC,SAAW,EAAA,CAAC,iFAAiF,EAC3F8T,KAAAA,EAAO1S,aAAa,MAAA,CAAO,IAAI,EAAA,CAChC,CAAC;AAEDyZ,wCAAAA,QAAAA,EAAAA,OAAAA;AALI,qCAAA,EAAA,CAAC,KAAK,EAAE/G,KAAMA,CAAAA,KAAK,CAAC,CAAC,CAAA,CAAA;AAQhC,iCAAA;AACF,6BAAA,CAAA;;;mBA5BG,CAAC,EAAEA,MAAMsO,MAAM,CAACnI,IAAI,CAAC,GAAA,CAAA,CAAK,QAAQ,CAAC,CAAA,CAAA;AAgC9C,aAAA,CAAA,CAAA;AACF,SAAA;KACC,EAAA;AAACyI,QAAAA,WAAAA;AAAaP,QAAAA,IAAAA;AAAK,KAAA,CAAA,CAAA;AAEtB,IAAA,qBACErhB,IAAC0B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAU,EAAA,eAAA;;0BACbS,GAACikB,CAAAA,UAAAA,EAAAA;gBACCzjB,KAAO0hB,EAAAA,UAAAA;AACP3iB,gBAAAA,SAAAA,EAAW0iB,aAAaxU,MAAQlO,EAAAA,SAAAA;;YAEjC4kB,aAAkBhe,KAAAA,SAAAA,IAAage,aAAerB,EAAAA,OAAAA,iBAC7C9iB,GAAC2iB,CAAAA,wBAAAA,EAAAA;gBAAyBC,SAAWlB,EAAAA,IAAAA;gBAAMhE,UAAYyG,EAAAA,aAAAA;AAEvD,aAAA,CAAA,GAAA,KAAA;0BAEFnkB,GAAC+B,CAAAA,KAAAA,EAAAA;gBAAIxC,SAAU,EAAA,uBAAA;AAAyB6kB,gBAAAA,QAAAA,EAAAA,QAAAA;;AACvCnC,YAAAA,WAAAA,EAAakB,+BACZnjB,GAACkjB,CAAAA,kBAAAA,EAAAA;gBACCN,SAAWlB,EAAAA,IAAAA;AACXyB,gBAAAA,aAAAA,EAAelB,WAAakB,EAAAA,aAAAA;;;;AAKtC,CAAA;;ACtGA,MAAMqB,YAAe,GAAA,IAAA;AACnB,IAAA,MAAM,EAAEhQ,eAAiB5C,EAAAA,MAAM,EAAE8C,YAAY,EAAE,GAAGC,mBAAAA,EAAAA,CAAAA;IAClD,MAAM,CAAC8P,QAAQ,EAAEC,IAAI,EAAEC,KAAK,EAAE,CAAC,GAAGC,aAAc,CAAA,KAAA,CAAA,CAAA;IAChD,MAAM1iB,KAAAA,GAAQ0P,MAAQiT,EAAAA,mBAAAA,EAAqBC,GAAO,IAAA,SAAA,CAAA;AAClD,IAAA,IAAIC,SAAY,GAAA,oBAAA,CAAA;AAEhB,IAAA,IAAIrQ,YAAc,EAAA;QAChB,MAAMsQ,OAAAA,GAAUtQ,YAAY,CAACxS,KAAM,CAAA,CAAA;QACnC,MAAM+iB,QAAAA,GAAW,CAAC,WAAW,EAAEC,kBAAAA,CAC7B,OAAOF,OAAW,IAAA,QAAA,GAAW,QAAY,GAAA,SAAA,CAAA,CACzC,CAAC,CAAA;AACHD,QAAAA,SAAAA,GAAY,CAAC,CAAC,EAAEE,QAAAA,CAAS,CAAC,CAAA;AAC5B,KAAA;IAEAxd,SAAU,CAAA,IAAA;AACR,QAAA,IAAIxG,OAAOC,IAAI,CAACwT,YAAcvS,CAAAA,CAAAA,MAAM,GAAG,CAAG,EAAA;AACxCuiB,YAAAA,IAAAA,EAAAA,CAAAA;AACF,SAAA;KACC,EAAA;AAAChQ,QAAAA,YAAAA;AAAcgQ,QAAAA,IAAAA;AAAK,KAAA,CAAA,CAAA;AAEvB,IAAA,IAAI,CAAChQ,YAAc,EAAA;QACjB,OAAO,IAAA,CAAA;AACT,KAAA;IAEA,qBACErU,IAAA,CAAC8kB,OAAOC,IAAI,EAAA;QAACX,MAAQA,EAAAA,MAAAA;QAAQY,OAASV,EAAAA,KAAAA;QAAO3Z,IAAK,EAAA,KAAA;QAAMS,QAAS,EAAA,OAAA;;AAC/D,0BAAAzL,GAAA,CAACmlB,OAAOG,OAAO,EAAA;gBAACC,OAAS,EAAA,GAAA;gBAAKC,IAAM,EAAA,CAAA;;AACpC,0BAAAnlB,IAAA,CAAC8kB,OAAOM,OAAO,EAAA;;AACb,kCAAAplB,IAAA,CAAC8kB,OAAO7V,MAAM,EAAA;;0CACZjP,IAACwP,CAAAA,MAAAA,EAAAA;AAAOnD,gCAAAA,WAAAA,gBAAa1M,GAAC0lB,CAAAA,yBAAAA,EAAAA,EAAAA,CAAAA;gCAAa3Z,OAAS4Y,EAAAA,KAAAA;gCAAO5U,OAAQ,EAAA,SAAA;;AACxD,oCAAA,GAAA;AAAI,oCAAA,MAAA;AACA,oCAAA,GAAA;;;0CAEP/P,GAAC2lB,CAAAA,UAAAA,EAAAA;gCAAW3hB,KAAO+gB,EAAAA,SAAAA;AAChB,gCAAA,QAAA,EAAA,CAAC,EAAEa,MAAM,EAAEC,IAAI,EAAE,iBAChB7lB,GAAC6P,CAAAA,MAAAA,EAAAA;AAAOjE,wCAAAA,KAAAA,EAAOga,SAAS,SAAY,GAAA,WAAA;wCAAa7Z,OAAS8Z,EAAAA,IAAAA;AACvDD,wCAAAA,QAAAA,EAAAA,MAAAA,GAAS,kBAAqB,GAAA,WAAA;;;;;AAKvC,kCAAA5lB,GAAA,CAACmlB,OAAOW,IAAI,EAAA;kCACTlU,MAAOmU,CAAAA,UAAU,iBAClB/lB,GAACgiB,CAAAA,iBAAAA,EAAAA;AACCN,4BAAAA,IAAAA,EAAMhN,gBAAgB,EAAC;AACvBuN,4BAAAA,WAAAA,EAAarQ,OAAOmU,UAAU;6BAC3BnU,MAAOoU,CAAAA,iBAAiB,iBAC7BhmB,GAACkkB,CAAAA,2BAAAA,EAAAA;AAA4BxC,4BAAAA,IAAAA,EAAMhN,gBAAgB,EAAC;AAAGuN,4BAAAA,WAAAA,EAAarQ,OAAOoU,iBAAiB;4BAAE7B,aAAevS,EAAAA,MAAAA,CAAOG,QAAQ,CAACoS,aAAa;2CAC1InkB,GAAC+B,CAAAA,KAAAA,EAAAA;AAAI,4BAAA,QAAA,EAAA,oCAAA;;;;;;;AAKf,CAAA;;ACpDO,MAAMkkB,UAAiC,GAAA;IAC5CC,cAAgB,EAAA,CAACtW,sBACf5P,GAACmmB,CAAAA,eAAAA,EAAAA;AAAU,YAAA,GAAGvW,KAAK;YAAErQ,SAAU,EAAA,aAAA;;IAEjC6mB,iBAAmB,EAAA,CAACxW,sBAClB5P,GAACqmB,CAAAA,eAAAA,EAAAA;AAAS,YAAA,GAAGzW,KAAK;YAAErQ,SAAU,EAAA,aAAA;;IAEhC+mB,kBAAoB,EAAA,CAAC1W,sBACnB5P,GAACumB,CAAAA,iBAAAA,EAAAA;AAAS,YAAA,GAAG3W,KAAK;YAAErQ,SAAU,EAAA,aAAA;;IAEhCinB,gBAAkB,EAAA,CAAC5W,sBACjB5P,GAACymB,CAAAA,cAAAA,EAAAA;AAAY,YAAA,GAAG7W,KAAK;YAAErQ,SAAU,EAAA,aAAA;;AAErC,CAAE;;ACMF,MAAMmnB,gBAAAA,GACJ,CAAC9T,IACD,GAAA,CAAC,EAAEgJ,IAAI,EAAkC,GACvChJ,IAAK,CAAA;AAAE5O,YAAAA,KAAAA,EAAO4X,KAAK+K,QAAQ,EAAA;AAAa/K,YAAAA,IAAAA;AAAK,SAAA,CAAA,CAAA;AAYjD,MAAMgL,iBAAiB,CAAC,EACtBlF,IAAI,EACJmF,IAAI,EACJC,iBAAiB,EACjBC,UAAU,EACVC,aAAa,EACbC,UAAU,EACVC,OAAO,EACa,GAAA;AACpB,IAAA,MAAM,EAAE1S,eAAiB5C,EAAAA,MAAM,EAAE6C,eAAe,EAAE,GAAGE,mBAAAA,EAAAA,CAAAA;AACrD,IAAA,MAAM,EAAEwS,SAAS,EAAEC,OAAO,EAAEC,UAAU,EAAE,GAAGP,iBAAAA,CAAAA;AAC3C,IAAA,MAAMQ,6BAA6B3V,6BAA8BC,CAAAA,MAAAA,CAAAA,CAAAA;AAEjE,IAAA,MAAM2V,OAAOld,kBAAmB,CAAA,IAAA;AAC9B,QAAA,MAAMmd,YAAe5V,GAAAA,MAAAA,CAAO4V,YAAY,IAAI,EAAE,CAAA;AAC9C,QAAA,OAAOA,YAAaxlB,CAAAA,GAAG,CAAC,CAACylB,SAAWpP,EAAAA,GAAAA,GAAAA;YAClC,OAAO;gBACL3X,GAAK,EAAA,CAAC,EAAE+mB,SAAUpU,CAAAA,KAAK,CAAC,CAAC,EAAEgF,IAAI,CAAC;AAChChF,gBAAAA,KAAAA,EAAOoU,UAAUpU,KAAK;AACtBqU,gBAAAA,WAAAA,EAAaD,UAAUpU,KAAK;AAC5B5F,gBAAAA,MAAAA,EAAQga,UAAUpb,IAAI;gBACtBsb,UAAY9W,EAAAA,kBAAAA,CAAiB4W,UAAUpU,KAAK,CAAA;gBAC5CuU,IAAMH,EAAAA,SAAAA,EAAWrT,cACbsS,gBACE1T,CAAAA,0BAAAA,CACEyU,WAAWrT,WACXqT,EAAAA,SAAAA,EAAWI,sBAAsB,SACjC,EAAA;oBACE,GAAIJ,SAAAA,EAAWvV,MAAU,IAAA,EAAE;AAC3BE,oBAAAA,mBAAAA,EAAqBqV,WAAWrV,mBAAuB,IAAA,EAAA;AACzD,iBAAA,CAAA,CAAA,GAGJsU,gBACE1T,CAAAA,0BAAAA,CACE,QACAyU,EAAAA,SAAAA,EAAWI,sBAAsB,SACjC,EAAA;oBACE,GAAIJ,SAAAA,EAAWvV,MAAU,IAAA,EAAE;AAC3BE,oBAAAA,mBAAAA,EAAqBqV,WAAWrV,mBAAuB,IAAA,EAAA;AACzD,iBAAA,CAAA,CAAA;AAGV,aAAA,CAAA;AACF,SAAA,CAAA,CAAA;KACC,EAAA;AAACR,QAAAA,MAAAA,CAAO4V,YAAY;AAAC,KAAA,CAAA,CAAA;AAExB,IAAA,MAAMM,QAAQC,oBAAqB,CAAA;QACjCC,OAAST,EAAAA,IAAAA;AACT7F,QAAAA,IAAAA,EAAMA,QAAQ,EAAE;QAChBuG,aAAeX,EAAAA,0BAAAA;QACfY,gBAAkBZ,EAAAA,0BAAAA;QAClBa,oBAAsB,EAAA,KAAA;AACtB,QAAA,GAAIb,0BACA,GAAA;YACEc,kBAAoBpB,EAAAA,aAAAA;YACpBqB,eAAiBtB,EAAAA,UAAAA;AACnB,SAAA,GACA,EAAE;QACNuB,kBAAoB1W,EAAAA,MAAAA,CAAO2W,WAAW,EAAEC,cAAkB,IAAA,KAAA;QAC1DC,QAAU5B,EAAAA,IAAAA;QACV6B,KAAOzC,EAAAA,UAAAA;QACP0C,gBAAkB,EAAA,KAAA;QAClBC,mBAAqB,EAAA,KAAA;QACrBC,mBAAqB,EAAA,KAAA;QACrBC,kBAAoB,EAAA,IAAA;QACpBC,kBAAoB,EAAA,IAAA;;;;;;;;;AAUpBC,QAAAA,iBAAAA,EAAmBpX,OAAOqX,iBAAiB,GACvC9U,yBAA0BvC,CAAAA,MAAAA,CAAOqX,iBAAiB,CAClD9iB,GAAAA,SAAAA;QACJsC,KAAO,EAAA;AACL0e,YAAAA,SAAAA;AACA,YAAA,GAAIG,0BACA,GAAA;AACEL,gBAAAA,UAAAA;AACAC,gBAAAA,OAAAA;AACF,aAAA,GACA,EAAE;YACNgC,gBAAkB7B,EAAAA,UAAAA;YAClB8B,eAAiB/B,EAAAA,OAAAA;AACjBgC,YAAAA,QAAAA,EAAUxX,MAAO2W,CAAAA,WAAW,EAAEc,cAAAA,KAAmB,OAAO,IAAOljB,GAAAA,SAAAA;YAC/DmjB,gBAAkB,EAAA;gBAChB,gBAAkB,EAAA,KAAA;AACpB,aAAA;AACF,SAAA;QACAC,UAAY,EAAA,UAAA;QACZC,uBAAyB,EAAA;YACvBxM,KAAO,EAAA;gBACLyM,SAAW,EAAA,gDAAA;AACb,aAAA;AACF,SAAA;QACAC,yBAA2B,EAAA;YACzB1M,KAAO,EAAA;gBACLC,eAAiB,EAAA,8BAAA;gBACjBrR,KAAO,EAAA,uCAAA;gBACP+d,SAAW,EAAA,QAAA;gBACXC,OAAS,EAAA,2BAAA;gBACTC,UAAY,EAAA,GAAA;gBACZC,QAAU,EAAA,6BAAA;gBACVC,aAAe,EAAA,WAAA;AACjB,aAAA;AACF,SAAA;AACAC,QAAAA,wBAAAA,EAA0B,CAAC,EAAEjZ,GAAG,EAAE,IAAM;gBACtChF,OAAS,EAAA,IAAA;oBACP0I,eAAgB,CAAA,IAAA;wBACd,OAAO;AAAE,4BAAA,GAAG1D,IAAIqC,QAAQ;AAAC,yBAAA,CAAA;AAC3B,qBAAA,CAAA,CAAA;AACF,iBAAA;AACA7T,gBAAAA,SAAAA,EAAW0qB,QAAQC,QAAQ;aAC7B,CAAA;QACAC,iBAAmB,EAAA;YACjBnN,KAAO,EAAA;gBACLC,eAAiB,EAAA,6BAAA;gBACjB,oCAAsC,EAAA,6BAAA;AACxC,aAAA;AACF,SAAA;AACF,KAAA,CAAA,CAAA;IAEA,qBACE5c,IAAA,CAAC8C,eAAMC,QAAQ,EAAA;;0BACbpD,GAACwkB,CAAAA,YAAAA,EAAAA,EAAAA,CAAAA;0BACDnkB,IAAC0B,CAAAA,KAAAA,EAAAA;gBAAIxC,SAAU,EAAA,4CAAA;;kCACbS,GAACoqB,CAAAA,cAAAA,EAAAA;AAAeC,wBAAAA,OAAAA,EAASvD,kBAAkBK,SAAS;;kCACpDnnB,GAACsqB,CAAAA,iBAAAA,EAAAA;wBAAkBxC,KAAOA,EAAAA,KAAAA;;;;;;AAIlC,CAAA;;AC9KA,SAASyC,qBAAqBhoB,KAAsB,EAAA;AAClD,IAAA,IAAI,CAACA,KAAAA,IAAS,OAAOA,KAAAA,KAAU,QAAU,EAAA;QACvC,OAAO,CAAA,CAAA;AACT,KAAA;AACA,IAAA,MAAMioB,WAAWjoB,KAAQ,GAAA,EAAA,CAAA;IACzB,OAAOuW,IAAAA,CAAK2R,KAAK,CAAC,CAAC,CAAI,GAAA,EAAA,GAAKD,QAAY,IAAA,IAAA,GAAOA,QAAW,GAAA,CAAA,IAAK,EAAA,CAAA,CAAA;AACjE,CAAA;AAEO,SAASE,gBACdC,EAAwE,EAAA;AAExE,IAAA,OAAOA,IAAIjjB,OAAUijB,GAAAA,EAAAA,CAAGjjB,OAAO,CAACkjB,WAAW,GAAG,MAAA,CAAA;AAChD,CAAA;AAEA,MAAMC,GAAM,GAAA,OAAOhnB,MAAW,KAAA,WAAA,IAAeA,OAAOinB,qBAAqB,CAAA;AAiBlE,SAASC,qBAAAA,CAAsB,EACpCC,kBAAkB,EAClBC,wBAAAA,GAA2B,MAAM,EACjCC,eAAkB,GAAA,IAAM,IAAI,EAC5BzG,MAAM,EACgB,EAAA;AACtB,IAAA,MAAMkG,KAAKnjB,MAA2B,CAAA,IAAA,CAAA,CAAA;AACtC,IAAA,MAAM2jB,cAAiB,GAAA,CAAA,CAAA;AACvB,IAAA,MAAMC,eAAkB,GAAA;QACtB5Z,OAAS,EAAA,MAAA;QACTjP,KAAO,EAAA,CAAA;QACP8oB,QAAU,EAAA,QAAA;AACZ,KAAA,CAAA;AACA,IAAA,MAAM,CAACC,MAAQC,EAAAA,YAAAA,CAAa,GAAGjmB,QAC7Bmf,CAAAA,MAAAA,GAAS,EAAK2G,GAAAA,eAAAA,CAAAA,CAAAA;AAEhB,IAAA,MAAMI,YAAY,CAChBC,SAAAA,GAAAA;AAEAC,QAAAA,SAAAA,CAAU,IAAMH,YAAaE,CAAAA,SAAAA,CAAAA,CAAAA,CAAAA;AAC/B,KAAA,CAAA;AAEA,IAAA,MAAME,cAAc,CAACF,SAAAA,GAAAA;QACnBD,SAAU,CAAA,CAACI,aAAe;AAAE,gBAAA,GAAGA,SAAS;AAAE,gBAAA,GAAGH,SAAS;aAAC,CAAA,CAAA,CAAA;AACzD,KAAA,CAAA;AAEA,IAAA,SAASI,oBAAoBtpB,KAAsB,EAAA;QAGjD,MAAMupB,SAAAA,GAAYd,sBAAsBT,oBAAqBhoB,CAAAA,KAAAA,CAAAA,CAAAA;QAC7D,OAAO;AACLwpB,YAAAA,UAAAA,EAAY,CAAC,MAAM,EAAED,SAAAA,CAAU,GAAG,EAAEb,wBAAyB,CAAA,UAAU,EAAEa,SAAAA,CAAU,GAAG,EAAEb,yBAAyB,CAAC;AACpH,SAAA,CAAA;AACF,KAAA;IAEAe,YAAa,CAAA,IAAA;QACX,IAAI,OAAOnB,QAAQ,UAAY,EAAA;AAC7B,YAAA,IAAIpG,MAAQ,EAAA;gBACVoG,GAAI,CAAA,IAAA;oBACFc,WAAY,CAAA;wBACVM,UAAY,EAAA,OAAA;wBACZza,OAAS,EAAA,OAAA;wBACT6Z,QAAU,EAAA,QAAA;AACZ,qBAAA,CAAA,CAAA;oBACAR,GAAI,CAAA,IAAA;AACF,wBAAA,MAAMtoB,QAAQmoB,eAAgBC,CAAAA,EAAAA,CAAAA,CAAAA;wBAC9BgB,WAAY,CAAA;AAAE,4BAAA,GAAGE,oBAAoBtpB,KAAM,CAAA;AAAEA,4BAAAA,KAAAA;AAAM,yBAAA,CAAA,CAAA;AACrD,qBAAA,CAAA,CAAA;AACF,iBAAA,CAAA,CAAA;aACK,MAAA;gBACLsoB,GAAI,CAAA,IAAA;AACF,oBAAA,MAAMtoB,QAAQmoB,eAAgBC,CAAAA,EAAAA,CAAAA,CAAAA;oBAC9BgB,WAAY,CAAA;AACV,wBAAA,GAAGE,oBAAoBtpB,KAAM,CAAA;wBAC7B0pB,UAAY,EAAA,OAAA;AACZ1pB,wBAAAA,KAAAA;AACF,qBAAA,CAAA,CAAA;AACAsoB,oBAAAA,GAAAA,CAAI,IAAMc,WAAY,CAAA;4BAAEppB,KAAO4oB,EAAAA,cAAAA;4BAAgBE,QAAU,EAAA,QAAA;AAAS,yBAAA,CAAA,CAAA,CAAA;AACpE,iBAAA,CAAA,CAAA;AACF,aAAA;AACF,SAAA;KACC,EAAA;AAAC5G,QAAAA,MAAAA;AAAO,KAAA,CAAA,CAAA;AAEX,IAAA,MAAMyH,sBAAsB,CAAC1iB,CAAAA,GAAAA;QAC3B,IAAIA,CAAAA,CAAEpJ,MAAM,KAAKuqB,EAAAA,CAAGjjB,OAAO,IAAI8B,CAAAA,CAAE2iB,YAAY,KAAK,OAAS,EAAA;AACzD,YAAA,OAAA;AACF,SAAA;AAEA,QAAA,IAAI1H,MAAQ,EAAA;AACV,YAAA,MAAMliB,QAAQmoB,eAAgBC,CAAAA,EAAAA,CAAAA,CAAAA;YAE9B,IAAIpoB,KAAAA,KAAU+oB,MAAO/oB,CAAAA,KAAK,EAAE;AAC1BipB,gBAAAA,SAAAA,CAAU,EAAC,CAAA,CAAA;aACN,MAAA;gBACLG,WAAY,CAAA;AAAEppB,oBAAAA,KAAAA;AAAM,iBAAA,CAAA,CAAA;AACtB,aAAA;AAEA2oB,YAAAA,eAAAA,EAAAA,CAAAA;AACF,SAAA,MAAO,IAAII,MAAAA,CAAO/oB,KAAK,KAAK4oB,cAAgB,EAAA;YAC1CK,SAAUJ,CAAAA,eAAAA,CAAAA,CAAAA;AACVF,YAAAA,eAAAA,EAAAA,CAAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,SAASkB,gBAAiB,CAAA,EACxBpP,KAAQ,GAAA,EAAE,EACVqP,MAAS,GAAA,KAAK,EACd,GAAGC,IACc,EAAA,GAAG,EAAE,EAAA;QACtB,MAAMC,QAAAA,GAAgBD,IAAI,CAACD,MAAO,CAAA,CAAA;QAClC,OAAO;AACL,YAAA,aAAA,EAAe,CAAC5H,MAAAA;AAChB,YAAA,GAAG6H,IAAI;YACP,CAACD,MAAAA,GAASG,SAAAA,CAAU7B,EAAI4B,EAAAA,QAAAA,CAAAA;YACxBrB,eAAiBgB,EAAAA,mBAAAA;YACjBlP,KAAO,EAAA;gBAAEyP,SAAW,EAAA,YAAA;AAAc,gBAAA,GAAGzP,KAAK;AAAE,gBAAA,GAAGsO,MAAM;AAAC,aAAA;AACxD,SAAA,CAAA;AACF,KAAA;IAEA,OAAOc,gBAAAA,CAAAA;AACT;;ACpGA,MAAMM,YAAiD,GAAA;IACrD1B,kBAAoB,EAAA,GAAA;IACpBC,wBAA0B,EAAA,MAAA;IAC1B0B,cAAgB,EAAA,IAAA;AAClB,CAAA,CAAA;AAEO,MAAMC,kBAAAA,GAAqBC,OAChC,CAAA,CAACjd,KAAOkd,EAAAA,GAAAA,GAAAA;IACN,MAAM,EACJ9kB,QAAQ,EACR+kB,EAAAA,EAAItI,MAAM,EACVuG,kBAAkB,EAClBC,wBAAwB,EACxBjO,KAAK,EACLkO,eAAe,EACfyB,cAAc,EACd,GAAGK,MACJ,EAAA,GAAGC,QAAS,CAAA,UAAA,EAAYP,YAAc9c,EAAAA,KAAAA,CAAAA,CAAAA;AAEvC,IAAA,MAAMsd,KAAQC,GAAAA,eAAAA,EAAAA,CAAAA;AACd,IAAA,MAAMC,kBAAqBC,GAAAA,gBAAAA,EAAAA,CAAAA;AAC3B,IAAA,MAAMC,YAAeJ,GAAAA,KAAAA,CAAMK,oBAAoB,GAC3CH,kBACA,GAAA,KAAA,CAAA;IACJ,MAAMI,QAAAA,GAAWF,eAAe,CAAItC,GAAAA,kBAAAA,CAAAA;AAEpC,IAAA,MAAMoB,mBAAmBrB,qBAAsB,CAAA;AAC7CtG,QAAAA,MAAAA;QACAuG,kBAAoBwC,EAAAA,QAAAA;AACpBvC,QAAAA,wBAAAA;AACAC,QAAAA,eAAAA;AACF,KAAA,CAAA,CAAA;AAEA,IAAA,IAAIsC,aAAa,CAAG,EAAA;AAClB,QAAA,OAAO/I,uBAASzkB,GAACsT,CAAAA,GAAAA,EAAAA;AAAK,YAAA,GAAG0Z,MAAM;AAAGhlB,YAAAA,QAAAA,EAAAA,QAAAA;AAAkB,SAAA,CAAA,GAAA,IAAA,CAAA;AACtD,KAAA;AAEA,IAAA,qBACEhI,GAACsT,CAAAA,GAAAA,EAAAA;AACE,QAAA,GAAG8Y,gBAAiB,CAAA;YACnBpP,KAAO,EAAA;gBACLuI,OAASd,EAAAA,MAAAA,IAAU,CAACkI,cAAAA,GAAiB,CAAI,GAAA,CAAA;gBACzCZ,UAAYY,EAAAA,cAAAA,GACR,CAAC,QAAQ,EAAEa,SAAS,GAAG,EAAEvC,wBAAyB,CAAA,CAAC,GACnD,MAAA;gBACJ,GAAGwC,cAAAA,CAAezQ,OAAOkQ,KAAM,CAAA;AACjC,aAAA;AACAJ,YAAAA,GAAAA;AACA,YAAA,GAAGE,MAAM;SACT,CAAA;AAEDhlB,QAAAA,QAAAA,EAAAA,QAAAA;;AAGP,CACA,CAAA,CAAA;AAEF4kB,kBAAAA,CAAmBlb,WAAW,GAAG,mCAAA;;ACjFjC,MAAMgc,aAAAA,GAAgB,CAAC,EACrBC,MAAM,EACNlqB,MAAM,EACNmqB,WAAW,EACXC,cAAc,EACK,GAAA;IACnB,MAAM,EAAEntB,GAAG,EAAE,GAAG+C,MAAAA,CAAAA;AAChB,IAAA,qBACEzD,GAAC+B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAU,EAAA,eAAA;AACb,QAAA,QAAA,gBAAAS,GAAC8tB,CAAAA,KAAAA,EAAAA;sBACEH,MAAO3rB,CAAAA,GAAG,CAAC,CAACgC,KAAAA,GAAAA;AACX,gBAAA,MAAM+pB,gBACJtqB,GAAAA,MAAAA,CAAOuqB,iBAAiB,IAAIvqB,MAAOuqB,CAAAA,iBAAiB,CAAChqB,KAAAA,CAAM,GACvDP,MAAAA,CAAOuqB,iBAAiB,CAAChqB,MAAM,GAC/BA,KAAAA,CAAAA;AACN,gBAAA,qBACEhE,GAACiuB,CAAAA,QAAAA,EAAAA;oBAECC,OAASN,EAAAA,WAAW,CAACltB,GAAI,CAAA,IAAIktB,WAAW,CAACltB,GAAAA,CAAI,CAACsD,KAAM,CAAA;oBACpDwH,KAAOuiB,EAAAA,gBAAAA;AACPI,oBAAAA,QAAAA,EAAU,CAACrS,EAAAA,GAAAA;AACT,wBAAA,MAAMsS,cAAiB,GAAA;AAAE,4BAAA,GAAGR,WAAW;AAAC,yBAAA,CAAA;AACxC,wBAAA,IAAI,CAACQ,cAAc,CAAC1tB,GAAAA,CAAI,EAAE;4BACxB0tB,cAAc,CAAC1tB,GAAI,CAAA,GAAG,EAAC,CAAA;AACzB,yBAAA;AACA,wBAAA,IAAIob,EAAG1b,CAAAA,MAAM,CAAC8tB,OAAO,EAAE;AACrBE,4BAAAA,cAAc,CAAC1tB,GAAAA,CAAI,CAACsD,KAAAA,CAAM,GAAG,IAAA,CAAA;yBACxB,MAAA;AACL,4BAAA,OAAOoqB,cAAc,CAAC1tB,GAAI,CAAA,CAACsD,KAAM,CAAA,CAAA;4BACjC,IAAI/C,MAAAA,CAAOC,IAAI,CAACktB,cAAc,CAAC1tB,GAAI,CAAA,CAAA,CAAEyB,MAAM,KAAK,CAAG,EAAA;gCACjD,OAAOisB,cAAc,CAAC1tB,GAAI,CAAA,CAAA;AAC5B,6BAAA;AACF,yBAAA;wBACAmtB,cAAeO,CAAAA,cAAAA,CAAAA,CAAAA;AACjB,qBAAA;AAjBK,iBAAA,EAAA,CAAC,EAAE1tB,GAAAA,CAAI,CAAC,EAAEsD,MAAM,CAAC,CAAA,CAAA;AAoB5B,aAAA,CAAA;;;AAIR,CAAA;;;ACpDYqqB,CAAAA,SAAAA,iBAAAA,EAAAA;;;GAAAA,iBAAAA,KAAAA,iBAAAA,GAAAA,EAAAA,CAAAA,CAAAA,CAAAA;;AAUAC,CAAAA,SAAAA,mBAAAA,EAAAA;;;;GAAAA,mBAAAA,KAAAA,mBAAAA,GAAAA,EAAAA,CAAAA,CAAAA;;ACMZ,MAAMC,iBAAiB,CAAC,EACtBC,gBAAgB,EAChBC,wBAAwB,EACJ,GAAA;AACpB,IAAA,MAAM,CAACC,iBAAmBC,EAAAA,oBAAAA,CAAqB,GAAGrpB,QAAAA,CAChD+oB,kBAAkBO,GAAG,CAAA,CAAA;AAEvB,IAAA,MAAM,CAAChB,WAAAA,EAAaC,cAAe,CAAA,GAAGvoB,SAA4B,EAAC,CAAA,CAAA;IAEnEmC,SAAU,CAAA,IAAA;QACRgnB,wBAAyB,CAAA;YACvBI,SAAWH,EAAAA,iBAAAA;YACXI,OAASlB,EAAAA,WAAAA;AACX,SAAA,CAAA,CAAA;KACC,EAAA;AAACc,QAAAA,iBAAAA;AAAmBd,QAAAA,WAAAA;AAAaa,QAAAA,wBAAAA;AAAyB,KAAA,CAAA,CAAA;IAE7D,qBACEzuB,GAAA,CAACmD,eAAMC,QAAQ,EAAA;AACb,QAAA,QAAA,gBAAA/C,IAAC0B,CAAAA,KAAAA,EAAAA;YAAIxC,SAAU,EAAA,eAAA;;8BACbc,IAAC0B,CAAAA,KAAAA,EAAAA;oBAAIxC,SAAU,EAAA,4CAAA;;sCACbS,GAAC+uB,CAAAA,gBAAAA,EAAAA;4BACCrN,IAAM,EAAA;AACJ,gCAAA;oCAAElW,KAAO,EAAA,KAAA;AAAOxH,oCAAAA,KAAAA,EAAOqqB,kBAAkBO,GAAG;AAAC,iCAAA;AAC7C,gCAAA;oCAAEpjB,KAAO,EAAA,IAAA;AAAMxH,oCAAAA,KAAAA,EAAOqqB,kBAAkBW,EAAE;AAAC,iCAAA;AAC5C,6BAAA;4BACDhrB,KAAO0qB,EAAAA,iBAAAA;4BACP1jB,IAAK,EAAA,IAAA;4BACLY,KAAM,EAAA,QAAA;4BACNuiB,QAAU,EAAA,CAACnqB,QACT2qB,oBAAqB3qB,CAAAA,KAAAA,CAAAA;;sCAGzBhE,GAAC6P,CAAAA,MAAAA,EAAAA;4BACC7E,IAAK,EAAA,IAAA;AACLa,4BAAAA,QAAAA,EAAU5K,MAAOC,CAAAA,IAAI,CAAC0sB,WAAAA,CAAAA,CAAazrB,MAAM,KAAK,CAAA;4BAC9C4J,OAAS,EAAA,IAAA;AACP8hB,gCAAAA,cAAAA,CAAe,EAAC,CAAA,CAAA;AAChBc,gCAAAA,oBAAAA,CAAqBN,kBAAkBO,GAAG,CAAA,CAAA;AAC5C,6BAAA;AACAliB,4BAAAA,WAAAA,gBAAa1M,GAACivB,CAAAA,MAAAA,EAAAA,EAAAA,CAAAA;4BACd1vB,SAAU,EAAA,MAAA;AACX,4BAAA,QAAA,EAAA,eAAA;;;;8BAKHS,GAAC0jB,CAAAA,SAAAA,EAAAA;oBAAUnkB,SAAU,EAAA,MAAA;oBAAOud,MAAO,EAAA,IAAA;oBAAKoS,QAAQ,EAAA,IAAA;8BAC7CV,gBAAiBxsB,CAAAA,GAAG,CAAC,CAACyB,MAAAA,GAAAA;AACrB,wBAAA,MAAM,EAAE/C,GAAG,EAAEyuB,cAAc,EAAEnB,iBAAiB,EAAE,GAAGvqB,MAAAA,CAAAA;AACnD,wBAAA,MAAMkqB,SAASK,iBACX/sB,GAAAA,MAAAA,CAAO0sB,MAAM,CAACK,qBACd,EAAE,CAAA;wBACN,qBACE3tB,IAAA,CAACqjB,UAAUzU,IAAI,EAAA;4BACbjL,KAAOtD,EAAAA,GAAAA;;AAGP,8CAAAL,IAAA,CAACqjB,UAAUC,OAAO,EAAA;;AACf,wCAAA,GAAA;wCACAwL,cAAkBzuB,IAAAA,GAAAA;;AAFGA,iCAAAA,EAAAA,GAAAA,CAAAA;AAIxB,8CAAAV,GAAA,CAAC0jB,UAAUhB,KAAK,EAAA;AACd,oCAAA,QAAA,gBAAA1iB,GAAC0tB,CAAAA,aAAAA,EAAAA;wCACCC,MAAQA,EAAAA,MAAAA;wCACRlqB,MAAQA,EAAAA,MAAAA;wCACRmqB,WAAaA,EAAAA,WAAAA;wCACbC,cAAgBA,EAAAA,cAAAA;;;;2BAXf,CAAC,mCAAmC,EAAEntB,GAAAA,CAAI,CAAC,CAAA,CAAA;AAgBtD,qBAAA,CAAA;;;;;AAKV,CAAA;;ACzFA,MAAM0uB,sBAAsB,CAACxf,KAAAA,GAAAA;IAC3B,MAAM,EAAE6U,MAAM,EAAE,GAAG7U,KAAAA,CAAAA;IACnB,qBACE5P,GAAA,CAACmD,eAAMC,QAAQ,EAAA;AACb,QAAA,QAAA,gBAAApD,GAAC4sB,CAAAA,kBAAAA,EAAAA;YAAmBG,EAAItI,EAAAA,MAAAA;AACtB,YAAA,QAAA,gBAAAzkB,GAACuuB,CAAAA,cAAAA,EAAAA;AAAgB,gBAAA,GAAG3e,KAAK;;;;AAIjC,CAAA;;ACGA,MAAMyf,uBAA0BC,iBAAAA,UAAAA,CAI9B,CACE,EACE9jB,KAAQrF,GAAAA,SAAS,EACjB2E,IAAAA,GAAO3E,SAAS,EAChB0F,QAAW,GAAA,KAAK,EAChB0jB,OAAUppB,GAAAA,SAAS,EACnB4F,OAAAA,GAAU,IAAM,IAAI,EACpByjB,MAAAA,GAAS,KAAK,EACdC,QAAAA,GAAW,IAAI,EACfC,aAAgB,GAAA,KAAK,EACrB,GAAGC,aACmC,EACxC7C,GAAAA,GAAAA;;IAGA,MAAM8C,aAAAA,GAAgB,CAACC,iBAAuBH,EAAAA,IAAAA,aAAAA,CAAAA;IAE9C,MAAMI,UAAAA,GAAaN,uBACjBxvB,GAAC+vB,CAAAA,MAAAA,EAAAA;QAAO/kB,IAAK,EAAA,IAAA;QAAKzL,SAAU,EAAA,KAAA;uBAE5BS,GAACgkB,CAAAA,UAAAA,EAAAA;QAAaxjB,KAAM,EAAA,UAAA;QAAWwK,IAAM,EAAA,EAAA;;AAGvC,IAAA,qBACEhL,GAACuL,CAAAA,OAAAA,EAAAA;AAAQM,QAAAA,QAAAA,EAAU,CAAC0jB,OAAAA;QAAS/jB,KAAO+jB,EAAAA,OAAAA;AAClC,QAAA,QAAA,gBAAAvvB,GAAC6P,CAAAA,MAAAA,EAAAA;YACCid,GAAKA,EAAAA,GAAAA;YACL/gB,OAASA,EAAAA,OAAAA;AACTF,YAAAA,QAAAA,EAAUA,QAAY+jB,IAAAA,aAAAA;AACtBljB,YAAAA,WAAAA,EAAa+iB,WAAWK,UAAa3pB,GAAAA,SAAAA;AACpC,YAAA,GAAGwpB,WAAW;AAEdnkB,YAAAA,QAAAA,EAAAA,KAAAA;;;AAIT,CAAA,CAAA,CAAA;AAGF6jB,uBAAAA,CAAwB3d,WAAW,GAAG,yBAAA;;AClDtC,MAAMse,SAAY,GAAA,CAAC,EAAEpe,MAAM,EAAkB,GAAA;IAC3C,MAAM,EAAEqe,OAAO,EAAE,GAAGre,MAAAA,CAAAA;AAEpB,IAAA,qBACE5R,GAAC+B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAU,EAAA,gEAAA;kBACZ0wB,OAASjuB,EAAAA,GAAAA,CAAI,CAACyK,MAAQvK,EAAAA,KAAAA,GAAAA;AACrB,YAAA,qBACElC,GAACqvB,CAAAA,uBAAAA,EAAAA;AACC7jB,gBAAAA,KAAAA,EAAOiB,OAAOjB,KAAK;AACnBV,gBAAAA,IAAAA,gBAAM9K,GAACgkB,CAAAA,UAAAA,EAAAA,EAAAA,CAAAA;AACPuL,gBAAAA,OAAAA,EAAS9iB,OAAOjC,OAAO;AACvBklB,gBAAAA,aAAAA,EAAe9d,QAAQse,yBAA6B,IAAA,IAAA;gBACpDnkB,OAAS,EAAA,IAAA;AACPgI,oBAAAA,OAAAA,CAAQC,GAAG,CAAC,0BAAA,CAAA,CAAA;AACd,iBAAA;eACK,CAAC,cAAc,EAAE9R,KAAAA,CAAM,CAAC,CAAA,CAAA;;AAInC,SAAA,CAAA;;AAGN,CAAA;;ACPA;AACO,SAASiuB,oBAAuBC,MAAS,EAAA;AAC9C,IAAA,qBAAOpwB,GAACC,CAAAA,MAAAA,EAAAA;AAAK,QAAA,QAAA,EAAA,iBAAA;;AACf,CAAA;AAcO,MAAMowB,0BAAAA,CAAAA;IAMXC,WAAc,EAAA;QACZ,IAAI,CAACxd,OAAO,GAAG,EAAC,CAAA;QAChB,IAAI,CAACyd,eAAe,GAAGJ,mBAAAA,CAAAA;AACzB,KAAA;AAEA;;;;;MAMAK,kBAAAA,CAAmB5d,IAAyB,EAAQ;QAClD,IAAI,CAAC2d,eAAe,GAAG3d,IAAAA,CAAAA;AACzB,KAAA;IAEAqL,WAAYxO,CAAAA,IAAY,EAAEiD,YAAoB,EAAuB;AACnE,QAAA,IAAI,CAAC,IAAI,CAAC+d,cAAc,CAAChhB,MAAMiD,YAAe,CAAA,EAAA;YAC5C,OAAOyd,mBAAAA,CAAAA;AACT,SAAA;AAEA,QAAA,OAAO,IAAI,CAACrd,OAAO,CAACrD,IAAAA,CAAK,CAACiD,YAAa,CAAA,CAAA;AACzC,KAAA;AAEA;;;;;AAKC,MACD+d,cAAehhB,CAAAA,IAAY,EAAEiD,YAAoB,EAAW;QAC1D,OAAOjD,IAAAA,IAAQ,IAAI,CAACqD,OAAO,IAAIJ,gBAAgB,IAAI,CAACI,OAAO,CAACrD,IAAK,CAAA,CAAA;AACnE,KAAA;AAEA;;;;;;;;AAQC,MACDihB,iBACEjhB,IAAY,EACZiD,YAAoB,EACpBE,IAAyB,EAChB;QACT,IAAInD,IAAAA,IAAQiD,gBAAgBE,IAAM,EAAA;YAChC,IAAI;AACF,gBAAA,IAAI,CAAC,IAAI,CAACE,OAAO,CAACrD,KAAK,EAAE;AACvB,oBAAA,IAAI,CAACqD,OAAO,CAACrD,IAAAA,CAAK,GAAG,EAAC,CAAA;AACxB,iBAAA;gBACA,IAAI,CAAC,IAAI,CAACqD,OAAO,CAACrD,IAAK,CAAA,CAACiD,aAAa,EAAE;AACrC,oBAAA,IAAI,CAACI,OAAO,CAACrD,IAAK,CAAA,CAACiD,aAAa,GAAGE,IAAAA,CAAAA;iBAC9B,MAAA;oBACL,MAAM,IAAIlM,MACR,CAAC,kBAAkB,EAAEgM,YAAa,CAAA,yBAAyB,EAAEjD,IAAAA,CAAK,CAAC,CAAA,CAAA;AAEvE,iBAAA;gBACA,OAAO,IAAA,CAAA;AACT,aAAA,CAAE,OAAOkhB,KAAO,EAAA;AACd5c,gBAAAA,OAAAA,CAAQ4c,KAAK,CACX,CAAC,2BAA2B,EAAEje,YAAAA,CAAa,UAAU,EAAEjD,IAAK,CAAA,EAAE,EAAEkhB,KAAAA,CAAM,CAAC,CAAA,CAAA;gBAEzE,OAAO,KAAA,CAAA;AACT,aAAA;SACK,MAAA;AACL,YAAA,MAAM,IAAIjqB,KAAM,CAAA,0BAAA,CAAA,CAAA;AAClB,SAAA;AACF,KAAA;AAEA;;;;;MAMAkqB,uBAAAA,CACE9d,OAAwD,EAC/C;AACT,QAAA,IAAIA,OAAS,EAAA;AACX7R,YAAAA,MAAAA,CAAOC,IAAI,CAAC4R,OAAS1R,CAAAA,CAAAA,OAAO,CAAC,CAACqO,IAAAA,GAAAA;gBAC5B,IAAIqD,OAAO,CAACrD,IAAAA,CAAK,EAAE;oBACjBxO,MAAO8R,CAAAA,OAAO,CAACD,OAAO,CAACrD,IAAAA,CAAK,CAAErO,CAAAA,OAAO,CAAC,CAAC,CAACiL,IAAAA,EAAMuG,IAAK,CAAA,GAAA;wBACjD,IAAI,OAAOA,SAAS,UAAY,EAAA;4BAC9B,IAAI;AACF,gCAAA,IAAI,CAAC8d,gBAAgB,CAACjhB,IAAAA,EAAMpD,IAAMuG,EAAAA,IAAAA,CAAAA,CAAAA;AACpC,6BAAA,CAAE,OAAO+d,KAAO,EAAA;gCAId,OAAO,KAAA,CAAA;AACT,6BAAA;AACF,yBAAA;AACF,qBAAA,CAAA,CAAA;AACF,iBAAA;AACF,aAAA,CAAA,CAAA;YACA,OAAO,IAAA,CAAA;AACT,SAAA;QACA,OAAO,KAAA,CAAA;AACT,KAAA;AACF;;AC5IA,MAAME,wBAAAA,GAA2B,CAAC,EAChC7sB,KAAK,EACLwH,KAAK,EACL,GAAGoE,KACoB,EAAA,GAAA;AACvB,IAAA,qBACEvP,IAACujB,CAAAA,KAAAA,EAAAA;AAAO,QAAA,GAAGhU,KAAK;QAAEkhB,KAAM,EAAA,QAAA;;0BACtB9wB,GAACkP,CAAAA,IAAAA,EAAAA;gBAAKlE,IAAK,EAAA,MAAA;gBAAOY,KAAM,EAAA,QAAA;AACrB5H,gBAAAA,QAAAA,EAAAA,KAAAA;;0BAEHhE,GAACkP,CAAAA,IAAAA,EAAAA;gBAAKlE,IAAK,EAAA,IAAA;gBAAKY,KAAM,EAAA,SAAA;gBAAUrM,SAAU,EAAA,WAAA;AACvCiM,gBAAAA,QAAAA,EAAAA,KAAAA;;;;AAIT,CAAA,CAAA;AAEA,MAAMulB,wBAAyB,GAAA;IAC7Btd,MAAQ,EAAA;QACNC,OAASmd,EAAAA,wBAAAA;AACX,KAAA;AACF,CAAA,CAAA;AAEA,IAAIre,UAAAA,CAAAA;AAEJ,MAAMwe,wBACJ,GAAA,IAAA;AACE,IAAA,IAAI,CAACxe,UAAU,EAAA;AACbA,QAAAA,UAAAA,GAAW,IAAI6d,0BAAAA,EAAAA,CAAAA;AACf7d,QAAAA,UAAAA,CAASoe,uBAAuB,CAACG,wBAAAA,CAAAA,CAAAA;AACnC,KAAA;IACA,OAAOve,UAAAA,CAAAA;AACT,CAAA;;ACpCF,MAAMye,0BAAAA,GAA6B,CAACC,SAAAA,GAA+B,EAAE,GAAA;IACnE,OAAOA,SAAAA,CAAUlvB,GAAG,CAAC,CAACmvB,OAAAA,GAAAA;AACpB,QAAA,MAAM,EAAE9kB,IAAI,EAAEgH,KAAK,EAAE5D,IAAI,EAAE,GAAG0hB,OAAAA,CAAAA;QAC9B,IAAI9kB,IAAAA,IAAQgH,SAAS5D,IAAM,EAAA;;AAEzB,YAAA,MAAM2K,OAAU4W,GAAAA,wBAAAA,EAAAA,CAA2B/S,WAAW,CACpD,QACA,EAAA,SAAA,CAAA,CAAA;AAGF,YAAA,OAAS7D,OAAQ,CAAA;gBACfpW,KAAOmtB,EAAAA,OAAAA,CAAQntB,KAAK,IAAI,KAAA;gBACxBwH,KAAOa,EAAAA,IAAAA;gBACP3L,GAAK,EAAA,CAAC,WAAW,EAAE2L,IAAK,CAAA,CAAC,EAAEgH,KAAM,CAAA,CAAC,EAAE5D,IAAAA,CAAK,CAAC;AAC5C,aAAA,CAAA,CAAA;AACF,SAAA;AACF,KAAA,CAAA,CAAA;AACF,CAAA,CAAA;AAMA,MAAMuY,OAAU,GAAA;AACd,IAAA,aAAA;AACA,IAAA,aAAA;AACA,IAAA,aAAA;AACA,IAAA,aAAA;AACA,IAAA,aAAA;AACA,IAAA,aAAA;AACA,IAAA,aAAA;AACA,IAAA,aAAA;AACA,IAAA,aAAA;AACA,IAAA,aAAA;AACA,IAAA,cAAA;AACD,CAAA,CAAA;AAED,MAAMoJ,qBAAwB,GAAA,CAAC,EAAEF,SAAS,EAA8B,GAAA;AACtE,IAAA,qBACElxB,GAAC+B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAW,EAAA,CAAC,KAAK,EAAEyoB,OAAO,CAACkJ,UAAU/uB,MAAM,CAAC,CAAC,uCAAuC,CAAC;kBACvF8uB,0BAA2BC,CAAAA,SAAAA,CAAAA;;AAGlC,CAAA;;AC3CA;;;;;AAKC,IACD,MAAMG,iBAAAA,GAAoB,CACxBC,OAAAA,EACAC,mBACA3f,EAAAA,MAAAA,GAAAA;;AAIA,IAAA,IACEA,MAAOG,CAAAA,QAAQ,EAAEyc,gBAAAA,KAAqBroB,SACtC,IAAA,CAACyL,MAAOG,CAAAA,QAAQ,CAACyc,gBAAgB,CAAC1L,OAAO,EACzC;QACA,OAAOwO,OAAAA,CAAAA;AACT,KAAA;;IAGA,MAAME,eAAAA,GAAkBvwB,OAAO0sB,MAAM,CAAC4D,oBAAoBzC,OAAO,CAAA,CAAE3Z,KAAK,CACtE,CAACsc,cAAAA,GAAAA;AACC,QAAA,IAAIxwB,OAAO0sB,MAAM,CAAC8D,cAAgBtvB,CAAAA,CAAAA,MAAM,KAAK,CAAG,EAAA;YAC9C,OAAO,IAAA,CAAA;AACT,SAAA;QACA,OAAOlB,MAAAA,CAAO0sB,MAAM,CAAC8D,cAAAA,CAAAA,CAAgBtc,KAAK,CAAC,CAACuc,WAAa,CAACA,QAAAA,CAAAA,CAAAA;AAC5D,KAAA,CAAA,CAAA;AAGF,IAAA,IAAIF,eAAiB,EAAA;QACnB,OAAOF,OAAAA,CAAAA;AACT,KAAA;;IAGA,IAAIC,mBAAAA,CAAoB1C,SAAS,KAAK,KAAO,EAAA;AAC3C,QAAA,OAAOyC,OAAQ7tB,CAAAA,MAAM,CAAC,CAACkuB,KACrB1wB,GAAAA,MAAAA,CAAOC,IAAI,CAACqwB,mBAAoBzC,CAAAA,OAAO,CAAE3Z,CAAAA,KAAK,CAAC,CAACyc,UAAAA,GAAAA;AAC9C,gBAAA,MAAMC,eAAe5wB,MAAOC,CAAAA,IAAI,CAC9BqwB,mBAAoBzC,CAAAA,OAAO,CAAC8C,UAAW,CAAA,CAAA,CAAA;;gBAGzC,IAAIC,YAAAA,CAAa1vB,MAAM,KAAK,CAAG,EAAA;oBAC7B,OAAO,IAAA,CAAA;AACT,iBAAA;AAEA,gBAAA,IAAIyP,MAAOG,CAAAA,QAAQ,EAAEyc,gBAAAA,EAAkBnb,UAAUlN,SAAW,EAAA;oBAC1D,OAAO,KAAA,CAAA;AACT,iBAAA;gBAEA,MAAM2rB,YAAAA,GAAeH,KAAK,CAAC/f,MAAAA,CAAOG,QAAQ,CAACyc,gBAAgB,CAACnb,KAAK,CAAC,CAAA;gBAClE,IAAI,CAAC2B,gBAAgB8c,YAAe,CAAA,EAAA;oBAClC,OAAO,KAAA,CAAA;AACT,iBAAA;AAEA,gBAAA,IAAI,CAACA,YAAAA,IAAgB,CAACA,YAAAA,CAAa3vB,MAAM,EAAE;oBACzC,OAAO,KAAA,CAAA;AACT,iBAAA;AAEA,gBAAA,MAAM4vB,oBAAoBD,YACvBruB,CAAAA,MAAM,CAAC,CAAC,EAAE/C,GAAG,EAAE,GAAKA,GAAAA,KAAQkxB,YAC5B5vB,GAAG,CAAC,CAAC,EAAEgC,KAAK,EAAE,GAAKA,KAAAA,CAAAA,CAAAA;AACtB,gBAAA,OAAO6tB,aAAa1c,KAAK,CAAC,CAACnR,KAAU+tB,GAAAA,iBAAAA,CAAkBxX,QAAQ,CAACvW,KAAAA,CAAAA,CAAAA,CAAAA;AAClE,aAAA,CAAA,CAAA,CAAA;AAEJ,KAAA;;AAGA,IAAA,OAAOstB,OAAQ7tB,CAAAA,MAAM,CAAC,CAACkuB,KACrB1wB,GAAAA,MAAAA,CAAOC,IAAI,CAACqwB,mBAAoBzC,CAAAA,OAAO,CAAEhV,CAAAA,IAAI,CAAC,CAAC8X,UAAAA,GAAAA;AAC7C,YAAA,MAAMC,eAAe5wB,MAAOC,CAAAA,IAAI,CAACqwB,mBAAoBzC,CAAAA,OAAO,CAAC8C,UAAW,CAAA,CAAA,CAAA;;YAExE,IAAIC,YAAAA,CAAa1vB,MAAM,KAAK,CAAG,EAAA;gBAC7B,OAAO,IAAA,CAAA;AACT,aAAA;AAEA,YAAA,IAAIyP,MAAOG,CAAAA,QAAQ,EAAEyc,gBAAAA,EAAkBnb,UAAUlN,SAAW,EAAA;gBAC1D,OAAO,KAAA,CAAA;AACT,aAAA;YAEA,MAAM2rB,YAAAA,GAAeH,KAAK,CAAC/f,MAAAA,CAAOG,QAAQ,CAACyc,gBAAgB,EAAEnb,KAAM,CAAA,CAAA;YAEnE,IAAI,CAAC2B,gBAAgB8c,YAAe,CAAA,EAAA;gBAClC,OAAO,KAAA,CAAA;AACT,aAAA;AAEA,YAAA,IAAI,CAACA,YAAAA,IAAgB,CAACA,YAAAA,CAAa3vB,MAAM,EAAE;gBACzC,OAAO,KAAA,CAAA;AACT,aAAA;AAEA,YAAA,OAAO2vB,YAAahY,CAAAA,IAAI,CACtB,CAAC,EAAEpZ,GAAG,EAAEsD,KAAK,EAAE,GAAKtD,GAAAA,KAAQkxB,UAAcC,IAAAA,YAAAA,CAAatX,QAAQ,CAACvW,KAAAA,CAAAA,CAAAA,CAAAA;AAEpE,SAAA,CAAA,CAAA,CAAA;AAEJ,CAAA;;AChGO,MAAMguB,oBAAAA,GAAuB,CAClCtxB,GAAAA,EACA4wB,SACAW,YACAC,EAAAA,QAAAA,GAAAA;AAEA,IAAA,MAAMC,iBAAiB,EAAE,CAAA;AACzB,IAAA,IAAI,CAACb,OAAS,EAAA;QACZ,OAAOa,cAAAA,CAAAA;AACT,KAAA;AAEA,IAAA,IAAI,CAACF,YAAc,EAAA;AACjB,QAAA,MAAM,IAAIvrB,KACR,CAAA,mHAAA,CAAA,CAAA;AAEJ,KAAA;AAEA,IAAA,IAAI,CAACwrB,QAAU,EAAA;AACb,QAAA,MAAM,IAAIxrB,KACR,CAAA,mHAAA,CAAA,CAAA;AAEJ,KAAA;AAEA,IAAA,MAAM0rB,kBAA6C,EAAC,CAAA;IACpDd,OAAQlwB,CAAAA,OAAO,CAAC,CAACuwB,KAAAA,GAAAA;AACf,QAAA,MAAMG,eACJ,KAAM,CAACG,YAAAA,CAAa,IAA8B,EAAE,CAAA;AAEtD,QAAA,IAAI,CAACH,YAAc,EAAA;;AAEjB/d,YAAAA,OAAAA,CAAQse,IAAI,CACV,CAAC,oCAAoC,EAAEJ,YAAa,CAAA,8BAA8B,EAChFN,KAAK,CAACO,QAAAA,CAAS,IAAI,SAAA,CACpB,0FAA0F,CAAC,CAAA,CAAA;YAE9F,OAAOC,cAAAA,CAAAA;AACT,SAAA;QACA,IAAI;YACFL,YAAa1wB,CAAAA,OAAO,CAAC,CAACkxB,WAAAA,GAAAA;gBACpB,IAAIA,WAAAA,CAAY5xB,GAAG,KAAKA,GAAK,EAAA;AAC3B0xB,oBAAAA,eAAe,CAACE,WAAAA,CAAYtuB,KAAK,CAAC,GAAG,IAAA,CAAA;AACvC,iBAAA;AACF,aAAA,CAAA,CAAA;AACF,SAAA,CAAE,OAAOuuB,GAAK,EAAA;;AAEZxe,YAAAA,OAAAA,CAAQ4c,KAAK,CAAC4B,GAAAA,CAAAA,CAAAA;;YAEdxe,OAAQ4c,CAAAA,KAAK,CACX,CAAC,kCAAkC,EAAEgB,KAAK,CAACO,QAAAA,CAAS,IAAI,SAAA,CAAU,CAAC,CAAA,CAAA;AAEvE,SAAA;AACF,KAAA,CAAA,CAAA;IACA,OAAOjxB,MAAAA,CAAOC,IAAI,CAACkxB,eAAAA,CAAAA,CAAAA;AACrB,CAAE,CAAA;AACF;AACO,MAAMI,iBAAiB,CAACC,WAAAA,GAAAA;AAC7B,IAAA,OACE,WACEA,IAAAA,WAAAA,CAAYC,OAAO,CAACC,QAAQ,IAC5BF,WAAYC,CAAAA,OAAO,CAACC,QAAQ,CAACxwB,MAAM,GAAG,KACtCswB,WAAYC,CAAAA,OAAO,CAACC,QAAQ,CAAC,CAAE,CAAA,IAAI,MACpCF,WAAYlB,CAAAA,mBAAmB,IAC9BkB,WAAYlB,CAAAA,mBAAmB,CAACzC,OAAO,IACvC7tB,OAAO0sB,MAAM,CAAC8E,YAAYlB,mBAAmB,CAACzC,OAAO,CAAEhV,CAAAA,IAAI,CACzD,CAAC2X,cAAAA,GAAAA;QACC,OACEA,cAAAA,IACAxwB,OAAO0sB,MAAM,CAAC8D,gBAAgB3X,IAAI,CAAC,CAAC4X,QAAaA,GAAAA,QAAAA,CAAAA,CAAAA;AAErD,KAAA,CAAA,CAAA;AAGR,CAAE;;ACxEK,MAAMjY,oCAAoC,CAACC,MAAAA,EAAgBC,SAAkBC,YAAsBC,EAAAA,eAAAA,GAAiC,EAAE,GAAA;IAC3I,MAAMzK,OAAAA,GAAUyK,eAAe,CAACD,YAAa,CAAA,CAAA;;;;;;;;;;IAU7C,OAAOxK,OAAAA,KAAYjJ,SAAaiJ,IAAAA,OAAAA,CAAQ0K,IAAI,CAAC,CAACpW,CAAAA,GAAO,CAACA,CAAEiW,CAAAA,OAAO,KAAKA,OAAAA,IAAWjW,EAAEiW,OAAO,KAAK,GAAE,MAAOjW,CAAAA,CAAEgW,MAAM,KAAKA,MAAUhW,IAAAA,CAAAA,CAAEgW,MAAM,KAAK,GAAE,CAAA,CAAA,CAAA;AAC9I,CAAE;;ACNF;;;;;AAKC,IACD,MAAMkZ,uBAA0B,GAAA,CAACjR,SAC/BA,MAAO3f,CAAAA,GAAG,CAAC,CAACoL,IAAAA,GAAAA;QACV,IAAI,OAAOA,SAAS,QAAU,EAAA;YAC5B,OAAOA,IAAAA,CAAAA;AACT,SAAA;;QAEA,IAAI,OAAOA,SAAS,QAAU,EAAA;YAC5B,OAAOyN,QAAAA,CAASzN,MAAM,EAAO,CAAA,IAAA,CAAA,CAAA;AAC/B,SAAA;;QAEA,IAAI6H,KAAAA,CAAMC,OAAO,CAAC9H,IAAO,CAAA,EAAA;AACvB,YAAA,OAAOylB,IAAID,uBAAwBxlB,CAAAA,IAAAA,CAAAA,CAAAA,CAAAA;AACrC,SAAA;;QAEA,OAAO,CAAA,CAAA;AACT,KAAA,CAAA,CAAA;AAEF;;;;AAIC,IACM,MAAM0lB,cAAiB,GAAA,CAC5BpR,IACAyP,EAAAA,OAAAA,GAAAA;AAEA,IAAA,MAAM,EAAE9d,KAAK,EAAE5D,IAAI,EAAE,GAAG0hB,OAAAA,CAAAA;AACxB,IAAA,IAAIxP,SAAS3Q,QAAS,CAAA;AAAEF,QAAAA,IAAAA,EAAM,CAAC,GAAG,EAAEuC,KAAAA,CAAM,CAAC;QAAE3O,IAAMgd,EAAAA,IAAAA;AAAK,KAAA,CAAA,CAAA;;IAExDC,MAASA,GAAAA,MAAAA,CAAO3f,GAAG,CAAC,CAACoL,OACnB,OAAOA,IAAAA,KAAS,cAAc,CAAIA,GAAAA,IAAAA,CAAAA,CAAAA;IAEpC,OAAQqC,IAAAA;QACN,KAAK,KAAA;AAAO,YAAA;;AAEVkS,gBAAAA,MAAAA,GAASiR,uBAAwBjR,CAAAA,MAAAA,CAAAA,CAAAA;gBACjC,OAAOkR,GAAAA,CAAIlR,QAAQzI,cAAc,EAAA,CAAA;AACnC,aAAA;QACA,KAAK,OAAA;AACH,YAAA,OAAO6Z,IAAKpR,CAAAA,MAAAA,CAAAA,CAAQxf,MAAM,CAAC+W,cAAc,EAAA,CAAA;AAC3C,QAAA;AACE,YAAA,MAAM,IAAIxS,KACR,CAAA,CAAC,sDAAsD,EAAE+I,IAAAA,CAAK,8DAA8D,CAAC,CAAA,CAAA;AAEnI,KAAA;AACF,CAAE,CAAA;AAEK,MAAMujB,mBAAsB,GAAA,CACjCtR,IACAwP,EAAAA,SAAAA,GAAAA;AAEA,IAAA,IAAI,CAACjc,KAAAA,CAAMC,OAAO,CAACwM,IAAO,CAAA,EAAA;AACxB,QAAA,MAAM,IAAIhb,KAAM,CAAA,uCAAA,CAAA,CAAA;AAClB,KAAA;AACA,IAAA,IAAI,CAACuO,KAAAA,CAAMC,OAAO,CAACgc,SAAY,CAAA,EAAA;AAC7B,QAAA,MAAM,IAAIxqB,KAAM,CAAA,4CAAA,CAAA,CAAA;AAClB,KAAA;AAEA,IAAA,OAAOwqB,SAAUhkB,CAAAA,MAAM,CAAC,CAACC,GAAKgkB,EAAAA,OAAAA,GAAAA;QAC5B,OAAO;AACFhkB,YAAAA,GAAAA,GAAAA;AACH,YAAA;AACE,gBAAA,GAAGgkB,OAAO;AACVntB,gBAAAA,KAAAA,EAAO8uB,eAAepR,IAAMyP,EAAAA,OAAAA,CAAAA;AAC9B,aAAA;AACD,SAAA,CAAA;AACH,KAAA,EAAG,EAAE,CAAA,CAAA;AACP,CAAE,CAAA;AAEK,MAAM8B,qBAAAA,GAAwB,CACnCvR,IAAAA,EACA9P,MACAshB,EAAAA,WAAAA,GAAAA;AAEA,IAAA,MAAM,EAAEC,UAAU,EAAEC,qBAAqB,EAAE,GAAGxhB,OAAOiT,mBAAmB,CAAA;AACxE,IAAA,MAAM,EAAEwO,eAAe,EAAE,GAAGzhB,MAAOG,CAAAA,QAAQ,CAACoS,aAAa,CAAA;IAEzD,OAAOzC,IAAAA,CAAK1f,GAAG,CAAC,CAAC2vB,KAAAA,GAAAA;AACf,QAAA,IAAI,OAAOA,KAAK,CAACwB,UAAW,CAAA,KAAK,UAAU,OAAOxB,KAAAA,CAAAA;QAClD,MAAM2B,UAAAA,GAAa3B,KAAK,CAACwB,UAAW,CAAA,CAAA;QACpC,IAAII,UAAAA,CAAAA;QACJ,IACEF,eAAAA,EAAiB9tB,SAASud,OAC1BsQ,IAAAA,qBAAAA,IACAzB,KAAK,CAACyB,qBAAAA,CAAsB,KAAK,SACjC,EAAA;AACAG,YAAAA,UAAAA,GAAale,YAAYE,OAAO,CAAA;SAC3B,MAAA,IAAI8d,iBAAiBG,YAAc1Q,EAAAA,OAAAA,IAAW,CAAC6O,KAAK,CAACwB,WAAW,EAAE;AACvEI,YAAAA,UAAAA,GAAale,YAAYI,aAAa,CAAA;SACjC,MAAA;AACL,YAAA,MAAMge,eACJha,iCACE,CAAA,MAAA,EACA,KACA6Z,UACAJ,EAAAA,WAAAA,CAAAA,IAEFzZ,kCACE,MACA,EAAA,WAAA,EACA6Z,YACAJ,WAEFzZ,CAAAA,IAAAA,iCAAAA,CACE,QACA,OACA6Z,EAAAA,UAAAA,EACAJ,gBAEFzZ,iCACE,CAAA,cAAA,EACA,SACA6Z,UACAJ,EAAAA,WAAAA,CAAAA,CAAAA;YAEJ,IAAIG,eAAAA,EAAiBE,UAAYzQ,EAAAA,OAAAA,IAAW2Q,YAAc,EAAA;AACxDF,gBAAAA,UAAAA,GAAale,YAAYM,UAAU,CAAA;AACrC,aAAA,MAAO,IAAI0d,eAAAA,EAAiBK,YAAc5Q,EAAAA,OAAAA,IAAW,CAAC2Q,YAAc,EAAA;AAClEF,gBAAAA,UAAAA,GAAale,YAAYQ,YAAY,CAAA;aAChC,MAAA;AACL0d,gBAAAA,UAAAA,GAAale,YAAYse,KAAK,CAAA;AAChC,aAAA;AACF,SAAA;QACA,OAAO;AACL,YAAA,GAAGhC,KAAK;YACRiC,YAAcL,EAAAA,UAAAA;AAChB,SAAA,CAAA;AACF,KAAA,CAAA,CAAA;AACF,CAAE;;AClHF;AACA;AAEA,MAAMM,8BAA8B,CAACC,KAAAA,GAAAA;AACnC,IAAA,MAAMnB,QAAWmB,GAAAA,KAAAA,CAAMpB,OAAO,CAACC,QAAQ,EAAElvB,MAAO,CAAA,CAACC,CAAMA,GAAAA,CAAAA,CAAEvB,MAAM,GAAG,MAAM,EAAE,CAAA;;;;;;;IAQ1E,OAAOwwB,QAAQ,CAAC,CAAE,CAAA,CAAA;AAElB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,CAAA,CAAA;AAEA,MAAMoB,YAAAA,GAAe,CAACC,QAAsB3gB,EAAAA,KAAAA,GAAAA;;;;;;;;;;;;AAa1C,IAAA,MAAM4P,SAASjS,QAAS,CAAA;QAAEF,IAAMuC,EAAAA,KAAAA;QAAO3O,IAAMsvB,EAAAA,QAAAA;AAAS,KAAA,CAAA,CAAA;AACtD,IAAA,OAAO/Q,MAAQ9gB,EAAAA,MAAAA,GAAS8gB,MAAM,CAAC,EAAE,GAAG9c,SAAAA,CAAAA;AACtC,CAAA,CAAA;AAgBA,MAAM8tB,0BAAAA,GAA6B,CACjCzF,gBAAAA,EACA9M,IACAwQ,EAAAA,QAAAA,GAAAA;AAEA,IAAA,OAAO1D,gBAAiBM,CAAAA,OAAO,CAAC9sB,GAAG,CAAC,CAACyB,MAAAA,GAAAA;AACnC,QAAA,MAAM,EAAE/C,GAAG,EAAEyuB,cAAc,EAAE,GAAG1rB,MAAAA,CAAAA;AAChC,QAAA,MAAMkqB,SAASqE,oBACbtxB,CAAAA,GAAAA,EACAghB,IACA8M,EAAAA,gBAAAA,CAAiBnb,KAAK,EACtB6e,QAAAA,CAAAA,CAAAA;QAEF,OAAO;AACLxxB,YAAAA,GAAAA;AACAyuB,YAAAA,cAAAA;AACAnB,YAAAA,iBAAAA,EAAmBL,MAAOzgB,CAAAA,MAAM,CAAC,CAACC,GAAK+mB,EAAAA,GAAAA,GAAAA;gBACrC/mB,GAAG,CAAC+mB,IAAI,GAAGA,GAAAA,CAAAA;gBACX,OAAO/mB,GAAAA,CAAAA;AACT,aAAA,EAAG,EAAC,CAAA;AACN,SAAA,CAAA;AACF,KAAA,CAAA,CAAA;AACF,CAAA,CAAA;AAEA,MAAMgnB,aAAgB,GAAA,CAAC,EACrBC,QAAAA,GAAW,iCAAiC,EAC5CC,UAAa,GAAA,KAAK,EAClBC,UAAAA,GAAa,gBAAgB,EAC7B9f,eAAe,EACO,GAAA;AACtB,IAAA,MAAM,CAAC+f,OAAAA,EAASC,UAAW,CAAA,GAAGlvB,SAA4B,EAAE,CAAA,CAAA;AAC5D,IAAA,MAAM,CAAC8hB,OAAAA,EAASqN,UAAW,CAAA,GAAGnvB,QAAS,CAAA,KAAA,CAAA,CAAA;AAEvC,IAAA,MAAM,EACJoc,IAAI,EACJgT,eAAe,EACfrN,UAAU,EACVF,SAAS,EACTwN,SAAS,EACTvN,OAAAA,EAASwN,YAAY,EACtB,GAAGC,cAAe,CAAA;QACjBT,QAAUA,EAAAA,QAAAA;QACVE,UAAYA,EAAAA,UAAAA;QACZQ,MAAQ,EAAA,CAAA;QACRC,QAAUV,EAAAA,UAAAA;AACZ,KAAA,CAAA,CAAA;AAEA,IAAA,MAAMnB,WAAc1qB,GAAAA,eAAAA,CAAgB,CAACC,KAAAA,GACnCusB,sBAAuBvsB,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA;IAGzBhB,SAAU,CAAA,IAAA;AACR,QAAA,IAAIia,QAAQiT,SAAW,EAAA;YACrB,MAAM/R,SAAAA,GAAY3hB,MAAO0sB,CAAAA,MAAM,CAACjM,IAAAA,CAAKA,IAAI,CAAExU,CAAAA,MAAM,CAC/C,CAACC,GAAmB+mB,EAAAA,GAAAA,GAAAA;gBAClB,OAAOA,GAAG,CAACI,UAAAA,CAAW,GAClB;AAAInnB,oBAAAA,GAAAA,GAAAA;AAAK+mB,oBAAAA,GAAG,CAACI,UAAW,CAAA;iBAAe,GACvCnnB,GAAAA,CAAAA;AACN,aAAA,EACA,EAAE,CAAA,CAAA;YAGJ,IAAIqH,eAAAA,EAAiBzC,QAAUoS,EAAAA,aAAAA,CAAcrB,OAAS,EAAA;gBACpD0R,UACEvB,CAAAA,qBAAAA,CAAsBrQ,WAAWpO,eAAiB0e,EAAAA,WAAAA,CAAAA,CAAAA,CAAAA;AAEtD,aAAA,MAAOsB,UAAW5R,CAAAA,SAAAA,CAAAA,CAAAA;AACpB,SAAA;KACC,EAAA;AAACsQ,QAAAA,WAAAA;AAAaxR,QAAAA,IAAAA;AAAMlN,QAAAA,eAAAA;AAAiBmgB,QAAAA,SAAAA;AAAWL,QAAAA,UAAAA;AAAW,KAAA,CAAA,CAAA;IAE9D7sB,SAAU,CAAA,IAAA;AACR,QAAA,IAAImtB,YAAc,EAAA;YAChBH,UAAW,CAAA,IAAA,CAAA,CAAA;AACb,SAAA;KACC,EAAA;AAACG,QAAAA,YAAAA;AAAa,KAAA,CAAA,CAAA;IAEjB,OAAO;AACLL,QAAAA,OAAAA;AACAG,QAAAA,eAAAA;AACArN,QAAAA,UAAAA;AACAF,QAAAA,SAAAA;AACAwN,QAAAA,SAAAA;AACAvN,QAAAA,OAAAA;AACF,KAAA,CAAA;AACF,CAAA,CAAA;AAEA,MAAM6N,gBAAmB,GAAA,CAAC,EACxBb,QAAAA,GAAW,iCAAiC,EAC5CC,UAAa,GAAA,KAAK,EAClBC,UAAAA,GAAa,gBAAgB,EAC7B9f,eAAe,EACO,GAAA;AACtB,IAAA,MAAM,CAAC+f,OAAAA,EAASC,UAAW,CAAA,GAAGlvB,SAA4B,EAAE,CAAA,CAAA;AAC5D,IAAA,MAAM,CAAC8hB,OAAAA,EAASqN,UAAW,CAAA,GAAGnvB,QAAS,CAAA,KAAA,CAAA,CAAA;AAEvC,IAAA,MAAM,EACJoc,IAAI,EACJgT,eAAe,EACfrN,UAAU,EACVF,SAAS,EACTwN,SAAS,EACTvN,OAAAA,EAASwN,YAAY,EACtB,GAAGM,iBAAkB,CAAA;QACpBd,QAAUA,EAAAA,QAAAA;QACVE,UAAYA,EAAAA,UAAAA;QACZQ,MAAQ,EAAA,CAAA;QACRC,QAAUV,EAAAA,UAAAA;AACZ,KAAA,CAAA,CAAA;AAEA,IAAA,MAAMnB,WAAc1qB,GAAAA,eAAAA,CAAgB,CAACC,KAAAA,GACnCusB,sBAAuBvsB,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA;IAEzBhB,SAAU,CAAA,IAAA;AACR,QAAA,IAAIia,QAAQiT,SAAW,EAAA;YACrB,IAAIngB,eAAAA,EAAiBzC,QAAUoS,EAAAA,aAAAA,CAAcrB,OAAS,EAAA;AACpD0R,gBAAAA,UAAAA,CACEvB,qBAAsBvR,CAAAA,IAAAA,CAAKA,IAAI,EAAElN,eAAiB0e,EAAAA,WAAAA,CAAAA,CAAAA,CAAAA;aAE/CsB,MAAAA,UAAAA,CAAW9S,KAAKA,IAAI,CAAA,CAAA;AAC7B,SAAA;KACC,EAAA;AAACA,QAAAA,IAAAA;AAAMiT,QAAAA,SAAAA;AAAWL,QAAAA,UAAAA;AAAW,KAAA,CAAA,CAAA;IAEhC7sB,SAAU,CAAA,IAAA;AACR,QAAA,IAAImtB,YAAc,EAAA;YAChBH,UAAW,CAAA,IAAA,CAAA,CAAA;AACb,SAAA;KACC,EAAA;AAACG,QAAAA,YAAAA;AAAa,KAAA,CAAA,CAAA;IAEjB,OAAO;AACLL,QAAAA,OAAAA;AACAG,QAAAA,eAAAA;AACArN,QAAAA,UAAAA;AACAF,QAAAA,SAAAA;AACAwN,QAAAA,SAAAA;AACAvN,QAAAA,OAAAA;AACF,KAAA,CAAA;AACF,CAAA,CAAA;AASA,MAAM+N,iBAAAA,GAAoB,CAAC,EACzB3gB,eAAe,EACfie,WAAW,EACX8B,OAAO,EACPI,SAAS,EACW,GAAA;AACpB,IAAA,MAAMS,mBACJ5gB,eAAiBzC,EAAAA,QAAAA,EAAUsjB,MAAQC,EAAAA,SAAAA,EAAWC,wBAAwB,EAAE,CAAA;IAC1E,MAAMrD,QAAAA,GAAW1d,eAAiBqQ,EAAAA,mBAAAA,EAAqBC,GAAO,IAAA,MAAA,CAAA;AAE9D,IAAA,MAAM,CAAC0Q,YAAAA,EAAcC,eAAgB,CAAA,GAAGnwB,SAA4B,EAAE,CAAA,CAAA;AACtE,IAAA,MAAM,CAACowB,WAAAA,EAAaC,cAAe,CAAA,GAAGrwB,SAAwB,EAAE,CAAA,CAAA;IAChE,MAAM,EACJ+vB,MAAM,EACNO,WAAW,EACXC,aAAa,EACbC,UAAU,EACVJ,WAAaK,EAAAA,qBAAqB,EAClCC,MAAM,EACNC,SAAS,EACTC,WAAW,EACXC,gBAAgB,EACjB,GAAGC,aAAc,CAAA,EAAE,EAAE;QACpBzU,MAAQyT,EAAAA,gBAAAA;QACRiB,WAAa,EAAA;AAACnE,YAAAA,QAAAA;AAAS,SAAA;QACvB3O,OAAS2O,EAAAA,QAAAA;QACToE,YAAcvC,EAAAA,YAAAA;;QAEdwC,aAAe,EAAA;YACbC,WAAaC,EAAAA,UAAAA,CAAWC,UAAU,CAAC,aAAA,CAAA;AACrC,SAAA;AACF,KAAA,CAAA,CAAA;AAEA,IAAA,MAAMC,cAAcnE,cAAeC,CAAAA,WAAAA,CAAAA,CAAAA;AAEnC,IAAA,MAAMmE,mBAAmBxtB,WAAY,CAAA,IAAA;AACnC8sB,QAAAA,WAAAA,EAAAA,CAAAA;AACAC,QAAAA,gBAAAA,EAAAA,CAAAA;KACC,EAAA;AAACD,QAAAA,WAAAA;AAAaC,QAAAA,gBAAAA;AAAiB,KAAA,CAAA,CAAA;IAElC3wB,oBAAqB,CAAA,IAAA;;AAEnB,QAAA,IAAI+uB,OAAWI,IAAAA,SAAAA,IAAaJ,OAAQpyB,CAAAA,MAAM,GAAG,CAAG,EAAA;AAC9C8zB,YAAAA,SAAAA,EAAAA,CAAAA;;AAEA,YAAA,MAAMY,WAActC,GAAAA,OAAAA,CAAQrnB,MAAM,CAAC,CAACC,GAAK+mB,EAAAA,GAAAA,GAAAA;AACvC,gBAAA,IAAI,CAACA,GAAG,CAAChC,SAAS,EAChB/kB,GAAAA,CAAIxG,IAAI,CAAC;AACP,oBAAA,GAAGutB,GAAG;oBACN,CAAChC,QAAAA,GAAWpZ,IAAKge,CAAAA,MAAM,GAAG3kB,QAAQ,CAAC,EAAI4kB,CAAAA,CAAAA,SAAS,CAAC,CAAA,CAAA;AACnD,iBAAA,CAAA,CAAA;AACG5pB,qBAAAA,GAAAA,CAAIxG,IAAI,CAACutB,GAAAA,CAAAA,CAAAA;gBACd,OAAO/mB,GAAAA,CAAAA;AACT,aAAA,EAAG,EAAE,CAAA,CAAA;YACL6oB,MAAOa,CAAAA,WAAAA,CAAAA,CAAAA;AACT,SAAA;KACC,EAAA;AAACb,QAAAA,MAAAA;AAAQrB,QAAAA,SAAAA;AAAWJ,QAAAA,OAAAA;AAAS0B,QAAAA,SAAAA;AAAW/D,QAAAA,QAAAA;AAAS,KAAA,CAAA,CAAA;IAEpDzqB,SAAU,CAAA,IAAA;AACR,QAAA,IAAI8sB,WAAWoC,WAAa,EAAA;AAC1B,YAAA,MAAMK,cAAcnD,2BAA4BpB,CAAAA,WAAAA,CAAAA,CAAAA;AAChD,YAAA,IAAIuE,WAAa,EAAA;gBACf3B,MAAO2B,CAAAA,WAAAA,CAAAA,CAAAA;gBACPpB,WAAYoB,CAAAA,WAAAA,CAAAA,CAAAA;AACd,aAAA;AACF,SAAA;KACC,EAAA;AAACpB,QAAAA,WAAAA;AAAae,QAAAA,WAAAA;AAAapC,QAAAA,OAAAA;AAASc,QAAAA,MAAAA;AAAQ5C,QAAAA,WAAAA;AAAY,KAAA,CAAA,CAAA;IAE3DjtB,oBAAqB,CAAA,IAAA;AACnB,QAAA,MAAMyxB,0BAA6B,GAAA,IAAA;AACjC,YAAA,OAAOpB,gBAAgBA,aAAgBtB,GAAAA,OAAAA,CAAAA;AACzC,SAAA,CAAA;AAEA,QAAA,MAAM2C,8BAA8B,CAACC,KAAAA,GAAAA;AACnC,YAAA,OAAO9F,iBACL8F,CAAAA,KAAAA,EACA1E,WAAYlB,CAAAA,mBAAmB,EAC/B/c,eAAAA,CAAAA,CAAAA;AAEJ,SAAA,CAAA;AAEAihB,QAAAA,eAAAA,CAAgByB,2BAA4BD,CAAAA,0BAAAA,EAAAA,CAAAA,CAAAA,CAAAA;QAE5CtB,cAAe,CAAA,IAAA;AACb,YAAA,OACEI,uBAAuB/zB,GACrB,CAAA,CAACo1B,aAA2BA,UAAWA,CAAAA,UAAU,KAC9C,EAAE,CAAA;AAEX,SAAA,CAAA,CAAA;KACC,EAAA;AACD5iB,QAAAA,eAAAA;AACA+f,QAAAA,OAAAA;AACAwB,QAAAA,qBAAAA;AACAF,QAAAA,aAAAA;AACApD,QAAAA,WAAAA,CAAYlB,mBAAmB;AAChC,KAAA,CAAA,CAAA;IAED,OAAO;AACLiE,QAAAA,YAAAA,EAAcmB,cAAcnB,YAAejB,GAAAA,OAAAA;QAC3CqC,gBAAkBA,EAAAA,gBAAAA;QAClBlB,WAAaA,EAAAA,WAAAA;AACf,KAAA,CAAA;AACF,CAAA,CAAA;AAOA,MAAM2B,gBAAgB,CAAC,EAAE3V,IAAI,EAAEuF,UAAU,EAAuB,GAAA;AAC9D,IAAA,MAAM,CAACqQ,aAAAA,EAAeC,gBAAiB,CAAA,GAAGjyB,SAAuB,EAAE,CAAA,CAAA;IAEnEmC,SAAU,CAAA,IAAA;AACR,QAAA,MAAM+vB,mBAAsB,GAAA,IAAA;YAC1BD,gBACE7V,CAAAA,IAAAA,CAAKnI,KAAK,CAAC0N,UAAW6N,CAAAA,MAAM,EAAE7N,UAAW6N,CAAAA,MAAM,GAAG7N,UAAAA,CAAW8N,QAAQ,CAAA,CAAA,CAAA;AAEzE,SAAA,CAAA;AAEAyC,QAAAA,mBAAAA,EAAAA,CAAAA;KACC,EAAA;AAAC9V,QAAAA,IAAAA;AAAMuF,QAAAA,UAAAA,CAAW6N,MAAM;AAAE7N,QAAAA,UAAAA,CAAW8N,QAAQ;AAAC,KAAA,CAAA,CAAA;IAEjD,OAAO;AACLuC,QAAAA,aAAAA;AACF,KAAA,CAAA;AACF,CAAA,CAAA;AAQA,MAAMG,gCAAAA,GAAmC,CAAC,EACxC/V,IAAI,EACJgW,qBAAqB,EACrBxF,QAAQ,EAC4B,GAAA;AACpC,IAAA,MAAM,CAACyF,0BAAAA,EAA4BC,6BAA8B,CAAA,GAAGtyB,SAElE,EAAE,CAAA,CAAA;IAEJmC,SAAU,CAAA,IAAA;AACR,QAAA,IAAIia,IAAM,EAAA;YACRkW,6BACE3D,CAAAA,0BAAAA,CAA2ByD,uBAAuBhW,IAAMwQ,EAAAA,QAAAA,CAAAA,CAAAA,CAAAA;AAE5D,SAAA;KACC,EAAA;AAACwF,QAAAA,qBAAAA;AAAuBhW,QAAAA,IAAAA;AAAMwQ,QAAAA,QAAAA;AAAS,KAAA,CAAA,CAAA;IAE1C,OAAO;AACLyF,QAAAA,0BAAAA;AACF,KAAA,CAAA;AACF,CAAA,CAAA;AAwBO,MAAME,iBAAiB,CAAC,EAC7B5Q,UAAU,EACVwL,WAAW,EACXlB,mBAAmB,EACnB/c,eAAe,EACf4f,QAAW,GAAA,oBAAoB,EAC/BC,UAAa,GAAA,KAAK,EAClBC,UAAa,GAAA,gBAAgB,EAC7BwD,QAAQ,EAGT,GAAA;IACC,MAAM5F,QAAAA,GAAW1d,eAAiBqQ,EAAAA,mBAAAA,EAAqBC,GAAO,IAAA,MAAA,CAAA;IAC9D,MAAMiT,YAAAA,GAAevjB,iBAAiB4f,QAAYA,IAAAA,QAAAA,CAAAA;IAClD,MAAM4D,cAAAA,GAAiBxjB,iBAAiB8f,UAAcA,IAAAA,UAAAA,CAAAA;AACtD,IAAA,MAAM,CAAC2D,iBAAAA,EAAmBC,oBAAqB,CAAA,GAAG5yB,SAChD,EAAE,CAAA,CAAA;AAGJ,IAAA,MAAM,EACJivB,OAAO,EACPG,eAAe,EACfrN,UAAU,EACVF,SAAS,EACTwN,SAAS,EACTvN,OAAO,EACR,GAAG0Q,QAAS,CAAA;QACXxD,UAAY0D,EAAAA,cAAAA;QACZ5D,QAAU2D,EAAAA,YAAAA;AACV1D,QAAAA,UAAAA;AACA7f,QAAAA,eAAAA;AACF,KAAA,CAAA,CAAA;AAEA,IAAA,MAAM8S,6BACJ3V,6BAA8B6C,CAAAA,eAAAA,CAAAA,CAAAA;AAEhC,IAAA,MAAM,EAAEmjB,0BAA0B,EAAE,GAAGF,gCAAiC,CAAA;QACtE/V,IAAM6S,EAAAA,OAAAA;QACNmD,qBAAuBljB,EAAAA,eAAAA,CAAgBzC,QAAQ,EAAEyc,gBAAoB,IAAA;YACnE1L,OAAS,EAAA,KAAA;YACTzP,KAAO,EAAA,EAAA;YACP3B,WAAa,EAAA,EAAA;AACbod,YAAAA,OAAAA,EAAS,EAAE;AACb,SAAA;AACAoD,QAAAA,QAAAA;AACF,KAAA,CAAA,CAAA;IAEA,MAAM,EAAEsD,YAAY,EAAEoB,gBAAgB,EAAElB,WAAW,EAAE,GAAGP,iBAAkB,CAAA;AACxE3gB,QAAAA,eAAAA;AACAie,QAAAA,WAAAA;AAEA8B,QAAAA,OAAAA;AACAI,QAAAA,SAAAA;AACF,KAAA,CAAA,CAAA;;AAGA,IAAA,MAAM,EAAE2C,aAAa,EAAE,GAAGD,aAAc,CAAA;QACtC3V,IAAM8T,EAAAA,YAAAA;AACNvO,QAAAA,UAAAA;AACF,KAAA,CAAA,CAAA;IAEAxf,SAAU,CAAA,IAAA;QACRywB,oBACElF,CAAAA,mBAAAA,CAAoBwC,cAAchhB,eAAiB2jB,EAAAA,YAAAA,CAAAA,CAAAA,CAAAA;KAEpD,EAAA;AAAC3C,QAAAA,YAAAA;QAAchhB,eAAiB2jB,EAAAA,YAAAA;AAAa,KAAA,CAAA,CAAA;;;;;IAOhD,OAAO;AACLzW,QAAAA,IAAAA,EAAM4F,6BAA6BgQ,aAAgB9B,GAAAA,YAAAA;QACnD3O,IAAM2O,EAAAA,YAAAA,CAAarzB,MAAM,IAAI,CAAC,CAAA;QAC9B+zB,WAAaU,EAAAA,gBAAAA;QACblB,WAAaA,EAAAA,WAAAA;AACbiC,QAAAA,0BAAAA;AACAM,QAAAA,iBAAAA;QACAnR,iBAAmB,EAAA;AACjB4N,YAAAA,eAAAA;AACArN,YAAAA,UAAAA;AACAF,YAAAA,SAAAA;AACAwN,YAAAA,SAAAA;AACAvN,YAAAA,OAAAA;AACF,SAAA;AACF,KAAA,CAAA;AACF,CAAE,CAAA;AAEK,MAAMgR,oBAAoB,CAAC,EAChCnR,UAAU,EACVwL,WAAW,EACXlB,mBAAmB,EACnB/c,eAAe,EACf4f,QAAW,GAAA,oBAAoB,EAC/BC,UAAa,GAAA,KAAK,EAClBC,UAAa,GAAA,gBAAgB,EACJ,GACzBuD,cAAe,CAAA;AACb5Q,QAAAA,UAAAA;AACAwL,QAAAA,WAAAA;AACAlB,QAAAA,mBAAAA;AACA/c,QAAAA,eAAAA;AACA4f,QAAAA,QAAAA;AACAC,QAAAA,UAAAA;AACAC,QAAAA,UAAAA;QACAwD,QAAU3D,EAAAA,aAAAA;KACT,CAAA,CAAA;AAEE,MAAMkE,uBAAuB,CAAC,EACnCpR,UAAU,EACVwL,WAAW,EACXlB,mBAAmB,EACnB/c,eAAe,EACf4f,QAAW,GAAA,oBAAoB,EAC/BC,UAAa,GAAA,KAAK,EAClBC,UAAa,GAAA,gBAAgB,EACJ,GACzBuD,cAAe,CAAA;AACb5Q,QAAAA,UAAAA;AACAwL,QAAAA,WAAAA;AACAlB,QAAAA,mBAAAA;AACA/c,QAAAA,eAAAA;AACA4f,QAAAA,QAAAA;AACAC,QAAAA,UAAAA;AACAC,QAAAA,UAAAA;QACAwD,QAAU7C,EAAAA,gBAAAA;KACT,CAAA;;AClhBL,MAAMqD,0BAA6B,GAAA,CAAC,EAClCC,aAAa,EACbC,WAAW,EACXhtB,KAAK,EACLkqB,WAAW,EACXQ,WAAc,GAAA,IAAM,IAAI,EACQ,GAAA;AAChC,IAAA,MAAM,CAACuC,UAAAA,EAAYC,aAAc,CAAA,GAAGpzB,QAAS,CAAA,EAAA,CAAA,CAAA;AAE7C,IAAA,qBACEtF,GAAC+B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAU,EAAA,UAAA;AACb,QAAA,QAAA,gBAAAS,GAAC24B,CAAAA,YAAAA,EAAAA;YACCjX,IAAMgU,EAAAA,WAAAA;YACNlqB,KAAOA,EAAAA,KAAAA;AACPkB,YAAAA,WAAAA,gBAAa1M,GAAC44B,CAAAA,QAAAA,EAAAA;gBAAW5tB,IAAM,EAAA,EAAA;;AAC/BwtB,YAAAA,WAAAA,EAAaA,WAAe,IAAA,WAAA;YAC5BK,aAAY,EAAA,8BAAA;YACZjsB,YAAW,EAAA,uBAAA;YACX5I,KAAOy0B,EAAAA,UAAAA;AACPtK,YAAAA,QAAAA,EAAU,CAACnqB,KAAAA,GAAAA;gBACTu0B,aAAcv0B,CAAAA,KAAAA,CAAAA,CAAAA;gBACd00B,aAAc10B,CAAAA,KAAAA,CAAAA,CAAAA;AAChB,aAAA;YACArD,UAAY,EAAA;gBACVw2B,KAAO,EAAA,6CAAA;AACT,aAAA;YACAnsB,IAAK,EAAA,IAAA;AACL8tB,YAAAA,YAAAA,EACEL,UAAWt2B,CAAAA,MAAM,GAAG,CAAA,kBAClBnC,GAAC+4B,CAAAA,OAAAA,EAAAA;gBACChtB,OAAS,EAAA,IAAA;oBACP2sB,aAAc,CAAA,EAAA,CAAA,CAAA;oBACdH,aAAc,CAAA,EAAA,CAAA,CAAA;AACdrC,oBAAAA,WAAAA,EAAAA,CAAAA;AACF,iBAAA;gBACA32B,SAAU,EAAA,gBAAA;gBACVs5B,aAAY,EAAA,2BAAA;;;;AAO1B,CAAA;;AChCA;;;;AAIA,GACA,MAAMG,WAAW,CAAC,EAChBR,cAAc,mEAAmE,EACjFS,aAAgB,GAAA,UAAU,EACZ,GAAA;AACd,IAAA,MAAM,CAACR,UAAAA,EAAYC,aAAc,CAAA,GAAGpzB,QAAS,CAAA,EAAA,CAAA,CAAA;AAC7C,IAAA,MAAM,CAAC4zB,kBAAAA,EAAoBC,qBAAsB,CAAA,GAAG7zB,QAAS,CAAA,EAAA,CAAA,CAAA;AAC7D,IAAA,MAAM,CAAC8zB,eAAAA,EAAiBC,kBAAmB,CAAA,GAAG/zB,SAAqB,EAAC,CAAA,CAAA;AACpE,IAAA,MAAM,CAACg0B,mBAAAA,EAAqBC,sBAAuB,CAAA,GAAGj0B,QAAS,CAAA,KAAA,CAAA,CAAA;AAC/D,IAAA,MAAM,CAACk0B,WAAAA,EAAaC,cAAe,CAAA,GAAGn0B,QAAS,CAAA,KAAA,CAAA,CAAA;AAC/C,IAAA,MAAM,CAACo0B,gBAAAA,EAAkBC,mBAAoB,CAAA,GAAGr0B,SAA6B,EAAE,CAAA,CAAA;IAC/E,MAAM,CAACs0B,mBAAqBC,EAAAA,sBAAAA,CAAuB,GAAGv0B,QAAAA,EAAAA,CAAAA;AACtD,IAAA,MAAM,CAACw0B,SAAAA,EAAWC,YAAa,CAAA,GAAGz0B,QAAwB,CAAA,QAAA,CAAA,CAAA;AAC1D,IAAA,MAAM,CACJ00B,WAAAA,EACA,EAAE7S,SAAAA,EAAW8S,YAAY,EAAEvY,IAAMwY,EAAAA,UAAU,EAAEvJ,KAAAA,EAAOwJ,OAAO,EAAE,CAE9D,GAAGC,sBAAAA,EAAAA,CAAAA;AAEJ,IAAA,MAAMC,KAAQ,GAAA,IAAA;AACZ,QAAA,IAAI,CAAC5B,UAAY,EAAA;AACf,YAAA,OAAA;AACF,SAAA;QACAU,qBAAsBV,CAAAA,UAAAA,CAAAA,CAAAA;;QAGtB,IAAIW,eAAe,CAACX,UAAAA,CAAW,EAAE;;AAE/B,YAAA,IAAIW,eAAe,CAACX,UAAAA,CAAW,CAACxV,MAAM,EAAEqX,KAAO,EAAA;;AAE7CT,gBAAAA,sBAAAA,CAAuBT,eAAe,CAACX,UAAW,CAAA,CAACxV,MAAM,CAAA,CAAA;gBACzDwW,cAAe,CAAA,KAAA,CAAA,CAAA;AACf,gBAAA,OAAA;AACF,aAAA;;YAEA,IAAIQ,YAAAA,IAAgBb,eAAe,CAACX,UAAW,CAAA,CAAC8B,cAAc,GAAIt2B,IAAAA,CAAKC,GAAG,EAAA,GAAK,KAAQ,EAAA;;AAErF,gBAAA,OAAA;AACF,aAAA;;AAEF,SAAA;;QAIAm1B,kBAAmBmB,CAAAA,CAAAA,iBAAkB;AACnC,gBAAA,GAAGA,aAAa;AAChB,gBAAA,CAAC/B,aAAa;AAAC8B,oBAAAA,cAAAA,EAAgBt2B,KAAKC,GAAG,EAAA;AAAE,iBAAA;aAC3C,CAAA,CAAA,CAAA;;QAIAu1B,cAAe,CAAA,IAAA,CAAA,CAAA;QACfO,WAAY,CAAA;YACVM,KAAO7B,EAAAA,UAAAA;AACT,SAAA,CAAA,CAAA;;QAEAoB,sBAAuB1zB,CAAAA,SAAAA,CAAAA,CAAAA;;QAEvBozB,sBAAuB,CAAA,IAAA,CAAA,CAAA;AAEzB,KAAA,CAAA;IACA9xB,SAAU,CAAA,IAAA;;QAER,IAAI,CAACyyB,YAAYI,KAAO,EAAA;AACtB,YAAA,OAAA;AACF,SAAA;;QAEA,IAAIJ,UAAAA,EAAYI,UAAUpB,kBAAoB,EAAA;YAC5CW,sBAAuBK,CAAAA,UAAAA,CAAAA,CAAAA;YACvBT,cAAe,CAAA,KAAA,CAAA,CAAA;AACjB,SAAA;;AAGAJ,QAAAA,kBAAAA,CAAmBmB,CAAAA,aAAAA,GAAAA;AACjB,YAAA,MAAMC,YAAeD,GAAAA,aAAa,CAACN,UAAAA,CAAWI,KAAK,CAAC,CAAA;YACpDG,YAAaC,CAAAA,YAAY,GAAGz2B,IAAAA,CAAKC,GAAG,EAAA,CAAA;AACpCu2B,YAAAA,YAAAA,CAAaxX,MAAM,GAAGiX,UAAAA,CAAAA;YACtB,OAAO;AAAC,gBAAA,GAAGM,aAAa;AAAA,aAAA,CAAA;AAC1B,SAAA,CAAA,CAAA;KACC,EAAA;AAACN,QAAAA,UAAAA;AAAYhB,QAAAA,kBAAAA;AAAmB,KAAA,CAAA,CAAA;IAEnCzxB,SAAU,CAAA,IAAA;;AAER4xB,QAAAA,kBAAAA,CAAmBsB,KAAKC,KAAK,CAAEC,cAAeC,CAAAA,OAAO,CAAC7B,aAAkB,CAAA,IAAA,IAAA,CAAA,CAAA,CAAA;KACvE,EAAA;AAACA,QAAAA,aAAAA;AAAc,KAAA,CAAA,CAAA;IAElBxxB,SAAU,CAAA,IAAA;;AAER,QAAA,IAAI2xB,eAAiB,EAAA;AACnByB,YAAAA,cAAAA,CAAeE,OAAO,CAAC9B,aAAe0B,EAAAA,IAAAA,CAAKK,SAAS,CAAC5B,eAAAA,CAAAA,CAAAA,CAAAA;AACvD,SAAA;KACC,EAAA;AAACH,QAAAA,aAAAA;AAAeG,QAAAA,eAAAA;AAAgB,KAAA,CAAA,CAAA;IAEnC3xB,SAAU,CAAA,IAAA;;AAER,QAAA,IAAI0yB,OAAS,EAAA;YACX,MAAMc,WAAAA,GAAc,OAACd,CAAgC11B,MAAM,CAAA;YAC3D,OAAQw2B,WAAAA;gBACN,KAAK,GAAA;oBACFpB,sBAAuB,CAAA;wBACrBqB,KAAO,EAAA,OAAA;wBACPC,cAAgB,EAAA,OAAA;AAChBC,wBAAAA,SAAAA,EAAW,EAAE;wBACbd,KAAOpB,EAAAA,kBAAAA;wBACPmC,QAAU,EAAA,4CAAA;AAA4C,qBAAA,CAAA,CAAA;AACxD,oBAAA,MAAA;gBACD,KAAK,GAAA;oBACJxB,sBAAuB,CAAA;wBACrBqB,KAAO,EAAA,OAAA;wBACPC,cAAgB,EAAA,OAAA;AAChBC,wBAAAA,SAAAA,EAAW,EAAE;wBACbd,KAAOpB,EAAAA,kBAAAA;wBACPmC,QAAU,EAAA,kFAAA;AAAkF,qBAAA,CAAA,CAAA;AAC7F,oBAAA,MAAA;AACJ,gBAAA;oBACExB,sBAAuB,CAAA;wBACrBqB,KAAO,EAAA,OAAA;wBACPC,cAAgB,EAAA,OAAA;AAChBC,wBAAAA,SAAAA,EAAW,EAAE;wBACbd,KAAOpB,EAAAA,kBAAAA;wBACPmC,QAAU,EAAA,mDAAA;AAAmD,qBAAA,CAAA,CAAA;AACnE,aAAA;YAEA5B,cAAe,CAAA,KAAA,CAAA,CAAA;AACjB,SAAA;KACC,EAAA;AAACU,QAAAA,OAAAA;AAASjB,QAAAA,kBAAAA;AAAmB,KAAA,CAAA,CAAA;IAEhC,MAAMoC,gBAAAA,GAAmBC,uBAAuB,CAAC9C,UAAAA,GAAAA;;AAE/CoB,QAAAA,sBAAAA,CAAuBT,eAAe,CAACX,UAAW,CAAA,CAACxV,MAAM,CAAA,CAAA;QACzDyV,aAAcD,CAAAA,UAAAA,CAAAA,CAAAA;QACdgB,cAAe,CAAA,KAAA,CAAA,CAAA;QACfF,sBAAuB,CAAA,IAAA,CAAA,CAAA;;QAGvBQ,YAAa,CAAA,QAAA,CAAA,CAAA;KAEZ,EAAA;AAACX,QAAAA,eAAAA;AAAgB,KAAA,CAAA,CAAA;AAEpB,IAAA,MAAMoC,sBAAsB,CAAC/C,UAAAA,GAAAA;AAC3BY,QAAAA,kBAAAA,CAAmBmB,CAAAA,aAAAA,GAAAA;YACjB,OAAOA,aAAa,CAAC/B,UAAW,CAAA,CAAA;YAChC,OAAO;AAAC,gBAAA,GAAG+B,aAAa;AAAA,aAAA,CAAA;AAC1B,SAAA,CAAA,CAAA;AACF,KAAA,CAAA;IAEA/yB,SAAU,CAAA,IAAA;;AAER,QAAA,IAAI2xB,eAAiB,EAAA;AACnBO,YAAAA,mBAAAA,CAAoB14B,OAAOC,IAAI,CAACk4B,iBAAiBp3B,GAAG,CAAC,CAACy2B,UAAYv2B,EAAAA,KAAAA,GAAAA;gBAChE,MAAMu5B,OAAAA,GAAUrC,eAAe,CAACX,UAAW,CAAA,CAAA;AAC3C,gBAAA,qBACEp4B,IAACq7B,CAAAA,IAAAA,EAAAA;;sCACC17B,GAAC27B,CAAAA,IAAAA,EAAAA;AACC,4BAAA,QAAA,gBAAA37B,GAACyM,CAAAA,QAAAA,EAAAA;gCAAOlN,SAAU,EAAA,kBAAA;gCAAmBwM,OAAS,EAAA,IAAA;oCAAKuvB,gBAAiB7C,CAAAA,UAAAA,CAAAA,CAAAA;AAAY,iCAAA;AAAI,gCAAA,QAAA,EAAA,IAAIx0B,IAAKw3B,CAAAA,OAAAA,CAAQlB,cAAc,CAAA,CAAEqB,kBAAkB,EAAA;;;sCAEzI57B,GAAC27B,CAAAA,IAAAA,EAAAA;AACC,4BAAA,QAAA,gBAAA37B,GAACyM,CAAAA,QAAAA,EAAAA;gCAAOlN,SAAU,EAAA,kBAAA;gCAAmBwM,OAAS,EAAA,IAAA;oCAAKuvB,gBAAiB7C,CAAAA,UAAAA,CAAAA,CAAAA;AAAY,iCAAA;AAAIA,gCAAAA,QAAAA,EAAAA,UAAAA;;;sCAEtFz4B,GAAC27B,CAAAA,IAAAA,EAAAA;4BAAGp8B,SAAU,EAAA,YAAA;AACZ,4BAAA,QAAA,gBAAAS,GAACuL,CAAAA,OAAAA,EAAAA;gCACCC,KAAM,EAAA,QAAA;gCACNC,QAAS,EAAA,QAAA;gCACTC,SAAS,EAAA,IAAA;gCACT0C,SAAW,EAAA,CAAA;AAEX,gCAAA,QAAA,gBAAApO,GAACyM,CAAAA,QAAAA,EAAAA;oCAAOlN,SAAU,EAAA,gDAAA;oCAAiDwM,OAAS,EAAA,IAAA;wCAAKyvB,mBAAoB/C,CAAAA,UAAAA,CAAAA,CAAAA;AAAY,qCAAA;AAC/G,oCAAA,QAAA,gBAAAz4B,GAAC67B,CAAAA,OAAAA,EAAAA;wCAAQjvB,YAAW,EAAA,QAAA;;;;;;AAfnB1K,iBAAAA,EAAAA,KAAAA,CAAAA,CAAAA;AAqBb,aAAA,CAAA,CAAA,CAAA;AACF,SAAA;KACC,EAAA;AAACk3B,QAAAA,eAAAA;AAAiBkC,QAAAA,gBAAAA;AAAiB,KAAA,CAAA,CAAA;AAEtC,IAAA,qBACEj7B,IAAC8hB,CAAAA,IAAAA,EAAAA;QAAKvW,KAAM,EAAA,UAAA;QAAWrM,SAAU,EAAA,QAAA;QAASoB,UAAY,EAAA;YACpD6hB,GAAK,EAAA,2CAAA;AACP,SAAA;QAAIxe,KAAO81B,EAAAA,SAAAA;QAAW3L,QAAU4L,EAAAA,YAAAA;;AAC9B,0BAAA15B,IAAA,CAAC8hB,KAAKI,IAAI,EAAA;;kCACRviB,GAACuL,CAAAA,OAAAA,EAAAA;wBACCC,KAAM,EAAA,sPAAA;wBACNC,QAAS,EAAA,QAAA;wBACTC,SAAS,EAAA,IAAA;wBACT0C,SAAW,EAAA,CAAA;wBACXzC,SAAS,EAAA,IAAA;wBACT2C,CAAG,EAAA,GAAA;gDAEHtO,GAAA,CAACmiB,KAAKM,GAAG,EAAA;4BAACze,KAAM,EAAA,QAAA;AAAS80B,4BAAAA,YAAAA,gBAAc94B,GAAC87B,CAAAA,MAAAA,EAAAA;gCAAOv8B,SAAU,EAAA,gBAAA;gCAAiBqN,YAAW,EAAA,WAAA;;AAAe,4BAAA,QAAA,EAAA,6BAAA;;;kCAEtG5M,GAACuL,CAAAA,OAAAA,EAAAA;wBACCC,KAAM,EAAA,wDAAA;wBACNC,QAAS,EAAA,QAAA;wBACTC,SAAS,EAAA,IAAA;wBACT0C,SAAW,EAAA,CAAA;wBACXzC,SAAS,EAAA,IAAA;wBACT2C,CAAG,EAAA,GAAA;gDAEHtO,GAAA,CAACmiB,KAAKM,GAAG,EAAA;4BAACze,KAAM,EAAA,SAAA;AAAU80B,4BAAAA,YAAAA,gBAAc94B,GAAC87B,CAAAA,MAAAA,EAAAA;gCAAQv8B,SAAU,EAAA,gBAAA;gCAAiBqN,YAAW,EAAA,WAAA;;AAAe,4BAAA,QAAA,EAAA,gBAAA;;;;;AAI1G,0BAAAvM,IAAA,CAAC8hB,KAAKO,KAAK,EAAA;gBAAC1e,KAAM,EAAA,QAAA;gBAAS+3B,EAAG,EAAA,IAAA;;kCAC5B17B,IAAC0B,CAAAA,KAAAA,EAAAA;wBAAIxC,SAAU,EAAA,UAAA;;0CACbS,GAACg8B,CAAAA,SAAAA,EAAAA;AACCxD,gCAAAA,WAAAA,EAAaA,WAAe,IAAA,WAAA;gCAC5Bx0B,KAAOy0B,EAAAA,UAAAA;AACPtK,gCAAAA,QAAAA,EAAU,CAAC8N,KAAAA,GAAAA;oCACTvD,aAAcuD,CAAAA,KAAAA,CAAM77B,MAAM,CAAC4D,KAAK,CAAA,CAAA;AAClC,iCAAA;AACAk4B,gCAAAA,OAAAA,EAAS,CAAC1yB,CAAAA,GAAMA,CAAE9I,CAAAA,GAAG,KAAK,OAAW25B,IAAAA,KAAAA,EAAAA;gCACrC15B,UAAY,EAAA;oCACViB,IAAM,EAAA,EAAA;AACNu1B,oCAAAA,KAAAA,EAAO,CAAC,YAAY,EAAEmC,mBAAAA,IAAuB,+CAA+C,CAAC;AAC/F,iCAAA;gCACAtuB,IAAK,EAAA,IAAA;;0CAEP3K,IAAC0B,CAAAA,KAAAA,EAAAA;gCAAIxC,SAAU,EAAA,0CAAA;;oCACZk5B,UAAWt2B,CAAAA,MAAM,GAAG,CAAA,kBACnB9B,IAACyL,CAAAA,cAAAA,EAAAA;wCACCvM,SAAU,EAAA,gEAAA;wCACVwM,OAAS,EAAA,IAAA;4CACP2sB,aAAc,CAAA,EAAA,CAAA,CAAA;4CACdS,qBAAsB,CAAA,EAAA,CAAA,CAAA;AACtB,4CAAA,IAAIK,WAAa,EAAA;gDACfD,sBAAuB,CAAA,KAAA,CAAA,CAAA;gDACvBE,cAAe,CAAA,KAAA,CAAA,CAAA;AACjB,6CAAA;AACF,yCAAA;;AACD,4CAAA,QAAA;0DACOz5B,GAAC+4B,CAAAA,OAAAA,EAAAA;gDAAUoD,aAAW,EAAA,IAAA;;;;kDAGhCn8B,GAAC6P,CAAAA,MAAAA,EAAAA;wCACCjE,KAAM,EAAA,QAAA;wCACN6D,IAAK,EAAA,QAAA;wCACLlQ,SAAU,EAAA,KAAA;wCACVyL,IAAK,EAAA,IAAA;AACL0B,wCAAAA,WAAAA,gBAAa1M,GAACo8B,CAAAA,aAAAA,EAAAA;4CAAcD,aAAW,EAAA,IAAA;;wCACvCpwB,OAASsuB,EAAAA,KAAAA;AACR,wCAAA,QAAA,EAAA,QAAA;;;;;;kCAKPr6B,GAAC+B,CAAAA,KAAAA,EAAAA;wBAAIs6B,WAAU,EAAA,QAAA;AACZ/C,wBAAAA,QAAAA,EAAAA,mBAAAA,kBACCt5B,GAAC+B,CAAAA,KAAAA,EAAAA;4BAAIxC,SAAU,EAAA,mDAAA;AACZi6B,4BAAAA,QAAAA,EAAAA,WAAAA,iBACDn5B,IAAC0B,CAAAA,KAAAA,EAAAA;gCAAIxC,SAAU,EAAA,aAAA;;kDACbS,GAAC+vB,CAAAA,MAAAA,EAAAA;wCAAOnkB,KAAM,EAAA,UAAA;wCAAWrM,SAAU,EAAA,mBAAA;;kDACnCS,GAAC+B,CAAAA,KAAAA,EAAAA;AAAI,wCAAA,QAAA,EAAA,yFAAA;;;+CAKP1B,IAAC0B,CAAAA,KAAAA,EAAAA;gCAAIxC,SAAU,EAAA,MAAA;;kDACbS,GAACs8B,CAAAA,KAAAA,EAAAA;wCAAMC,KAAO,EAAA,CAAA;wCAAGh9B,SAAU,EAAA,MAAA;AAAO,wCAAA,QAAA,EAAA,aAAA;;kDAClCS,GAAC+B,CAAAA,KAAAA,EAAAA;wCAAIxC,SAAU,EAAA,sCAAA;AAEZq6B,wCAAAA,QAAAA,EAAAA,mBAAAA,EAAqByB,yBACtBr7B,GAACw8B,CAAAA,QAAAA,EAAAA;4CACCC,aAAe,EAAA;AAACC,gDAAAA,SAAAA;AAAU,6CAAA;4CAC1BC,UAAY,EAAA;;AAEV5vB,gDAAAA,CAAAA,CAAAA,CAAE6C,KAAS,EAAA;AACT,oDAAA,MAAM,EAAEgtB,IAAI,EAAE,GAAGtQ,MAAM,GAAG1c,KAAAA,CAAAA;AAC1B,oDAAA,qBACE5P,GAAC+M,CAAAA,GAAAA,EAAAA;wDACCxN,SAAU,EAAA,oCAAA;AACT,wDAAA,GAAG+sB,IAAI;;AAGd,iDAAA;AACAuQ,gDAAAA,EAAAA,CAAAA,CAAGjtB,KAAS,EAAA;AACV,oDAAA,MAAM,EAAEgtB,IAAI,EAAE,GAAGtQ,MAAM,GAAG1c,KAAAA,CAAAA;AAC1B,oDAAA,qBACE5P,GAAC68B,CAAAA,IAAAA,EAAAA;wDACCt9B,SAAU,EAAA,4BAAA;AACT,wDAAA,GAAG+sB,IAAI;;AAGd,iDAAA;AACA7N,gDAAAA,EAAAA,CAAAA,CAAG7O,KAAS,EAAA;AACV,oDAAA,MAAM,EAAEgtB,IAAI,EAAE,GAAGtQ,MAAM,GAAG1c,KAAAA,CAAAA;AAC1B,oDAAA,qBACE5P,GAACye,CAAAA,IAAAA,EAAAA;wDACClf,SAAU,EAAA,4BAAA;AACT,wDAAA,GAAG+sB,IAAI;;AAGd,iDAAA;AACA5N,gDAAAA,EAAAA,CAAAA,CAAG9O,KAAS,EAAA;AACV,oDAAA,MAAM,EAAEgtB,IAAI,EAAE,GAAGtQ,MAAM,GAAG1c,KAAAA,CAAAA;AAC1B,oDAAA,qBAAO5P,GAAC0e,CAAAA,IAAAA,EAAAA;wDAAGnf,SAAU,EAAA,SAAA;AAAW,wDAAA,GAAG+sB,IAAI;;AACzC,iDAAA;AACF,6CAAA;sDAECsN,mBAAqByB,EAAAA,QAAAA;AACT,yCAAA,CAAA,GAAA,mDAAA;;kDAEjBr7B,GAAC88B,CAAAA,OAAAA,EAAAA;wCAAQC,EAAG,EAAA,IAAA;;kDACZ/8B,GAACs8B,CAAAA,KAAAA,EAAAA;wCAAMC,KAAO,EAAA,CAAA;wCAAGh9B,SAAU,EAAA,MAAA;AAAO,wCAAA,QAAA,EAAA,oBAAA;;AACjCq6B,oCAAAA,mBAAAA,EAAqBwB,aAAaxB,mBAAoBwB,CAAAA,SAAS,CAACj5B,MAAM,GAAG,kBAE1EnC,GAACye,CAAAA,IAAAA,EAAAA;wCAAGlf,SAAU,EAAA,sCAAA;kDACXq6B,mBAAqBwB,EAAAA,SAAAA,CAAUp5B,GAAI,CAAA,CAACgyB,QAA2CnxB,EAAAA,CAAAA,GAAAA;AAC9E,4CAAA,qBAAQ7C,GAAC0e,CAAAA,IAAAA,EAAAA;gDAAWnf,SAAU,EAAA,+DAAA;0DAAiEy0B,QAASgJ,CAAAA,QAAQ,CAACC,MAAM;AAAtGp6B,6CAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AACnB,yCAAA,CAAA;uDAGF7C,GAAC+B,CAAAA,KAAAA,EAAAA;wCAAIxC,SAAU,EAAA,sCAAA;AAAuC,wCAAA,QAAA,EAAA,kCAAA;;;;;;;;AAWhE,0BAAAS,GAAA,CAACmiB,KAAKO,KAAK,EAAA;gBAAC1e,KAAM,EAAA,SAAA;gBAAU+3B,EAAG,EAAA,IAAA;0BAC5BrC,gBAAiBv3B,CAAAA,MAAM,GAAG,CAAA,iBAC3B9B,IAAC68B,CAAAA,KAAAA,EAAAA;oBAAMC,gBAAgB,EAAA,IAAA;;sCACrBn9B,GAACo9B,CAAAA,OAAAA,EAAAA;AACC,4BAAA,QAAA,gBAAA/8B,IAACq7B,CAAAA,IAAAA,EAAAA;;kDACC17B,GAACq9B,CAAAA,IAAAA,EAAAA;wCAAG99B,SAAU,EAAA,MAAA;AAAO,wCAAA,QAAA,EAAA,MAAA;;kDACrBS,GAACq9B,CAAAA,IAAAA,EAAAA;AAAG,wCAAA,QAAA,EAAA,cAAA;;kDACJr9B,GAACq9B,CAAAA,IAAAA,EAAAA;wCAAG99B,SAAU,EAAA,MAAA;AAAO,wCAAA,QAAA,EAAA,eAAA;;;;;sCAGzBS,GAACs9B,CAAAA,OAAAA,EAAAA;AAAO5D,4BAAAA,QAAAA,EAAAA,gBAAAA;;;mCAGR15B,GAACs8B,CAAAA,KAAAA,EAAAA;oBAAMC,KAAO,EAAA,CAAA;oBAAGh9B,SAAU,EAAA,KAAA;AAAM,oBAAA,QAAA,EAAA,gCAAA;;;;;AAK3C;;ACtTA,MAAMg+B,UAAa,GAAA,CAAC,EAClBzI,MAAAA,GAAS,CAAC,EACVC,QAAAA,GAAW,EAAE,EACbX,QAAW,GAAA,oBAAoB,EAC/BE,UAAAA,GAAa,gBAAgB,EACP,GAAA;AACtB,IAAA,MAAM,CAACC,OAAAA,EAASC,UAAW,CAAA,GAAGlvB,SAA4B,EAAE,CAAA,CAAA;AAC5D,IAAA,MAAM,CAAC8hB,OAAAA,EAASqN,UAAW,CAAA,GAAGnvB,QAAS,CAAA,KAAA,CAAA,CAAA;AACvC,IAAA,MAAM,CAACk4B,KAAAA,EAAOC,QAAS,CAAA,GAAGn4B,QAAS,CAAA,CAAA,CAAA,CAAA;AAEnC,IAAA,MAAM,EACJoc,IAAI,EACJgT,eAAe,EACfrN,UAAU,EACVF,SAAS,EACTwN,SAAS,EACTvN,OAAAA,EAASwN,YAAY,EACtB,GAAGM,iBAAkB,CAAA;QACpBd,QAAUA,EAAAA,QAAAA;QACVE,UAAYA,EAAAA,UAAAA;QACZQ,MAAQA,EAAAA,MAAAA;QACRC,QAAUA,EAAAA,QAAAA;AACZ,KAAA,CAAA,CAAA;IAEAttB,SAAU,CAAA,IAAA;AACR,QAAA,IAAIia,QAAQiT,SAAW,EAAA;AACrBH,YAAAA,UAAAA,CAAW9S,KAAKA,IAAI,CAAA,CAAA;AACpB+b,YAAAA,QAAAA,CAAS/b,KAAKmF,IAAI,CAAA,CAAA;AACpB,SAAA;KACC,EAAA;AAACnF,QAAAA,IAAAA;AAAMiT,QAAAA,SAAAA;AAAU,KAAA,CAAA,CAAA;IAEpBltB,SAAU,CAAA,IAAA;AACR,QAAA,IAAImtB,YAAc,EAAA;YAChBH,UAAW,CAAA,IAAA,CAAA,CAAA;AACb,SAAA;KACC,EAAA;AAACG,QAAAA,YAAAA;AAAa,KAAA,CAAA,CAAA;IAEjB,OAAO;AACLL,QAAAA,OAAAA;AACAiJ,QAAAA,KAAAA;AACA9I,QAAAA,eAAAA;AACArN,QAAAA,UAAAA;AACAF,QAAAA,SAAAA;AACAwN,QAAAA,SAAAA;AACAvN,QAAAA,OAAAA;AACF,KAAA,CAAA;AACF,CAAA,CAAA;AAoBO,MAAMsW,kBAAkB,CAAC,EAC9BzW,UAAU,EACVwL,WAAW,EACXlB,mBAAmB,EACnB/c,eAAe,EACf4f,QAAAA,GAAW,oBAAoB,EAC/BC,UAAAA,GAAa,KAAK,EAClBC,UAAAA,GAAa,gBAAgB,EACJ,GAAA;IACR9f,eAAiBqQ,EAAAA,mBAAAA,EAAqBC,GAAO,IAAA,OAAA;IAC9D,MAAMiT,YAAAA,GAAevjB,iBAAiB4f,QAAYA,IAAAA,QAAAA,CAAAA;IAClD,MAAM4D,cAAAA,GAAiBxjB,iBAAiB8f,UAAcA,IAAAA,UAAAA,CAAAA;AACtD,IAAA,MAAM,EACJC,OAAO,EACPiJ,KAAK,EACL9I,eAAe,EACfrN,UAAU,EACVF,SAAS,EACTwN,SAAS,EACTvN,OAAO,EACR,GAAGmW,UAAW,CAAA;AACb,QAAA,GAAGtW,UAAU;QACbqN,UAAY0D,EAAAA,cAAAA;QACZ5D,QAAU2D,EAAAA,YAAAA;AACZ,KAAA,CAAA,CAAA;IAEA,OAAO;QACLrW,IAAM6S,EAAAA,OAAAA;QACN1N,IAAM2W,EAAAA,KAAAA;AACN9H,QAAAA,WAAAA,EAAa,EAAE;AACfuC,QAAAA,iBAAAA,EAAmB,EAAE;AACrBN,QAAAA,0BAAAA,EAA4B,EAAE;QAC9B7Q,iBAAmB,EAAA;AACjB4N,YAAAA,eAAAA;AACArN,YAAAA,UAAAA;AACAF,YAAAA,SAAAA;AACAwN,YAAAA,SAAAA;AACAvN,YAAAA,OAAAA;AACF,SAAA;AACF,KAAA,CAAA;AACF,CAAE;;ACpJF,MAAMuW,8BAA8B,CAClC/rB,MAAAA,GAAAA;AAEA,IAAA,IAAI,CAACA,MAAQ,EAAA;;AAEX,QAAA,OAAO,EAAE,CAAA;AACX,KAAA;AACA,IAAA,MAAMgsB,aAAgBhsB,GAAAA,MAAAA,CAAOG,QAAQ,EAAEC,UAAY4rB,EAAAA,aAAAA,CAAAA;AAEnD,IAAA,IAAI,CAACA,aAAAA,EAAeC,SAAW,EAAA,OAAO,EAAE,CAAA;IAExC,IAAI1jB,eAAAA,CAAgByjB,aAAcC,CAAAA,SAAS,CAAG,EAAA;AAC5C,QAAA,OAAOD,cAAcC,SAAS,CAAA;AAChC,KAAA;AAEA,IAAA,OAAO,EAAE,CAAA;AACX,CAAA,CAAA;AAEA,MAAMC,+BAA+B,CACnClsB,MAAAA,GAAAA;AAEA,IAAA,IAAI,CAACA,MAAQ,EAAA;;QAEX,OAAOzL,SAAAA,CAAAA;AACT,KAAA;AACA,IAAA,IAAIyL,MAAOG,CAAAA,QAAQ,EAAEC,UAAAA,EAAY4rB,eAAeG,aAAe,EAAA;AAC7D,QAAA,OAAOnsB,OAAOG,QAAQ,CAACC,UAAU,CAAC4rB,aAAa,CAC5CG,aAAa,CAAA;AAClB,KAAA;IACA,OAAO53B,SAAAA,CAAAA;AACT,CAAA,CAAA;AAEA,MAAM63B,oBAAuB,GAAA,CAAC,EAC5B5J,QAAAA,GAAW,iCAAiC,EAC5CC,UAAa,GAAA,KAAK,EAClBC,UAAAA,GAAa,gBAAgB,EAC7B9f,eAAe,EACO,GAAA;AACtB,IAAA,MAAM,CAAC+f,OAAAA,EAASC,UAAW,CAAA,GAAGlvB,SAA4B,EAAE,CAAA,CAAA;AAC5D,IAAA,MAAM,CAAC8hB,OAAAA,EAASqN,UAAW,CAAA,GAAGnvB,QAAS,CAAA,KAAA,CAAA,CAAA;AAEvC,IAAA,MAAMu4B,YAAYF,2BAA4BnpB,CAAAA,eAAAA,CAAAA,CAAAA;AAC9C,IAAA,MAAM,EACJkN,IAAI,EACJgT,eAAe,EACfrN,UAAU,EACVF,SAAS,EACTwN,SAAS,EACTvN,OAAAA,EAASwN,YAAY,EACtB,GAAGqJ,sBAAuB,CAAA;QACzB7J,QAAUA,EAAAA,QAAAA;QACVE,UAAYA,EAAAA,UAAAA;QACZQ,MAAQ,EAAA,CAAA;QACRC,QAAUV,EAAAA,UAAAA;QACVwJ,SAAWA,EAAAA,SAAAA;AACXK,QAAAA,WAAAA,EAAaJ,4BAA6BtpB,CAAAA,eAAAA,CAAAA;AAC5C,KAAA,CAAA,CAAA;AAEA,IAAA,MAAM0e,WAAc1qB,GAAAA,eAAAA,CAAgB,CAACC,KAAAA,GACnCusB,sBAAuBvsB,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA;IAGzBhB,SAAU,CAAA,IAAA;AACR,QAAA,IAAIia,QAAQiT,SAAW,EAAA;YACrB,MAAM/R,SAAAA,GAAYlB,KAAKA,IAAI,CAAA;YAC3B,IAAIlN,eAAAA,EAAiBzC,QAAUoS,EAAAA,aAAAA,CAAcrB,OAAS,EAAA;gBACpD0R,UACEvB,CAAAA,qBAAAA,CAAsBrQ,WAAWpO,eAAiB0e,EAAAA,WAAAA,CAAAA,CAAAA,CAAAA;AAEtD,aAAA,MAAOsB,UAAW5R,CAAAA,SAAAA,CAAAA,CAAAA;AACpB,SAAA,MAAO4R,WAAW,EAAE,CAAA,CAAA;KACnB,EAAA;AAACtB,QAAAA,WAAAA;AAAaxR,QAAAA,IAAAA;AAAMlN,QAAAA,eAAAA;AAAiBmgB,QAAAA,SAAAA;AAAWL,QAAAA,UAAAA;AAAW,KAAA,CAAA,CAAA;IAE9D7sB,SAAU,CAAA,IAAA;AACR,QAAA,IAAImtB,YAAc,EAAA;YAChBH,UAAW,CAAA,IAAA,CAAA,CAAA;AACb,SAAA;KACC,EAAA;AAACG,QAAAA,YAAAA;AAAa,KAAA,CAAA,CAAA;IAEjB,OAAO;AACLL,QAAAA,OAAAA;AACAG,QAAAA,eAAAA;AACArN,QAAAA,UAAAA;AACAF,QAAAA,SAAAA;AACAwN,QAAAA,SAAAA;AACAvN,QAAAA,OAAAA;AACF,KAAA,CAAA;AACF,CAAA,CAAA;AAEO,MAAM+W,8BAA8B,CAAC,EAC1ClX,UAAU,EACVwL,WAAW,EACXlB,mBAAmB,EACnB/c,eAAe,EACf4f,QAAW,GAAA,oBAAoB,EAC/BC,UAAa,GAAA,KAAK,EAClBC,UAAa,GAAA,gBAAgB,EACJ,GACzBuD,cAAe,CAAA;AACb5Q,QAAAA,UAAAA;AACAwL,QAAAA,WAAAA;AACAlB,QAAAA,mBAAAA;AACA/c,QAAAA,eAAAA;AACA4f,QAAAA,QAAAA;AACAC,QAAAA,UAAAA;AACAC,QAAAA,UAAAA;QACAwD,QAAUkG,EAAAA,oBAAAA;KACT,CAAA;;AC1HL;AACA;AAcA,MAAMI,uBAA4D,EAAC,CAAA;AAE5D,MAAMC,2BAA8B,GAAA,CACzChyB,IACA2F,EAAAA,UAAAA,GAAAA;IAEAosB,oBAAoB,CAAC/xB,KAAK,GAAG2F,UAAAA,CAAAA;AAC/B,CAAE,CAAA;AAEK,MAAMssB,yBAAyB,CACpCjyB,IAAAA,GAAAA;AAEA,IAAA,IAAIA,SAASlG,SAAW,EAAA;AACtB4N,QAAAA,OAAAA,CAAQ4c,KAAK,CAAC,0CAAA,CAAA,CAAA;QACd,OAAOxqB,SAAAA,CAAAA;AACT,KAAA;AAEA,IAAA,IAAI,EAAEkG,IAAQ+xB,IAAAA,oBAAmB,CAAI,EAAA;QACnCrqB,OAAQ4c,CAAAA,KAAK,CAAC,kDAAoDtkB,EAAAA,IAAAA,CAAAA,CAAAA;QAClE,OAAOlG,SAAAA,CAAAA;AACT,KAAA;IACA,OAAOi4B,oBAAoB,CAAC/xB,IAAK,CAAA,CAAA;AACnC,CAAE,CAAA;MAMWkyB,mCAAsC,GAAA,IAAA;AACjDF,IAAAA,2BAAAA,CAA4B,cAAgBX,EAAAA,eAAAA,CAAAA,CAAAA;AAC5CW,IAAAA,2BAAAA,CAA4B,aAAejG,EAAAA,iBAAAA,CAAAA,CAAAA;AAC3CiG,IAAAA,2BAAAA,CAA4B,gBAAkBhG,EAAAA,oBAAAA,CAAAA,CAAAA;AAC9CgG,IAAAA,2BAAAA,CACE,uBACAF,EAAAA,2BAAAA,CAAAA,CAAAA;AAEJ,EAAE;AAEFI,mCAAAA,EAAAA;;AC/BA,MAAMC,sBAAsB,CAAC,EAC3BhqB,eAAe,EACfiqB,aAAa,EACY,GAAA;IACzB,MAAM3G,QAAAA,GAAWjW,QACf,IACEyc,sBAAAA,CACE9pB,iBAAiBzC,QAAUC,EAAAA,UAAAA,EAAY0sB,sBACpCtG,iBACP,EAAA;AAAC5jB,QAAAA,eAAAA,EAAiBzC,UAAUC,UAAY0sB,EAAAA,iBAAAA;AAAkB,KAAA,CAAA,CAAA;AAE5D,IAAA,MAAM,CAACzX,UAAAA,EAAYD,aAAc,CAAA,GAAG1hB,QAA8B,CAAA;QAChEq5B,SAAW,EAAA,CAAA;QACX5J,QAAU,EAAA,EAAA;AACZ,KAAA,CAAA,CAAA;AAEA,IAAA,MAAM6J,eAAep3B,MAAuB,CAAA,IAAA,CAAA,CAAA;AAC5C,IAAA,MAAM,CAACq3B,aAAAA,EAAeC,gBAAiB,CAAA,GAAGx5B,SAAmB,EAAE,CAAA,CAAA;AAC/D,IAAA,MAAM,CAACisB,mBAAAA,EAAqBwN,sBAAuB,CAAA,GACjDz5B,QAA8B,CAAA;AAC5BupB,QAAAA,SAAAA,EAAWR,kBAAkBO,GAAG;AAChCE,QAAAA,OAAAA,EAAS,EAAC;AACZ,KAAA,CAAA,CAAA;AAEF,IAAA,MAAMkQ,cAAcnd,OAAQ,CAAA,IAAA;QAC1B,OAAO;YACL6Q,OAAS,EAAA;AACPuM,gBAAAA,QAAAA,EAAU5Q,kBAAkBO,GAAG;gBAC/B+D,QAAUkM,EAAAA,aAAAA;AACZ,aAAA;YACAtN,mBAAqBA,EAAAA,mBAAAA;AACvB,SAAA,CAAA;KACC,EAAA;AAACsN,QAAAA,aAAAA;AAAetN,QAAAA,mBAAAA;AAAoB,KAAA,CAAA,CAAA;;AAIvC,IAAA,MAAM,EACJ7P,IAAI,EACJmF,IAAI,EACJC,iBAAiB,EACjB6Q,0BAA0B,EAC1BjC,WAAW,EACXuC,iBAAiB,EAClB,GAAGH,QAAS,CAAA;QACX7Q,UAAY,EAAA;AACV6N,YAAAA,MAAAA,EAAQ7N,UAAW0X,CAAAA,SAAS,GAAG1X,UAAAA,CAAW8N,QAAQ;AAClDA,YAAAA,QAAAA,EAAU9N,WAAW8N,QAAQ;AAC/B,SAAA;QACAtC,WAAauM,EAAAA,WAAAA;AACbxqB,QAAAA,eAAAA;AACF,KAAA,CAAA,CAAA;AAEA,IAAA,MAAM,CAAC0S,OAAAA,EAASH,UAAW,CAAA,GAAGzhB,SAA2B,EAAE,CAAA,CAAA;IAC3D,MAAM,CAAC45B,oBAAoB,EAAEC,MAAAA,EAAQC,oBAAoB,EAAE,CAAC,GAC1Dxa,aAAc,CAAA,KAAA,CAAA,CAAA;IAEhB,IAAIkC,iBAAAA,CAAkBK,SAAS,EAAE;AAC/B,QAAA,qBACE9mB,IAAC0B,CAAAA,KAAAA,EAAAA;YAAIxC,SAAU,EAAA,2CAAA;;8BACbS,GAAC+vB,CAAAA,MAAAA,EAAAA;oBAAOhgB,OAAQ,EAAA,MAAA;;AAAU,gBAAA,GAAA;;;AAGhC,KAAA;IAEA,IAAI+W,iBAAAA,CAAkBM,OAAO,EAAE;AAC7B,QAAA,qBACEpnB,GAAC+B,CAAAA,KAAAA,EAAAA;YAAIxC,SAAU,EAAA,iDAAA;AACb,YAAA,QAAA,gBAAAS,GAACkP,CAAAA,IAAAA,EAAAA;gBAAKlE,IAAM,EAAA,IAAA;AAAM,gBAAA,QAAA,EAAA,8BAAA;;;AAGxB,KAAA;AAEA,IAAA,qBACEhL,GAAC+B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAU,EAAA,wDAAA;AACb,QAAA,QAAA,gBAAAS,GAAC4U,CAAAA,iBAAAA,EAAAA;YAAkBC,oBAAsBL,EAAAA,eAAAA;AACvC,YAAA,QAAA,gBAAAnU,IAAC0B,CAAAA,KAAAA,EAAAA;gBAAIxC,SAAU,EAAA,QAAA;;AACZiV,oBAAAA,eAAAA,CAAgBzC,QAAQ,EAAEstB,SAAAA,IAC3B7qB,iBAAiBzC,QAAUstB,EAAAA,SAAAA,CAAUvc,wBACnC9iB,GAACkP,CAAAA,IAAAA,EAAAA;wBAAKlE,IAAK,EAAA,IAAA;AAAMwJ,wBAAAA,QAAAA,EAAAA,eAAAA,EAAiBzC,UAAUstB,SAAU3/B,CAAAA,IAAAA;AACpD,qBAAA,CAAA,GAAA,IAAA;kCACJW,IAAC0B,CAAAA,KAAAA,EAAAA;wBAAIxC,SAAU,EAAA,mDAAA;;AACZk/B,4BAAAA,aAAAA;0CACDz+B,GAACoxB,CAAAA,qBAAAA,EAAAA;gCAAsBF,SAAW+G,EAAAA,iBAAAA;;0CAClCj4B,GAAC+B,CAAAA,KAAAA,EAAAA;gCAAIxC,SAAU,EAAA,qBAAA;AACb,gCAAA,QAAA,gBAAAS,GAACs4B,CAAAA,0BAAAA,EAAAA;oCACC5C,WAAaA,EAAAA,WAAAA;oCACbQ,WAAa,EAAA,IAAA;AACX4I,wCAAAA,gBAAAA,CAAiB,EAAE,CAAA,CAAA;AACrB,qCAAA;AACAvG,oCAAAA,aAAAA,EAAe,CAAC9b,CAAAA,GAAMqiB,gBAAiBriB,CAAAA,CAAAA,CAAEjZ,KAAK,CAAC,GAAA,CAAA,CAAA;AAC/Cg1B,oCAAAA,WAAAA,EACEhkB,eAAiBzC,EAAAA,QAAAA,EAAUsjB,MAAQC,EAAAA,SAAAA,EAAWkD,WAC9C,IAAA,WAAA;oCAEFhtB,KACEgJ,EAAAA,eAAAA,EAAiBzC,QAAUsjB,EAAAA,MAAAA,EAAQC,SAAWgK,EAAAA,aAAAA;;;;;oBAKrD9qB,eAAiBzC,EAAAA,QAAAA,EAAUwtB,0BAC1Bv/B,GAAC+B,CAAAA,KAAAA,EAAAA;wBAAIxC,SAAU,EAAA,MAAA;AACb,wBAAA,QAAA,gBAAAS,GAAC+B,CAAAA,KAAAA,EAAAA;4BAAIxC,SAAU,EAAA,wCAAA;AACb,4BAAA,QAAA,gBAAAS,GAACg5B,CAAAA,QAAAA,EAAAA,EAAAA,CAAAA;;;kCAIP34B,IAAC0B,CAAAA,KAAAA,EAAAA;wBAAIxC,SAAU,EAAA,eAAA;;4BACZiV,eAAiBzC,EAAAA,QAAAA,EAAUyc,gBAAkB1L,EAAAA,OAAAA,iBAC5C9iB,GAAC6P,CAAAA,MAAAA,EAAAA;gCAAO9D,OAASqzB,EAAAA,oBAAAA;gCAAsBxzB,KAAM,EAAA,QAAA;AAAS,gCAAA,QAAA,EAAA,SAAA;AAItD,6BAAA,CAAA,GAAA,KAAA;4BAED4I,eAAiBzC,EAAAA,QAAAA,EAAUytB,mBAAqB1c,EAAAA,OAAAA,iBAC/C9iB,GAACgwB,CAAAA,SAAAA,EAAAA;gCACCpe,MAAQ4C,EAAAA,eAAAA,CAAgBzC,QAAQ,CAACytB,mBAAmB;AAEpD,6BAAA,CAAA,GAAA,IAAA;;;kCAENn/B,IAAC0B,CAAAA,KAAAA,EAAAA;wBAAIxC,SAAU,EAAA,oBAAA;;4BACZiV,eAAiBzC,EAAAA,QAAAA,EAAUyc,gBAAkB1L,EAAAA,OAAAA,iBAC5C9iB,GAACovB,CAAAA,mBAAAA,EAAAA;gCACCZ,gBAAkBmJ,EAAAA,0BAAAA;gCAClBlT,MAAQya,EAAAA,kBAAAA;gCACRzQ,wBAA0BsQ,EAAAA,sBAAAA;AAG5B,6BAAA,CAAA,GAAA,KAAA;0CAEF/+B,GAAC+B,CAAAA,KAAAA,EAAAA;gCACCxC,SAAU,EAAA,4EAAA;gCACVutB,GAAK8R,EAAAA,YAAAA;AAEL,gCAAA,QAAA,gBAAA5+B,GAAC4mB,CAAAA,cAAAA,EAAAA;oCACClF,IAAMA,EAAAA,IAAAA;oCACNmF,IAAMA,EAAAA,IAAAA;oCACNC,iBAAmBA,EAAAA,iBAAAA;oCACnBE,aAAeA,EAAAA,aAAAA;oCACfD,UAAYA,EAAAA,UAAAA;oCACZE,UAAYA,EAAAA,UAAAA;oCACZC,OAASA,EAAAA,OAAAA;;;;;;;;;AAQzB;;ACpKA,MAAMuY,QAAW,GAAA,IAAA;AACf,IAAA,MAAM,EAAEtY,SAAS,EAAE,GAAGuY,eAAgB,CAAA,EAAA,CAAA,CAAA;AAEtC,IAAA,IAAIvY,SAAW,EAAA;AACb,QAAA,qBAAOnnB,GAAC+B,CAAAA,KAAAA,EAAAA;AAAI,YAAA,QAAA,EAAA,YAAA;;AACd,KAAA;AACA,IAAA,qBACE/B,GAAC+B,CAAAA,KAAAA,EAAAA;AACC,QAAA,QAAA,gBAAA/B,GAAC0b,CAAAA,KAAAA,EAAAA;AAAM,YAAA,QAAA,EAAA,aAAA;;;AAGb;;ACfA,MAAMikB,IAAO,GAAA,IAAA;AACX,IAAA,MAAM,EAAEje,IAAMke,EAAAA,QAAQ,EAAEvY,UAAU,EAAE,GAAGwY,WAAAA,EAAAA,CAAAA;AAEvC,IAAA,qBACEx/B,IAAC0B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAU,EAAA,eAAA;;0BACbS,GAACoqB,CAAAA,cAAAA,EAAAA;gBAAeC,OAAShD,EAAAA,UAAAA;;0BACzBrnB,GAAC+B,CAAAA,KAAAA,EAAAA;gBAAIxC,SAAU,EAAA,2BAAA;AACb,gBAAA,QAAA,gBAAAS,GAAC8/B,CAAAA,IAAAA,EAAAA;oBAAKC,MAAO,EAAA,IAAA;oBAAKjjB,MAAO,EAAA,IAAA;oBAAKkjB,UAAU,EAAA,IAAA;AACtC,oBAAA,QAAA,gBAAA3/B,IAACyjB,CAAAA,KAAAA,EAAAA;wBAAMmc,OAAQ,EAAA,eAAA;wBAAgBC,EAAG,EAAA,IAAA;wBAAKC,EAAG,EAAA,IAAA;;0CACxCngC,GAACogC,CAAAA,MAAAA,EAAAA;gCAAOtjB,MAAO,EAAA,IAAA;gCAAKlR,KAAM,EAAA,UAAA;;0CAC1B5L,GAACkP,CAAAA,IAAAA,EAAAA;gCAAK8P,EAAI,EAAA,GAAA;0CAAM4gB,QAAUzzB,EAAAA,QAAAA;;;;;;;;AAMtC;;ACbA,MAAMk0B,+BAAiBn6B,aAAoC,CAAA;AACzDo6B,IAAAA,aAAAA,EAAe,EAAC;AAClB,CAAA,CAAA,CAAA;AAEA,MAAMC,iBAAoB,GAAA,IAAA;IACxB,MAAMv7B,OAAAA,GAAU7B,cAAMsD,CAAAA,UAAU,CAAC45B,cAAAA,CAAAA,CAAAA;AACjC,IAAA,IAAIr7B,YAAYmB,SAAW,EAAA;AACzB,QAAA,MAAMO,KACJ,CAAA,+DAAA,CAAA,CAAA;AAEJ,KAAA;IACA,OAAO1B,OAAAA,CAAAA;AACT,CAAA,CAAA;AAEA,MAAMw7B,kBAAkB,CAAC,EACvBx4B,QAAQ,EACRs4B,aAAa,EAId,GAAA;IACC,qBACEtgC,GAAA,CAACqgC,eAAe/1B,QAAQ,EAAA;QAACtG,KAAO,EAAA;AAAEs8B,YAAAA,aAAAA;AAAc,SAAA;AAC7Ct4B,QAAAA,QAAAA,EAAAA,QAAAA;;AAGP;;ACCA,MAAMy4B,iCAAmBv6B,aAAsC,CAAA;AAC7Dw6B,IAAAA,YAAAA,EAAc,EAAC;AACfC,IAAAA,WAAAA,EAAa,EAAC;IACdC,kBAAoB,EAAA;AAAEC,QAAAA,QAAAA,EAAU,EAAE;AAAEC,QAAAA,OAAAA,EAAS,EAAE;AAAC,KAAA;AAClD,CAAA,CAAA,CAAA;AAEA;AACO,MAAMC,mBAAsB,GAAA,IAAA;IACjC,MAAM/7B,OAAAA,GAAU7B,cAAMsD,CAAAA,UAAU,CAACg6B,gBAAAA,CAAAA,CAAAA;AACjC,IAAA,IAAIz7B,YAAYmB,SAAW,EAAA;AACzB,QAAA,MAAMO,KACJ,CAAA,mEAAA,CAAA,CAAA;AAEJ,KAAA;IACA,OAAO1B,OAAAA,CAAAA;AACT,CAAE,CAAA;AAEF;;;;;AAKC,IACD,MAAMg8B,iBAAAA,GAAoB,CAAC,EAAEh5B,QAAQ,EAAqB,GAAA;AACxD,IAAA,MAAO24B,WAAcn4B,GAAAA,eAAAA,CAAgB,CAACC,KAAAA,GAAqByD,iBAAkBzD,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA;IAC7E,MAAM,EAAEiZ,MAAMgf,YAAe,GAAA,EAAE,EAAEvZ,SAAAA,EAAW8Z,cAAc,EAAE,GAC1DC,wBAAAA,EAAAA,CAAAA;AAEF,IAAA,MAAM,CAACC,gBAAAA,EAAkBC,mBAAoB,CAAA,GAAG97B,SAE9C,EAAC,CAAA,CAAA;AACH,IAAA,MAAM,CAAC+7B,iBAAAA,EAAmBC,oBAAqB,CAAA,GAAGh8B,SAAuB,EAAC,CAAA,CAAA;IAE1EE,oBAAqB,CAAA,IAAA;QACnB47B,mBAAoBT,CAAAA,WAAAA,CAAAA,CAAAA;KACnB,EAAA;AAACA,QAAAA,WAAAA;AAAY,KAAA,CAAA,CAAA;IAEhBn7B,oBAAqB,CAAA,IAAA;QACnB87B,oBAAqBZ,CAAAA,YAAAA,CAAAA,CAAAA;KACpB,EAAA;AAACA,QAAAA,YAAAA;AAAa,KAAA,CAAA,CAAA;AAEjB,IAAA,MAAME,qBAAqBv2B,kBAAmB,CAAA,IAAA;AAC5C,QAAA,IAAI42B,gBAAgB,OAAO;AAAEJ,YAAAA,QAAAA,EAAU,EAAE;AAAEC,YAAAA,OAAAA,EAAS,EAAE;AAAC,SAAA,CAAA;QACvD,IAAI,CAACO,mBAAmB,OAAO;AAAER,YAAAA,QAAAA,EAAU,EAAE;AAAEC,YAAAA,OAAAA,EAAS,EAAE;AAAC,SAAA,CAAA;QAC3D,MAAMtoB,OAAAA,GAAUvX,OAAO0sB,MAAM,CAAqB0T,mBAAmBn0B,MAAM,CACzE,CAACC,GAAKkT,EAAAA,QAAAA,GAAAA;AACJ,YAAA,OAAOA,QAASnT,CAAAA,MAAM,CAAC,CAACC,GAAoC0W,EAAAA,KAAAA,GAAAA;AAC1D1W,gBAAAA,GAAAA,CAAI0zB,QAAQ,CAACU,GAAG,CAAC1d,MAAMlK,OAAO,CAAA,CAAA;AAC9BxM,gBAAAA,GAAAA,CAAI2zB,OAAO,CAACS,GAAG,CAAC1d,MAAMnK,MAAM,CAAA,CAAA;gBAC5B,OAAOvM,GAAAA,CAAAA;aACNA,EAAAA,GAAAA,CAAAA,CAAAA;SAEL,EAAA;AACE0zB,YAAAA,QAAAA,EAAU,IAAIW,GAAAA,EAAAA;AACdV,YAAAA,OAAAA,EAAS,IAAIU,GAAAA,EAAAA;AACf,SAAA,CAAA,CAAA;QAEF,OAAO;AACLX,YAAAA,QAAAA,EAAU5rB,KAAMwsB,CAAAA,IAAI,CAACjpB,OAAAA,CAAQqoB,QAAQ,CAAA;AACrCC,YAAAA,OAAAA,EAAS7rB,KAAMwsB,CAAAA,IAAI,CAACjpB,OAAAA,CAAQsoB,OAAO,CAAA;AACrC,SAAA,CAAA;KACC,EAAA;AAACO,QAAAA,iBAAAA;AAAmBJ,QAAAA,cAAAA;AAAe,KAAA,CAAA,CAAA;IAEtC,qBACEjhC,GAAA,CAACygC,iBAAiBn2B,QAAQ,EAAA;QACxBtG,KAAO,EAAA;YACL28B,WAAaQ,EAAAA,gBAAAA;YACbT,YAAcW,EAAAA,iBAAAA;AACdT,YAAAA,kBAAAA;AACF,SAAA;AAEC54B,QAAAA,QAAAA,EAAAA,QAAAA;;AAGP,CAAA;;AClGA;;;;;AAKC,UACK05B,gBAAmB,GAAA,CAAC,EACxBC,eAAe,EACfC,UAAU,EACY,GAAA;IACtB,MAAM,EAAEhB,kBAAkB,EAAE,GAAGG,mBAAAA,EAAAA,CAAAA;IAC/B,MAAM,EAAET,aAAa,EAAE,GAAGC,iBAAAA,EAAAA,CAAAA;AAE1B,IAAA,MAAMsB,aAAahgB,OAAQ,CAAA,IAAA;AACzB,QAAA,MAAMigB,aAAgBxB,GAAAA,aAAAA,EAAeyB,aAAeD,EAAAA,aAAAA,IAAiB,EAAC,CAAA;AACtE,QAAA,OAAOlB,mBAAmBC,QAAQ,CAAC7+B,GAAG,CAAC,CAACyB,uBACtCzD,GAACiuB,CAAAA,QAAAA,EAAAA;gBACC1uB,SAAU,EAAA,KAAA;AACVqM,gBAAAA,KAAAA,EACEnI,UAAUq+B,aAAgBA,GAAAA,aAAa,CAACr+B,MAAO,CAAA,CAACmI,KAAK,GAAG,SAAA;gBAG1D5H,KAAOP,EAAAA,MAAAA;gBACP+H,KAAO/H,EAAAA,MAAAA;AAFFA,aAAAA,EAAAA,MAAAA,CAAAA,CAAAA,CAAAA;KAKR,EAAA;AACD68B,QAAAA,aAAAA,EAAeyB,aAAeD,EAAAA,aAAAA;AAC9BlB,QAAAA,kBAAAA,CAAmBC,QAAQ;AAC5B,KAAA,CAAA,CAAA;AAED,IAAA,qBACE7gC,GAAC+B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAU,EAAA,0BAAA;AACb,QAAA,QAAA,gBAAAc,IAAC0B,CAAAA,KAAAA,EAAAA;YAAIxC,SAAU,EAAA,sDAAA;;8BACbS,GAAC+B,CAAAA,KAAAA,EAAAA;oBAAIxC,SAAU,EAAA,oEAAA;AACb,oBAAA,QAAA,gBAAAS,GAACkP,CAAAA,IAAAA,EAAAA;wBAAKlE,IAAK,EAAA,IAAA;wBAAKgU,EAAI,EAAA,GAAA;AAAK,wBAAA,QAAA,EAAA,mBAAA;;;AAI3B,8BAAAhf,GAAA,CAACiuB,SAASnK,KAAK,EAAA;oBACb9f,KAAO29B,EAAAA,eAAAA;oBACPxT,QAAUyT,EAAAA,UAAAA;oBACVjhC,UAAY,EAAA;wBACV6K,KAAO,EAAA,0DAAA;AACT,qBAAA;AAEA,oBAAA,QAAA,gBAAAxL,GAAC4jB,CAAAA,KAAAA,EAAAA;wBAAMsc,EAAG,EAAA,IAAA;AAAM2B,wBAAAA,QAAAA,EAAAA,UAAAA;;;;;;AAK1B;;AChDA,MAAMG,6BAA6B,CAAC,EAClCC,QAAQ,EACRC,mBAAmB,EACI,GAAA;AAEvB,IAAA,MAAM,CAACl+B,KAAAA,EAAOm+B,QAAS,CAAA,GAAG78B,QAAwB,CAAA,IAAA,CAAA,CAAA;AAClD,IAAA,qBACEjF,IAAC0B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAU,EAAA,0EAAA;;0BACbS,GAACoiC,CAAAA,MAAAA,EAAAA;AACC1gB,gBAAAA,IAAAA,EAAMugB,SAASI,IAAI,CAACrgC,GAAG,CAAC,CAACoL,QAAmB;AAC1CpJ,wBAAAA,KAAAA,EAAOoJ,KAAKk1B,GAAG;AACf92B,wBAAAA,KAAAA,EAAO4B,KAAKf,IAAI;qBAClB,CAAA,CAAA;gBACA1L,UAAY,EAAA;oBACViB,IAAM,EAAA,QAAA;AAER,iBAAA;gBACAusB,QAAUgU,EAAAA,QAAAA;gBACVn+B,KAAOA,EAAAA,KAAAA;;0BAET3D,IAACwP,CAAAA,MAAAA,EAAAA;gBACC0yB,SAAS,EAAA,IAAA;gBAET32B,KAAM,EAAA,UAAA;AACNC,gBAAAA,QAAAA,EAAU,CAAC7H,KAAAA;gBACX+H,OAAS,EAAA,IAAM/H,SAASk+B,mBAAoBl+B,CAAAA,KAAAA,CAAAA;;AAE3C,oBAAA,GAAA;AACAi+B,oBAAAA,QAAAA,CAAS51B,IAAI;;AANT41B,aAAAA,EAAAA,QAAAA,CAAS51B,IAAI,CAAA;;AAfyE,KAAA,EAAA,CAAC,EAAE41B,QAAAA,CAAS51B,IAAI,CAAC,WAAW,CAAC,CAAA,CAAA;AAyBhI,CAAA,CAAA;AAEA,MAAMm2B,0BAA0B,CAAC,EAC/BP,QAAQ,EACRC,mBAAmB,EACI,GAAA;AACvB,IAAA,qBACE7hC,IAACwP,CAAAA,MAAAA,EAAAA;QACC0yB,SAAS,EAAA,IAAA;QAET32B,KAAM,EAAA,UAAA;AACNG,QAAAA,OAAAA,EAAS,IAAMm2B,mBAAoBD,CAAAA,QAAAA,CAASI,IAAI,CAAC,CAAA,CAAE,CAACC,GAAG,CAAA;;AAEtD,YAAA,GAAA;AACAL,YAAAA,QAAAA,CAAS51B,IAAI;AAAE,YAAA,GAAA;;AALX41B,KAAAA,EAAAA,QAAAA,CAAS51B,IAAI,CAAA,CAAA;AAQxB,CAAA,CAAA;AAEA,MAAMo2B,mBAAsB,GAAA,CAAC,EAAEP,mBAAmB,EAAsB,GAAA;AACtE,IAAA,MAAM,EAAExgB,IAAI,EAAEiT,SAAS,EAAE,GAAG+N,yBAAAA,EAAAA,CAAAA;AAC5B,IAAA,IAAI,CAAC/N,SAAW,EAAA;AACd,QAAA,qBAAO30B,GAACoqB,CAAAA,cAAAA,EAAAA;AAAeC,YAAAA,OAAAA,EAAS,CAACsK,SAAAA;;AACnC,KAAA;AACA,IAAA,qBACE30B,GAACsT,CAAAA,GAAAA,EAAAA;QAAI/T,SAAU,EAAA,2CAAA;AACb,QAAA,QAAA,gBAAAc,IAACujB,CAAAA,KAAAA,EAAAA;YAAMkN,KAAM,EAAA,QAAA;YAASvxB,SAAU,EAAA,OAAA;;AAC7BmiB,gBAAAA,IAAAA,CAAKihB,gBAAgB,CAACN,IAAI,CAAClgC,MAAM,GAAG,kBACnCnC,GAACgiC,CAAAA,0BAAAA,EAAAA;AACCC,oBAAAA,QAAAA,EAAUvgB,KAAKihB,gBAAgB;oBAC/BT,mBAAqBA,EAAAA,mBAAAA;mCAGvBliC,GAACwiC,CAAAA,uBAAAA,EAAAA;AACCP,oBAAAA,QAAAA,EAAUvgB,KAAKihB,gBAAgB;oBAC/BT,mBAAqBA,EAAAA,mBAAAA;;gBAGxBxgB,IAAMkhB,EAAAA,SAAAA,CACJn/B,OAAO,CAACC,CAAAA,GAAWA,EAAE2I,IAAI,KAAKqV,KAAKihB,gBAAgB,CAACt2B,IAAI,CACxDrK,CAAAA,GAAAA,CAAI,CAAC0B,CACJA,GAAAA,CAAAA,CAAE2+B,IAAI,CAAClgC,MAAM,GAAG,CAAA,iBACdnC,GAACgiC,CAAAA,0BAAAA,EAAAA;wBAECC,QAAUv+B,EAAAA,CAAAA;wBACVw+B,mBAAqBA,EAAAA,mBAAAA;uBAFhBx+B,CAAE2I,CAAAA,IAAI,kBAKbrM,GAACwiC,CAAAA,uBAAAA,EAAAA;wBAECP,QAAUv+B,EAAAA,CAAAA;wBACVw+B,mBAAqBA,EAAAA,mBAAAA;AAFhBx+B,qBAAAA,EAAAA,CAAAA,CAAE2I,IAAI,CAAA,CAAA;;;;AAS3B;;ACnGA,MAAMw2B,iBAAoB,GAAA,CAAC,EAAEP,GAAG,EAA0B,GAAA;AAExD,IAAA,qBACEtiC,GAAC+B,CAAAA,KAAAA,EAAAA;QACC6K,YAAY,EAAA,kBAAA;QACZoQ,KAAO,EAAA;AAAE8lB,YAAAA,eAAAA,EAAiB,CAAC,IAAI,EAAER,GAAAA,CAAI,CAAC,CAAC;AAAC,SAAA;QACxC/iC,SAAU,EAAA,4DAAA;;AAGhB,CAAA;;ACMA,MAAMwjC,gBAAmB,GAAA,CAAC,EAAEC,WAAW,EAA0B,GAAA;AAE/D,IAAA,MAAMC,iBAAiBx8B,UAAWR,CAAAA,cAAAA,CAAAA,CAAAA;AAClC,IAAA,MAAM,CAACi9B,WAAAA,EAAaC,cAAe,CAAA,GAAG79B,QAAwB,CAAA,IAAA,CAAA,CAAA;AAC9D,IAAA,MAAM,CAAC89B,IAAAA,EAAMC,OAAQ,CAAA,GAAG/9B,QAAsB,CAAA,IAAA,CAAA,CAAA;IAE9CmC,SAAU,CAAA,IAAA;AACR,QAAA,IAAI27B,IAAM,EAAA;AACR,YAAA,MAAME,SAAS,IAAIC,UAAAA,EAAAA,CAAAA;YACnBD,MAAOE,CAAAA,MAAM,GAAG,CAACvH,KAAAA,GAAAA;gBACf,IAAIA,KAAAA,CAAM77B,MAAM,EAAE6iB,MAAAA,EAAQkgB,eAAelH,KAAM77B,CAAAA,MAAM,CAAC6iB,MAAM,CAAA,CAAA;AAC9D,aAAA,CAAA;AACAqgB,YAAAA,MAAAA,CAAOG,UAAU,CAACL,IAAAA,CAAAA,CAAAA;AACpB,SAAA;KACC,EAAA;AAACA,QAAAA,IAAAA;AAAK,KAAA,CAAA,CAAA;IAET,MAAMM,sBAAAA,GAAyBt6B,YAAa,OAAO85B,WAAAA,GAAAA;AACjD,QAAA,MAAM/5B,aAAgB85B,GAAAA,cAAAA,EAAgB95B,aAAkB,KAAA,IAAM,IAAG,CAAA,CAAA;QACjE,IAAI;AACF,YAAA,MAAMzE,IAAO,GAAA,MAAMi2B,IAAKC,CAAAA,KAAK,CAACsI,WAAAA,CAAAA,CAAAA;AAC9B,YAAA,MAAMr9B,MAAM,4BAA8B,EAAA;gBACxC6T,MAAQ,EAAA,MAAA;gBACRiqB,OAAS,EAAA;oBACP,cAAgB,EAAA,kBAAA;AAClB,iBAAA;gBACAC,IAAMjJ,EAAAA,IAAAA,CAAKK,SAAS,CAACt2B,IAAAA,CAAAA;AACvB,aAAA,CAAA,CAAA;AACAyE,YAAAA,aAAAA,EAAAA,CAAAA;AACA65B,YAAAA,WAAAA,EAAAA,CAAAA;AAEF,SAAA,CAAE,OAAOx5B,CAAG,EAAA;AACVq6B,YAAAA,aAAAA,CAAcC,IAAI,CAAC;gBACjBtjC,KAAO,EAAA,cAAA;gBACPkJ,OAAS,EAAA,mBAAA;AACX,aAAA,CAAA,CAAA;AACF,SAAA;KACC,EAAA;AAACs5B,QAAAA,WAAAA;QAAaC,cAAgB95B,EAAAA,aAAAA;AAAc,KAAA,CAAA,CAAA;AAE/C,IAAA,qBACE9I,IAACiT,CAAAA,GAAAA,EAAAA;QAAI/T,SAAU,EAAA,gDAAA;;0BACbS,GAAC88B,CAAAA,OAAAA,EAAAA;gBACClxB,KAAM,EAAA,OAAA;gBACNZ,IAAK,EAAA,IAAA;gBACLzL,SAAU,EAAA,OAAA;AACViM,gBAAAA,KAAAA,gBACIxL,GAACkP,CAAAA,IAAAA,EAAAA;oBAAKlE,IAAK,EAAA,IAAA;AAAK,oBAAA,QAAA,EAAA,4BAAA;;gBAEpB+4B,aAAc,EAAA,QAAA;;0BAEhB1jC,IAACyjB,CAAAA,KAAAA,EAAAA;;kCACC9jB,GAACgkC,CAAAA,QAAAA,EAAAA;AACChgC,wBAAAA,KAAAA,EAAOk/B,WAAe,IAAA,EAAA;AACtB/U,wBAAAA,QAAAA,EAAU,CAAC8N,KAAAA,GAAAA;4BACTkH,cAAelH,CAAAA,KAAAA,CAAM77B,MAAM,CAAC4D,KAAK,CAAA,CAAA;AACnC,yBAAA;wBACArD,UAAY,EAAA;4BACVw2B,KAAO,EAAA,6CAAA;AACT,yBAAA;wBACAnsB,IAAK,EAAA,IAAA;AACL8tB,wBAAAA,YAAAA,EAEIoK,WACAA,IAAAA,WAAAA,EAAa/gC,MAAS,GAAA,CAAA,kBACpBnC,GAAC+4B,CAAAA,OAAAA,EAAAA;4BACChtB,OAAS,EAAA,IAAA;gCACPo3B,cAAe,CAAA,EAAA,CAAA,CAAA;AACjB,6BAAA;4BACA5jC,SAAU,EAAA,gBAAA;4BACVs5B,aAAY,EAAA,2BAAA;;;kCAMtB74B,GAACikC,CAAAA,UAAAA,EAAAA;wBAAW9V,QAAUkV,EAAAA,OAAAA;wBAASa,MAAO,EAAA,kBAAA;AACnC,wBAAA,QAAA,EAAA,CAACt0B,sBAAU5P,GAAC6P,CAAAA,MAAAA,EAAAA;AAAQ,gCAAA,GAAGD,KAAK;AAAE,gCAAA,QAAA,EAAA,KAAA;;;kCAEjC5P,GAAC6P,CAAAA,MAAAA,EAAAA;wBACCjE,KAAM,EAAA,MAAA;wBACNG,OAAS,EAAA,UAAA;AACP,4BAAA,MAAM23B,uBAAuBR,WAAe,IAAA,EAAA,CAAA,CAAA;AAC9C,yBAAA;wBACAr3B,QAAUq3B,EAAAA,WAAAA,KAAgB,QAAQA,WAAgB,KAAA,EAAA;AACnD,wBAAA,QAAA,EAAA,WAAA;;;;;;AAMT,CAAA;;AC5GA;AACA,SAASiB,WAAWlqB,GAAW,EAAA;AAC7B,IAAA,IAAImqB,IAAO,GAAA,CAAA,CAAA;AACX,IAAA,IAAK,IAAIvhC,CAAI,GAAA,CAAA,EAAGA,IAAIoX,GAAI9X,CAAAA,MAAM,EAAEU,CAAK,EAAA,CAAA;QACnCuhC,IAAOnqB,GAAAA,GAAAA,CAAIoqB,UAAU,CAACxhC,CAAM,CAAA,IAAA,CAACuhC,IAAAA,IAAQ,CAAA,IAAKA,IAAG,CAAA,CAAA;AAC/C,KAAA;IACA,OAAOA,IAAAA,CAAAA;AACT,CAAA;AAEA;AACO,SAASE,SAASrqB,GAAW,EAAA;IAClC,IAAIA,GAAAA,KAAQ,IAAQA,IAAAA,GAAAA,KAAQ,EAAI,EAAA;QAC9B,OAAO,CAAA,CAAA;AACT,KAAA;AACA,IAAA,OAAOkqB,UAAWlqB,CAAAA,GAAAA,CAAAA,CAAAA;AACpB;;;ACTYsqB,CAAAA,SAAAA,WAAAA,EAAAA;;;;;GAAAA,WAAAA,KAAAA,WAAAA,GAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AAaZ,MAAMC,WAAAA,GAAc,CAAC,EACnB9kC,IAAI,EACJH,SAAY,GAAA,6FAA6F,EACzGkQ,IAAAA,GAAAA,MAAuB,EACN,GAAA;IACjB,OAAQA,IAAAA;AACN,QAAA,KAAA,MAAA;AAAuB,YAAA;gBACrB,MAAMg1B,UAAAA,GAAaxvB,MAAMC,OAAO,CAACxV,QAAQA,IAAK8Z,CAAAA,IAAI,CAAC,EAAM9Z,CAAAA,GAAAA,IAAAA,CAAAA;AACzD,gBAAA,qBACEM,GAAC+M,CAAAA,GAAAA,EAAAA;oBACCxN,SAAWA,EAAAA,SAAAA;oBACXmlC,uBAAyB,EAAA;wBAAEC,MAAQF,EAAAA,UAAAA;AAAW,qBAAA;;AAGpD,aAAA;AACE,QAAA,KAAA,WAAA;AAA4B,YAAA;AAC1B,gBAAA,MAAMG,SAAY,GAAA,CAAC3vB,KAAMC,CAAAA,OAAO,CAACxV,IAAQ,CAAA,GAAA;AAACA,oBAAAA,IAAAA;iBAAK,GAAGA,IAAAA,CAAAA;AAClD,gBAAA,qBACEM,GAAC+B,CAAAA,KAAAA,EAAAA;oBAAIxC,SAAWA,EAAAA,SAAAA;AACbqlC,oBAAAA,QAAAA,EAAAA,SAAAA,CAAU5iC,GAAG,CAAC,CAACoL,IAAAA,iBACdpN,GAAC+M,CAAAA,GAAAA,EAAAA;4BAAExN,SAAU,EAAA,MAAA;AAA6B6N,4BAAAA,QAAAA,EAAAA,IAAAA;2BAAjBk3B,QAASl3B,CAAAA,IAAAA,CAAAA,CAAAA,CAAAA;;AAI1C,aAAA;AACA,QAAA,KAAA,UAAA;AAA2B,YAAA;gBACzB,MAAMq3B,UAAAA,GAAaxvB,MAAMC,OAAO,CAACxV,QAAQA,IAAK8Z,CAAAA,IAAI,CAAC,EAAM9Z,CAAAA,GAAAA,IAAAA,CAAAA;AACzD,gBAAA,qBACEM,GAAC+B,CAAAA,KAAAA,EAAAA;AACD,oBAAA,QAAA,gBAAA/B,GAACw8B,CAAAA,QAAAA,EAAAA;wBACCC,aAAe,EAAA;AAACC,4BAAAA,SAAAA;AAAU,yBAAA;wBAC1BC,UAAY,EAAA;;AAEV5vB,4BAAAA,CAAAA,CAAAA,CAAE6C,KAAS,EAAA;AACT,gCAAA,MAAM,EAAEgtB,IAAI,EAAE,GAAGtQ,MAAM,GAAG1c,KAAAA,CAAAA;AAC1B,gCAAA,qBACE5P,GAAC+M,CAAAA,GAAAA,EAAAA;oCACCxN,SAAU,EAAA,oCAAA;AACT,oCAAA,GAAG+sB,IAAI;;AAGd,6BAAA;AACAuQ,4BAAAA,EAAAA,CAAAA,CAAGjtB,KAAS,EAAA;AACV,gCAAA,MAAM,EAAEgtB,IAAI,EAAE,GAAGtQ,MAAM,GAAG1c,KAAAA,CAAAA;AAC1B,gCAAA,qBACE5P,GAAC68B,CAAAA,IAAAA,EAAAA;oCACCt9B,SAAU,EAAA,4BAAA;AACT,oCAAA,GAAG+sB,IAAI;;AAGd,6BAAA;AACA7N,4BAAAA,EAAAA,CAAAA,CAAG7O,KAAS,EAAA;AACV,gCAAA,MAAM,EAAEgtB,IAAI,EAAE,GAAGtQ,MAAM,GAAG1c,KAAAA,CAAAA;AAC1B,gCAAA,qBACE5P,GAACye,CAAAA,IAAAA,EAAAA;oCACClf,SAAU,EAAA,4BAAA;AACT,oCAAA,GAAG+sB,IAAI;;AAGd,6BAAA;AACA5N,4BAAAA,EAAAA,CAAAA,CAAG9O,KAAS,EAAA;AACV,gCAAA,MAAM,EAAEgtB,IAAI,EAAE,GAAGtQ,MAAM,GAAG1c,KAAAA,CAAAA;AAC1B,gCAAA,qBAAO5P,GAAC0e,CAAAA,IAAAA,EAAAA;oCAAGnf,SAAU,EAAA,SAAA;AAAW,oCAAA,GAAG+sB,IAAI;;AACzC,6BAAA;AACF,yBAAA;AAECmY,wBAAAA,QAAAA,EAAAA,UAAAA;;;AAIP,aAAA;AACF,QAAA,KAAA,MAAA,CAAA;AACA,QAAA;AACE,YAAA,qBACEzkC,GAAC+B,CAAAA,KAAAA,EAAAA;gBAAIxC,SAAWA,EAAAA,SAAAA;AACd,gBAAA,QAAA,gBAAAS,GAAC+M,CAAAA,GAAAA,EAAAA;AAAGrN,oBAAAA,QAAAA,EAAAA,IAAAA;;;AAGZ,KAAA;AACF,CAAA;;ACzFA,MAAMmlC,uBAAAA,GAA0B,CAAC,EAC/BnlC,IAAI,EACJolC,KAAK,EACLvlC,SAAY,GAAA,sEAAsE,EACjE,GAAA;IACjB,MAAMklC,UAAAA,GAAaxvB,MAAMC,OAAO,CAACxV,QAAQA,IAAK8Z,CAAAA,IAAI,CAAC,GAAO9Z,CAAAA,GAAAA,IAAAA,CAAAA;AAC1D,IAAA,qBACEM,GAAC+B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAWA,EAAAA,SAAAA;AACd,QAAA,QAAA,gBAAAc,IAACJ,CAAAA,MAAAA,EAAAA;;AACEwkC,gBAAAA,UAAAA;AACAK,gBAAAA,KAAAA,kBAAS9kC,GAAC+kC,CAAAA,MAAAA,EAAAA;AAAOvlC,oBAAAA,IAAAA,EAAM,CAAC,OAAO,EAAEslC,KAAAA,CAAM,CAAC;AAAG,oBAAA,QAAA,EAAA,CAAC,CAAC,EAAEA,KAAM,CAAA,CAAC,CAAC;;;;;AAIhE,CAAA;;ACZA,MAAME,iBAAiB,CAACC,QAAAA,GAAAA;AACtB,IAAA,IAAIC,YAAe,GAAA,EAAA,CAAA;IACnB,IAAIjwB,KAAAA,CAAMC,OAAO,CAAC+vB,QAAW,CAAA,EAAA;QAC3BC,YAAeD,GAAAA,QAAQ,CAAC,CAAE,CAAA,CAAA;KACrB,MAAA;AACLC,QAAAA,YAAAA,GAAeD,QAAY,IAAA,GAAA,CAAA;AAC7B,KAAA;IACA,OAAOl/B,iBAAAA,GACH,CAAC,EAAEA,iBAAAA,CAAkB,CAAC,EAAEm/B,YAAAA,CAAa,CAAC,GACtCA,YAAAA,CAAAA;AACN,CAAA,CAAA;AAEA,MAAMC,aAAa,CAACC,WAAAA,GAAAA;AAClB,IAAA,MAAM,EAAEC,KAAK,EAAEC,UAAU,EAAEC,aAAa,EAAE,GAAGH,WAAAA,CAAAA;AAE7C,IAAA,MAAM7+B,MAASC,GAAAA,SAAAA,EAAAA,CAAAA;AACf,IAAA,MAAM,EACJ8zB,KAAO,EAAA,EAAEkL,OAAO,EAAE,EACnB,GAAGj/B,MAAAA,CAAAA;IAEJ,MAAMk/B,wBAAAA,GAA2Br8B,YAC/B,OAAOs8B,QAAAA,GAAAA;AACLn/B,QAAAA,MAAAA,CACGI,IAAI,CAAC,CAAC,EAAE++B,QAAS,CAAA,UAAU,EAAEV,cAAAA,CAAeQ,OAAS,CAAA,CAAA,CAAC,CACtDj8B,CAAAA,KAAK,CAAC,CAACC,CAAAA,GAAAA;YACNC,gBAAiB,CAAA;gBACfjJ,KAAO,EAAA,aAAA;AACPkJ,gBAAAA,OAAAA,EAAS,CAAC,iBAAiB,EAAEF,CAAEE,CAAAA,OAAO,CAAC,CAAC;AAC1C,aAAA,CAAA,CAAA;AACF,SAAA,CAAA,CAAA;KAEJ,EAAA;AAAC87B,QAAAA,OAAAA;AAASj/B,QAAAA,MAAAA;AAAO,KAAA,CAAA,CAAA;AAGnB,IAAA,MAAMm9B,yBAAyBt6B,WAAY,CAAA,UAAA;QACzC,MAAM7C,MAAAA,CAAOI,IAAI,CAACq+B,cAAeQ,CAAAA,OAAAA,CAAAA,CAAAA,CAAAA;KAChC,EAAA;AAACA,QAAAA,OAAAA;AAASj/B,QAAAA,MAAAA;AAAO,KAAA,CAAA,CAAA;AAEpB,IAAA,qBACElG,IAAC0B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAU,EAAA,yBAAA;;0BACbS,GAAC6iC,CAAAA,iBAAAA,EAAAA;gBAAkBP,GAAK+C,EAAAA,KAAAA;;0BACxBhlC,IAAC0B,CAAAA,KAAAA,EAAAA;gBAAIxC,SAAU,EAAA,8IAAA;;AACZ+lC,oBAAAA,UAAAA,EAAYtjC,GAAI,CAAA,CAAC2O,OAASzO,EAAAA,KAAAA,iBACzBe,aAACuhC,CAAAA,WAAAA,EAAAA;AAAa,4BAAA,GAAG7zB,OAAO;4BAAEjQ,GAAKwB,EAAAA,KAAAA;;kCAGjClC,GAACyiC,CAAAA,mBAAAA,EAAAA;wBAAoBP,mBAAqBuD,EAAAA,wBAAAA;;AAEzCL,oBAAAA,WAAAA,EAAaO,sCACZ3lC,GAAC+iC,CAAAA,gBAAAA,EAAAA;wBAAiBC,WAAaU,EAAAA,sBAAAA;;AAGhC6B,oBAAAA,aAAAA,EAAevjC,IAAI,CAAC2O,OAAAA,EAASzO,KAC5ByO,GAAAA,OAAAA,EAASm0B,sBACP7hC,aAAC4hC,CAAAA,uBAAAA,EAAAA;AAAyB,4BAAA,GAAGl0B,OAAO;4BAAEjQ,GAAKwB,EAAAA,KAAAA;2CAE3Ce,aAACuhC,CAAAA,WAAAA,EAAAA;AAAa,4BAAA,GAAG7zB,OAAO;4BAAEjQ,GAAKwB,EAAAA,KAAAA;;;;0BAIrClC,GAAC6iC,CAAAA,iBAAAA,EAAAA;gBAAkBP,GAAK+C,EAAAA,KAAAA;;;;AAG9B;;AC/DA,MAAMO,kBAAkB,CACtBn5B,MAAAA,GAAAA;IAEA,OAAO,OAAOA,MAAW,KAAA,QAAA,IAAY,OAAWA,IAAAA,MAAAA,CAAAA;AAClD,CAAA,CAAA;AAEA;;;;IAKA,MAAMo5B,aAAgB,GAAA,CACpB5V,OACA6V,EAAAA,QAAAA,GAAAA;AAEA,IAAA,qBACE9lC,GAAC+B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAU,EAAA,+BAAA;kBACZ0wB,OAAQjuB,CAAAA,GAAG,CAAC,CAACyK,MAAAA,GAAAA;AACZ,YAAA,IAAIm5B,gBAAgBn5B,MAAS,CAAA,EAAA;gBAC3B,MAAM,EAAEV,OAAO,EAAEvL,KAAK,EAAEulC,gBAAgB,EAAEC,UAAU,EAAE,GAAGv5B,MAAAA,CAAAA;AAEzD,gBAAA,qBACEzM,GAAC6P,CAAAA,MAAAA,EAAAA;oBACCgpB,aAAamN,EAAAA,UAAAA;oBAEbj6B,OAAS,EAAA,IAAA;AACP,wBAAA,IAAIA,OAAS,EAAA;AACXA,4BAAAA,OAAAA,EAAAA,CAAAA;AAEA,4BAAA,IAAIg6B,gBAAkB,EAAA;gCACnBD,QAASG,CAAAA,SAAAA,EAAAA,CAAAA,CAAAA;AACZ,6BAAA;yBACK,MAAA;4BACJH,QAASG,CAAAA,SAAAA,EAAAA,CAAAA,CAAAA;AACZ,yBAAA;AACF,qBAAA;oBACA1mC,SAAU,EAAA,sCAAA;AAETiB,oBAAAA,QAAAA,EAAAA,KAAAA;AAdIA,iBAAAA,EAAAA,KAAAA,CAAAA,CAAAA;AAiBX,aAAA,MAAO,OAAOiM,MAAAA,CAAAA;AAChB,SAAA,CAAA;;AAGN,CAAA,CAAA;AAeA;;;;;;;;;;;;;;IAeay5B,MAAAA,SAAAA,GAAW,CAAC,EACvBC,SAAS,EACT3lC,KAAK,EACLwK,IAAI,EACJhD,QAAQ,EACRo+B,WAAW,EACXnW,OAAO,EACPoW,eAAe,EACfhhB,OAAO,EACPihB,mBAAmB,EACnBC,aAAa,EACP,GAAA;AACN,IAAA,MAAMT,QAAWx9B,GAAAA,eAAAA,EAAAA,CAAAA;AACjB,IAAA,qBACEjI,IAACmmC,CAAAA,KAAAA,EAAAA;QACC/hB,MAAQ0hB,EAAAA,SAAAA;QACR3lC,KAAOA,EAAAA,KAAAA;QACP6N,MAAQ,EAAA,GAAA;QACRgX,OAAS,EAAA,IAAA;YACPygB,QAASG,CAAAA,SAAAA,EAAAA,CAAAA,CAAAA;AACT,YAAA,IAAI5gB,OAAS,EAAA;AACXA,gBAAAA,OAAAA,EAAAA,CAAAA;AACF,aAAA;AACF,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAuCAohB,YAAc,EAAA,KAAA;AACdJ,QAAAA,eAAAA,EAAiBA,eAAmB,IAAA,IAAA;AACpCC,QAAAA,mBAAAA,EAAqBA,mBAAuB,IAAA,IAAA;AAC5CC,QAAAA,aAAAA,EAAeA,aAAiB,IAAA,IAAA;QAChCv7B,IAAMA,EAAAA,IAAAA;;AAELhD,YAAAA,QAAAA;0BACD3H,IAAC0B,CAAAA,KAAAA,EAAAA;gBAAIxC,SAAU,EAAA,mCAAA;;AACd6mC,oBAAAA,WAAAA,IAAeP,cAAcO,WAAaN,EAAAA,QAAAA,CAAAA;AAC1C7V,oBAAAA,OAAAA,IAAW4V,cAAc5V,OAAS6V,EAAAA,QAAAA,CAAAA;;;;;AAIzC;;MCtJaY,cAAiB,GAAA,CAAC,EAC7BP,SAAS,EACTv0B,MAAM,EACc,GAAA;AACpB,IAAA,MAAM,CAAC+0B,MAAAA,EAAQC,SAAU,CAAA,GAAGC,UAAW,CAAA;AAAC,QAAA,qBAAA;AAAsB,KAAA,CAAA,CAAA;AAE9D,IAAA,MAAMC,YAAe,GAAA,IAAA;AACnBH,QAAAA,MAAM,CAAC,qBAAA,CAAsB,IAAIC,SAAAA,CAAU,uBAAuB,IAAM,EAAA;AACtEG,YAAAA,MAAAA,EAAQ,KAAK,EAAK,GAAA,EAAA,IAAMn1B,MAAAA,EAAQo1B,cAAc,GAAE,CAAA;AAClD,SAAA,CAAA,CAAA;AACF,KAAA,CAAA;AAEA,IAAA,qBACEhnC,GAACkmC,CAAAA,SAAAA,EAAAA;AACC1lC,QAAAA,KAAAA,gBACER,GAACkP,CAAAA,IAAAA,EAAAA;YAAKlE,IAAK,EAAA,IAAA;YAAKzL,SAAU,EAAA,0BAAA;AACvBqS,YAAAA,QAAAA,EAAAA,MAAAA,CAAOpR,KAAK,IAAI,iBAAA;;QAGrB2lC,SAAWA,EAAAA,SAAAA;QACXn7B,IAAK,EAAA,KAAA;QACLilB,OAAS,EAAA;AACP,YAAA;gBACEzvB,KAAO,EAAA,QAAA;gBACPuL,OAAS+6B,EAAAA,YAAAA;gBACTf,gBAAkB,EAAA,IAAA;gBAClBC,UAAY,EAAA,6BAAA;AACd,aAAA;AACD,SAAA;QACDK,eAAiB,EAAA,KAAA;QACjBC,mBAAqB,EAAA,KAAA;QACrBC,aAAe,EAAA,KAAA;AAEf,QAAA,QAAA,gBAAAvmC,GAAC+B,CAAAA,KAAAA,EAAAA;YAAIxC,SAAU,EAAA,2DAAA;AACb,YAAA,QAAA,gBAAAS,GAACwkC,CAAAA,WAAAA,EAAAA;AAA0C,gBAAA,GAAG5yB,OAAOjB,OAAO;AAA1C,aAAA,EAAA,sBAAA,CAAA;;;AAI1B;;AC5Cas2B,MAAAA,mBAAAA,GAAsB,CAAC,EAClCd,SAAS,EAGV,GAAA;AAEC,IAAA,MAAM5/B,MAASC,GAAAA,SAAAA,EAAAA,CAAAA;AACf,IAAA,MAAM0gC,WAAW99B,WAAY,CAAA,IAAA;AAC3B7C,QAAAA,MAAAA,CAAOI,IAAI,CAAC,QAAA,CAAA,CAAA;KACX,EAAA;AAACJ,QAAAA,MAAAA;AAAO,KAAA,CAAA,CAAA;AAEX,IAAA,qBACEvG,GAACkmC,CAAAA,SAAAA,EAAAA;AACC1lC,QAAAA,KAAAA,gBACER,GAACkP,CAAAA,IAAAA,EAAAA;YAAKlE,IAAK,EAAA,IAAA;YAAKzL,SAAU,EAAA,0BAAA;AAA2B,YAAA,QAAA,EAAA,iBAAA;;QAIvD4mC,SAAWA,EAAAA,SAAAA;QACXn7B,IAAK,EAAA,KAAA;QACLilB,OAAS,EAAA;AACP,YAAA;gBACEzvB,KAAO,EAAA,OAAA;gBACPuL,OAASm7B,EAAAA,QAAAA;gBACTnB,gBAAkB,EAAA,IAAA;gBAClBC,UAAY,EAAA,+BAAA;AACd,aAAA;AACD,SAAA;QACDK,eAAiB,EAAA,KAAA;QACjBC,mBAAqB,EAAA,KAAA;QACrBC,aAAe,EAAA,KAAA;AAEf,QAAA,QAAA,gBAAAvmC,GAAC+B,CAAAA,KAAAA,EAAAA;YAAIxC,SAAU,EAAA,2DAAA;AACb,YAAA,QAAA,gBAAAS,GAAC+M,CAAAA,GAAAA,EAAAA;AAAE,gBAAA,QAAA,EAAA,4EAAA;;;;AAOX;;ACtCO,MAAMo6B,UAAAA,GAAa,CACxBC,SAAAA,EACAC,WAAW,kBAAkB,GAAA;IAE7B,MAAMC,IAAAA,GAAO,IAAIC,IAAK,CAAA;AAACH,QAAAA,SAAAA;KAAU,EAAE;QAAE33B,IAAM,EAAA,WAAA;AAAY,KAAA,CAAA,CAAA;IACvD+3B,SAAUC,CAAAA,MAAM,CAACH,IAAMD,EAAAA,QAAAA,CAAAA,CAAAA;AACzB,CAAE,CAAA;AAOF;;;;UAKaK,4BAA+B,GAAA,CAAC,EAC3CvB,SAAS,EACTjD,WAAW,EACuB,GAAA;AAElC,IAAA,MAAMyE,YAAYC,YAAa,CAAA;QAAEC,OAAS,EAAA,GAAA;AAAI,KAAA,CAAA,CAAA;AAChD,IAAA,MAAMC,kBAAkB,CAAC5E,WAAAA,GAAAA;AACrByE,QAAAA,SAAAA,CAAU9hB,IAAI,CAAC8U,IAAKK,CAAAA,SAAS,CAACkI,WAAAA,CAAAA,CAAAA,CAAAA;AAChC,KAAA,CAAA;AAEA,IAAA,qBACEljC,GAACkmC,CAAAA,SAAAA,EAAAA;AACC1lC,QAAAA,KAAAA,gBACER,GAACkP,CAAAA,IAAAA,EAAAA;YAAKlE,IAAK,EAAA,IAAA;YAAKzL,SAAU,EAAA,0BAAA;AAA2B,YAAA,QAAA,EAAA,iBAAA;;QAIvD4mC,SAAWA,EAAAA,SAAAA;QACXn7B,IAAK,EAAA,KAAA;QACLo7B,WAAa,EAAA;AACX,YAAA;gBACE5lC,KAAO,EAAA,OAAA;gBACPulC,gBAAkB,EAAA,IAAA;gBAClBC,UAAY,EAAA,6BAAA;AACd,aAAA;AACD,SAAA;QACD/V,OAAS,EAAA;AACP,YAAA;gBACEzvB,KAAO,EAAA,UAAA;gBACPulC,gBAAkB,EAAA,KAAA;gBAClBC,UAAY,EAAA,gCAAA;gBACZj6B,OAAS,EAAA,IAAA;oBACPo7B,UAAWxM,CAAAA,IAAAA,CAAKK,SAAS,CAACkI,WAAc,CAAA,EAAA,kBAAA,CAAA,CAAA;AAC1C,iBAAA;AACF,aAAA;AACA,YAAA;gBACE1iC,KAAO,EAAA,MAAA;gBACPulC,gBAAkB,EAAA,KAAA;gBAClBC,UAAY,EAAA,4BAAA;gBACZj6B,OAAS,EAAA,IAAA;oBACP+7B,eAAgB5E,CAAAA,WAAAA,CAAAA,CAAAA;AAClB,iBAAA;AACF,aAAA;AACD,SAAA;QACDmD,eAAiB,EAAA,IAAA;QACjBC,mBAAqB,EAAA,KAAA;QACrBC,aAAe,EAAA,KAAA;AAEf,QAAA,QAAA,gBAAAlmC,IAAC0B,CAAAA,KAAAA,EAAAA;YAAIxC,SAAU,EAAA,yEAAA;;gBAEX2jC,WAAY6E,CAAAA,OAAO,KAAK,EAAA,kBAAM/nC,GAACoqB,CAAAA,cAAAA,EAAAA;oBAAeC,OAAS,EAAA,IAAA;;;8BAEzDrqB,GAAC+M,CAAAA,GAAAA,EAAAA;AAAE,oBAAA,QAAA,EAAA,mFAAA;;8BAIH1M,IAAC0B,CAAAA,KAAAA,EAAAA;;sCACC/B,GAAC4e,CAAAA,QAAAA,EAAAA;AAAO,4BAAA,QAAA,EAAA,SAAA;;AAAgB,wBAAA,GAAA;AAAEskB,wBAAAA,WAAAA,CAAY8E,MAAM;;;8BAE9C3nC,IAAC0B,CAAAA,KAAAA,EAAAA;;sCACC/B,GAAC4e,CAAAA,QAAAA,EAAAA;AAAO,4BAAA,QAAA,EAAA,UAAA;;AAAiB,wBAAA,GAAA;AAAEskB,wBAAAA,WAAAA,CAAY6E,OAAO,CAACE,OAAO,CAAC,IAAM,EAAA,GAAA,CAAA;;;;;;AAKvE;;ACvFaC,MAAAA,aAAAA,GAAgB,CAAC,EACW/B,SAAS,EAGjD,GAAA;AACC,IAAA,qBACEnmC,GAACkmC,CAAAA,SAAAA,EAAAA;AACC1lC,QAAAA,KAAAA,gBACER,GAACkP,CAAAA,IAAAA,EAAAA;YAAKlE,IAAK,EAAA,IAAA;YAAKzL,SAAU,EAAA,aAAA;AAAc,YAAA,QAAA,EAAA,cAAA;;QAI1C4mC,SAAWA,EAAAA,SAAAA;QACXlW,OAAS,EAAA;AACP,YAAA;gBACEzvB,KAAO,EAAA,OAAA;gBACPwlC,UAAY,EAAA,qCAAA;AACd,aAAA;AACD,SAAA;AAED,QAAA,QAAA,gBAAA3lC,IAAC0B,CAAAA,KAAAA,EAAAA;YAAIxC,SAAU,EAAA,mCAAA;;8BACbS,GAACkP,CAAAA,IAAAA,EAAAA;oBAAKlE,IAAK,EAAA,IAAA;AAAK,oBAAA,QAAA,EAAA,oCAAA;;8BAEhB3K,IAAC6O,CAAAA,IAAAA,EAAAA;oBAAKlE,IAAK,EAAA,IAAA;;AAAK,wBAAA,4CAAA;AAC6B,wBAAA,IAAA;sCAC3ChL,GAACG,CAAAA,GAAAA,EAAAA;4BACCX,IAAK,EAAA,qEAAA;4BACLY,MAAO,EAAA,QAAA;4BACPE,GAAI,EAAA,YAAA;4BACJf,SAAU,EAAA,6BAAA;AACX,4BAAA,QAAA,EAAA,iCAAA;;AAEG,wBAAA,IAAA;;;;;;AAMd;;AChBA,MAAM4oC,QAAAA,GAAW,CACfl+B,KACA2H,EAAAA,MAAAA,GAAAA;AAEA,IAAA,IAAIxN,GAA2B,GAAA,IAAA,CAAA;IAC/B,OAAQ6F,KAAAA;AACN,QAAA,KAAKC,OAAOw8B,cAAc;AAAE,YAAA;AAC1BtiC,gBAAAA,GAAAA,GAAMwN,MAAOw2B,CAAAA,cAAc,EAAEtlB,OAAAA,iBAC3B9iB,GAAC0mC,CAAAA,cAAAA,EAAAA;oBAAeP,SAAW,EAAA,IAAA;AAAMv0B,oBAAAA,MAAAA,EAAQA,OAAOw2B,cAAc;AAC5D,iBAAA,CAAA,GAAA,IAAA,CAAA;AACJ,gBAAA,MAAA;AACF,aAAA;AACA,QAAA,KAAKl+B,OAAOC,kBAAkB;AAAE,YAAA;AAC9B/F,gBAAAA,GAAAA,iBAAMpE,GAACinC,CAAAA,mBAAAA,EAAAA;oBAAoBd,SAAW,EAAA,IAAA;;AACtC,gBAAA,MAAA;AACF,aAAA;AACF,KAAA;IACA,OAAO/hC,GAAAA,CAAAA;AACT,CAAA,CAAA;AACA,MAAMikC,aAA8B,GAAA;IAClCD,cAAgB,EAAA;QACdtlB,OAAS,EAAA,IAAA;QACTtiB,KAAO,EAAA,iBAAA;QACPmQ,OAAS,EAAA;YACPjR,IAAM,EAAA;AACJ,gBAAA,qCAAA;AACA,gBAAA,0CAAA;AACD,aAAA;AACD+P,YAAAA,IAAAA,EAAM80B,YAAY+D,SAAS;AAC7B,SAAA;QACAC,oBAAsB,EAAA,IAAA;QACtBvB,UAAY,EAAA,GAAA;AACd,KAAA;AACF,CAAA,CAAA;AAEA,MAAMwB,qBAAqB,CAAC,EAC1B52B,MAAM,EACN5J,QAAQ,EACwB,GAAA;AAChCygC,IAAAA,eAAAA,CAAgBtiC,SAAW,EAAA;QAAEuiC,cAAgB,EAAA,IAAA;AAAK,KAAA,CAAA,CAAA;AAClDxH,IAAAA,wBAAAA,EAAAA,CAAAA;IAEA,MAAM,CAACyF,MAAO,CAAA,GAAGE,UAAW,CAAA;AAAC,QAAA,qBAAA;AAAsB,KAAA,CAAA,CAAA;AACnD,IAAA,MAAMf,QAAWx9B,GAAAA,eAAAA,EAAAA,CAAAA;AACjB,IAAA,MAAM2B,KAAQzB,GAAAA,eAAAA,CAAgB,CAACC,KAAAA,GAC7BkgC,kBAAmBlgC,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA;AAGrB,IAAA,MAAMmgC,eAAe/mB,OACnB,CAAA,IAAMgnB,eAAgBR,CAAAA,aAAAA,EAAez2B,SACrC,EAAE,CAAA,CAAA;IAEJ,MAAM,EAAE/K,eAAe,EAAE,GAAGD,kBAAAA,EAAAA,CAAAA;IAE5BpB,oBAAqB,CAAA,IAAA;QACnB,IAAI,CAACmhC,MAAM,CAAC,qBAAA,CAAsB,IAAIiC,YAAaR,CAAAA,cAAc,CAACtlB,OAAO,EAAE;AACzE,YAAA,IAAI8lB,aAAaR,cAAc,CAACU,eAAe,IAAI,CAACjiC,eAClD,EAAA,OAAA;AACFi/B,YAAAA,QAAAA,IAAYA,SAAS97B,SAAU,CAAA;AAAEC,gBAAAA,KAAAA,EAAOC,OAAOw8B,cAAc;AAAC,aAAA,CAAA,CAAA,CAAA;AAChE,SAAA;KACC,EAAA;AACDC,QAAAA,MAAM,CAAC,qBAAsB,CAAA;AAC7Bb,QAAAA,QAAAA;QACA8C,YAAaR,CAAAA,cAAc,CAACtlB,OAAO;AACpC,KAAA,CAAA,CAAA;AAED,IAAA,qBACEziB,IAAC0B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAU,EAAA,aAAA;;AACZ0K,YAAAA,KAAAA,IAASk+B,SAASl+B,KAAO2+B,EAAAA,YAAAA,CAAAA;AACzB5gC,YAAAA,QAAAA;;;AAGP;;ACjGA;AAIO,MAAM+gC,aAAa,CAAC31B,QAAAA,GAAAA;AACzB,IAAA,IAAIA,aAAajN,SAAW,EAAA;AAC1B,QAAA,MAAM,IAAIO,KAAM,CAAA,mCAAA,CAAA,CAAA;AAClB,KAAA;IACA,IAAI0M,QAAAA,CAASjR,MAAM,KAAK,CAAG,EAAA;QACzB,OAAOiR,QAAAA,CAAAA;AACT,KAAA;IACA,OAAOA,QAAAA,CACJ5P,KAAK,CAAC,GACNxB,CAAAA,CAAAA,GAAG,CAAC,CAACgnC,IAAAA,GAAS,CAAC,EAAEA,IAAKC,CAAAA,MAAM,CAAC,CAAGC,CAAAA,CAAAA,WAAW,EAAG,CAAA,EAAEF,IAAKzvB,CAAAA,KAAK,CAAC,CAAG,CAAA,CAAA,CAAC,CAC/DC,CAAAA,IAAI,CAAC,GAAA,CAAA,CAAA;AACV,EAAE;AAEK,MAAM2vB,cAAiB,GAAA,CAAClvB,GAAamvB,EAAAA,CAAAA,GAAAA;IAC1C,IAAInvB,GAAAA,CAAI9X,MAAM,GAAGinC,CAAG,EAAA;AAClB,QAAA,OAAOnvB,GAAI8c,CAAAA,SAAS,CAAC,CAAA,EAAGqS,CAAK,CAAA,GAAA,KAAA,CAAA;KACxB,MAAA;QACL,OAAOnvB,GAAAA,CAAAA;AACT,KAAA;AACF,EAAE;AAEF;AACA;AACaovB,MAAAA,WAAAA,GAAY,CAAC3oC,GAAAA,EAAU,EAAE,CAACA,GAAI,GAAE4f,CAAC,EAAE,GAAGgM,IAAAA,EAAM,GAAKA,KAAK;AAE5D,MAAMgd,iBAAe,CAAC99B,KAAAA,GAAAA;AAC3B,IAAA,OAAOu9B,UAAWv9B,CAAAA,KAAAA,CAAAA,CAAAA;AACpB,EAAE;AAEK,MAAM+9B,uBAAuB,CAAC7oC,GAAAA,GAAAA;AACnC,IAAA,OAAO,CAAC,EAAEA,GAAG,CAAC,CAAE,CAAA,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAE,CAAA,CAAC,CAAC,CAAA;AAC9B,EAAE;AAEF;;;;;;AAMC,IACY8oC,MAAAA,cAAAA,GAAiB,CAC5BC,MAAAA,EACAC,UAAU,CAAC,GAAA;AAEX,IAAA,MAAMC,QAAW1oC,GAAAA,MAAAA,CAAOC,IAAI,CAACuoC,QAAQtnC,MAAM,CAAA;;AAI3C,IAAA,MAAMynC,aAAaD,QAAWD,GAAAA,OAAAA,CAAAA;IAE9B,IAAIG,KAAAA,GAAQ,IAAI50B,KAAAA,CAAM00B,QAAWC,GAAAA,UAAAA,CAAAA,CAAY37B,IAAI,CAAC6K,IAAAA,CAAKC,KAAK,CAAC,EAAK2wB,GAAAA,OAAAA,CAAAA,CAAAA,CAAAA;IAClEG,KAAQA,GAAAA,KAAAA,CAAMC,MAAM,CAAC,IAAI70B,KAAAA,CAAM20B,UAAY37B,CAAAA,CAAAA,IAAI,CAAC6K,IAAAA,CAAKC,KAAK,CAAC,EAAK6wB,GAAAA,UAAAA,CAAAA,CAAAA,CAAAA,CAAAA;IAChE,OAAOC,KAAAA,CAAAA;AACT;;AC3CA,MAAME,YAAe,GAAA,CAAC,EACpBC,MAAM,EACNhtB,KAAK,EACLitB,QAAQ,EACRC,OAAO,EACPhd,KAAK,EACa,GAAA;AAClB,IAAA,MAAMid,WAAW3iC,MAAuB,CAAA,IAAA,CAAA,CAAA;IAExChC,oBAAqB,CAAA,IAAA;;QAEnB,IAAI4kC,KAAAA,CAAAA;QACJ,IAAID,QAAAA,CAASziC,OAAO,KAAK,IAAM,EAAA;YAC7B0iC,KAAQC,GAAAA,IAAAA,CAAKF,QAASziC,CAAAA,OAAO,EAAEwlB,KAAAA,CAAAA,CAAAA;AACjC,SAAA;;;AAIA,QAAA,SAASod,YAAYrO,KAAU,EAAA;YAC7BmO,KAAOG,EAAAA,MAAAA,EAAAA,CAAAA;AACT,SAAA;QACA1mC,MAAOgG,CAAAA,gBAAgB,CAAC,QAAUygC,EAAAA,WAAAA,CAAAA,CAAAA;;QAGlC,OAAO,IAAA;YACLF,KAAOI,EAAAA,OAAAA,EAAAA,CAAAA;YACP3mC,MAAOiG,CAAAA,mBAAmB,CAAC,QAAUwgC,EAAAA,WAAAA,CAAAA,CAAAA;AACvC,SAAA,CAAA;KACC,EAAA;AAACpd,QAAAA,KAAAA;AAAM,KAAA,CAAA,CAAA;IAEV1nB,oBAAqB,CAAA,IAAA;;QAEnB,IAAI2kC,QAAAA,CAASziC,OAAO,KAAK,IAAM,EAAA;YAC7B,MAAM0iC,KAAAA,GAAQK,gBAAiBN,CAAAA,QAAAA,CAASziC,OAAO,CAAA,CAAA;AAC/C0iC,YAAAA,KAAAA,EAAOM,UAAUV,MAAQC,EAAAA,QAAAA,CAAAA,CAAAA;AAC3B,SAAA;KACC,EAAA;AAACD,QAAAA,MAAAA;AAAQC,QAAAA,QAAAA;AAAU/c,QAAAA,KAAAA;AAAM,KAAA,CAAA,CAAA;IAE5B1nB,oBAAqB,CAAA,IAAA;;QAEnB,IAAI2kC,QAAAA,CAASziC,OAAO,KAAK,IAAM,EAAA;YAC7B,MAAM0iC,KAAAA,GAAQK,gBAAiBN,CAAAA,QAAAA,CAASziC,OAAO,CAAA,CAAA;;YAE/CwiC,OAAY,KAAA,IAAA,GAAOE,KAAO5Q,EAAAA,WAAAA,EAAAA,GAAgB4Q,KAAOO,EAAAA,WAAAA,EAAAA,CAAAA;AACnD,SAAA;KACC,EAAA;AAACT,QAAAA,OAAAA;AAAQ,KAAA,CAAA,CAAA;AAEZ,IAAA,qBACElqC,GAAC+B,CAAAA,KAAAA,EAAAA;QAAI+qB,GAAKqd,EAAAA,QAAAA;QAAUntB,KAAO,EAAA;YAAEza,KAAO,EAAA,MAAA;YAAQC,MAAQ,EAAA,MAAA;AAAQ,YAAA,GAAGwa,KAAK;AAAC,SAAA;;AAEzE;;ACpDA,MAAM4tB,aAAAA,GAAgB,CAACC,SAAAA,GACrBA,SAAUpnC,CAAAA,MAAM,CAAC,CAACqnC,CAAAA,GAAWA,CAAEpqC,CAAAA,GAAG,KAAK,UAAA,CAAA,CAAA;AAEzC,MAAMqqC,kBAAmB,GAAA,CACvBF,SACAG,EAAAA,OAAAA,GAAU,GAAG,GAAA;AAEb,IAAA,IAAI,CAACH,SAAW,EAAA;AACd,QAAA,OAAO,EAAE,CAAA;AACX,KAAA;AACA,IAAA,MAAMnpB,OAAOkpB,aAAcC,CAAAA,SAAAA,CAAAA,CAAAA;IAE3B,MAAMryB,OAAAA,GAAUkJ,IAAKnI,CAAAA,KAAK,CAAC,CAAA,EAAGyxB,SAAShpC,GAAG,CAAC,CAAC8oC,CAAAA,IAAY;AACtD9mC,YAAAA,KAAAA,EAAO8mC,EAAEG,KAAK;AACd5+B,YAAAA,IAAAA,EAAM88B,cAAeG,CAAAA,cAAAA,CAAawB,CAAEpqC,CAAAA,GAAG,CAAG,EAAA,EAAA,CAAA;SAC5C,CAAA,CAAA,CAAA;IACA,OAAO8X,OAAAA,CAAAA;AACT,CAAA,CAAA;AAEA,MAAM0yB,WAAc,GAAA,CAACL,SAA+BG,EAAAA,OAAAA,GAAU,GAAG,GAAA;AAC/D,IAAA,MAAMtpB,OAAOkpB,aAAcC,CAAAA,SAAAA,CAAAA,CAAAA;AAC3B,IAAA,MAAMhqB,UAAaa,GAAAA,IAAAA,CAChBnI,KAAK,CAAC,GAAGyxB,OACThpC,CAAAA,CAAAA,GAAG,CAAC,CAAC8oC,CAAW3B,GAAAA,cAAAA,CAAeG,cAAawB,CAAAA,CAAAA,CAAEpqC,GAAG,CAAG,EAAA,EAAA,CAAA,CAAA,CAAA;IACvD,OAAO;QACLyqC,KAAO,EAAA;AACL,YAAA;gBACE17B,IAAM,EAAA,OAAA;AACR,aAAA;AACD,SAAA;QACD27B,KAAO,EAAA;AACL,YAAA;gBACE37B,IAAM,EAAA,UAAA;gBACNiS,IAAMb,EAAAA,UAAAA;AACR,aAAA;AACD,SAAA;AACH,KAAA,CAAA;AACF,CAAA,CAAA;AAEA,MAAMwqB,QAAW,GAAA,CAAC,EAAE3pB,IAAI,EAAc,GAAA;AACpC,IAAA,MAAM4pB,kBAAkBzpB,OAAQ,CAAA,IAAA;QAC9B,OAAO;YACL0pB,IAAM,EAAA;;AAEJ,gBAAA;oBACEzH,IAAM,EAAA,KAAA;oBACN0H,IAAM,EAAA,IAAA;oBACNj8B,GAAK,EAAA,EAAA;oBACLk8B,KAAO,EAAA,IAAA;oBACPC,MAAQ,EAAA,CAAA;oBACRC,YAAc,EAAA,IAAA;AAChB,iBAAA;AACD,aAAA;YACDnhC,OAAS,EAAA;gBACPohC,OAAS,EAAA,MAAA;AACX,aAAA;AACA,YAAA,GAAGV,YAAYxpB,IAAK,CAAA;YACpBmqB,MAAQ,EAAA;AAAC,gBAAA;oBAAEp8B,IAAM,EAAA,KAAA;AAAOiS,oBAAAA,IAAAA,EAAMqpB,kBAAiBrpB,CAAAA,IAAAA,CAAAA;AAAM,iBAAA;AAAE,aAAA;AACzD,SAAA,CAAA;KACC,EAAA;AAACA,QAAAA,IAAAA;AAAK,KAAA,CAAA,CAAA;AAET,IAAA,qBACE1hB,GAAC+B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAU,EAAA,aAAA;AACb,QAAA,QAAA,gBAAAS,GAAC+pC,CAAAA,YAAAA,EAAAA;YAAaC,MAAQsB,EAAAA,eAAAA;;;AAG5B,CAAA;;ACpEA,MAAMP,kBAAmB,GAAA,CACvBF,SACAG,EAAAA,OAAAA,GAAU,GAAG,GAAA;AAEb,IAAA,IAAI,CAACH,SAAW,EAAA;AACd,QAAA,OAAO,EAAE,CAAA;AACX,KAAA;IAEA,MAAMnpB,IAAAA,GAAOmpB,UAAUpnC,MAAM,CAAC,CAACqnC,CAAWA,GAAAA,CAAAA,CAAEpqC,GAAG,KAAK,UAAA,CAAA,CAAA;IAEpD,MAAM8X,OAAAA,GAAUkJ,IAAKnI,CAAAA,KAAK,CAAC,CAAA,EAAGyxB,SAAShpC,GAAG,CAAC,CAAC8oC,CAAAA,IAAY;AACtD9mC,YAAAA,KAAAA,EAAO8mC,EAAEG,KAAK;AACd5+B,YAAAA,IAAAA,EAAM88B,cAAeG,CAAAA,cAAAA,CAAawB,CAAEpqC,CAAAA,GAAG,CAAG,EAAA,EAAA,CAAA;SAC5C,CAAA,CAAA,CAAA;IACA,OAAO8X,OAAAA,CAAAA;AACT,CAAA,CAAA;AAEA,MAAMszB,QAAW,GAAA,CAAC,EAAEpqB,IAAI,EAAc,GAAA;AACpC,IAAA,MAAM4pB,kBAAkBzpB,OAAQ,CAAA,IAAA;QAC9B,OAAO;YACLrW,KAAO,EAAA;gBACLs4B,IAAM,EAAA,IAAA;gBACNha,QAAU,EAAA,IAAA;AACZ,aAAA;YACAiiB,QAAU,EAAA;gBACRvgC,KAAO,EAAA;oBACLs4B,IAAM,EAAA,IAAA;oBACNha,QAAU,EAAA,IAAA;AACZ,iBAAA;AACF,aAAA;YACAtf,OAAS,EAAA;gBACPohC,OAAS,EAAA,MAAA;AACX,aAAA;YACAC,MAAQ,EAAA;AACN,gBAAA;oBACEp8B,IAAM,EAAA,KAAA;oBACNqN,MAAQ,EAAA,KAAA;AACR4E,oBAAAA,IAAAA,EAAMqpB,kBAAiBrpB,CAAAA,IAAAA,CAAAA;oBACvBlW,KAAO,EAAA;wBACLse,QAAU,EAAA,IAAA;wBACVD,UAAY,EAAA,MAAA;wBACZwB,QAAU,EAAA,OAAA;AACZ,qBAAA;AACF,iBAAA;AACD,aAAA;AACH,SAAA,CAAA;KACC,EAAA;AAAC3J,QAAAA,IAAAA;AAAK,KAAA,CAAA,CAAA;AAET,IAAA,qBACE1hB,GAAC+B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAU,EAAA,aAAA;AACb,QAAA,QAAA,gBAAAS,GAAC+pC,CAAAA,YAAAA,EAAAA;YAAaC,MAAQsB,EAAAA,eAAAA;;;AAG5B,CAAA;;ACpDA,MAAMP,kBAAmB,GAAA,CACvBF,SACAG,EAAAA,OAAAA,GAAU,GAAG,GAAA;AAEb,IAAA,IAAI,CAACH,SAAW,EAAA;AACd,QAAA,OAAO,EAAE,CAAA;AACX,KAAA;IACA,MAAMnpB,IAAAA,GAAOmpB,UAAUpnC,MAAM,CAAC,CAACqnC,CAAqBA,GAAAA,CAAAA,CAAEpqC,GAAG,KAAK,UAAA,CAAA,CAAA;IAE9D,MAAM8X,OAAAA,GAAUkJ,IAAKnI,CAAAA,KAAK,CAAC,CAAA,EAAGyxB,SAAShpC,GAAG,CAAC,CAAC8oC,CAAAA,IAAY;AACtD9mC,YAAAA,KAAAA,EAAO8mC,EAAEG,KAAK;AACd5+B,YAAAA,IAAAA,EAAM88B,cAAeG,CAAAA,cAAAA,CAAawB,CAAEpqC,CAAAA,GAAG,CAAG,EAAA,EAAA,CAAA;SAC5C,CAAA,CAAA,CAAA;IACA,OAAO8X,OAAAA,CAAAA;AACT,CAAA,CAAA;AAEA,MAAMwzB,UAAa,GAAA,CAAC,EAAEtqB,IAAI,EAAc,GAAA;AACtC,IAAA,MAAM4pB,kBAAkBzpB,OAAQ,CAAA,IAAA;QAC9B,OAAO;YACLoqB,MAAQ,EAAA;gBACNx8B,IAAM,EAAA,QAAA;gBACNy8B,MAAQ,EAAA,UAAA;gBACRpb,KAAO,EAAA,OAAA;gBACP2a,KAAO,EAAA,EAAA;gBACPl8B,GAAK,EAAA,EAAA;gBACLm8B,MAAQ,EAAA,EAAA;AACV,aAAA;YACAlhC,OAAS,EAAA;gBACPohC,OAAS,EAAA,MAAA;AACX,aAAA;YACAC,MAAQ,EAAA;AACN,gBAAA;oBACEp8B,IAAM,EAAA,KAAA;oBACNqN,MAAQ,EAAA;AAAC,wBAAA,KAAA;AAAO,wBAAA,KAAA;AAAM,qBAAA;AACtB4E,oBAAAA,IAAAA,EAAMqpB,kBAAiBrpB,CAAAA,IAAAA,CAAAA;oBACvBlW,KAAO,EAAA;wBACLs4B,IAAM,EAAA,KAAA;wBACNr4B,QAAU,EAAA,QAAA;AACZ,qBAAA;oBACA0gC,SAAW,EAAA;wBACTrI,IAAM,EAAA,KAAA;AACR,qBAAA;AACF,iBAAA;AACD,aAAA;AACH,SAAA,CAAA;KACC,EAAA;AAACpiB,QAAAA,IAAAA;AAAK,KAAA,CAAA,CAAA;AAET,IAAA,qBACE1hB,GAAC+B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAU,EAAA,aAAA;AACb,QAAA,QAAA,gBAAAS,GAAC+pC,CAAAA,YAAAA,EAAAA;YAAaC,MAAQsB,EAAAA,eAAAA;;;AAG5B,CAAA;;AC/CA,MAAMc,mBAAmB,CAACtB,CAAAA,EAAiBxqB,IAAuBna,SAAS,GAAc2kC,EAAEG,KAAK,CAAA;AAChG,MAAMoB,kBAAAA,GAAqB,CAACvB,CAAiBtN,EAAAA,KAAAA,GAA2BA,QAAO1kB,IAAK2R,CAAAA,KAAK,CAAC,CAAC,CAAIwgB,CAAAA,KAAK,GAAGzN,KAAS,GAAA,KAAA,GAAS5iB,OAAO0xB,OAAM,IAAG,GAAA,CAAA,GAAK,GAAM,GAAA,CAAA,CAAA;AAEpJ,MAAMvB,kBAAAA,GAAmB,CACvBF,SACA0B,EAAAA,SAAAA,GAAY,OAAO,EACnB/O,KAAAA,EACAwN,UAAU,GAAG,GAAA;AAGb,IAAA,IAAI,CAACH,SAAW,EAAA;AACd,QAAA,OAAO,EAAE,CAAA;AACX,KAAA;IACA,MAAMnpB,IAAAA,GAAMmpB,UAAUpnC,MAAM,CAAC,CAACqnC,CAAUA,GAAAA,CAAAA,CAAEpqC,GAAG,KAAK,UAAA,CAAA,CAAA;IAElD,MAAM8rC,aAAAA,GAAgBD,SAAc,KAAA,OAAA,GAAUH,gBAAmBC,GAAAA,kBAAAA,CAAAA;IAEjE,MAAM7zB,OAAAA,GAAUkJ,IAAKnI,CAAAA,KAAK,CAAC,CAAA,EAAGyxB,SAC3BhpC,GAAG,CAAC,CAAC8oC,CAAAA,IAAW;YACfppB,IAAM,EAAA;AAAC8qB,gBAAAA,aAAAA,CAAc1B,CAAGtN,EAAAA,KAAAA,CAAAA;AAAO,aAAA;AAC/BnxB,YAAAA,IAAAA,EAAM88B,cAAeG,CAAAA,cAAAA,CAAawB,CAAEpqC,CAAAA,GAAG,CAAG,EAAA,EAAA,CAAA;YAC1C+O,IAAM,EAAA,KAAA;YACNg9B,KAAO,EAAA,OAAA;YACPjhC,KAAO,EAAA;gBACLs4B,IAAM,EAAA,IAAA;AACR,aAAA;SACF,CAAA,CAAA,CAAA;IACF,OAAOtrB,OAAAA,CAAAA;AACT,CAAA,CAAA;AAEA,MAAMk0B,kBAAAA,GAAsB,CAAC,EAAEhrB,IAAI,EAAE6qB,SAAS,EAAE/O,KAAK,EAAe,GAAA;IAClE,MAAMmP,SAAAA,GAAY5B,kBAAiBrpB,CAAAA,IAAAA,EAAM6qB,SAAW/O,EAAAA,KAAAA,CAAAA,CAAAA;AAEpD,IAAA,MAAM8N,kBAAkBzpB,OAAQ,CAAA,IAAA;QAC9B,OAAO;YACLrX,OAAS,EAAA;gBACPohC,OAAS,EAAA,MAAA;gBACTgB,WAAa,EAAA;;AAEXn9B,oBAAAA,IAAAA,EAAM;AACR,iBAAA;AACF,aAAA;YACAw8B,MAAQ,EAAA;gBACNC,MAAQ,EAAA,UAAA;gBACRV,IAAM,EAAA,KAAA;gBACN/7B,IAAM,EAAA,QAAA;gBACNg8B,KAAO,EAAA,EAAA;AACT,aAAA;YACAF,IAAM,EAAA;gBACJC,IAAM,EAAA,IAAA;gBACNC,KAAO,EAAA,KAAA;gBACPC,MAAQ,EAAA,KAAA;gBACRC,YAAc,EAAA,IAAA;gBACdnpC,MAAQ,EAAA,KAAA;AACV,aAAA;YACA4oC,KAAO,EAAA;gBACL37B,IAAM,EAAA,OAAA;gBACNo9B,GAAK,EAAA,SAAA;AACP,aAAA;YACA1B,KAAO,EAAA;gBACL17B,IAAM,EAAA,UAAA;gBACNiS,IAAM,EAAA;AAAC,oBAAA,EAAA;AAAG,iBAAA;AACZ,aAAA;YACAmqB,MAAQc,EAAAA,SAAAA;AAEV,SAAA,CAAA;KAAM,EAAA;AAACA,QAAAA,SAAAA;AAAU,KAAA,CAAA,CAAA;AAEnB,IAAA,qBACE3sC,GAAC+B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAU,EAAA,aAAA;AACb,QAAA,QAAA,gBAAAS,GAAC+pC,CAAAA,YAAAA,EAAAA;YAAaC,MAAQsB,EAAAA,eAAAA;;;AAG5B,CAAA;;ACjFA,MAAMwB,mBAAsB,GAAA;IAC1B1C,KAAO,EAAA;QACL2C,GAAK1B,EAAAA,QAAAA;QACL2B,iBAAmBN,EAAAA,kBAAAA;QACnBO,OAASnB,EAAAA,QAAAA;QACToB,KAAOlB,EAAAA,UAAAA;AACT,KAAA;AACF,CAAA,CAAA;AAEA,IAAIx5B,UAA+DrM,GAAAA,SAAAA,CAAAA;AAEnE,MAAMgnC,oBAAuB,GAAA,IAAA;AAC3B,IAAA,IAAI,CAAC36B,UAAU,EAAA;AACbA,QAAAA,UAAAA,GAAW,IAAI6d,0BAAAA,EAAAA,CAAAA;AACf7d,QAAAA,UAAAA,CAASoe,uBAAuB,CAACkc,mBAAAA,CAAAA,CAAAA;AACnC,KAAA;IACA,OAAOt6B,UAAAA,CAAAA;AACT,CAAA;;ACpBA;;AAEC,IACM,MAAM46B,WAAc,GAAA,CACzB39B,MACA49B,UACAC,EAAAA,UAAAA,GAAAA;;AAGA,IAAA,MAAMlzB,OAAU+yB,GAAAA,oBAAAA,EAAAA,CAAuBlvB,WAAW,CAAC,OAASxO,EAAAA,IAAAA,CAAAA,CAAAA;AAE5D,IAAA,OAAO2K,OAAQ,CAAA;AAAE,QAAA,GAAGizB,UAAU;KAAIC,EAAAA,UAAAA,CAAAA,CAAAA;AACpC,CAAE;;ACCF,MAAMC,YAAe,GAAA,CAAA,CAAA;AAgBrB;AACA,MAAMC,MAAS,GAAA,CAAC,EACdtrC,KAAK,EACLunC,MAAM,EACN/nB,IAAI,EACJ+rB,MAAM,EACN9Y,SAAS,EACT+U,OAAAA,GAAU6D,YAAY,EACV,GAAA;IACZ,MAAM1D,KAAAA,GAAQL,eAAeC,MAAQC,EAAAA,OAAAA,CAAAA,CAAAA;AAErC,IAAA,qBACE1pC,GAAC0tC,CAAAA,IAAAA,EAAAA;QAAKnuC,SAAU,EAAA,aAAA;kBACbmiB,IACCzgB,IAAAA,MAAAA,CAAOC,IAAI,CAACuoC,MAAQznC,CAAAA,CAAAA,GAAG,CAAC,CAACqR,KAAOnR,EAAAA,KAAAA,iBAC9BlC,GAAC0tC,CAAAA,IAAAA,CAAKC,GAAG,EAAA;gBAAC1tC,IAAM4pC,EAAAA,KAAK,CAAC3nC,KAAM,CAAA;AAC1B,gBAAA,QAAA,gBAAA7B,IAACy/B,CAAAA,IAAAA,EAAAA;oBAAKC,MAAQ,EAAA,IAAA;;AACZ,sCAAA//B,GAAA,CAAC8/B,KAAK8N,OAAO,EAAA;4BAACC,cAAc,EAAA,IAAA;4BAACC,EAAG,EAAA,IAAA;AAC9B,4BAAA,QAAA,gBAAA9tC,GAAC8jB,CAAAA,KAAAA,EAAAA;gCAAMmc,OAAQ,EAAA,eAAA;AACb,gCAAA,QAAA,gBAAAjgC,GAACkP,CAAAA,IAAAA,EAAAA;oCAAK8P,EAAI,EAAA,GAAA;AACPyqB,oCAAAA,QAAAA,EAAAA,MAAM,CAACp2B,KAAAA,CAAM,CAAC7S,KAAK,IAAIutC,gBAAiB16B,CAAAA,KAAAA,CAAAA;;;;sCAS/CrT,GAACoqB,CAAAA,cAAAA,EAAAA;AAAeC,4BAAAA,OAAAA,EAAS,CAACsK,SAAAA;;AACzByY,wBAAAA,WAAAA,CAAY3D,MAAM,CAACp2B,KAAM,CAAA,CAAC26B,SAAS,EAAE;AACpCtsB,4BAAAA,IAAAA,EAAMA,SAASvb,SAAY,GAAA,EAAE,GAAGub,IAAI,CAACrO,KAAM,CAAA;AAC3CmqB,4BAAAA,KAAAA,EAAOiQ,MAAU,IAAA,CAAA;AACjBlB,4BAAAA,SAAAA,EAAW9C,MAAM,CAACp2B,KAAM,CAAA,CAACk5B,SAAS,IAAI,OAAA;AACxC,yBAAA,CAAA;;;AAnB+B,aAAA,EAAA,CAAC,EAAErqC,KAAM,CAAA,QAAQ,EAAEmR,KAAAA,CAAM,IAAI,CAAC,CAAA,CAAA;;AAyB3E;;AC7DA,MAAM46B,aAAAA,GAA8C,CAAC,EACnDC,KAAK,EACL1tC,KAAK,EACL6mC,QAAQ,EACR8G,QAAQ,EACW,GAAA;AACnB,IAAA,qBACEnuC,GAAC+B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAU,EAAA,mCAAA;AACZiB,QAAAA,QAAAA,EAAAA,KAAAA;;AAGP,CAAA;;ACAA,MAAM4tC,kBAAqB,GAAA,CAAA,CAAA;AAa3B;AACA;AACA,MAAM/E,SAAAA,GAAY,CAAC3oC,GAAAA,EAAsB,EAAE,CAACA,GAAI,GAAE4f,CAAC,EAAE,GAAGgM,IAAAA,EAAM,GAAkCA,IAAAA,CAAAA;AAEhG,MAAMye,gBAAmB,GAAA,CACvBF,SACAwD,EAAAA,aAAAA,EACArD,UAAU,GAAG,GAAA;IAEb,MAAMtpB,IAAAA,GAAO2nB,UAAU,UAAYwB,EAAAA,SAAAA,CAAAA,CAAAA;AAEnC,IAAA,MAAMryB,OAAUvX,GAAAA,MAAAA,CAAOC,IAAI,CAACwgB,IACzBje,CAAAA,CAAAA,MAAM,CAAC,CAACqnC,CACP,GAAA,CAACuD,aAAiBA,IAAAA,aAAAA,CAAclsC,MAAM,KAAK,CACvC2oC,GAAAA,CAAAA,GACAuD,aAAc9zB,CAAAA,QAAQ,CAACuwB,CAAAA,CAAAA,CAAAA,CAE5BvxB,KAAK,CAAC,CAAGyxB,EAAAA,OAAAA,CAAAA,CACThpC,GAAG,CAAC,CAAC8oC,CAAAA,IAAO;AACXpnC,YAAAA,CAAAA,EAAG4lC,YAAawB,CAAAA,CAAAA,CAAAA;YAChBwD,CAAG5sB,EAAAA,IAAI,CAACopB,CAAE,CAAA;SACZ,CAAA,CAAA,CAAA;AACF,IAAA,OAAOtyB,QAAQT,OAAO,EAAA,CAAA;AACxB,CAAA,CAAA;AAEO,MAAMw2B,iBAA4C,CAAC,EACxDl7B,KAAK,EACLqO,IAAI,EACJ2sB,aAAa,EACb1Z,SAAS,EACTnyB,MAAM,EACNgsC,YAAY,IAAI,EAChBxD,UAAUoD,kBAAkB,EAC5BK,UAAa,GAAA,OAAO,EACJ,GAAA;AAChB,IAAA,MAAM,CAACC,UAAAA,EAAYC,YAAa,CAAA,GAAGrpC,SAA8B,EAAE,CAAA,CAAA;AACnE,IAAA,MAAM,EAAEwnB,GAAG,EAAEvqB,KAAK,EAAE,GAAGqsC,cAAAA,EAAAA,CAAAA;IAEvBnnC,SAAU,CAAA,IAAA;AACR,QAAA,IAAIktB,SAAW,EAAA;YACb,MAAMka,EAAAA,GAAK9D,gBAAiBrpB,CAAAA,IAAAA,EAAM2sB,aAAerD,EAAAA,OAAAA,CAAAA,CAAAA;YACjD2D,YAAaE,CAAAA,EAAAA,CAAAA,CAAAA;SACR,MAAA;AACLF,YAAAA,YAAAA,CAAa,EAAE,CAAA,CAAA;AACjB,SAAA;KACC,EAAA;AAACjtB,QAAAA,IAAAA;AAAM2sB,QAAAA,aAAAA;AAAeh7B,QAAAA,KAAAA;AAAOshB,QAAAA,SAAAA;AAAWqW,QAAAA,OAAAA;AAAQ,KAAA,CAAA,CAAA;;AAGnD,IAAA,MAAM8D,UAAa,GAAA,CAAC,EAAEz7B,KAAAA,CAAM,CAAC,EAAEyF,IAAKC,CAAAA,KAAK,CAACD,IAAAA,CAAKge,MAAM,EAAA,GAAK,KAAK,CAAC,CAAA;AAEhE,IAAA,qBACEz2B,IAAC0B,CAAAA,KAAAA,EAAAA;QAAI+qB,GAAKA,EAAAA,GAAAA;;AACP0hB,YAAAA,SAAAA,iBACCxuC,GAACiuC,CAAAA,aAAAA,EAAAA;AACCztC,gBAAAA,KAAAA,EAAOutC,gBAAiB16B,CAAAA,KAAAA,CAAAA;gBACxB66B,KAAOY,EAAAA,UAAAA;gBACPzH,QAAUh0B,EAAAA,KAAAA;AAEV,aAAA,CAAA,GAAA,IAAA;AAEHshB,YAAAA,SAAAA,IAAa+Z,UAAcA,IAAAA,UAAAA,CAAWvsC,MAAM,GAAG,kBAC9CnC,GAAC+uC,CAAAA,YAAAA,EAAAA;gBACCrtB,IAAMgtB,EAAAA,UAAAA;gBACNlsC,MAAQA,EAAAA,MAAAA;AACRD,gBAAAA,KAAAA,EAAOA,KAAQ,GAAA,GAAA;AACfiJ,gBAAAA,KAAAA,EAAO,CAAC,KAAK,EAAEijC,UAAAA,CAAW,CAAC;gBAC3BO,SAAWP,EAAAA,UAAAA;+BAGbzuC,GAAC+B,CAAAA,KAAAA,EAAAA;gBAAIxC,SAAU,EAAA,iDAAA;AACb,gBAAA,QAAA,gBAAAS,GAAC+vB,CAAAA,MAAAA,EAAAA;oBAAOnkB,KAAM,EAAA,OAAA;oBAAQZ,IAAM,EAAA,EAAA;;;;;AAKtC,EAAE;AAEK,MAAMs+B,eAAe,CAAC99B,KAAAA,GAAAA;IAC3B,MAAMyjC,MAAAA,GAASzjC,KAAMhI,CAAAA,KAAK,CAAC,GAAA,CAAA,CAAA;AAC3B,IAAA,MAAM0rC,oBAAoBD,MAAOjtC,CAAAA,GAAG,CAAC,CAACmtC,IAAMpG,UAAWoG,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;IACvD,OAAOD,iBAAAA,CAAkB11B,IAAI,CAAC,GAAA,CAAA,CAAA;AAChC,CAAE,CAAA;AAYF,MAAM41B,mBAAAA,GAA0D,CAAC,EAC/D1rC,CAAC,EACD4qC,CAAC,EACDe,KAAK,EACLL,SAAY,GAAA,OAAO,EACM,GAAA;AACzB,IAAA,MAAM9hB,KAAQC,GAAAA,eAAAA,EAAAA,CAAAA;AACd,IAAA,qBACEntB,GAACgX,CAAAA,GAAAA,EAAAA;QAAEgG,KAAO,EAAA;YAAEsyB,aAAe,EAAA,MAAA;AAAO,SAAA;AAChC,QAAA,QAAA,gBAAAtvC,GAACuvC,CAAAA,eAAAA,EAAAA;YAAc7rC,CAAGA,EAAAA,CAAAA;YAAG4qC,CAAGA,EAAAA,CAAAA;AACtB,YAAA,QAAA,gBAAAtuC,GAACuL,CAAAA,OAAAA,EAAAA;gBACCC,KACE,gBAAAnL,IAAA,CAAC8C,eAAMC,QAAQ,EAAA;;sCACbpD,GAACiX,CAAAA,GAAAA,EAAAA;sCAAGo4B,KAAO3rC,EAAAA,CAAAA;;sCACXrD,IAAC0M,CAAAA,GAAAA,EAAAA;;AACEsiC,gCAAAA,KAAAA,EAAOf,CAAEp1B,CAAAA,cAAAA,EAAAA;AAAiB,gCAAA,GAAA;AAAE81B,gCAAAA,SAAAA;;;;;gBAInCtjC,SAAS,EAAA,IAAA;gBACT+Y,MAAM,EAAA,IAAA;gBACNgiB,YAAY,EAAA,IAAA;gBACZr4B,SAAW,EAAA,EAAA;gBACX4O,KAAO,EAAA;oBACL8M,QAAU,EAAA,EAAA;AACV7M,oBAAAA,eAAAA,EAAiBiQ,KAAMsiB,CAAAA,MAAM,CAACC,MAAM,CAAC,CAAE,CAAA;AACvC7jC,oBAAAA,KAAAA,EAAOshB,KAAMsiB,CAAAA,MAAM,CAACE,IAAI,CAAC,CAAE,CAAA;AAC7B,iBAAA;AAEA,gBAAA,QAAA,gBAAA1vC,GAACsT,CAAAA,GAAAA,EAAAA,EAAAA,CAAAA;;;;AAKX,CAAA,CAAA;AAQA,MAAMq8B,wBAAAA,GAAoE,CAAC,EACzEjsC,CAAI,GAAA,CAAC,EACL4qC,CAAI,GAAA,CAAC,EACL5uC,IAAI,EAC0B,GAAA;AAC9B,IAAA,qBACEM,GAACuvC,CAAAA,eAAAA,EAAAA;QAAc7rC,CAAG,EAAA,CAAA;AAAG4qC,QAAAA,CAAAA,EAAGA,CAAI,GAAA,EAAA;QAAI/rC,KAAO,EAAA,MAAA;QAAQC,MAAO,EAAA,IAAA;AACpD,QAAA,QAAA,gBAAAxC,GAAC+B,CAAAA,KAAAA,EAAAA;YACCib,KAAO,EAAA;gBACL4yB,UAAY,EAAA,CAAA;AACZC,gBAAAA,WAAAA,EAAansC,CAAI,GAAA,EAAA;gBACjBosC,YAAc,EAAA,EAAA;gBACdvtC,KAAO,EAAA,MAAA;gBACPC,MAAQ,EAAA,MAAA;gBACRiJ,QAAU,EAAA,UAAA;gBACVskC,YAAc,EAAA,UAAA;gBACd1kB,QAAU,EAAA,QAAA;gBACV2kB,UAAY,EAAA,QAAA;gBACZlmB,QAAU,EAAA,EAAA;gBACVmmB,UAAY,EAAA,uBAAA;AACd,aAAA;AAECvwC,YAAAA,QAAAA,EAAAA,IAAAA;;;AAIT,CAAA,CAAA;AAeA,MAAMqvC,YAAwC,GAAA,CAAC,EAC7CrtB,IAAI,EACJlf,MAAM,EACND,KAAK,EACLiJ,KAAK,EACLwjC,SAAS,EACK,GAAA;IACd,MAAMnC,GAAAA,GAAM/zB,IAAK+zB,CAAAA,GAAG,CAAInrB,GAAAA,IAAAA,CAAK1f,GAAG,CAAC,CAAC8oC,CAAMA,GAAAA,CAAAA,CAAEwD,CAAC,CAAA,CAAA,CAAA;AAC3C,IAAA,MAAM4B,SAAYC,GAAAA,IAAAA,CAAKC,YAAY,CAAC,IAAM,EAAA;QAAEC,QAAU,EAAA,SAAA;AAAU,KAAA,CAAA,CAAA;AAChE,IAAA,MAAMnjB,KAAQC,GAAAA,eAAAA,EAAAA,CAAAA;AAEd,IAAA,qBACE9sB,IAACiwC,CAAAA,YAAAA,EAAAA;QACCC,aAAe,EAAA;YAAC7uB,IAAKvf,CAAAA,MAAM,KAAK,CAAA,GAAI,GAAM,GAAA,EAAA;AAAI,YAAA,CAAA;AAAE,SAAA;AAChD+qB,QAAAA,KAAAA,EAAOsjB,aAAaC,QAAQ;QAC5BluC,KAAOA,EAAAA,KAAAA;QACPC,MAAQA,EAAAA,MAAAA;AACRkuC,QAAAA,kBAAAA,gBAAoB1wC,GAAC2wC,CAAAA,gBAAAA,EAAAA;YAAiB9jC,IAAK,EAAA,QAAA;;;0BAE3C7M,GAAC4wC,CAAAA,WAAAA,EAAAA;AACCC,gBAAAA,kBAAAA,gBAAoB7wC,GAAC2vC,CAAAA,wBAAAA,EAAAA,EAAAA,CAAAA;gBACrB3yB,KAAO,EAAA;oBACLuuB,IAAM,EAAA;wBAAEuF,MAAQ,EAAA,MAAA;AAAO,qBAAA;oBACvBC,KAAO,EAAA;wBAAE/lC,IAAM,EAAA,CAAA;AAAE,qBAAA;oBACjBgmC,IAAM,EAAA;wBAAEC,WAAa,EAAA,CAAA;AAAE,qBAAA;AACzB,iBAAA;;0BAGFjxC,GAAC4wC,CAAAA,WAAAA,EAAAA;gBACCM,aAAa,EAAA,IAAA;gBACbl0B,KAAO,EAAA;oBACLuuB,IAAM,EAAA;wBAAEuF,MAAQ,EAAA,MAAA;AAAO,qBAAA;oBACvBK,SAAW,EAAA;wBAAEvnB,OAAS,EAAA,EAAA;wBAAIE,QAAU,EAAA,EAAA;wBAAID,UAAY,EAAA,MAAA;AAAO,qBAAA;oBAC3DunB,UAAY,EAAA;wBAAEtnB,QAAU,EAAA,EAAA;AAAG,qBAAA;AAC7B,iBAAA;gBACAunB,SAAW,EAAA,CAAA;AACXC,gBAAAA,UAAAA,EAAY,CAACC,CAAAA,GAAMrB,SAAUsB,CAAAA,MAAM,CAACD,CAAAA,CAAAA;gBACpC/lC,KAAOA,EAAAA,KAAAA;gBACPimC,SAAW,EAAA,KAAA;;0BAGbpxC,IAACqxC,CAAAA,YAAAA,EAAAA;;kCACC1xC,GAAC2xC,CAAAA,UAAAA,EAAAA;wBACCC,UAAU,EAAA,IAAA;AACVC,wBAAAA,MAAAA,EAAQ,IAAM,EAAA;AACdC,wBAAAA,cAAAA,gBACE9xC,GAAC+xC,CAAAA,cAAAA,EAAAA;AACCC,4BAAAA,eAAAA,gBAAiBhyC,GAACovC,CAAAA,mBAAAA,EAAAA;gCAAoBJ,SAAWA,EAAAA,SAAAA;;;wBAGrDhyB,KAAO,EAAA;4BACL0E,IAAM,EAAA;AACJzT,gCAAAA,IAAAA,EAAMif,KAAMsiB,CAAAA,MAAM,CAACpF,KAAK,CAAC,CAAE,CAAA;AAC3B0G,gCAAAA,MAAAA,EAAQ5jB,KAAMsiB,CAAAA,MAAM,CAACpF,KAAK,CAAC,CAAE,CAAA;gCAC7B6G,WAAa,EAAA,CAAA;gCACb1uC,KAAO,EAAA,EAAA;AACT,6BAAA;AACF,yBAAA;wBACA0vC,SAAU,EAAA,KAAA;wBACVvwB,IAAMA,EAAAA,IAAAA;wBACNhe,CAAE,EAAA,GAAA;wBACF4qC,CAAE,EAAA,GAAA;AACF4D,wBAAAA,aAAAA,gBACElyC,GAACmyC,CAAAA,GAAAA,EAAAA;4BACCp1B,QAAU,EAAA,CAAA;AACVq1B,4BAAAA,SAAAA,EAAW,CAAC,EAAE/C,KAAK,EAAE,GAAK,CAAC,GAAG,EAAEA,KAAM3rC,CAAAA,CAAC,CAAC,KAAK,EAAE2rC,KAAMf,CAAAA,CAAC,CAAC,CAAC;;;4BAGxDzhC,IAAK,EAAA,iBAAA;;;kCAIX7M,GAAC2xC,CAAAA,UAAAA,EAAAA;AACCjwB,wBAAAA,IAAAA,EAAMA,IAAK1f,CAAAA,GAAG,CAAC,CAAC8oC,KAAO;AAAEpnC,gCAAAA,CAAAA,EAAGonC,EAAEpnC,CAAC;gCAAE4qC,CAAGzB,EAAAA,GAAAA,GAAM/B,EAAEwD,CAAC;6BAAC,CAAA,CAAA;wBAC9C5qC,CAAE,EAAA,GAAA;wBACF4qC,CAAE,EAAA,GAAA;wBACFtxB,KAAO,EAAA;4BACL0E,IAAM,EAAA;AACJzT,gCAAAA,IAAAA,EAAMif,KAAMsiB,CAAAA,MAAM,CAACE,IAAI,CAAC,CAAE,CAAA;AAC1BoB,gCAAAA,MAAAA,EAAQ5jB,KAAMsiB,CAAAA,MAAM,CAACE,IAAI,CAAC,CAAE,CAAA;gCAC5BuB,WAAa,EAAA,CAAA;gCACb1uC,KAAO,EAAA,EAAA;AACT,6BAAA;AACF,yBAAA;wBACA0vC,SAAU,EAAA,KAAA;;;;;;AAKpB,CAAA;;ACjSA,MAAMI,eAA2D,CAAC,EAChE3oC,OAAO,EACW,iBAClB1J,GAACkP,CAAAA,IAAAA,EAAAA;QAAKtD,KAAM,EAAA,WAAA;QAAYZ,IAAK,EAAA,IAAA;QAAKgU,EAAG,EAAA,IAAA;AAClCtV,QAAAA,QAAAA,EAAAA,OAAAA;;AAQL,MAAM4oC,gBAA6D,CAAC,EAClEtqC,QAAQ,EACW,iBACnBhI,GAAC+B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAU,EAAA,wCAAA;AACb,QAAA,QAAA,gBAAAS,GAAC8/B,CAAAA,IAAAA,EAAAA;YACCC,MAAO,EAAA,IAAA;YACPhzB,CAAE,EAAA,IAAA;YACFxN,SAAU,EAAA,+CAAA;AAEV,YAAA,QAAA,gBAAAc,IAACyjB,CAAAA,KAAAA,EAAAA;gBAAMgN,KAAM,EAAA,QAAA;;kCACX9wB,GAACuyC,CAAAA,SAAAA,EAAAA;wBAAU3mC,KAAM,EAAA,WAAA;wBAAYmE,OAAQ,EAAA,SAAA;wBAAU+M,MAAO,EAAA,IAAA;wBAAK9R,IAAK,EAAA,IAAA;AAC9D,wBAAA,QAAA,gBAAAhL,GAACwyC,CAAAA,qBAAAA,EAAAA;4BAAkBxnC,IAAM,EAAA,EAAA;;;AAE1BhD,oBAAAA,QAAAA;;;;;AAKT,MAAMyqC,YAAqD,CAAC,EAC1D/oC,OAAO,EACQ,iBACfrJ,IAACiyC,CAAAA,aAAAA,EAAAA;;0BACCtyC,GAACqyC,CAAAA,YAAAA,EAAAA;gBAAa3oC,OAASA,EAAAA,OAAAA;;AAAY,YAAA,GAAA;;;;ACtBhC,MAAMgpC,6BAAgC,GAAA,CAC3CC,gBAEAA,GAAAA,gBAAAA,CAAiBzlC,MAAM,CAAC,CAACC,GAAK+mB,EAAAA,GAAAA,GAAQ/mB,IAAI28B,MAAM,CAAC5V,IAAIvS,MAAM,CAAA,EAAG,EAAE,CAAc,CAAA;AAKzE,MAAMixB,oBAAoB,CAC/BlxB,IAAAA,GAAAA;IAEA,IAAI,CAACA,IAAM,EAAA,OAAO,EAAC,CAAA;AAEnB,IAAA,OAAOA,IAAKxU,CAAAA,MAAM,CAAC,CAACC,GAA6B0lC,EAAAA,IAAAA,GAAAA;AAC/C,QAAA,IAAI39B,QAAQ29B,IAAKnyC,CAAAA,GAAG,CAAG,EAAA,OAAOyM;AAC9BA,QAAAA,GAAG,CAAC0lC,IAAKnyC,CAAAA,GAAG,CAAC,GAAGmyC,KAAK5H,KAAK,CAAA;QAC1B,OAAO99B,GAAAA,CAAAA;AACT,KAAA,EAAG,EAAC,CAAA,CAAA;AACN,CAAE,CAAA;AAEK,MAAM2lC,mBAAmB,CAC9BpxB,IAAAA,GAAAA;IAEA,IAAI,CAACA,IAAM,EAAA,OAAO,EAAC,CAAA;AAEnB,IAAA,OAAOA,IAAKxU,CAAAA,MAAM,CAAC,CAACC,GAA6B0lC,EAAAA,IAAAA,GAAAA;;QAE/C1lC,GAAG,CAAC,CAAC,EAAE0lC,IAAAA,CAAKnyC,GAAG,GAAG,CAAE,CAAA,EAAEyR,QAAW,EAAA,CAAA,CAAC,EAAE0gC,IAAKnyC,CAAAA,GAAG,GAAG,CAAE,CAAA,EAAEyR,WAAW,CAAC,CAAC,GAC9D0gC,IAAAA,CAAK5H,KAAK,CAAA;QACZ,OAAO99B,GAAAA,CAAAA;AACT,KAAA,EAAG,EAAC,CAAA,CAAA;AACN,CAAE,CAAA;AAEF;;;;;;AAMC,IACM,MAAM4lC,eAAAA,GAAkB,CAC7BnzB,SAAAA,EACA+N,QACAqlB,kBACAC,EAAAA,YAAAA,GAAAA;AAEA,IAAA,IAAItlB,WAAWxnB,SAAW,EAAA,OAAA;IAC1B,IAAIwnB,MAAAA,CAAOxrB,MAAM,GAAG,CAAG,EAAA;;AAErB6wC,QAAAA,kBAAAA,CAAmBpzB,SAAW,EAAA;YAC5Bqf,QAAU,EAAA,IAAA;YACV5rB,KAAOuM,EAAAA,SAAAA;YACPszB,QAAUvlB,EAAAA,MAAAA;AACZ,SAAA,CAAA,CAAA;KAGG,MAAA;QACHslB,YAAarzB,CAAAA,SAAAA,CAAAA,CAAAA;AACf,KAAA;AACF,CAAE,CAAA;AAEF;AACO,MAAMuzB,cAAAA,GAAiB,CAC5BzxB,IAAAA,EACAxf,OACAkxC,YACAC,EAAAA,0BAAAA,GAAAA;AAEA,IAAA,IAAI,OAAO3xB,IAAS,KAAA,QAAA,IAAYA,IAAS,KAAA,IAAA,EAAM,OAAO,EAAC,CAAA;;IAGvD,OAAOzgB,MAAAA,CAAO8R,OAAO,CAAC2O,IAA0BxU,CAAAA,CAAAA,MAAM,CACpD,CACEC,GAAAA,EACA,CAACmmC,QAAAA,EAAUtvC,KAAoC,CAAA,GAAA;AAE/C,QAAA,IAAI,CAACA,KAAAA,EAAO,OAAOmJ,GAAAA,CAAAA;QACnB,MAAMomC,SAAAA,GAAYD,QAAS9vC,CAAAA,KAAK,CAAC,GAAA,CAAA,EAAM+V,MAAM,CAAC,CAAA,CAAE,CAAC,CAAA,CAAE,IAAI+5B,QAAAA,CAAAA;;AAEvD,QAAA,MAAM7jC,IACJzL,GAAAA,KAAAA,CAAM7B,MAAM,KAAK,CAAK+S,IAAAA,OAAAA,CAAQlR,KAAK,CAAC,CAAE,CAAA,CAACtD,GAAG,CAAA,GAAI,OAAU,GAAA,MAAA,CAAA;QAC1D,MAAM8yC,SAAAA,GACJJ,YAAa9hC,CAAAA,IAAI,CAAC,CAAC5N,IAAMA,CAAE2P,CAAAA,KAAK,KAAKigC,QAAAA,CAAAA,EAAWjnC,IAAQlG,IAAAA,SAAAA,CAAAA;AAE1D,QAAA,MAAMstC,QAAWJ,GAAAA,0BAA0B,CAACC,QAAAA,CAAS,IAAI,EAAC,CAAA;QAC1D,OAAO;AACL,YAAA,GAAGnmC,GAAG;AACN,YAAA,CAACmmC,WAAW;gBACVjgC,KAAOigC,EAAAA,QAAAA;gBACPC,SAAWA,EAAAA,SAAAA;;gBAEX9jC,IAAMgkC,EAAAA,QAAAA,CAAShkC,IAAI,IAAIA,IAAAA;gBACvBvN,KAAOA,EAAAA,KAAAA;gBACPQ,WAAa+wC,EAAAA,QAAAA,CAAS/wC,WAAW,IAAI,eAAA;gBACrC8I,KAAOioC,EAAAA,QAAAA,CAAS/wC,WAAW,IAAI8wC,SAAAA;;AAE/BE,gBAAAA,KAAAA,EACED,QAASC,CAAAA,KAAK,IAAIjkC,IAAAA,KAAS,OACvB,GAAA;oBACEkkC,OAAS76B,EAAAA,IAAAA,CAAKC,KAAK,CAAC6B,MAAO5W,CAAAA,KAAK,CAAC,CAAE,CAAA,CAACtD,GAAG,CAAC,CAAE,CAAA,CAAA,CAAA;oBAC1CkzC,OAAS96B,EAAAA,IAAAA,CAAK+6B,IAAI,CAACj5B,MAAO5W,CAAAA,KAAK,CAAC,CAAE,CAAA,CAACtD,GAAG,CAAC,CAAE,CAAA,CAAA,CAAA;iBAE3CyF,GAAAA,SAAAA;AACR,aAAA;AACF,SAAA,CAAA;AACF,KAAA,EACA,EAAC,CAAA,CAAA;AAEL,CAAE,CAAA;AAEK,MAAM2tC,WAAc,GAAA,CACzBzgC,KACA0gC,EAAAA,WAAAA,GAAAA;AAEA,IAAA,IAAI,CAAC1gC,KAAAA,CAAMkH,QAAQ,CAAC,GAAM,CAAA,EAAA;QACxB,IAAIy5B,oBAAAA,CAAqBD,cACvB,OAAO;AACL,YAAA,GAAGA,WAAW;YACd1gC,KAAOA,EAAAA,KAAAA;AACT,SAAA,CAAA;aACG,OAAO0gC,WAAAA,CAAAA;AACd,KAAA;IAEA,MAAME,eAAAA,GAAkB5gC,KAAM7P,CAAAA,KAAK,CAAC,GAAA,CAAA,CAAA;IACpC,MAAM0wC,SAAAA,GAAYD,gBAAgBE,KAAK,EAAA,CAAA;IAEvC,OAAO;QACLlV,QAAU,EAAA,QAAA;AACVnuB,QAAAA,IAAAA,EAAMojC,SAAa,IAAA,EAAA;AACnBE,QAAAA,OAAAA,EAASN,WAAYG,CAAAA,eAAAA,CAAgBz6B,IAAI,CAAC,GAAMu6B,CAAAA,EAAAA,WAAAA,CAAAA;AAClD,KAAA,CAAA;AACF,CAAE,CAAA;AAEF;;;;IAKO,MAAMM,gBAAAA,GAAmB,CAACnyC,KAAAA,GAAAA;AAC/B,IAAA,MAAM4jC,QAAWx9B,GAAAA,eAAAA,EAAAA,CAAAA;;AAGjB,IAAA,OAAO,CAAC+K,KAAe5P,EAAAA,MAAAA,GAAAA;AACrBqiC,QAAAA,QAAAA,CACEwO,kBAAmB,CAAA;YACjBpyC,KAAOA,EAAAA,KAAAA;YACPmR,KAAOA,EAAAA,KAAAA;AACP5P,YAAAA,MAAAA,EAAQqwC,YAAYzgC,KAAO5P,EAAAA,MAAAA,CAAAA;AAC7B,SAAA,CAAA,CAAA,CAAA;AAEJ,KAAA,CAAA;AACF,CAAE,CAAA;AACK,MAAM8wC,kBAAqB,GAAA,CAChCryC,KACAmR,EAAAA,KAAAA,GAAAA;AAEA,IAAA,OAAO7K,eAAgB,CAAA,CAACC,KACtB+rC,GAAAA,yBAAAA,CAA0B/rC,OAAOvG,KAAOmR,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;AAE5C,CAAE,CAAA;AAEF;;;;IAKO,MAAMohC,kBAAAA,GAAqB,CAChChxC,MAAAA,GAAAA;AAEA,IAAA,IAAIA,WAAW0C,SAAW,EAAA;AACxB,QAAA,OAAQ1C,OAAOw7B,QAAQ;YACrB,KAAK,GAAA,CAAA;YACL,KAAK,IAAA;gBACH,OAAO;AACLwC,oBAAAA,IAAAA,EAAMh+B,OAAO2wC,OAAO;AACpBM,oBAAAA,MAAAA,EAAQjxC,OAAOw7B,QAAQ;AACzB,iBAAA,CAAA;YACF,KAAK,GAAA,CAAA;YACL,KAAK,IAAA;gBACH,OAAO;AACL0V,oBAAAA,EAAAA,EAAIlxC,OAAO2wC,OAAO;AAClBQ,oBAAAA,IAAAA,EAAMnxC,OAAOw7B,QAAQ;AACvB,iBAAA,CAAA;YACF,KAAK,KAAA;AAAO,gBAAA;AACV,oBAAA,MAAM9+B,CAAIs0C,GAAAA,kBAAAA,CAAsBhxC,MAAOyvC,CAAAA,QAAQ,CAAC,CAAE,CAAA,CAAA,CAAA;AAClD,oBAAA,MAAMj8B,CAAIw9B,GAAAA,kBAAAA,CAAsBhxC,MAAOyvC,CAAAA,QAAQ,CAAC,CAAE,CAAA,CAAA,CAAA;AAClD,oBAAA,OAAO/yC,KAAK8W,CAAI,GAAA;AAAE,wBAAA,GAAG9W,CAAC;AAAE,wBAAA,GAAG8W,CAAC;AAAC,qBAAA,GAAI9W,KAAK8W,CAAK9Q,IAAAA,SAAAA,CAAAA;AAC7C,iBAAA;AACA,YAAA;gBACE,OAAOA,SAAAA,CAAAA;AACX,SAAA;KACK,MAAA;QACL,OAAOA,SAAAA,CAAAA;AACT,KAAA;AACF,CAAE;;AC7MF;AACO,MAAM0uC,kBAAkB,CAAC3yC,KAAAA,GAAAA;AAC9B,IAAA,MAAM4jC,QAAWx9B,GAAAA,eAAAA,EAAAA,CAAAA;AAEjB,IAAA,OAAO,CAAC+K,KAAAA,GAAAA;AACNyyB,QAAAA,QAAAA,CAASgP,kBAAmB,CAAA;AAAE5yC,YAAAA,KAAAA;AAAOmR,YAAAA,KAAAA;AAAM,SAAA,CAAA,CAAA,CAAA;AAC7C,KAAA,CAAA;AACF,CAAE;;AClBK,MAAM0hC,eAAAA,GAAkBC,EAAGvoC,CAAAA,MAAM,CAAC;;;;;;;;;AASzC,CAAC,CAAC;AAEK,MAAMwoC,oBACX,yDAA0D,CAAA;AAErD,MAAMC,SAAAA,GAAYF,EAAGjzC,CAAAA,GAAG,CAAC;;AAEhC,CAAC,CAAC;AAEK,MAAMozC,WAAAA,GAAcH,EAAGjzC,CAAAA,GAAG,CAAC;;AAElC,CAAC;;ACbD,MAAMqzC,uBAAAA,GAA0B,CAAC,EAC/BptC,QAAQ,EACRwD,KAAK,EACLjM,SAAY,GAAA,uCAAuC,EACtB,GAAA;AAC7B,IAAA,MAAM,CAAC81C,WAAAA,EAAaC,cAAe,CAAA,GAAGhwC,QAAS,CAAA,KAAA,CAAA,CAAA;AAE/C,IAAA,qBACEtF,GAACuL,CAAAA,OAAAA,EAAAA;QACCC,KAAOA,EAAAA,KAAAA;AACPK,QAAAA,QAAAA,EAAU,CAACwpC,WAAAA;QACX5pC,QAAS,EAAA,WAAA;QACTqpB,MAAQ,EAAA,CAAA;QACRnpB,SAAS,EAAA,IAAA;QACTD,SAAS,EAAA,IAAA;QACT6pC,WAAa,EAAA,EAAA;QACb50C,UAAY,EAAA;YACV6J,OACE,EAAA,6FAAA;YACFC,KAAO,EAAA,2BAAA;AACT,SAAA;AAEA,QAAA,QAAA,gBAAAzK,GAAC+B,CAAAA,KAAAA,EAAAA;AACCxC,YAAAA,SAAAA,EAAW,CAAC,EAAEA,SAAU,CAAA,cAAc,CAAC;AACvCutB,YAAAA,GAAAA,EAAK,CAACnC,EAAAA,GAAAA;AACJ,gBAAA,IAAIA,EAAI,EAAA;AACN,oBAAA,IAAIA,EAAG6qB,CAAAA,WAAW,GAAG7qB,EAAAA,CAAGC,WAAW,EAAE;wBACnC0qB,cAAe,CAAA,IAAA,CAAA,CAAA;qBACV,MAAA;wBACLA,cAAe,CAAA,KAAA,CAAA,CAAA;AACjB,qBAAA;AACF,iBAAA;AACF,aAAA;AAECttC,YAAAA,QAAAA,EAAAA,QAAAA;;;AAIT,CAAA;;AC/CO,MAAMytC,wBAAwB,CAAE,CAAA;AAGhC,MAAMC,kBAAkB,CAAE,CAAA;AAC1B,MAAMC,kBAAkB,GAAI;;ACYnC,MAAMC,yBAAAA,GAA4B,CAChCC,oBAAAA,EACApH,UACAp7B,EAAAA,KAAAA,GAAAA;IAEA,IAAIwiC,oBAAAA,CAAqBpmC,IAAI,KAAK,OAAS,EAAA;AACzC,QAAA,OAAOomC,qBAAqBC,SAAS,KAAK,KACtC,GAAA,CAAC,IAAI,EAAEziC,KAAAA,CAAM,8CAA8C,CAAC,GAC5D,CAAC,IAAI,EAAEA,KAAAA,CAAM,+CAA+C,CAAC,CAAA;KAC5D,MAAA;QACL,OAAOwiC,oBAAAA,CAAqBC,SAAS,KAAK,KAAA,GACtC,CAAC,IAAI,EAAEziC,KAAM,CAAA,CAAC,EAAEo7B,UAAAA,CAAW,qCAAqC,CAAC,GACjE,CAAC,IAAI,EAAEp7B,MAAM,CAAC,EAAEo7B,UAAW,CAAA,sCAAsC,CAAC,CAAA;AACxE,KAAA;AACF,CAAA,CAAA;AAEA;;;;;;IAOA,MAAMsH,cAAgD,GAAA,CAAC,EACrDC,QAAQ,EACRvH,UAAU,EACVwH,OAAO,EACP5iC,KAAK,EACe,GAAA;AACpB,IAAA,MAAM6iC,gBAAgB1uC,MAAY,CAAA,IAAA,CAAA,CAAA;AAClC,IAAA,MAAM,CAAC2uC,aAAAA,EAAeC,gBAAiB,CAAA,GAAG9wC,QAAS,CAAA,EAAA,CAAA,CAAA;IACnDmC,SAAU,CAAA,IAAA;QACR,IAAI0uC,aAAAA,IAAiBD,eAAexuC,OAAS,EAAA;YAC3CwuC,aAAcxuC,CAAAA,OAAO,CAAC2uC,WAAW,GAAGF,aAAAA,CAAAA;AACtC,SAAA;KACC,EAAA;AAACA,QAAAA,aAAAA;AAAc,KAAA,CAAA,CAAA;IAElB,MAAM,CAACG,YAAcC,EAAAA,YAAAA,CAAa,GAChCP,QAAAA,CAASvmC,IAAI,KAAK,OACdumC,GAAAA,QAAAA,CAASF,SAAS,KAAK,KACrB,GAAA;AAACU,QAAAA,aAAAA;AAAa,QAAA,SAAA;KAAU,GACxB;AAACC,QAAAA,eAAAA;AAAa,QAAA,SAAA;KAAU,GAC1B;AAACC,QAAAA,iBAAAA;AAAU,QAAA,MAAA;AAAO,KAAA,CAAA;IAExB,MAAM,CAACC,aAAeC,EAAAA,aAAAA,CAAc,GAClCZ,QAAAA,CAASvmC,IAAI,KAAK,OACdumC,GAAAA,QAAAA,CAASF,SAAS,KAAK,KACrB,GAAA;AAACU,QAAAA,aAAAA;AAAa,QAAA,SAAA;KAAU,GACxB;AAACC,QAAAA,eAAAA;AAAa,QAAA,SAAA;KAAU,GAC1B;AAACC,QAAAA,iBAAAA;AAAU,QAAA,MAAA;AAAO,KAAA,CAAA;AAExB,IAAA,qBACEr2C,IAAC0B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAU,EAAA,gFAAA;;0BACbS,GAAC6P,CAAAA,MAAAA,EAAAA;gBACCtQ,SAAU,EAAA,8BAAA;gBACVwQ,OAAQ,EAAA,aAAA;gBACR/E,IAAK,EAAA,YAAA;gBACLY,KAAM,EAAA,iBAAA;gBACNG,OAAS,EAAA,IAAA;oBACP,MAAM+pC,SAAAA,GACJE,SAASvmC,IAAI,KAAK,WAAWumC,QAASF,CAAAA,SAAS,KAAK,KAAA,GAChD,KACA,GAAA,KAAA,CAAA;AACN,oBAAA,MAAMe,OAAoB,GAAA;wBACxBpnC,IAAM,EAAA,OAAA;AACNqmC,wBAAAA,SAAAA;AACF,qBAAA,CAAA;oBACAG,OAAQY,CAAAA,OAAAA,CAAAA,CAAAA;oBACRT,gBAAiBR,CAAAA,yBAAAA,CAA0BiB,SAAS,MAAQxjC,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;AAC9D,iBAAA;AACAylB,gBAAAA,YAAAA,gBAAc94B,GAACs2C,CAAAA,YAAAA,EAAAA;oBAAatrC,IAAMurC,EAAAA,YAAAA;oBAAcpa,aAAY,EAAA,MAAA;;gBAC5DvvB,YAAW,EAAA,0BAAA;AACZ,gBAAA,QAAA,EAAA,MAAA;;0BAGD5M,GAAC6P,CAAAA,MAAAA,EAAAA;gBACCtQ,SAAU,EAAA,WAAA;gBACVwQ,OAAQ,EAAA,aAAA;gBACR/E,IAAK,EAAA,YAAA;gBACLY,KAAM,EAAA,iBAAA;gBACNG,OAAS,EAAA,IAAA;oBACP,MAAM+pC,SAAAA,GACJE,SAASvmC,IAAI,KAAK,WAAWumC,QAASF,CAAAA,SAAS,KAAK,KAAA,GAChD,KACA,GAAA,KAAA,CAAA;AACN,oBAAA,MAAMe,OAAoB,GAAA;wBACxBpnC,IAAM,EAAA,OAAA;AACNqmC,wBAAAA,SAAAA;AACF,qBAAA,CAAA;oBACAG,OAAQY,CAAAA,OAAAA,CAAAA,CAAAA;oBACRT,gBACER,CAAAA,yBAAAA,CAA0BiB,SAASpI,UAAYp7B,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;AAEnD,iBAAA;AACAylB,gBAAAA,YAAAA,gBAAc94B,GAAC22C,CAAAA,aAAAA,EAAAA;oBAAc3rC,IAAM4rC,EAAAA,aAAAA;oBAAeza,aAAY,EAAA,MAAA;;AAC9DvvB,gBAAAA,YAAAA,EAAY,CAAC,KAAK,EAAE6hC,UAAAA,CAAW,YAAY,CAAC;AAE3CA,gBAAAA,QAAAA,EAAAA,UAAAA;;0BAGHzuC,GAACC,CAAAA,MAAAA,EAAAA;AACC2H,gBAAAA,EAAAA,EAAI,CAAC,EAAEyL,KAAM,CAAA,WAAW,CAAC;gBACzBgpB,WAAU,EAAA,QAAA;gBACVvP,GAAKopB,EAAAA,aAAAA;gBACL32C,SAAU,EAAA,SAAA;;;;AAIlB,CAAA;;ACrHO,MAAMu3C,aAAAA,GAAgB9B,EAAGjzC,CAAAA,GAAG,CAAC;;;;;;;AAOpC,CAAC,CAAC;AAQF;;;;;IAMA,MAAMg1C,gBAA8C,CAAC,EACEC,eAAe,EACfC,eAAe,EACfC,aAAa,EACM,GAAA;AACxE,IAAA,qBACEl3C,GAAC+B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAU,EAAA,iDAAA;kBACZy3C,eAAkB,GAAA,CAAA,IAAK,CAACC,eAAAA,iBACvBj3C,GAACyM,CAAAA,QAAAA,EAAAA;YACCV,OAAS,EAAA,IAAMmrC,cAAc,CAACD,eAAAA,CAAAA;YAC9Bpe,aAAY,EAAA,WAAA;AAEZ,YAAA,QAAA,gBAAAx4B,IAAC0B,CAAAA,KAAAA,EAAAA;gBAAIxC,SAAU,EAAA,yCAAA;;kCACbS,GAACm3C,CAAAA,WAAAA,EAAAA;wBACC53C,SAAU,EAAA,aAAA;wBAEVyL,IAAK,EAAA,OAAA;wBACLmxB,aAAY,EAAA,MAAA;AAFR,qBAAA,EAAA,WAAA,CAAA;kCAIN97B,IAACy2C,CAAAA,aAAAA,EAAAA;;AAAeE,4BAAAA,eAAAA;AAAgB,4BAAA,OAAA;;;;;AAGlCC,SAAAA,CAAAA,GAAAA,eAAAA,iBACFj3C,GAACyM,CAAAA,QAAAA,EAAAA;YACCV,OAAS,EAAA,IAAMmrC,cAAc,CAACD,eAAAA,CAAAA;YAC9Bpe,aAAY,EAAA,YAAA;AAEZ,YAAA,QAAA,gBAAAx4B,IAAC0B,CAAAA,KAAAA,EAAAA;gBAAIxC,SAAU,EAAA,wCAAA;;kCACbS,GAACo3C,CAAAA,cAAAA,EAAAA;wBACC73C,SAAU,EAAA,aAAA;wBAEVyL,IAAK,EAAA,OAAA;wBACLe,OAAS,EAAA,IAAMmrC,cAAc,CAACD,eAAAA,CAAAA;wBAC9B9a,aAAY,EAAA,MAAA;AAHR,qBAAA,EAAA,WAAA,CAAA;kCAKNn8B,GAAC82C,CAAAA,aAAAA,EAAAA;AAAc,wBAAA,QAAA,EAAA,WAAA;;;;AAGjB,SAAA,CAAA,GAAA,IAAA;;AAGV,CAAA;;ACzBA,MAAMO,SAAY,GAAA,CAAC,EACjBhkC,KAAK,EACLikC,SAAS,EACT7I,UAAU,EACV/rC,WAAW,EACX8wC,SAAS,EACT+D,WAAAA,GAAc,IAAI,EAClBC,WAAAA,GAAc,IAAI,EAClBC,UAAa,GAAA,IAAI,EACjBC,QAAAA,GAAW,KAAK,EAChBC,gBAAAA,GAAmB,IAAI,EACvBC,kBAAkBzxC,SAAS,EAC3B5D,KAAQ4D,GAAAA,SAAS,EACjBsH,MAAS,GAAA;IACPiV,KAAOyyB,EAAAA,WAAAA;IACP0C,KAAO3C,EAAAA,SAAAA;IACP4C,SAAW7C,EAAAA,iBAAAA;AACb,CAAC,EAC8B,GAAA;AAC/B,IAAA,MAAM,CAACgC,eAAAA,EAAiBc,kBAAmB,CAAA,GAAGzyC,QAAS,CAAA,KAAA,CAAA,CAAA;AACvD,IAAA,MAAM,CAACqxB,WAAAA,EAAaqhB,cAAe,CAAA,GAAG1yC,QAAS,CAAA,KAAA,CAAA,CAAA;AAC/C,IAAA,MAAM,CAACmzB,UAAAA,EAAYC,aAAc,CAAA,GAAGpzB,QAAS,CAAA,EAAA,CAAA,CAAA;AAC7C,IAAA,MAAM,CAAC2yC,UAAAA,EAAYC,aAAc,CAAA,GAAG5yC,SAClC,EAAC,CAAA,CAAA;AAEH,IAAA,MAAM,CAAC0wC,QAAAA,EAAUmC,WAAY,CAAA,GAAG7yC,QAAmB,CAAA;QACjDmK,IAAM,EAAA,OAAA;QACNqmC,SAAW,EAAA,KAAA;AACb,KAAA,CAAA,CAAA;AAEA,IAAA,MAAM,CAACsC,WAAAA,EAAaC,cAAe,CAAA,GAAG/yC,QAASqyC,CAAAA,gBAAAA,CAAAA,CAAAA;IAC/C,MAAM,EAAEj2B,IAAI,EAAE42B,WAAW,EAAE3jB,SAAS,EAAE,GAAG2iB,SAAUiB,CAAAA,eAAe,CAACllC,KAAAA,CAAAA,CAAAA;AAEnE,IAAA,MAAMmlC,UAAUhxC,MAAuB,CAAA,IAAA,CAAA,CAAA;AACvC,IAAA,MAAM,CAAC6mC,aAAeoK,EAAAA,gBAAAA,CAAiB,GAAGnzC,QAAAA,CAASgzC,eAAe,EAAE,CAAA,CAAA;AACpE,IAAA,MAAMI,iBAAiBlxC,MAAyB,CAAA,IAAA,CAAA,CAAA;AAChD,IAAA,MAAMmxC,UAAa,GAAA,IAAA,CAAA;;;IAGnB,MAAM1F,YAAAA,GAAeqE,UAAUsB,cAAc,EAAA,CAAA;IAC7C,MAAM5F,kBAAAA,GAAqBsE,UAAUuB,qBAAqB,EAAA,CAAA;IAE1DpxC,SAAU,CAAA,IAAA;AACR,QAAA,IAAIkvB,WAAa,EAAA;AACf+hB,YAAAA,cAAAA,EAAgBhxC,OAASoxC,EAAAA,KAAAA,EAAAA,CAAAA;AAC3B,SAAA;KACC,EAAA;AAACniB,QAAAA,WAAAA;AAAY,KAAA,CAAA,CAAA;IAEhBnxB,oBAAqB,CAAA,IAAA;AACnBizC,QAAAA,gBAAAA,CAAiBH,eAAe,EAAE,CAAA,CAAA;KACjC,EAAA;AAACA,QAAAA,WAAAA;AAAY,KAAA,CAAA,CAAA;AAEhB,IAAA,MAAMlK,kBAAqBqH,GAAAA,qBAAAA,CAAAA;;IAG3B,MAAMsD,YAAAA,GAAe,CAAC/0C,KAAekqB,EAAAA,OAAAA,GAAAA;QACnC8qB,iBAAkB,CAAA;AAChB,YAAA,GAAGC,cAAc;YACjBtkB,SAAW,EAAA,KAAA;AACb,SAAA,CAAA,CAAA;AACA,QAAA,IAAIzG,OAAS,EAAA;AACX,YAAA,MAAMgrB,UAAU7K,aAAgB,GAAA;AAAIA,gBAAAA,GAAAA,aAAAA;AAAerqC,gBAAAA,KAAAA;aAAM,GAAG;AAACA,gBAAAA,KAAAA;AAAM,aAAA,CAAA;YACnE+uC,eAAgB1/B,CAAAA,KAAAA,EAAO6lC,SAASlG,kBAAoBC,EAAAA,YAAAA,CAAAA,CAAAA;SAC/C,MAAA;AACL,YAAA,MAAMiG,OAAU7K,GAAAA,aAAAA,EAAe5qC,MAAO,CAAA,CAACC,IAAMA,CAAKM,IAAAA,KAAAA,CAAAA,CAAAA;AAClD+uC,YAAAA,eAAAA,CAAgB1/B,KAAO6lC,EAAAA,OAAAA,IAAW,EAAE,EAAElG,kBAAoBC,EAAAA,YAAAA,CAAAA,CAAAA;AAC5D,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAMkG,YAAe,GAAA,IAAA;AACnBnB,QAAAA,cAAAA,CAAe,CAACrhB,WAAAA,CAAAA,CAAAA;QAChB+B,aAAc,CAAA,EAAA,CAAA,CAAA;AAChB,KAAA,CAAA;AAEA,IAAA,MAAM0gB,UAAa,GAAA,IAAA;AACjBf,QAAAA,cAAAA,CAAe,CAACD,WAAAA,CAAAA,CAAAA;AAClB,KAAA,CAAA;AAEA,IAAA,MAAM,CAACa,cAAAA,EAAgBD,iBAAkB,CAAA,GAAG1zC,QAQzC,CAAA;AACD+zC,QAAAA,YAAAA,EAAc,EAAE;AAChBC,QAAAA,eAAAA,EAAiB,EAAC;QAClBtC,eAAiB,EAAA,CAAA;QACjBuC,qBAAuBnL,EAAAA,kBAAAA;QACvBzZ,SAAW,EAAA,KAAA;QACXnyB,MAAQ,EAAA,GAAA;QACRg3C,SAAW,EAAA,wBAAA;AACb,KAAA,CAAA,CAAA;IAEA,MAAMC,aAAAA,GAAgBle,uBACpB,CAACyb,eAAAA,GAAAA;AACC,QAAA,IAAIC,eAAiB,EAAA;AACnB,YAAA,MAAMyC,UACJ1C,GAAAA,eAAAA,GAAkB,EACd,GAAA,EAAA,GACAA,eAAkB,GAAA,CAAA,GAClBl+B,IAAK6gC,CAAAA,GAAG,CAAC,EAAA,EAAI3C,eAAkB,GAAA,CAAA,GAAI,EACnC,CAAA,GAAA,EAAA,CAAA;AACN,YAAA,OAAO,CAAC,aAAa,EAAE0C,UAAAA,CAAW,mBAAmB,CAAC,CAAA;SACjD,MAAA;YACL,OAAO,wBAAA,CAAA;AACT,SAAA;KAEF,EAAA;AAACzC,QAAAA,eAAAA;AAAgB,KAAA,CAAA,CAAA;IAGnB,MAAM2C,yBAAAA,GAA4Bre,uBAChC,CAACse,YAAAA,GAAAA;AACC,QAAA,MAAMC,iBAAoBxB,GAAAA,WAAAA,GAAcA,WAAYn2C,CAAAA,MAAM,GAAG03C,YAAAA,CAAAA;QAC7D,OAAO5C,eAAAA,GACHn+B,KAAK6gC,GAAG,CAAC,IAAIG,iBACbhhC,CAAAA,GAAAA,IAAAA,CAAK6gC,GAAG,CAACvL,kBAAoB0L,EAAAA,iBAAAA,CAAAA,CAAAA;KAEnC,EAAA;AAAC7C,QAAAA,eAAAA;AAAiBqB,QAAAA,WAAAA;AAAalK,QAAAA,kBAAAA;AAAmB,KAAA,CAAA,CAAA;IAGpD5oC,oBAAqB,CAAA,IAAA;AACnB,QAAA,IAAImvB,aAAajT,IAAM,EAAA;;AAErB,YAAA,MAAMq4B,mBAAmB94C,MAAO8R,CAAAA,OAAO,CAAC2O,IAAAA,CAAAA,CACrCje,MAAM,CAAC,CAACogB,KAAUA,GAAAA,KAAK,CAAC,CAAE,CAAA,IAAI,UAAcA,IAAAA,KAAK,CAAC,CAAE,CAAA,IAAI,EACxDpgB,CAAAA,CAAAA,MAAM,CAAC,CAACogB,KAAAA,GACP4U,UAAe,KAAA,EAAA,GACX5U,QACAA,KAAK,CAAC,CAAE,CAAA,CAACm2B,WAAW,EAAGz/B,CAAAA,QAAQ,CAACke,UAAWuhB,CAAAA,WAAW,GAAGC,IAAI,EAAA,CAAA,CAAA,CAAA;;;AAKrE,YAAA,MAAMC,wBAAwB7L,aAC1BA,GAAAA,aAAAA,CAAcnhC,MAAM,CAAC,CAACC,GAAK0lC,EAAAA,IAAAA,GAAAA;gBACzB,IAAI,CAACkH,gBAAiBzoC,CAAAA,IAAI,CAAC,CAAC5N,IAAMA,CAAC,CAAC,CAAE,CAAA,KAAKmvC,IAAO,CAAA,EAAA;AAChD1lC,oBAAAA,GAAAA,CAAIxG,IAAI,CAAC;AAACksC,wBAAAA,IAAAA;AAAM,wBAAA,CAAA;AAAE,qBAAA,CAAA,CAAA;AACpB,iBAAA;gBACA,OAAO1lC,GAAAA,CAAAA;aACN,EAAA,EAAE,IACL,EAAE,CAAA;AAEN,YAAA,MAAM6pC,kBACJ+C,gBAAiB53C,CAAAA,MAAM,GACvB+3C,qBAAAA,CAAsB/3C,MAAM,GAC5BisC,kBAAAA,CAAAA;AACF,YAAA,MAAMoL,YAAYC,aAAczC,CAAAA,eAAAA,CAAAA,CAAAA;AAChC,YAAA,MAAMuC,wBAAwBK,yBAC5BG,CAAAA,gBAAAA,CAAiB53C,MAAM,GAAG+3C,sBAAsB/3C,MAAM,CAAA,CAAA;YAGxD62C,iBAAkB,CAAA,CAACmB,sBAAwB;AACzC,oBAAA,GAAGA,kBAAkB;oBACrBd,YAAc,EAAA;AAAIU,wBAAAA,GAAAA,gBAAAA;AAAqBG,wBAAAA,GAAAA,qBAAAA;AAAsB,qBAAA;oBAC7DZ,eAAiBr4C,EAAAA,MAAAA,CAAOm5C,WAAW,CAAC;AAC/BL,wBAAAA,GAAAA,gBAAAA;AACAG,wBAAAA,GAAAA,qBAAAA;AACJ,qBAAA,CAAA;AACDlD,oBAAAA,eAAAA;AACAuC,oBAAAA,qBAAAA;oBACA5kB,SAAW,EAAA,IAAA;oBACXnyB,MACE+2C,EAAAA,qBAAAA,IAAyB,CACrB,GAAA,GAAA,GACAA,qBAAyB,IAAA,CAAA,GACzB,MACAA,qBAAyB,IAAA,CAAA,GACzB,GACAA,GAAAA,qBAAAA,GAAwB,EAAK,GAAA,EAAA;oBACnCC,SAAWA,EAAAA,SAAAA;iBACb,CAAA,CAAA,CAAA;SACK,MAAA;YACLR,iBAAkB,CAAA,CAACmB,sBAAwB;AACzC,oBAAA,GAAGA,kBAAkB;AACrBb,oBAAAA,eAAAA,EAAiB,EAAC;oBAClB3kB,SAAW,EAAA,KAAA;iBACb,CAAA,CAAA,CAAA;AACF,SAAA;KACC,EAAA;AACDjT,QAAAA,IAAAA;AACAiT,QAAAA,SAAAA;AACAyZ,QAAAA,kBAAAA;AACA3V,QAAAA,UAAAA;AACAghB,QAAAA,aAAAA;AACAG,QAAAA,yBAAAA;AACAvL,QAAAA,aAAAA;AACD,KAAA,CAAA,CAAA;IAED7oC,oBAAqB,CAAA,IAAA;QACnB,IAAIyzC,cAAAA,CAAeI,YAAY,IAAIJ,cAAAA,CAAeI,YAAY,CAACl3C,MAAM,GAAG,CAAG,EAAA;YACzE,MAAMk4C,sBAAAA,GAAyB,CAC7B,GAAGl6C,CAAAA,CAA6B,EAChC,GAAG8W,CAAAA,CAA6B,GACrB9W,CAAI8W,GAAAA,CAAAA,CAAAA;YACjB,MAAMqjC,uBAAAA,GAA0B,CAC9B,GAAGn6C,CAAAA,CAA6B,EAChC,GAAG8W,CAAAA,CAA6B,GACrBA,CAAI9W,GAAAA,CAAAA,CAAAA;YACjB,MAAMo6C,oBAAAA,GAAuB,CAC3B,CAACp6C,CAA6B,CAAA,EAC9B,CAAC8W,CAA6B,CAAA,GAE9B,OAAO9W,CAAAA,KAAM,QAAY,IAAA,OAAO8W,MAAM,QAClC9W,GAAAA,CAAAA,CAAEq6C,aAAa,CAACvjC,CAChB,CAAA,GAAA,OAAO9W,CAAM,KAAA,QAAA,IAAY,OAAO8W,CAAAA,KAAM,QACtC9W,GAAAA,CAAAA,GAAI8W,CACJ,GAAA,CAAA,CAAA;YAEN,MAAMwjC,qBAAAA,GAAwB,CAC5B,CAACt6C,CAA6B,CAAA,EAC9B,CAAC8W,CAA6B,CAAA,GAE9B,OAAO9W,CAAAA,KAAM,QAAY,IAAA,OAAO8W,MAAM,QAClCA,GAAAA,CAAAA,CAAEujC,aAAa,CAACr6C,CAChB,CAAA,GAAA,OAAOA,CAAM,KAAA,QAAA,IAAY,OAAO8W,CAAAA,KAAM,QACtCA,GAAAA,CAAAA,GAAI9W,CACJ,GAAA,CAAA,CAAA;YAEN,IAAIu6C,YAAAA,CAAAA;YAEJ,IAAI1E,QAAAA,CAASvmC,IAAI,KAAK,OAAS,EAAA;AAC7BirC,gBAAAA,YAAAA,GACE1E,QAASF,CAAAA,SAAS,KAAK,KAAA,GACnBwE,uBACAD,GAAAA,sBAAAA,CAAAA;aACD,MAAA;AACLK,gBAAAA,YAAAA,GACE1E,QAASF,CAAAA,SAAS,KAAK,KAAA,GACnB2E,qBACAF,GAAAA,oBAAAA,CAAAA;AACR,aAAA;AAEA,YAAA,MAAMxlC,GAAM,GAAA;AAAIkkC,gBAAAA,GAAAA,cAAAA,CAAeI,YAAY;AAAC,aAAA,CACzCsB,IAAI,CAACD,YAAAA,CAAAA,CACLnhC,KAAK,CAAC,GAAG,CAAC09B,eAAAA,GAAkB7I,kBAAqBjoC,GAAAA,SAAAA,CAAAA,CACjD+G,MAAM,CAAC,CAACC,GAAK,EAAA,CAACzM,KAAKsD,KAAM,CAAA,GAAA;gBACxBmJ,GAAG,CAACzM,IAAI,GAAGsD,KAAAA,CAAAA;gBACX,OAAOmJ,GAAAA,CAAAA;AACT,aAAA,EAAG,EAAC,CAAA,CAAA;YAEMlM,MAAOm5C,CAAAA,WAAW,CAC5B;AAAInB,gBAAAA,GAAAA,cAAAA,CAAeI,YAAY;aAAC,CAC7BsB,IAAI,CAACD,YACLnhC,CAAAA,CAAAA,KAAK,CAAC,CAAG,EAAA,CAAC09B,kBAAkB7I,kBAAqBjoC,GAAAA,SAAAA,CAAAA,EAAAA;YAGtD+xC,aAAcnjC,CAAAA,GAAAA,CAAAA,CAAAA;AAChB,SAAA;KACC,EAAA;AACDkkC,QAAAA,cAAAA,CAAeI,YAAY;AAC3BrD,QAAAA,QAAAA;AACAiB,QAAAA,eAAAA;AACA7I,QAAAA,kBAAAA;AACD,KAAA,CAAA,CAAA;AAED,IAAA,IAAI6K,eAAeI,YAAY,CAACl3C,MAAM,IAAI,KAAKq1C,WAAa,EAAA;AAC1D,QAAA,OAAO;AACT,KAAA;AAEA,IAAA,qBACEn3C,IAAC0B,CAAAA,KAAAA,EAAAA;AACCxC,QAAAA,SAAAA,EAAW,CAAC,cAAc,EACxBgD,QAAQA,KAAQ,GAAA,MAAA,CACjB,4FAA4F,CAAC;QAC9FqF,EAAIyL,EAAAA,KAAAA;;0BAEJrT,GAAC+B,CAAAA,KAAAA,EAAAA;wCACC1B,IAAA,CAACoN,OAAOiV,KAAK,EAAA;;sCACX1iB,GAACuL,CAAAA,OAAAA,EAAAA;4BACCC,KAAO9I,EAAAA,WAAAA;4BACP+I,QAAS,EAAA,cAAA;4BACTE,SAAS,EAAA,IAAA;4BACT2C,CAAG,EAAA,GAAA;4BACH5C,SAAS,EAAA,IAAA;AACTG,4BAAAA,QAAAA,EAAU,CAACnJ,WAAAA;oDAEX1C,GAAA,CAACyN,OAAOoqC,KAAK,EAAA;AACVrE,gCAAAA,QAAAA,EAAAA,SAAAA,GAAYA,YAAYzF,gBAAiB16B,CAAAA,KAAAA,CAAAA;;;sCAG9ChT,IAAC0B,CAAAA,KAAAA,EAAAA;4BAAIxC,SAAU,EAAA,eAAA;;AACZk4C,gCAAAA,UAAAA,iBACCz3C,GAAC+0C,CAAAA,eAAAA,EAAAA;oCAAgBhpC,OAASotC,EAAAA,YAAAA;oCAAcvsC,YAAW,EAAA,QAAA;AACjD,oCAAA,QAAA,gBAAA5M,GAAC44B,CAAAA,QAAAA,EAAAA;wCAAW5tB,IAAK,EAAA,QAAA;AAASzL,wCAAAA,SAAAA,EAAWkO,OAAOqqC,SAAS;;AAErD,iCAAA,CAAA,GAAA,IAAA;AACHJ,gCAAAA,QAAAA,iBACC13C,GAAC+0C,CAAAA,eAAAA,EAAAA;oCACChpC,OAASqtC,EAAAA,UAAAA;oCACTxsC,YAAW,EAAA,6BAAA;AAEX,oCAAA,QAAA,gBAAA5M,GAAC46C,CAAAA,MAAAA,EAAAA;wCAAS5vC,IAAK,EAAA,QAAA;AAASzL,wCAAAA,SAAAA,EAAWkO,OAAOqqC,SAAS;;AAEnD,iCAAA,CAAA,GAAA,IAAA;8CACJ93C,GAAC+0C,CAAAA,eAAAA,EAAAA;AACChpC,oCAAAA,OAAAA,EAAS,IAAMknC,YAAa5/B,CAAAA,KAAAA,CAAAA;oCAC5BzG,YAAW,EAAA,iBAAA;AAEX,oCAAA,QAAA,gBAAA5M,GAACivB,CAAAA,MAAAA,EAAAA;wCAASjkB,IAAK,EAAA,QAAA;AAASzL,wCAAAA,SAAAA,EAAWkO,OAAOqqC,SAAS;;;AAEpDF,gCAAAA,eAAAA,iBACC53C,GAAC+0C,CAAAA,eAAAA,EAAAA;oCACChpC,OAAS,EAAA,IAAA;wCACPknC,YAAa5/B,CAAAA,KAAAA,CAAAA,CAAAA;wCACbukC,eAAgBvkC,CAAAA,KAAAA,CAAAA,CAAAA;AAClB,qCAAA;oCACAzG,YAAW,EAAA,kBAAA;AAEX,oCAAA,QAAA,gBAAA5M,GAAC+4B,CAAAA,OAAAA,EAAAA;wCAAU/tB,IAAK,EAAA,QAAA;AAASzL,wCAAAA,SAAAA,EAAWkO,OAAOqqC,SAAS;;AAEpD,iCAAA,CAAA,GAAA,IAAA;;;;;;0BAIVz3C,IAAC0B,CAAAA,KAAAA,EAAAA;gBAAIxC,SAAU,EAAA,QAAA;;AACZo3B,oBAAAA,WAAAA,kBACC32B,GAACg8B,CAAAA,SAAAA,EAAAA;wBACCh4B,KAAOy0B,EAAAA,UAAAA;AACPtK,wBAAAA,QAAAA,EAAU,CAAC3kB,CAAMkvB,GAAAA,aAAAA,CAAclvB,CAAEpJ,CAAAA,MAAM,CAAC4D,KAAK,CAAA;wBAC7C4I,YAAY,EAAA,eAAA;wBACZkgB,GAAK4rB,EAAAA,cAAAA;wBACLn5C,SAAU,EAAA,KAAA;AACVu5B,wBAAAA,YAAAA,EACEL,UAAWt2B,CAAAA,MAAM,GAAG,CAAA,iBAClBnC,GAAC66C,CAAAA,UAAAA,EAAAA;4BACC9uC,OAAS,EAAA,IAAA;gCACP2sB,aAAc,CAAA,EAAA,CAAA,CAAA;AACdggB,gCAAAA,cAAAA,CAAehxC,OAAO,EAAEoxC,KAAAA,EAAAA,CAAAA;AAC1B,6BAAA;4BACAlsC,YAAY,EAAA,cAAA;AAEZ,4BAAA,QAAA,gBAAA5M,GAAC+4B,CAAAA,OAAAA,EAAAA,EAAAA,CAAAA;AAED5yB,yBAAAA,CAAAA,GAAAA,SAAAA;;kCAIV9F,IAAC0B,CAAAA,KAAAA,EAAAA;AACCxC,wBAAAA,SAAAA,EACE64C,cACI,mBACA,GAAA,oCAAA;wBAENtrB,GAAK0rB,EAAAA,OAAAA;;0CAELn4C,IAAC0B,CAAAA,KAAAA,EAAAA;AACCxC,gCAAAA,SAAAA,EAAW,CAAC,iEAAiE,EAC3E,CAAC64C,WAAc,GAAA,WAAA,GAAc,GAC9B,CAAC;;kDAEF/3C,IAAC0B,CAAAA,KAAAA,EAAAA;;0DACC/B,GAAC+1C,CAAAA,cAAAA,EAAAA;gDACCC,QAAUA,EAAAA,QAAAA;gDACVvH,UAAYA,EAAAA,UAAAA;gDACZwH,OAASkC,EAAAA,WAAAA;gDACT9kC,KAAOmgC,EAAAA,SAAAA,GAAYA,YAAYzF,gBAAiB16B,CAAAA,KAAAA,CAAAA;;0DAGlDhT,IAAC0B,CAAAA,KAAAA,EAAAA;AACCxC,gDAAAA,SAAAA,EAAW05C,eAAeO,SAAS;gDACnC3sC,IAAK,EAAA,OAAA;gDACLD,YAAW,EAAA,eAAA;;kEAEX5M,GAACoqB,CAAAA,cAAAA,EAAAA;AACCC,wDAAAA,OAAAA,EAAS,CAACsK,SAAAA;wDACVkE,aAAY,EAAA,iBAAA;;AAEbogB,oDAAAA,cAAAA,CAAeI,YAAY,CAACl3C,MAAM,IAAI,kBACrCnC,GAAC+B,CAAAA,KAAAA,EAAAA;wDAAIxC,SAAU,EAAA,mBAAA;AAAoB,wDAAA,QAAA,EAAA,wBAAA;yDAGjCo1B,SACF,GAAA,CAACsjB,cAAch3C,MAAO8R,CAAAA,OAAO,CAACklC,UAAY91C,CAAAA,CAAAA,MAAM,KAAK,CAAA,iBACnDnC,GAAC+B,CAAAA,KAAAA,EAAAA;wDAAIxC,SAAU,EAAA,MAAA;AAAO,wDAAA,QAAA,EAAA,kBAAA;yDAEtB0B,MAAO8R,CAAAA,OAAO,CAACklC,UAAAA,IAAc,EAAC,CAAA,CAAGj2C,GAAG,CAAC,CAAC,CAACgC,KAAAA,EAAOinC,KAAM,CAAA,GAAA;AAClD,wDAAA,qBACE5qC,IAAC0B,CAAAA,KAAAA,EAAAA;4DAECxC,SAAU,EAAA,0CAAA;;8EAEVS,GAAC+B,CAAAA,KAAAA,EAAAA;oEAAIxC,SAAU,EAAA,WAAA;AACb,oEAAA,QAAA,gBAAAS,GAACiuB,CAAAA,QAAAA,EAAAA;AACC4K,wEAAAA,aAAAA,EAAa,CAAC,SAAS,EAAE70B,KAAAA,CAAM,CAAC;wEAChCA,KAAOA,EAAAA,KAAAA;wEACPgH,IAAK,EAAA,IAAA;wEACLY,KAAM,EAAA,QAAA;wEACNuiB,QAAU,EAAA,CAAC3kB,CACTuvC,GAAAA,YAAAA,CACEvvC,CAAEsxC,CAAAA,aAAa,CAAC92C,KAAK,EACrBwF,CAAAA,CAAEsxC,aAAa,CAAC5sB,OAAO,CAAA;wEAG3BthB,YAAY,EAAA,CAAC,EAAE5I,KAAAA,CAAM,CAAC;wEACtBrD,UAAY,EAAA;4EACVw2B,KAAO,EAAA,gCAAA;AACT,yEAAA;wEACAjJ,OACEmgB,EAAAA,aAAAA,IAAiBA,aAAc9zB,CAAAA,QAAQ,CAACvW,KAAAA,CAAAA;;;8EAI9ChE,GAACo1C,CAAAA,uBAAAA,EAAAA;oEAAwB5pC,KAAOxH,EAAAA,KAAAA;AAC9B,oEAAA,QAAA,gBAAAhE,GAACC,CAAAA,MAAAA,EAAAA;wEAAKV,SAAU,EAAA,cAAA;AAAgByE,wEAAAA,QAAAA,EAAAA,KAAAA;;;8EAElChE,GAAC+B,CAAAA,KAAAA,EAAAA;oEAAIxC,SAAU,EAAA,wCAAA;AACZ0rC,oEAAAA,QAAAA,EAAAA,KAAAA,CAAM/xB,cAAc,EAAA;;AAEtBq+B,gEAAAA,WAAAA,iBACCl3C,IAAC0B,CAAAA,KAAAA,EAAAA;oEAAIxC,SAAU,EAAA,wCAAA;;AAAyC,wEAAA,GAAA;AAEpD,wEAAA,CAAA,KAAqBo5C,GAAAA,UAAAA,GAAc,GAAE,EAAGoC,OAAO,CAC/C,CAAA,CAAA;AACA,wEAAA,IAAA;;AAGF,iEAAA,CAAA,GAAA,IAAA;;AAtCC,yDAAA,EAAA,CAAC,EAAE1nC,KAAAA,CAAM,CAAC,EAAErP,MAAM,CAAC,CAAA,CAAA;AAyC9B,qDAAA,CAAA,iBAGFhE,GAAC+B,CAAAA,KAAAA,EAAAA;AAGGkT,wDAAAA,QAAAA;AAAAA,wDAAAA,KAAAA,CAAMwsB,IAAI,CAACxsB,KAAAA,CAAMm5B,qBAAqBpsC,GAAG,CAAC,CAACse,CAAGpe,EAAAA,KAAAA,GAAAA;AAC5C,4DAAA,qBACE7B,IAAC0B,CAAAA,KAAAA,EAAAA;gEAECxC,SAAU,EAAA,iCAAA;;kFAEVS,GAAC+B,CAAAA,KAAAA,EAAAA;wEAAIxC,SAAU,EAAA,WAAA;AACb,wEAAA,QAAA,gBAAAS,GAACiuB,CAAAA,QAAAA,EAAAA;4EACCjjB,IAAK,EAAA,IAAA;4EACLzL,SAAU,EAAA,wGAAA;;;kFAGdS,GAAC+B,CAAAA,KAAAA,EAAAA;wEAAIxC,SAAU,EAAA,qGAAA;;kFACfS,GAAC+B,CAAAA,KAAAA,EAAAA;wEAAIxC,SAAU,EAAA,gGAAA;;;AAVV,6DAAA,EAAA,CAAC,EAAE8T,KAAAA,CAAM,CAAC,EAAEnR,MAAM,CAAC,CAAA,CAAA;AAa9B,yDAAA,CAAA;;;;;;kDAORlC,GAAC+2C,CAAAA,aAAAA,EAAAA;AACCC,wCAAAA,eAAAA,EAAiBiC,eAAejC,eAAe;wCAC/CC,eAAiBA,EAAAA,eAAAA;wCACjBC,aAAea,EAAAA,kBAAAA;;;;0CAIrB/3C,GAAC+B,CAAAA,KAAAA,EAAAA;AACCxC,gCAAAA,SAAAA,EAAW,CAAC,yDAAyD,EACnE64C,WAAc,GAAA,WAAA,GAAc,GAC7B,CAAC;AAEDa,gCAAAA,QAAAA,EAAAA,cAAAA,CAAeI,YAAY,CAACl3C,MAAM,KAAK,kBACtCnC,GAAC+B,CAAAA,KAAAA,EAAAA;oCAAIxC,SAAU,EAAA,MAAA;AAAO,oCAAA,QAAA,EAAA,kBAAA;AAEtB,iCAAA,CAAA,GAAA,CAAC64C,6BACCp4C,GAACuuC,CAAAA,cAAAA,EAAAA;oCACCl7B,KAAOA,EAAAA,KAAAA;AACPqO,oCAAAA,IAAAA,EAAMu3B,eAAeK,eAAe;oCACpCjL,aAAeA,EAAAA,aAAAA;AACf1Z,oCAAAA,SAAAA,EAAWskB,eAAetkB,SAAS;oCACnC6Z,SAAW,EAAA,KAAA;oCACXC,UAAYA,EAAAA,UAAAA;AACZzD,oCAAAA,OAAAA,EAASiO,eAAeM,qBAAqB;AAC7C/2C,oCAAAA,MAAAA,EAAQy2C,eAAez2C,MAAM;;;;;;;;;AAS/C,CAAA;;ACnfA,MAAMw4C,YAAe,GAAA,CACnB3nC,KACA4nC,EAAAA,KAAAA,EACAC,SACkB;QAClBjc,QAAU,EAAA,KAAA;QACViU,QAAU,EAAA;AACR,YAAA;AACE7/B,gBAAAA,KAAAA;gBACA4rB,QAAU,EAAA,IAAA;gBACVmV,OAAS6G,EAAAA,KAAAA;AACX,aAAA;AACA,YAAA;AACE5nC,gBAAAA,KAAAA;gBACA4rB,QAAU,EAAA,IAAA;gBACVmV,OAAS8G,EAAAA,KAAAA;AACX,aAAA;AACD,SAAA;KACH,CAAA,CAAA;AAaA,MAAMC,aAAa,CAAC,EAClB9nC,KAAK,EACLikC,SAAS,EACT7I,UAAU,EACV/rC,WAAW,EACX8wC,SAAS,EACTG,OAAAA,GAAU+B,eAAe,EACzB9B,OAAAA,GAAU+B,eAAe,EACzB4B,WAAAA,GAAc,IAAI,EAClBC,cAAc,IAAI,EAClBC,aAAa,IAAI,EACjBC,WAAW,IAAI,EACfC,gBAAmB,GAAA,IAAI,EACvBC,eAAkBzxC,GAAAA,SAAS,EAC3B5D,KAAQ4D,GAAAA,SAAS,EACjBsH,MAAS,GAAA;IACPiV,KAAOyyB,EAAAA,WAAAA;IACP0C,KAAO3C,EAAAA,SAAAA;IACP4C,SAAW7C,EAAAA,iBAAAA;AACb,CAAC,EACmB,GAAA;IACpB,MAAM,EAAEvzB,IAAI,EAAE05B,YAAY,EAAEzmB,SAAS,EAAE,GAAG2iB,SAAUiB,CAAAA,eAAe,CAACllC,KAAAA,CAAAA,CAAAA;AACpE,IAAA,MAAM,CAACgoC,WAAaC,EAAAA,cAAAA,CAAe,GAAGn4C,cAAAA,CAAMmC,QAAQ,CAElD;QACAm8B,IAAMkS,EAAAA,OAAAA;QACNgB,EAAIf,EAAAA,OAAAA;AACN,KAAA,CAAA,CAAA;IAEA,MAAM2H,0BAAAA,GAA6BjE,UAAUsB,cAAc,EAAA,CAAA;AAC3D,IAAA,MAAM3F,eAAe7pC,WAAY,CAAA,IAAA;QAC/BkyC,cAAe,CAAA;YACb7Z,IAAMkS,EAAAA,OAAAA;YACNgB,EAAIf,EAAAA,OAAAA;AACN,SAAA,CAAA,CAAA;QACA2H,0BAA2BloC,CAAAA,KAAAA,CAAAA,CAAAA;KAC1B,EAAA;AAACkoC,QAAAA,0BAAAA;AAA4BloC,QAAAA,KAAAA;AAAOugC,QAAAA,OAAAA;AAASD,QAAAA,OAAAA;AAAQ,KAAA,CAAA,CAAA;IAExD,MAAM6H,iBAAAA,GAAoBlE,UAAUuB,qBAAqB,EAAA,CAAA;IACzD,MAAM4C,aAAAA,GAAgBryC,WACpB,CAAA,CAACq4B,IAAckT,EAAAA,EAAAA,GAAAA;QACb6G,iBAAkBnoC,CAAAA,KAAAA,EAAO2nC,YAAa3nC,CAAAA,KAAAA,EAAOouB,IAAMkT,EAAAA,EAAAA,CAAAA,CAAAA,CAAAA;QACnD2G,cAAe,CAAA;YACb7Z,IAAMA,EAAAA,IAAAA;YACNkT,EAAIA,EAAAA,EAAAA;AACN,SAAA,CAAA,CAAA;KAEF,EAAA;AAACthC,QAAAA,KAAAA;AAAOmoC,QAAAA,iBAAAA;AAAkB,KAAA,CAAA,CAAA;AAG5B,IAAA,qBACEn7C,IAAC0B,CAAAA,KAAAA,EAAAA;AACCxC,QAAAA,SAAAA,EAAW,CAAC,cAAc,EACxBgD,QAAQA,KAAQ,GAAA,MAAA,CACjB,4FAA4F,CAAC;QAC9FqF,EAAIyL,EAAAA,KAAAA;;0BAEJrT,GAAC+B,CAAAA,KAAAA,EAAAA;wCACC1B,IAAA,CAACoN,OAAOiV,KAAK,EAAA;;sCACX1iB,GAACuL,CAAAA,OAAAA,EAAAA;4BACCC,KAAO9I,EAAAA,WAAAA;4BACP+I,QAAS,EAAA,cAAA;4BACTE,SAAS,EAAA,IAAA;4BACT2C,CAAG,EAAA,GAAA;4BACH5C,SAAS,EAAA,IAAA;AACTG,4BAAAA,QAAAA,EAAU,CAACnJ,WAAAA;oDAEX1C,GAAA,CAACyN,OAAOoqC,KAAK,EAAA;AACVrE,gCAAAA,QAAAA,EAAAA,SAAAA,GAAYA,YAAYzF,gBAAiB16B,CAAAA,KAAAA,CAAAA;;;sCAG9ChT,IAAC0B,CAAAA,KAAAA,EAAAA;4BAAIxC,SAAU,EAAA,eAAA;;8CACbS,GAAC+0C,CAAAA,eAAAA,EAAAA;AACChpC,oCAAAA,OAAAA,EAAS,IAAMknC,YAAAA,EAAAA;oCACfrmC,YAAW,EAAA,iBAAA;AAEX,oCAAA,QAAA,gBAAA5M,GAACivB,CAAAA,MAAAA,EAAAA;wCAASjkB,IAAK,EAAA,QAAA;AAASzL,wCAAAA,SAAAA,EAAWkO,OAAOqqC,SAAS;;;AAEpDF,gCAAAA,eAAAA,iBACC53C,GAAC+0C,CAAAA,eAAAA,EAAAA;oCACChpC,OAAS,EAAA,IAAA;AACPknC,wCAAAA,YAAAA,EAAAA,CAAAA;wCACA2E,eAAgBvkC,CAAAA,KAAAA,CAAAA,CAAAA;AAClB,qCAAA;oCACAzG,YAAW,EAAA,kBAAA;AAEX,oCAAA,QAAA,gBAAA5M,GAAC+4B,CAAAA,OAAAA,EAAAA;wCAAU/tB,IAAK,EAAA,QAAA;AAASzL,wCAAAA,SAAAA,EAAWkO,OAAOqqC,SAAS;;AAEpD,iCAAA,CAAA,GAAA,IAAA;;;;;;0BAIV93C,GAAC+B,CAAAA,KAAAA,EAAAA;gBAAIxC,SAAU,EAAA,uBAAA;AACb,gBAAA,QAAA,gBAAAc,IAAC0B,CAAAA,KAAAA,EAAAA;oBAAIxC,SAAU,EAAA,+BAAA;;sCACbS,GAACoqB,CAAAA,cAAAA,EAAAA;AAAeC,4BAAAA,OAAAA,EAAS,CAACsK,SAAAA;;sCAC1Bt0B,IAAC0B,CAAAA,KAAAA,EAAAA;4BAAIxC,SAAU,EAAA,4BAAA;;8CACbc,IAAC0B,CAAAA,KAAAA,EAAAA;oCAAIxC,SAAU,EAAA,2BAAA;;sDACbS,GAAC07C,CAAAA,WAAAA,EAAAA;4CACClwC,KAAM,EAAA,KAAA;4CACNgtB,WAAY,EAAA,KAAA;4CACZxtB,IAAK,EAAA,IAAA;AACLhH,4CAAAA,KAAAA,EAAOo3C,YAAeA,GAAAA,YAAAA,CAAa3Z,IAAI,GAAG4Z,YAAY5Z,IAAI;AAC1DtT,4CAAAA,QAAAA,EAAU,CAACnqB,KAAAA,GAAAA;AACTy3C,gDAAAA,aAAAA,CACEz3C,UAAU,EAAK2vC,GAAAA,OAAAA,GAAU3vC,KACzBq3C,EAAAA,WAAAA,CAAY1G,EAAE,IAAIgB,eAAAA,CAAAA,CAAAA;AAEtB,6CAAA;;sDAEF31C,GAACkP,CAAAA,IAAAA,EAAAA;4CAAKlE,IAAK,EAAA,IAAA;4CAAKzL,SAAU,EAAA,MAAA;AAAO,4CAAA,QAAA,EAAA,GAAA;;sDAGjCS,GAAC07C,CAAAA,WAAAA,EAAAA;4CACClwC,KAAM,EAAA,KAAA;4CACNgtB,WAAY,EAAA,KAAA;4CACZxtB,IAAK,EAAA,IAAA;AACLhH,4CAAAA,KAAAA,EAAOo3C,YAAeA,GAAAA,YAAAA,CAAazG,EAAE,GAAG0G,YAAY1G,EAAE;AACtDxmB,4CAAAA,QAAAA,EAAU,CAACnqB,KAAAA,GAAAA;AACTy3C,gDAAAA,aAAAA,CACEJ,YAAY5Z,IAAI,IAAIkS,OACpB3vC,EAAAA,KAAAA,GAAQ4W,OAAO5W,KAAS4vC,CAAAA,GAAAA,OAAAA,CAAAA,CAAAA;AAE5B,6CAAA;;sDAEF5zC,GAAC+B,CAAAA,KAAAA,EAAAA;4CAAIxC,SAAU,EAAA,uBAAA;AACZo1B,4CAAAA,QAAAA,EAAAA,SAAAA,IAAajT,IAAQzgB,IAAAA,MAAAA,CAAO0sB,MAAM,CAACjM,MAAMvf,MAAM,GAAG,CAC/ClB,GAAAA,MAAAA,CAAO0sB,MAAM,CAACjM,IAAK,CAAA,CAAC,EAAE,GACtB,KAAA;;;;8CAIR1hB,GAAC27C,CAAAA,WAAAA,EAAAA;oCACCzb,EAAG,EAAA,IAAA;oCACHt0B,KAAM,EAAA,MAAA;oCACNgwC,SAAW,EAAA,EAAA;oCACX53C,KAAO,EAAA;AAACq3C,wCAAAA,WAAAA,CAAY5Z,IAAI,IAAIkS,OAAAA;AAAS0H,wCAAAA,WAAAA,CAAY1G,EAAE,IAAIf,OAAAA;AAAQ,qCAAA;oCAC/D+F,GAAKhG,EAAAA,OAAAA;oCACL9G,GAAK+G,EAAAA,OAAAA;AACLzlB,oCAAAA,QAAAA,EAAU,CAACnqB,KAAAA,GAAAA;AACTy3C,wCAAAA,aAAAA,CAAcz3C,KAAK,CAAC,CAAA,CAAE,EAAEA,KAAK,CAAC,CAAE,CAAA,CAAA,CAAA;AAClC,qCAAA;;;;;;;;;AAOd,CAAA;;ACvLA,MAAM63C,4BAAAA,GAA6B,CAACC,EAClC,GAAA;AAAC,QAAA,IAAA;AAAK,KAAA,CAACvhC,QAAQ,CAACuhC,EAAG7c,CAAAA,QAAQ;AAgB7B;;;;;;;;;AASC,IACD,MAAM8c,qBAAmD,GAAA,CAAC,EACxD1oC,KAAK,EACL3Q,WAAW,EACX8wC,SAAAA,GAAYrtC,SAAS,EACrByxC,kBAAkBzxC,SAAS,EAC3B5D,QAAQ4D,SAAS,EACjBmxC,SAAS,EACO,GAAA;AAChB,IAAA,MAAM,CAAC7lB,cAAgBuqB,EAAAA,iBAAAA,CAAkB,GAAG12C,QAAmB,CAAA,EAAE;IACjE,MAAM2tC,YAAAA,GAAeqE,UAAUsB,cAAc,EAAA,CAAA;IAC7C,MAAM5F,kBAAAA,GAAqBsE,UAAUuB,qBAAqB,EAAA,CAAA;AAC1D,IAAA,MAAMoD,UAAazI,GAAAA,SAAAA,GACfA,SACA0I,GAAAA,yBAAAA,CAA0B7oC,KAAO,EAAA,IAAA,CAAA,CAAA;IACrC,MAAM8oC,UAAAA,GAAa7E,SAAU/C,CAAAA,kBAAkB,CAAClhC,KAAAA,CAAAA,CAAAA;IAChD,MAAM+oC,eAAAA,GAAkB9E,SAAUiB,CAAAA,eAAe,CAACllC,KAAAA,CAAAA,CAAAA;AAElD,IAAA,MAAMgpC,aAAax6B,OAAQ,CAAA,IAAA;AACzB,QAAA,IAAIu6B,iBAAiB16B,IAAM,EAAA;YACzB,OAAOzgB,MAAAA,CAAOC,IAAI,CAACk7C,eAAAA,CAAgB16B,IAAI,CAAE1f,CAAAA,GAAG,CAAC,CAACtB,GAAAA,GAAAA;gBAC5C,OAAO;oBACLsD,KAAOtD,EAAAA,GAAAA;oBACP8K,KAAO9K,EAAAA,GAAAA;AACT,iBAAA,CAAA;AACF,aAAA,CAAA,CAAA;AACF,SAAA;AACA,QAAA,OAAO,EAAE,CAAA;KACR,EAAA;QAAC07C,eAAiB16B,EAAAA,IAAAA;AAAK,KAAA,CAAA,CAAA;IAE1Blc,oBAAqB,CAAA,IAAA;AACnB,QAAA,IAAI,CAAC22C,UAAY,EAAA;AACfH,YAAAA,iBAAAA,CAAkB,EAAE,CAAA,CAAA;SACf,MAAA,IAAIH,6BAA2BM,UAAa,CAAA,EAAA;YACjD,MAAMrtB,OAAAA,GAAUqtB,WAAWjJ,QAAQ,CAAClxC,GAAG,CAAC,CAAC0B,CACvCA,GAAAA,CAAAA,CAAEyO,QAAQ,EAAA,CAAA,CAAA;YAEZ6pC,iBAAkBltB,CAAAA,OAAAA,CAAAA,CAAAA;AACpB,SAAA;KACC,EAAA;AAACqtB,QAAAA,UAAAA;AAAW,KAAA,CAAA,CAAA;IAEf32C,oBAAqB,CAAA,IAAA;AACnB,QAAA,MAAM82C,YAAY,CAAC3uB,MAAAA,GAAAA;YACjB,IAAIA,MAAAA,CAAOxrB,MAAM,GAAG,CAAG,EAAA;gBACrB,IAAIg6C,UAAAA,IAAcN,6BAA2BM,UAAa,CAAA,EAAA;;AAExDnJ,oBAAAA,kBAAAA,CAAmB3/B,KAAO,EAAA;AACxB,wBAAA,GAAG8oC,UAAU;wBACbjJ,QAAUvlB,EAAAA,MAAAA;AACZ,qBAAA,CAAA,CAAA;AACF,iBAAA;AACA,gBAAA,IAAIwuB,eAAeh2C,SAAW,EAAA;;AAE5B6sC,oBAAAA,kBAAAA,CAAmB3/B,KAAO,EAAA;wBACxB4rB,QAAU,EAAA,IAAA;wBACV5rB,KAAOA,EAAAA,KAAAA;wBACP6/B,QAAUvlB,EAAAA,MAAAA;AACZ,qBAAA,CAAA,CAAA;AACF,iBAAA;aAGG,MAAA;gBACHslB,YAAa5/B,CAAAA,KAAAA,CAAAA,CAAAA;AACf,aAAA;AACF,SAAA,CAAA;QAEAipC,SAAU7qB,CAAAA,cAAAA,CAAAA,CAAAA;KACT,EAAA;AAACA,QAAAA,cAAAA;AAAe,KAAA,CAAA,CAAA;AAEnB,IAAA,qBACEpxB,IAAC0B,CAAAA,KAAAA,EAAAA;AACCxC,QAAAA,SAAAA,EAAW,CAAC,cAAc,EACxBgD,QAAQA,KAAQ,GAAA,MAAA,CACjB,kFAAkF,CAAC;;0BAEpFlC,IAAC80C,CAAAA,WAAAA,EAAAA;;kCACCn1C,GAACuL,CAAAA,OAAAA,EAAAA;AACCM,wBAAAA,QAAAA,EAAU,CAACnJ,WAAAA;wBACX8I,KAAO9I,EAAAA,WAAAA;wBACP+I,QAAS,EAAA,cAAA;wBACTE,SAAS,EAAA,IAAA;wBACT2C,CAAG,EAAA,GAAA;wBACH5C,SAAS,EAAA,IAAA;wBACT6wC,eAAiB,EAAA;4BAAE/uB,QAAU,EAAA,GAAA;4BAAKzB,UAAY,EAAA,MAAA;AAAO,yBAAA;AAErD,wBAAA,QAAA,gBAAA/rB,GAACk1C,CAAAA,SAAAA,EAAAA;AAAW+G,4BAAAA,QAAAA,EAAAA,UAAAA;;;kCAEd57C,IAAC0B,CAAAA,KAAAA,EAAAA;wBAAIxC,SAAU,EAAA,eAAA;;0CACbS,GAACuL,CAAAA,OAAAA,EAAAA;gCAAQC,KAAM,EAAA,iBAAA;AACb,gCAAA,QAAA,gBAAAxL,GAAC+0C,CAAAA,eAAAA,EAAAA;oCACChpC,OAAS,EAAA,IAAMiwC,kBAAkB,EAAE,CAAA;oCACnCpvC,YAAW,EAAA,iBAAA;AAEX,oCAAA,QAAA,gBAAA5M,GAACivB,CAAAA,MAAAA,EAAAA;wCAASjkB,IAAK,EAAA,QAAA;wCAASzL,SAAW01C,EAAAA,iBAAAA;;;;AAGtC2C,4BAAAA,eAAAA,kBACC53C,GAACuL,CAAAA,OAAAA,EAAAA;gCAAQC,KAAM,EAAA,kBAAA;AACb,gCAAA,QAAA,gBAAAxL,GAAC+0C,CAAAA,eAAAA,EAAAA;oCACChpC,OAAS,EAAA,IAAA;wCACP6rC,eAAgBvkC,CAAAA,KAAAA,CAAAA,CAAAA;AAClB,qCAAA;oCACAzG,YAAW,EAAA,kBAAA;AAEX,oCAAA,QAAA,gBAAA5M,GAAC+4B,CAAAA,OAAAA,EAAAA;wCAAU/tB,IAAK,EAAA,QAAA;wCAASzL,SAAW01C,EAAAA,iBAAAA;;;;;;;;0BAM9Cj1C,GAAC+B,CAAAA,KAAAA,EAAAA;gBAAIxC,SAAU,EAAA,mCAAA;AACb,gBAAA,QAAA,gBAAAS,GAACw8C,CAAAA,WAAAA,EAAAA;oBACC3jB,aAAY,EAAA,8BAAA;oBACZ7tB,IAAK,EAAA,IAAA;AACLwtB,oBAAAA,WAAAA,EAAa,CAAC,MAAM,EAAEyjB,UAAAA,CAAW,CAAC;oBAClCt7C,UAAY,EAAA;wBAAEiB,IAAM,EAAA,MAAA;wBAAQu1B,KAAO,EAAA,gCAAA;AAAiC,qBAAA;oBACpEvqB,YAAW,EAAA,2BAAA;oBACX5I,KAAOytB,EAAAA,cAAAA;oBACPtD,QAAU6tB,EAAAA,iBAAAA;oBACVt6B,IAAM26B,EAAAA,UAAAA;oBACNI,UAAU,EAAA,IAAA;oBACVC,iBAAmB,EAAA,GAAA;;;;;AAK7B,CAAA;;ACxJA,MAAMb,0BAAAA,GAA6B,CAACC,EAClC,GAAA;AAAC,QAAA,IAAA;AAAK,KAAA,CAACvhC,QAAQ,CAACuhC,EAAG7c,CAAAA,QAAQ;AAE7B;;;;IAKA,MAAM0d,gBAAgB,CACpB9tB,SAAAA,GAAAA;IAEA,IAAIA,SAAAA,IAAagtB,2BAA2BhtB,SAAY,CAAA,EAAA;AACtD,QAAA,OAAOA,UAAUqkB,QAAQ,CAAA;AAC3B,KAAA;AACA,IAAA,OAAO,EAAE,CAAA;AACX,CAAA,CAAA;AAEA;;;;;;;;;AASC,IACD,MAAM0J,eAA6C,GAAA,CAAC,EAClDvpC,KAAK,EACL3Q,WAAW,EACX8wC,SAAAA,GAAYrtC,SAAS,EACrByxC,kBAAkBzxC,SAAS,EAC3B5D,QAAQ4D,SAAS,EACjBmxC,SAAS,EACO,GAAA;AAChB,IAAA,MAAM,CAACuF,SAAWC,EAAAA,YAAAA,CAAa,GAAGx3C,QAAAA,CAAS;IAC3C,MAAM2tC,YAAAA,GAAeqE,UAAUsB,cAAc,EAAA,CAAA;IAC7C,MAAM5F,kBAAAA,GAAqBsE,UAAUuB,qBAAqB,EAAA,CAAA;AAC1D,IAAA,MAAMoD,UAAazI,GAAAA,SAAAA,GACfA,SACA0I,GAAAA,yBAAAA,CAA0B7oC,KAAO,EAAA,IAAA,CAAA,CAAA;IACrC,MAAM8oC,UAAAA,GAAa7E,SAAU/C,CAAAA,kBAAkB,CAAClhC,KAAAA,CAAAA,CAAAA;AAChD,IAAA,MAAM0pC,UAAal7B,GAAAA,OAAAA,CAAQ,IAAM86B,aAAAA,CAAcR,UAAa,CAAA,EAAA;AAACA,QAAAA,UAAAA;AAAW,KAAA,CAAA,CAAA;AAExE,IAAA,MAAMG,YAAY,CAAC3uB,MAAAA,GAAAA;QACjB,IAAIA,MAAAA,CAAOxrB,MAAM,GAAG,CAAG,EAAA;YACrB,IAAIg6C,UAAAA,IAAcN,2BAA2BM,UAAa,CAAA,EAAA;;AAExDnJ,gBAAAA,kBAAAA,CAAmB3/B,KAAO,EAAA;AACxB,oBAAA,GAAG8oC,UAAU;oBACbjJ,QAAUvlB,EAAAA,MAAAA;AACZ,iBAAA,CAAA,CAAA;AACF,aAAA;AACA,YAAA,IAAIwuB,eAAeh2C,SAAW,EAAA;;AAE5B6sC,gBAAAA,kBAAAA,CAAmB3/B,KAAO,EAAA;oBACxB4rB,QAAU,EAAA,IAAA;oBACV5rB,KAAOA,EAAAA,KAAAA;oBACP6/B,QAAUvlB,EAAAA,MAAAA;AACZ,iBAAA,CAAA,CAAA;AACF,aAAA;SAGG,MAAA;YACHslB,YAAa5/B,CAAAA,KAAAA,CAAAA,CAAAA;AACf,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAM2pC,WAAW,CAAC7N,CAAAA,GAAAA;AAChB,QAAA,IAAIA,MAAM,EAAI,EAAA,OAAA;QACd,IAAI4N,UAAAA,CAAWxiC,QAAQ,CAAC40B,CAAI,CAAA,EAAA,OAAA;QAC5B2N,YAAa,CAAA,EAAA,CAAA,CAAA;QACbR,SAAU,CAAA;AAAIS,YAAAA,GAAAA,UAAAA;AAAY5N,YAAAA,CAAAA;AAAE,SAAA,CAAA,CAAA;AAC9B,KAAA,CAAA;AAEA,IAAA,MAAM8N,eAAe,CAACv5C,CAAAA,GAAAA;AACpB,QAAA,qBACE1D,GAAC66C,CAAAA,UAAAA,EAAAA;YACC7vC,IAAK,EAAA,IAAA;YACLY,KAAM,EAAA,OAAA;YACNkR,MAAO,EAAA,IAAA;YACP/M,OAAQ,EAAA,aAAA;AACRhE,YAAAA,OAAAA,EAAS,IAAMuwC,SAAUS,CAAAA,UAAAA,CAAWt5C,MAAM,CAAC,CAACZ,IAAMA,CAAMa,KAAAA,CAAAA,CAAAA,CAAAA;AAExD,YAAA,QAAA,gBAAA1D,GAAC+4B,CAAAA,OAAAA,EAAAA;gBAAU/tB,IAAM,EAAA,EAAA;gBAAI4B,YAAW,EAAA,0BAAA;;;AAGtC,KAAA,CAAA;AAEA,IAAA,qBACEvM,IAAC0B,CAAAA,KAAAA,EAAAA;AACCxC,QAAAA,SAAAA,EAAW,CAAC,cAAc,EACxBgD,QAAQA,KAAQ,GAAA,MAAA,CACjB,kFAAkF,CAAC;;0BAEpFlC,IAAC80C,CAAAA,WAAAA,EAAAA;;kCACCn1C,GAACuL,CAAAA,OAAAA,EAAAA;AACCM,wBAAAA,QAAAA,EAAU,CAACnJ,WAAAA;wBACX8I,KAAO9I,EAAAA,WAAAA;wBACP+I,QAAS,EAAA,cAAA;wBACTE,SAAS,EAAA,IAAA;wBACT2C,CAAG,EAAA,GAAA;wBACH5C,SAAS,EAAA,IAAA;wBACT6wC,eAAiB,EAAA;4BAAE/uB,QAAU,EAAA,GAAA;4BAAKzB,UAAY,EAAA,MAAA;AAAO,yBAAA;AAErD,wBAAA,QAAA,gBAAA/rB,GAACk1C,CAAAA,SAAAA,EAAAA;AAAW+G,4BAAAA,QAAAA,EAAAA,UAAAA;;;kCAEd57C,IAAC0B,CAAAA,KAAAA,EAAAA;wBAAIxC,SAAU,EAAA,eAAA;;0CACbS,GAACuL,CAAAA,OAAAA,EAAAA;gCAAQC,KAAM,EAAA,iBAAA;AACb,gCAAA,QAAA,gBAAAxL,GAAC+0C,CAAAA,eAAAA,EAAAA;AACChpC,oCAAAA,OAAAA,EAAS,IAAMknC,YAAa5/B,CAAAA,KAAAA,CAAAA;oCAC5BzG,YAAW,EAAA,iBAAA;AAEX,oCAAA,QAAA,gBAAA5M,GAACivB,CAAAA,MAAAA,EAAAA;wCAASjkB,IAAK,EAAA,QAAA;wCAASzL,SAAW01C,EAAAA,iBAAAA;;;;AAGtC2C,4BAAAA,eAAAA,kBACC53C,GAACuL,CAAAA,OAAAA,EAAAA;gCAAQC,KAAM,EAAA,kBAAA;AACb,gCAAA,QAAA,gBAAAxL,GAAC+0C,CAAAA,eAAAA,EAAAA;oCACChpC,OAAS,EAAA,IAAA;wCACP6rC,eAAgBvkC,CAAAA,KAAAA,CAAAA,CAAAA;AAClB,qCAAA;oCACAzG,YAAW,EAAA,kBAAA;AAEX,oCAAA,QAAA,gBAAA5M,GAAC+4B,CAAAA,OAAAA,EAAAA;wCAAU/tB,IAAK,EAAA,QAAA;wCAASzL,SAAW01C,EAAAA,iBAAAA;;;;;;;;0BAM9C50C,IAAC0B,CAAAA,KAAAA,EAAAA;gBAAIxC,SAAU,EAAA,mCAAA;;kCACbS,GAACg8B,CAAAA,SAAAA,EAAAA;wBACCnD,aAAY,EAAA,0BAAA;wBACZ7tB,IAAK,EAAA,IAAA;AACLwtB,wBAAAA,WAAAA,EAAa,CAAC,MAAM,EAAEyjB,UAAAA,CAAW,CAAC;wBAClCt7C,UAAY,EAAA;4BAAEiB,IAAM,EAAA,MAAA;4BAAQu1B,KAAO,EAAA,gCAAA;AAAiC,yBAAA;wBACpEvqB,YAAW,EAAA,2BAAA;wBACX5I,KAAO64C,EAAAA,SAAAA;AACP1uB,wBAAAA,QAAAA,EAAU,CAAC8N,KAAU6gB,GAAAA,YAAAA,CAAa7gB,KAAM6e,CAAAA,aAAa,CAAC92C,KAAK,CAAA;;kCAE7DhE,GAAC66C,CAAAA,UAAAA,EAAAA;wBACC7vC,IAAK,EAAA,IAAA;wBACL4B,YAAW,EAAA,kBAAA;wBACXrN,SAAU,EAAA,iFAAA;wBACVwM,OAAS,EAAA,IAAA;AACP,4BAAA,IAAI8wC,UAAU16C,MAAM,GAAG,CAAG66C,EAAAA,QAAAA,CAASH,UAAU5C,IAAI,EAAA,CAAA,CAAA;AACnD,yBAAA;AAEA,wBAAA,QAAA,gBAAAj6C,GAACk9C,CAAAA,MAAAA,EAAAA,EAAAA,CAAAA;;;;0BAILl9C,GAAC8jB,CAAAA,KAAAA,EAAAA;gBACCC,GAAI,EAAA,IAAA;gBACJxkB,SAAU,EAAA,oCAAA;gBACVs5B,aAAY,EAAA,cAAA;AAEXkkB,gBAAAA,QAAAA,EAAAA,UAAAA,CAAW/6C,GAAG,CAAC,CAAC0B,CAAAA,iBACf1D,GAAC0b,CAAAA,KAAAA,EAAAA;wBACC1Q,IAAK,EAAA,IAAA;wBACL+E,OAAQ,EAAA,QAAA;wBACRnE,KAAM,EAAA,QAAA;AAENktB,wBAAAA,YAAAA,EAAcmkB,YAAav5C,CAAAA,CAAAA,CAAAA;AAE1BA,wBAAAA,QAAAA,EAAAA,CAAAA;AAHIA,qBAAAA,EAAAA,CAAAA,CAAAA,CAAAA;;;;AASjB,CAAA;;AC3LO,MAAMy5C,eAAAA,GAAkB,CAC7BC,eAAAA,EACA3O,YACA4O,aACAC,EAAAA,QAAAA,EACA1F,eAA2C,GAAA,IAAM,IAAI,EACrDJ,WAAc,GAAA,KAAK,EACnBhE,SACAjxC,EAAAA,KAAAA,GAAAA;AAEA,IAAA,MAAM,EAAE8Q,KAAK,EAAE5D,IAAI,EAAE/M,WAAW,EAAE,GAAG06C,eAAAA,CAAAA;AACrC,IAAA,qBACEp9C,GAAC+B,CAAAA,KAAAA,EAAAA;AAEG,QAAA,QAAA,EAAA;AACEw7C,YAAAA,IAAAA,gBACEv9C,GAACq3C,CAAAA,SAAAA,EAAAA;gBAEC5I,UAAYA,EAAAA,UAAAA;gBACZp7B,KAAOA,EAAAA,KAAAA;gBACPmgC,SAAWA,EAAAA,SAAAA;gBACX9wC,WAAaA,EAAAA,WAAAA;gBACb80C,WAAaA,EAAAA,WAAAA;gBACbj1C,KAAOA,EAAAA,KAAAA;gBACP+0C,SAAW+F,EAAAA,aAAAA;gBACX9F,WAAa,EAAA,KAAA;AARR,aAAA,EAAA,CAAC,EAAE+F,QAAAA,CAAS,MAAM,EAAEjqC,MAAM,CAAC,CAAA;AAWpCqgC,YAAAA,KAAAA,gBACE1zC,GAACm7C,CAAAA,UAAAA,EAAAA;gBAEC1M,UAAYA,EAAAA,UAAAA;gBACZp7B,KAAOA,EAAAA,KAAAA;gBACPmgC,SAAWA,EAAAA,SAAAA;gBACX9wC,WAAaA,EAAAA,WAAAA;gBACb80C,WAAaA,EAAAA,WAAAA;gBACbj1C,KAAOA,EAAAA,KAAAA;gBACP+0C,SAAW+F,EAAAA,aAAAA;gBACX1J,OAASyJ,EAAAA,eAAAA,CAAgB1J,KAAK,EAAEC,OAAAA;gBAChCC,OAASwJ,EAAAA,eAAAA,CAAgB1J,KAAK,EAAEE,OAAAA;AAT3B,aAAA,EAAA,CAAC,EAAE0J,QAAAA,CAAS,OAAO,EAAEjqC,MAAM,CAAC,CAAA;AAYrCmqC,YAAAA,KAAAA,gBACEx9C,GAAC48C,CAAAA,eAAAA,EAAAA;gBAECvpC,KAAOA,EAAAA,KAAAA;gBACPmgC,SAAWA,EAAAA,SAAAA;gBACX9wC,WAAaA,EAAAA,WAAAA;gBACb80C,WAAaA,EAAAA,WAAAA;gBACbj1C,KAAOA,EAAAA,KAAAA;gBACP+0C,SAAW+F,EAAAA,aAAAA;AANN,aAAA,EAAA,CAAC,EAAEC,QAAAA,CAAS,OAAO,EAAEjqC,MAAM,CAAC,CAAA;AASrCoqC,YAAAA,WAAAA,gBACEz9C,GAAC+7C,CAAAA,qBAAAA,EAAAA;gBAEC1oC,KAAOA,EAAAA,KAAAA;gBACPmgC,SAAWA,EAAAA,SAAAA;gBACX9wC,WAAaA,EAAAA,WAAAA;gBACb80C,WAAaA,EAAAA,WAAAA;gBACbj1C,KAAOA,EAAAA,KAAAA;gBACP+0C,SAAW+F,EAAAA,aAAAA;AANN,aAAA,EAAA,CAAC,EAAEC,QAAAA,CAAS,OAAO,EAAEjqC,MAAM,CAAC,CAAA;AASvC,SAAC,CAAC5D,IAAe,CAAA;AApDX,KAAA,EAAA,CAAC,EAAE6tC,QAAAA,CAAS,MAAM,EAAEjqC,MAAM,CAAC,CAAA,CAAA;AAwDzC,CAAE;;ACjEK,MAAMqqC,eAAe,CAAC,EAC3B/7B,MAAM,EACN07B,aAAa,EACb5O,UAAU,EACQ,GAAA;AAClB,IAAA,qBACEzuC,GAAC+B,CAAAA,KAAAA,EAAAA;QACC82B,aAAY,EAAA,gBAAA;QACZt5B,SAAU,EAAA,4DAAA;kBAEToiB,MAAO3f,CAAAA,GAAG,CAAC,CAACo7C,eAAAA,GAAAA;AACX,YAAA,OAAOD,eACLC,CAAAA,eAAAA,EACA3O,UACA4O,EAAAA,aAAa,CAACD,eAAgB3tC,CAAAA,IAAI,CAAC,EACnC,eACAtJ,EAAAA,SAAAA,EACA,KACAi3C,EAAAA,eAAAA,CAAgB5xC,KAAK,EACrB,MAAA,CAAA,CAAA;AAEJ,SAAA,CAAA;;AAGN,CAAE;;ACjCK,MAAMmyC,wBAAwB,CAACz7C,KAAAA,GAAAA;AACpC,IAAA,OAAOsG,gBAAgB,CAACC,KAAAA,GAAUm1C,mBAAoBn1C,CAAAA,KAAAA,CAAM,CAACvG,KAAM,CAAA,CAAA,CAAA;AACrE,CAAE;;ACEF,MAAM27C,wBAA2B,GAAA,CAC7B,EAAE75C,KAAK,EAAiC,GAAA;IAC1C,qBAAOhE,GAAA,CAACmD,eAAMC,QAAQ,EAAA;AAAEY,QAAAA,QAAAA,EAAAA,KAAAA;;AAC1B,CAAA;;ACDO,MAAM85C,+BAAAA,iBAAkC36C,cAAM+C,CAAAA,aAAa,CAEhE;IAAC,EAAC;IAAG,IAAM,IAAA;CAAK,CAAE;;ACqCpB,MAAM63C,eAAe,CAAC,EAAE/5C,KAAK,EAAqB,iBAChDhE,GAAC66C,CAAAA,UAAAA,EAAAA;QACC7vC,IAAK,EAAA,IAAA;QACLY,KAAM,EAAA,QAAA;QACNkR,MAAO,EAAA,IAAA;QACP/M,OAAQ,EAAA,aAAA;AACRnD,QAAAA,YAAAA,EAAY,CAAC,OAAO,EAAE5I,KAAAA,CAAM,CAAC;QAC7Bg6C,EAAI,EAAA,CAAA;QACJC,EAAI,EAAA,CAAA;AAEJ,QAAA,QAAA,gBAAAj+C,GAACk+C,CAAAA,OAAAA,EAAAA;YAAUlzC,IAAM,EAAA,EAAA;YAAImxB,aAAY,EAAA,MAAA;;;AAGrC,MAAMgiB,uBAAAA,GAA0BnJ,EAAGjzC,CAAAA,GAAG,CAAC;;AAEvC,CAAC,CAAA;AAED,MAAMq8C,eAAAA,GAAkBpJ,EAAGjzC,CAAAA,GAAG,CAAC;;;;;;;;;AAS/B,CAAC,CAAA;AAED,MAAMs8C,kBAAAA,GAAqBrJ,EAAGjzC,CAAAA,GAAG,CAAC;;;;;;;;;;;;AAYlC,CAAC,CAAA;AAED,MAAMu8C,cAAAA,GAAiBtJ,EAAGjzC,CAAAA,GAAG,CAAC;;;;;;AAM9B,CAAC,CAAA;AAYM,MAAMw8C,mBAAmB,CAAC76C,CAAAA,GAAAA;IAC/B,OACEA,CAAAA,KAAMyC,SACN,IAAA,UAAA,IAAczC,CACd,IAAA;AAAC,QAAA,IAAA;AAAM,QAAA,GAAA;AAAK,QAAA,GAAA;AAAK,QAAA,IAAA;KAAK,CAAC6W,QAAQ,CAAC7W,CAAAA,CAAEu7B,QAAQ,CAAA,CAAA;AAE9C,CAAE,CAAA;AAMK,MAAMuf,iBAAiB,CAAC96C,CAAAA,GAAAA;AAC7B,IAAA,OAAO,MAAUA,IAAAA,CAAAA,CAAAA;AACnB,CAAE,CAAA;AAWF,MAAM+6C,0BAA6B,GAAA,CAAC,EAClCv8C,KAAK,EACLmR,KAAK,EACLvC,IAAI,EACJmuB,QAAQ,EACRiU,QAAQ,EACwB,GAAA;AAChC,IAAA,MAAMpN,QAAWx9B,GAAAA,eAAAA,EAAAA,CAAAA;AACjB,IAAA,MAAM,CAACo2C,wBAAAA,EAA0BC,2BAA4B,CAAA,GAAGl4C,UAC9Dq3C,CAAAA,+BAAAA,CAAAA,CAAAA;AAEF,IAAA,MAAMc,eAAkBp2C,GAAAA,eAAAA,CAAgB,CAACC,KAAAA,GACvCo2C,qBAAsBp2C,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA;IAGxBjD,oBAAqB,CAAA,IAAA;QACnB,IAAIs5C,GAAAA,CAAIJ,wBAA0BrrC,EAAAA,KAAAA,CAAAA,KAAWlN,SAAW,EAAA;YACtDw4C,2BAA4B,CAAA;gBAC1BlvC,IAAM,EAAA,QAAA;gBACNsvC,QAAUH,EAAAA,eAAAA;AACVvrC,gBAAAA,KAAAA;AACF,aAAA,CAAA,CAAA;AACF,SAAA;KACC,EAAA;AACDA,QAAAA,KAAAA;AACAurC,QAAAA,eAAAA;AACAF,QAAAA,wBAAAA;AACAC,QAAAA,2BAAAA;AACD,KAAA,CAAA,CAAA;IAED,MAAMv1B,QAAAA,GAAW01B,GAAIJ,CAAAA,wBAAAA,EAA0BrrC,KAAO,EAAA,IAAA,CAAA,CAAA;AACtD,IAAA,MAAMuM,YAAYmuB,gBAAiB16B,CAAAA,KAAAA,CAAAA,CAAAA;IACnC,MAAM2rC,aAAAA,GAAgB9pC,OAAQg+B,CAAAA,QAAAA,CAAAA,GAAYA,QAAW,GAAA;AAACA,QAAAA,QAAAA;AAAS,KAAA,CAAA;AAE/D,IAAA,qBACE7yC,IAACi+C,CAAAA,cAAAA,EAAAA;;0BACCt+C,GAACo+C,CAAAA,eAAAA,EAAAA;AAAiBx+B,gBAAAA,QAAAA,EAAAA,SAAAA;;0BAClB5f,GAAC66C,CAAAA,UAAAA,EAAAA;gBACC9qC,OAAQ,EAAA,aAAA;gBACR/E,IAAM,EAAA,IAAA;gBACNe,OAAS,EAAA,IAAA;oBACP4yC,2BAA4B,CAAA;AAC1BlvC,wBAAAA,IAAAA,EAAM2Z,WAAW,UAAa,GAAA,QAAA;wBAC9B21B,QAAUH,EAAAA,eAAAA;AACVvrC,wBAAAA,KAAAA;AACF,qBAAA,CAAA,CAAA;AACF,iBAAA;gBACAzH,KAAM,EAAA,QAAA;gBACNrM,SAAU,EAAA,uDAAA;gBACVqN,YAAYwc,EAAAA,QAAAA,GAAW,CAAC,SAAS,EAAExJ,SAAAA,CAAU,CAAC,GAAG,CAAC,OAAO,EAAEA,SAAAA,CAAU,CAAC;gBACtEq/B,eAAe71B,EAAAA,QAAAA;0BAEdA,QAAW,iBAAAppB,GAAA,CAACk/C,wCAAel/C,GAACm/C,CAAAA,qBAAAA,EAAAA,EAAAA,CAAAA;;0BAE/Bn/C,GAAC88B,CAAAA,OAAAA,EAAAA;gBACCsiB,WAAY,EAAA,UAAA;gBACZp0C,IAAK,EAAA,IAAA;gBACLzL,SAAU,EAAA,KAAA;gBACVqM,KAAM,EAAA,QAAA;;AAEP,YAAA,CAACwd,yBACAppB,GAACiX,CAAAA,GAAAA,EAAAA;gBAAE1X,SAAU,EAAA,kDAAA;AACV2zC,gBAAAA,QAAAA,EAAAA,QAAAA,CAAS/wC,MAAM;+BAGlBnC,GAACm+C,CAAAA,uBAAAA,EAAAA;AACC,gBAAA,QAAA,gBAAAn+C,GAAC8jB,CAAAA,KAAAA,EAAAA;oBAAMC,GAAI,EAAA,IAAA;8BACRi7B,aAAch9C,CAAAA,GAAG,CAAC,CAAC0B,CAAoBb,EAAAA,CAAAA,GAAAA;wBACtC,MAAMmB,KAAAA,GAAQN,EAAEyO,QAAQ,EAAA,CAAA;AACxB,wBAAA,qBACEnS,GAAC0b,CAAAA,KAAAA,EAAAA;4BAECmd,aAAa,EAAA,CAAC,UAAU,EAAExlB,KAAM,CAAA,CAAC,EAAErP,KAAM,CAAA,CAAC,EAAEnB,CAAAA,CAAE,CAAC;4BAC/CkN,OAAQ,EAAA,QAAA;4BACRnE,KAAM,EAAA,UAAA;4BACNZ,IAAK,EAAA,IAAA;4BACLizC,EAAI,EAAA,CAAA;4BACJ1+C,SAAU,EAAA,wFAAA;AACVu5B,4BAAAA,YAAAA,gBAAc94B,GAAC+9C,CAAAA,YAAAA,EAAAA;gCAAa/5C,KAAOA,EAAAA,KAAAA;;4BACnC+H,OAAS,EAAA,IAAA;AACP,gCAAA,MAAMszC,cAAcL,aAAcv7C,CAAAA,MAAM,CAAC,CAAC67C,IAAMA,CAAM57C,KAAAA,CAAAA,CAAAA,CAAAA;gCACtD,MAAM67C,aAAAA,GACJzuC,IAAQA,IAAAA,IAAAA,IAAQ,GAAM,GAAA;AAACA,oCAAAA,IAAAA;AAAMuC,oCAAAA,KAAAA;iCAAM,CAACmG,IAAI,CAAC,GAAOnG,CAAAA,GAAAA,KAAAA,CAAAA;gCAElD,IAAIgsC,WAAAA,CAAYl9C,MAAM,KAAK,CAAG,EAAA;oCAC5Bw8C,2BAA4B,CAAA;wCAC1BlvC,IAAM,EAAA,OAAA;wCACNsvC,QAAUH,EAAAA,eAAAA;wCACVvrC,KAAOksC,EAAAA,aAAAA;AACT,qCAAA,CAAA,CAAA;AACAzZ,oCAAAA,QAAAA,CACEgP,kBAAmB,CAAA;wCACjBzhC,KAAOksC,EAAAA,aAAAA;wCACPr9C,KAAOA,EAAAA,KAAAA;AACT,qCAAA,CAAA,CAAA,CAAA;iCAEG,MAAA;AACL4jC,oCAAAA,QAAAA,CACEwO,kBAAmB,CAAA;AACjBpyC,wCAAAA,KAAAA;wCACAmR,KAAOksC,EAAAA,aAAAA;AACP97C,wCAAAA,MAAAA,EAAQqwC,YAAYyL,aAAe,EAAA;4CACjCtgB,QAAUA,EAAAA,QAAAA;4CACV5rB,KAAOA,EAAAA,KAAAA;4CACP6/B,QAAUmM,EAAAA,WAAAA;AACZ,yCAAA,CAAA;AACF,qCAAA,CAAA,CAAA,CAAA;AAEJ,iCAAA;AACF,6BAAA;AAEA,4BAAA,QAAA,gBAAAr/C,GAACo1C,CAAAA,uBAAAA,EAAAA;gCACC5pC,KAAOxH,EAAAA,KAAAA;gCACPzE,SAAU,EAAA,gCAAA;AAEV,gCAAA,QAAA,gBAAAS,GAAC69C,CAAAA,wBAAAA,EAAAA;AAAyB75C,oCAAAA,KAAAA,EAAOA,MAAMmO,QAAQ,EAAA;;;2BA5C5C,CAAC,UAAU,EAAEkB,KAAM,CAAA,CAAC,EAAErP,KAAM,CAAA,CAAC,EAAEnB,CAAAA,CAAE,CAAC,CAAA,CAAA;AAgD7C,qBAAA,CAAA;;;;;AAMZ,CAAA,CAAA;AAQA,MAAM28C,iBAAAA,GAAoB,CAAC,EACzBt9C,KAAK,EACLuB,MAAM,EACNg8C,SAAY,GAAA,IAAI,EACO,GAAA;AACvB,IAAA,MAAMp3C,YAAeC,GAAAA,eAAAA,EAAAA,CAAAA;;AAGrB,IAAA,MAAMo3C,mBAAmB,CAACC,IAAAA,GAAAA;AACxBt3C,QAAAA,YAAAA,CACEisC,kBAAmB,CAAA;AAAEjhC,YAAAA,KAAAA,EAAOssC,KAAKtsC,KAAK;YAAE5P,MAAQk8C,EAAAA,IAAAA;YAAMz9C,KAAOA,EAAAA,KAAAA;AAAM,SAAA,CAAA,CAAA,CAAA;AAEvE,KAAA,CAAA;IAEA,qBACE7B,IAAA,CAAC8C,eAAMC,QAAQ,EAAA;;AACZq8C,YAAAA,SAAAA,iBACCz/C,GAACo+C,CAAAA,eAAAA,EAAAA;AAAiBrQ,gBAAAA,QAAAA,EAAAA,gBAAAA,CAAiBtqC,OAAO4P,KAAK,CAAA;AAC7C,aAAA,CAAA,GAAA,IAAA;0BACJhT,IAAC0B,CAAAA,KAAAA,EAAAA;gBAAIxC,SAAU,EAAA,4BAAA;;kCACbS,GAACyM,CAAAA,QAAAA,EAAAA;wBACClN,SAAU,EAAA,sGAAA;AACVwM,wBAAAA,OAAAA,EAAS,IAAM2zC,gBAAiBj8C,CAAAA,MAAAA,CAAAA;AAE/BA,wBAAAA,QAAAA,EAAAA,MAAAA,CAAOw7B,QAAQ;;kCAElBj/B,GAACm+C,CAAAA,uBAAAA,EAAAA;AAAyB16C,wBAAAA,QAAAA,EAAAA,MAAAA,CAAO2wC,OAAO;;;;;;AAIhD,CAAA,CAAA;AAEA,MAAMwL,gBAAgB,CAAC,EAAEvsC,KAAK,EAAE4rB,QAAQ,EAAoB,GAAA;AAC1D,IAAA,qBACE5+B,IAAC0B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAU,EAAA,4BAAA;;YACZwuC,gBAAiB16B,CAAAA,KAAAA,CAAAA;AAAO,YAAA,KAAA;0BACzBrT,GAACC,CAAAA,MAAAA,EAAAA;gBAAKV,SAAU,EAAA,gBAAA;AAAkB0/B,gBAAAA,QAAAA,EAAAA,QAAAA;;;;AAGxC,CAAA,CAAA;AASO,MAAM4gB,uBAAAA,GAA0B,CAAC,EACtC39C,KAAK,EACL+4C,KAAK,EACLC,KAAK,EACLY,EAAK,GAAA,KAAK,EACsC,GAAA;AAChD,IAAA,MAAM,EAAEzoC,KAAK,EAAE,GAAG4nC;IAElB,qBACEj7C,GAAA,CAACmD,eAAMC,QAAQ,EAAA;AACb,QAAA,QAAA,gBAAApD,GAAC8/C,CAAAA,YAAAA,EAAAA;YAAazsC,KAAOA,EAAAA,KAAAA;YAAOnR,KAAOA,EAAAA,KAAAA;AACjC,YAAA,QAAA,gBAAA7B,IAACi+C,CAAAA,cAAAA,EAAAA;;kCACCt+C,GAACw/C,CAAAA,iBAAAA,EAAAA;wBAAkB/7C,MAAQw3C,EAAAA,KAAAA;wBAAO/4C,KAAOA,EAAAA,KAAAA;;kCACzClC,GAAC+B,CAAAA,KAAAA,EAAAA;wBAAIxC,SAAU,EAAA,mBAAA;AACb,wBAAA,QAAA,gBAAAS,GAACC,CAAAA,MAAAA,EAAAA;4BAAKV,SAAW,EAAA,8CAAA;AACdu8C,4BAAAA,QAAAA,EAAAA,EAAAA;;;kCAGL97C,GAACw/C,CAAAA,iBAAAA,EAAAA;wBAAkB/7C,MAAQy3C,EAAAA,KAAAA;wBAAOuE,SAAW,EAAA,KAAA;wBAAOv9C,KAAOA,EAAAA,KAAAA;;;;;;AAKrE,CAAE,CAAA;AAaK,MAAM49C,YAAe,GAAA,CAAC,EAC3B59C,KAAK,EACLmR,KAAK,EACLvC,IAAI,EACJ9I,QAAQ,EACU,GAAA;AAClB,IAAA,MAAMK,YAAeC,GAAAA,eAAAA,EAAAA,CAAAA;IACrB,MAAM,GAAGq2C,2BAA4B,CAAA,GAAGl4C,UACtCq3C,CAAAA,+BAAAA,CAAAA,CAAAA;AAEF,IAAA,MAAMc,eAAkBp2C,GAAAA,eAAAA,CAAgB,CAACC,KAAAA,GACvCo2C,qBAAsBp2C,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA;IAGxB,MAAMmX,SAAAA,GAAY9O,IAAQA,IAAAA,IAAAA,IAAQ,GAAM,GAAA;AAACA,QAAAA,IAAAA;AAAMuC,QAAAA,KAAAA;KAAM,CAACmG,IAAI,CAAC,GAAOnG,CAAAA,GAAAA,KAAAA,CAAAA;AAClE,IAAA,MAAM0sC,kBAAqB,GAAA,IAAA;AACzB13C,QAAAA,YAAAA,CACEysC,kBAAmB,CAAA;YACjB5yC,KAAOA,EAAAA,KAAAA;YACPmR,KAAOuM,EAAAA,SAAAA;AACT,SAAA,CAAA,CAAA,CAAA;QAEF++B,2BAA4B,CAAA;YAC1BlvC,IAAM,EAAA,OAAA;YACNsvC,QAAUH,EAAAA,eAAAA;YACVvrC,KAAOuM,EAAAA,SAAAA;AACT,SAAA,CAAA,CAAA;AACF,KAAA,CAAA;AAEA,IAAA,qBACEvf,IAACg+C,CAAAA,kBAAAA,EAAAA;;AACEr2C,YAAAA,QAAAA;0BAODhI,GAACyM,CAAAA,QAAAA,EAAAA;gBACClN,SAAU,EAAA,+EAAA;gBACVwM,OAASg0C,EAAAA,kBAAAA;AACTnzC,gBAAAA,YAAAA,EAAY,CAAC,OAAO,EAAEmhC,gBAAAA,CAAiB16B,OAAO,CAAC;AAE/C,gBAAA,QAAA,gBAAArT,GAACk+C,CAAAA,OAAAA,EAAAA;oBAAUlzC,IAAK,EAAA,OAAA;oBAAQzL,SAAU,EAAA,MAAA;;;;;AAI1C,CAAE,CAAA;AAEF;;AAEC,IACD,MAAMygD,uBAAAA,CAAAA;AAIJ1vB,IAAAA,WAAAA,CAAYpuB,KAAa,EAAE4O,IAAO,GAAA,GAAG,CAAE;aAKvCmvC,cAAiB,GAAA,CAACC,kBAChBlgD,GAAC8/C,CAAAA,YAAAA,EAAAA;AAA4B,gBAAA,GAAGI,CAAC;gBAAEh+C,KAAO,EAAA,IAAI,CAACA,KAAK;gBAAE4O,IAAM,EAAA,IAAI,CAACA,IAAI;AACnE,gBAAA,QAAA,gBAAA9Q,GAACy+C,CAAAA,0BAAAA,EAAAA;AAA4B,oBAAA,GAAGyB,CAAC;oBAAEh+C,KAAO,EAAA,IAAI,CAACA,KAAK;oBAAE4O,IAAM,EAAA,IAAI,CAACA,IAAI;;AADpDovC,aAAAA,EAAAA,CAAAA,CAAE7sC,KAAK,CAAA,CAAA;aAI5B8sC,cAAiB,GAAA,CAACD,kBAChBlgD,GAAC8/C,CAAAA,YAAAA,EAAAA;AAA4B,gBAAA,GAAGI,CAAC;gBAAEh+C,KAAO,EAAA,IAAI,CAACA,KAAK;gBAAE4O,IAAM,EAAA,IAAI,CAACA,IAAI;AACnE,gBAAA,QAAA,gBAAA9Q,GAACy+C,CAAAA,0BAAAA,EAAAA;AAA4B,oBAAA,GAAGyB,CAAC;oBAAEh+C,KAAO,EAAA,IAAI,CAACA,KAAK;oBAAE4O,IAAM,EAAA,IAAI,CAACA,IAAI;;AADpDovC,aAAAA,EAAAA,CAAAA,CAAE7sC,KAAK,CAAA,CAAA;aAI5B+sC,YAAe,GAAA,CAACF,kBACdlgD,GAAC8/C,CAAAA,YAAAA,EAAAA;AAA4B,gBAAA,GAAGI,CAAC;gBAAEh+C,KAAO,EAAA,IAAI,CAACA,KAAK;gBAAE4O,IAAM,EAAA,IAAI,CAACA,IAAI;AACnE,gBAAA,QAAA,gBAAA9Q,GAACw/C,CAAAA,iBAAAA,EAAAA;oBAAkB/7C,MAAQy8C,EAAAA,CAAAA;oBAAGh+C,KAAO,EAAA,IAAI,CAACA,KAAK;;AAD9Bg+C,aAAAA,EAAAA,CAAAA,CAAE7sC,KAAK,CAAA,CAAA;aAI5BgtC,eAAkB,GAAA,CAACH,kBACjBlgD,GAAC8/C,CAAAA,YAAAA,EAAAA;AAA4B,gBAAA,GAAGI,CAAC;gBAAEh+C,KAAO,EAAA,IAAI,CAACA,KAAK;gBAAE4O,IAAM,EAAA,IAAI,CAACA,IAAI;AACnE,gBAAA,QAAA,gBAAA9Q,GAACw/C,CAAAA,iBAAAA,EAAAA;oBAAkB/7C,MAAQy8C,EAAAA,CAAAA;oBAAGh+C,KAAO,EAAA,IAAI,CAACA,KAAK;;AAD9Bg+C,aAAAA,EAAAA,CAAAA,CAAE7sC,KAAK,CAAA,CAAA;aAI5BitC,cAAiB,GAAA,CAACJ,kBAChBlgD,GAAC8/C,CAAAA,YAAAA,EAAAA;AAA4B,gBAAA,GAAGI,CAAC;gBAAEh+C,KAAO,EAAA,IAAI,CAACA,KAAK;gBAAE4O,IAAM,EAAA,IAAI,CAACA,IAAI;AACnE,gBAAA,QAAA,gBAAA9Q,GAACw/C,CAAAA,iBAAAA,EAAAA;oBAAkB/7C,MAAQy8C,EAAAA,CAAAA;oBAAGh+C,KAAO,EAAA,IAAI,CAACA,KAAK;;AAD9Bg+C,aAAAA,EAAAA,CAAAA,CAAE7sC,KAAK,CAAA,CAAA;aAI5BktC,sBAAyB,GAAA,CAACL,kBACxBlgD,GAAC8/C,CAAAA,YAAAA,EAAAA;AAA4B,gBAAA,GAAGI,CAAC;gBAAEh+C,KAAO,EAAA,IAAI,CAACA,KAAK;gBAAE4O,IAAM,EAAA,IAAI,CAACA,IAAI;AACnE,gBAAA,QAAA,gBAAA9Q,GAACw/C,CAAAA,iBAAAA,EAAAA;oBAAkB/7C,MAAQy8C,EAAAA,CAAAA;oBAAGh+C,KAAO,EAAA,IAAI,CAACA,KAAK;;AAD9Bg+C,aAAAA,EAAAA,CAAAA,CAAE7sC,KAAK,CAAA,CAAA;aAI5BmtC,iBAAoB,GAAA,CAACN,kBACnBlgD,GAAC8/C,CAAAA,YAAAA,EAAAA;AAA4B,gBAAA,GAAGI,CAAC;gBAAEh+C,KAAO,EAAA,IAAI,CAACA,KAAK;gBAAE4O,IAAM,EAAA,IAAI,CAACA,IAAI;AACnE,gBAAA,QAAA,gBAAA9Q,GAACw/C,CAAAA,iBAAAA,EAAAA;oBAAkB/7C,MAAQy8C,EAAAA,CAAAA;oBAAGh+C,KAAO,EAAA,IAAI,CAACA,KAAK;;AAD9Bg+C,aAAAA,EAAAA,CAAAA,CAAE7sC,KAAK,CAAA,CAAA;aAI5BotC,yBAA4B,GAAA,CAACP,kBAC3BlgD,GAAC8/C,CAAAA,YAAAA,EAAAA;AAA4B,gBAAA,GAAGI,CAAC;gBAAEh+C,KAAO,EAAA,IAAI,CAACA,KAAK;gBAAE4O,IAAM,EAAA,IAAI,CAACA,IAAI;AACnE,gBAAA,QAAA,gBAAA9Q,GAACw/C,CAAAA,iBAAAA,EAAAA;oBAAkB/7C,MAAQy8C,EAAAA,CAAAA;oBAAGh+C,KAAO,EAAA,IAAI,CAACA,KAAK;;AAD9Bg+C,aAAAA,EAAAA,CAAAA,CAAE7sC,KAAK,CAAA,CAAA;aAI5BqtC,YAAe,GAAA,CAACR,kBACdlgD,GAAC8/C,CAAAA,YAAAA,EAAAA;AAA4B,gBAAA,GAAGI,CAAC;gBAAEh+C,KAAO,EAAA,IAAI,CAACA,KAAK;gBAAE4O,IAAM,EAAA,IAAI,CAACA,IAAI;AACnE,gBAAA,QAAA,gBAAA9Q,GAAC4/C,CAAAA,aAAAA,EAAAA;AAAe,oBAAA,GAAGM,CAAC;;AADHA,aAAAA,EAAAA,CAAAA,CAAE7sC,KAAK,CAAA,CAAA;aAI5BstC,aAAgB,GAAA,CAACT,kBACflgD,GAAC8/C,CAAAA,YAAAA,EAAAA;AAA4B,gBAAA,GAAGI,CAAC;gBAAEh+C,KAAO,EAAA,IAAI,CAACA,KAAK;gBAAE4O,IAAM,EAAA,IAAI,CAACA,IAAI;AACnE,gBAAA,QAAA,gBAAA9Q,GAAC4/C,CAAAA,aAAAA,EAAAA;AAAe,oBAAA,GAAGM,CAAC;;AADHA,aAAAA,EAAAA,CAAAA,CAAE7sC,KAAK,CAAA,CAAA;aAI5ButC,kBAAqB,GAAA,CAACV,kBACpBlgD,GAAC8/C,CAAAA,YAAAA,EAAAA;AAA4B,gBAAA,GAAGI,CAAC;gBAAEh+C,KAAO,EAAA,IAAI,CAACA,KAAK;gBAAE4O,IAAM,EAAA,IAAI,CAACA,IAAI;AACnE,gBAAA,QAAA,gBAAA9Q,GAACy+C,CAAAA,0BAAAA,EAAAA;AAA4B,oBAAA,GAAGyB,CAAC;oBAAEh+C,KAAO,EAAA,IAAI,CAACA,KAAK;;AADnCg+C,aAAAA,EAAAA,CAAAA,CAAE7sC,KAAK,CAAA,CAAA;AAK5BwtC,QAAAA,IAAAA,CAAAA,kBAAAA,GAAqB,CAACX,CAAAA,GAAAA;AACpB,YAAA,IAAIA,EAAEhN,QAAQ,CAAC/wC,MAAM,GAAG,GAAG,OAAO,IAAA,CAAA;;AAGlC,YAAA,IACE+9C,EAAEhN,QAAQ,CAAC/wC,MAAM,IAAI,KACrBo8C,gBAAiB2B,CAAAA,CAAAA,CAAEhN,QAAQ,CAAC,EAAE,CAC9BqL,IAAAA,gBAAAA,CAAiB2B,EAAEhN,QAAQ,CAAC,EAAE,CAC9B,EAAA;AACA,gBAAA,qBACElzC,GAAC6/C,CAAAA,uBAAAA,EAAAA;oBACC39C,KAAO,EAAA,IAAI,CAACA,KAAK;oBAEjB+4C,KAAOiF,EAAAA,CAAAA,CAAEhN,QAAQ,CAAC,CAAE,CAAA;oBACpBgI,KAAOgF,EAAAA,CAAAA,CAAEhN,QAAQ,CAAC,CAAE,CAAA;AAFf,iBAAA,EAACgN,CAAEhN,CAAAA,QAAQ,CAAC,CAAA,CAAE,CAAyB7/B,KAAK,CAAA,CAAA;AAKvD,aAAA;;YAEA,OAAO,IAAA,CAAA;AACT,SAAA,CAAA;;AAEAytC,QAAAA,IAAAA,CAAAA,WAAAA,GAAc,CAACC,EAAAA,GAAAA;AACb,YAAA,qBAAO/gD,GAAC+B,CAAAA,KAAAA,EAAAA;AAAI,gBAAA,QAAA,EAAA,OAAA;;AACd,SAAA,CAAA;AACAi/C,QAAAA,IAAAA,CAAAA,kBAAAA,GAAqB,CAAClF,EAAAA,GAAAA;YACpB,IAAI0C,cAAAA,CAAe1C,EAAG1H,CAAAA,OAAO,CAAG,EAAA;AAC9B,gBAAA,MAAM6M,KAAQ,GAAA;AACZ,oBAAA,GAAGnF,GAAG1H,OAAO;oBACbtjC,IAAM,EAAA;AAACgrC,wBAAAA,EAAAA,CAAGhrC,IAAI;wBAAEgrC,EAAG1H,CAAAA,OAAO,CAACtjC,IAAI;AAAC,qBAAA,CAAC0I,IAAI,CAAC,GAAA,CAAA;AACxC,iBAAA,CAAA;AACA,gBAAA,OAAO0nC,wBACLD,CAAAA,KAAAA,EACA,IAAI,CAAC/+C,KAAK,EACV;AAAC45C,oBAAAA,EAAAA,CAAGhrC,IAAI;oBAAEgrC,EAAG1H,CAAAA,OAAO,CAACtjC,IAAI;AAAC,iBAAA,CAAC0I,IAAI,CAAC,GAAA,CAAA,CAAA,CAAA;aAE7B,MAAA;gBACL,OAAO0nC,wBAAAA,CAAyBpF,GAAG1H,OAAO,EAAE,IAAI,CAAClyC,KAAK,EAAE45C,EAAAA,CAAGhrC,IAAI,CAAA,CAAA;AACjE,aAAA;AACF,SAAA,CAAA;QAnGE,IAAI,CAAC5O,KAAK,GAAGA,KAAAA,CAAAA;QACb,IAAI,CAAC4O,IAAI,GAAGA,IAAAA,CAAAA;AACd,KAAA;AAkGF,CAAA;AAEO,MAAMowC,wBAA2B,GAAA,CACtCz9C,MACAvB,EAAAA,KAAAA,EACA4O,OAAO,GAAG,GAAA;IAEV,MAAMqwC,OAAAA,GAA0C,IAAInB,uBAAAA,CAClD99C,KACA4O,EAAAA,IAAAA,CAAAA,CAAAA;AAEF,IAAA,OAAOswC,gBAAgBD,OAAS19C,EAAAA,MAAAA,CAAAA,CAAAA;AAClC,CAAE;;AC9fK,MAAM49C,wCAAwC,CACnDC,4BAAAA,GAAAA;AAEA,IAAA,MAAMC,WACJ,GAAA,qEAAA,CAAA;IACF,MAAMC,cAAAA,GAAiBF,+BACnB,0BACA,GAAA,8BAAA,CAAA;AACJ,IAAA,MAAMG,eAAkB,GAAA,qBAAA,CAAA;AACxB,IAAA,MAAMC,mBACJ,GAAA,mHAAA,CAAA;AACF,IAAA,OAAO,CAAC,EAAEF,cAAe,CAAA,CAAC,EAAEC,eAAAA,CAAgB,CAAC,EAAEC,mBAAoB,CAAA,CAAC,EAAEH,WAAAA,CAAY,CAAC,CAAA;AACrF,CAAE,CAAA;AAEK,MAAMI,mCAAmC,CAC9CC,uBAAAA,GAAAA;AAEA,IAAA,MAAML,WACJ,GAAA,4DAAA,CAAA;IACF,MAAMC,cAAAA,GAAiB,CAACI,uBAAAA,GACpB,0BACA,GAAA,8BAAA,CAAA;AACJ,IAAA,MAAMH,eACJ,GAAA,gEAAA,CAAA;AACF,IAAA,MAAMC,mBACJ,GAAA,mHAAA,CAAA;AACF,IAAA,OAAO,CAAC,EAAED,eAAgB,CAAA,CAAC,EAAEC,mBAAAA,CAAoB,CAAC,EAAEH,WAAY,CAAA,CAAC,EAAEC,cAAAA,CAAe,CAAC,CAAA;AACrF,CAAE;;ACVF,MAAMK,wBAAAA,GAA2B7M,EAAGjzC,CAAAA,GAAG,CAAC;;;;;;;;;;AAUxC,CAAC,CAAA;AAED,MAAM+/C,qBAAwB,GAAA,GAAA,CAAA;AAI9B,MAAMC,OAAAA,GAAU,CACdt5C,KACAu5C,EAAAA,MAAAA,GAAAA;AAEA,IAAA,OAAQA,OAAOvyC,IAAI;QACjB,KAAK,MAAA;YACH,OAAO;AACL,gBAAA,GAAGhH,KAAK;AACR,gBAAA,CAACu5C,MAAOjD,CAAAA,QAAQ,GAAG,EAAC;AACtB,aAAA,CAAA;QACF,KAAK,QAAA;YACH,IAAIiD,MAAAA,CAAO3uC,KAAK,EAAE;gBAChB,OAAO;AACL,oBAAA,GAAG5K,KAAK;oBACR,CAACu5C,MAAAA,CAAOjD,QAAQ,GAAG;AAAE,wBAAA,GAAGt2C,KAAK,CAACu5C,MAAOjD,CAAAA,QAAQ,CAAC;wBAAE,CAACiD,MAAAA,CAAO3uC,KAAK,GAAG,IAAA;AAAK,qBAAA;AACvE,iBAAA,CAAA;AACF,aAAA,MACA,OAAO;AACL,gBAAA,GAAG5K,KAAK;gBACR,CAACu5C,MAAAA,CAAOjD,QAAQ,GAAG;AAAE,oBAAA,GAAGt2C,KAAK,CAACu5C,MAAOjD,CAAAA,QAAQ,CAAC;AAAC,iBAAA;AACjD,aAAA,CAAA;QACF,KAAK,UAAA;YACH,IAAIiD,MAAAA,CAAO3uC,KAAK,EAChB,OAAO;AACL,gBAAA,GAAG5K,KAAK;gBACR,CAACu5C,MAAAA,CAAOjD,QAAQ,GAAG;AAAE,oBAAA,GAAGt2C,KAAK,CAACu5C,MAAOjD,CAAAA,QAAQ,CAAC;oBAAE,CAACiD,MAAAA,CAAO3uC,KAAK,GAAG,KAAA;AAAM,iBAAA;AACxE,aAAA,CAAA;iBAEE,OAAO;AACL,gBAAA,GAAG5K,KAAK;gBACR,CAACu5C,MAAAA,CAAOjD,QAAQ,GAAG;AAAE,oBAAA,GAAGt2C,KAAK,CAACu5C,MAAOjD,CAAAA,QAAQ,CAAC;AAAC,iBAAA;AACjD,aAAA,CAAA;QACJ,KAAK,WAAA;YACH,OAAO;AACL,gBAAA,GAAGt2C,KAAK;AACR,gBAAA,CAACu5C,OAAOjD,QAAQ,GAAG99C,MAAOm5C,CAAAA,WAAW,CACnCn5C,MAAOC,CAAAA,IAAI,CAACuH,KAAK,CAACu5C,OAAOjD,QAAQ,CAAC,EAAE/8C,GAAG,CAAC,CAACigD,CAAM,GAAA;AAACA,wBAAAA,CAAAA;AAAG,wBAAA,IAAA;AAAK,qBAAA,CAAA,CAAA;AAE5D,aAAA,CAAA;QACF,KAAK,aAAA;YACH,OAAO;AACL,gBAAA,GAAGx5C,KAAK;AACR,gBAAA,CAACu5C,OAAOjD,QAAQ,GAAG99C,MAAOm5C,CAAAA,WAAW,CACnCn5C,MAAOC,CAAAA,IAAI,CAACuH,KAAK,CAACu5C,OAAOjD,QAAQ,CAAC,EAAE/8C,GAAG,CAAC,CAACigD,CAAM,GAAA;AAACA,wBAAAA,CAAAA;AAAG,wBAAA,KAAA;AAAM,qBAAA,CAAA,CAAA;AAE7D,aAAA,CAAA;QACF,KAAK,OAAA;YACH,IAAI,CAACD,MAAO3uC,CAAAA,KAAK,EAAE;gBACjB,OAAO;AAAE,oBAAA,GAAG5K,KAAK;AAAE,oBAAA,CAACu5C,MAAOjD,CAAAA,QAAQ,GAAG,EAAC;AAAE,iBAAA,CAAA;aACpC,MAAA;gBACL,OAAO;AACL,oBAAA,GAAGt2C,KAAK;AACR,oBAAA,CAACu5C,MAAOjD,CAAAA,QAAQ,GAAGmD,IAAKz5C,CAAAA,KAAK,CAACu5C,MAAAA,CAAOjD,QAAQ,CAAC,EAAEiD,MAAAA,CAAO3uC,KAAK,CAAA;AAC9D,iBAAA,CAAA;AACF,aAAA;AACJ,KAAA;AACF,CAAA,CAAA;AAWA,MAAM8uC,sBAAAA,GAAiE,CAAC,EACtEjgD,KAAK,EACL4sB,OAAO,EACPszB,iBAAiB,EACjBxD,eAAe,EACa,GAAA;AAC5B,IAAA,MAAM,CAACyD,aAAeC,EAAAA,gBAAAA,CAAiB,GAAGC,UAAAA,CAAWR,SAAS,EAAC,CAAA,CAAA;AAC/D,IAAA,MAAM,CAACH,uBAAAA,EAAyBY,0BAA2B,CAAA,GAAGl9C,QAAS,CAAA,IAAA,CAAA,CAAA;AACvE,IAAA,MAAMm9C,aAAaj7C,MAAuB,CAAA,IAAA,CAAA,CAAA;AAC1C,IAAA,MAAM,CAACk7C,eAAAA,EAAiBC,kBAAmB,CAAA,GAAGr9C,QAAS,CAAA,CAAA,CAAA,CAAA;AACvD,IAAA,MAAMwgC,QAAWx9B,GAAAA,eAAAA,EAAAA,CAAAA;IAEjB9C,oBAAqB,CAAA,IAAA;QACnB,IAAIi9C,UAAAA,CAAW/6C,OAAO,EAAE;AACtB,YAAA,MAAMlF,MAASigD,GAAAA,UAAAA,CAAW/6C,OAAO,CAACk7C,YAAY,CAAA;YAC9CD,kBACEngD,CAAAA,MAAAA,GAASs/C,wBAAwBA,qBAAwBt/C,GAAAA,MAAAA,CAAAA,CAAAA;AAE7D,SAAA;KACC,EAAA;AAAC6/C,QAAAA,aAAAA;AAAevzB,QAAAA,OAAAA;AAAS2zB,QAAAA,UAAAA;AAAW,KAAA,CAAA,CAAA;AAEvC,IAAA,MAAMI,eAAkB,GAAA,IAAA;AACtB/c,QAAAA,QAAAA,CAASgd,kBAAmB,CAAA;YAAC5gD,KAAOA,EAAAA,KAAAA;AAAK,SAAA,CAAA,CAAA,CAAA;QACzCogD,gBAAiB,CAAA;YAAE7yC,IAAM,EAAA,OAAA;YAASsvC,QAAUH,EAAAA,eAAAA;YAAiBvrC,KAAO,EAAA,OAAA;AAAQ,SAAA,CAAA,CAAA;AAC9E,KAAA,CAAA;AACA,IAAA,MAAMiuC,4BAA+BrgD,GAAAA,MAAAA,CAAO0sB,MAAM,CAChD00B,gBAAgBzD,eAAAA,CAAgB,IAAI,EACpCzpC,CAAAA,CAAAA,KAAK,CAAC,CAAC8sC,IAAM,CAACA,CAAAA,CAAAA,CAAAA;IAEhB,MAAMc,SAAAA,GAAY9hD,OAAOC,IAAI,CAAC4tB,SAASltB,IAAQ,IAAA,EAAIO,CAAAA,CAAAA,MAAM,KAAK,CAAA,CAAA;AAE9D,KAAsB;AACpB02C,QAAAA,qBAAAA,EAAuBmK,QAAQ3O,gBAAkBnyC,EAAAA,KAAAA,CAAAA;AACjD02C,QAAAA,cAAAA,EAAgBoK,QAAQnO,eAAiB3yC,EAAAA,KAAAA,CAAAA;AAC3C,OAAA;IAEAsD,oBAAqB,CAAA,IAAA;AACnB,QAAA,IAAI68C,aAAe,GAACzD,eAAgB,CAAA,KAAKz4C,SAAW,EAAA;YAClDm8C,gBAAiB,CAAA;gBAAE7yC,IAAM,EAAA,MAAA;gBAAQsvC,QAAUH,EAAAA,eAAAA;gBAAiBvrC,KAAO,EAAA,OAAA;AAAQ,aAAA,CAAA,CAAA;AAC7E,SAAA;KACC,EAAA;AAACurC,QAAAA,eAAAA;AAAiByD,QAAAA,aAAAA;AAAc,KAAA,CAAA,CAAA;AAEnC,IAAA,qBACEriD,GAAC6hD,CAAAA,wBAAAA,EAAAA;gCACC7hD,GAAA,CAAC89C,gCAAgCxzC,QAAQ,EAAA;YACvCtG,KAAO,EAAA;AAACq+C,gBAAAA,aAAa,CAACzD,eAAgB,CAAA;AAAE0D,gBAAAA,gBAAAA;AAAiB,aAAA;AAEzD,YAAA,QAAA,gBAAAjiD,IAAC0B,CAAAA,KAAAA,EAAAA;gBAAIxC,SAAU,EAAA,iCAAA;;kCACbc,IAAC0B,CAAAA,KAAAA,EAAAA;wBACC82B,aAAY,EAAA,6BAAA;wBACZt5B,SAAU,EAAA,qEAAA;;0CAEVS,GAACo1C,CAAAA,uBAAAA,EAAAA;gCACC5pC,KAAO42C,EAAAA,iBAAAA;gCACP7iD,SAAU,EAAA,8DAAA;AAET6iD,gCAAAA,QAAAA,EAAAA,iBAAAA;;AAEH,0CAAA/hD,IAAA,CAAC8C,eAAMC,QAAQ,EAAA;;kDACbpD,GAACyM,CAAAA,QAAAA,EAAAA;wCACCosB,aAAY,EAAA,iCAAA;AACZt5B,wCAAAA,SAAAA,EAAW,CAAC,gHAAgH,EAC1HwjD,SACI,GAAA,QAAA,GACA,iDACL,CAAC;wCACFh3C,OAAS82C,EAAAA,eAAAA;wCACTh3C,QAAUk3C,EAAAA,SAAAA;AACX,wCAAA,QAAA,EAAA,WAAA;;kDAGD1iD,IAAC0B,CAAAA,KAAAA,EAAAA;wCAAIxC,SAAU,EAAA,iCAAA;;0DACbS,GAACuL,CAAAA,OAAAA,EAAAA;gDACCC,KACEu3C,EAAAA,SAAAA,GACI,8BACAzB,GAAAA,4BAAAA,GACE,mBACA,GAAA,qBAAA;AAGR,gDAAA,QAAA,gBAAAthD,GAACyM,CAAAA,QAAAA,EAAAA;oDACCosB,aAAY,EAAA,uCAAA;oDACZjtB,KAAM,EAAA,OAAA;oDACNG,OAAS,EAAA,IACPu1C,+BACIgB,gBAAiB,CAAA;4DACjB7yC,IAAM,EAAA,WAAA;4DACNsvC,QAAUH,EAAAA,eAAAA;AACZ,yDAAA,CAAA,GACE0D,gBAAiB,CAAA;4DACjB7yC,IAAM,EAAA,aAAA;4DACNsvC,QAAUH,EAAAA,eAAAA;AACZ,yDAAA,CAAA;oDAEJhyC,YAAW,EAAA,6BAAA;AACXqyC,oDAAAA,eAAAA,EAAe,CAACqC,4BAAAA;AAChB/hD,oDAAAA,SAAAA,EAAW8hD,qCACTC,CAAAA,4BAAAA,CAAAA;oDAEFz1C,QAAUk3C,EAAAA,SAAAA;8DAETzB,4BACC,iBAAAjhD,IAAA,CAAC8C,eAAMC,QAAQ,EAAA;;0EACbpD,GAACijD,CAAAA,qBAAAA,EAAAA;gEAAcj4C,IAAM,EAAA,EAAA;gEAAImxB,aAAY,EAAA,MAAA;;0EACrCn8B,GAACkjD,CAAAA,wBAAAA,EAAAA;gEAAel4C,IAAM,EAAA,EAAA;gEAAImxB,aAAY,EAAA,MAAA;;;AAGxC,qDAAA,CAAA,iBAAA97B,IAAA,CAAC8C,eAAMC,QAAQ,EAAA;;0EACbpD,GAACkjD,CAAAA,wBAAAA,EAAAA;gEAAel4C,IAAM,EAAA,EAAA;gEAAImxB,aAAY,EAAA,MAAA;;0EACtCn8B,GAACijD,CAAAA,qBAAAA,EAAAA;gEAAcj4C,IAAM,EAAA,EAAA;gEAAImxB,aAAY,EAAA,MAAA;;;;;;0DAM7Cn8B,GAACuL,CAAAA,OAAAA,EAAAA;gDACCC,KACEu3C,EAAAA,SAAAA,IAAaN,UAAW/6C,CAAAA,OAAO,IAAI,IAAA,IACnC+6C,UAAY/6C,EAAAA,OAAAA,EAASk7C,YAAgBd,IAAAA,qBAAAA,GACjC,gCACAF,GAAAA,uBAAAA,GACE,kBACA,GAAA,oBAAA;AAGR,gDAAA,QAAA,gBAAA5hD,GAACyM,CAAAA,QAAAA,EAAAA;oDACCosB,aAAY,EAAA,+CAAA;oDACZjtB,KAAM,EAAA,OAAA;oDACNG,OAAS,EAAA,IACPy2C,2BAA2B,CAACZ,uBAAAA,CAAAA;oDAE9Bh1C,YAAW,EAAA,iCAAA;AACXqyC,oDAAAA,eAAAA,EAAe,CAAC2C,uBAAAA;AAChB/1C,oDAAAA,QAAAA,EACEk3C,aAAaN,UAAW/6C,CAAAA,OAAO,IAAI,IACnC+6C,IAAAA,UAAAA,EAAY/6C,SAASk7C,YAAgBd,IAAAA,qBAAAA;AAEvCviD,oDAAAA,SAAAA,EAAWoiD,gCACTC,CAAAA,uBAAAA,CAAAA;8DAGDA,uBACC,iBAAA5hD,GAAA,CAACmD,eAAMC,QAAQ,EAAA;AACb,wDAAA,QAAA,gBAAApD,GAACmjD,CAAAA,mBAAAA,EAAAA;4DAAcn4C,IAAM,EAAA,EAAA;4DAAImxB,aAAY,EAAA,MAAA;;AAGvC,qDAAA,CAAA,iBAAAn8B,GAAA,CAACmD,eAAMC,QAAQ,EAAA;AACb,wDAAA,QAAA,gBAAApD,GAACojD,CAAAA,iBAAAA,EAAAA;4DAAYp4C,IAAM,EAAA,EAAA;4DAAImxB,aAAY,EAAA,MAAA;;;;;;;;;;;kCAQjDn8B,GAAC+B,CAAAA,KAAAA,EAAAA;wBACC82B,aAAY,EAAA,qBAAA;wBACZt5B,SAAU,EAAA,yDAAA;AACVyd,wBAAAA,KAAAA,EACE4kC,uBACI,GAAA;AAAEyB,4BAAAA,SAAAA,EAAW,CAAC,EAAEX,eAAgB,CAAA,EAAE,CAAC;4BAAEY,SAAW,EAAA,QAAA;yBAChDn9C,GAAAA,SAAAA;wBAEN2mB,GAAK21B,EAAAA,UAAAA;AAEJM,wBAAAA,QAAAA,EAAAA,SAAAA,iBACC/iD,GAAC+M,CAAAA,GAAAA,EAAAA;4BACC8rB,aAAY,EAAA,8BAAA;4BACZt5B,SAAU,EAAA,cAAA;AACX,4BAAA,QAAA,EAAA,+BAAA;AAID0B,yBAAAA,CAAAA,GAAAA,MAAAA,CAAOC,IAAI,CAAC4tB,OAAAA,CAAQltB,IAAI,CAAEI,CAAAA,GAAG,CAAC,CAAC2c,CAAAA,GAAAA;AAC7B,4BAAA,OAAOuiC,wBAAyBpyB,CAAAA,OAAAA,CAAQltB,IAAI,CAAC+c,EAAE,EAAEzc,KAAAA,CAAAA,CAAAA;AACnD,yBAAA,CAAA;;;;;;AAOd,CAAA;;ACrRA,MAAMqhD,aAAiB,GAAA,CAAE,EAAErhD,KAAK,EAAuB,GAAA;AACrD,IAAA,MAAM08C,eAAkBp2C,GAAAA,eAAAA,CAAgB,CAACC,KAAAA,GACvCo2C,qBAAsBp2C,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA;AAExB,IAAA,MAAM25C,iBAAoB55C,GAAAA,eAAAA,CAAgB,CAACC,KAAAA,GACzC+6C,uBAAwB/6C,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA;AAE1B,IAAA,MAAMqmB,UAAU6uB,qBAAsBz7C,CAAAA,KAAAA,CAAAA,CAAAA;AAEtC,IAAA,qBAAOlC,GAAC+B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAU,EAAA,MAAA;AAClB,QAAA,QAAA,gBAAAS,GAACmiD,CAAAA,sBAAAA,EAAAA;YACGjgD,KAAOA,EAAAA,KAAAA;YACP4sB,OAASA,EAAAA,OAAAA;YACTszB,iBAAmBA,EAAAA,iBAAAA;YACnBxD,eAAiBA,EAAAA,eAAAA;;;AAG3B,CAAA;;AC5BO,MAAM/tC,gBAAAA,GAAmB,CAACC,IAAAA,GAAiB,CAACC,GAAAA,GAAAA;;AAEjD,QAAA,OAAOC,QAAS,CAAA;YAAEtM,IAAMqM,EAAAA,GAAAA;YAAKD,IAAMA,EAAAA,IAAAA;AAAK,SAAA,CAAA,CAAA;KACxC;;ACSF;AACO,MAAM2K,eAAAA,GAAwC,CAAC,EACpDG,IAAI,EACsB,GAAA;IAC1B,MAAM5X,KAAAA,GAAQ4X,KAAK+K,QAAQ,EAAA,CAAA;AAC3B,IAAA,IAAIzR,QAAQlR,KAAQ,CAAA,EAAA;AAClB,QAAA,qBACEhE,GAAC+B,CAAAA,KAAAA,EAAAA;YAAIxC,SAAU,EAAA,6BAAA;AACZyE,YAAAA,QAAAA,EAAAA,KAAAA,CAAMhC,GAAG,CAAC,CAAC0B,CAAAA,EAAGxB,sBACblC,GAAC0b,CAAAA,KAAAA,EAAAA;oBACC3L,OAAQ,EAAA,SAAA;oBACRpP,UAAY,EAAA;wBAAEiB,IAAM,EAAA,WAAA;AAAY,qBAAA;oBAChCgK,KAAM,EAAA,cAAA;AAGLlI,oBAAAA,QAAAA,EAAAA,CAAAA;AAFI,iBAAA,EAAA,CAAC,EAAEkY,IAAKhU,CAAAA,EAAE,CAAC,OAAO,EAAE1F,MAAM,CAAC,CAAA,CAAA;;AAO1C,KAAA;AACA,IAAA,qBAAOlC,GAACC,CAAAA,MAAAA,EAAAA;AAAK,QAAA,QAAA,EAAA,OAAA;;AACf,CAAE,CAAA;AAEK,MAAM0b,+BAAAA,GAAkC,CAAC,EAC9CC,IAAI,EACsB,GAAA;IAC1B,MAAM5X,KAAAA,GAAQ4X,KAAK+K,QAAQ,EAAA,CAAA;AAC3B,IAAA,IAAIzR,QAAQlR,KAAQ,CAAA,EAAA;AAClB,QAAA,qBACEhE,GAAC+B,CAAAA,KAAAA,EAAAA;YAAIxC,SAAU,EAAA,6BAAA;AACZyE,YAAAA,QAAAA,EAAAA,KAAAA,CAAMhC,GAAG,CAAC,CAAC0B,CAAAA,EAAGxB,sBACblC,GAAC0b,CAAAA,KAAAA,EAAAA;oBACC3L,OAAQ,EAAA,QAAA;oBACRnE,KAAOlI,EAAAA,CAAAA,KAAM,aAAa,OAAU,GAAA,MAAA;oBACpC/C,UAAY,EAAA;wBAAEiB,IAAM,EAAA,WAAA;AAAY,qBAAA;AAG/B8B,oBAAAA,QAAAA,EAAAA,CAAAA;AAFI,iBAAA,EAAA,CAAC,EAAEkY,IAAKhU,CAAAA,EAAE,CAAC,OAAO,EAAE1F,MAAM,CAAC,CAAA,CAAA;;AAO1C,KAAA;AACA,IAAA,qBAAOlC,GAACC,CAAAA,MAAAA,EAAAA;AAAK,QAAA,QAAA,EAAA,OAAA;;AACf,CAAE,CAAA;AAEF,MAAMwjD,iBAAoB,GAAA,CAAC,EAAE7nC,IAAI,EAA6B,GAAA;AAC5D,IAAA,qBAAO5b,GAACC,CAAAA,MAAAA,EAAAA;AAAM2b,QAAAA,QAAAA,EAAAA,IAAAA,CAAK+K,QAAQ,EAAA;;AAC7B,CAAA,CAAA;AAEA,MAAM+8B,wBAA2B,GAAA;IAC/BrmC,gBAAkB1B,EAAAA,+BAAAA;IAClBjI,OAAS+H,EAAAA,eAAAA;AACX,CAAA,CAAA;AAEA,MAAMI,iBAAiB,CACrB,EAAED,IAAI,EAA6B,EACnC,GAAG+nC,IAAAA,GAAAA;AAEH,IAAA,qBACE3jD,GAACG,CAAAA,GAAAA,EAAAA;AACCX,QAAAA,IAAAA,EAAM,CAAC,EAAEmkD,IAAI,CAAC,CAAE,CAAA,CAACC,OAAO,CAAC,EAAEhoC,IAAAA,CAAK+K,QAAQ,EAAA,CAAG,CAAC;QAC5CvmB,MAAO,EAAA,QAAA;QACPE,GAAI,EAAA,YAAA;AAEJ,QAAA,QAAA,gBAAAD,IAAC6O,CAAAA,IAAAA,EAAAA;YAAKkJ,CAAE,EAAA,MAAA;YAAOujB,EAAG,EAAA,WAAA;YAAY3c,EAAI,EAAA,GAAA;;AAC/B,gBAAA,GAAA;AACApD,gBAAAA,IAAAA,CAAK+K,QAAQ,EAAA;AAAiB,gBAAA,GAAA;;;;AAIvC,CAAA,CAAA;AAEA,MAAMk9B,8BAA8B,CAClC,EAAEjoC,IAAI,EAA6B,EACnC,GAAG+nC,IAAAA,GAAAA;AAEH,IAAA,IAAInkD,IAAO,GAAA,IAAA,CAAA;AACX,IAAA,IACE,OAAOmkD,IAAI,CAAC,CAAA,CAAE,KAAK,QACnB1iD,IAAAA,MAAAA,CAAOC,IAAI,CAACyiD,IAAI,CAAC,CAAA,CAAE,CAAEppC,CAAAA,QAAQ,CAAC,YAC9B,CAAA,EAAA;AACA,QAAA,MAAMupC,OAAUH,GAAAA,IAAI,CAAC,CAAA,CAAE,CAACI,UAAU,CAAA;AAClCvkD,QAAAA,IAAAA,GAAOskD,OAAO,CAACloC,IAAK+K,CAAAA,QAAQ,GAAa,IAAI,IAAA,CAAA;AAC/C,KAAA;IACA,IAAI,CAACnnB,IAAM,EAAA,qBAAOa,IAAC6O,CAAAA,IAAAA,EAAAA;QAAK8P,EAAI,EAAA,GAAA;;AAAK,YAAA,GAAA;AAAEpD,YAAAA,IAAAA,CAAK+K,QAAQ,EAAA;AAAgB,YAAA,GAAA;;;AAEhE,IAAA,qBACE3mB,GAACG,CAAAA,GAAAA,EAAAA;QAAEX,IAAM,EAAA,CAAC,EAAEA,IAAAA,CAAK,CAAC;QAAEY,MAAO,EAAA,QAAA;QAASE,GAAI,EAAA,YAAA;AACtC,QAAA,QAAA,gBAAAD,IAAC6O,CAAAA,IAAAA,EAAAA;YAAKkJ,CAAE,EAAA,MAAA;YAAOujB,EAAG,EAAA,WAAA;YAAY3c,EAAI,EAAA,GAAA;;AAC/B,gBAAA,GAAA;AACApD,gBAAAA,IAAAA,CAAK+K,QAAQ,EAAA;AAAiB,gBAAA,GAAA;;;;AAIvC,CAAA,CAAA;AAEA,MAAMq9B,uBAA0B,GAAA;IAC9BtwC,OAASmI,EAAAA,cAAAA;IACTooC,gBAAkBJ,EAAAA,2BAAAA;AACpB,CAAA,CAAA;AAEA,IAAIrxC,UAAAA,CAAAA;MAES0xC,gCACX,GAAA,IAAA;AACE,IAAA,IAAI,CAAC1xC,UAAU,EAAA;AACbA,QAAAA,UAAAA,GAAW,IAAI6d,0BAAAA,EAAAA,CAAAA;AACjB,KAAA;IACA,OAAO7d,UAAAA,CAAAA;AACT,EAAE;AAEJ;MACa2xC,oCAAuC,GAAA,IAAA;AAClDD,IAAAA,gCAAAA,EAAAA,CAAmCtzB,uBAAuB,CAAC;QACzD5sB,KAAO,EAAA;YACL0P,OAAS+vC,EAAAA,iBAAAA;AACX,SAAA;AACF,KAAA,CAAA,CAAA;AACAS,IAAAA,gCAAAA,EAAAA,CAAmCtzB,uBAAuB,CAAC;QACzDxT,KAAOsmC,EAAAA,wBAAAA;AACT,KAAA,CAAA,CAAA;AACAQ,IAAAA,gCAAAA,EAAAA,CAAmCtzB,uBAAuB,CAAC;QACzD1tB,IAAM8gD,EAAAA,uBAAAA;AACR,KAAA,CAAA,CAAA;AACF;;ACpIA,SAASI,gBAAgBrvC,GAAQ,EAAA;;AAE/B,IAAA,OACE,OAAOA,GAAAA,KAAQ,QACdA,KAAAA,GAAI2M,CAAAA,IAAI,KAAKvb,SAAAA,IAAa,OAAO4O,GAAAA,CAAI2M,IAAI,KAAK,QAAO,CAAA,CAAA;AAE1D,CAAA;AAEA,MAAM2iC,WAAAA,GAAc,CAClB3iC,IACAxf,EAAAA,KAAAA,GAAAA;AAEA,IAAA,IAAIwf,IAASvb,KAAAA,SAAAA,IAAaub,IAAS,KAAA,IAAA,EAAM,OAAO,EAAC,CAAA;IACjD,IAAIA,IAAAA,CAAKA,IAAI,KAAKvb,SAAAA,IAAaub,KAAKA,IAAI,KAAK,IAAM,EAAA,OAAO,EAAC,CAAA;IAE3D,OAAOzM,KAAAA,CAAMC,OAAO,CAACwM,IAAAA,CAAKA,IAAI,CAACxf,KAAAA,CAAM,CAAKwf,IAAAA,IAAAA,CAAKA,IAAI,CAACxf,MAAM,CAACC,MAAM,GAAG,CAAA,GAChEuf,IAAKA,CAAAA,IAAI,CAACxf,KAAM,CAAA,CAAC,CAAE,CAAA,GACnB,EAAC,CAAA;AACP,CAAA,CAAA;AAEO,MAAMoiD,oBAAoB,CAAC,EAChC18C,EAAE,EACF1F,KAAK,EACLqmB,WAAW,EACY,GAAA;;IAEvB,MAAMhF,OAAAA,GAAUgF,WAAYg8B,CAAAA,aAAa,EAAEhhC,OAAAA,CAAAA;IAC3C,MAAM,EAAE7B,IAAI,EAAEyF,SAAS,EAAEC,OAAO,EAAE,GAAGo9B,kBAAmB,CAAA;AACtDlqB,QAAAA,KAAAA,EAAO,CAAC;AACJ,QAAA,EAAEp4B,KAAM,CAAA;QACR,EAAEqmB,WAAAA,CAAY5G,MAAM,CAAC;;OAEtB,CAAC;QACJ8iC,SAAW,EAAA;YACThhD,MAAQ,EAAA;gBACNihD,GAAK,EAAA;AACH,oBAAA;wBACEC,EAAI,EAAA;4BACF,CAACphC,OAAAA,IAAW,IAAI;AAAC3b,gCAAAA,EAAAA;AAAG,6BAAA;AACtB,yBAAA;AACF,qBAAA;AACD,iBAAA;AACH,aAAA;AACF,SAAA;AACF,KAAA,CAAA,CAAA;IAEA,IAAI,CAAC2b,OAAWA,IAAAA,OAAAA,KAAY,IAAM,EAAA;AAChC,QAAA,qBACEvjB,GAACyyC,CAAAA,SAAAA,EAAAA;YAAU/oC,OAAS,EAAA,gDAAA;;AAExB,KAAA;AAEA,IAAA,IAAI0d,OAAS,EAAA;AACX,QAAA,qBAAOpnB,GAACyyC,CAAAA,SAAAA,EAAAA;YAAU/oC,OAAS,EAAA,oCAAA;;AAC7B,KAAA;AAEA,IAAA,MAAMk7C,YAAYR,eAAgB1iC,CAAAA,IAAAA,CAAAA,GAAQ2iC,WAAY3iC,CAAAA,IAAAA,EAAMxf,SAAS,EAAC,CAAA;AAEtE,IAAA,MAAM2iD,IAAO5jD,GAAAA,MAAAA,CAAO8R,OAAO,CAAC6xC,SAAW5iD,CAAAA,CAAAA,GAAG,CAAC,CAAC,CAACqR,KAAAA,EAAOrP,KAAM,CAAA,iBACxD3D,IAACq7B,CAAAA,IAAAA,EAAAA;;8BACC17B,GAAC27B,CAAAA,IAAAA,EAAAA;AACC,oBAAA,QAAA,gBAAA37B,GAACkP,CAAAA,IAAAA,EAAAA;wBAAK8P,EAAG,EAAA,MAAA;AAAQ3L,wBAAAA,QAAAA,EAAAA,KAAAA;;;8BAEnBrT,GAAC27B,CAAAA,IAAAA,EAAAA;AACC,oBAAA,QAAA,gBAAA37B,GAACkP,CAAAA,IAAAA,EAAAA;AAAMlL,wBAAAA,QAAAA,EAAAA,KAAAA,GAASA,KAAmB,GAAA,EAAA;;;;AAL9BqP,SAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;AASX,IAAA,qBACEhT,IAACujB,CAAAA,KAAAA,EAAAA;;0BACC5jB,GAACoqB,CAAAA,cAAAA,EAAAA;gBAAeC,OAASlD,EAAAA,SAAAA;;0BACzB9mB,IAAC6O,CAAAA,IAAAA,EAAAA;gBAAKtD,KAAM,EAAA,WAAA;;AAAY,oBAAA,cAAA;AAAahE,oBAAAA,EAAAA;;;0BACrCvH,IAAC68B,CAAAA,KAAAA,EAAAA;gBAAM4nB,eAAe,EAAA,IAAA;gBAACC,iBAAiB,EAAA,IAAA;;kCACtC/kD,GAACo9B,CAAAA,OAAAA,EAAAA;AACC,wBAAA,QAAA,gBAAA/8B,IAACq7B,CAAAA,IAAAA,EAAAA;;8CACC17B,GAACq9B,CAAAA,IAAAA,EAAAA;AAAG,oCAAA,QAAA,EAAA,OAAA;;8CACJr9B,GAACq9B,CAAAA,IAAAA,EAAAA;AAAG,oCAAA,QAAA,EAAA,OAAA;;;;;kCAGRr9B,GAACs9B,CAAAA,OAAAA,EAAAA;AAAOunB,wBAAAA,QAAAA,EAAAA,IAAAA;;;;;;AAIhB,CAAE;;ACxFF,IAAIryC,QAAAA,CAAAA;AAEJ,MAAMue,sBAAyB,GAAA;IAC7Bi0B,YAAc,EAAA;QACZtxC,OAAS4wC,EAAAA,iBAAAA;AACX,KAAA;AACF,CAAA,CAAA;AAEA,MAAMW,gCACJ,GAAA,IAAA;AACE,IAAA,IAAI,CAACzyC,QAAU,EAAA;AACbA,QAAAA,QAAAA,GAAW,IAAI6d,0BAAAA,EAAAA,CAAAA;AACjB,KAAA;IACA,OAAO7d,QAAAA,CAAAA;AACT,EAAA;MAEW0yC,4CAA+C,GAAA,IAAA;AAC1DD,IAAAA,gCAAAA,EAAAA,CAAmCr0B,uBAAuB,CACxDG,sBAAAA,CAAAA,CAAAA;AAEJ;;AClBA,MAAMo0B,aAAgB,GAAA;IACpBvhB,IAAM,EAAA,aAAA;IACNn2B,MAAQ,EAAA,yBAAA;IACRjN,KAAO,EAAA,mCAAA;IACPmkB,KAAO,EAAA,iBAAA;AACT,CAAA,CAAA;AAEO,MAAMygC,YAAe,GAAA,CAE1B,EACA5kD,KAAK,EACLoH,EAAE,EACFjH,UAAU,EACV0kD,KAAK,EACLC,UAAU,EACVjgC,OAAO,EACPghB,eAAAA,GAAkB,IAAI,EACtBC,mBAAsB,GAAA,IAAI,EAC1BC,aAAAA,GAAgB,IAAI,EACpBv7B,IAAO,GAAA,MAAM,EACY,GAAA;IACzB,MAAM,CAACyZ,MAAQ,EAAA,EAAEC,IAAI,EAAEC,KAAK,EAAE,CAAC,GAAGC,aAAAA,CAAchd,EAAOzB,KAAAA,SAAAA,CAAAA,CAAAA;IAEvD,MAAMo/C,OAAAA,GAAU1jC,QACd,IAAMjhB,8BAAAA,CAA+BukD,eAAexkD,UAAc,IAAA,IAAI,IACtE,CAAA,EAAA;AAACA,QAAAA,UAAAA;AAAW,KAAA,CAAA,CAAA;IAGd8G,SAAU,CAAA,IAAA;AACR,QAAA,IAAIG,OAAOzB,SAAWue,EAAAA,IAAAA,EAAAA,CAAAA;AACjBC,aAAAA,KAAAA,EAAAA,CAAAA;KACJ,EAAA;AAACA,QAAAA,KAAAA;AAAO/c,QAAAA,EAAAA;AAAI8c,QAAAA,IAAAA;AAAK,KAAA,CAAA,CAAA;AAEpB,IAAA,qBACE1kB,GAACwmC,CAAAA,KAAAA,EAAAA;QACC/hB,MAAQA,EAAAA,MAAAA;QACRY,OAAS,EAAA,IAAA;AACPV,YAAAA,KAAAA,EAAAA,CAAAA;AACAU,YAAAA,OAAAA,IAAWA,OAAQzd,CAAAA,EAAAA,CAAAA,CAAAA;AACrB,SAAA;QACApH,KAAOA,EAAAA,KAAAA;QACPimC,YAAc,EAAA,IAAA;QACdJ,eAAiBA,EAAAA,eAAAA;QACjBC,mBAAqBA,EAAAA,mBAAAA;QACrBC,aAAeA,EAAAA,aAAAA;QACfv7B,IAAMA,EAAAA,IAAAA;QACNw6C,OAAQ,EAAA,KAAA;QACR7kD,UAAY4kD,EAAAA,OAAAA;QACZE,OAAS,EAAA,CAAA;kBAERJ,KAAM,CAAA;YAAEz9C,EAAIA,EAAAA,EAAAA;AAAIyd,YAAAA,OAAAA;AAAS,YAAA,GAAGigC,UAAU;AAAC,SAAA,CAAA;;AAG9C,CAAE;;ACtBF,MAAMI,wBAA2B,GAAA,qCAAA,CAAA;AACjC,MAAMC,kBAAqB,GAAA,KAAA,CAAA;AAE3B,MAAMC,cAAc,CAAC7wC,GAAAA,GAAAA;AACnB,IAAA,IAAIE,KAAMC,CAAAA,OAAO,CAACH,GAAAA,CAAAA,EAAM,OAAO,KAAA,CAAA;IAE/B,OAAOA,GAAAA,KAAQ,IAAQ,IAAA,OAAOA,GAAQ,KAAA,QAAA,CAAA;AACxC,CAAA,CAAA;AAWA;;;;;;AAMC,IACD,MAAM8wC,aAAgB,GAAA,CAAC,EAAE3jD,KAAK,EAAEqmB,WAAW,EAAsB,GAAA;AAC/D,IAAA,MAAM,CAACtB,UAAAA,EAAYD,aAAc,CAAA,GAAG1hB,QAA8B,CAAA;QAChEq5B,SAAW,EAAA,CAAA;QACX5J,QAAU,EAAA,EAAA;AACZ,KAAA,CAAA,CAAA;AAEA,IAAA,MAAM+wB,gBAAmBV,GAAAA,YAAAA,CAAAA;AAEzB,IAAA,MAAM,CAACl+B,OAAAA,EAASH,UAAW,CAAA,GAAGzhB,SAA2B,EAAE,CAAA,CAAA;AAC3D,IAAA,MAAM,CAACygD,YAAAA,EAAcC,eAAgB,CAAA,GAAG1gD,SAAgC,EAAC,CAAA,CAAA;IAEzE,MAAM2gD,YAAAA,GAAepkC,OACnB,CAAA,IACEojC,gCAAmChnC,EAAAA,CAAAA,WAAW,CAC5C,cAAA,EACAsK,WAAag8B,EAAAA,aAAAA,EAAec,KAAS,IAAA,SAAA,CAAA,EAEzC,EAAE,CAAA,CAAA;AAGJ,IAAA,MAAM99B,OAAOld,kBAAmB,CAAA,IAAA;;;AAG9B,QAAA,OAAOke,WAAY5G,CAAAA,MAAM,CAAC3f,GAAG,CAAC,CAACqR,KAAAA,GAAAA;AAC7B,YAAA,MAAMoU,SAAYc,GAAAA,WAAAA,EAAaP,OAAS,GAAC3U,KAAM,CAAA,CAAA;YAE/C,MAAM6yC,gBAAAA,GAAmBz+B,SAAWhY,EAAAA,IAAAA,GAChCy0C,gCAAmCjmC,EAAAA,CAAAA,WAAW,CAC5CwJ,SAAWhY,EAAAA,IAAAA,EACXgY,SAAWI,EAAAA,kBAAAA,IAAsB,SAEnC1hB,CAAAA,GAAAA,SAAAA,CAAAA;YAEJ,MAAMggD,sBAAAA,GACJ1+B,WAAWvV,MAAU0zC,IAAAA,WAAAA,CAAYn+B,WAAWvV,MACxCuV,CAAAA,GAAAA,SAAAA,EAAWvV,SACX,EAAC,CAAA;YACP,OAAO;gBACLtK,EAAIyL,EAAAA,KAAAA;gBACJA,KAAOA,EAAAA,KAAAA;gBACPqU,WAAarU,EAAAA,KAAAA;gBACb5F,MAAQga,EAAAA,SAAAA,EAAWjnB,SAASutC,gBAAiB16B,CAAAA,KAAAA,CAAAA;AAC7CsU,gBAAAA,UAAAA,EAAYF,SAAW2+B,EAAAA,YAAAA,GACnBv1C,gBAAiB4W,CAAAA,SAAAA,CAAU2+B,YAAY,CACvCjgD,GAAAA,SAAAA;gBACJyhB,IACEs+B,EAAAA,gBAAAA,IAAoBz+B,WAAWvV,MAC3B,GAAA,CAAC0J,OACCsqC,gBAAiBtqC,CAAAA,IAAAA,EAAMuqC,sBACzBD,CAAAA,GAAAA,gBAAAA,GACAA,gBACA//C,GAAAA,SAAAA;AAEN6E,gBAAAA,IAAAA,EAAMyc,SAAWllB,EAAAA,KAAAA;AACjB8jD,gBAAAA,aAAAA,EAAe5+B,WAAW6+B,QAAYngD,IAAAA,SAAAA;AACxC,aAAA,CAAA;AACF,SAAA,EAAG,EAAE,CAAA,CAAA;KACJ,EAAA;AAACoiB,QAAAA,WAAAA;AAAY,KAAA,CAAA,CAAA;;IAGhB,MAAM5G,MAAAA,GAASE,OAAQ,CAAA,IAAM0F,IAAKvlB,CAAAA,GAAG,CAAC,CAACukD,MAAAA,GAAWA,MAAOlzC,CAAAA,KAAK,CAAG,EAAA;AAACkU,QAAAA,IAAAA;AAAK,KAAA,CAAA,CAAA;IAEvE,MAAMi/B,QAAAA,GAAWp9C,YAAY,CAACmf,WAAAA,GAAAA;AAC5B,QAAA,MAAM,EAAEg8B,aAAa,EAAE,GAAGh8B,eAAe,EAAC,CAAA;AAC1C,QAAA,MAAMhF,UAA8BghC,aAAehhC,EAAAA,OAAAA,CAAAA;AACnD,QAAA,OAAO,CACLkjC,WAAAA,EACAC,MACAC,EAAAA,UAAAA,GAEApjC,WAAWtiB,MAAOC,CAAAA,IAAI,CAACulD,WAAAA,CAAAA,CAAalsC,QAAQ,CAACgJ,OAAAA,CAAAA,GACxCkjC,WAAW,CAACljC,QAAQ,GACrBpd,SAAAA,CAAAA;AACR,KAAA,EAAG,EAAE,CAAA,CAAA;AAEL,IAAA,MAAMygD,aAAgBp+C,GAAAA,eAAAA,CAAgB,CAACC,KAAAA,GACrCo+C,mBAAmBp+C,KAAOvG,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;IAG5B,MAAM,EAAEwf,IAAI,EAAEyF,SAAS,EAAEC,OAAO,EAAEC,UAAU,EAAE,GAC5Cy/B,gCAAiC,CAAA;QAC/Br3C,IAAMvN,EAAAA,KAAAA;QACNyf,MAAQA,EAAAA,MAAAA;QACRmN,OAAS83B,EAAAA,aAAAA;AACT9xB,QAAAA,MAAAA,EAAQ7N,UAAW0X,CAAAA,SAAS,GAAG1X,UAAAA,CAAW8N,QAAQ;AAClD/pB,QAAAA,IAAAA,EAAMic,WAAW8N,QAAQ;AACzB4lB,QAAAA,IAAAA,EACEzzB,QAAQ/kB,MAAM,GAAG,IACZ+kB,OAAQllB,CAAAA,GAAG,CAAC,CAAC0B,CAAAA,GAAAA;YACZ,OAAO;AAAE,gBAAA,CAACA,EAAEkE,EAAE,GAAGlE,CAAEqjD,CAAAA,IAAI,GAAG,MAAS,GAAA,KAAA;AAAM,aAAA,CAAA;SAE3C5gD,CAAAA,GAAAA,SAAAA;AACN6gD,QAAAA,aAAAA,EAAeC,cAActxC,UAAU;AACzC,KAAA,CAAA,CAAA;AAEF,IAAA,MAAM,EAAEuxC,aAAa,EAAEC,UAAU,EAAE,GAAG98C,kBAAmB,CAAA,IAAA;QACvD,MAAM+8C,SAAAA,GACJ,CAAC7+B,WAAAA,EAAa6+B,aAAa7+B,WAAa6+B,EAAAA,SAAAA,EAAW3sC,KAAI,KACvDkrC,kBAAAA,CAAAA;QACF,MAAMuB,aAAAA,GAAgB3+B,WAAa6+B,EAAAA,SAAAA,GAC/BtuC,IAAK6gC,CAAAA,GAAG,CACNyN,SACA1lC,EAAAA,IAAAA,EAAMA,IAAK2lC,CAAAA,YAAAA,GAAenlD,KAAAA,CAAM,CAAColD,WAAergC,IAAAA,UAAAA,CAAW8N,QAAQ,CAAA,GAErErT,IAAMA,EAAAA,IAAAA,CAAK2lC,YAAc,GAACnlD,KAAM,CAAA,CAAColD,WAAergC,IAAAA,UAAAA,CAAW8N,QAAQ,CAAA;AACvE,QAAA,MAAMoyB,aAAa5+B,WAAa6+B,EAAAA,SAAAA,GAC5B7+B,WAAa6+B,EAAAA,SAAAA,EAAW57C,SAASk6C,wBACjC,GAAA,gBAAA,CAAA;QACJ,OAAO;AAAEwB,YAAAA,aAAAA;AAAeC,YAAAA,UAAAA;AAAW,SAAA,CAAA;KAClC,EAAA;AAAC5+B,QAAAA,WAAAA;AAAa7G,QAAAA,IAAAA;AAAMuF,QAAAA,UAAAA,CAAW8N,QAAQ;AAAE7yB,QAAAA,KAAAA;AAAM,KAAA,CAAA,CAAA;AAClD;;;;;;;;;;;;;;;;;MAmBA,MAAM4lB,QAAQC,oBAAiC,CAAA;QAC7CC,OAAST,EAAAA,IAAAA;AACT7F,QAAAA,IAAAA,EAAMA,IAAMA,EAAAA,IAAAA,GAAOxf,KAAAA,CAAM,IAAI,EAAE;QAC/B+lB,aAAe,EAAA,IAAA;QACfC,gBAAkB,EAAA,IAAA;QAClBY,kBAAoB,EAAA,IAAA;QACpBX,oBAAsB,EAAA,KAAA;QACtBC,kBAAoBpB,EAAAA,aAAAA;QACpBqB,eAAiBtB,EAAAA,UAAAA;QACjB4B,gBAAkB,EAAA,KAAA;AAClB69B,QAAAA,QAAAA,EAAUA,QAASj+B,CAAAA,WAAAA,CAAAA;QACnBE,QAAUy+B,EAAAA,aAAAA;QACVx+B,KAAOzC,EAAAA,UAAAA;QACPshC,qBAAuB,EAAA,OAAA;AACvBj/B,QAAAA,kBAAAA,EAAoBC,aAAaC,cAAkB,IAAA,KAAA;QACnDg/B,YAAc,EAAA;YAAEC,WAAaN,EAAAA,UAAAA;AAAW,SAAA;QACxCO,sBAAwB,EAAA;YACtBC,kBAAoB,EAAA;AAAC,gBAAA,GAAA;AAAK,gBAAA,IAAA;AAAM,gBAAA,IAAA;AAAM,gBAAA,IAAA;AAAM,gBAAA,KAAA;AAAM,aAAA;YAClDC,SAAW,EAAA,KAAA;AACb,SAAA;QACAl+B,yBAA2B,EAAA;YACzB1M,KAAO,EAAA;gBACL,6BAA+B,EAAA,8BAAA;gBAC/BpR,KAAO,EAAA,CAAC,sCAAsC,CAAC;AACjD,aAAA;AAYF,SAAA;QACAnD,KAAO,EAAA;AACL0e,YAAAA,SAAAA;AACAF,YAAAA,UAAAA;AACAC,YAAAA,OAAAA;YACAgC,gBAAkB7B,EAAAA,UAAAA;YAClB8B,eAAiB/B,EAAAA,OAAAA;YACjBygC,OAAS,EAAA,IAAA;YACT9B,YAAcA,EAAAA,YAAAA;AAChB,SAAA;QACA/7B,wBACEzB,EAAAA,WAAAA,CAAYg8B,aAAa,EAAEuD,IAAS,KAAA,OAAA,GAChC,CAAC,EAAE/2C,GAAG,EAAE,IAAM;gBACZhF,OAAS,EAAA,IAAA;oBACP,IAAI9K,MAAAA,CAAOC,IAAI,CAAC6kD,YAAAA,CAAAA,CAAcxrC,QAAQ,CAACxJ,GAAAA,CAAInJ,EAAE,CAAG,EAAA;AAC9Co+C,wBAAAA,eAAAA,CAAgB,EAAC,CAAA,CAAA;qBACZ,MAAA;wBACLA,eAAgB,CAAA;4BAAE,CAACj1C,GAAAA,CAAInJ,EAAE,GAAa,IAAA;AAAK,yBAAA,CAAA,CAAA;AAC7C,qBAAA;AACF,iBAAA;gBACAmgD,EAAI,EAAA;oBACFC,MAAQ,EAAA,SAAA;AACV,iBAAA;AACF,aAAA,IACA,EAAC;AACT,KAAA,CAAA,CAAA;IACA,qBACE3nD,IAAA,CAAC8C,eAAMC,QAAQ,EAAA;;AACZnC,YAAAA,MAAAA,CAAOC,IAAI,CAAC6kD,YAAAA,CAAAA,CAAc5jD,MAAM,GAAG,kBAClCnC,GAAC8lD,CAAAA,gBAAAA,EAAAA;AACCtlD,gBAAAA,KAAAA,EAAO+nB,aAAag8B,aAAe/jD,EAAAA,KAAAA;AACnCoH,gBAAAA,EAAAA,EACE3G,MAAOC,CAAAA,IAAI,CAAC6kD,YAAAA,CAAAA,CAAc5jD,MAAM,GAAG,CAC/BlB,GAAAA,MAAAA,CAAOC,IAAI,CAAC6kD,YAAckC,CAAAA,CAAAA,EAAE,CAAC,CAC7B9hD,CAAAA,GAAAA,SAAAA;gBAENkf,OAAS,EAAA,IAAM2gC,gBAAgB,EAAC,CAAA;gBAChCX,KAAOY,EAAAA,YAAAA;AACPtlD,gBAAAA,UAAAA,EAAY4nB,aAAag8B,aAAe5jD,EAAAA,UAAAA;gBACxC2kD,UAAY,EAAA;AACVpjD,oBAAAA,KAAAA;AACAqmB,oBAAAA,WAAAA;AACA,oBAAA,GAAIA,WAAag8B,EAAAA,aAAAA,EAAeryC,MAAU,IAAA,EAAE;AAC9C,iBAAA;AAEA,aAAA,CAAA,GAAA,IAAA;0BAEJlS,GAAC+B,CAAAA,KAAAA,EAAAA;gBAAIxC,SAAU,EAAA,gCAAA;AACb,gBAAA,QAAA,gBAAAS,GAACsqB,CAAAA,iBAAAA,EAAAA;oBAAkBxC,KAAOA,EAAAA,KAAAA;;;;;AAIlC,CAAA;;AC/QA,MAAMogC,WAAAA,GAAc,CAAC,EAAE18C,KAAK,EAAEmpB,SAAS,EAAE8Y,MAAM,EAAoB,GAAA;;AAEjE,IAAA,qBACEptC,IAAC0B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAU,EAAA,MAAA;;0BACbS,GAACoqB,CAAAA,cAAAA,EAAAA;AAAeC,gBAAAA,OAAAA,EAAS,CAACsK,SAAAA;;0BAC1B30B,GAAC8tB,CAAAA,KAAAA,EAAAA;gBACCiS,MAAO,EAAA,IAAA;gBACPhzB,CAAE,EAAA,IAAA;gBACFizB,UAAU,EAAA,IAAA;gBACVzgC,SAAU,EAAA,+CAAA;AAET,gBAAA,QAAA,EAAA,CAAC,EAAEkuC,MAAQv0B,EAAAA,cAAAA,EAAAA,IAAoB,MAAM,CAAC,EAAE1N,MAAM,CAAC;;;;AAIxD,CAAA;;ACSA;;;;AAIC,IACM,MAAM28C,oBAAAA,GAAuB,CAAC,EAAEp8C,OAAO,EAA2B,GAAA;AACvE,IAAA,qBACE1L,IAAC0B,CAAAA,KAAAA,EAAAA;;0BACC/B,GAAC+M,CAAAA,GAAAA,EAAAA;AAAE,gBAAA,QAAA,EAAA,kDAAA;;0BACH/M,GAAC6P,CAAAA,MAAAA,EAAAA;gBACCE,OAAQ,EAAA,OAAA;AACRrD,gBAAAA,WAAAA,gBAAa1M,GAAC+4B,CAAAA,iBAAAA,EAAAA;oBAAUoD,aAAY,EAAA,MAAA;;gBACpCnf,KAAO,EAAA;oBAAEpR,KAAO,EAAA,SAAA;oBAAWo8C,MAAQ,EAAA,SAAA;AAAU,iBAAA;gBAC7Cj8C,OAASA,EAAAA,OAAAA;AACV,gBAAA,QAAA,EAAA,iBAAA;;;;AAKP,CAAE;;AC1CF,MAAMq8C,mBAAmB,CAACz3B,KAAAA,GAAAA;IACxBlnB,gBAAiB,CAAA;AACfC,QAAAA,OAAAA,EAASinB,MAAMjnB,OAAO;AACxB,KAAA,CAAA,CAAA;AACF,CAAA,CAAA;AAeA,MAAM2+C,oBAAAA,GAAuB,CAAC,EAC5BC,QAAWp+C,GAAAA,MAAAA,CAAOg+B,aAAa,EAC/BqgB,QAAWr+C,GAAAA,MAAAA,CAAOs+C,iBAAiB,EACnCC,IAAI,EACJC,kBAAkB,EAClBC,gBAAAA,GAAmB,KAAK,EACxBC,cAAc,EACdC,UAAU,EACVC,WAAc,GAAA,CAACxoC,CAAc,GAAA,IAAI,EACJ,GAAA;AAC7B,IAAA,MAAM,CAACkP,MAAAA,EAAQu5B,SAAU,CAAA,GAAGzjD,QAAS,CAAA,KAAA,CAAA,CAAA;AACrC,IAAA,MAAMwgC,QAAWx9B,GAAAA,eAAAA,EAAAA,CAAAA;IAEjB,MAAM0gD,WAAAA,GAAcztB,uBAClB,CAAC5K,KAAAA,GAAAA;QACC,MAAMs4B,YAAAA,GAAuBt4B,MAAMjnB,OAAO,CAAA;QAC1C,IACEu/C,YAAAA,KAAiB,uBACjBA,IAAAA,YAAAA,KAAiB9iD,SACjB,EAAA;AACA2/B,YAAAA,QAAAA,CAAS97B,SAAU,CAAA;gBAAEC,KAAOs+C,EAAAA,QAAAA;gBAAU7+C,OAASu/C,EAAAA,YAAAA;AAAa,aAAA,CAAA,CAAA,CAAA;SACvD,MAAA,IACLA,iBACA,2DACA,EAAA;AACAnjB,YAAAA,QAAAA,CAAS97B,SAAU,CAAA;gBAAEC,KAAOq+C,EAAAA,QAAAA;gBAAU5+C,OAASu/C,EAAAA,YAAAA;AAAa,aAAA,CAAA,CAAA,CAAA;SACvD,MAAA;AACLnjB,YAAAA,QAAAA,CACE97B,SAAU,CAAA;gBACRC,KAAOs+C,EAAAA,QAAAA;AACP7+C,gBAAAA,OAAAA,EAASg/C,kBAAsBO,IAAAA,YAAAA;AACjC,aAAA,CAAA,CAAA,CAAA;AAEJ,SAAA;KAEF,EAAA;AAACV,QAAAA,QAAAA;AAAUD,QAAAA,QAAAA;AAAUI,QAAAA,kBAAAA;AAAoB5iB,QAAAA,QAAAA;AAAS,KAAA,CAAA,CAAA;IAGpD,MAAMojB,wBAAAA,GAA2B9/C,YAC/B,CAAC+/C,UAAAA,GAAAA;QACC1/C,gBAAiB,CAAA;AACfC,YAAAA,OAAAA,gBACE1J,GAACmoD,CAAAA,oBAAAA,EAAAA;gBACCp8C,OAAS,EAAA,IAAA;AACPo9C,oBAAAA,UAAAA,CAAWC,KAAK,EAAA,CAAA;AAChBC,oBAAAA,kBAAAA,EAAAA,CAAAA;AACA,oBAAA,IAAIZ,IAAM,EAAA;AACRA,wBAAAA,IAAAA,EAAAA,CAAAA;AACF,qBAAA;AACF,iBAAA;;AAGJn9B,YAAAA,MAAAA,EAAQ,KAAO;oBACb1pB,IAAM,EAAA;wBACJ+nB,SAAW,EAAA,QAAA;AACXnY,wBAAAA,OAAAA,EAASm3C,mBAAmB,MAAS,GAAA,OAAA;AACvC,qBAAA;oBACAW,WAAa,EAAA;wBACX19C,KAAO,EAAA,OAAA;wBACP,SAAW,EAAA;4BACTqR,eAAiB,EAAA,gBAAA;AACnB,yBAAA;AACF,qBAAA;iBACF,CAAA;YACAssC,gBAAkB,EAAA;gBAAE,YAAc,EAAA,oBAAA;AAAqB,aAAA;YACvDC,SAAW,EAAA,KAAA;AACb,SAAA,CAAA,CAAA;KAEF,EAAA;AAACf,QAAAA,IAAAA;AAAME,QAAAA,gBAAAA;AAAiB,KAAA,CAAA,CAAA;AAG1B,IAAA,MAAMc,WAAc,GAAA,UAAA;AAElB,QAAA,MAAMN,aAAa,IAAIO,eAAAA,EAAAA,CAAAA;QAEvBR,wBAAyBC,CAAAA,UAAAA,CAAAA,CAAAA;QACzBJ,SAAU,CAAA,IAAA,CAAA,CAAA;AACVD,QAAAA,WAAAA,IAAeA,WAAY,CAAA,IAAA,CAAA,CAAA;AAC3B,QAAA,MAAMF,eACJC,UACA,EAAA,IAAA;YACEE,SAAU,CAAA,KAAA,CAAA,CAAA;AACVD,YAAAA,WAAAA,IAAeA,WAAY,CAAA,KAAA,CAAA,CAAA;;AAE3BO,YAAAA,kBAAAA,EAAAA,CAAAA;AACF,SAAA,EACA,CAAC14B,KAAAA,GAAAA;YACCq4B,WAAYr4B,CAAAA,KAAAA,CAAAA,CAAAA;YACZo4B,SAAU,CAAA,KAAA,CAAA,CAAA;AACVD,YAAAA,WAAAA,IAAeA,WAAY,CAAA,KAAA,CAAA,CAAA;;AAE3BO,YAAAA,kBAAAA,EAAAA,CAAAA;YACAjB,gBAAiBz3B,CAAAA,KAAAA,CAAAA,CAAAA;SAEnB,EAAA,IAAA;YACEo4B,SAAU,CAAA,KAAA,CAAA,CAAA;AACVD,YAAAA,WAAAA,IAAeA,WAAY,CAAA,KAAA,CAAA,CAAA;;AAE3BO,YAAAA,kBAAAA,EAAAA,CAAAA;AACF,SAAA,EACAF,WAAWQ,MAAM,CAAA,CAAA;AAErB,KAAA,CAAA;IAEA,MAAM7+C,IAAAA,GAAO0kB,uBACXxvB,GAAC+vB,CAAAA,MAAAA,EAAAA;QAAO/kB,IAAK,EAAA,IAAA;QAAKzL,SAAU,EAAA,KAAA;uBAE5BS,GAAC4pD,CAAAA,UAAAA,EAAAA;QAAWppD,KAAM,EAAA,UAAA;QAAWwK,IAAM,EAAA,EAAA;;IAGrC,OAAO;AACLy+C,QAAAA,WAAAA;AACA3+C,QAAAA,IAAAA;AACA0kB,QAAAA,MAAAA;AACF,KAAA,CAAA;AACF,CAAA;;ACxIA,MAAMq6B,qBAAqB,CAAC,EAC1BC,UAAU,EACVC,YAAY,EACZC,WAAW,EACXxwB,WAAAA,GAAc,IAAI,EAClB/J,QAAAA,GAAW,IAAI,EACf5jB,QAAAA,GAAW,KAAK,EAChBy8C,QAAAA,GAAWp+C,MAAOg+B,CAAAA,aAAa,EAC/BqgB,QAAWr+C,GAAAA,MAAAA,CAAOs+C,iBAAiB,EACnCyB,WAAW,EACXxB,IAAI,EACJC,kBAAkB,EAClBC,gBAAmB,GAAA,KAAK,EACxBC,cAAc,EACdC,UAAU,EACa,GAAA;IACvB,MAAM,EAAEY,WAAW,EAAE3+C,IAAI,EAAE0kB,MAAM,EAAE,GAAG64B,oBAAqB,CAAA;AACzDC,QAAAA,QAAAA;AACAC,QAAAA,QAAAA;AACAE,QAAAA,IAAAA;AACAC,QAAAA,kBAAAA;AACAC,QAAAA,gBAAAA;AACAC,QAAAA,cAAAA;AACAC,QAAAA,UAAAA;AACF,KAAA,CAAA,CAAA;AAEA,IAAA,MAAM/7B,MAAMtlB,MAAO,CAAA,IAAA,CAAA,CAAA;AACnB,IAAA,qBACExH,GAACuL,CAAAA,OAAAA,EAAAA;AAAQM,QAAAA,QAAAA,EAAU,CAACo+C,WAAAA;QAAaz+C,KAAOy+C,EAAAA,WAAAA;AACtC,QAAA,QAAA,gBAAAjqD,GAAC6P,CAAAA,MAAAA,EAAAA;YACCid,GAAKA,EAAAA,GAAAA;YACLpgB,WAAa+iB,EAAAA,QAAAA,IAAYs6B,8BAAgB/pD,GAAC4pD,CAAAA,UAAAA,EAAAA,EAAAA,CAAAA;YAC1C/9C,QAAUA,EAAAA,QAAAA;YACVtM,SACEyqD,EAAAA,WAAAA,IACA,CAAC,mBAAmB,EAClBn+C,WAAW,SAAY,GAAA,oCAAA,CACxB,CAAC,CAAC;AAELq+B,YAAAA,OAAAA,EAAS1Q,WAAehK,IAAAA,MAAAA;YACxBzjB,OAAS09C,EAAAA,WAAAA;AAERj6B,YAAAA,QAAAA,EAAAA,MAAAA,GAASs6B,aAAaC,YAAgBj/C,IAAAA,IAAAA;;;AAI/C,CAAA;;ACjDA;;;;;AAKC,IACM,MAAMo/C,cAAiB,GAAA,CAACxoC,IAAY2lB,EAAAA,QAAAA,GAAAA;IACzC,MAAM8iB,QAAAA,GAAWn2B,QAASo2B,CAAAA,aAAa,CAAC,GAAA,CAAA,CAAA;IACxC,MAAM5qD,IAAAA,GAAO6qD,GAAIC,CAAAA,eAAe,CAAC5oC,IAAAA,CAAAA,CAAAA;IACjCyoC,QAASI,CAAAA,YAAY,CAAC,UAAYljB,EAAAA,QAAAA,CAAAA,CAAAA;AAClC8iB,IAAAA,QAAAA,CAAS3qD,IAAI,GAAGA,IAAAA,CAAAA;IAChB2qD,QAASI,CAAAA,YAAY,CAAC,QAAU,EAAA,QAAA,CAAA,CAAA;AAChCJ,IAAAA,QAAAA,CAASK,KAAK,EAAA,CAAA;AACdH,IAAAA,GAAAA,CAAII,eAAe,CAACjrD,IAAAA,CAAAA,CAAAA;AACtB,CAAE;;ACfK,MAAMkrD,oBAAuB,GAAA,OAClCx4C,MACAu2C,EAAAA,IAAAA,EACAkC,SACAC,OACAjB,EAAAA,MAAAA,GAAAA;;AAGA,IAAA,MAAMkB,uBAAwB,CAAA;QAC5Bvd,UAAYp7B,EAAAA,MAAAA;AACZ44C,QAAAA,MAAAA,EAAQ,CAACppC,IAAAA,GAAAA;YACPwoC,cAAexoC,CAAAA,IAAAA,EAAMxP,OAAOm1B,QAAQ,CAAA,CAAA;YACpCohB,IAAQA,IAAAA,IAAAA,EAAAA,CAAAA;AACV,SAAA;AACAkC,QAAAA,OAAAA,EAAS,CAACh6B,KAAAA,GAAAA;AACRg6B,YAAAA,OAAAA,IAAWA,OAAQh6B,CAAAA,KAAAA,CAAAA,CAAAA;AACrB,SAAA;QACAi6B,OAAS,EAAA,IAAA;YACPA,OAAWA,IAAAA,OAAAA,EAAAA,CAAAA;AACb,SAAA;AACAjB,QAAAA,MAAAA;AACF,KAAA,CAAA,CAAA;AACF,CAAE;;ACfF,MAAMoB,mBAAsB,GAAA;AAAC,IAAA,WAAA;AAAa,IAAA,WAAA;AAAa,IAAA,QAAA;AAAU,IAAA,WAAA;AAAY,CAAA,CAAA;AAE7E;;;;;;;AAOC,IACM,MAAMC,eAAkB,GAAA,CAC7BtpC,MACAupC,eACAC,EAAAA,cAAAA,GAAAA;IAEA,OAAOxpC,IAAAA,CAAKje,MAAM,CAAC,CAAC2J,IAAAA,GAAAA;AAClB,QAAA,MAAM+9C,YAAeD,GAAAA,cAAAA,CAAe/1C,KAAK,CAAC,CAAC9B,KAAAA,GAAAA;YACzC,OAAOjG,IAAI,CAACiG,KAAAA,CAAM,KAAKlN,SAAAA,CAAAA;AACzB,SAAA,CAAA,CAAA;AACA,QAAA,OAAOglD,YAAgB/9C,IAAAA,IAAI,CAAC69C,eAAAA,CAAgB,KAAK9kD,SAAAA,CAAAA;AACnD,KAAA,CAAA,CAAA;AACF,CAAE,CAAA;AAUK,MAAMilD,wBAA2B,GAAA,OACtCl5C,QACAu2C,IACAkC,EAAAA,OAAAA,EACAC,SACAjB,MACA0B,EAAAA,UAAAA,GAAAA;IAEA,MAAM,EACJC,2BAA2B,EAC3BC,+BAA+B,EAC/BC,iBAAiB,EACjBP,eAAe,EACfQ,UAAU,EACX,GAAGv5C,MAAAA,CAAAA;AAEJ,IAAA,MAAMg5C,iBAAiBO,UAAcV,IAAAA,mBAAAA,CAAAA;IACrC,MAAMW,gBAAAA,GAAmBx5C,QAAQm1B,QAAY,IAAA,CAAC,EAAEn1B,MAAOzC,CAAAA,IAAI,CAAC,cAAc,CAAC,CAAA;AAE3E,IAAA,MAAMk8C,kBAA8C,GAAA;AAClDloD,QAAAA,MAAAA,EAAQyO,OAAOzO,MAAM;AACrBgM,QAAAA,IAAAA,EAAMyC,OAAOzC,IAAI;AACjBkS,QAAAA,MAAAA,EAAQzP,OAAOyP,MAAM;AACrBqlC,QAAAA,aAAAA,EAAe90C,OAAO80C,aAAa;AACnCrM,QAAAA,IAAAA,EAAMzoC,OAAOyoC,IAAI;QACjBnJ,MAAQ,EAAA,MAAA;AACV,KAAA,CAAA;;IAGA,IAAIt/B,MAAAA,CAAOzC,IAAI,KAAK+7C,iBAAmB,EAAA;QACrC,IAAI;YACF,IAAII,cAAAA,GAAiB,MAAMC,yBAA0B,CAAA;gBACnDve,UAAY,EAAA;AACV,oBAAA,GAAGqe,kBAAkB;oBACrBhqC,MAAQ,EAAA;AAAC2pC,wBAAAA,2BAAAA;AAAgCJ,wBAAAA,GAAAA,cAAAA;AAAe,qBAAA;AAC1D,iBAAA;gBACAN,OAASA,EAAAA,OAAAA;gBACTjB,MAAQA,EAAAA,MAAAA;AACV,aAAA,CAAA,CAAA;YACAiC,cAAiBZ,GAAAA,eAAAA,CACfY,gBACAX,eACAC,EAAAA,cAAAA,CAAAA,CAAAA;YAEF,IAAIU,cAAAA,CAAezpD,MAAM,KAAK,CAAG,EAAA;AAC/B,gBAAA,MAAM,IAAIuE,KAAM,CAAA,uCAAA,CAAA,CAAA;AAClB,aAAA;AACA,YAAA,MAAMuT,GAAM0gB,GAAAA,IAAAA,CAAKK,SAAS,CAAC4wB,gBAAgB,IAAM,EAAA,CAAA,CAAA,CAAA;YACjD,MAAMtkB,IAAAA,GAAO,IAAIC,IAAK,CAAA;AAACttB,gBAAAA,GAAAA;aAAI,EAAE;gBAC3BxK,IAAM,EAAA,gCAAA;AACR,aAAA,CAAA,CAAA;AACAy6C,YAAAA,cAAAA,CAAe5iB,IAAMokB,EAAAA,gBAAAA,CAAAA,CAAAA;YACrBjD,IAAQA,IAAAA,IAAAA,EAAAA,CAAAA;AACV,SAAA,CAAE,OAAOl2B,GAAK,EAAA;YACZ,IAAIu5B,SAAAA,CAAAA;AACJ,YAAA,IAAI,OAAOv5B,GAAAA,KAAQ,QAAUu5B,EAAAA,SAAAA,GAAY,IAAIplD,KAAM6rB,CAAAA,GAAAA,CAAAA,CAAAA;YACnD,IAAIA,GAAAA,YAAe7rB,OAAOolD,SAAYv5B,GAAAA,GAAAA,CAAAA;AACtC,YAAA,IAAI,CAACu5B,SAAAA,EACHA,SAAY,GAAA,IAAIplD,KAAM,CAAA,oCAAA,CAAA,CAAA;AAExBikD,YAAAA,OAAAA,IAAWA,OAAQmB,CAAAA,SAAAA,CAAAA,CAAAA;AACrB,SAAA;AACA,QAAA,OAAA;AACF,KAAA;;IAEA,IAAI;;QAEF,IAAIC,SAAAA,GAAY,MAAMF,yBAA0B,CAAA;YAC9Cve,UAAY,EAAA;AACV,gBAAA,GAAGqe,kBAAkB;gBACrBhqC,MAAQ,EAAA;AAAC2pC,oBAAAA,2BAAAA;AAA4B,iBAAA;AACvC,aAAA;YACAV,OAASA,EAAAA,OAAAA;YACTjB,MAAQA,EAAAA,MAAAA;AACV,SAAA,CAAA,CAAA;;AAEAoC,QAAAA,SAAAA,GAAYA,UAAU/pD,GAAG,CACvB,CAACoL,IAAqBA,GAAAA,IAAI,CAACk+C,2BAA4B,CAAA,CAAA,CAAA;;AAGzD,QAAA,MAAMU,YAA0B,GAAA;YAC9BlE,IAAM,EAAA,KAAA;YACNlmD,IAAM,EAAA;gBACJqqD,YAAc,EAAA;oBACZhtB,QAAU,EAAA,IAAA;oBACViU,QAAU6Y,EAAAA,SAAAA;oBACV14C,KAAOk4C,EAAAA,+BAAAA;AACT,iBAAA;AACA,gBAAA,GAAIF,UACA,GAAA;oBACEa,WAAa,EAAA;wBACXjtB,QAAU,EAAA,GAAA;wBACVmV,OAASiX,EAAAA,UAAAA;wBACTh4C,KAAO,EAAA,aAAA;AACT,qBAAA;AACF,iBAAA,GACA,EAAE;AACR,aAAA;AACF,SAAA,CAAA;QAEA,IAAIu4C,cAAAA,GAAiB,MAAMC,yBAA0B,CAAA;YACnDve,UAAY,EAAA;AACV,gBAAA,GAAGqe,kBAAkB;gBACrBl8C,IAAM+7C,EAAAA,iBAAAA;gBACN/nD,MAAQuoD,EAAAA,YAAAA;gBACRrqC,MAAQ,EAAA;AACN4pC,oBAAAA,+BAAAA;AACAN,oBAAAA,eAAAA;AACGC,oBAAAA,GAAAA,cAAAA;AACJ,iBAAA;AACH,aAAA;YACAN,OAASA,EAAAA,OAAAA;YACTjB,MAAQA,EAAAA,MAAAA;AACV,SAAA,CAAA,CAAA;QAEAiC,cAAiBA,GAAAA,cAAAA,CAAenoD,MAAM,CACpC,CAACC,IAAkB,CAAC,CAACA,CAAC,CAACunD,eAAgB,CAAA,CAAA,CAAA;AAEzC,+CACAW,cAAAA,CAAexqD,OAAO,CAAC,CAACsC,CAAAA,GAAAA;AACtB,YAAA,IAAI,OAAOA,CAAC,CAACunD,eAAAA,CAAgB,KAAK,QAAU,EAAA;gBAC1CvnD,CAAC,CAACunD,gBAAgB,GAAG;AAACvnD,oBAAAA,CAAC,CAACunD,eAAgB,CAAA;AAAC,iBAAA,CAAA;AAC3C,aAAA;AACF,SAAA,CAAA,CAAA;AACA,QAAA,MAAMkB,QAAQ,IAAIC,WAAAA,EAAAA,CAAcC,MAAM,CAAC1xB,IAAAA,CAAKK,SAAS,CAAC4wB,cAAAA,CAAAA,CAAAA,CAAAA;QACtD,MAAMtkB,IAAAA,GAAO,IAAIC,IAAK,CAAA;AAAC4kB,YAAAA,KAAAA;SAAM,EAAE;YAC7B18C,IAAM,EAAA,gCAAA;AACR,SAAA,CAAA,CAAA;AACAy6C,QAAAA,cAAAA,CAAe5iB,IAAMokB,EAAAA,gBAAAA,CAAAA,CAAAA;QACrBjD,IAAQA,IAAAA,IAAAA,EAAAA,CAAAA;AACV,KAAA,CAAE,OAAOl2B,GAAU,EAAA;AACjBo4B,QAAAA,OAAAA,IAAWA,OAAQp4B,CAAAA,GAAAA,CAAAA,CAAAA;AACrB,KAAA;AACF,CAAE;;AChKF,MAAM+5B,0BAAoE,EAAC,CAAA;AAEpE,MAAMC,gBAAiD,GAAA,CAC5DC,OACA/D,EAAAA,IAAAA,GAAAA;IAEA,OAAO,IAAIgE,QAAc,CAAChE,IAAAA,GAAAA;QACxBA,IAAQA,IAAAA,IAAAA,EAAAA,CAAAA;AACV,KAAA,CAAA,CAAA;AACF,CAAE,CAAA;AAEK,MAAMiE,oBAAuB,GAAA,CAClCC,UACAC,EAAAA,UAAAA,GAAAA;IAEAN,uBAAuB,CAACK,WAAW,GAAGC,UAAAA,CAAAA;AACxC,CAAE,CAAA;AAEK,MAAMC,mBAAmB,CAC9BF,UAAAA,GAAAA;AAEA,IAAA,IAAIA,eAAexmD,SAAW,EAAA;AAC5B4N,QAAAA,OAAAA,CAAQ4c,KAAK,CAAC,mCAAA,CAAA,CAAA;QACd,OAAOxqB,SAAAA,CAAAA;AACT,KAAA;AAEA,IAAA,IAAI,EAAEwmD,UAAcL,IAAAA,uBAAsB,CAAI,EAAA;QAC5Cv4C,OAAQ4c,CAAAA,KAAK,CAAC,sCAAwCg8B,EAAAA,UAAAA,CAAAA,CAAAA;QACtD,OAAOxmD,SAAAA,CAAAA;AACT,KAAA;IACA,OAAOmmD,uBAAuB,CAACK,UAAW,CAAA,CAAA;AAC5C,CAAE,CAAA;AAEK,MAAMG,4BAA+B,GAAA,IAAA;AAC1CJ,IAAAA,oBAAAA,CAAqB,WAAa,EAAA;QAChC1K,MAAQ0I,EAAAA,oBAAAA;QACR/G,IAAM,EAAA;YAAEnS,MAAQ,EAAA,MAAA;AAAO,SAAA;AACzB,KAAA,CAAA,CAAA;AACAkb,IAAAA,oBAAAA,CAAqB,UAAY,EAAA;QAC/B1K,MAAQ0I,EAAAA,oBAAAA;QACR/G,IAAM,EAAA;YAAEnS,MAAQ,EAAA,KAAA;AAAM,SAAA;AACxB,KAAA,CAAA,CAAA;AACAkb,IAAAA,oBAAAA,CAAqB,UAAY,EAAA;QAC/B1K,MAAQ0I,EAAAA,oBAAAA;QACR/G,IAAM,EAAA;YAAEnS,MAAQ,EAAA,KAAA;AAAM,SAAA;AACxB,KAAA,CAAA,CAAA;AACAkb,IAAAA,oBAAAA,CAAqB,UAAY,EAAA;QAC/B1K,MAAQoJ,EAAAA,wBAAAA;QACRzH,IAAM,EAAA;YAAEnS,MAAQ,EAAA,UAAA;AAAW,SAAA;AAC7B,KAAA,CAAA,CAAA;AACF,CAAE,CAAA;AAEFsb,4BAAAA,EAAAA;;AC9BA,MAAMC,qBAAwB,GAAA,CAAC,EAC7BvsD,KAAK,EACL6X,GAAG,EACHxM,QAAW,GAAA,KAAK,EAChBy8C,QAAWp+C,GAAAA,MAAAA,CAAOg+B,aAAa,EAC/BqgB,WAAWr+C,MAAOs+C,CAAAA,iBAAiB,EACnCC,IAAI,EACJK,WAAAA,GAAc,IAAM,IAAI,EACxBJ,kBAAkB,EAClBC,gBAAmB,GAAA,KAAK,EACxBC,cAAc,EACdC,UAAU,EACV7gD,QAAQ,EACmC,GAAA;AAC3C,IAAA,MAAM,EAAEyhD,WAAW,EAAE3+C,IAAI,EAAE,GAAGu9C,oBAAqB,CAAA;AACjDC,QAAAA,QAAAA;AACAC,QAAAA,QAAAA;AACAE,QAAAA,IAAAA;AACAC,QAAAA,kBAAAA;AACAC,QAAAA,gBAAAA;AACAC,QAAAA,cAAAA;AACAC,QAAAA,UAAAA;AACAC,QAAAA,WAAAA;AACF,KAAA,CAAA,CAAA;IACA,qBACE9oD,GAAA,CAAC6O,KAAKI,IAAI,EAAA;QACRlD,OAAS,EAAA,IAAA;YACP09C,WAAeA,IAAAA,WAAAA,EAAAA,CAAAA;AACjB,SAAA;AAEA5wB,QAAAA,aAAAA,EAAa,CAAC,EAAEr4B,KAAAA,CAAM,CAAC,EAAE6X,IAAI,CAAC;QAC9B3L,WAAa5B,EAAAA,IAAAA;QACbe,QAAUA,EAAAA,QAAAA;AAET7D,QAAAA,QAAAA,EAAAA,QAAAA;AALI,KAAA,EAAA,CAAC,EAAExH,KAAAA,CAAM,CAAC,EAAE6X,IAAI,CAAC,CAAA,CAAA;AAQ5B,CAAA,CAAA;AAoEA,MAAM20C,0BAAAA,GAA6B,CAAC,EAClCC,kBAAkB,EAClB3gD,QAAQ,EACRC,0BACEvM,GAACgP,CAAAA,iBAAAA,EAAAA;IAAShE,IAAK,EAAA,QAAA;IAASmxB,aAAY,EAAA,MAAA;IAAOtD,aAAY,EAAA,eAAA;EACxD,EACDhtB,QAAAA,GAAW,KAAK,EAChBqhD,gBAAgB,EAChBpD,UAAU,EACVC,YAAY,EACZoD,cAAc,EACdC,UAAU,EACV/+C,MAASlI,GAAAA,SAAS,EAClBknD,gBAAAA,GAAmBlnD,SAAS,EAC5BqE,UAAUrE,SAAS,EACnBmnD,eAAkBnnD,GAAAA,SAAS,EACL,GAAA;AACtB,IAAA,MAAM,CAAConD,QAAAA,EAAUzE,WAAY,CAAA,GAAGxjD,QAAS,CAAA,KAAA,CAAA,CAAA;AAEzC,IAAA,MAAMkoD,gBAAgBnjD,kBAAmB,CAAA,IAAA;AACvC,QAAA,OAAOkjD,WAAWzD,UAAaC,GAAAA,YAAAA,CAAAA;KAC9B,EAAA;AAACwD,QAAAA,QAAAA;AAAUzD,QAAAA,UAAAA;AAAYC,QAAAA,YAAAA;AAAa,KAAA,CAAA,CAAA;AAEvC,IAAA,qBACE1pD,IAACwO,CAAAA,IAAAA,EAAAA;AACCtM,QAAAA,KAAAA,EAAO0qD,kBAAsB,IAAA,QAAA;AAC5B,QAAA,GAAIE,cAAkB,IAAA;YAAE1hD,QAAU0hD,EAAAA,cAAAA;SAAgB;AACnDt0B,QAAAA,aAAAA,EAAaw0B,gBAAoB,IAAA,WAAA;QACjCh/C,MAAQA,EAAAA,MAAAA;;AAER,0BAAArO,GAAA,CAAC6O,KAAKC,MAAM,EAAA;AACV,gBAAA,QAAA,gBAAA7L,aAAC4M,CAAAA,MAAAA,EAAAA;AACCtQ,oBAAAA,SAAAA,EAAW,CAAC,4EAA4E,EAAEwa,WAAAA,CAAY,CAAC;AACtG,oBAAA,GAAIzN,QAAY,IAAA;wBAAEI,WAAaJ,EAAAA,QAAAA;qBAAU;oBAC1CwsB,YAAcvsB,EAAAA,SAAAA;oBACdV,QAAUA,EAAAA,QAAAA;oBACVlL,UAAY,EAAA;;AAEViB,wBAAAA,IAAAA,EAAMwrD,aAAa,QAAWjnD,GAAAA,SAAAA;AAChC,qBAAA;oBACAyG,YAAY0gD,EAAAA,eAAAA;oBACZpjB,OAASqjB,EAAAA,QAAAA;oBACT7sD,GAAK8sD,EAAAA,aAAAA;iCAELxtD,GAAC+B,CAAAA,KAAAA,EAAAA;8BACEyI,OAASrI,EAAAA,MAAAA,IAAU,CAAC0J,QAAAA,iBACnB7L,GAAC+B,CAAAA,KAAAA,EAAAA;AACC,wBAAA,QAAA,gBAAA/B,GAACuL,CAAAA,OAAAA,EAAAA;4BAAQC,KAAOhB,EAAAA,OAAAA;AACd,4BAAA,QAAA,gBAAAxK,GAAC+B,CAAAA,KAAAA,EAAAA;AAAKyrD,gCAAAA,QAAAA,EAAAA,aAAAA;;;uCAIVxtD,GAAC+B,CAAAA,KAAAA,EAAAA;AAAKyrD,wBAAAA,QAAAA,EAAAA,aAAAA;;;;AAKd,0BAAAxtD,GAAA,CAAC6O,KAAKG,QAAQ,EAAA;gBACZ6pB,aAAY,EAAA,uBAAA;gBACZt5B,SAAU,EAAA,2BAAA;AAET2tD,gBAAAA,QAAAA,EAAAA,gBAAAA,EAAkBlrD,GACjB,CAAA,CAAC,EAAExB,KAAK,EAAEsK,IAAI,EAAEe,QAAQ,EAAE+8C,cAAc,EAAEC,UAAU,EAAE,EAAExwC,oBACtDrY,GAAC+sD,CAAAA,qBAAAA,EAAAA;AAECl0B,wBAAAA,aAAAA,EAAa,CAAC,EAAEr4B,KAAAA,CAAM,CAAC,EAAE6X,IAAI,CAAC;AAC9B3L,wBAAAA,WAAAA,EAAa5B,IAAQA,IAAAA,IAAAA;wBACrBe,QAAUA,EAAAA,QAAAA;wBACVrL,KAAOA,EAAAA,KAAAA;wBACP6X,GAAKA,EAAAA,GAAAA;wBACLuwC,cAAgBA,EAAAA,cAAAA;wBAChBC,UAAYA,EAAAA,UAAAA;wBACZC,WAAaA,EAAAA,WAAAA;AAEZtoD,wBAAAA,QAAAA,EAAAA,KAAAA;AAVI,qBAAA,EAAA,CAAC,EAAEA,KAAAA,CAAM,CAAC,EAAE6X,IAAI,CAAC,CAAA,CAAA;;;;AAiBpC,CAAA;;AC1LA,MAAMo1C,wBAAAA,GAA2B,CAC/B79C,KACA+zC,EAAAA,IAAAA,GAAAA;AAEA,IAAA,MAAMv/B,QAAWxU,GAAAA,KAAAA,CAAM89C,aAAa,EAAE1rD,IAAI,CAACyK,MAAAA,GAAAA;AACzC,QAAA,IAAIm8C,cAAiB2D,GAAAA,gBAAAA,CAAAA;AACrB,QAAA,IAAI1D,aAAa,EAAC,CAAA;AAElB,QAAA,MAAM8E,YAAelhD,GAAAA,MAAAA,CAAOu1C,MAAM,IAAIv1C,OAAOgD,IAAI,CAAA;AAEjD,QAAA,IAAIk+C,YAAc,EAAA;AAChB,YAAA,MAAMf,aAAaC,gBAAiBc,CAAAA,YAAAA,CAAAA,CAAAA;AACpC,YAAA,IAAIf,UAAY,EAAA;AACdhE,gBAAAA,cAAAA,GAAiBgE,WAAW5K,MAAM,CAAA;gBAClC6G,UAAa+D,GAAAA,UAAAA,CAAWjJ,IAAI,IAAK,EAAC,CAAA;AACpC,aAAA;AACF,SAAA;QAEA,OAAO;AACLnjD,YAAAA,KAAAA,EAAOiM,OAAOjM,KAAK;YACnBspD,UAAY,EAAA,gBAAA;AACZj+C,YAAAA,QAAAA,EAAUY,OAAOqW,OAAO,KAAK3c,YAAY,CAACsG,MAAAA,CAAOqW,OAAO,GAAG,IAAA;YAC3DhY,IAAM2B,EAAAA,MAAAA,EAAQH,yBACZtM,GAAC8M,CAAAA,IAAAA,EAAAA;AAAKhC,gBAAAA,IAAAA,EAAM2B,OAAOH,QAAQ;+BAE3BtM,GAACgkB,CAAAA,UAAAA,EAAAA;gBAAapX,YAAY,EAAA,UAAA;;YAE5BksB,YAAcrsB,EAAAA,MAAAA,EAAQF,0BAAYvM,GAAC8M,CAAAA,IAAAA,EAAAA;AAAKhC,gBAAAA,IAAAA,EAAM2B,OAAOF,SAAS;AAAO,aAAA,CAAA,GAAA,IAAA;YACrEq8C,cAAgBA,EAAAA,cAAAA;YAChBC,UAAY,EAAA;AACV,gBAAA,GAAGlF,IAAI;AACP,gBAAA,GAAGkF,UAAU;AACb,gBAAA,GAAIp8C,MAAOo8C,CAAAA,UAAU,IAAK,EAA0B;AACtD,aAAA;AACF,SAAA,CAAA;AACF,KAAA,CAAA,CAAA;AAEA,IAAA,qBACE7oD,GAACgtD,CAAAA,0BAAAA,EAAAA;AACCjD,QAAAA,YAAAA,EAAcn6C,MAAMpP,KAAK;AACzBspD,QAAAA,UAAAA,EAAYl6C,MAAMg+C,WAAW;QAC7BthD,QAAUsD,EAAAA,KAAAA,CAAMtD,QAAQ,iBAAGtM,GAAC8M,CAAAA,IAAAA,EAAAA;AAAKhC,YAAAA,IAAAA,EAAM8E,MAAMtD,QAAQ;AAAOnG,SAAAA,CAAAA,GAAAA,SAAAA;QAC5DoG,SAAWqD,EAAAA,KAAAA,CAAMrD,SAAS,iBAAGvM,GAAC8M,CAAAA,IAAAA,EAAAA;AAAKhC,YAAAA,IAAAA,EAAM8E,MAAMrD,SAAS;AAAOpG,SAAAA,CAAAA,GAAAA,SAAAA;QAC/D0nD,oBAAsB,EAAA,gBAAA;QACtBX,gBAAkB9oC,EAAAA,QAAAA;AACbxU,KAAAA,EAAAA,KAAAA,CAAMpP,KAAK,CAAA,CAAA;AAGtB,CAAA,CAAA;AAeA,MAAMstD,cAAAA,GAAiB,CAAC,EACtBC,SAAS,EACT99B,OAAO,EACP+9B,gBAAgB,EAChB9rD,KAAK,EACLy2C,UAAU,EACVh3B,MAAM,EACNle,MAAM,EACNujD,aAAa,EACbrM,IAAI,EACgB,GAAA;AACpB,IAAA,MAAMsT,cAAiBp+B,GAAAA,iBAAAA,EAAAA,CAAAA;IACvB,MAAMH,aAAAA,GAAgBs+B,mBAAmBA,gBAAmB,GAAA,KAAA,CAAA;AAE5D,IAAA,MAAME,oBAAoB7jD,kBAAmB,CAAA,IAAA;AAC3C,QAAA,IAAI6jD,iBAAoBH,GAAAA,SAAAA,CAAAA;QAExB,IAAIr+B,aAAAA,IAAiB,CAACu+B,cAAgB,EAAA;AACpCC,YAAAA,iBAAAA,GAAoBjtD,MAAO8R,CAAAA,OAAO,CAACg7C,SAAAA,IAAa,EAAC,CAAA,CAAG7gD,MAAM,CACxD,CAACC,GAAAA,EAAK,CAACzM,GAAAA,EAAKytD,QAAS,CAAA,GAAA;gBACnB,OAAO;AACL,oBAAA,GAAGhhD,GAAG;AACN,oBAAA,CAACzM,MAAM;AACL,wBAAA,GAAGytD,QAAQ;AACX3tD,wBAAAA,KAAAA,EAAO,CAAC,EAAE2tD,QAAAA,CAAS3tD,KAAK,CAAC,iBAAiB,CAAC;AAC3CyvB,wBAAAA,OAAAA,EAASk+B,SAAST,aAAa,EAAE1rD,GAAI,CAAA,CAACyK,UAAY;AAChD,gCAAA,GAAGA,MAAM;AACTjM,gCAAAA,KAAAA,EAAO,CAAC,EAAEiM,MAAAA,CAAOjM,KAAK,CAAC,iBAAiB,CAAC;gCACzCsiB,OAAS,EAAA,KAAA;6BACX,CAAA,CAAA;AACF,qBAAA;AACF,iBAAA,CAAA;AACF,aAAA,EACA,EAAC,CAAA,CAAA;AAEL,SAAA;QACA,OAAOorC,iBAAAA,CAAAA;KACN,EAAA;AAACH,QAAAA,SAAAA;AAAWr+B,QAAAA,aAAAA;AAAeu+B,QAAAA,cAAAA;AAAe,KAAA,CAAA,CAAA;IAE7C,OAAOF,SAAAA,IAAa99B,wBAClB5vB,IAAC0B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAU,EAAA,gBAAA;;AACZ0B,YAAAA,MAAAA,CAAO0sB,MAAM,CAACugC,iBAAmBlsD,CAAAA,CAAAA,GAAG,CACnC,CAACmsD,QAAAA,GAAAA;AACC,gBAAA,OAAOV,yBAAyBU,QAAU,EAAA;oBACxC1+C,IAAMvN,EAAAA,KAAAA;AACNy2C,oBAAAA,UAAAA;AACAh3B,oBAAAA,MAAAA;AACAle,oBAAAA,MAAAA;oBACAujD,aAAeA,EAAAA,aAAAA,IAAiBC,cAAcmH,GAAG;AAEnD,iBAAA,CAAA,CAAA;AACF,aAAA,CAAA;YAGDn+B,OAAQjuB,CAAAA,GAAG,CAAC,CAACyK,MAAAA,GAAAA;AACZ,gBAAA,IAAIZ,QAAW,GAAA,KAAA,CAAA;AACf,gBAAA,IAAI+8C,cAAiB2D,GAAAA,gBAAAA,CAAAA;AACrB,gBAAA,IAAI1D,aAAa,EAAC,CAAA;AAClB,gBAAA,MAAM8E,YAAelhD,GAAAA,MAAAA,CAAOu1C,MAAM,IAAIv1C,OAAOgD,IAAI,CAAA;AACjD,gBAAA,IAAIk+C,YAAc,EAAA;AAChB,oBAAA,MAAMf,aAAaC,gBAAiBc,CAAAA,YAAAA,CAAAA,CAAAA;AACpC,oBAAA,IAAIf,UAAY,EAAA;AACd,wBAAA,MAAMyB,QAAWzB,GAAAA,UAAAA,CAAWjJ,IAAI,IAAI,EAAC,CAAA;wBACrC,MAAM/wC,IAAAA,GAAOg6C,WAAW5K,MAAM,CAAA;wBAC9B4G,cAAiBh2C,GAAAA,IAAAA,CAAAA;AACjBi2C,wBAAAA,UAAAA,GAAawF,YAAa,EAAC,CAAA;AAC7B,qBAAA;AACF,iBAAA;gBACA,IAAI3+B,aAAAA,IAAiB,CAACu+B,cAAgB,EAAA;oBACpCpiD,QAAW,GAAA,IAAA,CAAA;AACb,iBAAA;AAEA,gBAAA,qBACE7L,GAAC6pD,CAAAA,kBAAAA,EAAAA;oBACCC,UAAY,EAAA,gBAAA;AACZC,oBAAAA,YAAAA,EAAct9C,OAAOjM,KAAK;AAC1BypD,oBAAAA,WAAAA,EAAax9C,OAAOw9C,WAAW;oBAC/Bp+C,QAAUA,EAAAA,QAAAA,IAAY,CAACY,MAAAA,CAAOqW,OAAO;oBACrC8lC,cAAgBA,EAAAA,cAAAA;oBAChBC,UAAY,EAAA;AACV,wBAAA,GAAGA,UAAU;AACb,wBAAA,GAAIp8C,MAAOo8C,CAAAA,UAAU,IAAK,EAA0B;wBACpDp5C,IAAMvN,EAAAA,KAAAA;AACNy2C,wBAAAA,UAAAA;AACAh3B,wBAAAA,MAAAA;AACAle,wBAAAA,MAAAA;wBACAujD,aAAeA,EAAAA,aAAAA,IAAiBC,cAAcmH,GAAG;AAEnD,qBAAA;AACK3hD,iBAAAA,EAAAA,MAAAA,CAAOjM,KAAK,CAAA,CAAA;AAGvB,aAAA,CAAA;;AAGF,KAAA,CAAA,iBAAAR,GAAA,CAACmD,eAAMC,QAAQ,EAAA,EAAA,CAAA,CAAA;AAEnB,CAAA;;AC3JA,MAAMkrD,YAAY,EAAC,CAAA;AASnB,MAAMC,WAAAA,GAAc,CAAC,EACnBz/B,OAAO,EACP0/B,QAAQ,EACRC,gBAAgB,EAChBC,cAAc,EACK,GAAA;AACnB,IAAA,qBACE1uD,GAAC+B,CAAAA,KAAAA,EAAAA;AACC,QAAA,QAAA,gBAAA1B,IAAC8hB,CAAAA,IAAAA,EAAAA;YACCpS,OAAQ,EAAA,OAAA;YACRqvC,WAAY,EAAA,UAAA;YACZuP,WAAa,EAAA,KAAA;AACbvsC,YAAAA,YAAAA,EAAc0M,OAASzM,EAAAA,IAAI,CAAC,CAAA,CAAE,CAAC7hB,KAAS,IAAA,SAAA;;AAExC,8BAAAR,GAAA,CAACmiB,KAAKI,IAAI,EAAA;AACPuM,oBAAAA,QAAAA,EAAAA,OAAAA,CAAQzM,IAAI,CAACrgB,GAAG,CAAC,CAACwgB,GAAAA,GAAAA;wBACjB,qBACExiB,GAAA,CAACmiB,KAAKM,GAAG,EAAA;AAACze,4BAAAA,KAAAA,EAAOwe,IAAIhiB,KAAK;AACvBgiB,4BAAAA,QAAAA,EAAAA,GAAAA,CAAIhiB,KAAK;AADqB,yBAAA,EAAA,CAAC,EAAEgiB,GAAAA,CAAIhiB,KAAK,CAAC,IAAI,CAAC,CAAA,CAAA;AAIvD,qBAAA,CAAA;;AAGDsuB,gBAAAA,OAAAA,CAAQzM,IAAI,CAACrgB,GAAG,CAAC,CAACwgB,GAAAA,GAAAA;oBACjB,qBACExiB,GAAA,CAACmiB,KAAKO,KAAK,EAAA;AACT1e,wBAAAA,KAAAA,EAAOwe,IAAIhiB,KAAK;wBAEhBjB,SAAU,EAAA,OAAA;AAET0B,wBAAAA,QAAAA,EAAAA,MAAAA,CAAOC,IAAI,CAACutD,gBAAAA,CAAAA,CAAkBtsD,MAAM,GAAG,kBACtCnC,GAAC09C,CAAAA,YAAAA,EAAAA;AACC/7B,4BAAAA,MAAAA,EAAQa,IAAIb,MAAM,CAACzU,MAAM,CAAC,CAACC,GAAKkG,EAAAA,KAAAA,GAAAA;gCAC9B,OAAO;AAAIlG,oCAAAA,GAAAA,GAAAA;AAAKshD,oCAAAA,gBAAgB,CAACp7C,KAAM,CAAA;AAAC,iCAAA,CAAA;AAC1C,6BAAA,EAAG,EAAE,CAAA;4BACLgqC,aAAeqR,EAAAA,cAAAA;4BACfjgB,UAAY+f,EAAAA,QAAAA;AAEZ,yBAAA,CAAA,GAAA,IAAA;AAXC,qBAAA,EAAA,CAAC,OAAO,EAAEhsC,GAAAA,CAAIhiB,KAAK,CAAC,SAAS,CAAC,CAAA,CAAA;AAczC,iBAAA,CAAA;;;;AAIR,CAAA,CAAA;AAEA,MAAMouD,WAAAA,GAAc,CAAC,EACnB9/B,OAAO,EACP0/B,QAAQ,EACRC,gBAAgB,EAChBC,cAAc,EACK,GAAA;AACnB,IAAA,qBACE1uD,GAAC+B,CAAAA,KAAAA,EAAAA;AACEd,QAAAA,QAAAA,EAAAA,MAAAA,CAAOC,IAAI,CAACutD,gBAAAA,CAAAA,CAAkBtsD,MAAM,GAAG,kBACtCnC,GAAC09C,CAAAA,YAAAA,EAAAA;YACC/7B,MAAQmN,EAAAA,OAAAA,CAAQzM,IAAI,CAAC,CAAE,CAAA,CAACV,MAAM,CAACzU,MAAM,CAAC,CAACC,GAAKkG,EAAAA,KAAAA,GAAAA;gBAC1C,OAAO;AAAIlG,oBAAAA,GAAAA,GAAAA;AAAKshD,oBAAAA,gBAAgB,CAACp7C,KAAM,CAAA;AAAC,iBAAA,CAAA;AAC1C,aAAA,EAAG,EAAE,CAAA;YACLgqC,aAAeqR,EAAAA,cAAAA;YACfjgB,UAAY+f,EAAAA,QAAAA;AAEZ,SAAA,CAAA,GAAA,IAAA;;AAGV,CAAA,CAAA;AAEA;;;;;;;IAQO,MAAMK,WAAc,GAAA,CAAC,EAC1BC,WAAW,EACXhgC,OAAO,EACP2a,MAAS,GAAA,EAAE,EACX3hB,KAAK,EACL0mC,QAAQ,EACRT,SAAS,EACT99B,OAAO,EACP+9B,gBAAgB,EACE,GAAA;AAClB,IAAA,MAAMe,OAAOC,aAAc,CAAA,oBAAA,CAAA,CAAA;AAC3B,IAAA,MAAMC,OAAOD,aAAc,CAAA,qBAAA,CAAA,CAAA;AAC3B,IAAA,MAAME,OAAOF,aAAc,CAAA,qBAAA,CAAA,CAAA;AAE3B,IAAA,IAAItlB,OAAU,GAAA,CAAA,CAAA;AACd,IAAA,IAAIqlB,MAAMrlB,OAAU,GAAA,CAAA,CAAA;AACpB,IAAA,IAAIulB,MAAMvlB,OAAU,GAAA,CAAA,CAAA;AACpB,IAAA,IAAIwlB,MAAMxlB,OAAU,GAAA,CAAA,CAAA;IAEpB,MAAMxnC,KAAAA,GAAQ4sD,YAAYK,QAAQ,CAAA;AAClC,IAAA,MAAMxtC,SAASE,OACb,CAAA,IAAM6wB,8BAA8B5jB,OAASzM,EAAAA,IAAAA,IAAQ,EAAE,CACvD,EAAA;QAACyM,OAASzM,EAAAA,IAAAA;AAAK,KAAA,CAAA,CAAA;AAGjB,IAAA,MAAM,CAACosC,gBAAAA,EAAkBW,mBAAoB,CAAA,GAAG9pD,SAE9C,EAAC,CAAA,CAAA;AAEH,IAAA,MAAM,CAAC+pD,aAAAA,EAAeC,gBAAiB,CAAA,GAAGhqD,SAExC,EAAC,CAAA,CAAA;AAEH,IAAA,MAAMshD,aAAgBp+C,GAAAA,eAAAA,CAAgB,CAACC,KAAAA,GACrCo+C,mBAAmBp+C,KAAOvG,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;IAG5B,MAAM,EACJwf,IAAI,EACJiT,SAAS,EACTvN,OAASmoC,EAAAA,gBAAgB,EAC1B,GAAGC,eAAgB,CAAA;QAClB//C,IAAMvN,EAAAA,KAAAA;QACNyf,MAAQA,EAAAA,MAAAA;QACRmN,OAAS83B,EAAAA,aAAAA;AACX,KAAA,CAAA,CAAA;IAEA,MAAM6I,gBAAAA,GAAmBl0B,uBACvB,CAACloB,KAAAA,GAAAA;QACC,OAAO;YACLqO,IAAMkxB,EAAAA,iBAAAA,CAAkBlxB,IAAM,GAACrO,KAAM,CAAA,CAAA;YACrCilC,WACEjlC,EAAAA,KAAAA,IAASuzC,cAAchlD,IAAI,GACvB8tD,uBAAuB9I,aAAchlD,CAAAA,IAAI,CAACyR,KAAAA,CAAM,CAChDlN,GAAAA,SAAAA;YACNwuB,SAAWA,EAAAA,SAAAA;AACb,SAAA,CAAA;KAEF,EAAA;AAACiyB,QAAAA,aAAAA;AAAellC,QAAAA,IAAAA;AAAMiT,QAAAA,SAAAA;AAAU,KAAA,CAAA,CAAA;IAGlC,MAAMg7B,iBAAAA,GAAoBp0B,uBACxB,CAACloB,KAAAA,GAAAA;QACC,OAAO;YACLqO,IAAMoxB,EAAAA,gBAAAA,CAAiBpxB,IAAM,GAACrO,KAAM,CAAA,CAAA;AACpCyb,YAAAA,OAAAA,EAAS2lB,kBAAmBmS,CAAAA,aAAAA,CAAchlD,IAAI,CAACyR,KAAM,CAAA,CAAA;YACrDshB,SAAWA,EAAAA,SAAAA;AACb,SAAA,CAAA;KAEF,EAAA;AAACjT,QAAAA,IAAAA;AAAMklC,QAAAA,aAAAA,CAAchlD,IAAI;AAAE+yB,QAAAA,SAAAA;AAAU,KAAA,CAAA,CAAA;;;;AAMvC,IAAA,MAAM+5B,iBACJrkD,kBAAmB,CAAA,IAAA;QACjB,OAAO;;YAELkzC,IAAM,EAAA;gBACJhF,eAAiBkX,EAAAA,gBAAAA;AACjB5W,gBAAAA,qBAAAA,EAAuBmK,QAAQ3O,gBAAkBnyC,EAAAA,KAAAA,CAAAA;AACjDqyC,gBAAAA,kBAAAA,EAAoByO,QAAQzO,kBAAoBryC,EAAAA,KAAAA,CAAAA;AAChD02C,gBAAAA,cAAAA,EAAgBoK,QAAQnO,eAAiB3yC,EAAAA,KAAAA,CAAAA;gBACzC0tD,cAAgBzpD,EAAAA,SAAAA;AAClB,aAAA;YACAq3C,KAAO,EAAA;gBACLjF,eAAiBkX,EAAAA,gBAAAA;AACjB5W,gBAAAA,qBAAAA,EAAuBmK,QAAQ3O,gBAAkBnyC,EAAAA,KAAAA,CAAAA;AACjDqyC,gBAAAA,kBAAAA,EAAoByO,QAAQzO,kBAAoBryC,EAAAA,KAAAA,CAAAA;AAChD02C,gBAAAA,cAAAA,EAAgBoK,QAAQnO,eAAiB3yC,EAAAA,KAAAA,CAAAA;gBACzC0tD,cAAgBzpD,EAAAA,SAAAA;AAClB,aAAA;YACAs3C,WAAa,EAAA;gBACXlF,eAAiBkX,EAAAA,gBAAAA;AACjB5W,gBAAAA,qBAAAA,EAAuBmK,QAAQ3O,gBAAkBnyC,EAAAA,KAAAA,CAAAA;AACjDqyC,gBAAAA,kBAAAA,EAAoByO,QAAQzO,kBAAoBryC,EAAAA,KAAAA,CAAAA;AAChD02C,gBAAAA,cAAAA,EAAgBoK,QAAQnO,eAAiB3yC,EAAAA,KAAAA,CAAAA;gBACzC0tD,cAAgBzpD,EAAAA,SAAAA;AAClB,aAAA;YACAutC,KAAO,EAAA;gBACL6E,eAAiBoX,EAAAA,iBAAAA;AACjB9W,gBAAAA,qBAAAA,EAAuBmK,QAAQ3O,gBAAkBnyC,EAAAA,KAAAA,CAAAA;AACjDqyC,gBAAAA,kBAAAA,EAAoByO,QAAQzO,kBAAoBryC,EAAAA,KAAAA,CAAAA;AAChD02C,gBAAAA,cAAAA,EAAgBoK,QAAQnO,eAAiB3yC,EAAAA,KAAAA,CAAAA;gBACzC0tD,cAAgBzpD,EAAAA,SAAAA;AAClB,aAAA;AACF,SAAA,CAAA;KACC,EAAA;AAACspD,QAAAA,gBAAAA;AAAkBE,QAAAA,iBAAAA;AAAmBztD,QAAAA,KAAAA;AAAM,KAAA,CAAA,CAAA;;IAGjDsD,oBAAqB,CAAA,IAAA;AACnB,QAAA,IAAImvB,aAAa1zB,MAAOC,CAAAA,IAAI,CAACutD,gBAAkBtsD,CAAAA,CAAAA,MAAM,KAAK,CAAG,EAAA;AAC3D,YAAA,MAAM0tD,eAAkB/gC,GAAAA,OAAAA,EAASzM,IAAKnV,CAAAA,MAAAA,CACpC,CAACC,GAAsCqV,EAAAA,GAAAA,GAAAA;gBACrC,OAAO;AAAE,oBAAA,GAAGA,IAAIstC,YAAY;AAAE,oBAAA,GAAG3iD,GAAG;AAAC,iBAAA,CAAA;AACvC,aAAA,EACA,EAAC,CAAA,CAAA;YAGH,MAAM4iD,SAAAA,GAAY5c,eAChBzxB,IACAxf,EAAAA,KAAAA,EACA4sD,YAAY1b,YAAY,EACxByc,mBAAmB,EAAC,CAAA,CAAA;YAEtBT,mBAAoBW,CAAAA,SAAAA,CAAAA,CAAAA;;YAIpB,MAAMV,aAAAA,GAAgBpuD,OAAOC,IAAI,CAACuoC,QAAQv8B,MAAM,CAAC,CAACC,GAAKkG,EAAAA,KAAAA,GAAAA;AACrD,gBAAA,IAAI28C,UAAa38C,GAAAA,KAAAA,CAAAA;AACjB,gBAAA,IAAI08C,SAAW,GAAC18C,KAAM,CAAA,KAAKlN,SAAW,EAAA;AACpC,oBAAA,MAAM/B,MAAMnD,MAAO0sB,CAAAA,MAAM,CAACoiC,SAAWtsD,CAAAA,CAAAA,MAAM,CAAC,CAACwsD,GAAAA,GAAAA;wBAC3C,OAAOA,GAAAA,CAAI1c,SAAS,KAAKlgC,KAAAA,CAAAA;AAC3B,qBAAA,CAAA,CAAA;oBACA,IAAIjP,GAAAA,CAAIjC,MAAM,GAAG,CAAG,EAAA;AAClB6tD,wBAAAA,UAAAA,GAAa5rD,GAAG,CAAC,CAAE,CAAA,CAACiP,KAAK,CAAA;AAC3B,qBAAA;AACF,iBAAA;gBACA,OAAO;AACL,oBAAA,GAAGlG,GAAG;AACN,oBAAA,CAAC6iD,UAAW,GAAEvmB,MAAM,CAACp2B,KAAM,CAAA;AAC7B,iBAAA,CAAA;AACF,aAAA,EAAG,EAAC,CAAA,CAAA;YAEJi8C,gBAAiBD,CAAAA,aAAAA,CAAAA,CAAAA;AACnB,SAAA;KACC,EAAA;AACD16B,QAAAA,SAAAA;AACAjT,QAAAA,IAAAA;AACA+sC,QAAAA,gBAAAA;AACAvsD,QAAAA,KAAAA;AACA4sD,QAAAA,WAAAA,CAAY1b,YAAY;AACxB3J,QAAAA,MAAAA;AACD,KAAA,CAAA,CAAA;IAED,MAAM,EACJ/nB,IAAM+rB,EAAAA,MAAM,EACZ9Y,SAAAA,EAAWu7B,cAAc,EACzB9oC,OAAO,EACR,GAAG+oC,iBAAkB,CAAA;QACpB1gD,IAAMvN,EAAAA,KAAAA;QACN4sB,OAAS83B,EAAAA,aAAAA;AACX,KAAA,CAAA,CAAA;AAEA,IAAA,IAAIx/B,WAAWmoC,gBAAkB,EAAA;AAC/B,QAAA,qBAAOvvD,GAACyyC,CAAAA,SAAAA,EAAAA;YAAU/oC,OAAQ,EAAA,kCAAA;;AAC5B,KAAA;AAEA,IAAA,qBACErJ,IAAC0B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAU,EAAA,oBAAA;;0BACbS,GAAC+B,CAAAA,KAAAA,EAAAA;AACE+sB,gBAAAA,QAAAA,EAAAA,OAAAA,EAASzM,SAASlc,SAAY,GAAA,IAAA,GAAO2oB,SAASzM,IAAKlgB,CAAAA,MAAAA,GAAS,kBAC3DnC,GAACuuD,CAAAA,WAAAA,EAAAA;oBACCz/B,OAASA,EAAAA,OAAAA;oBACT0/B,QAAUA,EAAAA,QAAAA;oBACVC,gBAAkBA,EAAAA,gBAAAA;oBAClBC,cAAgBA,EAAAA,cAAAA;mCAGlB1uD,GAAC4uD,CAAAA,WAAAA,EAAAA;oBACC9/B,OAASA,EAAAA,OAAAA;oBACT0/B,QAAUA,EAAAA,QAAAA;oBACVC,gBAAkBA,EAAAA,gBAAAA;oBAClBC,cAAgBA,EAAAA,cAAAA;;;0BAItB1uD,GAAC+B,CAAAA,KAAAA,EAAAA;gBAAIxC,SAAU,EAAA,iBAAA;AACb,gBAAA,QAAA,gBAAAc,IAAC0B,CAAAA,KAAAA,EAAAA;oBAAIxC,SAAU,EAAA,eAAA;;sCACbS,GAACujD,CAAAA,aAAAA,EAAAA;4BAAcrhD,KAAOA,EAAAA,KAAAA;;sCAEtB7B,IAAC0B,CAAAA,KAAAA,EAAAA;4BAAIxC,SAAU,EAAA,gCAAA;;8CACbS,GAAC8tD,CAAAA,cAAAA,EAAAA;AACCC,oCAAAA,SAAAA,EAAWA,aAAa,EAAC;AACzB99B,oCAAAA,OAAAA,EAASA,WAAW,EAAE;oCACtB+9B,gBAAkBA,EAAAA,gBAAAA;oCAClB9rD,KAAOA,EAAAA,KAAAA;AACPy2C,oCAAAA,UAAAA,EAAYlL,MAAU,IAAA,CAAA;oCACtB9rB,MAAQmG,EAAAA,KAAAA,EAAOnG,UAAU,EAAE;oCAC3Ble,MAAQmjD,EAAAA,aAAAA;;8CAGV5mD,GAACkoD,CAAAA,WAAAA,EAAAA;AACC18C,oCAAAA,KAAAA,EAAOsjD,YAAYsB,cAAc;oCACjC3iB,MAAQA,EAAAA,MAAAA;oCACR9Y,SAAWu7B,EAAAA,cAAAA;;;;sCAGflwD,GAACwtC,CAAAA,MAAAA,EAAAA;4BACCtrC,KAAOA,EAAAA,KAAAA;4BACPunC,MAAQ4lB,EAAAA,aAAAA;AACR3tC,4BAAAA,IAAAA,EAAMA,IAAQ4sC,IAAAA,SAAAA;4BACd7gB,MAAQA,EAAAA,MAAAA;4BACR9Y,SAAWA,EAAAA,SAAAA;4BACX+U,OAASA,EAAAA,OAAAA;;AAEV5hB,wBAAAA,KAAAA,EAAOhF,wBACN9iB,GAAC+B,CAAAA,KAAAA,EAAAA;4BAAIxC,SAAU,EAAA,oBAAA;AACb,4BAAA,QAAA,gBAAAS,GAAC+B,CAAAA,KAAAA,EAAAA;gCAAIxC,SAAU,EAAA,MAAA;AACb,gCAAA,QAAA,gBAAAS,GAAC6lD,CAAAA,aAAAA,EAAAA;oCAAc3jD,KAAOA,EAAAA,KAAAA;oCAAOqmB,WAAaT,EAAAA,KAAAA;;;AAI9C,yBAAA,CAAA,GAAA,KAAA;;;;;;AAMZ,CAAE;;AChWWuoC,MAAAA,aAAAA,GAAgB,CAAC,EAC5BC,cAAc,EACa,GAAA;IAC3B,MAAM,EAAEnpC,SAAS,EAAE,GAAGshB,eAAAA,EAAAA,CAAAA;AAEtB,IAAA,IAAIthB,SAAW,EAAA;AACb,QAAA,qBACEnnB,GAACuwD,CAAAA,MAAAA,EAAAA;YAAOC,GAAK,EAAA,GAAA;YAAKC,CAAG,EAAA,GAAA;YAAKC,EAAG,EAAA,MAAA;AAC3B,YAAA,QAAA,gBAAA1wD,GAAC+vB,CAAAA,MAAAA,EAAAA;gBAAOhgB,OAAQ,EAAA,MAAA;;;AAGtB,KAAA;AAEA,IAAA,qBACE/P,GAAC+B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAU,EAAA,QAAA;AACb,QAAA,QAAA,gBAAAc,IAAC8hB,CAAAA,IAAAA,EAAAA;YACCvW,KAAM,EAAA,WAAA;YACN+iD,WAAa,EAAA,KAAA;AACbvsC,YAAAA,YAAAA,EAAckuC,cAAc,CAAC,CAAE,CAAA,CAAC9B,QAAQ;;AAExC,8BAAAxuD,GAAA,CAACmiB,KAAKI,IAAI,EAAA;AACP+tC,oBAAAA,QAAAA,EAAAA,cAAAA,CAAetuD,GAAG,CAAC,CAAC2uD,WACnB,iBAAA3wD,GAAA,CAACmiB,KAAKM,GAAG,EAAA;AACPze,4BAAAA,KAAAA,EAAO2sD,YAAYnC,QAAQ;AAG1BmC,4BAAAA,QAAAA,EAAAA,WAAAA,CAAYnC,QAAQ;AAFhB,yBAAA,EAAA,CAAC,EAAEmC,WAAAA,CAAYnC,QAAQ,CAAC,QAAQ,CAAC,CAAA,CAAA;;AAO3C8B,gBAAAA,cAAAA,CAAetuD,GAAG,CAAC,CAAC2uD,WACnB,iBAAA3wD,GAAA,CAACmiB,KAAKO,KAAK,EAAA;AACT1e,wBAAAA,KAAAA,EAAO2sD,YAAYnC,QAAQ;AAG3B,wBAAA,QAAA,gBAAAvrD,aAAC4rD,CAAAA,WAAAA,EAAAA;AACE,4BAAA,GAAG8B,WAAW;AACfjwD,4BAAAA,GAAAA,EAAK,CAAC,EAAEiwD,WAAAA,CAAYnC,QAAQ,CAAC,YAAY,CAAC;;AAJvC,qBAAA,EAAA,CAAC,EAAEmC,WAAAA,CAAYnC,QAAQ,CAAC,SAAS,CAAC,CAAA,CAAA;;;;AAWnD;;ACxCA;;;;AAIC,IACKoC,MAAAA,gBAAAA,GAAiB,CAAC,EACtBC,eAAe,EACK,GAAA;AACpB,IAA0BvrD,QAAS,CAAA,EAAA,EAAA;AACnC,IAAgBkD,eAAgBsoD,CAAAA,0BAAAA,EAAAA;AAYhC,IAAA,qBACE9wD,GAAC+B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAU,EAAA,6BAAA;AACb,QAAA,QAAA,gBAAAS,GAAC+B,CAAAA,KAAAA,EAAAA;YAAIxC,SAAU,EAAA,uCAAA;AACb,YAAA,QAAA,gBAAAS,GAACkP,CAAAA,IAAAA,EAAAA;gBAAKlE,IAAK,EAAA,IAAA;gBAAKgU,EAAI,EAAA,GAAA;AAAK,gBAAA,QAAA,EAAA,aAAA;;;;AAgBjC;;;;;;;ACjDA,MAAM+xC,eAAkB,GAAA,IAAA;AACpB,IAAA,qBACE/wD,GAACuwD,CAAAA,MAAAA,EAAAA;QAAOhxD,SAAU,EAAA,aAAA;AAAc,QAAA,QAAA,gBAAAS,GAACkP,CAAAA,IAAAA,EAAAA;YAAKlE,IAAK,EAAA,MAAA;AAAO,YAAA,QAAA,EAAA,cAAA;;;AAExD;;ACFO,MAAMgmD,iBAAAA,CAAAA;IAEX1gC,WAAY,CAAA,EAAE2gC,QAAQ,EAAyB,CAAE;QAC/C,IAAI,CAACA,QAAQ,GAAGA,QAAY,IAAA,EAAA,CAAA;AAC9B,KAAA;IAEA,MAAanS,GAAAA,CACXoS,QAAgB,EACJ;QACZ,IAAI;AACF,YAAA,OAAO,MAAMv2B,IAAKC,CAAAA,KAAK,CACrBu2B,EAAAA,CAAGC,YAAY,CAACtgD,IAAAA,CAAK0I,IAAI,CAAC,IAAI,CAACy3C,QAAQ,EAAEC,QAAAA,CAAAA,CAAAA,CAAW/+C,QAAQ,CAAC,OAAA,CAAA,CAAA,CAAA;AAEjE,SAAA,CAAE,OAAOogB,GAAK,EAAA;AACZ,YAAA,MAAM,IAAI7rB,KAAM,CAAA,CAAC,eAAe,EAAEwqD,SAAS,CAAC,CAAA,CAAA;AAC9C,SAAA;AACF,KAAA;AACF;;ACVO,MAAMG,eAAAA,CAAAA;IAGX/gC,WAAY,CAAO1e,MAAsB,CAAE;aAAxBA,MAAAA,GAAAA,MAAAA,CAAAA;AACjB,QAAA,IAAI,CAAC0/C,KAAK,GAAG1/C,MAAAA,CAAO0/C,KAAK,CAAA;AAC3B,KAAA;IAEA,MAAaxS,GAAAA,CACXoS,QAAgB,EACJ;AACZ,QAAA,OAAO,IAAI,CAACI,KAAK,CAACxS,GAAG,CAACoS,QAAAA,CAAAA,CAAAA;AACxB,KAAA;AACF;;ACvBO,MAAMK,gCACX1xD,GAAAA,OAAAA,CAAQC,GAAG,CAACyxD,gCAAgC,IAAI,IAAK;;ACGvD,MAAMC,WAAcD,GAAAA,gCAAAA,CAAAA;AAEpB,MAAME,KAAQ,GAAA,IAAA;AACZ,IAAA,MAAM7/C,MAAS,GAAA;AAAE0/C,QAAAA,KAAAA,EAAO,IAAIN,iBAAkB,CAAA;YAAEC,QAAUO,EAAAA,WAAAA;AAAY,SAAA,CAAA;AAAG,KAAA,CAAA;AACzE,IAAA,OAAO,IAAIH,eAAgBz/C,CAAAA,MAAAA,CAAAA,CAAAA;AAC7B,CAAA,CAAA;AAEA,MAAM8/C,aAAgBD,GAAAA,KAAAA;;ACDtB;;;;UAKaE,+BACX,GAAA,UAAA;IACE,MAAMC,oBAAAA,GAAuB,MAAMF,aAAAA,CAAc5S,GAAG,CAClD,CAAC,OAAO,EAAE+S,iBAAkB,CAAA,gBAAgB,CAAC,CAAA,CAAA;IAE/C,MAAM,EAAEC,MAAM,EAAEtiD,UAAU,EAAEC,IAAO,GAAA,UAAU,EAAE,GAAGmiD,oBAAAA,CAAAA;AAElD,IAAA,MAAM1hD,WAA2B,GAAA;QAC/BX,GAAKuiD,EAAAA,MAAAA;QACLtiD,UAAYA,EAAAA,UAAAA;AACZC,QAAAA,IAAAA;AACF,KAAA,CAAA;IACA,MAAMU,WAAAA,GAA2B,MAAMuhD,aAAAA,CAAc5S,GAAG,CACtD,CAAC,OAAO,EAAE+S,iBAAkB,CAAA,YAAY,CAAC,CAAA,CAAA;IAE3C,OAAO;AACL3hD,QAAAA,WAAAA;AACAC,QAAAA,WAAAA;QACAE,UAAY,EAAA;YACV7P,KAAO,EAAA,8BAAA;YACPmQ,OAAS,EAAA,8BAAA;YACTjQ,GAAK,EAAA,kBAAA;AACP,SAAA;AACF,KAAA,CAAA;AACF;;ACbF;AACA,MAAMqxD,kBAAAA,GAAqB,CACzBC,KACAxiB,EAAAA,MAAAA,GAAAA;AAEA,IAAA,MAAMtiB,QAAQ+kC,WAAY,CAAA;;AAExBhiB,QAAAA,UAAAA,EAAY+hB,MAAM/hB,UAAU;;QAE5BT,MAAQ,EAAA;YACN0iB,KAAO,EAAA;;AAEL,gBAAA,SAAA;AACA,gBAAA,SAAA;AACA,gBAAA,SAAA;AACA,gBAAA,SAAA;AACA,gBAAA,SAAA;AACA,gBAAA,SAAA;AACA,gBAAA,SAAA;AACA,gBAAA,SAAA;AACA,gBAAA,SAAA;AACA,gBAAA,SAAA;AACD,aAAA;;;;;AAKD,YAAA,GAAGjxD,MAAOm5C,CAAAA,WAAW,CACnBn5C,MAAAA,CAAO8R,OAAO,CAACy8B,MAAQxtC,CAAAA,CAAAA,GAAG,CAAC,CAAC,CAACtB,GAAAA,EAAKitB,OAAO,GAAK;AAC5CjtB,oBAAAA,GAAAA;AACAO,oBAAAA,MAAAA,CAAO0sB,MAAM,CAACA,MAAAA,CAAAA;iBACf,CACF,CAAA;AACH,SAAA;QACAwkC,YAAc,EAAA,SAAA;QACdC,YAAc,EAAA;YAAEC,KAAO,EAAA,CAAA;YAAGC,IAAM,EAAA,CAAA;AAAE,SAAA;QAClCC,WAAa,EAAA;YACXC,EAAI,EAAA,SAAA;YACJC,EAAI,EAAA,MAAA;YACJC,EAAI,EAAA,QAAA;YACJC,EAAI,EAAA,MAAA;YACJC,EAAI,EAAA,SAAA;AACN,SAAA;AACF,KAAA,CAAA,CAAA;IAEA,OAAO1lC,KAAAA,CAAAA;AACT,CAAA,CAAA;AAEA;;;;AAIC,IACK2lC,MAAAA,YAAAA,GAAe,CAAC,EACpBrjB,MAAM,EACN9mB,KAAK,EACLspC,KAAK,EACLc,aAAa,EACblqB,YAAY,EACZ5gC,QAAQ,EACU,GAAA;IAClBP,SAAU,CAAA,IAAA;QACRsrD,aAAcrqC,CAAAA,KAAAA,CAAAA,CAAAA;KACb,EAAA;AAACA,QAAAA,KAAAA;AAAM,KAAA,CAAA,CAAA;IAEV,MAAMwE,KAAAA,GAAQ6kC,mBAAmBC,KAAOxiB,EAAAA,MAAAA,CAAAA,CAAAA;AAExC,IAAA,qBACExvC,GAACgzD,CAAAA,YAAAA,EAAAA;AACC,QAAA,QAAA,gBAAAhzD,GAACizD,CAAAA,eAAAA,EAAAA;YAAgB/lC,KAAOA,EAAAA,KAAAA;AACtB,YAAA,QAAA,gBAAA7sB,IAAC6yD,CAAAA,cAAAA,EAAAA;;kCACClzD,GAACmzD,CAAAA,aAAAA,EAAAA,EAAAA,CAAAA;kCACDnzD,GAAC+H,CAAAA,eAAAA,EAAAA;AAAiB,wBAAA,GAAG+qD,aAAa;AAChC,wBAAA,QAAA,gBAAA9yD,GAACwoC,CAAAA,kBAAAA,EAAAA;4BAAmB52B,MAAQg3B,EAAAA,YAAAA;AACzB5gC,4BAAAA,QAAAA,EAAAA,QAAAA;;;;;;;AAOf;;AClGA,MAAMorD,eAAe,CAAC,EAAE1pD,OAAO,EAAE0d,OAAAA,GAAU,KAAK,EAAW,GAAA;AACzD,IAAA,qBACEpnB,GAAC+B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAU,EAAA,+BAAA;AACb,QAAA,QAAA,gBAAAS,GAAC8tB,CAAAA,KAAAA,EAAAA;YAAMiS,MAAO,EAAA,IAAA;YAAKjjB,MAAO,EAAA,IAAA;YAAK/P,CAAE,EAAA,IAAA;AAC/B,YAAA,QAAA,gBAAA/M,GAAC+B,CAAAA,KAAAA,EAAAA;gBAAIxC,SAAU,EAAA,2GAAA;AACb,gBAAA,QAAA,gBAAAS,GAACkP,CAAAA,IAAAA,EAAAA;oBACClE,IAAK,EAAA,IAAA;oBACLgU,EAAG,EAAA,MAAA;AACHpT,oBAAAA,KAAAA,EAAOwb,UAAU,KAAQ,GAAA,kBAAA;AAExB1d,oBAAAA,QAAAA,EAAAA,OAAAA;;;;;AAMb,CAAA;;ACnBA,MAAM2pD,eAAe,CAACj7C,CAAAA,EAAyBC,MAC7CD,CAAE5M,CAAAA,KAAK,IAAI4M,CAAErG,CAAAA,QAAQ,EAAEstB,SAAAA,EAAW3/B,QAAQ,CAAC,MAAM,EAAE2Y,GAAIlG,CAAAA,QAAQ,GAAG,CAAC,CAAA;AAMrE,MAAMmhD,SAAY,GAAA,CAAC,EAAE9+C,eAAe,EAAkB,GAAA;AACpD,IAAA,MAAM,CAAC++C,aAAAA,EAAeC,gBAAiB,CAAA,GAAGluD,QAAiB,CAAA,GAAA,CAAA,CAAA;AAE3D,IAAA,MAAMmuD,YAAY5xC,OAAQ,CAAA,IAAA;AACxB,QAAA,OAAOrN,gBAAgBk/C,cAAc,CAAC1xD,GAAG,CAAC,CAAConC,CAAG/wB,EAAAA,GAAAA,GAAAA;YAC5C,OAAO;AAAErU,gBAAAA,KAAAA,EAAOqU,IAAIlG,QAAQ,EAAA;AAAI3G,gBAAAA,KAAAA,EAAO6nD,aAAajqB,CAAG/wB,EAAAA,GAAAA,CAAAA;AAAK,aAAA,CAAA;AAC9D,SAAA,CAAA,CAAA;KACC,EAAA;AAAC7D,QAAAA,eAAAA,CAAgBk/C,cAAc;AAAC,KAAA,CAAA,CAAA;IAEnC,IAAID,SAAAA,CAAUtxD,MAAM,KAAK,CAAG,EAAA;AAC1B,QAAA,qBAAOnC,GAACozD,CAAAA,YAAAA,EAAAA;YAAa1pD,OAAQ,EAAA,4BAAA;;AAC/B,KAAA;IAEA,IAAI+pD,SAAAA,CAAUtxD,MAAM,KAAK,CAAG,EAAA;;AAE1B,QAAA,qBACEnC,GAACw+B,CAAAA,mBAAAA,EAAAA;YACChqB,eAAiBA,EAAAA,eAAAA,CAAgBk/C,cAAc,CAAC,CAAE,CAAA;YAClDj1B,aAAe,EAAA,IAAA;;AAGrB,KAAA;AAEA,IAAA,qBACEz+B,GAAC+B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAU,EAAA,wDAAA;AACb,QAAA,QAAA,gBAAAc,IAAC8hB,CAAAA,IAAAA,EAAAA;YACC5iB,SAAU,EAAA,QAAA;YACV6iB,YAAcmxC,EAAAA,aAAAA;AACdplC,YAAAA,QAAAA,EAAU,CAAC1R,CAAAA,GAAAA;AACT+2C,gBAAAA,gBAAAA,CAAiB/2C,CAAK,IAAA,GAAA,CAAA,CAAA;AACxB,aAAA;;AAEA,8BAAAzc,GAAA,CAACmiB,KAAKI,IAAI,EAAA;AACPkxC,oBAAAA,QAAAA,EAAAA,SAAAA,CAAUzxD,GAAG,CAAC,CAACoL,IACd,iBAAApN,GAAA,CAACmiB,KAAKM,GAAG,EAAA;AAAkBze,4BAAAA,KAAAA,EAAOoJ,KAAKpJ,KAAK;AACzCoJ,4BAAAA,QAAAA,EAAAA,IAAAA,CAAK5B,KAAK;AADE4B,yBAAAA,EAAAA,IAAAA,CAAKpJ,KAAK,CAAA,CAAA;;AAK5ByvD,gBAAAA,SAAAA,CAAUzxD,GAAG,CAAC,CAACoL,MAAMvK,CACpB,iBAAA7C,GAAA,CAACmiB,KAAKO,KAAK,EAAA;AAAC1e,wBAAAA,KAAAA,EAAOoJ,KAAKpJ,KAAK;AAC3B,wBAAA,QAAA,gBAAAhE,GAACw+B,CAAAA,mBAAAA,EAAAA;4BACChqB,eACEA,EAAAA,eAAAA,CAAgBk/C,cAAc,CAAC94C,MAAAA,CAAOC,QAAQ,CAACzN,IAAAA,CAAKpJ,KAAK,CAAE,CAAA;AAE7Dy6B,4BAAAA,aAAAA,EACEg1B,SAAUtxD,CAAAA,MAAM,GAAG,CAAA,iBACjBnC,GAACoiC,CAAAA,MAAAA,EAAAA;gCACC52B,KAAM,EAAA,WAAA;gCACNkW,IAAM+xC,EAAAA,SAAAA;gCACNzvD,KAAOuvD,EAAAA,aAAAA;AACPplC,gCAAAA,QAAAA,EAAU,CAAC1R,CAAAA,GAAAA;AACT+2C,oCAAAA,gBAAAA,CAAiB/2C,CAAK,IAAA,GAAA,CAAA,CAAA;AACxB,iCAAA;AAEA,6BAAA,CAAA,GAAA,IAAA;;AAf0BrP,qBAAAA,EAAAA,IAAAA,CAAKpJ,KAAK,CAAA,CAAA;;;;AAuBxD,CAAA;;AClEA2Z,qCAAAA,EAAAA,CAAAA;AACArJ,6CAAAA,EAAAA,CAAAA;AAEMq/C,MAAAA,aAAAA,GAAgB,CAAC,EACrBzjD,WAAW,EACXC,WAAW,EACXqE,eAAe,EACI,GAAA;AACnB,IAAA,IAAIA,oBAAoBrO,SAAW,EAAA;AACjC,QAAA,qBACEnG,GAACuwD,CAAAA,MAAAA,EAAAA;YAAOC,GAAK,EAAA,GAAA;YAAKC,CAAG,EAAA,GAAA;YAAKC,EAAG,EAAA,MAAA;AAC3B,YAAA,QAAA,gBAAA1wD,GAAC+B,CAAAA,KAAAA,EAAAA;AAAI,gBAAA,QAAA,EAAA,gDAAA;;;AAGX,KAAA;AAEA,IAAA,qBACE/B,GAACiQ,CAAAA,aAAAA,EAAAA;AACOC,QAAAA,WAAAA;AAAaC,QAAAA,WAAAA;QACnBE,UAAY,EAAA;YACV7P,KAAO,EAAA,qBAAA;YACPmQ,OAAS,EAAA,gBAAA;YACTjQ,GAAK,EAAA,qBAAA;AACP,SAAA;AAEA,QAAA,QAAA,gBAAAV,GAACszD,CAAAA,SAAAA,EAAAA;YAAU9+C,eAAiBA,EAAAA,eAAAA;;;AAGlC;;MC/Bao/C,+BAET,GAAA,UAAA;IACF,IAAI;QACF,MAAMp/C,eAAAA,GAAkC,MAAMk9C,aAAAA,CAAc5S,GAAG,CAC7D,CAAC,OAAO,EAAE+S,iBAAkB,CAAA,eAAe,CAAC,CAAA,CAAA;QAE9C,OAAO;YACLjiD,KAAO,EAAA;AACL,gBAAA,GAAI,MAAM+hD,+BAAiC,EAAA;gBAC3Cn9C,eAAiBA,EAAAA,eAAAA;AACnB,aAAA;AACF,SAAA,CAAA;AACF,KAAA,CAAE,OAAO+d,GAAK,EAAA;AACZxe,QAAAA,OAAAA,CAAQ4c,KAAK,CAAC4B,GAAAA,CAAAA,CAAAA;QACd,OAAO;YACL3iB,KAAO,EAAA;AACL,gBAAA,GAAI,MAAM+hD,+BAAiC,EAAA;gBAC3Cn9C,eAAiBrO,EAAAA,SAAAA;AACnB,aAAA;AACF,SAAA,CAAA;AACF,KAAA;AACF;;ACzBA;AACA,MAAMyqD,cAAiBiD,GAAAA,OAAAA,CAAQ,IAAM,gEAA4B,EAAA;AAC/D3pB,IAAAA,OAAAA,EAAS,kBAAMlqC,GAACoqB,CAAAA,cAAAA,EAAAA;YAAeC,OAAS,EAAA,IAAA;;IACxCypC,GAAK,EAAA,KAAA;AACP,CAAA,CAAA,CAAA;AAOA,MAAMC,UAAa,GAAA,CAAC,EAClBlD,eAAe,EACC,GAAA;;;AAGhB,IAAA,qBAAO7wD,GAAC4wD,CAAAA,cAAAA,EAAAA;QAAeC,eAAiBA,EAAAA,eAAAA;;AAC1C,CAAA;;AChBMmD,MAAAA,SAAAA,GAAY,CAAC,EACjB9jD,WAAW,EACXC,WAAW,EACX8jD,UAAU,EACW,GAAA;AACrB,IAAA,qBACEj0D,GAACiQ,CAAAA,aAAAA,EAAAA;AACOC,QAAAA,WAAAA;AAAaC,QAAAA,WAAAA;QACnBE,UAAY,EAAA;YACV7P,KAAO,EAAA,iBAAA;YACPmQ,OAAS,EAAA,YAAA;YACTjQ,GAAK,EAAA,iBAAA;AACP,SAAA;AAEA,QAAA,QAAA,gBAAAV,GAAC+zD,CAAAA,UAAAA,EAAAA;AAAWlD,YAAAA,eAAAA,EAAiBoD,WAAWpD,eAAe;;;AAG7D;;MCfaqD,2BAET,GAAA,UAAA;IACF,MAAMD,UAAAA,GAAyB,MAAMvC,aAAAA,CAAc5S,GAAG,CACpD,CAAC,OAAO,EAAE+S,iBAAkB,CAAA,WAAW,CAAC,CAAA,CAAA;IAG1C,OAAO;QACLjiD,KAAO,EAAA;AACL,YAAA,GAAI,MAAM+hD,+BAAiC,EAAA;YAC3CsC,UAAYA,EAAAA,UAAAA;AACd,SAAA;AACF,KAAA,CAAA;AACF;;ACdO,MAAME,UAAAA,GAAanf,EAAGjzC,CAAAA,GAAG,CAAkB;;;;;;;;;;;;;AAalD,EAAE,CAACgL,IAAM,CAAC,GAAG,EAAEA,CAAEyiC,CAAAA,MAAM,CAAC,CAAC,CAAC;AAC1B,EAAE,CAACziC,CAAM,GAAA,CAAC,SAAS,EAAEA,EAAEyiC,MAAM,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC,CAAC;AAEK,MAAM4kB,iBAAAA,GAAoBpf,EAAGjzC,CAAAA,GAAG,CAAkB;;;;;;;;;;;;;;;AAezD,CAAC;;AC0BD;;;;AAIC,IACD,MAAMsyD,kBAAAA,GAAqB,CAAC,EAAE1jD,OAAO,EAA0B,GAAA;IAC7D,MAAM,EAAE5C,QAAQ,EAAE,GAAGvH,SAAAA,EAAAA,CAAAA;AACrB,IAAA,qBACExG,GAAC+B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAU,EAAA,sCAAA;kBACZoR,OAASizB,EAAAA,IAAAA,EAAM5hC,GAAI,CAAA,CAAC8N,SAAW5N,EAAAA,KAAAA,GAAAA;YAC9B,IAAI4N,SAAAA,CAAUtP,KAAK,EAAE;AACnB,gBAAA,qBACEH,IAACi8B,CAAAA,KAAAA,EAAAA;oBAEC/8B,SAAW,EAAA,CAAC,gBAAgB,EAC1B2C,KAAAA,GAAQ,MAAM,CAAI,GAAA,cAAA,GAAiB,uBACpC,CAAC;oBACFq6B,KAAOzsB,EAAAA,SAAAA,CAAUtP,KAAK,CAACoY,KAAK;;sCAG5B5Y,GAACC,CAAAA,MAAAA,EAAAA;4BACCV,SAAW,EAAA,CAAC,EACV2C,KAAQ,GAAA,CAAA,KAAM,IAAI,cAAiB,GAAA,sBAAA,CACpC,CAAC,CAAC;;wBAEJ4N,SAAUtP,CAAAA,KAAK,CAACd,IAAI;;AAZhBwC,iBAAAA,EAAAA,KAAAA,CAAAA,CAAAA;AAeX,aAAA;YACA,IAAI4N,SAAAA,CAAUwkD,SAAS,EAAE;AACvB,gBAAA,MAAMC,eAAe,CAACC,IAAAA,GACpBA,KAAKxyD,GAAG,CAAC,CAAC+S,GAAK7S,EAAAA,KAAAA,GAAAA;wBACb,IAAI6S,GAAAA,CAAIrV,IAAI,EAAE;AACZ,4BAAA,qBACEM,GAACwkC,CAAAA,WAAAA,EAAAA;AACC9kC,gCAAAA,IAAAA,EAAMqV,IAAIrV,IAAI;gCAEd+P,IAAMsF,EAAAA,GAAAA,EAAKtF,IAAQ80B,IAAAA,WAAAA,CAAYkwB,IAAI;gCACnCl1D,SAAU,EAAA,6CAAA;AAFL2C,6BAAAA,EAAAA,KAAAA,CAAAA,CAAAA;AAKX,yBAAA;wBACA,IAAI6S,GAAAA,CAAI7R,IAAI,EAAE;AACZ,4BAAA,qBACElD,GAACm0D,CAAAA,UAAAA,EAAAA;gCACC3kB,MAAO,EAAA,gBAAA;gCACPjwC,SAAU,EAAA,wCAAA;AAGV,gCAAA,QAAA,gBAAAS,GAACV,CAAAA,QAAAA,EAAAA;oCACCC,SAAU,EAAA,mBAAA;oCACVC,IAAMuV,EAAAA,GAAAA,CAAI7R,IAAI,CAAC1D,IAAI;oCACnBC,QAAUsV,EAAAA,GAAAA,CAAI7R,IAAI,CAACzD,QAAQ;oCAC3BC,IAAMqV,EAAAA,GAAAA,CAAI7R,IAAI,CAACxD,IAAI;oCACnBC,gBAAgB,EAAA,IAAA;;AAPbuC,6BAAAA,EAAAA,KAAAA,CAAAA,CAAAA;AAWX,yBAAA;wBACA,IAAI6S,GAAAA,CAAIswB,KAAK,EAAE;AACb,4BAAA,qBACErlC,GAAC+B,CAAAA,KAAAA,EAAAA;gCAAgBxC,SAAU,EAAA,iBAAA;AACzB,gCAAA,QAAA,gBAAAS,GAACqC,CAAAA,KAAAA,EAAAA;oCACCC,GAAK,EAAA,CAAC,EAAEyL,QAAS,CAAA,EAAEgH,IAAIswB,KAAK,CAAC/iC,GAAG,CAAC,CAAC;oCAClCG,GAAKsS,EAAAA,GAAAA,CAAIswB,KAAK,CAAC5iC,GAAG;oCAClBwL,IAAI,EAAA,IAAA;;AAJE/L,6BAAAA,EAAAA,KAAAA,CAAAA,CAAAA;AAQd,yBAAA;AACF,qBAAA,CAAA,CAAA;AACF,gBAAA,qBACE7B,IAAC0B,CAAAA,KAAAA,EAAAA;oBAAgBxC,SAAU,EAAA,YAAA;;sCACzBS,GAAC+B,CAAAA,KAAAA,EAAAA;4BAAIxC,SAAU,EAAA,iBAAA;sCACZg1D,YAAazkD,CAAAA,SAAAA,CAAUwkD,SAAS,CAAC9oB,IAAI,CAAA;;sCAExCxrC,GAAC+B,CAAAA,KAAAA,EAAAA;4BAAIxC,SAAU,EAAA,WAAA;sCACZg1D,YAAazkD,CAAAA,SAAAA,CAAUwkD,SAAS,CAAC7oB,KAAK,CAAA;;;AALjCvpC,iBAAAA,EAAAA,KAAAA,CAAAA,CAAAA;AASd,aAAA;YACA,IAAI4N,SAAAA,CAAU4kD,KAAK,EAAE;AACnB,gBAAA,qBAAO10D,GAAC20D,CAAAA,IAAAA,EAAAA;oBAAep1D,SAAU,EAAA,2BAAA;AAAjB2C,iBAAAA,EAAAA,KAAAA,CAAAA,CAAAA;AAClB,aAAA;YACA,IAAI4N,SAAAA,CAAU8kD,SAAS,EAAE;AACvB,gBAAA,MAAMC,YAAe,GAAA;oBACnBC,eAAiBA,EAAAA,eAAAA;oBACjBC,mBAAqBA,EAAAA,mBAAAA;oBACrBC,OAASA,EAAAA,OAAAA;oBACTC,eAAiBA,EAAAA,eAAAA;oBACjBC,iBAAmBA,EAAAA,iBAAAA;oBACnBC,OAASA,EAAAA,OAAAA;AACX,iBAAA,CAAA;AACA,gBAAA,qBACE90D,IAAC0B,CAAAA,KAAAA,EAAAA;oBAAgBxC,SAAU,EAAA,aAAA;;sCACzBS,GAACs8B,CAAAA,KAAAA,EAAAA;4BAAM/8B,SAAU,EAAA,MAAA;4BAAOg9B,KAAO,EAAA,CAAA;sCAC5BzsB,SAAU8kD,CAAAA,SAAS,CAACp0D,KAAK;;sCAE5BR,GAACye,CAAAA,IAAAA,EAAAA;4BAAGlf,SAAU,EAAA,uBAAA;sCACXuQ,SAAU8kD,CAAAA,SAAS,CAACQ,KAAK,CAACpzD,GAAG,CAAC,CAACqzD,IAAMnzD,EAAAA,KAAAA,iBACpC7B,IAACqe,CAAAA,IAAAA,EAAAA;oCAECnf,SAAU,EAAA,6EAAA;;AAET4D,sDAAAA,KAAAA,CAAMinD,aAAa,CAACyK,YAAY,CAACQ,IAAKvqD,CAAAA,IAAI,CAAC,EAAE;AAC5CtK,4CAAAA,KAAAA,EAAO,CAAC,EAAE60D,IAAAA,CAAKC,OAAO,CAAC,KAAK,CAAC;4CAC7B/1D,SAAW,EAAA,2CAAA;AACb,yCAAA,CAAA;sDACAS,GAAC+M,CAAAA,GAAAA,EAAAA;4CAAExN,SAAU,EAAA,mCAAA;AACV81D,4CAAAA,QAAAA,EAAAA,IAAAA,CAAKE,QAAQ;;sDAEhBv1D,GAACo0D,CAAAA,iBAAAA,EAAAA;4CACC5kB,MAAO,EAAA,gBAAA;4CACPjwC,SAAU,EAAA,sCAAA;AAGV,4CAAA,QAAA,gBAAAS,GAACV,CAAAA,QAAAA,EAAAA;AACCE,gDAAAA,IAAAA,EAAM61D,KAAK71D,IAAI;AACfC,gDAAAA,QAAAA,EAAU41D,KAAK51D,QAAQ;AACvBC,gDAAAA,IAAAA,EAAM21D,KAAKC,OAAO;;AALfpzD,yCAAAA,EAAAA,KAAAA,CAAAA;;AAbFA,iCAAAA,EAAAA,KAAAA,CAAAA,CAAAA;;;AAPHA,iBAAAA,EAAAA,KAAAA,CAAAA,CAAAA;AAiCd,aAAA;YACA,IAAI4N,SAAAA,CAAU0lD,SAAS,EAAE;AACvB,gBAAA,qBACEn1D,IAAC0B,CAAAA,KAAAA,EAAAA;oBAECxC,SAAU,EAAA,uEAAA;;sCAEVc,IAAC0B,CAAAA,KAAAA,EAAAA;4BAAIxC,SAAU,EAAA,0BAAA;;AACZuQ,gCAAAA,SAAAA,CAAU0lD,SAAS,CAACC,MAAM,iBACzBz1D,GAAC01D,CAAAA,aAAAA,EAAAA;oCACCl1D,KAAM,EAAA,gBAAA;oCACNjB,SAAU,EAAA,iCAAA;AAEV,iCAAA,CAAA,GAAA,IAAA;gCACHuQ,SAAU0lD,CAAAA,SAAS,CAACG,KAAK;AACzB7lD,gCAAAA,SAAAA,CAAU0lD,SAAS,CAACC,MAAM,iBACzBz1D,GAAC01D,CAAAA,aAAAA,EAAAA;oCACCl1D,KAAM,EAAA,gBAAA;oCACNjB,SAAU,EAAA,sBAAA;AAEV,iCAAA,CAAA,GAAA,IAAA;;;sCAENS,GAAC+B,CAAAA,KAAAA,EAAAA;sCAAK+N,SAAU0lD,CAAAA,SAAS,CAACC,MAAM;;;AAlB3BvzD,iBAAAA,EAAAA,KAAAA,CAAAA,CAAAA;AAqBX,aAAA;YACA,OAAO,IAAA,CAAA;AACT,SAAA,CAAA;;AAGN,CAAA;;AC/MM0zD,MAAAA,WAAAA,GAAc,CAAC,EAAE1lD,WAAW,EAAEC,WAAW,EAAE0lD,WAAW,EAAS,GAAA;AACnE,IAAA,qBACE71D,GAACiQ,CAAAA,aAAAA,EAAAA;AACOE,QAAAA,WAAAA;AAAaD,QAAAA,WAAAA;QACnBG,UAAY,EAAA;YACV7P,KAAO,EAAA,gBAAA;YACPmQ,OAAS,EAAA,WAAA;YACTjQ,GAAK,EAAA,gBAAA;AACP,SAAA;AAEA,QAAA,QAAA,gBAAAV,GAAC+B,CAAAA,KAAAA,EAAAA;YAAIxC,SAAU,EAAA,kCAAA;AACb,YAAA,QAAA,gBAAAS,GAACq0D,CAAAA,kBAAAA,EAAAA;gBAAmB1jD,OAASklD,EAAAA,WAAAA;;;;AAIrC;;AC9BA;MAMaC,yBAA4C,GAAA,UAAA;AACvD,IAAA,MAAMC,qBAAqB,MAAMpE,+BAAAA,EAAAA,CAAAA;IACjC,MAAMkE,WAAAA,GAAc,MAAMnE,aAAAA,CAAc5S,GAAG,CACzC,CAAC,OAAO,EAAE+S,iBAAkB,CAAA,iBAAiB,CAAC,CAAA,CAAA;IAEhD,OAAO;QACLjiD,KAAO,EAAA;AACL,YAAA,GAAGmmD,kBAAkB;AACrBF,YAAAA,WAAAA;AACF,SAAA;AACF,KAAA,CAAA;AACF;;ACPA1R,oCAAAA,EAAAA,CAAAA;AACAe,4CAAAA,EAAAA,CAAAA;AAEM8Q,MAAAA,YAAAA,GAAe,CAAC,EACpB9lD,WAAW,EACXC,WAAW,EACXmgD,cAAc,EACI,GAAA;AAClB,IAAA,IAAIA,mBAAmBnqD,SAAW,EAAA;AAChC,QAAA,qBACEnG,GAACuwD,CAAAA,MAAAA,EAAAA;YAAOC,GAAK,EAAA,GAAA;YAAKC,CAAG,EAAA,GAAA;YAAKC,EAAG,EAAA,MAAA;AAC3B,YAAA,QAAA,gBAAA1wD,GAAC+B,CAAAA,KAAAA,EAAAA;AAAI,gBAAA,QAAA,EAAA,+CAAA;;;AAGX,KAAA;AAEA,IAAA,qBACE/B,GAACiQ,CAAAA,aAAAA,EAAAA;AACOC,QAAAA,WAAAA;AAAaC,QAAAA,WAAAA;QACnBE,UAAY,EAAA;YACV7P,KAAO,EAAA,oBAAA;YACPmQ,OAAS,EAAA,eAAA;YACTjQ,GAAK,EAAA,oBAAA;AACP,SAAA;AAEA,QAAA,QAAA,gBAAAV,GAACqwD,CAAAA,aAAAA,EAAAA;YAAcC,cAAgBA,EAAAA,cAAAA;;;AAGrC;;AC/BO,MAAM2F,iCAET,OAAOC,QAAAA,GAAAA;IAET,IAAI;QACF,MAAMC,kBAAAA,GAAiD,MAAMzE,aAAAA,CAAc5S,GAAG,CAC5E,CAAC,OAAO,EAAE+S,iBAAkB,CAAA,cAAc,CAAC,CAAA,CAAA;QAE7C,OAAO;YACLjiD,KAAO,EAAA;AACL,gBAAA,GAAI,MAAM+hD,+BAAiC,EAAA;gBAC3CrB,cAAgB6F,EAAAA,kBAAAA;AAClB,aAAA;AACF,SAAA,CAAA;AACF,KAAA,CAAE,OAAO5jC,GAAK,EAAA;AACZxe,QAAAA,OAAAA,CAAQ4c,KAAK,CAAC4B,GAAAA,CAAAA,CAAAA;QACd,OAAO;YACL3iB,KAAO,EAAA;AACL,gBAAA,GAAI,MAAM+hD,+BAAiC,EAAA;gBAC3CrB,cAAgBnqD,EAAAA,SAAAA;AAClB,aAAA;AACF,SAAA,CAAA;AACF,KAAA;AACF;;ACvBA,MAAMiwD,0BAAoE,GAAA;IACxE,eAAiB,EAAA;AACf,QAAA,wBAAA;AACA,QAAA,6BAAA;AACA,QAAA,4BAAA;AACA,QAAA,0BAAA;AACA,QAAA,oBAAA;AACA,QAAA,0BAAA;AACA,QAAA,yBAAA;AACA,QAAA,2BAAA;AACA,QAAA,4BAAA;AACA,QAAA,wBAAA;AACD,KAAA;IACD,kBAAoB,EAAA;AAClB,QAAA,2BAAA;AACA,QAAA,gCAAA;AACA,QAAA,+BAAA;AACA,QAAA,6BAAA;AACA,QAAA,uBAAA;AACA,QAAA,6BAAA;AACA,QAAA,4BAAA;AACA,QAAA,8BAAA;AACA,QAAA,+BAAA;AACA,QAAA,2BAAA;AACD,KAAA;IACD,oBAAsB,EAAA;AACpB,QAAA,6BAAA;AACA,QAAA,kCAAA;AACA,QAAA,iCAAA;AACA,QAAA,+BAAA;AACA,QAAA,yBAAA;AACA,QAAA,+BAAA;AACA,QAAA,8BAAA;AACA,QAAA,gCAAA;AACA,QAAA,iCAAA;AACA,QAAA,6BAAA;AACD,KAAA;IACD,iBAAmB,EAAA;AACjB,QAAA,0BAAA;AACA,QAAA,+BAAA;AACA,QAAA,8BAAA;AACA,QAAA,4BAAA;AACA,QAAA,sBAAA;AACA,QAAA,4BAAA;AACA,QAAA,2BAAA;AACA,QAAA,6BAAA;AACA,QAAA,8BAAA;AACA,QAAA,0BAAA;AACD,KAAA;IACD,sBAAwB,EAAA;AACtB,QAAA,+BAAA;AACA,QAAA,oCAAA;AACA,QAAA,mCAAA;AACA,QAAA,iCAAA;AACA,QAAA,2BAAA;AACA,QAAA,iCAAA;AACA,QAAA,gCAAA;AACA,QAAA,kCAAA;AACA,QAAA,mCAAA;AACA,QAAA,+BAAA;AACD,KAAA;IACD,sBAAwB,EAAA;AACtB,QAAA,+BAAA;AACA,QAAA,oCAAA;AACA,QAAA,mCAAA;AACA,QAAA,iCAAA;AACA,QAAA,2BAAA;AACA,QAAA,iCAAA;AACA,QAAA,gCAAA;AACA,QAAA,kCAAA;AACA,QAAA,mCAAA;AACA,QAAA,+BAAA;AACD,KAAA;IACD,gBAAkB,EAAA;AAChB,QAAA,yBAAA;AACA,QAAA,8BAAA;AACA,QAAA,6BAAA;AACA,QAAA,2BAAA;AACA,QAAA,qBAAA;AACA,QAAA,2BAAA;AACA,QAAA,0BAAA;AACA,QAAA,4BAAA;AACA,QAAA,6BAAA;AACA,QAAA,yBAAA;AACD,KAAA;IACD,kBAAoB,EAAA;AAClB,QAAA,4BAAA;AACA,QAAA,+BAAA;AACA,QAAA,+BAAA;AACA,QAAA,6BAAA;AACA,QAAA,iCAAA;AACA,QAAA,4BAAA;AACA,QAAA,iCAAA;AACA,QAAA,iCAAA;AACA,QAAA,iCAAA;AACA,QAAA,iCAAA;AACD,KAAA;AACH,CAAA,CAAA;AAEA,MAAMC,kBAA4D,GAAA;IAChE3mB,IAAM,EAAA;AACJ,QAAA,aAAA;AACA,QAAA,kBAAA;AACA,QAAA,iBAAA;AACA,QAAA,eAAA;AACA,QAAA,SAAA;AACA,QAAA,eAAA;AACA,QAAA,cAAA;AACA,QAAA,gBAAA;AACA,QAAA,iBAAA;AACA,QAAA,aAAA;AACD,KAAA;IACD4mB,OAAS,EAAA;AACP,QAAA,gBAAA;AACA,QAAA,qBAAA;AACA,QAAA,oBAAA;AACA,QAAA,kBAAA;AACA,QAAA,YAAA;AACA,QAAA,kBAAA;AACA,QAAA,iBAAA;AACA,QAAA,mBAAA;AACA,QAAA,oBAAA;AACA,QAAA,gBAAA;AACD,KAAA;IAEDC,SAAW,EAAA;AACT,QAAA,kBAAA;AACA,QAAA,uBAAA;AACA,QAAA,sBAAA;AACA,QAAA,oBAAA;AACA,QAAA,cAAA;AACA,QAAA,oBAAA;AACA,QAAA,mBAAA;AACA,QAAA,qBAAA;AACA,QAAA,sBAAA;AACA,QAAA,kBAAA;AACD,KAAA;IAED9mB,MAAQ,EAAA;AACN,QAAA,eAAA;AACA,QAAA,oBAAA;AACA,QAAA,mBAAA;AACA,QAAA,iBAAA;AACA,QAAA,WAAA;AACA,QAAA,iBAAA;AACA,QAAA,gBAAA;AACA,QAAA,kBAAA;AACA,QAAA,mBAAA;AACA,QAAA,eAAA;AACD,KAAA;IAED,aAAe,EAAA;AACb,QAAA,oBAAA;AACA,QAAA,yBAAA;AACA,QAAA,wBAAA;AACA,QAAA,sBAAA;AACA,QAAA,gBAAA;AACA,QAAA,sBAAA;AACA,QAAA,qBAAA;AACA,QAAA,uBAAA;AACA,QAAA,wBAAA;AACA,QAAA,oBAAA;AACD,KAAA;IACD,aAAe,EAAA;AACb,QAAA,oBAAA;AACA,QAAA,yBAAA;AACA,QAAA,wBAAA;AACA,QAAA,sBAAA;AACA,QAAA,gBAAA;AACA,QAAA,sBAAA;AACA,QAAA,qBAAA;AACA,QAAA,uBAAA;AACA,QAAA,wBAAA;AACA,QAAA,oBAAA;AACD,KAAA;IAEDrF,KAAO,EAAA;AACL,QAAA,cAAA;AACA,QAAA,mBAAA;AACA,QAAA,kBAAA;AACA,QAAA,gBAAA;AACA,QAAA,UAAA;AACA,QAAA,gBAAA;AACA,QAAA,eAAA;AACA,QAAA,iBAAA;AACA,QAAA,kBAAA;AACA,QAAA,cAAA;AACD,KAAA;IACDosB,OAAS,EAAA;AACP,QAAA,iBAAA;AACA,QAAA,oBAAA;AACA,QAAA,oBAAA;AACA,QAAA,kBAAA;AACA,QAAA,sBAAA;AACA,QAAA,iBAAA;AACA,QAAA,sBAAA;AACA,QAAA,sBAAA;AACA,QAAA,sBAAA;AACA,QAAA,sBAAA;AACD,KAAA;AACH,CAAA,CAAA;AAyBA,MAAMC,0BAAAA,GAA6B,CAAC,EAClCpqD,IAAI,EACJmjC,MAAM,EACNknB,QAAWvwD,GAAAA,SAAS,EACa,GAAA;AACjC,IAAA,qBACI9F,IAAC0B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAU,EAAA,+CAAA;;0BACbS,GAAC+M,CAAAA,GAAAA,EAAAA;gBAAExN,SAAU,EAAA,+CAAA;AAAiD8M,gBAAAA,QAAAA,EAAAA,IAAAA;;YAC7DmjC,MAAOxtC,CAAAA,GAAG,CAAC,CAAC0B,CAAGb,EAAAA,CAAAA,GAAAA;AACd,gBAAA,MAAM8zD,MAAMjzD,CAAEF,CAAAA,KAAK,CAAC,GAAK+V,CAAAA,CAAAA,KAAK,CAAC,CAAC,CAAA,CAAA,CAAA;AAChC,gBAAA,qBACEvZ,GAAC+B,CAAAA,KAAAA,EAAAA;oBAECxC,SAAW,EAAA,CAAC,EAAEmE,CAAAA,CAAE,CAAC,EACfgzD,QAAU,GAAC7zD,CAAE,CAAA,IAAI,EAClB,CAAA,sEAAsE,CAAC;AAEvE8zD,oBAAAA,QAAAA,EAAAA,GAAAA;AALI,iBAAA,EAAA,CAAC,EAAEjzD,CAAAA,CAAE,CAAC,EAAEb,EAAE,CAAC,CAAA,CAAA;AAQtB,aAAA,CAAA;;;AAGR,CAAA,CAAA;AAEA,MAAM+zD,UAAa,GAAA,IAAA;AACjB,IAAA,qBACEv2D,IAACw2D,CAAAA,SAAAA,EAAAA;QAAQt3D,SAAU,EAAA,kFAAA;;0BACjBS,GAAC+M,CAAAA,GAAAA,EAAAA;gBAAExN,SAAU,EAAA,8BAAA;AAA+B,gBAAA,QAAA,EAAA,gBAAA;;0BAC5Cc,IAAC0B,CAAAA,KAAAA,EAAAA;gBAAIxC,SAAU,EAAA,oBAAA;;kCACbS,GAAC+B,CAAAA,KAAAA,EAAAA;wBAAIxC,SAAU,EAAA,iCAAA;AAAkC,wBAAA,QAAA,EAAA,mFAAA;;AAIhD0B,oBAAAA,MAAAA,CAAOC,IAAI,CAACm1D,kBAAoBr0D,CAAAA,CAAAA,GAAG,CAAC,CAACqK,IAAAA,GAAAA;AACpC,wBAAA,qBACErM,GAACy2D,CAAAA,0BAAAA,EAAAA;4BAECpqD,IAAMA,EAAAA,IAAAA;4BACNmjC,MAAQ6mB,EAAAA,kBAAkB,CAAChqD,IAAK,CAAA;4BAChCqqD,QACEz1D,EAAAA,MAAAA,CAAOC,IAAI,CAACk1D,0BAA4B3yD,CAAAA,CAAAA,MAAM,CAAC,CAAC2W,OAC9CA,GAAAA,OAAAA,CAAQG,QAAQ,CAAClO,IACjBlK,CAAAA,CAAAA,CAAAA,MAAM,GAAG,CACPi0D,GAAAA,0BAA0B,CAAC,CAAC,EAAE/pD,IAAAA,CAAK,SAAS,CAAC,CAAC,GAC9C+pD,0BAA0B,CAAC,kBAAmB,CAAA;2BAR/C,CAAC,EAAE/pD,IAAK,CAAA,OAAO,CAAC,CAAA,CAAA;AAY3B,qBAAA,CAAA;kCAEArM,GAAC+B,CAAAA,KAAAA,EAAAA;wBAAIxC,SAAU,EAAA,kCAAA;AACf,wBAAA,QAAA,gBAAAc,IAAC6O,CAAAA,IAAAA,EAAAA;;8CACC7O,IAAC0M,CAAAA,GAAAA,EAAAA;;sDACC/M,GAACiX,CAAAA,GAAAA,EAAAA;AAAE,4CAAA,QAAA,EAAA,uDAAA;;AAAyD,wCAAA,uEAAA;AACG,wCAAA,GAAA;sDAC/DjX,GAAC82D,CAAAA,IAAAA,EAAAA;AAAG,4CAAA,QAAA,EAAA,iFAAA;;;;8CAKN92D,GAACiX,CAAAA,GAAAA,EAAAA;AAAE,oCAAA,QAAA,EAAA,MAAA;;AAAQ,gCAAA,4GAAA;8CAEX5W,IAAC0M,CAAAA,GAAAA,EAAAA;;sDACC/M,GAACiX,CAAAA,GAAAA,EAAAA;AAAE,4CAAA,QAAA,EAAA,uCAAA;;AAAyC,wCAAA,sZAAA;;;8CAQ9C5W,IAAC0M,CAAAA,GAAAA,EAAAA;;AAAE,wCAAA,wCAAA;sDAED1M,IAAC4W,CAAAA,GAAAA,EAAAA;;AAAE,gDAAA,2EAAA;AAEY,gDAAA,GAAA;;;AACX,wCAAA,6QAAA;;;AAMF,gCAAA,sEAAA;8CAEJjX,GAACye,CAAAA,IAAAA,EAAAA;AACC,oCAAA,QAAA,gBAAAze,GAAC0e,CAAAA,IAAAA,EAAAA;AACC,wCAAA,QAAA,gBAAAre,IAAC4W,CAAAA,GAAAA,EAAAA;;AAAE,gDAAA,qKAAA;AAG+C,gDAAA,GAAA;;;;;8CAItD5W,IAAC0M,CAAAA,GAAAA,EAAAA;;AAAE,wCAAA,wEAAA;sDAEK/M,GAACiX,CAAAA,GAAAA,EAAAA;AAAE,4CAAA,QAAA,EAAA,gBAAA;;AAAkB,wCAAA,6CAAA;sDACpBjX,GAACiX,CAAAA,GAAAA,EAAAA;AAAE,4CAAA,QAAA,EAAA,yBAAA;;AAA2B,wCAAA,sJAAA;sDAEgBjX,GAAC82D,CAAAA,IAAAA,EAAAA;AAAG,4CAAA,QAAA,EAAA,OAAA;;AAAW,wCAAA,GAAA;AAAI,wCAAA,qBAAA;sDACrD92D,GAAC82D,CAAAA,IAAAA,EAAAA;AAAG,4CAAA,QAAA,EAAA,OAAA;;AAAU,wCAAA,eAAA;AAAc,wCAAA,GAAA;sDAC/C92D,GAACiX,CAAAA,GAAAA,EAAAA;AAAE,4CAAA,QAAA,EAAA,oBAAA;;AAAsB,wCAAA,OAAA;sDAAKjX,GAACiX,CAAAA,GAAAA,EAAAA;AAAE,4CAAA,QAAA,EAAA,+BAAA;;AAAkC,wCAAA,GAAA;AAAI,wCAAA,+FAAA;sDAE5CjX,GAAC82D,CAAAA,IAAAA,EAAAA;AAAG,4CAAA,QAAA,EAAA,SAAA;;AAAY,wCAAA,oHAAA;sDAEhB92D,GAAC82D,CAAAA,IAAAA,EAAAA;AAAG,4CAAA,QAAA,EAAA,SAAA;;AAAY,wCAAA,6CAAA;;;;;;;;;;AAQvD,CAAA;;ACrVA,MAAMC,iBAAiB,CAAC,EAAE7mD,WAAW,EAAEC,WAAW,EAAsB,GAAA;AACtE,IAAA,qBACEnQ,GAACiQ,CAAAA,aAAAA,EAAAA;AACOC,QAAAA,WAAAA;AAAaC,QAAAA,WAAAA;QACnBE,UAAY,EAAA;YACV7P,KAAO,EAAA,iBAAA;YACPmQ,OAAS,EAAA,YAAA;YACTjQ,GAAK,EAAA,iBAAA;AACP,SAAA;AAEA,QAAA,QAAA,gBAAAV,GAAC+B,CAAAA,KAAAA,EAAAA;YAAIxC,SAAU,EAAA,kCAAA;AACb,YAAA,QAAA,gBAAAS,GAAC42D,CAAAA,UAAAA,EAAAA,EAAAA,CAAAA;;;AAIT;;MCfaI,gCAET,GAAA,UAAA;IACF,OAAO;QACLpnD,KAAO,EAAA;AACL,YAAA,GAAI,MAAM+hD,+BAAiC,EAAA;AAC7C,SAAA;AACF,KAAA,CAAA;AACF;;ACDA,MAAMsF,mBAAmB,CAAC,EAAEjvD,QAAQ,EAAEw9B,OAAO,EAAyB,GAAA;AACpE,IAAA,MAAMj/B,MAASC,GAAAA,SAAAA,EAAAA,CAAAA;AAEf,IAAA,IAAIy+B,QAAWO,GAAAA,OAAAA,CAAAA;AACf,IAAA,IAAI,CAACA,OAAAA,IAAY,OAAO3hC,MAAAA,KAAW,WAAa,EAAA;;AAE9CohC,QAAAA,QAAAA,GAAW1+B,OAAO2wD,MAAM,CAAA;AAC1B,KAAA;AAEA,IAAA,MAAM5wD,iBAAoB,GAAA,IAAA;QACxB,IAAI,OAAOzC,MAAW,KAAA,WAAA;AAEpB0C,QAAAA,MAAAA,CAAOI,IAAI,CAAC;YACVwE,QAAU,EAAA,QAAA;YACVmvB,KAAO,EAAA;gBAAEkL,OAASP,EAAAA,QAAAA;AAAS,aAAA;AAC7B,SAAA,CAAA,CAAA;AACJ,KAAA,CAAA;AAEA,IAAA,MAAM,EAAExgC,MAAM,EAAEc,OAAO,EAAE,GAAGa,WAAW,IAAME,EAAAA,iBAAAA,CAAAA,CAAAA;AAC7C,IAAA,IAAI7B,WAAW,QAAU,EAAA;;QAEvB,IAAIc,OAAAA,EAAS,qBAAOvF,GAACoqB,CAAAA,cAAAA,EAAAA;YAAeC,OAAS9kB,EAAAA,OAAAA;;AAE3C,aAAA,qBACClF,IAAC0B,CAAAA,KAAAA,EAAAA;YAAIxC,SAAU,EAAA,wBAAA;;8BACZS,GAACoqB,CAAAA,cAAAA,EAAAA;oBAAeC,OAAS9kB,EAAAA,OAAAA;;8BACzBvF,GAACuwD,CAAAA,MAAAA,EAAAA;AACC,oBAAA,QAAA,gBAAAvwD,GAAC8tB,CAAAA,KAAAA,EAAAA;wBAAMiS,MAAO,EAAA,IAAA;wBAAKhzB,CAAE,EAAA,IAAA;AACnB,wBAAA,QAAA,gBAAA/M,GAACkP,CAAAA,IAAAA,EAAAA;AAAK,4BAAA,QAAA,EAAA,kFAAA;;;;;;AAQlB,KAAA;IAEA,qBAAOlP,GAAA,CAACmD,eAAMC,QAAQ,EAAA;AAAE4E,QAAAA,QAAAA,EAAAA,QAAAA;;AAC1B,CAAA;;ACrCA,MAAMmvD,eAAe,KAAQ,GAAA,CAAA,CAAA;AAS7B,MAAMC,SAAAA,GAAY,CAACC,UAAoBnzD,EAAAA,GAAAA,GAAAA;IACrC,IAAImzD,UAAAA,GAAanzD,KAAK,OAAO,SAAA,CAAA;SACxB,IAAImzD,UAAAA,GAAanzD,GAAMizD,GAAAA,YAAAA,EAAc,OAAO,eAAA,CAAA;IACjD,OAAO,QAAA,CAAA;AACT,CAAA,CAAA;AASA;;;;AAIC,IACD,MAAMG,gBAAmB,GAAA,IAAA;AACvB,IAAA,MAAM,EAAE51C,IAAAA,EAAM61C,SAAS,EAAE,GAAG9uB,eAAAA,EAAAA,CAAAA;AAC5B,IAAA,MAAM,EAAE/mB,IAAAA,EAAMwhB,WAAW,EAAE,GAAGs0B,sBAAAA,EAAAA,CAAAA;IAC9B,MAAM,CAACC,iBAAiB,GAAGC,2BAAAA,EAAAA,CAAAA;AAE3B,IAAA,MAAM1vC,UAAUnG,OAAQ,CAAA,IAAA;QACtB,OAAO;AACL,YAAA;gBACE6F,WAAa,EAAA,KAAA;gBACbja,MAAQ,EAAA,SAAA;AACV,aAAA;AACA,YAAA;gBACEia,WAAa,EAAA,QAAA;gBACbja,MAAQ,EAAA,QAAA;AACV,aAAA;AACA,YAAA;gBACEia,WAAa,EAAA,YAAA;gBACbja,MAAQ,EAAA,iBAAA;gBACRka,UAAY,EAAA,CAACgwC,MACX3+C,GAAAA,gBAAAA;AAEE2+C,oBAAAA,MAAAA,CAAON,UAAU,CAAA;AAEvB,aAAA;AACA,YAAA;gBACE3vC,WAAa,EAAA,SAAA;gBACbja,MAAQ,EAAA,SAAA;AACRma,gBAAAA,IAAAA,EAAM,CAAC,EAAE7W,GAAG,EAA0B,iBACpC/Q,GAAC+B,CAAAA,KAAAA,EAAAA;wBAAIxC,SAAU,EAAA,mBAAA;AACZwR,wBAAAA,QAAAA,EAAAA,GAAAA,CAAIqC,QAAQ,CAAChE,OAAO,KAAK,yBACxBpP,GAAC66C,CAAAA,UAAAA,EAAAA;AACC9uC,4BAAAA,OAAAA,EAAS,IACP0rD,gBAAiB,CAAA;AACfF,oCAAAA,SAAAA,EAAWA,SAAWA,EAAAA,SAAAA;oCACtB3vD,EAAImJ,EAAAA,GAAAA,CAAIqC,QAAQ,CAAC1S,GAAG;AACtB,iCAAA,CAAA;AAGF,4BAAA,QAAA,gBAAAV,GAAC43D,CAAAA,QAAAA,EAAAA,EAAAA,CAAAA;2CAGHv3D,IAACJ,CAAAA,MAAAA,EAAAA;;AACE,gCAAA,GAAA;8CACDD,GAAC63D,CAAAA,WAAAA,EAAAA,EAAAA,CAAAA;AAAc,gCAAA,GAAA;8CAAC73D,GAAC43D,CAAAA,QAAAA,EAAAA,EAAAA,CAAAA;;;;AAK3B,aAAA;AACD,SAAA,CAAA;KACA,EAAA;AAACL,QAAAA,SAAAA;AAAWE,QAAAA,gBAAAA;AAAiB,KAAA,CAAA,CAAA;AAEhC,IAAA,MAAMK,uBAAuBh/C,IAAKC,CAAAA,KAAK,CAAC9U,IAAAA,CAAKC,GAAG,EAAK,GAAA,IAAA,CAAA,CAAA;AAErD,IAAA,MAAM2gD,OAAOhjC,OAAQ,CAAA,IAAA;AACnB,QAAA,OAAOqhB,WACHA,GAAAA,WAAAA,CAAYh2B,MAAM,CAAC,CAACC,GAAqBiL,EAAAA,CAAAA,GAAAA;AACvC,YAAA,MAAM3T,MAAS2yD,GAAAA,SAAAA,CAAUh/C,CAAEtT,CAAAA,GAAG,EAAEgzD,oBAAAA,CAAAA,CAAAA;YAChC,OAAO3qD,GAAAA,CAAI28B,MAAM,CAAC;AAChBppC,gBAAAA,GAAAA,EAAK0X,EAAE2/C,GAAG;AACVV,gBAAAA,UAAAA,EAAYj/C,EAAEtT,GAAG;gBACjBL,MAAQA,EAAAA,MAAAA;gBACR2K,OAAS3K,EAAAA,MAAAA,KAAW,WAAW,QAAW,GAAA,eAAA;AAC5C,aAAA,CAAA,CAAA;SACC,EAAA,EAAE,IACL,EAAE,CAAA;KACL,EAAA;AAACy+B,QAAAA,WAAAA;AAAa40B,QAAAA,oBAAAA;AAAqB,KAAA,CAAA,CAAA;AAEtC,IAAA,MAAMhwC,QAAQC,oBAAmC,CAAA;AAC/CC,QAAAA,OAAAA;QACAtG,IAAMmjC,EAAAA,IAAAA;QACN0C,qBAAuB,EAAA,OAAA;QACvByQ,0BAA4B,EAAA,QAAA;QAC5BrvC,gBAAkB,EAAA,KAAA;QAClBsvC,2BAA6B,EAAA;YAC3Bz/B,WAAa,EAAA,iBAAA;AACf,SAAA;QACA9P,KAAOzC,EAAAA,UAAAA;AACT,KAAA,CAAA,CAAA;AAEA,IAAA,qBAAOjmB,GAACsqB,CAAAA,iBAAAA,EAAAA;QAAkBxC,KAAOA,EAAAA,KAAAA;;AACnC,CAAA;;ACpGA;;;;;;AAMC,IACD,MAAMowC,WAAc,GAAA,IAAA;;AAElB,IAAA,MAAM,EAAEx2C,IAAAA,EAAM61C,SAAS,EAAE,GAAG9uB,eAAAA,EAAAA,CAAAA;IAC5B,MAAM,EAAEthB,SAAS,EAAE,GAAGqwC,sBAAAA,EAAAA,CAAAA;IACtB,MAAM,CAACW,kBAAkB,EAAEhxC,SAAAA,EAAWixC,YAAY,EAAEzjC,SAAS,EAAE,CAAC,GAC9D0jC,2BAAAA,EAAAA,CAAAA;AACF,IAAA,MAAMpuD,KAAQzB,GAAAA,eAAAA,CAAgB,CAACC,KAAAA,GAAUkgC,kBAAmBlgC,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA;AAC5D,IAAA,MAAM,CAAC6vD,aAAAA,EAAen1B,cAAe,CAAA,GAAG79B,QAAyB,CAAA;QAC/DyiC,OAAS,EAAA,EAAA;QACTC,MAAQ,EAAA,EAAA;AACV,KAAA,CAAA,CAAA;AAEA,IAAA,MAAM3/B,YAAeC,GAAAA,eAAAA,EAAAA,CAAAA;IACrB,qBACEjI,IAAA,CAAC8C,eAAMC,QAAQ,EAAA;;YACZ6G,KAAUC,KAAAA,MAAAA,CAAOw9B,4BAA4B,kBAC5C1nC,GAAC0nC,CAAAA,4BAAAA,EAAAA;gBAA6BvB,SAAS,EAAA,IAAA;gBAACjD,WAAao1B,EAAAA,aAAAA;;0BAEvDj4D,IAAC0B,CAAAA,KAAAA,EAAAA;gBAAIxC,SAAU,EAAA,mCAAA;;kCACbS,GAAC+B,CAAAA,KAAAA,EAAAA;wBAAIxC,SAAU,EAAA,WAAA;AACb,wBAAA,QAAA,gBAAAS,GAAC6P,CAAAA,MAAAA,EAAAA;4BACCjE,KAAM,EAAA,UAAA;4BACNG,OAAS,EAAA,UAAA;AACP,gCAAA,IAAIwrD,SAAW,EAAA;oCACb,MAAMY,gBAAAA,CAAiBZ,UAAUA,SAAS,CAAA,CACvCgB,MAAM,EACNjvD,CAAAA,IAAI,CAAC,CAAC45B,WAAAA,GAAAA;AACL76B,wCAAAA,YAAAA,CACE2B,SAAU,CAAA;AAAEC,4CAAAA,KAAAA,EAAOC,OAAOw9B,4BAA4B;AAAC,yCAAA,CAAA,CAAA,CAAA;wCAEzDvE,cAAeD,CAAAA,WAAAA,CAAAA,CAAAA;AACjB,qCAAA,CAAA,CAAA;AACJ,iCAAA;AACF,6BAAA;AACD,4BAAA,QAAA,EAAA,mBAAA;;;kCAIHljC,GAACoqB,CAAAA,cAAAA,EAAAA;AAAeC,wBAAAA,OAAAA,EAASlD,SAAaixC,IAAAA,YAAAA;;kCACtCp4D,GAACs3D,CAAAA,gBAAAA,EAAAA,EAAAA,CAAAA;;;;;AAIT,CAAA;;ACrEO,MAAMkB,+BAAkC,GAAA,CAC7CzlD,OACA+b,EAAAA,OAAAA,GAAAA;AAEA,IAAA,OAAO/b,OAAQ7F,CAAAA,MAAM,CACnB,CAACC,GAA+B0W,EAAAA,KAAAA,GAAAA;QAC9B,IAAIiL,OAAAA,CAAQ3sB,MAAM,GAAG,CAAK,IAAA,CAAC2sB,OAAQvU,CAAAA,QAAQ,CAACsJ,KAAAA,CAAMlK,OAAO,CAAA,EAAG,OAAOxM,GAAAA,CAAAA;AACnE,QAAA,IAAI,EAAE0W,KAAAA,CAAMnK,MAAM,IAAIvM,GAAE,CAAI,EAAA;AAC1BA,YAAAA,GAAG,CAAC0W,KAAAA,CAAMnK,MAAM,CAAC,GAAG;AAACmK,gBAAAA,KAAAA,CAAMlK,OAAO;AAAC,aAAA,CAAA;SAC9BxM,MAAAA,GAAG,CAAC0W,KAAMnK,CAAAA,MAAM,CAAC,CAAC/S,IAAI,CAACkd,KAAAA,CAAMlK,OAAO,CAAA,CAAA;QAC3C,OAAOxM,GAAAA,CAAAA;AACT,KAAA,EACA,EAAC,CAAA,CAAA;AAEL,CAAE;;ACYF,MAAMsrD,aAAAA,GAAgB,CAAC,EACrBp4C,QAAQ,EACRq4C,iBAAiB,EACjBC,YAAe,GAAA,SAAS,EACL,GAAA;IACnB,MAAM,EAAE/sD,KAAK,EAAEJ,KAAK,EAAE,GACpB6U,QAAAA,IAAYq4C,iBACRA,GAAAA,iBAAiB,CAACr4C,QAAAA,CAAS,GAC3B;QAAEzU,KAAO+sD,EAAAA,YAAAA;QAAcntD,KAAO6U,EAAAA,QAAAA;AAAS,KAAA,CAAA;AAE7C,IAAA,qBACErgB,GAAC0b,CAAAA,KAAAA,EAAAA;QAAM3L,OAAQ,EAAA,QAAA;QAASnE,KAAOA,EAAAA,KAAAA;QAAOgB,YAAYpB,EAAAA,KAAAA;AAC/CA,QAAAA,QAAAA,EAAAA,KAAAA;;AAGP,CAAA,CAAA;AAMA;;;;;;;;AAQC,IACD,MAAMotD,gBAAAA,GAAiB,CAAC,EAAE9pC,OAAO,EAAuB,GAAA;AACtD,IAAA,MAAM,EAAE6R,WAAW,EAAEC,kBAAkB,EAAE,GAAGG,mBAAAA,EAAAA,CAAAA;IAC5C,MAAM,EAAET,aAAa,EAAE,GAAGC,iBAAAA,EAAAA,CAAAA;AAC1B,IAAA,IAAIskB,OAAuB,EAAE,CAAA;AAE7BA,IAAAA,IAAAA,GAAOhjC,OAAQ,CAAA,IAAA;AACb,QAAA,OAAO5gB,MAAO8R,CAAAA,OAAO,CAAC4tB,WAAAA,EAAak4B,KAAS,IAAA,EACzC72D,CAAAA,CAAAA,GAAG,CAAC,CAAC,CAACtB,GAAAA,EAAKm4D,KAAM,CAAA,GAAA;YAChB,MAAM/3B,OAAAA,GAAU03B,gCAAgCK,KAAO/pC,EAAAA,OAAAA,CAAAA,CAAAA;YACvD,OAAO;gBACLzO,QAAU3f,EAAAA,GAAAA;gBACVogC,OAASA,EAAAA,OAAAA;AACX,aAAA,CAAA;SAEDr9B,CAAAA,CAAAA,MAAM,CAAC,CAACsN,GAAQ9P,GAAAA,MAAAA,CAAOC,IAAI,CAAC6P,GAAI+vB,CAAAA,OAAO,CAAE3+B,CAAAA,MAAM,GAAG,CAAA,CAAA,CAAA;KACpD,EAAA;AAAC2sB,QAAAA,OAAAA;QAAS6R,WAAak4B,EAAAA,KAAAA;AAAM,KAAA,CAAA,CAAA;AAEhC,IAAA,MAAM7wC,UAAUnG,OAAQ,CAAA,IAAA;QACtB,OAAO;AACL,YAAA;gBACEpU,MAAQ,EAAA,aAAA;gBACRia,WAAa,EAAA,UAAA;AACbE,gBAAAA,IAAAA,EAAM,CAAC,EAAE7W,GAAG,EAA0B,iBACpC/Q,GAAC+B,CAAAA,KAAAA,EAAAA;kCAAKgP,GAAIqC,CAAAA,QAAQ,CAACiN,QAAQ;;gBAE7BqJ,yBAA2B,EAAA;oBACzBoH,KAAO,EAAA,MAAA;AACT,iBAAA;gBACAgoC,yBAA2B,EAAA;oBACzBhoC,KAAO,EAAA,MAAA;AACT,iBAAA;AACF,aAAA;AACG8P,YAAAA,GAAAA,kBAAAA,CAAmBE,OAAO,CAAC9+B,GAAG,CAAC,CAAC0X,MAAAA,GAAAA;gBACjC,OAAO;oBACLjM,MAAQiM,EAAAA,MAAAA;oBACRq/C,QAAU,EAAA,SAAA;oBACV/tD,IAAM,EAAA,GAAA;oBACN4c,IAAM,EAAA,CAAC,EAAE7W,GAAG,EAA0B,GAAA;AACpC,wBAAA,qBACE/Q,GAAC+B,CAAAA,KAAAA,EAAAA;4BAAIxC,SAAU,EAAA,yBAAA;AACZma,4BAAAA,QAAAA,EAAAA,MAAAA,IAAU3I,IAAIqC,QAAQ,CAAC0tB,OAAO,GAC7B/vB,IAAIqC,QAAQ,CAAC0tB,OAAO,CAACpnB,OAAO,CAAC1X,GAAG,CAAC,CAACqe,yBAChCrgB,GAACy4D,CAAAA,aAAAA,EAAAA;oCAECp4C,QAAUA,EAAAA,QAAAA;AACVq4C,oCAAAA,iBAAAA,EACEp4B,aAAcyB,CAAAA,aAAa,EAAED,aAAAA,IAAiB,EAAC;AAH5CzhB,iCAAAA,EAAAA,QAAAA,CAAAA,CAAAA,iBAQTrgB,GAACC,CAAAA,MAAAA,EAAAA;gCAAKV,SAAU,EAAA,SAAA;;;AAIxB,qBAAA;AACF,iBAAA,CAAA;AACF,aAAA,CAAA;AACD,SAAA,CAAA;KACA,EAAA;AAAC+gC,QAAAA,aAAAA,CAAcyB,aAAa,EAAED,aAAAA;AAAelB,QAAAA,kBAAAA,CAAmBE,OAAO;AAAC,KAAA,CAAA,CAAA;AAE3E,IAAA,MAAMhZ,QAAQC,oBAAmC,CAAA;AAC/CC,QAAAA,OAAAA;QACAtG,IAAMmjC,EAAAA,IAAAA;QACNmU,oBAAsB,EAAA,IAAA;QACtBrwC,gBAAkB,EAAA,KAAA;QAClBY,UAAY,EAAA,MAAA;QACZb,KAAOzC,EAAAA,UAAAA;;QAEPgzC,wBAA0B,EAAA;YACxBj8C,KAAO,EAAA;gBACL,6BAA+B,EAAA,kCAAA;gBAC/BE,WAAa,EAAA,kCAAA;gBACbg8C,WAAa,EAAA,KAAA;gBACbzvC,SAAW,EAAA,MAAA;gBACXqH,KAAO,EAAA,QAAA;gBACPhH,QAAU,EAAA,6BAAA;gBACVD,UAAY,EAAA,GAAA;gBACZje,KAAO,EAAA,2CAAA;AACT,aAAA;AACF,SAAA;QACA8d,yBAA2B,EAAA;YACzBoH,KAAO,EAAA,QAAA;AACT,SAAA;QACAgoC,yBAA2B,EAAA;YACzBhoC,KAAO,EAAA,QAAA;AACT,SAAA;QACAy2B,qBAAuB,EAAA,OAAA;QACvByQ,0BAA4B,EAAA,QAAA;AAC9B,KAAA,CAAA,CAAA;AAEA,IAAA,qBACEh4D,GAAC+B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAU,EAAA,QAAA;AACb,QAAA,QAAA,gBAAAS,GAACsqB,CAAAA,iBAAAA,EAAAA;YAAkBxC,KAAOA,EAAAA,KAAAA;;;AAGhC,CAAA;;ACrJA;;;;IAKO,MAAMqxC,gBAAiB,GAAA,IAAA;AAC5B,IAAA,MAAM,CAACrqC,OAAAA,EAAS8S,UAAW,CAAA,GAAGt8B,SAAmB,EAAE,CAAA,CAAA;;AAEnD,IAAA,qBACEtF,GAACghC,CAAAA,iBAAAA,EAAAA;AACC,QAAA,QAAA,gBAAA3gC,IAAC0B,CAAAA,KAAAA,EAAAA;YAAIxC,SAAU,EAAA,MAAA;;8BACbS,GAAC0hC,CAAAA,gBAAAA,EAAAA;oBAAiBE,UAAYA,EAAAA,UAAAA;oBAAYD,eAAiB7S,EAAAA,OAAAA;;8BAC3D9uB,GAAC44D,CAAAA,gBAAAA,EAAAA;oBAAe9pC,OAASA,EAAAA,OAAAA;;;;;AAIjC,CAAE;;ACXF;;;;IAKA,MAAMsqC,cAAiB,GAAA,CAAC92B,GAAa9hC,EAAAA,KAAAA,GAAAA;AACnC,IAAA,MAAM64D,YAAe,GAAA,GAAA,CAAA;IACrB,OAAO,IAAI5M,OAAQ,CAAA,CAAC6M,OAASC,EAAAA,MAAAA,GAAAA;AAC3B,QAAA,IAAI11D,MAAO21D,CAAAA,SAAS,CAACC,aAAa,EAAE;AAClC,YAAA,MAAMC,cAAiB71D,GAAAA,MAAAA,CAAO81D,UAAU,IAAI91D,OAAO+1D,OAAO,CAAA;AAC1D,YAAA,MAAMC,aAAgBh2D,GAAAA,MAAAA,CAAOi2D,SAAS,IAAIj2D,OAAOk2D,OAAO,CAAA;YAExD,MAAMx3D,KAAAA,GACJsB,MAAOm2D,CAAAA,UAAU,IACjBhmC,QAAAA,CAASimC,eAAe,CAACzkB,WAAW,IACpC0kB,MAAAA,CAAO33D,KAAK,CAAA;YAEd,MAAMC,MAAAA,GACJqB,MAAOs2D,CAAAA,WAAW,IAClBnmC,QAAAA,CAASimC,eAAe,CAACG,YAAY,IACrCF,MAAAA,CAAO13D,MAAM,CAAA;AAEf,YAAA,MAAM63D,UAAa93D,GAAAA,KAAAA,GAAQsB,MAAOq2D,CAAAA,MAAM,CAACI,UAAU,CAAA;AAEnD,YAAA,MAAM9uB,OAAO,CAACjpC,QAAQ,GAAE,IAAK,IAAI83D,UAAaX,GAAAA,cAAAA,CAAAA;AAC9C,YAAA,MAAMnqD,MAAM,CAAC/M,SAAS,GAAE,IAAK,IAAI63D,UAAaR,GAAAA,aAAAA,CAAAA;YAE9C,MAAMU,GAAAA,GAAM12D,OAAO6gB,IAAI,CACrB4d,KACA9hC,KACA,EAAA,CAAC,MAAM,EAAE,GAAA,GAAM65D,WAAW,QAAQ,EAChC,MAAMA,UACP,CAAA,KAAK,EAAE9qD,GAAI,CAAA,MAAM,EAAEi8B,IAAAA,CAAK,CAAC,CAAA,CAAA;AAG5B,YAAA,IAAI,CAAC+uB,GAAK,EAAA;gBACRhB,MAAO,CAAA,eAAA,CAAA,CAAA;AACP,gBAAA,OAAA;AACF,aAAA;YACAgB,GAAKzhB,EAAAA,KAAAA,EAAAA,CAAAA;AAEL,YAAA,MAAM0hB,YAAe,GAAA,IAAA;gBACnB,IAAID,GAAAA,CAAIE,MAAM,EAAE;oBACd3yD,aAAc4yD,CAAAA,QAAAA,CAAAA,CAAAA;oBACdnB,MAAO,CAAA,wBAAA,CAAA,CAAA;AACT,iBAAA;gBACA,IAAI;AACF,oBAAA,IACEgB,IAAIvmC,QAAQ,CAACq2B,GAAG,CAAC9vC,QAAQ,CAACzW,QAAS62D,CAAAA,MAAM,CACzC,IAAA,CAACJ,IAAIvmC,QAAQ,CAACq2B,GAAG,CAAC9vC,QAAQ,CAAC,MAC3B,CAAA,EAAA;AACAggD,wBAAAA,GAAAA,CAAI51C,KAAK,EAAA,CAAA;wBACT7c,aAAc4yD,CAAAA,QAAAA,CAAAA,CAAAA;AACd,wBAAA,IAAIH,IAAIvmC,QAAQ,CAACq2B,GAAG,CAAC9vC,QAAQ,CAAC,WAAc,CAAA,EAAA;4BAC1Cg/C,MAAO,CAAA,aAAA,CAAA,CAAA;AACP,4BAAA,OAAA;AACF,yBAAA;wBACAD,OAAQ,CAAA,SAAA,CAAA,CAAA;AACV,qBAAA;AACF,iBAAA,CAAE,OAAO/mC,GAAK,EAAA;;;;;;;AAOd,iBAAA;AACF,aAAA,CAAA;YACA,MAAMmoC,QAAAA,GAAW7yD,YAAY2yD,YAAcnB,EAAAA,YAAAA,CAAAA,CAAAA;SACtC,MAAA;YACLE,MAAO,CAAA,oBAAA,CAAA,CAAA;AACT,SAAA;AACF,KAAA,CAAA,CAAA;AACF,CAAA,CAAA;AAMA,MAAMqB,oBAEF,GAAA,CAAC,EAAE34B,QAAQ,EAAE,GAAA;IACf,MAAM,CAACiI,OAASiX,EAAAA,OAAAA,CAAQ,GAAGv8B,aAAAA,EAAAA,CAAAA;AAC3B,IAAA,qBACEvkB,IAACy/B,CAAAA,IAAAA,EAAAA;QAAKE,UAAU,EAAA,IAAA;QAACljB,MAAO,EAAA,IAAA;;AACtB,0BAAA9c,GAAA,CAAC8/B,KAAK8N,OAAO,EAAA;gBAAC5N,UAAU,EAAA,IAAA;gBAAC6N,cAAc,EAAA,IAAA;gBAACC,EAAG,EAAA,IAAA;AACzC,gBAAA,QAAA,gBAAA9tC,GAACuwD,CAAAA,MAAAA,EAAAA;AACC,oBAAA,QAAA,gBAAAvwD,GAACkP,CAAAA,IAAAA,EAAAA;wBAAK2rD,QAAQ,EAAA,IAAA;wBAAC7vD,IAAK,EAAA,IAAA;wBAAKgU,EAAI,EAAA,GAAA;wBAAKpT,KAAM,EAAA,WAAA;AACtC,wBAAA,QAAA,gBAAAvL,IAACJ,CAAAA,MAAAA,EAAAA;4BAAK2M,YAAW,EAAA,eAAA;;AAAiBq1B,gCAAAA,QAAAA,CAAS51B,IAAI;AAAC,gCAAA,GAAA;;;;;;AAItD,0BAAArM,GAAA,CAAC8/B,KAAK8N,OAAO,EAAA;gBAACC,cAAc,EAAA,IAAA;gBAACC,EAAG,EAAA,IAAA;AAC9B,gBAAA,QAAA,gBAAAztC,IAACujB,CAAAA,KAAAA,EAAAA;oBAAMG,GAAI,EAAA,IAAA;;sCACT1jB,IAAC0B,CAAAA,KAAAA,EAAAA;4BAAIxC,SAAU,EAAA,+CAAA;;8CACbS,GAACkP,CAAAA,IAAAA,EAAAA;AAAK,oCAAA,QAAA,EAAA,KAAA;;8CACNlP,GAACkP,CAAAA,IAAAA,EAAAA;oCAAK2rD,QAAQ,EAAA,IAAA;oCAACjuD,YAAW,EAAA,cAAA;AACvBq1B,oCAAAA,QAAAA,EAAAA,QAAAA,CAAS64B,GAAG;;;;sCAGjBz6D,IAAC0B,CAAAA,KAAAA,EAAAA;4BAAIxC,SAAU,EAAA,+CAAA;;8CACbS,GAACkP,CAAAA,IAAAA,EAAAA;oCAAK2rD,QAAQ,EAAA,IAAA;AAAC,oCAAA,QAAA,EAAA,cAAA;;8CACf76D,GAACE,CAAAA,IAAAA,EAAAA;AAAKV,oCAAAA,IAAAA,EAAMyiC,SAAS84B,QAAQ;oCAAE36D,MAAO,EAAA,QAAA;oCAASE,GAAI,EAAA,YAAA;AACjD,oCAAA,QAAA,gBAAAN,GAACkP,CAAAA,IAAAA,EAAAA;wCAAK2rD,QAAQ,EAAA,IAAA;wCAACjvD,KAAM,EAAA,WAAA;wCAAYgB,YAAW,EAAA,mBAAA;AACzCq1B,wCAAAA,QAAAA,EAAAA,QAAAA,CAAS84B,QAAQ;;;;;sCAIxB16D,IAAC0B,CAAAA,KAAAA,EAAAA;4BAAIxC,SAAU,EAAA,+CAAA;;8CACbS,GAACkP,CAAAA,IAAAA,EAAAA;oCAAK2rD,QAAQ,EAAA,IAAA;AAAC,oCAAA,QAAA,EAAA,QAAA;;8CACf76D,GAACkP,CAAAA,IAAAA,EAAAA;oCAAK2rD,QAAQ,EAAA,IAAA;oCAACjuD,YAAW,EAAA,iBAAA;8CACvBq1B,QAAS+4B,CAAAA,wBAAwB,GAC9B,CAAC,WAAW,EAAE/4B,QAAS+4B,CAAAA,wBAAwB,CAAC,CAAC,GACjD,gBAAA;;;;;;;AAKZ,0BAAAh7D,GAAA,CAAC8/B,KAAK8N,OAAO,EAAA;gBAACC,cAAc,EAAA,IAAA;gBAAC9gC,CAAE,EAAA,IAAA;AAC5Bk1B,gBAAAA,QAAAA,EAAAA,QAAAA,CAASI,IAAI,CAACrgC,GAAG,CAAC,CAACi5D,WAAAA,EAAuBp4D,kBACzC7C,GAAC6P,CAAAA,MAAAA,EAAAA;wBACCE,OAAQ,EAAA,SAAA;wBACRwyB,SAAS,EAAA,IAAA;wBACTv3B,IAAK,EAAA,IAAA;wBACLY,KAAM,EAAA,QAAA;wBACNC,QAAUq+B,EAAAA,OAAAA;wBAEVn+B,OAAS,EAAA,UAAA;AACP,4BAAA,MAAMmvD,YAAYD,WAAY34B,CAAAA,GAAG,CAAC/nB,QAAQ,CAAC,OAAO,GAAM,GAAA,GAAA,CAAA;AACxD4mC,4BAAAA,OAAAA,CAAQz8B,IAAI,EAAA,CAAA;4BACZ00C,cACE,CAAA,CAAC,EAAE6B,WAAY34B,CAAAA,GAAG,CAAC,EAAE44B,SAAAA,CAAU,SAAS,EAAEr3D,MAAAA,CAAOC,QAAQ,CAACqH,QAAQ,CAAC,CAAC,EACpE82B,SAAS51B,IAAI,CAAA,CACb1C,OAAO,CAAC,IAAA;AACRw3C,gCAAAA,OAAAA,CAAQx8B,KAAK,EAAA,CAAA;AACf,6BAAA,CAAA,CAAA;AACF,yBAAA;AACA/X,wBAAAA,YAAAA,EAAY,CAAC,gBAAgB,EAAEq1B,QAAS51B,CAAAA,IAAI,CAAC,CAAC;wBAC9CK,WACEu1B,EAAAA,QAAAA,CAAS+4B,wBAAwB,iBAC/Bh7D,GAACm7D,CAAAA,WAAAA,EAAAA;4BACCnwD,IAAK,EAAA,QAAA;4BACLzL,SAAU,EAAA,sCAAA;2CAGZS,GAAC+K,CAAAA,SAAAA,EAAAA;4BACCC,IAAK,EAAA,QAAA;4BACLzL,SAAU,EAAA,qCAAA;;AAKhB,wBAAA,QAAA,gBAAAS,GAACC,CAAAA,MAAAA,EAAAA;4BAAKk8B,aAAa,EAAA,IAAA;AAChB8F,4BAAAA,QAAAA,EAAAA,QAAAA,CAAS+4B,wBAAwB,GAC9B,CAAC,QAAQ,EAAEC,YAAY5uD,IAAI,CAAC,CAAC,GAC7B,CAAC,UAAU,EAAE4uD,WAAY5uD,CAAAA,IAAI,CAAC,CAAC;;AA7BhC,qBAAA,EAAA,CAAC,EAAE4uD,WAAY34B,CAAAA,GAAG,CAAC,CAAC,EAAEz/B,EAAE,CAAC,CAAA,CAAA;;;;AAoC1C,CAAA;;ACtKA,MAAMu4D,sBAAyB,GAAA,IAAA;IAC7B,MAAM,EACJ15C,IAAM25C,EAAAA,iBAAiB,EACvBl0C,SAAS,EACTC,OAAO,EACPuN,SAAS,EACV,GAAG2mC,yBAAAA,EAAAA,CAAAA;IAEJ,MAAMC,aAAAA,GAAgB15C,OACpB,CAAA,IACEw5C,iBACIA,GAAAA,iBAAAA,CAAkBz4B,SAAS,CAAC5gC,GAAG,CAAC,CAACigC,QAAAA,iBAC/BjiC,GAAC46D,CAAAA,oBAAAA,EAAAA;gBAA6C34B,QAAUA,EAAAA,QAAAA;eAA7BA,QAAS84B,CAAAA,QAAQ,KAE9C,IACN,EAAA;AAACM,QAAAA,iBAAAA;AAAkB,KAAA,CAAA,CAAA;AAGrB,IAAA,qBACEh7D,IAAC0B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAU,EAAA,eAAA;;0BACbS,GAACoqB,CAAAA,cAAAA,EAAAA;gBAAeC,OAASlD,EAAAA,SAAAA;;AACxBC,YAAAA,OAAAA,kBAAWpnB,GAAC+B,CAAAA,KAAAA,EAAAA;gBAAI8K,IAAK,EAAA,OAAA;AAAQ,gBAAA,QAAA,EAAA,kCAAA;;AAC7B8nB,YAAAA,SAAAA,kBACC30B,GAAC+B,CAAAA,KAAAA,EAAAA;gBACCxC,SAAU,EAAA,8DAAA;gBACVsN,IAAK,EAAA,SAAA;AAEJ0uD,gBAAAA,QAAAA,EAAAA,aAAAA;;;;AAKX,CAAA;;ACzBA,MAAMC,OAAU,GAAA,CAAC,EAAEl7B,aAAa,EAAgB,GAAA;AAC9C,IAAA,qBACEtgC,GAACi3D,CAAAA,gBAAAA,EAAAA;AACC,QAAA,QAAA,gBAAAj3D,GAACwgC,CAAAA,eAAAA,EAAAA;YAAgBF,aAAeA,EAAAA,aAAAA;AAC9B,YAAA,QAAA,gBAAAtgC,GAAC+B,CAAAA,KAAAA,EAAAA;gBAAIxC,SAAU,EAAA,sBAAA;AACb,gBAAA,QAAA,gBAAAc,IAACqjB,CAAAA,SAAAA,EAAAA;oBACCwL,QAAQ,EAAA,IAAA;oBACRnf,OAAQ,EAAA,WAAA;oBACR0rD,eAAgB,EAAA,MAAA;AAChBC,oBAAAA,OAAAA,gBAAS17D,GAAC27D,CAAAA,qBAAAA,EAAAA;wBAAM/vD,KAAM,EAAA,WAAA;wBAAYZ,IAAK,EAAA,SAAA;;oBACvCoX,YAAc,EAAA;AACT,wBAAA,GAAA;AAAC,4BAAA,SAAA;AAAW,4BAAA,WAAA;AAAY,yBAAA;AACvBke,wBAAAA,GAAAA,aAAAA,EAAes7B,iBAAoB,GAAA;AAAC,4BAAA,gBAAA;AAAiB,yBAAA,GAAG,EAAE;AAC/D,qBAAA;oBACDj7D,UAAY,EAAA;wBACV6K,KAAO,EAAA,wDAAA;AACT,qBAAA;;wBAEC80B,aAAes7B,EAAAA,iBAAAA,kBACdv7D,IAACqjB,CAAAA,SAAAA,CAAUzU,IAAI,EAAA;4BAACjL,KAAM,EAAA,gBAAA;;8CACpBhE,GAAC+B,CAAAA,KAAAA,EAAAA;oCAAIxC,SAAU,EAAA,sBAAA;4DACbS,GAAA,CAAC0jB,UAAUC,OAAO,EAAA;AAAC,wCAAA,QAAA,EAAA,2CAAA;;;AAIrB,8CAAA3jB,GAAA,CAAC0jB,UAAUhB,KAAK,EAAA;AACd,oCAAA,QAAA,gBAAA1iB,GAACo7D,CAAAA,sBAAAA,EAAAA,EAAAA,CAAAA;;;;AAIP,sCAAA/6D,IAAA,CAACqjB,UAAUzU,IAAI,EAAA;4BAACjL,KAAM,EAAA,SAAA;;8CACpBhE,GAAC+B,CAAAA,KAAAA,EAAAA;oCAAIxC,SAAU,EAAA,sBAAA;4DACbS,GAAA,CAAC0jB,UAAUC,OAAO,EAAA;AAAC,wCAAA,QAAA,EAAA,kBAAA;;;AAErB,8CAAA3jB,GAAA,CAAC0jB,UAAUhB,KAAK,EAAA;AACd,oCAAA,QAAA,gBAAA1iB,GAACk4D,CAAAA,WAAAA,EAAAA,EAAAA,CAAAA;;;;AAGL,sCAAA73D,IAAA,CAACqjB,UAAUzU,IAAI,EAAA;4BAACjL,KAAM,EAAA,WAAA;;8CACpBhE,GAAC+B,CAAAA,KAAAA,EAAAA;oCAAIxC,SAAU,EAAA,sBAAA;4DACbS,GAAA,CAAC0jB,UAAUC,OAAO,EAAA;AAAC,wCAAA,QAAA,EAAA,WAAA;;;AAErB,8CAAA3jB,GAAA,CAAC0jB,UAAUhB,KAAK,EAAA;AACd,oCAAA,QAAA,gBAAA1iB,GAACm5D,CAAAA,gBAAAA,EAAAA,EAAAA,CAAAA;;;;;;;;;AAQjB,CAAA;;ACvDM0C,MAAAA,WAAAA,GAAc,CAAC,EAAE3rD,WAAW,EAAEC,WAAW,EAAEmwB,aAAa,EAAS,GAAA;AACrE,IAAA,qBACEtgC,GAACiQ,CAAAA,aAAAA,EAAAA;AACOC,QAAAA,WAAAA;AAAaC,QAAAA,WAAAA;QACnBE,UAAY,EAAA;YACV7P,KAAO,EAAA,mBAAA;YACPmQ,OAAS,EAAA,cAAA;YACTjQ,GAAK,EAAA,mBAAA;AACP,SAAA;AAEA,QAAA,QAAA,gBAAAV,GAACw7D,CAAAA,OAAAA,EAAAA;YAAQl7B,aAAeA,EAAAA,aAAAA;;;AAG9B;;MCfaw7B,6BAET,GAAA,UAAA;IAEF,MAAMx7B,aAAAA,GAA4B,MAAMoxB,aAAAA,CAAc5S,GAAG,CACvD,CAAC,OAAO,EAAE+S,iBAAkB,CAAA,aAAa,CAAC,CAAA,CAAA;IAG5C,OAAO;QACLjiD,KAAO,EAAA;AACL,YAAA,GAAI,MAAM+hD,+BAAiC,EAAA;YAC3C,GAAG;gBAAErxB,aAAeA,EAAAA,aAAAA;aAAe;AACrC,SAAA;AACF,KAAA,CAAA;AACF;;AChBMy7B,MAAAA,SAAAA,GAAY,CAAC,EACjB7rD,WAAW,EACXC,WAAW,EACXi1B,WAAW,EACU,GAAA;AACrB,IAAA,qBACEplC,GAACiQ,CAAAA,aAAAA,EAAAA;AACOC,QAAAA,WAAAA;AAAaC,QAAAA,WAAAA;QACnBE,UAAY,EAAA;YACV7P,KAAO,EAAA,iBAAA;YACPmQ,OAAS,EAAA,YAAA;YACTjQ,GAAK,EAAA,iBAAA;AACP,SAAA;AAEA,QAAA,QAAA,gBAAAV,GAACmlC,CAAAA,UAAAA,EAAAA;AAAY,YAAA,GAAGC,WAAW;;;AAGjC;;MCfa42B,2BAET,GAAA,UAAA;IACF,MAAM52B,WAAAA,GAA2B,MAAMssB,aAAAA,CAAc5S,GAAG,CACtD,CAAC,OAAO,EAAE+S,iBAAkB,CAAA,WAAW,CAAC,CAAA,CAAA;IAG1C,OAAO;QACLjiD,KAAO,EAAA;AACL,YAAA,GAAI,MAAM+hD,+BAAiC,EAAA;YAC3C,GAAG;gBAAEvsB,WAAcA,EAAAA,WAAAA;aAAa;AAClC,SAAA;AACF,KAAA,CAAA;AACF;;ACVO,MAAM62B,cAAiB,GAAA,CAACr0D,EAAYs0D,EAAAA,UAAAA,GACzCt0D,GAAGqhC,MAAM,CAAC,CAAO,CAAA,KAAA,GAAA,IACjBrhC,OAAOs0D,UAAU,CAACt0D,EAAG,CAAA,CAACA,EAAE,IACxBs0D,UAAU,CAACt0D,EAAAA,CAAG,CAAC2J,QAAQ,IACvB2qD,UAAU,CAACt0D,GAAG,CAACA,EAAE,IACjBs0D,UAAU,CAACt0D,EAAG,CAAA,CAAC2J,QAAQ,EAAEyoC,kBAAkB,UAAW,CAAA;AAEjD,MAAMmiB,cAAiB,GAAA,CAACt7C,UAAiBq7C,EAAAA,UAAAA,GAAAA;AAC9C,IAAA,OAAOr7C,UACJ7e,CAAAA,GAAG,CAAC,CAAC4F,EAAes0D,GAAAA,UAAU,CAACt0D,EAAAA,CAAG,CAClCsF,CAAAA,MAAM,CAAC,CAAC49B,CAA4Bp6B,EAAAA,QAAAA,GAAAA;AACnCo6B,QAAAA,CAAC,CAACp6B,QAAAA,CAASa,QAAQ,CAAC,KAAK,EAAE,CAAA;AAC3Bu5B,QAAAA,CAAC,CAACp6B,QAASa,CAAAA,QAAQ,CAAC,CAAC5K,IAAI,CAAC+J,QAAAA,CAAAA,CAAAA;QAC1B,OAAOo6B,CAAAA,CAAAA;AACT,KAAA,EAAG,EAAC,CAAA,CAAA;AACR,CAAE,CAAA;AAWK,MAAMsxB,gBAAmB,GAAA,CAC9Bv7C,UACAq7C,EAAAA,UAAAA,GAAAA;IAEA,OAAOr7C,UAAAA,CACJ7e,GAAG,CAAC,CAAConC,IAAMnoC,MAAOC,CAAAA,IAAI,CAACg7D,UAAU,CAAC9yB,CAAAA,CAAE,CAACizB,UAAU,CAAA,EAAGl6D,UAAU,EAAC,CAAA,CAC7D+K,MAAM,CAAC,CAACC,GAAU0lC,EAAAA,IAAAA,GAAc1lC,GAAM0lC,GAAAA,IAAAA,CAAAA,CAAAA;AAC3C,CAAE,CAAA;AAEF;;;;;IAMO,MAAMypB,gBAAAA,GAAmB,CAACC,SAAAA,GAAAA;AAC/B,IAAA,IAAI,OAAOA,SAAAA,KAAc,QAAY,IAAA,CAACA,SAAW,EAAA;QAC/C,OAAO,WAAA,CAAA;AACT,KAAA;IACA,MAAMC,KAAAA,GAAQD,SAAU/4D,CAAAA,KAAK,CAAC,GAAA,CAAA,CAAKC,MAAM,CAAC,CAACulC,IAAAA,GAASA,IAAK7mC,CAAAA,MAAM,GAAG,CAAA,CAAA,CAAA;AAClE,IAAA,OAAOq6D,MACJx6D,GAAG,CAAC,CAACgnC,IAAAA,GAASA,KAAKC,MAAM,CAAC,CAAGC,CAAAA,CAAAA,WAAW,KAAKF,IAAKzvB,CAAAA,KAAK,CAAC,CAAA,CAAA,CAAA,CACxDC,IAAI,CAAC,GAAA,CAAA,CAAA;AACV,CAAE,CAAA;AAEK,MAAMijD,aAAa,CAACC,KAAAA,GAAAA;IACzB,OAAOA,KAAAA,CACJl5D,KAAK,CAAC,GACNxB,CAAAA,CAAAA,GAAG,CAAC,CAACqK,IAAS08B,GAAAA,YAAAA,CAAW18B,IACzBmN,CAAAA,CAAAA,CAAAA,IAAI,CAAC,GAAA,CAAA,CAAA;AACV,CAAE,CAAA;AAEK,MAAMmjD,+BAA+B,CAACvvD,IAAAA,GAC3C,CAAC,EAAEA,IAAAA,CAAKwvB,IAAI,CAAC,CAAC,EAAExvB,IAAKmE,CAAAA,QAAQ,CAAC,CAAC,EAAEnE,KAAKsD,QAAQ,CAAC,CAAC,CAAC;AAEnD;;;;;;;;;;IAWO,MAAMksD,4BAAAA,GAA+B,CAC1Ch1D,EAAAA,GAAAA;AAEA,IAAA,MAAM,CAACg1B,IAAMrrB,EAAAA,QAAAA,EAAUb,SAAS,GAAG9I,EAAAA,CAAGpE,KAAK,CAAC,GAAA,CAAA,CAAA;IAC5C,OAAO;AAAEo5B,QAAAA,IAAAA;AAAMrrB,QAAAA,QAAAA;AAAUb,QAAAA,QAAAA;AAAS,KAAA,CAAA;AACpC,CAAE,CAAA;AAEF;;;;;AAKC,IACM,MAAMmsD,cAAAA,GAAiB,CAACzvD,IAAAA,GAC7B,CAAC,EAAEA,IAAAA,CAAKwvB,IAAI,CAAC,CAAC,EAAExvB,IAAAA,CAAKmE,QAAQ,CAAC,CAAC,CAAC;AAElC;;;;;IAMO,MAAMurD,uBAAAA,GAA0B,CACrClgC,IAAAA,GAAAA;AAEA,IAAA,MAAMy/B,UACJz/B,GAAAA,IAAAA,CAAKy/B,UAAU,IACfp7D,MAAOC,CAAAA,IAAI,CAAC07B,IAAAA,CAAKy/B,UAAU,CAAA,CACxB54D,MAAM,CAAC,CAAC/C,GAAAA,GACPk8B,IAAKmgC,CAAAA,gBAAgB,GAAG,CAACngC,IAAKmgC,CAAAA,gBAAgB,CAACxiD,QAAQ,CAAC7Z,GAAAA,CAAAA,GAAO,IAEhEwM,CAAAA,CAAAA,MAAM,CAAC,CAACC,GAAKzM,EAAAA,GAAAA,GAAAA;AACZ,QAAA,IAAI,CAACk8B,IAAAA,CAAKy/B,UAAU,EAAE,OAAOlvD,GAAAA,CAAAA;AAC7BA,QAAAA,GAAG,CAACzM,GAAI,CAAA,GAAGk8B,IAAKy/B,CAAAA,UAAU,CAAC37D,GAAI,CAAA,CAAA;QAC/B,OAAOyM,GAAAA,CAAAA;AACT,KAAA,EAAG,EAAC,CAAA,CAAA;AACR,IAAA,OAAOkvD,cAAc,EAAC,CAAA;AACxB,CAAE,CAAA;AAEF;;;;;IAMO,MAAMW,wCAAAA,GAA2C,CACtDd,UAAAA,GAAAA;AAEA,IAAA,MAAMe,MAAMh8D,MAAOC,CAAAA,IAAI,CAACg7D,UACrBl6D,CAAAA,CAAAA,GAAG,CAAC,CAACk7D,MAAAA,GAAAA;QACJ,MAAMtgC,IAAAA,GAAOs/B,UAAU,CAACgB,MAAO,CAAA,CAAA;AAC/B,QAAA,IAAI,CAACtgC,IAAAA,CAAKy/B,UAAU,EAAE,OAAOz/B,IAAAA,CAAAA;QAC7B,OAAO;AACL,YAAA,GAAGA,IAAI;AACPy/B,YAAAA,UAAAA,EAAYS,uBAAwBlgC,CAAAA,IAAAA,CAAAA;AACtC,SAAA,CAAA;KAED1vB,CAAAA,CAAAA,MAAM,CAAC,CAACC,GAAKyvB,EAAAA,IAAAA,GAAAA;QACZ,IAAI,CAACA,IAAMh1B,EAAAA,EAAAA,EAAI,OAAOuF,GAAAA,CAAAA;AACtBA,QAAAA,GAAG,CAACyvB,IAAAA,CAAKh1B,EAAE,CAAC,GAAGg1B,IAAAA,CAAAA;QACf,OAAOzvB,GAAAA,CAAAA;AACT,KAAA,EAAG,EAAC,CAAA,CAAA;IACN,OAAO8vD,GAAAA,CAAAA;AACT,CAAE,CAAA;AAEK,MAAME,yCAAyC,CACpDpoD,GAAAA,GAAAA;AAEA,IAAA,OAAO9T,OAAOC,IAAI,CAAC6T,KAAK7H,MAAM,CAAC,CAACC,GAAKzM,EAAAA,GAAAA,GAAAA;QACnC,IAAIu7D,cAAAA,CAAev7D,KAAKqU,GAAM,CAAA,EAAA;AAC5B5H,YAAAA,GAAG,CAACzM,GAAAA,CAAI,GAAGqU,GAAG,CAACrU,GAAI,CAAA,CAAA;AACrB,SAAA;QACA,OAAOyM,GAAAA,CAAAA;AACT,KAAA,EAAG,EAAC,CAAA,CAAA;AACN,CAAE;;ACzJF,MAAMiwD,gBAAgB,CAAC1rC,QAAAA,GAAAA;AACrB,IAAA,OAAO,CAAC,EACNA,QAAAA,GACI,kCACA,GAAA,oCAAA,CACL,yHAAyH,CAAC,CAAA;AAC7H,CAAA,CAAA;AAMA,MAAM2rC,eAAe,CAAC,EAAEC,IAAI,EAAEC,OAAO,EAAqB,GAAA;AACxD,IAAA,qBACEl9D,IAAC0B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAU,EAAA,iEAAA;;0BACbS,GAACyM,CAAAA,QAAAA,EAAAA;AACClN,gBAAAA,SAAAA,EAAW69D,cAAcE,IAAS,KAAA,OAAA,CAAA;AAClCvxD,gBAAAA,OAAAA,EAAS,IAAMwxD,OAAQ,CAAA,OAAA,CAAA;AACxB,gBAAA,QAAA,EAAA,YAAA;;0BAGDv9D,GAACyM,CAAAA,QAAAA,EAAAA;AACClN,gBAAAA,SAAAA,EAAW69D,cAAcE,IAAS,KAAA,OAAA,CAAA;AAClCvxD,gBAAAA,OAAAA,EAAS,IAAMwxD,OAAQ,CAAA,OAAA,CAAA;AACxB,gBAAA,QAAA,EAAA,YAAA;;;;AAKP,CAAA;;ACtBA,MAAMC,UAAAA,GAAa,CAAC,EAClBC,OAAO,EACPC,IAAI,EACJt0C,QAAQ,EACRu0C,UAAU,EACM,GAAA;AAChB,IAAA,qBACE39D,GAAC+B,CAAAA,KAAAA,EAAAA;AACE07D,QAAAA,QAAAA,EAAAA,OAAAA,EAASt7D,wBACR9B,IAAC0B,CAAAA,KAAAA,EAAAA;AACCxC,YAAAA,SAAAA,EAAW,CAAC,iEAAiE,EAC3Ek+D,OAAAA,CAAQt7D,MAAM,GAAG,CAAA,IAAM,CAACinB,QAAAA,IAAYq0C,QAAQt7D,MAAM,GAAG,CACjD,GAAA,cAAA,GACA,aACL,CAAC;;8BAEFnC,GAAC+B,CAAAA,KAAAA,EAAAA;oBAAIxC,SAAU,EAAA,0GAAA;AACZm+D,oBAAAA,QAAAA,EAAAA,IAAAA;;gBAEFD,OAAQz7D,CAAAA,GAAG,CACV,CACE,EAAE46B,IAAI,EAAErrB,QAAQ,EAAEb,QAAQ,EAAwB,EAClDhQ,GAAAA,GAAAA;AAEA,oBAAA,qBACEV,GAAC+B,CAAAA,KAAAA,EAAAA;wBAAcxC,SAAU,EAAA,sCAAA;AACvB,wBAAA,QAAA,gBAAAS,GAAC8L,CAAAA,cAAAA,EAAAA;4BACCvM,SAAU,EAAA,eAAA;4BACVwM,OAAS,EAAA,IAAA;gCACP4xD,UAAW,CAAA;AACT/gC,oCAAAA,IAAAA;AACArrB,oCAAAA,QAAAA;AACAb,oCAAAA,QAAAA;AACF,iCAAA,CAAA,CAAA;AACF,6BAAA;AAEA,4BAAA,QAAA,gBAAA1Q,GAACkP,CAAAA,IAAAA,EAAAA;gCAAKlE,IAAK,EAAA,IAAA;gCAAK6vD,QAAS,EAAA,KAAA;gCAAMt7D,SAAU,EAAA,QAAA;AACvC,gCAAA,QAAA,gBAAAS,GAAC49D,CAAAA,SAAAA,EAAAA;oCACC9tD,SAAU,EAAA,KAAA;oCACV+tD,SAAWH,EAAAA,IAAAA;oCACX7C,QAAS,EAAA,KAAA;oCACTt7D,SAAU,EAAA,uEAAA;8CAET,CAAC,EAAEk9D,UAAW7/B,CAAAA,IAAAA,CAAAA,CAAM,GAAG,EAAE6/B,WACxBlrD,QACA,CAAA,CAAA,GAAG,EAAEb,QAAAA,CAAS,CAAC;;;;AApBfhQ,qBAAAA,EAAAA,GAAAA,CAAAA,CAAAA;AA0Bd,iBAAA,CAAA;;;;AAMZ,CAAA;;AC3DA,MAAMo9D,oBAAuB,GAAA,CAAA,CAAA;AAQ7B,MAAMC,UAAAA,GAAa,CAAC,EAAEL,IAAI,EAAED,OAAO,EAAEE,UAAU,EAAmB,GAAA;AAChE,IAAA,MAAM,CAACv0C,QAAAA,EAAU40C,WAAY,CAAA,GAAG14D,QAAS,CAAA,KAAA,CAAA,CAAA;AACzC,IAAA,qBACEjF,IAAC0B,CAAAA,KAAAA,EAAAA;;AACEqnB,YAAAA,QAAAA,iBACCppB,GAACw9D,CAAAA,UAAAA,EAAAA;gBAECC,OAASA,EAAAA,OAAAA;gBACTC,IAAMA,EAAAA,IAAAA;gBACNt0C,QAAUA,EAAAA,QAAAA;gBACVu0C,UAAYA,EAAAA,UAAAA;AAJPD,aAAAA,EAAAA,IAAAA,CAAAA,iBAOP19D,GAACw9D,CAAAA,UAAAA,EAAAA;gBAECC,OAASA,EAAAA,OAAAA,EAASlkD,MAAM,CAAGukD,EAAAA,oBAAAA,CAAAA;gBAC3BJ,IAAMA,EAAAA,IAAAA;gBACNt0C,QAAUA,EAAAA,QAAAA;gBACVu0C,UAAYA,EAAAA,UAAAA;AAJPD,aAAAA,EAAAA,IAAAA,CAAAA;YAORD,OAAWA,IAAAA,OAAAA,EAASt7D,MAAS27D,GAAAA,oBAAAA,iBAC5B99D,GAAC+B,CAAAA,KAAAA,EAAAA;gBAAIxC,SAAU,EAAA,0FAAA;AACZ6pB,gBAAAA,QAAAA,EAAAA,QAAAA,iBACCppB,GAACyM,CAAAA,QAAAA,EAAAA;oBACClN,SAAU,EAAA,kBAAA;AACVwM,oBAAAA,OAAAA,EAAS,IAAMiyD,WAAY,CAAA,KAAA,CAAA;AAE3B,oBAAA,QAAA,gBAAA39D,IAAC0B,CAAAA,KAAAA,EAAAA;wBAAIxC,SAAU,EAAA,wBAAA;;0CACbS,GAACojD,CAAAA,iBAAAA,EAAAA;gCAAYp4C,IAAM,EAAA,EAAA;;AAAM,4BAAA,WAAA;;;mCAK7BhL,GAACyM,CAAAA,QAAAA,EAAAA;oBACClN,SAAU,EAAA,kBAAA;AACVwM,oBAAAA,OAAAA,EAAS,IAAMiyD,WAAY,CAAA,IAAA,CAAA;AAE3B,oBAAA,QAAA,gBAAA39D,IAAC0B,CAAAA,KAAAA,EAAAA;wBAAIxC,SAAU,EAAA,wBAAA;;0CACbS,GAACmjD,CAAAA,mBAAAA,EAAAA;gCAAcn4C,IAAM,EAAA,EAAA;;AACpByyD,4BAAAA,OAAAA,CAAQt7D,MAAM,GAAG27D,oBAAAA;AAAqB,4BAAA,OAAA;;;;AAM/C,aAAA,CAAA,iBAAA99D,GAAA,CAAAi+D,QAAA,EAAA,EAAA,CAAA;;;AAIR,CAAA;;AClEO,MAAMC,qBAAqB,EAAG,CAAA;AAC9B,MAAMC,yBAAyB,mBAAoB,CAAA;AACnD,MAAMC,gCAAgC,CAAE;;ACsB/C,MAAMC,kCAAoBn4D,aAAuC,CAAA;IAC/D0L,MAAQ,EAAA;QACN0sD,SAAW,EAAA,KAAA;QACXC,aAAe,EAAA,KAAA;QACfC,gBAAkBL,EAAAA,sBAAAA;QAClBM,eAAiBP,EAAAA,kBAAAA;AACnB,KAAA;AACAhC,IAAAA,UAAAA,EAAY,EAAC;AACbwC,IAAAA,kBAAAA,EAAoB,IAAM,IAAA;AAC1BC,IAAAA,eAAAA,EAAiB,EAAC;AAClB99C,IAAAA,UAAAA,EAAY,EAAE;AACdua,IAAAA,SAAAA,EAAW,EAAE;AACbwjC,IAAAA,iBAAAA,EAAmB,EAAE;AACvB,CAAA,CAAA,CAAA;AAEA,MAAMC,oBAAuB,GAAA,IAAA;IAC3B,MAAM75D,OAAAA,GAAU7B,cAAMsD,CAAAA,UAAU,CAAC43D,iBAAAA,CAAAA,CAAAA;AACjC,IAAA,IAAIr5D,YAAYmB,SAAW,EAAA;AACzB,QAAA,MAAMO,KACJ,CAAA,mEAAA,CAAA,CAAA;AAEJ,KAAA;IACA,OAAO1B,OAAAA,CAAAA;AACT,CAAA,CAAA;AAOA,MAAM85D,kBAAAA,GAAqB,CAAC,EAC1B92D,QAAQ,EACR4J,MAAM,EACNsqD,UAAU,EACc,GAAA;AACxB,IAAA,MAAM,CAACyC,eAAAA,EAAiBD,kBAAmB,CAAA,GAAGp5D,SAAqB,EAAC,CAAA,CAAA;AAEpE,IAAA,MAAMy5D,sBACJ/B,wCAAyCd,CAAAA,UAAAA,CAAAA,CAAAA;AAE3C,IAAA,MAAMr7C,aAAagB,OAAQ,CAAA,IAAA;QACzB,MAAMm9C,QAAAA,GAAW/9D,MAAOC,CAAAA,IAAI,CAAC69D,mBAAAA,CAAAA,CAAAA;QAC7B,MAAME,mBAAAA,GAAsB9C,eAAe6C,QAAUD,EAAAA,mBAAAA,CAAAA,CAAAA;QACrD,OAAOE,mBAAAA,CAAAA;AACT,KAAA,EAAG,EAAE,CAAA,CAAA;AAEL,IAAA,MAAML,iBAAoB/8C,GAAAA,OAAAA,CACxB,IACE5gB,MAAAA,CAAOC,IAAI,CAAC69D,mBAAqBt7D,CAAAA,CAAAA,MAAM,CAAC,CAACmE,EACvCq0D,GAAAA,cAAAA,CAAer0D,IAAIm3D,mBAEvB,CAAA,CAAA,EAAA;AAACA,QAAAA,mBAAAA;AAAoB,KAAA,CAAA,CAAA;AAGvB,IAAA,MAAM3jC,YAAYvZ,OAAyC,CAAA,IAAA;QACzD,IAAI5gB,MAAAA,CAAOC,IAAI,CAAC2f,UAAAA,CAAAA,CAAY1e,MAAM,KAAK,CAAA,EACrC,OAAO,EAAE,CAAA;AAEX,QAAA,IAAIlB,MAAOC,CAAAA,IAAI,CAAC2f,UAAAA,CAAAA,CAAY1e,MAAM,EAAE;YAClC,OACElB,CAAAA,MAAOC,CAAAA,IAAI,CAAC2f,UACT7e,CAAAA,CAAAA,GAAG,CAAC,CAACoW,CAAAA,GAAAA;gBACJ,OAAOyI,UAAU,CAACzI,CAAE,CAAA,CAAA;aAErB8mD,CAAAA,CAAAA,OAAO,CAAC,CAAC9hD,KAAAA,GAAAA;gBACR,OAAOA,KAAAA,CAAMpb,GAAG,CAAC,CAAC8oC,CAAAA,GAAAA;AAChB,oBAAA,OAAO7pC,OAAOC,IAAI,CAAC4pC,GAAGuxB,UAAYr6D,CAAAA,CAAAA,GAAG,CAAC,CAACtB,GAAAA,GAAAA;AACrC,wBAAA,MAAM,EAAEgC,WAAW,EAAE+M,IAAI,EAAEiuD,IAAI,EAAEyB,KAAK,EAAE,GAAGr0B,CAAC,CAAC,YAAA,CAAa,CAACpqC,GAAI,CAAA,CAAA;wBAC/D,OAAO;AACL0+D,4BAAAA,YAAAA,EAAct0B,EAAEv5B,QAAQ;AACxBA,4BAAAA,QAAAA,EAAUu5B,EAAEljC,EAAE;AACdA,4BAAAA,EAAAA,EAAI,CAAC,EAAEkjC,CAAEv5B,CAAAA,QAAQ,CAAC,CAAC,EAAEu5B,CAAAA,CAAEljC,EAAE,CAAC,CAAC,EAAElH,IAAI,CAAC;4BAClCgQ,QAAUhQ,EAAAA,GAAAA;4BACVgC,WACEA,EAAAA,WAAAA,IACAg7D,IAAMh7D,EAAAA,WAAAA,IACNy8D,KAAO,GAAC,EAAE,EAAE9C,UAAAA,EAAYz0D,EAAI81D,EAAAA,IAAAA,EAAMh7D,WAClC,IAAA,EAAA;AACF+M,4BAAAA,IAAAA,EAAMA,IAAQ0vD,IAAAA,KAAAA,GAAQ,CAAA,CAAE,EAAE1vD,IAAQ,IAAA,EAAA;AACpC,yBAAA,CAAA;AACF,qBAAA,CAAA,CAAA;AACF,iBAAA,CAAA,CAAA;AACF,aAAA,CAAA,IAAM,EAAE,EACVvC,MAAM,CAAC,CAACC,GAAwB0lC,EAAAA,IAAAA,GAAAA;gBAChC,OAAO;AAAI1lC,oBAAAA,GAAAA,GAAAA;AAAQ0lC,oBAAAA,GAAAA,IAAAA;AAAK,iBAAA,CAAA;AAC1B,aAAA,EAAG,EAAE,CAAA,CAAA;AACP,SAAA;AACF,KAAA,EAAG,EAAE,CAAA,CAAA;IAEL,qBACE7yC,GAAA,CAACq+D,kBAAkB/zD,QAAQ,EAAA;QACzBtG,KAAO,EAAA;YACLk4D,UAAY6C,EAAAA,mBAAAA;AACZntD,YAAAA,MAAAA;AACA8sD,YAAAA,kBAAAA;AACAC,YAAAA,eAAAA;AACA99C,YAAAA,UAAAA;AACAua,YAAAA,SAAAA;AACAwjC,YAAAA,iBAAAA;AACF,SAAA;AAEC52D,QAAAA,QAAAA,EAAAA,QAAAA;;AAGP,CAAA;;AC9GA,MAAMq3D,mBAAmB,CACvBxpC,aAAAA,GAAAA;AAEA,IAAA,MAAM4nC,UAAuC,EAAE,CAAA;IAC/C5nC,aAAcz0B,CAAAA,OAAO,CAAC,CAAC0V,CAAAA,GAAAA;AACrB2mD,QAAAA,OAAAA,CAAQ92D,IAAI,CAAC;AACXi2B,YAAAA,IAAAA,EAAM9lB,EAAEsoD,YAAY;AACpB7tD,YAAAA,QAAAA,EAAUuF,EAAEvF,QAAQ;AACpBb,YAAAA,QAAAA,EAAUoG,EAAEpG,QAAQ;AACtB,SAAA,CAAA,CAAA;AACF,KAAA,CAAA,CAAA;AACA,IAAA,OAAO+sD,OAAQ9iB,CAAAA,IAAI,CAAC,CAACx6C,CAAG8W,EAAAA,CAAAA,GAAAA;AACtB,QAAA,IAAI9W,EAAEy8B,IAAI,GAAG3lB,EAAE2lB,IAAI,EAAE,OAAO,CAAC,CAAA,CAAA;AAC7B,QAAA,IAAIz8B,EAAEy8B,IAAI,GAAG3lB,CAAE2lB,CAAAA,IAAI,EAAE,OAAO,CAAA,CAAA;AAC5B,QAAA,IAAIz8B,EAAEoR,QAAQ,GAAG0F,EAAE1F,QAAQ,EAAE,OAAO,CAAC,CAAA,CAAA;AACrC,QAAA,IAAIpR,EAAEoR,QAAQ,GAAG0F,CAAE1F,CAAAA,QAAQ,EAAE,OAAO,CAAA,CAAA;AACpC,QAAA,IAAIpR,EAAEuQ,QAAQ,GAAGuG,EAAEvG,QAAQ,EAAE,OAAO,CAAC,CAAA,CAAA;AACrC,QAAA,IAAIvQ,EAAEuQ,QAAQ,GAAGuG,CAAEvG,CAAAA,QAAQ,EAAE,OAAO,CAAA,CAAA;QACpC,OAAO,CAAA,CAAA;AACT,KAAA,CAAA,CAAA;AACF,CAAA,CAAA;AAoBA,MAAM4uD,WAAc,GAAA,CAAC,EAAE3B,UAAU,EAAoB,GAAA;AACnD,IAAA,MAAM,EAAEviC,SAAS,EAAExpB,MAAM,EAAE,GAAGitD,oBAAAA,EAAAA,CAAAA;AAC9B,IAAA,MAAM,CAACU,uBAAAA,EAAyBC,0BAA2B,CAAA,GAAGl6D,SAC5D,EAAC,CAAA,CAAA;AAEH,IAAA,MAAM,CAACmzB,UAAAA,EAAYC,aAAc,CAAA,GAAGpzB,QAAS,CAAA,EAAA,CAAA,CAAA;AAC7C,IAAA,MAAM,CAACm6D,mBAAAA,EAAqBC,sBAAuB,CAAA,GAAGp6D,SAEpD,EAAE,CAAA,CAAA;AAEJ,IAAA,MAAM,CACJq6D,uBAAAA,EACAC,0BACAC,EAAAA,6BAAAA,CACD,GAAGC,eAA4C,CAAA;AAC9Cp/D,QAAAA,GAAAA,EAAKkR,QAAQ4sD,gBAAoBL,IAAAA,sBAAAA;AACjC/7C,QAAAA,YAAAA,EAAc,EAAC;AACjB,KAAA,CAAA,CAAA;AAEA,IAAA,MAAM,EACJiT,MAAM,EACNO,WAAW,EACXF,WAAW,EACXG,aAAa,EACbK,WAAW,EACXC,gBAAgB,EACjB,GAAGC,cAAcgF,SAAW,EAAA;QAC3BzZ,MAAQ,EAAA;AAAC,YAAA,aAAA;AAAe,YAAA,MAAA;AAAQ,YAAA,UAAA;AAAW,SAAA;QAC3C4B,OAAS,EAAA,IAAA;QACT8S,WAAa,EAAA;AAAC,YAAA,IAAA;AAAK,SAAA;QACnBE,aAAe,EAAA;YACbC,WAAaC,EAAAA,UAAAA,CAAWC,UAAU,CAAC,aAAA,CAAA;AACrC,SAAA;AACF,KAAA,CAAA,CAAA;IAEAjvB,SAAU,CAAA,IAAA;QACR,IAAIgxB,UAAAA,CAAWt2B,MAAM,GAAG,CAAG,EAAA;AACzBkzB,YAAAA,MAAAA,CAAOoD,UAAY,EAAA;gBAAEsnC,WAAa,EAAA,KAAA;AAAM,aAAA,CAAA,CAAA;YACxCnqC,WAAY6C,CAAAA,UAAAA,CAAAA,CAAAA;AACd,SAAA;KACC,EAAA;AAACA,QAAAA,UAAAA;AAAY7C,QAAAA,WAAAA;AAAaP,QAAAA,MAAAA;AAAO,KAAA,CAAA,CAAA;IAEpC5tB,SAAU,CAAA,IAAA;AACR,QAAA,IAAIgxB,eAAe,EAAI,EAAA;AACrB+mC,YAAAA,0BAAAA,CAA2B,EAAC,CAAA,CAAA;AAC5BtpC,YAAAA,WAAAA,EAAAA,CAAAA;AACAC,YAAAA,gBAAAA,EAAAA,CAAAA;AACF,SAAA;KACC,EAAA;AAACD,QAAAA,WAAAA;AAAaC,QAAAA,gBAAAA;AAAkBsC,QAAAA,UAAAA;AAAW,KAAA,CAAA,CAAA;IAE9ChxB,SAAU,CAAA,IAAA;AACR,QAAA,IACE83D,uBAAyB7B,EAAAA,IAAAA,EAAMv7D,MAC/B,IAAA,CAAClB,OAAOC,IAAI,CAACy+D,uBAAyBplD,CAAAA,CAAAA,QAAQ,CAC5CglD,uBAAAA,EAAyB7B,IAE3B6B,CAAAA,IAAAA,uBAAAA,EAAyB9B,SAASt7D,MAClC,EAAA;YACA,IAAI69D,kBAAAA,GAAqB/+D,MAAO8R,CAAAA,OAAO,CAAC4sD,uBAAAA,CAAAA,CAAAA;AACxCK,YAAAA,kBAAAA,CAAmBr5D,IAAI,CAAC;gBACtB44D,uBAAyB7B,EAAAA,IAAAA;AACzB,gBAAA;AACEA,oBAAAA,IAAAA,EAAM6B,wBAAwB7B,IAAI;AAClCD,oBAAAA,OAAAA,EAAS8B,wBAAwB9B,OAAO;oBACxCwC,QAAU,EAAA,IAAIh8D,OAAOiV,cAAc,EAAA;AACrC,iBAAA;AACD,aAAA,CAAA,CAAA;YACD8mD,kBAAmBrlB,CAAAA,IAAI,CACrB,CAACx6C,CAAAA,EAAG8W,IAAMhT,IAAK22B,CAAAA,KAAK,CAAC3jB,CAAC,CAAC,EAAE,CAACgpD,QAAQ,IAAIh8D,IAAK22B,CAAAA,KAAK,CAACz6B,CAAC,CAAC,CAAE,CAAA,CAAC8/D,QAAQ,CAAA,CAAA,CAAA;;AAGhED,YAAAA,kBAAAA,GAAqBA,kBAAmBzmD,CAAAA,KAAK,CAC3C,CAAA,EACA3H,QAAQ6sD,eAAmBP,IAAAA,kBAAAA,CAAAA,CAAAA;;YAG7B,MAAMgC,gBAAAA,GAAmBj/D,MAAOm5C,CAAAA,WAAW,CAAC4lB,kBAAAA,CAAAA,CAAAA;YAC5CJ,0BAA2BM,CAAAA,gBAAAA,CAAAA,CAAAA;AAC7B,SAAA;KACC,EAAA;QACDtuD,MAAQ6sD,EAAAA,eAAAA;AACRkB,QAAAA,uBAAAA;AACAJ,QAAAA,uBAAAA;AACAK,QAAAA,0BAAAA;AACD,KAAA,CAAA,CAAA;IAEDp6D,oBAAqB,CAAA,IAAA;AACnB,QAAA,IAAIm6D,uBAAyB,EAAA;AAC3BD,YAAAA,sBAAAA,CACEz+D,OAAOC,IAAI,CAACy+D,uBAAyB39D,CAAAA,CAAAA,GAAG,CAAC,CAAC8oC,CAAAA,GAAAA;AACxC,gBAAA,qBACE9qC,GAAC+B,CAAAA,KAAAA,EAAAA;oBAAsCxC,SAAU,EAAA,MAAA;AAC/C,oBAAA,QAAA,gBAAAS,GAAC+9D,CAAAA,UAAAA,EAAAA;wBACCL,IAAM5yB,EAAAA,CAAAA;wBACN2yB,OAASkC,EAAAA,uBAAuB,CAAC70B,CAAAA,CAAE,EAAE2yB,OAAAA;wBACrCE,UAAYA,EAAAA,UAAAA;;mBAJN,CAAC,qBAAqB,EAAE7yB,CAAAA,CAAE,CAAC,CAAA,CAAA;AAQzC,aAAA,CAAA,CAAA,CAAA;AAEJ,SAAA;KACC,EAAA;AAAC60B,QAAAA,uBAAAA;AAAwB,KAAA,CAAA,CAAA;AAE5B,IAAA,MAAMQ,aAAgB91D,GAAAA,kBAAAA,CACpB,IACGqrB,CAAAA,WAAe,IAAA,EAAE,GAAG1zB,GAAI,CAAA,CAAC,EAAEo1B,UAAU,EAAE,GAAA;YACtC,OAAO;gBAAEpzB,KAAOozB,EAAAA,UAAAA;AAAW,aAAA,CAAA;SAE/B,CAAA,EAAA;AAAC1B,QAAAA,WAAAA;AAAY,KAAA,CAAA,CAAA;AAGf,IAAA,MAAM0qC,mBAAyD,GAAA,CAAC,EAC9Dp2B,MAAM,EACP,GAAA;AACC,QAAA,qBACEhqC,GAAC+B,CAAAA,KAAAA,EAAAA;YACCxC,SAAW,EAAA,CAAC,wEAAwE,EAClF,CAACm2B,eAAe,EAAC,EACd1zB,GAAG,CAAC,CAAC,EAAEo1B,UAAU,EAAE,GAAKA,UAAAA,CAAAA,CACxBipC,OAAO,CAACr2B,OAAOhmC,KAAK,CAAA,KAAM,CAAK,IAAA,YAAA,CACnC,CAAC;AAEF,YAAA,QAAA,gBAAAhE,GAACyM,CAAAA,QAAAA,EAAAA;gBACClN,SAAU,EAAA,UAAA;gBACVwM,OAAS,EAAA,IAAM2sB,aAAcsR,CAAAA,MAAAA,CAAOhmC,KAAK,CAAA;AAExCgmC,gBAAAA,QAAAA,EAAAA,MAAAA,CAAOhmC,KAAK;;;AAIrB,KAAA,CAAA;IAEA,qBACE3D,IAAA,CAAA49D,QAAA,EAAA;;0BACEj+D,GAAC4jB,CAAAA,KAAAA,EAAAA;gBAAMqc,OAAQ,EAAA,YAAA;gBAAa1gC,SAAU,EAAA,MAAA;AACpC,gBAAA,QAAA,gBAAAS,GAAC24B,CAAAA,YAAAA,EAAAA;;oBAECjX,IAAMy+C,EAAAA,aAAAA;oBACNG,YAAcF,EAAAA,mBAAAA;AACd1zD,oBAAAA,WAAAA,gBAAa1M,GAAC44B,CAAAA,QAAAA,EAAAA;wBAAW5tB,IAAM,EAAA,EAAA;wBAAIzL,SAAU,EAAA,aAAA;;oBAC7Ci5B,WAAa,EAAA,sBAAA;oBACbK,aAAY,EAAA,+BAAA;oBACZjsB,YAAW,EAAA,yBAAA;oBACX5I,KAAOy0B,EAAAA,UAAAA;AACPtK,oBAAAA,QAAAA,EAAU,CAACnqB,KAAAA,GAAAA;wBACT00B,aAAc10B,CAAAA,KAAAA,CAAAA,CAAAA;AAChB,qBAAA;AACAu8D,oBAAAA,cAAAA,EAAgB,CAACnzD,IAAAA,GAAAA;wBACfoyD,0BAA2B,CAAA;4BACzB9B,IAAMtwD,EAAAA,IAAAA;4BACNqwD,OAAS4B,EAAAA,gBAAAA,CAAiBxpC,iBAAiB,EAAE,CAAA;AAC/C,yBAAA,CAAA,CAAA;AACF,qBAAA;oBACAl1B,UAAY,EAAA;wBACVw2B,KAAO,EAAA,iDAAA;AACT,qBAAA;oBACAnsB,IAAK,EAAA,IAAA;AACL8tB,oBAAAA,YAAAA,EACEL,UAAWt2B,CAAAA,MAAM,GAAG,CAAA,kBAClBnC,GAAC+4B,CAAAA,OAAAA,EAAAA;wBACChtB,OAAS,EAAA,IAAA;4BACP2sB,aAAc,CAAA,EAAA,CAAA,CAAA;AACdxC,4BAAAA,WAAAA,EAAAA,CAAAA;AACAC,4BAAAA,gBAAAA,EAAAA,CAAAA;AACF,yBAAA;wBACA52B,SAAU,EAAA,gBAAA;;;;0BAOpBc,IAACujB,CAAAA,KAAAA,EAAAA;gBAAMqc,OAAQ,EAAA,YAAA;gBAAa1gC,SAAU,EAAA,MAAA;;kCACpCS,GAACC,CAAAA,MAAAA,EAAAA;wBAAKV,SAAU,EAAA,wBAAA;AAAyB,wBAAA,QAAA,EAAA,gBAAA;;oBACxCggE,uBAAyB9B,EAAAA,OAAAA,EAASt7D,MAAS,GAAA,CAAA,iBAC1CnC,GAAC+9D,CAAAA,UAAAA,EAAAA;AACCL,wBAAAA,IAAAA,EAAM6B,uBAAyB7B,EAAAA,IAAAA;AAC/BD,wBAAAA,OAAAA,EAAS8B,uBAAyB9B,EAAAA,OAAAA;wBAClCE,UAAYA,EAAAA,UAAAA;uCAGd39D,GAACC,CAAAA,MAAAA,EAAAA;wBAAKV,SAAU,EAAA,sBAAA;AAAuB,wBAAA,QAAA,EAAA,8BAAA;;;;0BAK3Cc,IAACujB,CAAAA,KAAAA,EAAAA;gBAAMqc,OAAQ,EAAA,YAAA;gBAAalc,GAAI,EAAA,IAAA;gBAAKxkB,SAAU,EAAA,MAAA;;kCAC7Cc,IAACyjB,CAAAA,KAAAA,EAAAA;wBAAMmc,OAAQ,EAAA,eAAA;wBAAgBnP,KAAM,EAAA,QAAA;;0CACnC9wB,GAACC,CAAAA,MAAAA,EAAAA;gCAAKV,SAAU,EAAA,qCAAA;AAAsC,gCAAA,QAAA,EAAA,gBAAA;;0CAGtDS,GAAC6P,CAAAA,MAAAA,EAAAA;gCACCE,OAAQ,EAAA,SAAA;gCACRnE,KAAM,EAAA,UAAA;gCACNkR,MAAO,EAAA,IAAA;AACP/Q,gCAAAA,OAAAA,EAAS,IAAM8zD,6BAAAA,EAAAA;AAChB,gCAAA,QAAA,EAAA,WAAA;;;;oBAKFJ,mBAAqBt9D,EAAAA,MAAAA,iBACpBnC,GAACmD,CAAAA,cAAAA,CAAMC,QAAQ,EAAA;AAAEq8D,wBAAAA,QAAAA,EAAAA,mBAAAA;AAEjB,qBAAA,CAAA,iBAAAz/D,GAAA,CAACmD,eAAMC,QAAQ,EAAA,EAAA,CAAA;;;;;AAKzB,CAAA;;ACvQA,MAAMo9D,UAAU,CAACjvD,QAAAA,GAAAA;IACf,MAAMkvD,QAAAA,GAAW,CAAC,qBAAqB,EAAElvD,SAAS02B,OAAO,CAAC,GAAK,EAAA,GAAA,CAAA,CAAK,CAAC,CAAA;AACrE,IAAA,qBACEjoC,GAAC8M,CAAAA,IAAAA,EAAAA;QAAKlB,KAAM,EAAA,oBAAA;QAAqBd,IAAM21D,EAAAA,QAAAA;QAAUj+D,MAAQ,EAAA,EAAA;QAAID,KAAO,EAAA,EAAA;;AAExE,CAAA,CAAA;AAKA,MAAMm+D,cAAiB,GAAA,CAAC,EAAEnvD,QAAQ,EAAuB,GAAA;AACvD,IAAA,qBACEvR,GAAC2gE,CAAAA,IAAAA,EAAAA;QACCphE,SAAU,EAAA,oHAAA;QACVqI,EAAI2J,EAAAA,QAAAA;AAEJ,QAAA,QAAA,gBAAAlR,IAAC0B,CAAAA,KAAAA,EAAAA;YAAIxC,SAAU,EAAA,wBAAA;;8BACbS,GAACogC,CAAAA,MAAAA,EAAAA;oBACCrwB,OAAQ,EAAA,OAAA;oBACR/E,IAAK,EAAA,IAAA;oBACLY,KAAM,EAAA,UAAA;oBACNkR,MAAO,EAAA,IAAA;oBACPE,KAAO,EAAA;wBAAE,aAAe,EAAA,8BAAA;AAA+B,qBAAA;8BAEtDwjD,OAAQjvD,CAAAA,QAAAA,CAAAA;;8BAEXvR,GAAC+B,CAAAA,KAAAA,EAAAA;oBAAIxC,SAAU,EAAA,MAAA;8BAAQ+8D,gBAAiB/qD,CAAAA,QAAAA,CAAAA;;;;;AAIhD,CAAA,CAAA;AAEAmvD,cAAAA,CAAehvD,WAAW,GAAG,gBAAA;;AC9B7B,MAAMkvD,yBAAyB,CAAC,EAAEp1D,KAAK,EAAE9I,WAAW,EAAsB,GAAA;AACxE,IAAA,qBACErC,IAACyjB,CAAAA,KAAAA,EAAAA;QACC+8C,IAAK,EAAA,QAAA;QACLthE,SAAU,EAAA,2DAAA;;0BAEVS,GAACkP,CAAAA,IAAAA,EAAAA;gBAAK3P,SAAU,EAAA,mBAAA;gBAAoByf,EAAI,EAAA,GAAA;AACrCxT,gBAAAA,QAAAA,EAAAA,KAAAA;;0BAEHxL,GAACkP,CAAAA,IAAAA,EAAAA;gBAAKlE,IAAK,EAAA,IAAA;gBAAKzL,SAAU,EAAA,YAAA;AACvBmD,gBAAAA,QAAAA,EAAAA,WAAAA;;;;AAIT,CAAA;;ACWA,MAAMo+D,eAAkB,GAAA,CAAC,EACvBzE,UAAU,EACVh2D,QAAQ,EACRkL,QAAQ,EACRwvD,WAAW,EACXC,gBAAgB,EAChBC,SAAS,EACY,GAAA;AACrB,IAAA,MAAM,CAAClb,YAAAA,EAAcC,eAAgB,CAAA,GAAG1gD,SAAgC,EAAC,CAAA,CAAA;IAEzEE,oBAAqB,CAAA,IAAA;AACnB,QAAA,IAAIw7D,gBAAkB,EAAA;YACpBhb,eAAgB,CAAA;AAAE,gBAAA,CAACgb,mBAAmB,IAAA;AAAK,aAAA,CAAA,CAAA;AAC7C,SAAA,MAAOhb,gBAAgB,EAAC,CAAA,CAAA;KACvB,EAAA;AAACgb,QAAAA,gBAAAA;AAAiB,KAAA,CAAA,CAAA;AAErB,IAAA,MAAMh5C,UAAUnG,OAAoD,CAAA,IAAA;QAClE,OAAO;AACL;;;;;;;;UASA;gBACE6F,WAAa,EAAA,UAAA;gBACbja,MAAQ,EAAA,UAAA;gBACRzC,IAAM,EAAA,EAAA;AACN4c,gBAAAA,IAAAA,EAAM,CAAC,EACLhM,IAAI,EACJ7K,GAAG,EAIJ,GAAA;AACC,oBAAA,MAAMmwD,MAAS,GAAA,CAAC,EAAE3vD,QAAAA,CAAS,CAAC,EAAEwvD,WAAAA,CAAY,CAAC,EAAEhwD,GAAIqC,CAAAA,QAAQ,CAAC+tD,WAAW,CAAC,CAAC,CAAA;AACvE,oBAAA,qBACEnhE,GAACC,CAAAA,MAAAA,EAAAA;wBAAK6sB,GAAK,EAAA,CAACnC,EAAOs2C,GAAAA,SAAAA,CAAUC,MAAQv2C,EAAAA,EAAAA,CAAAA;wBAAK/iB,EAAIs5D,EAAAA,MAAAA;AAC3CtlD,wBAAAA,QAAAA,EAAAA,IAAAA,CAAK+K,QAAQ,EAAA;;AAGpB,iBAAA;AACF,aAAA;AACA,YAAA;gBACEe,WAAa,EAAA,MAAA;gBACbja,MAAQ,EAAA,MAAA;gBACRzC,IAAM,EAAA,EAAA;AACN4c,gBAAAA,IAAAA,EAAM,CAAC,EACLhM,IAAI,EACJ7K,GAAG,EAIJ,GAAA;AACC,oBAAA,qBACE/Q,GAACuiB,CAAAA,IAAAA,EAAAA;wBACCvX,IAAK,EAAA,IAAA;wBACLo2D,OAAQ,EAAA,IAAA;wBACRC,MAAM,EAAA,IAAA;wBACN1gE,UAAY,EAAA;4BACV2gE,WAAa,EAAA,mBAAA;AACf,yBAAA;AACAx2D,wBAAAA,IAAAA,gBAAM9K,GAACuhE,CAAAA,QAAAA,EAAAA;4BAASv2D,IAAK,EAAA,QAAA;;AACrBpD,wBAAAA,EAAAA,EAAI,CAAC,EAAE2J,QAAS,CAAA,CAAC,EAAEwvD,WAAY,CAAA,CAAC,EAAEhwD,GAAAA,CAAIqC,QAAQ,CAAC+tD,WAAW,CAAC,KAAK,CAAC;kCAEhEvlD,IAAK+K,CAAAA,QAAQ,GAAa3kB,GAAG,CAAC,CAACyN,IAAMvN,EAAAA,KAAAA,iBACpClC,GAACuiB,CAAAA,IAAAA,CAAKtT,IAAI,EAAA;AACPQ,gCAAAA,QAAAA,EAAAA,IAAAA;AADa,6BAAA,EAAA,CAAC,EAAEsB,GAAAA,CAAIqC,QAAQ,CAAC+tD,WAAW,CAAC,CAAC,EAAE1xD,IAAK,CAAA,CAAC,EAAEvN,KAAAA,CAAM,CAAC,CAAA,CAAA;;AAMtE,iBAAA;AACF,aAAA;AACA,YAAA;gBACEwlB,WAAa,EAAA,UAAA;gBACbja,MAAQ,EAAA,UAAA;gBACRzC,IAAM,EAAA,EAAA;AACR,aAAA;AACA,YAAA;gBACE0c,WAAa,EAAA,aAAA;gBACbja,MAAQ,EAAA,aAAA;AACV,aAAA;AACD,SAAA,CAAA;AACH,KAAA,EAAG,EAAE,CAAA,CAAA;AAEL,IAAA,MAAM+zD,YAAY3/C,OAAQ,CAAA,IAAA;QACxB,MAAM3gB,IAAAA,GAAOm7D,aAAap7D,MAAOC,CAAAA,IAAI,CAACm7D,UAAc,IAAA,MAAM,EAAE,CAAA;AAC5D,QAAA,OAAOn7D,KAAKiB,MAAM,GACdjB,IAAKc,CAAAA,GAAG,CAAC,CAAC2c,CAAAA,GAAAA;YACR,IAAI,CAAC09C,UAAc,IAAA,CAACp7D,MAAOC,CAAAA,IAAI,CAACm7D,UAAY9hD,CAAAA,CAAAA,QAAQ,CAACoE,CAAAA,CAAAA,EACnD,OAAO;gBACLjO,QAAU,EAAA,EAAA;AACVjB,gBAAAA,IAAAA,EAAM,EAAE;gBACRpJ,QAAU,EAAA,IAAA;gBACV3D,WAAa,EAAA,EAAA;gBACby+D,WAAaxiD,EAAAA,CAAAA;AACf,aAAA,CAAA;YACF,MAAM5N,GAAAA,GAAMsrD,UAAU,CAAC19C,CAAE,CAAA,CAAA;YACzB,OAAO;gBACLwiD,WAAaxiD,EAAAA,CAAAA;gBACbjO,QAAUiO,EAAAA,CAAAA,CACPnb,KAAK,CAAC,GACNxB,CAAAA,CAAAA,GAAG,CAAC,CAACqK,IAAS08B,GAAAA,YAAAA,CAAW18B,IACzBmN,CAAAA,CAAAA,CAAAA,IAAI,CAAC,GAAA,CAAA;AACR/J,gBAAAA,IAAAA,EAAMxO,OAAOC,IAAI,CAAC6P,KAAKwJ,QAAQ,CAAC,WAC5BxJ,GAAIouD,CAAAA,KAAK,EAAEn9D,GAAI,CAAA,CAAC,EAAEyN,IAAI,EAAE,GAAKA,IAC7BxO,CAAAA,GAAAA,MAAAA,CAAOC,IAAI,CAAC6P,GAAAA,CAAAA,CAAKwJ,QAAQ,CAAC,OAAA,CAAA,GAC1BxJ,IAAI0wD,KAAK,EAAEz/D,IAAI,CAAC,EAAEyN,IAAI,EAAE,GAAKA,QAC7BxO,MAAOC,CAAAA,IAAI,CAAC6P,GAAKwJ,CAAAA,CAAAA,QAAQ,CAAC,MAC1BxJ,CAAAA,GAAAA,GAAAA,CAAIwsC,IAAI,GACR;AAACxsC,oBAAAA,GAAAA,CAAItB,IAAI;AAAC,iBAAA;gBACdpJ,QAAUA,EAAAA,QAAAA,EAAUkU,QAASoE,CAAAA,CAAAA,CAAAA,GAAK,UAAa,GAAA,IAAA;AAC/Cjc,gBAAAA,WAAAA,EACEqO,GAAKrO,EAAAA,WAAAA,IAAeqO,GAAK2sD,EAAAA,IAAAA,EAAMh7D,WAAe,IAAA,gBAAA;AAClD,aAAA,CAAA;AACF,SAAA,CAAA,GACC,EAAE,CAAA;AACT,KAAA,EAAG,EAAE,CAAA,CAAA;AACL,IAAA,MAAMolB,QAAQC,oBAA2C,CAAA;AACvDC,QAAAA,OAAAA;QACAtG,IAAM8/C,EAAAA,SAAAA;QACNE,gBAAkB,EAAA,KAAA;QAClBC,mBAAqB,EAAA,KAAA;QACrBh5C,gBAAkB,EAAA,KAAA;QAClBL,kBAAoB,EAAA,KAAA;QACpBk+B,QAAU,EAAA,CAACC,WAAsCA,GAAAA,WAAAA,CAAY0a,WAAW;QACxEn3C,wBAA0B,EAAA,CAAC,EAAEjZ,GAAG,EAAE,GAAA;;YAEhC,IAAI9P,MAAAA,CAAOC,IAAI,CAAC6kD,YAAcxrC,CAAAA,CAAAA,QAAQ,CAACxJ,GAAAA,CAAIqC,QAAQ,CAAC+tD,WAAW,CAAA,EAC7D,OAAO;gBACLnkD,KAAO,EAAA;oBACL4kD,eAAiB,EAAA,KAAA;oBACjBC,eAAiB,EAAA,+BAAA;AACnB,iBAAA;AACF,aAAA,CAAA;AACG,iBAAA,OAAO,EAAC,CAAA;AACf,SAAA;QACAp5D,KAAO,EAAA;AAAEs9C,YAAAA,YAAAA;AAAa,SAAA;QACtBkT,wBAA0B,EAAA;YACxBj8C,KAAO,EAAA;gBACL,6BAA+B,EAAA,oCAAA;AACjC,aAAA;AACF,SAAA;QACA0M,yBAA2B,EAAA;YACzB1M,KAAO,EAAA;gBACLpR,KAAO,EAAA,6CAAA;AACT,aAAA;AACF,SAAA;AAQF,KAAA,CAAA,CAAA;AAEA,IAAA,qBAAO5L,GAACsqB,CAAAA,iBAAAA,EAAAA;QAAkBxC,KAAOA,EAAAA,KAAAA;;AACnC,CAAA,CAAA;AAEA,wBAAe3kB,cAAAA,cAAAA,CAAM2+D,IAAI,CAAChB,eAAiB,CAAA;;ACjL3C,MAAMiB,aAAAA,GAAgB,CAAC,EACrBxwD,QAAQ,EACRywD,UAAU,EACVC,iBAAiB,EACH,GAAA;AACd,IAAA,MAAM,EAAE/F,UAAU,EAAEr7C,UAAU,EAAEjP,MAAM,EAAE,GAAGitD,oBAAAA,EAAAA,CAAAA;IAC3C,MAAMqD,YAAAA,GAAkDrhD,UAAU,CAACtP,QAAS,CAAA,CAAA;AAC5E,IAAA,MAAM,CAACvN,KAAAA,EAAOm+B,QAAS,CAAA,GAAG78B,QAAwB08D,CAAAA,UAAAA,CAAAA,CAAAA;;;;;AAKlD,IAAA,MAAMG,gBAAgBvF,4BAA6BoF,CAAAA,UAAAA,CAAAA,CAAAA;IACnD,MAAMI,QAAAA,GAAW56D,OAA+C,EAAC,CAAA,CAAA;IAEjE,MAAMy5D,SAAAA,GAAY,CAACr5D,EAAY+iB,EAAAA,EAAAA,GAAAA;QAC7By3C,QAAS16D,CAAAA,OAAO,CAACE,EAAAA,CAAG,GAAG+iB,EAAAA,CAAAA;AACzB,KAAA,CAAA;AAEA,IAAA,MAAM03C,eAAe,CAACz6D,EAAAA,GAAAA;QACpB,IAAI,CAACw6D,SAAS16D,OAAO,IAAI06D,SAAS16D,OAAO,CAACE,EAAG,CAAA,IAAI,IAAM,EAAA,OAAA;AACvD,QAAA,MAAM06D,GAAMF,GAAAA,QAAAA,CAAS16D,OAAO,CAACE,EAAG,CAAA,CAAA;AAChC,QAAA,IAAI06D,QAAQ,IAAM,EAAA;YAChBL,iBAAkBK,CAAAA,GAAAA,CAAAA,CAAAA;AACpB,SAAA;AACF,KAAA,CAAA;;;IAIA76D,SAAU,CAAA,IAAA;QACR,IACEzD,KAAAA,KAAU,IACVA,IAAAA,KAAAA,IAAS64D,cAAesF,CAAAA,aAAAA,CAAAA,IACxBA,cAAczxD,QAAQ,CAACvO,MAAM,GAAG,CAChC,EAAA;AACA,YAAA,MAAMogE,QAAQC,UAAW,CAAA,IAAA;gBACvBH,YAAaL,CAAAA,UAAAA,CAAAA,CAAAA;AACf,aAAA,EAAG;AACH,YAAA,OAAO,IAAMS,YAAaF,CAAAA,KAAAA,CAAAA,CAAAA;AAC5B,SAAA;KACC,EAAA;AAACF,QAAAA,YAAAA;AAAcL,QAAAA,UAAAA;AAAYG,QAAAA,aAAAA;AAAen+D,QAAAA,KAAAA;AAAM,KAAA,CAAA,CAAA;IAEnDwB,oBAAqB,CAAA,IAAA;AACnB,QAAA,IAAI+L,QAAY4wD,IAAAA,aAAAA,CAAcvlC,IAAI;QAEhCuF,QAAS,CAAA,CAAC,EAAEggC,aAAAA,CAAcvlC,IAAI,CAAC,CAAC,EAAEulC,aAAAA,CAAc5wD,QAAQ,CAAC,CAAC,CAAA,CAAA;aACvD4wB,QAAS,CAAA,IAAA,CAAA,CAAA;KACb,EAAA;AAACggC,QAAAA,aAAAA;AAAc,KAAA,CAAA,CAAA;AAElB,IAAA,qBACE9hE,IAAC0B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAU,EAAA,MAAA;;0BACbS,GAAC0gE,CAAAA,cAAAA,EAAAA;gBAAenvD,QAAUA,EAAAA,QAAAA;;0BAC1BvR,GAAC0jB,CAAAA,SAAAA,EAAAA;gBACC+3C,eAAgB,EAAA,MAAA;gBAChBz3D,KAAOA,EAAAA,KAAAA;gBACPmqB,QAAUgU,EAAAA,QAAAA;gBACVpyB,OAAQ,EAAA,WAAA;gBACRib,kBAAoBozC,EAAAA,6BAAAA;gBACpB9yC,MAAQ,EAAA;oBACNowC,OAAS,EAAA;wBACP3gD,SAAW,EAAA,gBAAA;wBACX,eAAiB,EAAA;4BACfA,SAAW,EAAA,cAAA;AACb,yBAAA;AACF,qBAAA;AACF,iBAAA;0BAECmnD,YAAalgE,CAAAA,GAAG,CAAC,CAAC,EAAExB,KAAK,EAAEkC,WAAW,EAAEkF,EAAE,EAAE,GAAA;oBAC3C,qBACEvH,IAAA,CAACqjB,UAAUzU,IAAI,EAAA;AACbjL,wBAAAA,KAAAA,EAAO,CAAC,EAAEuN,QAAAA,CAAS,CAAC,EAAE3J,GAAG,CAAC;wBAE1BrI,SAAU,EAAA,uCAAA;;0CAEVc,IAACyjB,CAAAA,KAAAA,EAAAA;gCACC+8C,IAAK,EAAA,QAAA;gCACLthE,SACE,EAAA,CAAC,EAAEgS,QAAS,CAAA,CAAC,EAAE3J,EAAG,CAAA,CAAC,KAAK5D,KAAAA,GACpB,0BACA,GAAA,EAAA;;AAGN,kDAAAhE,GAAA,CAAC0jB,UAAUC,OAAO,EAAA;AAChB,wCAAA,QAAA,gBAAA3jB,GAAC4gE,CAAAA,sBAAAA,EAAAA;4CACCp1D,KAAOhL,EAAAA,KAAAA;4CACPkC,WAAaA,EAAAA,WAAAA;;;AAGhBkP,oCAAAA,MAAAA,EAAQ2sD,8BACPl+D,IAACyjB,CAAAA,KAAAA,EAAAA;wCAAM+8C,IAAK,EAAA,QAAA;wCAASthE,SAAU,EAAA,SAAA;;0DAC7BS,GAAC6P,CAAAA,MAAAA,EAAAA;AAAOnD,gDAAAA,WAAAA,gBAAa1M,GAACgkB,CAAAA,UAAAA,EAAAA,EAAAA,CAAAA;AAAiB,gDAAA,QAAA,EAAA,KAAA;;0DACvChkB,GAAC6P,CAAAA,MAAAA,EAAAA;AAAOnD,gDAAAA,WAAAA,gBAAa1M,GAACgkB,CAAAA,UAAAA,EAAAA,EAAAA,CAAAA;AAAiB,gDAAA,QAAA,EAAA,MAAA;;;AAEvC,qCAAA,CAAA,GAAA,IAAA;;;AAEN,0CAAAhkB,GAAA,CAAC0jB,UAAUhB,KAAK,EAAA;AACd,gCAAA,QAAA,gBAAA1iB,GAAC+B,CAAAA,KAAAA,EAAAA;oCAAIxC,SAAU,EAAA,MAAA;AACb,oCAAA,QAAA,gBAAAS,GAAC+B,CAAAA,KAAAA,EAAAA;wCAAIxC,SAAU,EAAA,oBAAA;AACb,wCAAA,QAAA,gBAAAS,GAAC8gE,CAAAA,iBAAAA,EAAAA;AACCzE,4CAAAA,UAAAA,EAAYH,UAAU,CAACt0D,EAAAA,CAAG,CAACy0D,UAAU,IAAI,EAAC;AAC1Ch2D,4CAAAA,QAAAA,EAAU61D,UAAU,CAACt0D,EAAG,CAAA,CAACvB,QAAQ;4CACjCkL,QAAUA,EAAAA,QAAAA;4CACVwvD,WAAan5D,EAAAA,EAAAA;AACbo5D,4CAAAA,gBAAAA,EAAkBmB,cAAczxD,QAAQ;4CACxCuwD,SAAWA,EAAAA,SAAAA;;;;;;AAjCd,qBAAA,EAAA,CAAC,EAAE1vD,QAAAA,CAAS,CAAC,EAAE3J,GAAG,CAAC,CAAA,CAAA;AAwC9B,iBAAA,CAAA;;;OA7DuB,CAAC,iBAAiB,EAAE2J,QAAAA,CAAS,CAAC,CAAA,CAAA;AAiE7D,CAAA,CAAA;AAEA,sBAAA,cAAepO,cAAM2+D,CAAAA,IAAI,CAACC,aAAAA,EAAe,CAACW,SAAWC,EAAAA,SAAAA,GAAAA;IACnD,MAAMR,aAAAA,GAAgBvF,4BAA6B+F,CAAAA,SAAAA,CAAUX,UAAU,CAAA,CAAA;;;IAGvE,OACEU,SAAAA,CAAUnxD,QAAQ,KAAKoxD,SAAAA,CAAUpxD,QAAQ,IACzC4wD,aAAAA,CAAcvlC,IAAI,KAAK8lC,SAAUnxD,CAAAA,QAAQ,IACzCmxD,SAAUV,CAAAA,UAAU,KAAKW,SAAUX,CAAAA,UAAU,IAC7CU,SAAUT,CAAAA,iBAAiB,KAAKU,SAAAA,CAAUV,iBAAiB,CAAA;AAE/D,CAAG,CAAA;;ACzIH,MAAMW,UAAa,GAAA,IAAA;AACjB,IAAA,MAAM,CAACZ,UAAAA,EAAYa,aAAc,CAAA,GAAGv9D,QAAS,CAAA,EAAA,CAAA,CAAA;AAC7C,IAAA,MAAM,CAACg4D,IAAAA,EAAMC,OAAQ,CAAA,GAAGj4D,QAAmB,CAAA,OAAA,CAAA,CAAA;IAC3C,MAAM,EAAE42D,UAAU,EAAEr7C,UAAU,EAAE+9C,iBAAiB,EAAEhtD,MAAM,EAAE,GACzDitD,oBAAAA,EAAAA,CAAAA;IAEF,MAAM,EAAEiE,cAAc,EAAEC,SAAS,EAAEC,aAAa,EAAE,GAChDC,iBAAmC,CAAA;QACjCnuC,MAAQ,EAAA,EAAA;AACV,KAAA,CAAA,CAAA;IAEF,MAAMouC,QAAAA,GAAW95D,YAAY,CAACgE,IAAAA,GAAAA;AAC5By1D,QAAAA,aAAAA,CAAc,IAAMlG,4BAA6BvvD,CAAAA,IAAAA,CAAAA,CAAAA,CAAAA;AACnD,KAAA,EAAG,EAAE,CAAA,CAAA;IAEL,MAAM60D,iBAAAA,GAAoB74D,YACxB,CAAC+5D,OAAAA,GAAAA;AACCJ,QAAAA,SAAAA,CAAUr7D,OAAO,GAAGy7D,OAAAA,CAAAA;AACpBL,QAAAA,cAAAA,EAAAA,CAAAA;KAEF,EAAA;AAACA,QAAAA,cAAAA;AAAgBC,QAAAA,SAAAA;AAAU,KAAA,CAAA,CAAA;IAG7B,qBACE1iE,IAAA,CAAA49D,QAAA,EAAA;;0BACEj+D,GAAC+B,CAAAA,KAAAA,EAAAA;gBAAIxC,SAAU,EAAA,yBAAA;AACb,gBAAA,QAAA,gBAAAc,IAAC0B,CAAAA,KAAAA,EAAAA;oBAAIxC,SAAU,EAAA,QAAA;;AACZqS,wBAAAA,MAAAA,EAAQ0sD,0BACPt+D,GAACq9D,CAAAA,YAAAA,EAAAA;4BAAaC,IAAMA,EAAAA,IAAAA;4BAAMC,OAASA,EAAAA,OAAAA;AACjC,yBAAA,CAAA,GAAA,IAAA;sCACJl9D,IAACJ,CAAAA,MAAAA,EAAAA;;AAAK,gCAAA,oCAAA;AAC+B,gCAAA,GAAA;8CACnCD,GAACC,CAAAA,MAAAA,EAAAA;oCAAKV,SAAU,EAAA,WAAA;AAAaq/D,oCAAAA,QAAAA,EAAAA,iBAAAA,CAAkBz8D,MAAM;;AAAQ,gCAAA,YAAA;AACzD,gCAAA,GAAA;8CACJnC,GAACC,CAAAA,MAAAA,EAAAA;oCAAKV,SAAU,EAAA,WAAA;AACb68D,oCAAAA,QAAAA,EAAAA,gBAAAA,CAAiBwC,iBAAmB1C,EAAAA,UAAAA,CAAAA;;AAC/B,gCAAA,GAAA;AAAI,gCAAA,YAAA;;;sCAGdl8D,GAACs/D,CAAAA,WAAAA,EAAAA;4BAAY3B,UAAYuF,EAAAA,QAAAA;;;;;0BAG7BljE,GAAC+B,CAAAA,KAAAA,EAAAA;gBACCxC,SAAU,EAAA,yCAAA;gBACVutB,GAAKk2C,EAAAA,aAAAA;AAEL,gBAAA,QAAA,gBAAAhjE,GAAC+B,CAAAA,KAAAA,EAAAA;oBAAIxC,SAAU,EAAA,QAAA;AACZ0B,oBAAAA,QAAAA,EAAAA,MAAAA,CAAOC,IAAI,CAAC2f,UAAY1e,CAAAA,CAAAA,MAAM,IAC7BlB,MAAAA,CAAOC,IAAI,CAAC2f,UAAY7e,CAAAA,CAAAA,GAAG,CAAC,CAACuP,yBAC3BvR,GAAC+hE,CAAAA,eAAAA,EAAAA;4BAECxwD,QAAUA,EAAAA,QAAAA;4BACVywD,UAAYA,EAAAA,UAAAA;4BACZC,iBAAmBA,EAAAA,iBAAAA;AAHd1wD,yBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;;;;;AAUrB,CAAA,CAAA;AAEA,mBAAepO,cAAAA,cAAAA,CAAM2+D,IAAI,CAACc,UAAY,CAAA;;AC9DtC,MAAMQ,qBAAwB,GAAA,CAAC,EAAExxD,MAAM,EAAmB,GAAA;AACxD,IAAA,MAAM,EAAE8P,IAAI,EAAE2F,UAAU,EAAEqN,eAAe,EAAEvN,SAAS,EAAEC,OAAO,EAAEuN,SAAS,EAAE,GACxE0uC,qBAAAA,EAAAA,CAAAA;AACF,IAAA,MAAM,CAACnH,UAAAA,EAAYoH,aAAc,CAAA,GAAGh+D,SAAyB,EAAC,CAAA,CAAA;IAE9DmC,SAAU,CAAA,IAAA;AACR,QAAA,IAAIktB,SAAW,EAAA;AACb,YAAA,MAAMunC,aAAaiB,sCACjBz7C,CAAAA,IAAAA,CAAAA,CAAAA;YAEF4hD,aAAcpH,CAAAA,UAAAA,CAAAA,CAAAA;AAChB,SAAA;KACC,EAAA;AAACx6C,QAAAA,IAAAA;AAAMiT,QAAAA,SAAAA;AAAU,KAAA,CAAA,CAAA;IAEpB,IACExN,SAAAA,IACAE,cACAqN,eACAzzB,IAAAA,MAAAA,CAAOC,IAAI,CAACg7D,UAAAA,CAAAA,CAAY/5D,MAAM,KAAK,CACnC,EAAA;AACA,QAAA,qBACE9B,IAAC0B,CAAAA,KAAAA,EAAAA;YAAIxC,SAAU,EAAA,2CAAA;;8BACbS,GAAC+vB,CAAAA,MAAAA,EAAAA;oBAAOhgB,OAAQ,EAAA,MAAA;;AAAU,gBAAA,GAAA;;;AAGhC,KAAA;AAEA,IAAA,IAAIqX,OAAS,EAAA;AACX,QAAA,qBACEpnB,GAAC+B,CAAAA,KAAAA,EAAAA;YAAIxC,SAAU,EAAA,iDAAA;AACb,YAAA,QAAA,gBAAAS,GAACkP,CAAAA,IAAAA,EAAAA;gBAAKlE,IAAM,EAAA,IAAA;AAAM,gBAAA,QAAA,EAAA,8BAAA;;;AAGxB,KAAA;AAEA,IAAA,qBACEhL,GAAC8+D,CAAAA,kBAAAA,EAAAA;QAAmBltD,MAAQA,EAAAA,MAAAA;QAAQsqD,UAAYA,EAAAA,UAAAA;AAC9C,QAAA,QAAA,gBAAAl8D,GAAC4iE,CAAAA,YAAAA,EAAAA,EAAAA,CAAAA;;AAGP,CAAA;;AC7CMW,MAAAA,cAAAA,GAAiB,CAAC,EACtBrzD,WAAW,EACXC,WAAW,EACXyB,MAAM,EACc,GAAA;AACpB,IAAA,qBACE5R,GAACiQ,CAAAA,aAAAA,EAAAA;AACOC,QAAAA,WAAAA;AAAaC,QAAAA,WAAAA;QAAaC,SAAW,EAAA;YAAEG,KAAO,EAAA,IAAA;AAAK,SAAA;QACzDF,UAAY,EAAA;YACV7P,KAAO,EAAA,0BAAA;YACPmQ,OAAS,EAAA,iBAAA;YACTjQ,GAAK,EAAA,2BAAA;AACP,SAAA;AAEA,QAAA,QAAA,gBAAAV,GAACojE,CAAAA,qBAAAA,EAAAA;YAAsBxxD,MAAQA,EAAAA,MAAAA;;;AAGrC;;MCVa4xD,gCAET,GAAA,UAAA;IACF,IAAI;QACF,MAAMrN,kBAAAA,GACJ,MAAMzE,aAAAA,CAAc5S,GAAG,CAAC,CAAC,OAAO,EAAE+S,iBAAkB,CAAA,gBAAgB,CAAC,CAAA,CAAA;QACvE,OAAO;YACLjiD,KAAO,EAAA;AACL,gBAAA,GAAI,MAAM+hD,+BAAiC,EAAA;gBAC3C//C,MAAQukD,EAAAA,kBAAAA;AACV,aAAA;AACF,SAAA,CAAA;AACF,KAAA,CAAE,OAAO5jC,GAAK,EAAA;AACZxe,QAAAA,OAAAA,CAAQ4c,KAAK,CAAC4B,GAAAA,CAAAA,CAAAA;QACd,OAAO;YACL3iB,KAAO,EAAA;AACL,gBAAA,GAAI,MAAM+hD,+BAAiC,EAAA;gBAC3C//C,MAAQ,EAAA;oBACN0sD,SAAW,EAAA,KAAA;oBACXC,aAAe,EAAA,KAAA;oBACfC,gBAAkBL,EAAAA,sBAAAA;oBAClBM,eAAiBP,EAAAA,kBAAAA;AACnB,iBAAA;AACF,aAAA;AACF,SAAA,CAAA;AACF,KAAA;AACF;;ACPO,MAAMuF,YAAe,GAAA,CAACh7D,KAAcu5C,EAAAA,MAAAA,GAAAA;AACzC,IAAA,OAAQA,OAAOvyC,IAAI;QACjB,KAAK,SAAA;YACH,OAAO;AACL,gBAAA,GAAGhH,KAAK;gBACRowD,KAAO,EAAA;AAAE,oBAAA,GAAGpwD,KAAK;oBAAEi7D,KAAO,EAAA;AAAIj7D,wBAAAA,GAAAA,KAAAA,CAAMi7D,KAAK;wBAAE1hB,MAAO2hB,CAAAA,OAAO,CAAC1+D,IAAI;AAAC,qBAAA;AAAC,iBAAA;AAClE,aAAA,CAAA;QACF,KAAK,YAAA;YACH,OAAO;AACL,gBAAA,GAAGwD,KAAK;gBACRowD,KAAO,EAAA;AACL,oBAAA,GAAGpwD,KAAK;AACRi7D,oBAAAA,KAAAA,EAAOj7D,KAAMi7D,CAAAA,KAAK,CAACjgE,MAAM,CACvB,CAACwB,IAASA,GAAAA,IAAAA,CAAK2C,EAAE,KAAKo6C,MAAO2hB,CAAAA,OAAO,EAAE1+D,IAAM2C,EAAAA,EAAAA,CAAAA;AAEhD,iBAAA;AACF,aAAA,CAAA;AACF,QAAA;YACE,OAAOa,KAAAA,CAAAA;AACX,KAAA;AACF,CAAE,CAAA;AAEK,MAAMm7D,6BAAe19D,aAGzB,CAAA;IACDuC,KAAO,EAAA;AACLi7D,QAAAA,KAAAA,EAAO,EAAE;AACT3hD,QAAAA,MAAAA,EAAQ,EAAE;AACV8hD,QAAAA,KAAAA,EAAO,EAAE;AACTC,QAAAA,QAAAA,EAAU,EAAE;AACZC,QAAAA,SAAAA,EAAW,EAAE;AACf,KAAA;AACAj+B,IAAAA,QAAAA,EAAU,IAAM,IAAA;AAClB,CAAG,CAAA,CAAA;AAOI,MAAMk+B,aAAgB,GAAA,CAAC,EAC5Bh8D,QAAQ,EACR6wD,KAAQ,GAAA;AACN6K,IAAAA,KAAAA,EAAO,EAAE;AACT3hD,IAAAA,MAAAA,EAAQ,EAAE;AACV8hD,IAAAA,KAAAA,EAAO,EAAE;AACTC,IAAAA,QAAAA,EAAU,EAAE;AACZC,IAAAA,SAAAA,EAAW,EAAE;AACf,CAAC,EACkB,GAAA;AACnB,IAAA,MAAM,CAACt7D,KAAAA,EAAOq9B,QAAS,CAAA,GAAGyc,WAAWkhB,YAAc5K,EAAAA,KAAAA,CAAAA,CAAAA;IACnD,qBACE74D,GAAA,CAAC4jE,aAAat5D,QAAQ,EAAA;QAACtG,KAAO,EAAA;AAAEyE,YAAAA,KAAAA;AAAOq9B,YAAAA,QAAAA;AAAS,SAAA;AAC7C99B,QAAAA,QAAAA,EAAAA,QAAAA;;AAGP,CAAE,CAAA;AAEK,MAAMi8D,eAAAA,GAAkB,IAAMx9D,UAAAA,CAAWm9D,YAAc,CAAA;;ACzE9D,MAAMM,YAAY,CAAC,EACjBC,cAAc,EACdC,oBAAoB,EACL,GAAA;AACf,IAAA,MAAMp/D,UAAUyB,UAAWm9D,CAAAA,YAAAA,CAAAA,CAAAA;AAC3B,IAAA,MAAM,CAAC7d,YAAAA,EAAcC,eAAgB,CAAA,GAAG1gD,SAAgC,EAAC,CAAA,CAAA;AAEzE,IAAA,MAAMo+D,QAAQ7hD,OACZ,CAAA,IACE5gB,MAAO8R,CAAAA,OAAO,CAAC/N,OAAQyD,CAAAA,KAAK,CAACi7D,KAAK,EAAE1hE,GAAG,CAAC,CAAC,CAACtB,KAAKuE,IAAK,CAAA,GAAA;YAClD,OAAO;gBAAE2C,EAAIlH,EAAAA,GAAAA;AAAKmc,gBAAAA,IAAAA,EAAM5X,KAAK4X,IAAI;AAAC,aAAA,CAAA;SAEtC,CAAA,EAAA;QAAC7X,OAAQyD,CAAAA,KAAK,CAACi7D,KAAK;AAAC,KAAA,CAAA,CAAA;IAGvB,MAAM17C,OAAAA,GAAUnG,QACd,IAAM;AACJ,YAAA;gBACEja,EAAI,EAAA,IAAA;gBACJ6F,MAAQ,EAAA,SAAA;gBACRka,UAAY,EAAA,CAAC1iB,IAAeA,GAAAA,IAAAA,CAAK2C,EAAE;AACrC,aAAA;AACA,YAAA;gBACEA,EAAI,EAAA,MAAA;gBACJ6F,MAAQ,EAAA,MAAA;AACRka,gBAAAA,UAAAA,EAAY,CAAC1iB,IAAAA,GAAeA,IAAK4X,CAAAA,IAAI,EAAExQ,IAAAA;AACzC,aAAA;AACA,YAAA;gBACEzE,EAAI,EAAA,OAAA;gBACJ6F,MAAQ,EAAA,OAAA;AACRka,gBAAAA,UAAAA,EAAY,CAAC1iB,IAAAA,GAAeA,IAAK4X,CAAAA,IAAI,EAAEioB,KAAAA;AACzC,aAAA;AACD,SAAA,EACD,EAAE,CAAA,CAAA;AAGJ,IAAA,MAAMhd,QAAQC,oBAA2B,CAAA;AACvCC,QAAAA,OAAAA;QACAtG,IAAMgiD,EAAAA,KAAAA;QACNW,gBAAkB,EAAA,IAAA;QAClBC,qBAAuB,EAAA,MAAA;AACvBC,QAAAA,wBAAAA,EAA0B,CAAC,EAAExzD,GAAG,EAAE,iBAChC1Q,IAAA,CAAC8C,eAAMC,QAAQ,EAAA;;AACb,kCAAApD,GAAA,CAAC6O,KAAKI,IAAI,EAAA;wBACRlD,OAAS,EAAA,IAAA;AACPo4D,4BAAAA,cAAAA,CAAepzD,IAAIqC,QAAQ,CAAA,CAAA;AAC3BgxD,4BAAAA,oBAAAA,EAAAA,CAAAA;AACF,yBAAA;AACD,wBAAA,QAAA,EAAA,SAAA;;AAGD,kCAAApkE,GAAA,CAAC6O,KAAKI,IAAI,EAAA;wBAAClD,OAAS,EAAA,IAAMgI,OAAQywD,CAAAA,IAAI,CAAC,QAAA,CAAA;AAAW,wBAAA,QAAA,EAAA,QAAA;;;;QAGtDl8C,kBAAoB,EAAA,IAAA;QACpBm8C,oBAAsBze,EAAAA,eAAAA;QACtBv9C,KAAO,EAAA;AAAEs9C,YAAAA,YAAAA;AAAa,SAAA;QACtB2e,YAAc,EAAA;YAAEC,iBAAmB,EAAA,IAAA;YAAMC,gBAAkB,EAAA,IAAA;AAAK,SAAA;QAChErd,qBAAuB,EAAA,OAAA;QACvByQ,0BAA4B,EAAA,QAAA;QAC5BtQ,sBAAwB,EAAA;YACtB5qC,MAAQ,EAAA,IAAA;YACR9R,IAAM,EAAA,IAAA;AACR,SAAA;QACAitD,2BAA6B,EAAA;YAC3Bz/B,WAAa,EAAA,cAAA;AACf,SAAA;AACF,KAAA,CAAA,CAAA;AAEA,IAAA,qBAAOx4B,GAACsqB,CAAAA,iBAAAA,EAAAA;QAAkBxC,KAAOA,EAAAA,KAAAA;;AACnC,CAAA;;AC7EO,MAAM+8C,MAAAA,GAAS,CAAC,EAAEC,IAAI,EAAkD,GAAA;AAC7E,IAAA,qBAAO9kE,GAACg8B,CAAAA,SAAAA,EAAAA;QAAW,GAAG8oC,IAAAA,CAAKC,aAAa,CAAC,QAAS,CAAA;QAAEv5D,KAAM,EAAA,SAAA;QAAUw5D,YAAY,EAAA,IAAA;;AAClF,CAAE,CAAA;AACK,MAAMC,SAAAA,GAAY,CAAC,EACxBH,IAAI,EAGL,GAAA;AACC,IAAA,qBAAO9kE,GAACg8B,CAAAA,SAAAA,EAAAA;QAAW,GAAG8oC,IAAAA,CAAKC,aAAa,CAAC,MAAO,CAAA;QAAEv5D,KAAM,EAAA,WAAA;;AAC1D,CAAE,CAAA;AACK,MAAM05D,UAAAA,GAAa,CAAC,EACzBJ,IAAI,EAGL,GAAA;AACC,IAAA,qBAAO9kE,GAACg8B,CAAAA,SAAAA,EAAAA;QAAW,GAAG8oC,IAAAA,CAAKC,aAAa,CAAC,OAAQ,CAAA;QAAEv5D,KAAM,EAAA,OAAA;;AAC3D,CAAE,CAAA;AAEK,MAAM25D,YAAAA,GAAe,CAAC,EAC3BL,IAAI,EAGL,GAAA;AACC,IAAA,qBAAO9kE,GAAColE,CAAAA,MAAAA,EAAAA;QAAOrhC,aAAc,EAAA,MAAA;QAAOv4B,KAAM,EAAA,kBAAA;;AAC5C,CAAE;;ACxBF,MAAM65D,YAAe,GAAA,CAAC,EAAEC,UAAU,EAAqB,GAAA;AACrD,IAAA,MAAMtgE,OAAUi/D,GAAAA,eAAAA,EAAAA,CAAAA;AAChB,IAAA,MAAMa,OAAOS,OAA2B,CAAA;QACtCC,aAAe,EAAA;YAAEC,MAAQ,EAAA,EAAA;YAAIp5D,IAAM,EAAA,EAAA;YAAIy4B,KAAO,EAAA,EAAA;AAAG,SAAA;AACnD,KAAA,CAAA,CAAA;AACA,IAAA,qBACEzkC,IAACujB,CAAAA,KAAAA,EAAAA;;0BACC5jB,GAAC6kE,CAAAA,MAAAA,EAAAA;gBAAOC,IAAMA,EAAAA,IAAAA;;0BACd9kE,GAACilE,CAAAA,SAAAA,EAAAA;gBAAUH,IAAMA,EAAAA,IAAAA;;0BACjB9kE,GAACklE,CAAAA,UAAAA,EAAAA;gBAAWJ,IAAMA,EAAAA,IAAAA;;0BAClB9kE,GAACmlE,CAAAA,YAAAA,EAAAA;gBAAaL,IAAMA,EAAAA,IAAAA;;0BACpBzkE,IAACyjB,CAAAA,KAAAA,EAAAA;;kCACC9jB,GAAC6P,CAAAA,MAAAA,EAAAA;wBACCjD,YAAW,EAAA,iBAAA;wBACXb,OAAS,EAAA,IAAA;AACP/G,4BAAAA,OAAAA,CAAQ8gC,QAAQ,CAAC;gCACfr2B,IAAM,EAAA,SAAA;gCACNk0D,OAAS,EAAA;oCACP1+D,IAAM,EAAA;wCACJ2C,EAAIk9D,EAAAA,IAAAA,CAAKn3C,MAAM,CAAC83C,MAAM;wCACtB5oD,IAAM,EAAA;4CACJxQ,IAAMy4D,EAAAA,IAAAA,CAAKn3C,MAAM,CAACthB,IAAI;4CACtBy4B,KAAOggC,EAAAA,IAAAA,CAAKn3C,MAAM,CAACmX,KAAK;AAC1B,yCAAA;AACF,qCAAA;AACF,iCAAA;AACF,6BAAA,CAAA,CAAA;AACAwgC,4BAAAA,UAAAA,EAAAA,CAAAA;AACF,yBAAA;AACD,wBAAA,QAAA,EAAA,aAAA;;kCAGDtlE,GAAC6P,CAAAA,MAAAA,EAAAA;wBACCjD,YAAW,EAAA,oBAAA;wBACXb,OAAS,EAAA,IAAA;AACPu5D,4BAAAA,UAAAA,EAAAA,CAAAA;AACF,yBAAA;AACD,wBAAA,QAAA,EAAA,QAAA;;;;;;AAMT,CAAA;;AC3CA,MAAMI,WAAc,GAAA,CAAC,EAAEzgE,IAAI,EAAoB,GAAA;AAE7C,IAAA,MAAM6/D,OAAOS,OAA2B,CAAA;QACtCC,aAAe,EAAA;AAAEC,YAAAA,MAAAA,EAAQxgE,KAAK2C,EAAE;YAAEyE,IAAMpH,EAAAA,IAAAA,CAAK4X,IAAI,EAAExQ,IAAQ,IAAA,EAAA;YAAIy4B,KAAO7/B,EAAAA,IAAAA,CAAK4X,IAAI,EAAEioB,KAAS,IAAA,EAAA;AAAE,SAAA;AAC9F,KAAA,CAAA,CAAA;AAEA,IAAA,qBACE9kC,GAAC8/B,CAAAA,IAAAA,EAAAA;QAAKC,MAAO,EAAA,IAAA;QAAKnW,OAAQ,EAAA,IAAA;QAAK9M,MAAO,EAAA,IAAA;AACpC,QAAA,QAAA,gBAAAzc,IAACujB,CAAAA,KAAAA,EAAAA;;8BACC5jB,GAAC6kE,CAAAA,MAAAA,EAAAA;oBAAOC,IAAMA,EAAAA,IAAAA;;8BACd9kE,GAACilE,CAAAA,SAAAA,EAAAA;oBAAUH,IAAMA,EAAAA,IAAAA;;8BACjB9kE,GAACklE,CAAAA,UAAAA,EAAAA;oBAAWJ,IAAMA,EAAAA,IAAAA;;8BAClB9kE,GAACmlE,CAAAA,YAAAA,EAAAA;oBAAaL,IAAMA,EAAAA,IAAAA;;;;;AAI5B,CAAA;;ACfA,MAAMa,mBAAmB,CAAC,EAAC1gE,IAAI,EAAEqgE,UAAU,EAAwB,GAAA;AACjE,IAAA,qBACEjlE,IAACujB,CAAAA,KAAAA,EAAAA;;0BACAvjB,IAAC8hB,CAAAA,IAAAA,EAAAA;gBAAKC,YAAa,EAAA,MAAA;gBAClBzhB,UAAc,EAAA;oBACZiB,IAAM,EAAA,QAAA;oBACNyjD,KAAO,EAAA,QAAA;AACT,iBAAA;;AAEE,kCAAAhlD,IAAA,CAAC8hB,KAAKI,IAAI,EAAA;;AACR,0CAAAviB,GAAA,CAACmiB,KAAKM,GAAG,EAAA;gCAACze,KAAM,EAAA,MAAA;AAAO,gCAAA,QAAA,EAAA,MAAA;;AACvB,0CAAAhE,GAAA,CAACmiB,KAAKM,GAAG,EAAA;gCAACze,KAAM,EAAA,OAAA;AAAQ,gCAAA,QAAA,EAAA,QAAA;;AACxB,0CAAAhE,GAAA,CAACmiB,KAAKM,GAAG,EAAA;gCAACze,KAAM,EAAA,UAAA;AAAW,gCAAA,QAAA,EAAA,WAAA;;AAC3B,0CAAAhE,GAAA,CAACmiB,KAAKM,GAAG,EAAA;gCAACze,KAAM,EAAA,QAAA;AAAS,gCAAA,QAAA,EAAA,UAAA;;AACzB,0CAAAhE,GAAA,CAACmiB,KAAKM,GAAG,EAAA;gCAACze,KAAM,EAAA,MAAA;AAAO,gCAAA,QAAA,EAAA,OAAA;;;;AAEzB,kCAAAhE,GAAA,CAACmiB,KAAKO,KAAK,EAAA;wBAAC1e,KAAM,EAAA,MAAA;wBAAOg6C,EAAG,EAAA,IAAA;AAC1B,wBAAA,QAAA,gBAAAh+C,GAAC0lE,CAAAA,WAAAA,EAAAA;4BAAYzgE,IAAMA,EAAAA,IAAAA;;;;;0BAGvBjF,GAAC8jB,CAAAA,KAAAA,EAAAA;AACD,gBAAA,QAAA,gBAAA9jB,GAAC6P,CAAAA,MAAAA,EAAAA;AAAO9D,oBAAAA,OAAAA,EAAS,IAAMu5D,UAAAA,EAAAA;AAAc,oBAAA,QAAA,EAAA,OAAA;;;;;AAG3C,CAAA;;;AC1BKM,CAAAA,SAAAA,aAAAA,EAAAA;;;;GAAAA,aAAAA,KAAAA,aAAAA,GAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AAML,MAAMC,QAAiB,GAAA;IACrBj+D,EAAI,EAAA,EAAA;IACJiV,IAAM,EAAA;QACJxQ,IAAM,EAAA,EAAA;QACNy4B,KAAO,EAAA,EAAA;AACT,KAAA;AACF,CAAA,CAAA;AAEA,MAAMghC,SAAY,GAAA,IAAA;IAChB,MAAM,CAAChe,IAAMie,EAAAA,OAAAA,CAAQ,GAAGzgE,QAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AACxB,IAAA,MAAM,CAAE0gE,WAAAA,EAAa7B,cAAgB,CAAA,GAAG7+D,QAAeugE,CAAAA,QAAAA,CAAAA,CAAAA;AACvD,IAAA,MAAMxgB,QAAQ9pB,sBAAwB,CAAA,IAAA;QACpC,OAAOusB,IAAAA;AACL,YAAA,KAAA,CAAA;AACE,gBAAA,qBAAO9nD,GAACqlE,CAAAA,YAAAA,EAAAA;AAAaC,oBAAAA,UAAAA,EAAY,IAAMS,OAAAA,CAAAA,CAAAA,CAAAA;;AACzC,YAAA,KAAA,CAAA;AACE,gBAAA,qBAAO/lE,GAACimE,CAAAA,gBAAAA,EAAAA;oBAAgBhhE,IAAM+gE,EAAAA,WAAAA;AAAaV,oBAAAA,UAAAA,EAAY,IAAMS,OAAAA,CAAAA,CAAAA,CAAAA;;AAC/D,YAAA,KAAA,CAAA,CAAA;AACA,YAAA;AACE,gBAAA,qBAAO/lE,GAACkkE,CAAAA,SAAAA,EAAAA;oBAAUC,cAAgBA,EAAAA,cAAAA;AAAgBC,oBAAAA,oBAAAA,EAAsB,IAAI2B,OAAAA,CAAAA,CAAAA,CAAAA;;AAChF,SAAA;KACC,EAAA;AAACje,QAAAA,IAAAA;AAAMke,QAAAA,WAAAA;AAAa7B,QAAAA,cAAAA;AAAgB4B,QAAAA,OAAAA;AAAQ,KAAA,CAAA,CAAA;AAC/C,IAAA,qBACE1lE,IAAC0B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAU,EAAA,eAAA;;0BACbc,IAAC0B,CAAAA,KAAAA,EAAAA;gBAAIxC,SAAU,EAAA,oCAAA;;kCACbS,GAAC6P,CAAAA,MAAAA,EAAAA;wBACCjE,KAAM,EAAA,WAAA;wBACNgB,YAAW,EAAA,iBAAA;AACXb,wBAAAA,OAAAA,EAAS,IAAMg6D,OAAAA,CAAAA,CAAAA,CAAAA;AAChB,wBAAA,QAAA,EAAA,iBAAA;;kCAGD/lE,GAAC6P,CAAAA,MAAAA,EAAAA;wBAAOjD,YAAW,EAAA,aAAA;wBAAchB,KAAM,EAAA,WAAA;AAAa,wBAAA,QAAA,EAAA,aAAA;;;;AAGpDy5C,YAAAA,KAAAA,EAAAA;;;AAGR,CAAA;;AC/CO,MAAM6gB,YAAAA,GAAe,CAAC,EAAEpB,IAAI,EAA2C,GAAA;AAC5E,IAAA,qBAAO9kE,GAACg8B,CAAAA,SAAAA,EAAAA;QAAW,GAAG8oC,IAAAA,CAAKC,aAAa,CAAC,IAAK,CAAA;QAACC,YAAY,EAAA,IAAA;;AAC7D,CAAE,CAAA;AACK,MAAMmB,WAAAA,GAAc,CAAC,EACArB,IAAI,EAG/B,GAAA;AACC,IAAA,qBAAO9kE,GAACg8B,CAAAA,SAAAA,EAAAA;QAAW,GAAG8oC,IAAAA,CAAKC,aAAa,CAAC,eAAgB,CAAA;;AAC3D,CAAE,CAAA;AACK,MAAMqB,YAAAA,GAAe,CAAC,EACAtB,IAAI,EAGhC,GAAA;AACC,IAAA,qBAAO9kE,GAACg8B,CAAAA,SAAAA,EAAAA;QAAW,GAAG8oC,IAAAA,CAAKC,aAAa,CAAC,gBAAiB,CAAA;;AAC5D,CAAE,CAAA;AAGF,MAAMsB,mBAAsB,GAAA,CAAC,EAAEC,UAAU,EAA8B,GAAA;AACrE,IAAA,MAAMxB,OAAOS,OAAoB,CAAA;QAC/BC,aAAec,EAAAA,UAAAA;AACjB,KAAA,CAAA,CAAA;AACA,IAAA,qBACEjmE,IAACq7B,CAAAA,IAAAA,EAAAA;;0BACC17B,GAAC27B,CAAAA,IAAAA,EAAAA;AAAG,gBAAA,QAAA,gBAAA37B,GAACkmE,CAAAA,YAAAA,EAAAA;oBAAapB,IAAMA,EAAAA,IAAAA;;;0BACxB9kE,GAAC27B,CAAAA,IAAAA,EAAAA;AAAG,gBAAA,QAAA,gBAAA37B,GAAComE,CAAAA,YAAAA,EAAAA;oBAAatB,IAAMA,EAAAA,IAAAA;;;0BACxB9kE,GAAC27B,CAAAA,IAAAA,EAAAA;AAAG,gBAAA,QAAA,gBAAA37B,GAACmmE,CAAAA,WAAAA,EAAAA;oBAAYrB,IAAMA,EAAAA,IAAAA;;;;AAHhBwB,KAAAA,EAAAA,UAAAA,CAAW1+D,EAAE,CAAA,CAAA;AAM1B,CAAA;;ACvBA,MAAM2+D,UAAa,GAAA,IAAA;AACjB,IAAA,MAAMvhE,UAAUyB,UAAWm9D,CAAAA,YAAAA,CAAAA,CAAAA;IAE3B,MAAM57C,OAAAA,GAAUnG,QACd,IAAM;AACJ,YAAA;gBACEja,EAAI,EAAA,IAAA;gBACJ6F,MAAQ,EAAA,IAAA;gBACRka,UAAY,EAAA,CAAC9a,IAAeA,GAAAA,IAAAA,CAAKjF,EAAE;AACrC,aAAA;AACA,YAAA;gBACEA,EAAI,EAAA,aAAA;gBACJ6F,MAAQ,EAAA,aAAA;AACRka,gBAAAA,UAAAA,EAAY,CAAC9a,IAAAA,GAAeA,IAAKnK,CAAAA,WAAW,IAAI,EAAA;AAClD,aAAA;AACA,YAAA;gBACEkF,EAAI,EAAA,aAAA;gBACJ6F,MAAQ,EAAA,aAAA;AACRka,gBAAAA,UAAAA,EAAY,CAAC9a,IAAAA,GAAeA,IAAK25D,CAAAA,WAAW,CAACrkE,MAAM;AACrD,aAAA;AACD,SAAA,EACD,EAAE,CAAA,CAAA;AAGJ,IAAA,MAAM2lB,QAAQC,oBAA2B,CAAA;AACvCC,QAAAA,OAAAA;AACAtG,QAAAA,IAAAA,EAAM1c,OAAQyD,CAAAA,KAAK,CAACo7D,KAAK,IAAI,EAAE;QAC/BQ,gBAAkB,EAAA,IAAA;QAClBC,qBAAuB,EAAA,MAAA;AACvBC,QAAAA,wBAAAA,EAA0B,CAAC,EAAExzD,GAAG,EAAE,iBAChC/Q,GAAA,CAACmD,eAAMC,QAAQ,EAAA;wCACbpD,GAAA,CAAC6O,KAAKI,IAAI,EAAA;oBAAClD,OAAS,EAAA,IAAMgI,OAAQywD,CAAAA,IAAI,CAAC,QAAA,CAAA;AAAW,oBAAA,QAAA,EAAA,QAAA;;;QAGtDl8C,kBAAoB,EAAA,IAAA;QAEpBU,iBAAmB,EAAA,CAAC,EAAEjY,GAAG,EAAE,GAAA;YACzB,MAAM01D,OAAAA,GAAU11D,GAAIqC,CAAAA,QAAQ,CAACozD,WAAW,CAACxkE,GAAG,CAAC,CAACoY,OAAAA,iBAC5Cpa,GAACqmE,CAAAA,mBAAAA,EAAAA;oBAAqCC,UAAYlsD,EAAAA,OAAAA;AAAxBA,iBAAAA,EAAAA,OAAAA,CAAQxS,EAAE,CAAA,CAAA,CAAA;AAGtC,YAAA,qBACE5H,GAAC4jB,CAAAA,KAAAA,EAAAA;AACC,gBAAA,QAAA,gBAAAvjB,IAAC68B,CAAAA,KAAAA,EAAAA;;sCACCl9B,GAACo9B,CAAAA,OAAAA,EAAAA;AACC,4BAAA,QAAA,gBAAA/8B,IAACq7B,CAAAA,IAAAA,EAAAA;;kDACC17B,GAACq9B,CAAAA,IAAAA,EAAAA;AAAG,wCAAA,QAAA,EAAA,IAAA;;kDACJr9B,GAACq9B,CAAAA,IAAAA,EAAAA;AAAG,wCAAA,QAAA,EAAA,SAAA;;kDACJr9B,GAACq9B,CAAAA,IAAAA,EAAAA;AAAG,wCAAA,QAAA,EAAA,QAAA;;;;;sCAGRr9B,GAACs9B,CAAAA,OAAAA,EAAAA;AAAOmpC,4BAAAA,QAAAA,EAAAA,OAAAA;;;;;AAIhB,SAAA;QAEA/B,YAAc,EAAA;YAAEC,iBAAmB,EAAA,KAAA;YAAOC,gBAAkB,EAAA,IAAA;AAAK,SAAA;QACjErd,qBAAuB,EAAA,OAAA;QACvByQ,0BAA4B,EAAA,QAAA;QAC5BtQ,sBAAwB,EAAA;YACtB5qC,MAAQ,EAAA,IAAA;YACR9R,IAAM,EAAA,IAAA;AACR,SAAA;QACAitD,2BAA6B,EAAA;YAC3Bz/B,WAAa,EAAA,cAAA;AACf,SAAA;AACF,KAAA,CAAA,CAAA;AAEA,IAAA,qBAAOx4B,GAACsqB,CAAAA,iBAAAA,EAAAA;QAAkBxC,KAAOA,EAAAA,KAAAA;;AAEjC;AACF,CAAA;;AClFA,MAAM4+C,UAAa,GAAA,IAAA;AACjB,IAAA,qBAAO1mE,GAACumE,CAAAA,UAAAA,EAAAA,EAAAA,CAAAA,CAAAA;AACV,CAAA;;ACSO,MAAMI,qBAAqB,CAACtmD,QAAAA,EAAoBumD,SAAQ,EAAE,EAAE3jD,SAAmB,EAAE,GAAA;;AAEtF,IAAA,MAAM4jD,WAAcD,GAAAA,MAAAA,GAAS,GAAMvmD,GAAAA,QAAAA,CAAShU,IAAI,CAAA;AAChD4W,IAAAA,MAAAA,CAAOtc,IAAI,CAACkgE,WAAAA,CAAAA,CAAAA;;IAGZ,IAAIxmD,QAAAA,CAASymD,YAAY,EAAE;AACzB,QAAA,KAAK,MAAMC,WAAAA,IAAe1mD,QAASymD,CAAAA,YAAY,CAAE;AAC/CH,YAAAA,kBAAAA,CAAmBI,aAAaF,WAAa5jD,EAAAA,MAAAA,CAAAA,CAAAA;AAC/C,SAAA;AACF,KAAA;IAEA,OAAOA,MAAAA,CAAAA;AACT,CAAE,CAAA;AAEF;;;;AAIC,IACD,MAAM+jD,aAAgB,GAAA,IAAA;AACpB,IAAA,MAAMhiE,UAAUyB,UAAWm9D,CAAAA,YAAAA,CAAAA,CAAAA;IAC3B,MAAMqD,SAAAA,GAAYjiE,OAAQyD,CAAAA,KAAK,CAACo7D,KAAK,CAAC7hE,GAAG,CAAC,CAAC6K,IAASA,GAAAA,IAAAA,CAAKjF,EAAE,CAAA,CAAA;;;IAG3D,MAAMs/D,aAAAA,GAAgBliE,QAAQyD,KAAK,CAACs7D,SAAS,CAAC72D,MAAM,CAAC,CAACC,GAAekT,EAAAA,QAAAA,GAAAA;QACnE,OAAOlT,GAAAA,CAAI28B,MAAM,CAAC68B,kBAAmBtmD,CAAAA,QAAAA,CAAAA,CAAAA,CAAAA;AACvC,KAAA,EAAG,EAAE,CAAA,CAAA;IAEL,MAAM2H,OAAAA,GAAUnG,QACd,IAAM;AACJ,YAAA;gBACEja,EAAI,EAAA,IAAA;gBACJ6F,MAAQ,EAAA,IAAA;gBACRka,UAAY,EAAA,CAACw/C,MAAmBA,GAAAA,MAAAA,CAAOv/D,EAAE;AAC3C,aAAA;AACA,YAAA;gBACEA,EAAI,EAAA,aAAA;gBACJ6F,MAAQ,EAAA,aAAA;AACRka,gBAAAA,UAAAA,EAAY,CAACw/C,MAAAA,GAAmBA,MAAOzkE,CAAAA,WAAW,IAAI,EAAA;AACxD,aAAA;AACA,YAAA;gBACEkF,EAAI,EAAA,UAAA;gBACJ6F,MAAQ,EAAA,OAAA;gBACRka,UAAY,EAAA,CAACw/C,MAAmBA,GAAAA,MAAAA,CAAOC,QAAQ;gBAC/Cx/C,IAAM,EAAA,CAAC,EAAE7W,GAAG,EAAC,GAAA;AACX,oBAAA,qBAAQ/Q,GAACw8C,CAAAA,WAAAA,EAAAA;wBAAY96B,IAAMulD,EAAAA,SAAAA;wBAAWjjE,KAAO+M,EAAAA,GAAAA,CAAIqC,QAAQ,CAACg0D,QAAQ;AAAEj5C,wBAAAA,QAAAA,EAAU,CAACnqB,KAAAA,GAAU+P,OAAQC,CAAAA,GAAG,CAAChQ,KAAAA,CAAAA;;AACvG,iBAAA;AACF,aAAA;AACA,YAAA;gBACE4D,EAAI,EAAA,gBAAA;gBACJ6F,MAAQ,EAAA,WAAA;gBACRka,UAAY,EAAA,CAACw/C,MAAmBA,GAAAA,MAAAA,CAAOE,cAAc;gBACrDz/C,IAAM,EAAA,CAAC,EAAE7W,GAAG,EAAC,GAAA;AACX,oBAAA,qBAAQ/Q,GAACw8C,CAAAA,WAAAA,EAAAA;wBAAY96B,IAAMwlD,EAAAA,aAAAA;wBAAeljE,KAAO+M,EAAAA,GAAAA,CAAIqC,QAAQ,CAACi0D,cAAc;AAAEl5C,wBAAAA,QAAAA,EAAU,CAACnqB,KAAAA,GAAU+P,OAAQC,CAAAA,GAAG,CAAChQ,KAAAA,CAAAA;;AACjH,iBAAA;AACF,aAAA;AACD,SAAA,EACD,EAAE,CAAA,CAAA;AAGJ,IAAA,MAAM8jB,QAAQC,oBAA6B,CAAA;AACzCC,QAAAA,OAAAA;AACAtG,QAAAA,IAAAA,EAAM1c,OAAQyD,CAAAA,KAAK,CAACq7D,QAAQ,IAAI,EAAE;QAClCO,gBAAkB,EAAA,IAAA;QAClBC,qBAAuB,EAAA,MAAA;AACvBC,QAAAA,wBAAAA,EAA0B,CAAC,EAAExzD,GAAG,EAAE,iBAChC/Q,GAAA,CAACmD,eAAMC,QAAQ,EAAA;wCACbpD,GAAA,CAAC6O,KAAKI,IAAI,EAAA;oBAAClD,OAAS,EAAA,IAAMgI,OAAQywD,CAAAA,IAAI,CAAC,QAAA,CAAA;AAAW,oBAAA,QAAA,EAAA,QAAA;;;QAGtDl8C,kBAAoB,EAAA,IAAA;QACpBi/B,qBAAuB,EAAA,OAAA;QACvByQ,0BAA4B,EAAA,QAAA;QAC5BtQ,sBAAwB,EAAA;YACtB5qC,MAAQ,EAAA,IAAA;YACR9R,IAAM,EAAA,IAAA;AACR,SAAA;AAEF,KAAA,CAAA,CAAA;AAEA,IAAA,qBACEhL,GAAC+B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAU,EAAA,KAAA;AACb,QAAA,QAAA,gBAAAS,GAACsqB,CAAAA,iBAAAA,EAAAA;YAAmBxC,KAAOA,EAAAA,KAAAA;;;AAGjC,CAAA;;ACjGA,MAAMw/C,aAAgB,GAAA,IAAA;AACpB,IAAA,qBACEtnE,GAACgnE,CAAAA,aAAAA,EAAAA,EAAAA,CAAAA,CAAAA;AAEL,CAAA;;ACUA,MAAMO,YAAY,CAAC7lD,IAAAA,GAAAA;IACjB,OAAO;AACLrV,QAAAA,IAAAA,EAAMqV,KAAKrV,IAAI;QACf3J,WAAagf,EAAAA,IAAAA,CAAKhf,WAAW,IAAI,EAAA;AACjC8kE,QAAAA,OAAAA,EAAS9lD,MAAMolD,YAAc9kE,EAAAA,GAAAA,CAAI,CAACylE,KAAUF,GAAAA,SAAAA,CAAUE,WAAW,EAAE;AACrE,KAAA,CAAA;AACF,CAAA,CAAA;AAEA,MAAM7O,cAAiB,GAAA,IAAA;AACrB,IAAA,MAAM5zD,UAAUyB,UAAWm9D,CAAAA,YAAAA,CAAAA,CAAAA;IAE3B,MAAM57C,OAAAA,GAAUnG,QACd,IAAM;AACJ,YAAA;gBACExV,IAAM,EAAA,MAAA;gBACNoB,MAAQ,EAAA,MAAA;gBACRka,UAAY,EAAA,CAACtH,QAAuBA,GAAAA,QAAAA,CAAShU,IAAI;AACnD,aAAA;AACA,YAAA;gBACEzE,EAAI,EAAA,aAAA;gBACJ6F,MAAQ,EAAA,aAAA;AACRka,gBAAAA,UAAAA,EAAY,CAACtH,QAAAA,GAAuBA,QAAS3d,CAAAA,WAAW,IAAI,EAAA;AAC9D,aAAA;AACD,SAAA,EACD,EAAE,CAAA,CAAA;AAGJ,IAAA,MAAMgf,IAAOG,GAAAA,OAAAA,CACX,IAAM7c,OAAAA,CAAQyD,KAAK,CAACs7D,SAAS,CAAC/hE,GAAG,CAAC,CAACqe,QAAAA,GAAaknD,UAAUlnD,QAC1D,CAAA,CAAA,EAAA;QAACrb,OAAQyD,CAAAA,KAAK,CAACs7D,SAAS;AAAC,KAAA,CAAA,CAAA;AAG3B,IAAA,MAAMj8C,QAAQC,oBAAwC,CAAA;AACpDC,QAAAA,OAAAA;AACAtG,QAAAA,IAAAA;QACA2iD,gBAAkB,EAAA,IAAA;QAClBC,qBAAuB,EAAA,MAAA;QACvBoD,eAAiB,EAAA,IAAA;QACjBC,eAAiB,EAAA,IAAA;QACjBx/C,oBAAsB,EAAA,KAAA;AACxB,KAAA,CAAA,CAAA;AAEA,IAAA,qBACEnoB,GAACsqB,CAAAA,iBAAAA,EAAAA;QACCxC,KAAOA,EAAAA,KAAAA;;AAGb,CAAA;;AC7DA,MAAMqxC,cAAiB,GAAA,IAAA;AACrB,IAAA,qBACEn5D,GAAC44D,CAAAA,cAAAA,EAAAA,EAAAA,CAAAA,CAAAA;AAEL,CAAA;;ACMA,MAAMgP,SAAY,GAAA,CAAC,EAAE/O,KAAK,EAAkB,GAAA;AAC1C,IAAA,qBACEx4D,IAAC0B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAU,EAAA,QAAA;;0BACbS,GAAC8C,CAAAA,IAAAA,EAAAA;AAAG,gBAAA,QAAA,EAAA,YAAA;;0BACJ9C,GAACgkE,CAAAA,aAAAA,EAAAA;gBAAcnL,KAAOA,EAAAA,KAAAA;AACpB,gBAAA,QAAA,gBAAAx4D,IAAC8hB,CAAAA,IAAAA,EAAAA;oBAAKi9B,WAAY,EAAA,UAAA;oBAAWh9B,YAAa,EAAA,OAAA;;AACxC,sCAAA/hB,IAAA,CAAC8hB,KAAKI,IAAI,EAAA;;AACR,8CAAAviB,GAAA,CAACmiB,KAAKM,GAAG,EAAA;oCAACze,KAAM,EAAA,OAAA;AAAQ,oCAAA,QAAA,EAAA,OAAA;;AACxB,8CAAAhE,GAAA,CAACmiB,KAAKM,GAAG,EAAA;oCAACze,KAAM,EAAA,QAAA;AAAS,oCAAA,QAAA,EAAA,QAAA;;AACzB,8CAAAhE,GAAA,CAACmiB,KAAKM,GAAG,EAAA;oCAACze,KAAM,EAAA,WAAA;AAAY,oCAAA,QAAA,EAAA,WAAA;;AAC5B,8CAAAhE,GAAA,CAACmiB,KAAKM,GAAG,EAAA;oCAACze,KAAM,EAAA,UAAA;AAAW,oCAAA,QAAA,EAAA,UAAA;;AAC3B,8CAAAhE,GAAA,CAACmiB,KAAKM,GAAG,EAAA;oCAACze,KAAM,EAAA,OAAA;AAAQ,oCAAA,QAAA,EAAA,OAAA;;;;AAG1B,sCAAAhE,GAAA,CAACmiB,KAAKO,KAAK,EAAA;4BAAC1e,KAAM,EAAA,OAAA;4BAAQg6C,EAAG,EAAA,IAAA;AAC3B,4BAAA,QAAA,gBAAAh+C,GAAC8lE,CAAAA,SAAAA,EAAAA,EAAAA,CAAAA;;AAEH,sCAAA9lE,GAAA,CAACmiB,KAAKO,KAAK,EAAA;4BAAC1e,KAAM,EAAA,WAAA;4BAAYg6C,EAAG,EAAA,IAAA;AAC/B,4BAAA,QAAA,gBAAAh+C,GAACm5D,CAAAA,cAAAA,EAAAA,EAAAA,CAAAA;;AAEH,sCAAAn5D,GAAA,CAACmiB,KAAKO,KAAK,EAAA;4BAAC1e,KAAM,EAAA,UAAA;4BAAWg6C,EAAG,EAAA,IAAA;AAC9B,4BAAA,QAAA,gBAAAh+C,GAACsnE,CAAAA,aAAAA,EAAAA,EAAAA,CAAAA;;AAEH,sCAAAtnE,GAAA,CAACmiB,KAAKO,KAAK,EAAA;4BAAC1e,KAAM,EAAA,OAAA;4BAAQg6C,EAAG,EAAA,IAAA;AAC3B,4BAAA,QAAA,gBAAAh+C,GAAC0mE,CAAAA,UAAAA,EAAAA,EAAAA,CAAAA;;;;;;;AAMb,CAAA;;ACxCO,MAAMmB,yBAAyB,CAACC,QAAAA,GAAAA;;IAErC,OAAO;AACLpE,QAAAA,KAAAA,EAAOoE,SAASpE,KAAK;QACrB3hD,MAAQ+lD,EAAAA,QAAAA,CAASjP,KAAK,CAAC92C,MAAM;QAC7BgiD,SAAW+D,EAAAA,QAAAA,CAASjP,KAAK,CAACkL,SAAS;QACnCF,KAAOiE,EAAAA,QAAAA,CAASjP,KAAK,CAACgL,KAAK;QAC3BC,QAAUgE,EAAAA,QAAAA,CAASjP,KAAK,CAACiL,QAAQ;AACnC,KAAA,CAAA;AACF,CAAE;;ACAIiE,MAAAA,SAAAA,GAAY,CAAC,EAAE73D,WAAW,EAAEC,WAAW,EAAE0oD,KAAK,EAAS,GAAA;AAC3D,IAAA,qBACE74D,GAACiQ,CAAAA,aAAAA,EAAAA;AACOC,QAAAA,WAAAA;AAAaC,QAAAA,WAAAA;QACnBD,WAAaA,EAAAA,WAAAA;QACbG,UAAY,EAAA;YACV7P,KAAO,EAAA,wBAAA;YACPmQ,OAAS,EAAA,mBAAA;YACTjQ,GAAK,EAAA,wBAAA;AACP,SAAA;AAEA,QAAA,QAAA,gBAAAV,GAAC4nE,CAAAA,SAAAA,EAAAA;YAAU/O,KAAOA,EAAAA,KAAAA;;;AAGxB;;MCjBamP,gCAAmC,GAAA,UAAA;AAE9C,IAAA,MAAM/W,WAAW,CAAC,OAAO,EAAEY,iBAAAA,CAAkB,CAAC,CAAC,CAAA;AAC/C,IAAA,MAAMX,QAAW,GAAA,WAAA,CAAA;AACjB,IAAA,IAAIxvC,OAA4B,EAAC,CAAA;IAEjC,IAAI;QACF,MAAMumD,QAAAA,GAAW9W,GAAGC,YAAY,CAACtgD,KAAK0I,IAAI,CAACy3C,UAAUC,QAAW,CAAA,EAAA,MAAA,CAAA,CAAA;QAC/DxvC,IAAO,GAAA,MAAMwmD,IAAKttC,CAAAA,KAAK,CAACqtC,QAAAA,CAAAA,CAAAA;AAC3B,KAAA,CAAE,OAAO11C,GAAK,EAAA;QACZ,MAAM,IAAI7rB,MAAM,CAAC,eAAe,EAAEuqD,QAAS,CAAA,EAAEC,SAAS,CAAC,CAAA,CAAA;AACzD,KAAA;IACA,OAAO;QACLthD,KAAO,EAAA;AACL,YAAA,GAAI,MAAM+hD,+BAAiC,EAAA;;AAE3CkH,YAAAA,KAAAA,EAAOgP,sBAAuBnmD,CAAAA,IAAI,CAAC,OAAA,CAAQ,CAAC,WAAY,CAAA,CAAA;AAC1D,SAAA;AACF,KAAA,CAAA;AACF;;ACtBA,MAAMymD,aAA0B,GAAA,IAAA;IAC9B,qBACE9nE,IAAA,CAAC8C,eAAMC,QAAQ,EAAA;;0BACb/C,IAACmQ,CAAAA,IAAAA,EAAAA;;kCACCxQ,GAACQ,CAAAA,OAAAA,EAAAA;AAAM,wBAAA,QAAA,EAAA,gBAAA;;kCACPR,GAACyQ,CAAAA,MAAAA,EAAAA;wBACCC,QAAS,EAAA,UAAA;wBACTC,OAAQ,EAAA,4BAAA;AACJ,qBAAA,EAAA,qBAAA,CAAA;;;0BAGRtQ,IAAC0B,CAAAA,KAAAA,EAAAA;gBAAIxC,SAAU,EAAA,4DAAA;;kCACbS,GAAC8C,CAAAA,IAAAA,EAAAA;wBAAGvD,SAAU,EAAA,UAAA;AAAW,wBAAA,QAAA,EAAA,gBAAA;;kCACzBS,GAACC,CAAAA,MAAAA,EAAAA;AAAK,wBAAA,QAAA,EAAA,wDAAA;;kCACND,GAACE,CAAAA,IAAAA,EAAAA;wBAAKV,IAAK,EAAA,GAAA;wBAAID,SAAU,EAAA,wBAAA;AAAyB,wBAAA,QAAA,EAAA,6CAAA;;;;;;AAM1D;;ACfO,MAAM6oE,aAAa,CAACzmD,MAAAA,GAAAA;IACzB,OAAOA,MAAAA,CAAO3f,GAAG,CAAC,CAACqR,KAAAA,GAAAA;AACjB,QAAA,OAAO,CAAC,EAAEA,KAAAA,CAAM,CAAC,EAAEA,KAAAA,CAAM,mBAAmB,CAAC,CAAA;AAC/C,KAAA,CAAA,CAAA;AACF,CAAE;;ACHF,MAAMg1D,YAAe,GAAA;IACnB/tC,KAAO,EAAA,iEAAA;AACT,CAAA,CAAA;AAEA,MAAMguC,YAAe,GAAA,CAAC,EAAEtgD,OAAO,EAAsB,GAAA;AACnD,IAAA,MAAM,CAACf,UAAAA,EAAYD,aAAc,CAAA,GAAG1hB,QAA8B,CAAA;QAChEq5B,SAAW,EAAA,CAAA;QACX5J,QAAU,EAAA,EAAA;AACZ,KAAA,CAAA,CAAA;AAEA,IAAA,MAAMwzC,UAAU1mD,OAAQ,CAAA,IAAA;AACtB,QAAA,MAAM0mD,UAAkC,EAAC,CAAA;QACzCvgD,OAAQ5mB,CAAAA,OAAO,CAAC,CAACmlD,MAAAA,GAAAA;AACfgiB,YAAAA,OAAO,CAAChiB,MAAOlzC,CAAAA,KAAK,CAAC,GAAGkzC,OAAOlzC,KAAK,CAAA;AACtC,SAAA,CAAA,CAAA;QACA,OAAOk1D,OAAAA,CAAAA;KACN,EAAA;AAACvgD,QAAAA,OAAAA;AAAQ,KAAA,CAAA,CAAA;AAEZ,IAAA,MAAMwgD,WAAc,GAAA;AAClBluC,QAAAA,KAAAA,EAAO,CAAC;;;;;;;;AAQV,EAAA,EAAE8tC,WAAWnnE,MAAOC,CAAAA,IAAI,CAACqnE,OAAU/uD,CAAAA,CAAAA,CAAAA,IAAI,CAAC,IAAM,CAAA,CAAA;CAC/C,CAAC;AACA,KAAA,CAAA;IAEA,MAAM,EAAEkI,IAAI,EAAEyF,SAAS,EAAEE,UAAU,EAAED,OAAO,EAAE,GAAGqhD,0BAA2B,CAAA;QAC1Ez9D,IAAM,EAAA,EAAA;QACNq9D,YAAcA,EAAAA,YAAAA;QACdK,mBAAqBF,EAAAA,WAAAA;QACrBD,OAASA,EAAAA,OAAAA;AACX,KAAA,CAAA,CAAA;AACA,IAAA,MAAMhhD,OAAO1F,OAAQ,CAAA,IAAA;QACnB,OAAO;AACL,YAAA;gBACExO,KAAO,EAAA,MAAA;gBACPqU,WAAa,EAAA,cAAA;gBACbja,MAAQ,EAAA,SAAA;AACV,aAAA;eACGua,OAAQhmB,CAAAA,GAAG,CAAC,CAACylB,SAAAA,GAAAA;gBACd,OAAO;AACLpU,oBAAAA,KAAAA,EAAOoU,UAAUpU,KAAK;AACtBqU,oBAAAA,WAAAA,EAAaD,UAAUpU,KAAK;AAC5B5F,oBAAAA,MAAAA,EAAQga,UAAUpb,IAAI;AACxB,iBAAA,CAAA;AACF,aAAA,CAAA;AACD,SAAA,CAAA;KACA,EAAA;AAAC2b,QAAAA,OAAAA;AAAQ,KAAA,CAAA,CAAA;AAEZ,IAAA,MAAMF,QAAQC,oBAAqB,CAAA;QACjCC,OAAST,EAAAA,IAAAA;QACT7F,IAAMA,EAAAA,IAAAA,EAAMinD,WAAW,EAAE;QACzB1gD,aAAe,EAAA,IAAA;QACfC,gBAAkB,EAAA,IAAA;QAClBC,oBAAsB,EAAA,KAAA;QACtBC,kBAAoBpB,EAAAA,aAAAA;AACpByB,QAAAA,QAAAA,EAAU/G,MAAMmF,IAAQ,IAAA,CAAA;QACxB8B,gBAAkB,EAAA,KAAA;QAClBY,UAAY,EAAA,UAAA;QACZ9gB,KAAO,EAAA;AACL0e,YAAAA,SAAAA;AACAF,YAAAA,UAAAA;YACAiC,gBAAkB7B,EAAAA,UAAAA;YAClB8B,eAAiB/B,EAAAA,OAAAA;YACjBkC,gBAAkB,EAAA;gBAChB,gBAAkB,EAAA,KAAA;AACpB,aAAA;AACF,SAAA;QACAI,yBAA2B,EAAA;YACzB1M,KAAO,EAAA;gBACLC,eAAiB,EAAA,8BAAA;gBACjBrR,KAAO,EAAA,8BAAA;gBACP+d,SAAW,EAAA,QAAA;gBACXC,OAAS,EAAA,2BAAA;gBACTC,UAAY,EAAA,MAAA;gBACZC,QAAU,EAAA,6BAAA;gBACVC,aAAe,EAAA,WAAA;AACjB,aAAA;AACF,SAAA;QACAI,iBAAmB,EAAA;YACjBnN,KAAO,EAAA;gBACLC,eAAiB,EAAA,6BAAA;AACnB,aAAA;AACF,SAAA;AACF,KAAA,CAAA,CAAA;AAEA,IAAA,IAAIkK,SAAW,EAAA;AACb,QAAA,qBACE9mB,IAAC0B,CAAAA,KAAAA,EAAAA;YAAIxC,SAAU,EAAA,2CAAA;;8BACbS,GAAC+vB,CAAAA,MAAAA,EAAAA;oBAAOhgB,OAAQ,EAAA,MAAA;;AAAU,gBAAA,GAAA;;;AAGhC,KAAA;AAEA,IAAA,IAAIqX,OAAS,EAAA;AACX,QAAA,qBACEpnB,GAAC+B,CAAAA,KAAAA,EAAAA;YAAIxC,SAAU,EAAA,iDAAA;AACb,YAAA,QAAA,gBAAAS,GAACkP,CAAAA,IAAAA,EAAAA;gBAAKlE,IAAM,EAAA,IAAA;AAAM,gBAAA,QAAA,EAAA,4BAAA;;;AAGxB,KAAA;AAEA,IAAA,qBACEhL,GAAC+B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAU,EAAA,wCAAA;AACb,QAAA,QAAA,gBAAAS,GAAC+B,CAAAA,KAAAA,EAAAA;YAAIxC,SAAU,EAAA,4CAAA;AACb,YAAA,QAAA,gBAAAS,GAACsqB,CAAAA,iBAAAA,EAAAA;gBAAkBxC,KAAOA,EAAAA,KAAAA;;;;AAIlC,CAAA;;ACnHA,MAAMP,IAAO,GAAA;AACX,IAAA;QACElU,KAAO,EAAA,QAAA;QACPqU,WAAa,EAAA,QAAA;QACbja,MAAQ,EAAA,IAAA;AACV,KAAA;AACA,IAAA;QACE4F,KAAO,EAAA,WAAA;QACPqU,WAAa,EAAA,WAAA;QACbja,MAAQ,EAAA,WAAA;AACV,KAAA;AACA,IAAA;QACE4F,KAAO,EAAA,YAAA;QACPqU,WAAa,EAAA,YAAA;QACbja,MAAQ,EAAA,SAAA;AACV,KAAA;AACA,IAAA;QACE4F,KAAO,EAAA,kBAAA;QACPqU,WAAa,EAAA,kBAAA;QACbja,MAAQ,EAAA,cAAA;AACV,KAAA;AACA,IAAA;QACE4F,KAAO,EAAA,OAAA;QACPqU,WAAa,EAAA,OAAA;QACbja,MAAQ,EAAA,OAAA;AACV,KAAA;AACD,CAAA,CAAA;AAED,MAAMm7D,gBAAmB,GAAA,IAAA;IACvB,MAAM,EAAElnD,IAAI,EAAEyF,SAAS,EAAEE,UAAU,EAAED,OAAO,EAAE,GAAGyhD,sBAAAA,EAAAA,CAAAA;AAEjD,IAAA,MAAMhkB,OAAOhjC,OAAQ,CAAA,IAAA;AACnB,QAAA,IAAIH,IAAM,EAAA;AACR,YAAA,OAAOA,IAAKonD,CAAAA,eAAe,CAAC9mE,GAAG,CAAC,CAAC+O,GAAAA,GAAAA;AAC/B,gBAAA,MAAMg4D,aAAgBC,GAAAA,QAAAA,CACpBj4D,GAAIqqB,CAAAA,SAAS,CAACluB,MAAM,CAClB,CAACC,GAAa87D,EAAAA,GAAAA,GAA4B97D,GAAM87D,GAAAA,GAAAA,CAAIC,QAAQ,EAC5D,CAAA,CAAA,CAAA,CAAA;gBAIJ,OAAO;AACLC,oBAAAA,MAAAA,EAAQp4D,IAAInJ,EAAE;AACdwhE,oBAAAA,SAAAA,EAAWr4D,IAAIq4D,SAAS;AACxBC,oBAAAA,UAAAA,EAAYt4D,IAAIs4D,UAAU;AAC1BC,oBAAAA,gBAAAA,EAAkBv4D,IAAIu4D,gBAAgB;AACtC7gE,oBAAAA,KAAAA,EAAOsI,IAAItI,KAAK;oBAChB8gE,QAAUR,EAAAA,aAAAA;AACZ,iBAAA,CAAA;AACF,aAAA,CAAA,CAAA;AACF,SAAA;AACA,QAAA,OAAO,EAAE,CAAA;KACR,EAAA;AAACrnD,QAAAA,IAAAA;AAAK,KAAA,CAAA,CAAA;AAET,IAAA,MAAMoG,QAAQC,oBAAqB,CAAA;QACjCC,OAAST,EAAAA,IAAAA;QACT7F,IAAMmjC,EAAAA,IAAAA;QACN58B,aAAe,EAAA,IAAA;QACfC,gBAAkB,EAAA,KAAA;QAClBC,oBAAsB,EAAA,KAAA;AACtBM,QAAAA,QAAAA,EAAUo8B,KAAK1iD,MAAM;QACrBwmB,gBAAkB,EAAA,KAAA;QAClBY,UAAY,EAAA,UAAA;QACZ9gB,KAAO,EAAA;AACL0e,YAAAA,SAAAA;YACA+B,gBAAkB7B,EAAAA,UAAAA;YAClB8B,eAAiB/B,EAAAA,OAAAA;YACjBkC,gBAAkB,EAAA;gBAChB,gBAAkB,EAAA,KAAA;AACpB,aAAA;AACF,SAAA;QACAI,yBAA2B,EAAA;YACzB1M,KAAO,EAAA;gBACLC,eAAiB,EAAA,kCAAA;gBACjBrR,KAAO,EAAA,8BAAA;gBACP+d,SAAW,EAAA,QAAA;gBACXC,OAAS,EAAA,2BAAA;gBACTC,UAAY,EAAA,MAAA;gBACZC,QAAU,EAAA,6BAAA;gBACVC,aAAe,EAAA,WAAA;AACjB,aAAA;AACF,SAAA;QACAI,iBAAmB,EAAA;YACjBnN,KAAO,EAAA;gBACLC,eAAiB,EAAA,6BAAA;AACnB,aAAA;AACF,SAAA;AACF,KAAA,CAAA,CAAA;AAEA,IAAA,IAAIkK,SAAW,EAAA;AACb,QAAA,qBACE9mB,IAAC0B,CAAAA,KAAAA,EAAAA;YAAIxC,SAAU,EAAA,2CAAA;;8BACbS,GAAC+vB,CAAAA,MAAAA,EAAAA;oBAAOhgB,OAAQ,EAAA,MAAA;;AAAU,gBAAA,GAAA;;;AAGhC,KAAA;AAEA,IAAA,IAAIqX,OAAS,EAAA;AACX,QAAA,qBACEpnB,GAAC+B,CAAAA,KAAAA,EAAAA;YAAIxC,SAAU,EAAA,iDAAA;AACb,YAAA,QAAA,gBAAAS,GAACkP,CAAAA,IAAAA,EAAAA;gBAAKlE,IAAM,EAAA,IAAA;AAAM,gBAAA,QAAA,EAAA,4BAAA;;;AAGxB,KAAA;AAEA,IAAA,qBACEhL,GAAC+B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAU,EAAA,wCAAA;AACb,QAAA,QAAA,gBAAAS,GAAC+B,CAAAA,KAAAA,EAAAA;YAAIxC,SAAU,EAAA,4CAAA;AACb,YAAA,QAAA,gBAAAS,GAACsqB,CAAAA,iBAAAA,EAAAA;gBAAkBxC,KAAOA,EAAAA,KAAAA;;;;AAIlC,CAAA;;AClHA,MAAM0hD,eAAkB,GAAA,CAAE,EAAE53D,MAAM,EAAiC,GAAA;AAEjE,IAAA,IAAI,CAACA,MAAQ,EAAA;AACX,QAAA,qBAAS5R,GAACozD,CAAAA,YAAAA,EAAAA;YAAa1pD,OAAQ,EAAA,iDAAA;;AACjC,KAAA;AAEA,IAAA,qBACErJ,IAAC0B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAU,EAAA,wDAAA;;0BACbS,GAACsoE,CAAAA,YAAAA,EAAAA;gBAAatgD,OAAUpW,EAAAA,MAAAA,CAAO63D,YAAY,CAACzhD,OAAO;;0BACnDhoB,GAAC4oE,CAAAA,gBAAAA,EAAAA,EAAAA,CAAAA;;;AAGP,CAAA;;ACfMc,MAAAA,cAAAA,GAAiB,CAAC,EACtBC,gBAAgB,EAChBz5D,WAAW,EACXC,WAAW,EACgB,GAAA;AAC3B,IAAA,qBACEnQ,GAACiQ,CAAAA,aAAAA,EAAAA;QACCE,WAAaA,EAAAA,WAAAA;QACbD,WAAaA,EAAAA,WAAAA;QACbG,UAAY,EAAA;YACV7P,KAAO,EAAA,sBAAA;YACPmQ,OAAS,EAAA,iBAAA;YACTjQ,GAAK,EAAA,sBAAA;AACP,SAAA;AAEA,QAAA,QAAA,gBAAAV,GAACwpE,CAAAA,eAAAA,EAAAA;YAAgB53D,MAAQ+3D,EAAAA,gBAAAA;;;AAG/B;;MChBaC,gCAET,GAAA,UAAA;IACF,IAAI;QACF,MAAMD,gBAAAA,GAAqC,MAAMjY,aAAAA,CAAc5S,GAAG,CAChE,CAAC,OAAO,EAAE+S,iBAAkB,CAAA,gBAAgB,CAAC,CAAA,CAAA;QAG/C,OAAO;YACLjiD,KAAO,EAAA;AACL,gBAAA,GAAI,MAAM+hD,+BAAiC,EAAA;gBAC3CgY,gBAAkBA,EAAAA,gBAAAA;AACpB,aAAA;AACF,SAAA,CAAA;AACF,KAAA,CAAE,OAAOp3C,GAAK,EAAA;AACZxe,QAAAA,OAAAA,CAAQ4c,KAAK,CAAC4B,GAAAA,CAAAA,CAAAA;QACd,OAAO;YACL3iB,KAAO,EAAA;AACL,gBAAA,GAAI,MAAM+hD,+BAAiC,EAAA;gBAC3CgY,gBAAkBxjE,EAAAA,SAAAA;AACpB,aAAA;AACF,SAAA,CAAA;AACF,KAAA;AACF;;ACzBM0jE,MAAAA,cAAAA,GAAiB,CAAC,EACtB35D,WAAW,EACXC,WAAW,EACX25D,cAAc,EACK,GAAA;AACnB,IAAA,qBACE9pE,GAACiQ,CAAAA,aAAAA,EAAAA;AACOC,QAAAA,WAAAA;AAAaC,QAAAA,WAAAA;QACnBE,UAAY,EAAA;YACV7P,KAAO,EAAA,qBAAA;YACPmQ,OAAS,EAAA,gBAAA;YACTjQ,GAAK,EAAA,qBAAA;AACP,SAAA;AAEA,QAAA,QAAA,gBAAAV,GAAC+wD,CAAAA,eAAAA,EAAAA,EAAAA,CAAAA;;AAGP;;ACfO,MAAMgZ,mCAET,OAAO7T,QAAAA,GAAAA;IACT,MAAM4T,cAAAA,GAAyC,MAAMpY,aAAAA,CAAc5S,GAAG,CACpE,CAAC,OAAO,EAAE+S,iBAAkB,CAAA,gBAAgB,CAAC,CAAA,CAAA;IAG/C,OAAO;QACLjiD,KAAO,EAAA;AACL,YAAA,GAAI,MAAM+hD,+BAAiC,EAAA;AAC3CmY,YAAAA,cAAAA;AACF,SAAA;AACF,KAAA,CAAA;AACF;;ACfA,MAAME,eAAe,CAAC,EACpB95D,WAAW,EACXC,WAAW,EACQ,GAAA;AACnB,IAAA,qBACEnQ,GAACiQ,CAAAA,aAAAA,EAAAA;AACOC,QAAAA,WAAAA;AAAaC,QAAAA,WAAAA;QACnBE,UAAY,EAAA;YACV7P,KAAO,EAAA,qBAAA;YACPmQ,OAAS,EAAA,WAAA;YACTjQ,GAAK,EAAA,qBAAA;AACP,SAAA;AAEA,QAAA,QAAA,gBAAAV,GAAC+B,CAAAA,KAAAA,EAAAA;YAAIxC,SAAU,EAAA,YAAA;AACb,YAAA,QAAA,gBAAAS,GAACg5B,CAAAA,QAAAA,EAAAA,EAAAA,CAAAA;;;AAIT;;MCnBaixC,8BAET,GAAA,UAAA;IACF,IAAI;QACF,OAAO;YACLr6D,KAAO,EAAA;AACL,gBAAA,GAAI,MAAM+hD,+BAAiC,EAAA;AAC7C,aAAA;AACF,SAAA,CAAA;AACF,KAAA,CAAE,OAAOp/B,GAAK,EAAA;AACZxe,QAAAA,OAAAA,CAAQ4c,KAAK,CAAC4B,GAAAA,CAAAA,CAAAA;QACd,OAAO;YACL3iB,KAAO,EAAA;gBACLM,WAAa,EAAA;oBACXX,GAAK,EAAA;AACH3M,wBAAAA,KAAAA,EAAO,EAAE;AACX,qBAAA;AACA4M,oBAAAA,UAAAA,EAAY,EAAC;AACf,iBAAA;AACAW,gBAAAA,WAAAA,EAAa,EAAC;gBACdE,UAAY,EAAA;oBACV7P,KAAO,EAAA,qBAAA;oBACPmQ,OAAS,EAAA,WAAA;oBACTjQ,GAAK,EAAA,qBAAA;AACP,iBAAA;AACF,aAAA;AACF,SAAA,CAAA;AACF,KAAA;AACF;;AChBA,MAAMwpE,cAAiB,GAAA,CAAC,EACtB3B,OAAO,EACP7mD,IAAI,EACJ2F,UAAU,EACVD,OAAO,EACP+iD,YAAY,EACZC,sBAAsB,EACF,GAAA;AACpB,IAAA,MAAM7iD,OAAO1F,OAAQ,CAAA,IAAA;QACnB,OAAO;eACDuoD,sBACA,GAAA;AACE,gBAAA;oBACE1iD,WAAa,EAAA,MAAA;oBACbja,MAAQ86D,EAAAA,OAAAA,CAAQtrC,MAAM,CAACzxB,KAAK;AAC9B,iBAAA;AACD,aAAA,GACD,EAAE;AAEH+8D,YAAAA,GAAAA,OAAAA,CAAQ8B,QAAQ,CAACroE,GAAG,CAAC,CAACylB,SAAWpP,EAAAA,GAAAA,GAAAA;gBAClC,OAAO;oBACLqP,WAAa,EAAA,CAAC,GAAG,EAAE6gD,OAAQ8B,CAAAA,QAAQ,CAAChyD,GAAI,CAAA,CAACzQ,EAAE,CAAC,CAAC;AAC7C6F,oBAAAA,MAAAA,EAAQga,UAAUjc,KAAK;AACzB,iBAAA,CAAA;AACF,aAAA,CAAA;AACD,SAAA,CAAA;AACH,KAAA,EAAG,EAAE,CAAA,CAAA;AAEL,IAAA,MAAMsc,QAAQC,oBAAqB,CAAA;QACjCC,OAAST,EAAAA,IAAAA;QACT7F,IAAMA,EAAAA,IAAAA;QACNuG,aAAe,EAAA,KAAA;QACfC,gBAAkB,EAAA,KAAA;QAClBC,oBAAsB,EAAA,KAAA;AACtBM,QAAAA,QAAAA,EAAU/G,KAAKvf,MAAM;QACrBwmB,gBAAkB,EAAA,KAAA;QAClBD,KAAOzC,EAAAA,UAAAA;QACP6C,kBAAoB,EAAA,IAAA;QACpBrgB,KAAO,EAAA;YACL0e,SAAWE,EAAAA,UAAAA;YACX6B,gBAAkB7B,EAAAA,UAAAA;YAClB8B,eAAiB/B,EAAAA,OAAAA;YACjBkC,gBAAkB,EAAA;gBAChB,gBAAkB,EAAA,KAAA;AACpB,aAAA;AACF,SAAA;QACAC,UAAY,EAAA,UAAA;QACZG,yBAA2B,EAAA;YACzB1M,KAAO,EAAA;gBACLC,eAAiB,EAAA,8BAAA;gBACjBrR,KAAO,EAAA,8BAAA;gBACP+d,SAAW,EAAA,QAAA;gBACXC,OAAS,EAAA,2BAAA;gBACTC,UAAY,EAAA,GAAA;gBACZC,QAAU,EAAA,6BAAA;gBACVC,aAAe,EAAA,WAAA;AACjB,aAAA;AACF,SAAA;;;;;;;;QAQAI,iBAAmB,EAAA;YACjBnN,KAAO,EAAA;gBACLC,eAAiB,EAAA,6BAAA;AACnB,aAAA;AACF,SAAA;QACAqtD,uBAAyB,EAAA,IAAA;AACvB,YAAA,qBACEtqE,GAAC+B,CAAAA,KAAAA,EAAAA;gBAAIxC,SAAU,EAAA,6DAAA;AACb,gBAAA,QAAA,gBAAAS,GAACkP,CAAAA,IAAAA,EAAAA;AAAMi7D,oBAAAA,QAAAA,EAAAA,YAAAA;;;AAGb,SAAA;AACF,KAAA,CAAA,CAAA;AAEA,IAAA,qBACEnqE,GAAC+B,CAAAA,KAAAA,EAAAA;QAAIxC,SAAU,EAAA,0CAAA;AACb,QAAA,QAAA,gBAAAS,GAACsqB,CAAAA,iBAAAA,EAAAA;YAAkBxC,KAAOA,EAAAA,KAAAA;;;AAGhC,CAAA;;AC7FA,MAAMyiD,QAAW,GAAA,EAAA,CAAA;AAEjB;;AAEC,IACD,MAAMC,YAAAA,GAAe,CACnB9oD,IAAAA,EACA6mD,OACAkC,EAAAA,eAAAA,GAAAA;AAEA,IAAA,MAAMjyD,OAAU,GAAA;;AAEdiyD,QAAAA,eAAAA,GACI,CAAC,EAAElC,OAAQtrC,CAAAA,MAAM,CAACzxB,KAAK,CAAC,CAAC,EAAE+8D,QAAQ8B,QAAQ,CAC1CroE,GAAG,CAAC,CAAC0B,CAAMA,GAAAA,CAAAA,CAAE8H,KAAK,CAAA,CAClBgO,IAAI,CAAC,GAAA,CAAA,CAAK,CAAC,GACZ+uD,QAAQ8B,QAAQ,CAACroE,GAAG,CAAC,CAAC0B,CAAMA,GAAAA,CAAAA,CAAE8H,KAAK,CAAA,CAAEgO,IAAI,CAAC,GAAA,CAAA;;WAE3CkI,IAAK1f,CAAAA,GAAG,CAAC,CAAC0B,CAAAA,GAAAA;AACX,YAAA,MAAM4oB,IAAOi8C,GAAAA,OAAAA,CAAQ8B,QAAQ,CAACroE,GAAG,CAAC,CAACylB,SAAAA,GAAc/jB,CAAEixC,CAAAA,EAAE,CAACltB,SAAAA,CAAU7f,EAAE,CAAC,CAAA,CAAA;AACnE,YAAA,OAAO6iE,kBAAkB,CAAC,EAAE/mE,CAAE+9B,CAAAA,IAAI,CAAC,CAAC,EAAEnV,IAAK9S,CAAAA,IAAI,CAAC,GAAK,CAAA,CAAA,CAAC,GAAG8S,IAAAA,CAAK9S,IAAI,CAAC,GAAA,CAAA,CAAA;AACrE,SAAA,CAAA;AACD,KAAA,CAACA,IAAI,CAAC,IAAA,CAAA,CAAA;IACP,OAAOhB,OAAAA,CAAAA;AACT,CAAA,CAAA;AAEA,MAAMkyD,eAAe,CAAChpD,IAAAA,GAAAA;AACpB,IAAA,MAAMipD,UAAUC,SAAU,CAAA,CAAC,4BAA4B,EAAElpD,KAAK,CAAC,CAAA,CAAA;IAC/D,MAAMxe,IAAAA,GAAO8wB,QAASo2B,CAAAA,aAAa,CAAC,GAAA,CAAA,CAAA;AACpClnD,IAAAA,IAAAA,CAAK1D,IAAI,GAAGmrE,OAAAA,CAAAA;AACZznE,IAAAA,IAAAA,CAAK2nE,QAAQ,GAAG,oBAAA,CAAA;IAChB72C,QAAS4P,CAAAA,IAAI,CAACknC,WAAW,CAAC5nE,IAAAA,CAAAA,CAAAA;AAC1BA,IAAAA,IAAAA,CAAKsnD,KAAK,EAAA,CAAA;IACVx2B,QAAS4P,CAAAA,IAAI,CAACmnC,WAAW,CAAC7nE,IAAAA,CAAAA,CAAAA;AAC5B,CAAA,CAAA;AAEA,MAAM8nE,iBAAiB,CAAC,EACtBzC,OAAO,EACP6B,sBAAsB,EACN,GAAA;AAChB,IAAA,MAAM,CAAC9vC,KAAAA,EAAO2wC,QAAS,CAAA,GAAG3lE,QAAiB,CAAA,EAAA,CAAA,CAAA;AAC3C,IAAA,MAAM,CAAC4lE,SAAAA,EAAWC,YAAa,CAAA,GAAG7lE,QAAiB,CAAA,EAAA,CAAA,CAAA;AACnD,IAAA,MAAMqiC,YAAYC,YAAa,CAAA;QAAEC,OAAS,EAAA,GAAA;AAAI,KAAA,CAAA,CAAA;AAE9C,IAAA,MAAM,CAACsiC,YAAAA,EAAciB,eAAgB,CAAA,GAAG9lE,QAAiB,CAAA,EAAA,CAAA,CAAA;AAEzD,IAAA,MAAM,CAAC+lE,UAAAA,EAAY,EAAE3pD,IAAI,EAAE2F,UAAU,EAAED,OAAO,EAAEuN,SAAS,EAAE,CAAC,GAC1D22C,4BAAAA,EAAAA,CAAAA;AAEF,IAAA,MAAMC,KAAQ,GAAA,IAAA;QACZJ,YAAa,CAAA,EAAA,CAAA,CAAA;QACbF,QAAS,CAAA,EAAA,CAAA,CAAA;QACTI,UAAW,CAAA;AACTG,YAAAA,GAAAA,EAAK,EAAE;AACPC,YAAAA,OAAAA,EAASlD,QAAQ8B,QAAQ,CAACroE,GAAG,CAAC,CAAC0B,KAAO;AACpCkE,oBAAAA,EAAAA,EAAIlE,EAAEkE,EAAE;AACR8jE,oBAAAA,QAAAA,EAAUhoE,EAAEgoE,QAAQ;iBACtB,CAAA,CAAA;AACF,SAAA,CAAA,CAAA;AACF,KAAA,CAAA;IAEAjkE,SAAU,CAAA,IAAA;QACR,IAAI6yB,KAAAA,CAAMn4B,MAAM,IAAI,CAAG,EAAA;YACrBipE,eAAgB,CAAA,4BAAA,CAAA,CAAA;AAChB,YAAA,OAAA;AACF,SAAA;AACA,QAAA,IAAIhkD,OAAS,EAAA;YACXgkD,eAAgB,CAAA,uCAAA,CAAA,CAAA;AAClB,SAAA;AAEA,QAAA,IAAIz2C,SAAajT,IAAAA,IAAAA,IAAQA,IAAKvf,CAAAA,MAAM,IAAI,CAAG,EAAA;YACzCipE,eAAgB,CAAA,kBAAA,CAAA,CAAA;AAClB,SAAA;KACC,EAAA;AAAC9wC,QAAAA,KAAAA;AAAOlT,QAAAA,OAAAA;AAASuN,QAAAA,SAAAA;QAAWjT,IAAMvf,EAAAA,MAAAA;AAAO,KAAA,CAAA,CAAA;AAE5C,IAAA,MAAMwpE,QAAW,GAAA,IAAA;QACfN,UAAW,CAAA;YACTG,GAAKN,EAAAA,SAAAA,CAAU1nE,KAAK,CAAC,gBAAA,CAAA;AACrBioE,YAAAA,OAAAA,EAASlD,QAAQ8B,QAAQ,CAACroE,GAAG,CAAC,CAAC0B,KAAO;AACpCkE,oBAAAA,EAAAA,EAAIlE,EAAEkE,EAAE;AACR8jE,oBAAAA,QAAAA,EAAUhoE,EAAEgoE,QAAQ;iBACtB,CAAA,CAAA;AACF,SAAA,CAAA,CAAA;QACAT,QAASC,CAAAA,SAAAA,CAAAA,CAAAA;AACX,KAAA,CAAA;AAEA,IAAA,MAAMU,gBAAgB,CAACj+C,MAAAA,GAAAA;QACrBw9C,YAAax9C,CAAAA,MAAAA,CAAAA,CAAAA;AACf,KAAA,CAAA;AAEA,IAAA,qBACEttB,IAACyjB,CAAAA,KAAAA,EAAAA;QACC+8C,IAAK,EAAA,QAAA;QACLthE,SAAU,EAAA,mDAAA;QACVuxB,KAAM,EAAA,SAAA;;0BAENzwB,IAACujB,CAAAA,KAAAA,EAAAA;gBAAMkN,KAAM,EAAA,SAAA;gBAAUmP,OAAQ,EAAA,YAAA;gBAAa1gC,SAAU,EAAA,WAAA;;kCACpDc,IAACyjB,CAAAA,KAAAA,EAAAA;wBACC+8C,IAAK,EAAA,QAAA;;0CACL7gE,GAAC6P,CAAAA,MAAAA,EAAAA;gCACC7E,IAAK,EAAA,IAAA;gCACLY,KAAM,EAAA,aAAA;gCACNC,QAAUq/D,EAAAA,SAAAA,CAAU/oE,MAAM,IAAI,CAAA;AAC9B4J,gCAAAA,OAAAA,EAAS,IAAM4/D,QAAAA,EAAAA;AAChB,gCAAA,QAAA,EAAA,QAAA;;0CAGD3rE,GAAC6P,CAAAA,MAAAA,EAAAA;gCACC7E,IAAK,EAAA,IAAA;gCACLY,KAAM,EAAA,aAAA;gCACNC,QAAUq/D,EAAAA,SAAAA,CAAU/oE,MAAM,IAAI,CAAA;AAC9B4J,gCAAAA,OAAAA,EAAS,IAAMw/D,KAAAA,EAAAA;AAChB,gCAAA,QAAA,EAAA,OAAA;;;;kCAIHvrE,GAACgkC,CAAAA,QAAAA,EAAAA;wBACCxL,WAAY,EAAA,QAAA;wBACZ1b,MAAO,EAAA,IAAA;wBACP9R,IAAK,EAAA,IAAA;wBACL3E,QAAQ,EAAA,IAAA;wBACRrC,KAAOknE,EAAAA,SAAAA;wBACPW,OAAStB,EAAAA,QAAAA;AACTp8C,wBAAAA,QAAAA,EAAU,CAAC8N,KAAU2vC,GAAAA,aAAAA,CAAc3vC,KAAM6e,CAAAA,aAAa,CAAC92C,KAAK,CAAA;wBAC5DrD,UAAY,EAAA;4BACViB,IAAM,EAAA,QAAA;4BACNkqE,OAAS,EAAA,QAAA;AACX,yBAAA;wBACAxgD,MAAQ,EAAA;4BACN6L,KAAO,EAAA;gCAAE30B,MAAQ,EAAA,MAAA;AAAO,6BAAA;AAC1B,yBAAA;;;;0BAGJnC,IAACujB,CAAAA,KAAAA,EAAAA;gBACCkN,KAAM,EAAA,SAAA;gBACNmP,OAAQ,EAAA,YAAA;gBACR1gC,SAAU,EAAA,qBAAA;;kCAEVc,IAACyjB,CAAAA,KAAAA,EAAAA;wBAAMmc,OAAQ,EAAA,UAAA;;0CACbjgC,GAAC6P,CAAAA,MAAAA,EAAAA;gCACCE,OAAQ,EAAA,SAAA;gCACR/E,IAAK,EAAA,IAAA;gCACLY,KAAO+7B,EAAAA,SAAAA,CAAU/hB,MAAM,GAAG,UAAa,GAAA,eAAA;gCACvC7Z,OAAS,EAAA,IAAA;AACP,oCAAA,IAAI2V,MACFimB,SAAU9hB,CAAAA,IAAI,CACZ2kD,YAAAA,CAAa9oD,MAAM6mD,OAAS6B,EAAAA,sBAAAA,CAAAA,CAAAA,CAAAA;AAElC,iCAAA;AACAv+D,gCAAAA,QAAAA,EAAU,CAAC6V,IAAAA,IAAQA,IAAKvf,CAAAA,MAAM,IAAI,CAAA;AACnC,gCAAA,QAAA,EAAA,MAAA;;0CAGDnC,GAAC6P,CAAAA,MAAAA,EAAAA;gCACCE,OAAQ,EAAA,SAAA;gCACR/E,IAAK,EAAA,IAAA;gCACLe,OAAS,EAAA,IAAA;AACP,oCAAA,IAAI2V,IACFgpD,EAAAA,YAAAA,CACEF,YAAa9oD,CAAAA,IAAAA,EAAM6mD,OAAS6B,EAAAA,sBAAAA,CAAAA,CAAAA,CAAAA;AAElC,iCAAA;AACAv+D,gCAAAA,QAAAA,EAAU,CAAC6V,IAAAA,IAAQA,IAAKvf,CAAAA,MAAM,IAAI,CAAA;AACnC,gCAAA,QAAA,EAAA,UAAA;;;;kCAIHnC,GAACkqE,CAAAA,cAAAA,EAAAA;wBACC3B,OAASA,EAAAA,OAAAA;AACT7mD,wBAAAA,IAAAA,EAAMA,QAAQ,EAAE;wBAChB2F,UAAYA,EAAAA,UAAAA;wBACZsN,SAAWA,EAAAA,SAAAA;wBACXvN,OAASA,EAAAA,OAAAA;wBACT+iD,YAAcA,EAAAA,YAAAA;AACdC,wBAAAA,sBAAAA,EAAwBA,sBAA0B,IAAA,KAAA;;;;;;AAK5D,CAAA;;ACrLM2B,MAAAA,aAAAA,GAAgB,CAAC,EACrB77D,WAAW,EACXC,WAAW,EACXyB,MAAM,EACmB,GAAA;AACzB,IAAA,qBACE5R,GAACiQ,CAAAA,aAAAA,EAAAA;AACOC,QAAAA,WAAAA;AAAaC,QAAAA,WAAAA;QACnBE,UAAY,EAAA;YACV7P,KAAO,EAAA,qBAAA;YACPmQ,OAAS,EAAA,gBAAA;YACTjQ,GAAK,EAAA,qBAAA;AACP,SAAA;AAEA,QAAA,QAAA,gBAAAV,GAACgrE,CAAAA,cAAAA,EAAAA;AAAgB,YAAA,GAAGp5D,MAAM;;;AAGhC;;MCCao6D,+BAET,GAAA,UAAA;IACF,MAAMC,aAAAA,GAAwC,MAAMva,aAAAA,CAAc5S,GAAG,CACnE,CAAC,OAAO,EAAE+S,iBAAkB,CAAA,eAAe,CAAC,CAAA,CAAA;AAE9C,IAAA,MAAMqa,KAAQ,GAAA,KAAA,CAAA;AACd,IAAA,MAAMC,eAAkB,GAAA;AACtB/B,QAAAA,sBAAAA,EAAwB6B,cAAc7B,sBAAsB;QAC5D7B,OAAS,EAAA;YACPtrC,MAAQgvC,EAAAA,aAAAA,CAAc1D,OAAO,CAACtrC,MAAM;YACpCotC,QAAU4B,EAAAA,aAAAA,CAAc1D,OAAO,CAAC8B,QAAQ,CAACroE,GAAG,CAAC,CAAC6hB,KAAAA,IAAW;AACvD,oBAAA,GAAGA,KAAK;AACR6nD,oBAAAA,QAAAA,EAAU7nD,KAAM6nD,CAAAA,QAAQ,CACrBloE,KAAK,CAAC0oE,KAAAA,CAAAA,CACNlqE,GAAG,CAAC,CAAC0B,CAAAA,GAAMi3B,IAAKK,CAAAA,SAAS,CAAC;AAACt3B,4BAAAA,CAAAA;AAAE,yBAAA,CAAA,CAAA,CAC7B8V,IAAI,CAAC,GAAA,CAAA;iBACV,CAAA,CAAA;AACF,SAAA;AACF,KAAA,CAAA;IAEA,OAAO;QACL5J,KAAO,EAAA;AACL,YAAA,GAAI,MAAM+hD,+BAAiC,EAAA;YAC3C//C,MAAQu6D,EAAAA,eAAAA;AACV,SAAA;AACF,KAAA,CAAA;AACF;;AC9CO,MAAMC,iBAAiB,CAACC,MAAAA,GAAAA;IAC7B,OAAO;QACLC,SAAW,EAAA,SAAA;QACX37D,OAAS,EAAA;AACP,YAAA,kCAAA;AACA,YAAA,uCAAA;AACA,YAAA,qCAAA;AACD,SAAA;QACDuc,KAAO,EAAA;YACLq/C,MAAQ,EAAA;gBACN/8B,MAAQ,EAAA;oBACNg9B,IAAM,EAAA;wBACJlW,OAAS,EAAA,SAAA;wBACTC,SAAW,EAAA,SAAA;wBACXkW,YAAc,EAAA,SAAA;wBACdC,MAAQ,EAAA,SAAA;wBACRC,OAAS,EAAA,SAAA;wBACTC,GAAK,EAAA,SAAA;wBACLC,KAAO,EAAA,SAAA;wBACPC,MAAQ,EAAA,SAAA;wBACRC,SAAW,EAAA,SAAA;wBACXC,WAAa,EAAA,SAAA;wBACbC,UAAY,EAAA,SAAA;wBACZC,IAAM,EAAA,SAAA;AACR,qBAAA;oBACAC,KAAO,EAAA;wBACL5W,SAAW,EAAA,SAAA;AACb,qBAAA;oBACA6W,IAAM,EAAA;wBACJ7W,SAAW,EAAA,SAAA;wBACXD,OAAS,EAAA,SAAA;wBACT+W,IAAM,EAAA,SAAA;wBACNC,IAAM,EAAA,SAAA;wBACNC,IAAM,EAAA,SAAA;wBACNC,GAAK,EAAA,SAAA;wBACLC,IAAM,EAAA,SAAA;wBACNC,gBAAkB,EAAA,SAAA;wBAClBC,sBAAwB,EAAA,SAAA;wBACxBC,IAAM,EAAA,SAAA;wBACNC,IAAM,EAAA,SAAA;wBACNC,KAAO,EAAA,SAAA;wBACPC,IAAM,EAAA,SAAA;wBACNC,SAAW,EAAA,SAAA;wBACXC,KAAO,EAAA,SAAA;wBACPC,MAAQ,EAAA,SAAA;wBACRC,KAAO,EAAA,SAAA;wBACPjc,KAAO,EAAA,SAAA;wBACPkc,QAAU,EAAA,SAAA;wBACVC,QAAU,EAAA,SAAA;AACZ,qBAAA;AACA,oBAAA,GAAGhC,MAAM;AACX,iBAAA;gBACAp8B,UAAY,EAAA;oBACVq+B,UAAY,EAAA;AAAC,wBAAA,YAAA;AAAc,wBAAA,YAAA;AAAa,qBAAA;oBACxCC,IAAM,EAAA;AAAC,wBAAA,iBAAA;AAAmB,wBAAA,YAAA;AAAa,qBAAA;AACzC,iBAAA;gBACAzkD,QAAU,EAAA;oBACR0kD,IAAM,EAAA,UAAA;AACR,iBAAA;gBACAtV,WAAa,EAAA;oBACXjhD,OAAS,EAAA,KAAA;oBACT,CAAG,EAAA,GAAA;oBACH,CAAG,EAAA,KAAA;oBACH,CAAG,EAAA,KAAA;oBACH,CAAG,EAAA,KAAA;oBACH,CAAG,EAAA,KAAA;oBACH,CAAG,EAAA,KAAA;oBACH,CAAG,EAAA,KAAA;AACL,iBAAA;gBACA1V,KAAO,EAAA;oBACL,YAAc,EAAA,MAAA;oBACd,UAAY,EAAA,MAAA;oBACZ,UAAY,EAAA,iBAAA;oBACZ,UAAY,EAAA,iBAAA;oBACZ,UAAY,EAAA,iBAAA;AACd,iBAAA;gBACAksE,mBAAqB,EAAA;oBACnB,QAAU,EAAA,UAAA;AACZ,iBAAA;gBACAC,kBAAoB,EAAA;oBAClBlsE,MAAQ,EAAA,QAAA;AACV,iBAAA;gBACAmsE,QAAU,EAAA;oBACRC,SAAW,EAAA;AAAC,wBAAA,YAAA;AAAc,wBAAA,OAAA;AAAS,wBAAA,OAAA;AAAS,wBAAA,aAAA;AAAc,qBAAA;AAC1DrC,oBAAAA,MAAAA,EAAQ,EAAC;AACX,iBAAA;AACF,aAAA;AACF,SAAA;QACAoC,QAAU,EAAA;AACRpC,YAAAA,MAAAA,EAAQ,EAAC;AACX,SAAA;QACAsC,OAAS,EAAA;YACPC,OAAQ,CAAA,oBAAA,CAAA;YACRA,OAAQ,CAAA,yBAAA,CAAA;AACRA,YAAAA,OAAAA,CAAQ,oBAAsB,CAAA,CAAA;gBAC5BC,QAAU,EAAA,OAAA;AACZ,aAAA,CAAA;YACAC,MAAO,CAAA,SAAU,EACfC,UAAU,EAMX,EAAA;;AAECA,gBAAAA,UAAAA,CAAW,aAAe,EAAA,gBAAA,CAAA,CAAA;AAC1BA,gBAAAA,UAAAA,CAAW,YAAc,EAAA,eAAA,CAAA,CAAA;AACzBA,gBAAAA,UAAAA,CAAW,cAAgB,EAAA,iBAAA,CAAA,CAAA;AAC3BA,gBAAAA,UAAAA,CAAW,aAAe,EAAA,gBAAA,CAAA,CAAA;AAC1BA,gBAAAA,UAAAA,CAAW,cAAgB,EAAA,iBAAA,CAAA,CAAA;AAC3BA,gBAAAA,UAAAA,CAAW,cAAgB,EAAA,iBAAA,CAAA,CAAA;AAC3BA,gBAAAA,UAAAA,CAAW,oBAAsB,EAAA,uBAAA,CAAA,CAAA;AACjCA,gBAAAA,UAAAA,CAAW,mBAAqB,EAAA,sBAAA,CAAA,CAAA;AAClC,aAAA,CAAA;YACAD,MAAO,CAAA,SAAU,EAAEE,YAAY,EAAuC,EAAA;AACpE,gBAAA,MAAMC,YAAe,GAAA;oBACnB,mBAAqB,EAAA;wBACnB5sE,KAAO,EAAA,iBAAA;wBACPkpC,KAAO,EAAA,iBAAA;wBACP,WAAa,EAAA,cAAA;AACf,qBAAA;AACF,iBAAA,CAAA;gBACAyjC,YAAaC,CAAAA,YAAAA,CAAAA,CAAAA;AACf,aAAA,CAAA;YACAH,MAAO,CAAA,SAAU,EACfI,aAAa,EAGd,EAAA;gBACCA,aAAc,CAAA;oBACZ,WAAa,EAAA;wBACX59D,OAAS,EAAA,cAAA;wBACTmY,SAAW,EAAA,QAAA;wBACXC,OAAS,EAAA,eAAA;wBACTE,QAAU,EAAA,MAAA;wBACVulD,UAAY,EAAA,KAAA;wBACZxlD,UAAY,EAAA,KAAA;wBACZE,aAAe,EAAA,WAAA;wBACfne,KAAO,EAAA,SAAA;wBACP0jE,MAAQ,EAAA,uBAAA;wBACRC,YAAc,EAAA,KAAA;wBACdtyD,eAAiB,EAAA,SAAA;wBACjB,kBAAoB,EAAA;4BAClBA,eAAiB,EAAA,SAAA;4BACjBC,WAAa,EAAA,SAAA;4BACbtR,KAAO,EAAA,SAAA;AACT,yBAAA;AACF,qBAAA;oBACA,kBAAoB,EAAA;wBAClBqR,eAAiB,EAAA,SAAA;wBACjB,kBAAoB,EAAA;4BAClBrR,KAAO,EAAA,SAAA;4BACPsR,WAAa,EAAA,SAAA;4BACbD,eAAiB,EAAA,SAAA;AACnB,yBAAA;AACF,qBAAA;oBACA,eAAiB,EAAA;wBACfrR,KAAO,EAAA,SAAA;wBACPsR,WAAa,EAAA,SAAA;wBACbD,eAAiB,EAAA,SAAA;wBACjB,kBAAoB,EAAA;4BAClBA,eAAiB,EAAA,SAAA;4BACjBC,WAAa,EAAA,aAAA;4BACbtR,KAAO,EAAA,SAAA;AACT,yBAAA;AACF,qBAAA;oBACA,mBAAqB,EAAA;wBACnBA,KAAO,EAAA,SAAA;wBACP,kBAAoB,EAAA;4BAClBA,KAAO,EAAA,SAAA;AACT,yBAAA;AACF,qBAAA;AACF,iBAAA,CAAA,CAAA;AACF,aAAA,CAAA;AACD,SAAA;AACH,KAAA,CAAA;AACF;;AC/Ke,4BAAA,CAAgBzH,GAAmB,EAAEC,GAAoB,EAAA;AAErE,IAAA,MAAMyB,MAAM,CAAC,EAAEC,cAAe,CAAA,YAAY,CAAC,EAC1C;QACE4T,MAAQ,EAAA,KAAA;QACRiqB,OAAS,EAAA;YACP,cAAgB,EAAA,kBAAA;AAClB,SAAA;AACF,KAAA,CAAA,CAAA;IAEFv/B,GAAIorE,CAAAA,SAAS,CAAC,YAAc,EAAA;QAC1B7oC,MAAO8oC,CAAAA,SAAS,CAAC,OAAA,EAAS,EAAI,EAAA;YAC5BC,QAAU,EAAA,KAAA;YACVC,QAAU,EAAA,IAAA;YACVC,MAAQ,EAAA,IAAA;YACR9+D,IAAM,EAAA,GAAA;AACNjM,YAAAA,OAAAA,EAAS,IAAIZ,IAAK,CAAA,CAAA,CAAA;AACpB,SAAA,CAAA;QACA0iC,MAAO8oC,CAAAA,SAAS,CAAC,cAAA,EAAgB,EAAI,EAAA;YACnCC,QAAU,EAAA,KAAA;YACVC,QAAU,EAAA,IAAA;YACVC,MAAQ,EAAA,IAAA;YACR9+D,IAAM,EAAA,GAAA;AACNjM,YAAAA,OAAAA,EAAS,IAAIZ,IAAK,CAAA,CAAA,CAAA;AACpB,SAAA,CAAA;;QAEA0iC,MAAO8oC,CAAAA,SAAS,CAAC,mBAAA,EAAqB,EAAI,EAAA;YACxCC,QAAU,EAAA,KAAA;AACVC,YAAAA,QAAAA,EAAU9vE,OAAQC,CAAAA,GAAG,CAAC+vE,QAAQ,KAAK,YAAA;AACnCD,YAAAA,MAAAA,EAAQ/vE,OAAQC,CAAAA,GAAG,CAAC+vE,QAAQ,KAAK,YAAA;YACjC/+D,IAAM,EAAA,GAAA;AACNjM,YAAAA,OAAAA,EAAS,IAAIZ,IAAK,CAAA,CAAA,CAAA;AACpB,SAAA,CAAA;AACD,KAAA,CAAA,CAAA;AACD6rE,IAAAA,YAAAA,CAAc,mBAAqB,EAAA;AACjC3rE,QAAAA,GAAAA;AAAKC,QAAAA,GAAAA;QACLsrE,QAAU,EAAA,KAAA;AACVC,QAAAA,QAAAA,EAAU9vE,OAAQC,CAAAA,GAAG,CAAC+vE,QAAQ,KAAK,YAAA;AACnCD,QAAAA,MAAAA,EAAQ/vE,OAAQC,CAAAA,GAAG,CAAC+vE,QAAQ,KAAK,YAAA;AACnC,KAAA,CAAA,CAAA;AACAzrE,IAAAA,GAAAA,CAAIK,MAAM,CAAC,GAAKC,CAAAA,CAAAA,IAAI,CAAC;QAAEqrE,OAAS,EAAA,SAAA;AAAU,KAAA,CAAA,CAAA;AAC5C;;AC1CA;;;;;;AAMC,IACc,+BAAA,CAAgB5rE,GAAmB,EAAEC,GAAoB,EAAA;IAEtE,MAAM8N,MAAAA,GAAS/N,IAAIy/B,IAAI,CAAA;IAEvB,MAAMvI,QAAAA,GAAW,MAAMx1B,KAAM,CAAA,CAAC,EAAEC,cAAe,CAAA,kCAAkC,CAAC,EAC9E;QACF4T,MAAQ,EAAA,MAAA;QACRiqB,OAAS,EAAA;YACT,cAAgB,EAAA,kBAAA;AAClB,SAAA;QACAC,IAAMjJ,EAAAA,IAAAA,CAAKK,SAAS,CAAC;AACjB+M,YAAAA,OAAAA,EAAS71B,OAAO61B,OAAO;AACvBC,YAAAA,MAAAA,EAAQ91B,OAAO81B,MAAM;AACzB,SAAA,CAAA;AACF,KAAA,CAAA,CAAA;IAEE,IAAI3M,QAAAA,CAAS52B,MAAM,KAAK,GAAK,EAAA;AAC3BqrE,QAAAA,YAAAA,CAAc,mBAAqB,EAAA;AACjC3rE,YAAAA,GAAAA;AAAKC,YAAAA,GAAAA;YACLsrE,QAAU,EAAA,KAAA;AACVC,YAAAA,QAAAA,EAAU9vE,OAAQC,CAAAA,GAAG,CAAC+vE,QAAQ,KAAK,YAAA;AACnCD,YAAAA,MAAAA,EAAQ/vE,OAAQC,CAAAA,GAAG,CAAC+vE,QAAQ,KAAK,YAAA;AACnC,SAAA,CAAA,CAAA;AACA,QAAA,OAAOzrE,IAAIK,MAAM,CAAC42B,SAAS52B,MAAM,CAAA,CAAEC,IAAI,CAAC;YAAEgF,OAAS,EAAA,eAAA;AAAgB,SAAA,CAAA,CAAA;AACrE,KAAA;IAEA,MAAMhF,IAAAA,GAAO,MAAM22B,QAAAA,CAAS32B,IAAI,EAAA,CAAA;IAChC,MAAM,EACJL,YAAY,EACb,GAAGK,IAAAA,CAAAA;;AAGJ,IAAA,MAAMi/D,UAAUn/D,SAAUH,CAAAA,YAAAA,CAAAA,CAAAA;AAE1B,IAAA,IAAI,CAACs/D,OAAS,EAAA;AACZmM,QAAAA,YAAAA,CAAc,mBAAqB,EAAA;AACjC3rE,YAAAA,GAAAA;AAAKC,YAAAA,GAAAA;YACLsrE,QAAU,EAAA,KAAA;AACVC,YAAAA,QAAAA,EAAU9vE,OAAQC,CAAAA,GAAG,CAAC+vE,QAAQ,KAAK,YAAA;AACnCD,YAAAA,MAAAA,EAAQ/vE,OAAQC,CAAAA,GAAG,CAAC+vE,QAAQ,KAAK,YAAA;AACnC,SAAA,CAAA,CAAA;AACA,QAAA,OAAOzrE,GAAIK,CAAAA,MAAM,CAAC,GAAA,CAAA,CAAKC,IAAI,CAAC;YAAEgF,OAAS,EAAA,eAAA;AAAgB,SAAA,CAAA,CAAA;AACzD,KAAA;AACAk9B,IAAAA,SAAAA,CAAW,qBAAqBviC,YAAc,EAAA;AAC5CF,QAAAA,GAAAA;AAAKC,QAAAA,GAAAA;AACL2iC,QAAAA,MAAAA,EAAQ48B,OAAWA,IAAAA,OAAAA,CAAQ7+D,GAAG,IAAI6+D,QAAQ/+D,GAAG,GAAG++D,OAAQ7+D,CAAAA,GAAG,GAAG6+D,OAAAA,CAAQ/+D,GAAG,GAAG,KAAK,EAAK,GAAA,EAAA;QACtF8qE,QAAU,EAAA,KAAA;AACVC,QAAAA,QAAAA,EAAU9vE,OAAQC,CAAAA,GAAG,CAAC+vE,QAAQ,KAAK,YAAA;AACnCD,QAAAA,MAAAA,EAAQ/vE,OAAQC,CAAAA,GAAG,CAAC+vE,QAAQ,KAAK,YAAA;AACnC,KAAA,CAAA,CAAA;AAEA,IAAA,OAAOzrE,GAAIK,CAAAA,MAAM,CAAC,GAAA,CAAA,CAAKC,IAAI,CAAC;QAAEgF,OAAS,EAAA,mBAAA;AAAoB,KAAA,CAAA,CAAA;AAC7D;;AC7De,gCAAA,CAAgBvF,GAAmB,EAAEC,GAAoB,EAAA;AACtE0rE,IAAAA,YAAAA,CAAc,mBAAqB,EAAA;AACjC3rE,QAAAA,GAAAA;AAAKC,QAAAA,GAAAA;QACLsrE,QAAU,EAAA,KAAA;AACVC,QAAAA,QAAAA,EAAU9vE,OAAQC,CAAAA,GAAG,CAAC+vE,QAAQ,KAAK,YAAA;AACnCD,QAAAA,MAAAA,EAAQ/vE,OAAQC,CAAAA,GAAG,CAAC+vE,QAAQ,KAAK,YAAA;AACnC,KAAA,CAAA,CAAA;IACAzrE,GAAI6gC,CAAAA,QAAQ,CAAC,GAAK,EAAA,GAAA,CAAA,CAAA;AACpB;;;;"}
|