@secondstaxorg/sscomp 1.1.3 → 1.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +15 -15
- package/README.md +1 -1
- package/package.json +81 -80
- package/dist/components/ActionFailed/ActionFailed.d.ts +0 -5
- package/dist/components/ActionFailed/ActionFailed.d.ts.map +0 -1
- package/dist/components/ActionFailed/ActionFailed.js +0 -23
- package/dist/components/ActionFailed/ActionFailed.js.map +0 -1
- package/dist/components/ActionFailed/style.d.ts +0 -3
- package/dist/components/ActionFailed/style.d.ts.map +0 -1
- package/dist/components/ActionFailed/style.js +0 -10
- package/dist/components/ActionFailed/style.js.map +0 -1
- package/dist/components/ActionFailed/type.d.ts +0 -5
- package/dist/components/ActionFailed/type.d.ts.map +0 -1
- package/dist/components/ActionFailed/type.js +0 -2
- package/dist/components/ActionFailed/type.js.map +0 -1
- package/dist/components/ActionSuccess/ActionSuccess.d.ts +0 -5
- package/dist/components/ActionSuccess/ActionSuccess.d.ts.map +0 -1
- package/dist/components/ActionSuccess/ActionSuccess.js +0 -25
- package/dist/components/ActionSuccess/ActionSuccess.js.map +0 -1
- package/dist/components/ActionSuccess/style.d.ts +0 -3
- package/dist/components/ActionSuccess/style.d.ts.map +0 -1
- package/dist/components/ActionSuccess/style.js +0 -10
- package/dist/components/ActionSuccess/style.js.map +0 -1
- package/dist/components/ActionSuccess/type.d.ts +0 -5
- package/dist/components/ActionSuccess/type.d.ts.map +0 -1
- package/dist/components/ActionSuccess/type.js +0 -2
- package/dist/components/ActionSuccess/type.js.map +0 -1
- package/dist/components/AppActionsTable/AppActionsTable.d.ts +0 -5
- package/dist/components/AppActionsTable/AppActionsTable.d.ts.map +0 -1
- package/dist/components/AppActionsTable/AppActionsTable.js +0 -38
- package/dist/components/AppActionsTable/AppActionsTable.js.map +0 -1
- package/dist/components/AppActionsTable/style.d.ts +0 -5
- package/dist/components/AppActionsTable/style.d.ts.map +0 -1
- package/dist/components/AppActionsTable/style.js +0 -12
- package/dist/components/AppActionsTable/style.js.map +0 -1
- package/dist/components/AppActionsTable/type.d.ts +0 -15
- package/dist/components/AppActionsTable/type.d.ts.map +0 -1
- package/dist/components/AppActionsTable/type.js +0 -2
- package/dist/components/AppActionsTable/type.js.map +0 -1
- package/dist/components/AppFormsTable/AppFormsTable.d.ts +0 -5
- package/dist/components/AppFormsTable/AppFormsTable.d.ts.map +0 -1
- package/dist/components/AppFormsTable/AppFormsTable.js +0 -38
- package/dist/components/AppFormsTable/AppFormsTable.js.map +0 -1
- package/dist/components/AppFormsTable/style.d.ts +0 -5
- package/dist/components/AppFormsTable/style.d.ts.map +0 -1
- package/dist/components/AppFormsTable/style.js +0 -12
- package/dist/components/AppFormsTable/style.js.map +0 -1
- package/dist/components/AppFormsTable/type.d.ts +0 -13
- package/dist/components/AppFormsTable/type.d.ts.map +0 -1
- package/dist/components/AppFormsTable/type.js +0 -2
- package/dist/components/AppFormsTable/type.js.map +0 -1
- package/dist/components/AppModulesTable/AppModulesTable.d.ts +0 -5
- package/dist/components/AppModulesTable/AppModulesTable.d.ts.map +0 -1
- package/dist/components/AppModulesTable/AppModulesTable.js +0 -38
- package/dist/components/AppModulesTable/AppModulesTable.js.map +0 -1
- package/dist/components/AppModulesTable/style.d.ts +0 -5
- package/dist/components/AppModulesTable/style.d.ts.map +0 -1
- package/dist/components/AppModulesTable/style.js +0 -12
- package/dist/components/AppModulesTable/style.js.map +0 -1
- package/dist/components/AppModulesTable/type.d.ts +0 -9
- package/dist/components/AppModulesTable/type.d.ts.map +0 -1
- package/dist/components/AppModulesTable/type.js +0 -2
- package/dist/components/AppModulesTable/type.js.map +0 -1
- package/dist/components/AuditLog/AuditLog.d.ts +0 -5
- package/dist/components/AuditLog/AuditLog.d.ts.map +0 -1
- package/dist/components/AuditLog/AuditLog.js +0 -20
- package/dist/components/AuditLog/AuditLog.js.map +0 -1
- package/dist/components/AuditLog/style.d.ts +0 -5
- package/dist/components/AuditLog/style.d.ts.map +0 -1
- package/dist/components/AuditLog/style.js +0 -12
- package/dist/components/AuditLog/style.js.map +0 -1
- package/dist/components/AuditLog/type.d.ts +0 -9
- package/dist/components/AuditLog/type.d.ts.map +0 -1
- package/dist/components/AuditLog/type.js +0 -2
- package/dist/components/AuditLog/type.js.map +0 -1
- package/dist/components/BankAccounts/BankAccounts.d.ts +0 -5
- package/dist/components/BankAccounts/BankAccounts.d.ts.map +0 -1
- package/dist/components/BankAccounts/BankAccounts.js +0 -43
- package/dist/components/BankAccounts/BankAccounts.js.map +0 -1
- package/dist/components/BankAccounts/style.d.ts +0 -5
- package/dist/components/BankAccounts/style.d.ts.map +0 -1
- package/dist/components/BankAccounts/style.js +0 -12
- package/dist/components/BankAccounts/style.js.map +0 -1
- package/dist/components/BankAccounts/type.d.ts +0 -16
- package/dist/components/BankAccounts/type.d.ts.map +0 -1
- package/dist/components/BankAccounts/type.js +0 -2
- package/dist/components/BankAccounts/type.js.map +0 -1
- package/dist/components/BankSelector/BankSelector.d.ts +0 -5
- package/dist/components/BankSelector/BankSelector.d.ts.map +0 -1
- package/dist/components/BankSelector/BankSelector.js +0 -34
- package/dist/components/BankSelector/BankSelector.js.map +0 -1
- package/dist/components/BankSelector/style.d.ts +0 -5
- package/dist/components/BankSelector/style.d.ts.map +0 -1
- package/dist/components/BankSelector/style.js +0 -12
- package/dist/components/BankSelector/style.js.map +0 -1
- package/dist/components/BankSelector/type.d.ts +0 -17
- package/dist/components/BankSelector/type.d.ts.map +0 -1
- package/dist/components/BankSelector/type.js +0 -2
- package/dist/components/BankSelector/type.js.map +0 -1
- package/dist/components/BreadcrumbBar/BreadcrumbBar.d.ts +0 -5
- package/dist/components/BreadcrumbBar/BreadcrumbBar.d.ts.map +0 -1
- package/dist/components/BreadcrumbBar/BreadcrumbBar.js +0 -31
- package/dist/components/BreadcrumbBar/BreadcrumbBar.js.map +0 -1
- package/dist/components/BreadcrumbBar/style.d.ts +0 -2
- package/dist/components/BreadcrumbBar/style.d.ts.map +0 -1
- package/dist/components/BreadcrumbBar/style.js +0 -9
- package/dist/components/BreadcrumbBar/style.js.map +0 -1
- package/dist/components/BreadcrumbBar/type.d.ts +0 -8
- package/dist/components/BreadcrumbBar/type.d.ts.map +0 -1
- package/dist/components/BreadcrumbBar/type.js +0 -2
- package/dist/components/BreadcrumbBar/type.js.map +0 -1
- package/dist/components/BrokersTable/BrokersTable.d.ts +0 -5
- package/dist/components/BrokersTable/BrokersTable.d.ts.map +0 -1
- package/dist/components/BrokersTable/BrokersTable.js +0 -42
- package/dist/components/BrokersTable/BrokersTable.js.map +0 -1
- package/dist/components/BrokersTable/style.d.ts +0 -6
- package/dist/components/BrokersTable/style.d.ts.map +0 -1
- package/dist/components/BrokersTable/style.js +0 -13
- package/dist/components/BrokersTable/style.js.map +0 -1
- package/dist/components/BrokersTable/type.d.ts +0 -12
- package/dist/components/BrokersTable/type.d.ts.map +0 -1
- package/dist/components/BrokersTable/type.js +0 -2
- package/dist/components/BrokersTable/type.js.map +0 -1
- package/dist/components/Button/Button.d.ts +0 -5
- package/dist/components/Button/Button.d.ts.map +0 -1
- package/dist/components/Button/Button.js +0 -19
- package/dist/components/Button/Button.js.map +0 -1
- package/dist/components/Button/index.d.ts +0 -2
- package/dist/components/Button/index.d.ts.map +0 -1
- package/dist/components/Button/index.js +0 -2
- package/dist/components/Button/index.js.map +0 -1
- package/dist/components/Button/style.d.ts +0 -2
- package/dist/components/Button/style.d.ts.map +0 -1
- package/dist/components/Button/style.js +0 -9
- package/dist/components/Button/style.js.map +0 -1
- package/dist/components/Button/type.d.ts +0 -9
- package/dist/components/Button/type.d.ts.map +0 -1
- package/dist/components/Button/type.js +0 -2
- package/dist/components/Button/type.js.map +0 -1
- package/dist/components/ButtonOutline/OutlineButton.d.ts +0 -5
- package/dist/components/ButtonOutline/OutlineButton.d.ts.map +0 -1
- package/dist/components/ButtonOutline/OutlineButton.js +0 -19
- package/dist/components/ButtonOutline/OutlineButton.js.map +0 -1
- package/dist/components/ButtonOutline/index.d.ts +0 -2
- package/dist/components/ButtonOutline/index.d.ts.map +0 -1
- package/dist/components/ButtonOutline/index.js +0 -2
- package/dist/components/ButtonOutline/index.js.map +0 -1
- package/dist/components/ButtonOutline/style.d.ts +0 -2
- package/dist/components/ButtonOutline/style.d.ts.map +0 -1
- package/dist/components/ButtonOutline/style.js +0 -9
- package/dist/components/ButtonOutline/style.js.map +0 -1
- package/dist/components/ButtonOutline/type.d.ts +0 -9
- package/dist/components/ButtonOutline/type.d.ts.map +0 -1
- package/dist/components/ButtonOutline/type.js +0 -2
- package/dist/components/ButtonOutline/type.js.map +0 -1
- package/dist/components/Chart/Chart.d.ts +0 -5
- package/dist/components/Chart/Chart.d.ts.map +0 -1
- package/dist/components/Chart/Chart.js +0 -132
- package/dist/components/Chart/Chart.js.map +0 -1
- package/dist/components/Chart/helpers.d.ts +0 -2
- package/dist/components/Chart/helpers.d.ts.map +0 -1
- package/dist/components/Chart/helpers.js +0 -20
- package/dist/components/Chart/helpers.js.map +0 -1
- package/dist/components/Chart/style.d.ts +0 -7
- package/dist/components/Chart/style.d.ts.map +0 -1
- package/dist/components/Chart/style.js +0 -14
- package/dist/components/Chart/style.js.map +0 -1
- package/dist/components/Chart/type.d.ts +0 -14
- package/dist/components/Chart/type.d.ts.map +0 -1
- package/dist/components/Chart/type.js +0 -2
- package/dist/components/Chart/type.js.map +0 -1
- package/dist/components/ChartMedium/ChartMedium.d.ts +0 -5
- package/dist/components/ChartMedium/ChartMedium.d.ts.map +0 -1
- package/dist/components/ChartMedium/ChartMedium.js +0 -132
- package/dist/components/ChartMedium/ChartMedium.js.map +0 -1
- package/dist/components/ChartMedium/helpers.d.ts +0 -2
- package/dist/components/ChartMedium/helpers.d.ts.map +0 -1
- package/dist/components/ChartMedium/helpers.js +0 -20
- package/dist/components/ChartMedium/helpers.js.map +0 -1
- package/dist/components/ChartMedium/style.d.ts +0 -7
- package/dist/components/ChartMedium/style.d.ts.map +0 -1
- package/dist/components/ChartMedium/style.js +0 -14
- package/dist/components/ChartMedium/style.js.map +0 -1
- package/dist/components/ChartMedium/type.d.ts +0 -14
- package/dist/components/ChartMedium/type.d.ts.map +0 -1
- package/dist/components/ChartMedium/type.js +0 -2
- package/dist/components/ChartMedium/type.js.map +0 -1
- package/dist/components/ChartSmall/ChartSmall.d.ts +0 -5
- package/dist/components/ChartSmall/ChartSmall.d.ts.map +0 -1
- package/dist/components/ChartSmall/ChartSmall.js +0 -124
- package/dist/components/ChartSmall/ChartSmall.js.map +0 -1
- package/dist/components/ChartSmall/helpers.d.ts +0 -2
- package/dist/components/ChartSmall/helpers.d.ts.map +0 -1
- package/dist/components/ChartSmall/helpers.js +0 -20
- package/dist/components/ChartSmall/helpers.js.map +0 -1
- package/dist/components/ChartSmall/style.d.ts +0 -7
- package/dist/components/ChartSmall/style.d.ts.map +0 -1
- package/dist/components/ChartSmall/style.js +0 -14
- package/dist/components/ChartSmall/style.js.map +0 -1
- package/dist/components/ChartSmall/type.d.ts +0 -14
- package/dist/components/ChartSmall/type.d.ts.map +0 -1
- package/dist/components/ChartSmall/type.js +0 -2
- package/dist/components/ChartSmall/type.js.map +0 -1
- package/dist/components/CookieConsent/CookieConsent.d.ts +0 -5
- package/dist/components/CookieConsent/CookieConsent.d.ts.map +0 -1
- package/dist/components/CookieConsent/CookieConsent.js +0 -20
- package/dist/components/CookieConsent/CookieConsent.js.map +0 -1
- package/dist/components/CookieConsent/style.d.ts +0 -7
- package/dist/components/CookieConsent/style.d.ts.map +0 -1
- package/dist/components/CookieConsent/style.js +0 -14
- package/dist/components/CookieConsent/style.js.map +0 -1
- package/dist/components/CookieConsent/type.d.ts +0 -6
- package/dist/components/CookieConsent/type.d.ts.map +0 -1
- package/dist/components/CookieConsent/type.js +0 -2
- package/dist/components/CookieConsent/type.js.map +0 -1
- package/dist/components/CountrySelector/CountrySelector.d.ts +0 -5
- package/dist/components/CountrySelector/CountrySelector.d.ts.map +0 -1
- package/dist/components/CountrySelector/CountrySelector.js +0 -50
- package/dist/components/CountrySelector/CountrySelector.js.map +0 -1
- package/dist/components/CountrySelector/style.d.ts +0 -7
- package/dist/components/CountrySelector/style.d.ts.map +0 -1
- package/dist/components/CountrySelector/style.js +0 -14
- package/dist/components/CountrySelector/style.js.map +0 -1
- package/dist/components/CountrySelector/type.d.ts +0 -12
- package/dist/components/CountrySelector/type.d.ts.map +0 -1
- package/dist/components/CountrySelector/type.js +0 -2
- package/dist/components/CountrySelector/type.js.map +0 -1
- package/dist/components/CurrencyPairs/CurrencyPairsTable.d.ts +0 -5
- package/dist/components/CurrencyPairs/CurrencyPairsTable.d.ts.map +0 -1
- package/dist/components/CurrencyPairs/CurrencyPairsTable.js +0 -46
- package/dist/components/CurrencyPairs/CurrencyPairsTable.js.map +0 -1
- package/dist/components/CurrencyPairs/style.d.ts +0 -5
- package/dist/components/CurrencyPairs/style.d.ts.map +0 -1
- package/dist/components/CurrencyPairs/style.js +0 -12
- package/dist/components/CurrencyPairs/style.js.map +0 -1
- package/dist/components/CurrencyPairs/type.d.ts +0 -19
- package/dist/components/CurrencyPairs/type.d.ts.map +0 -1
- package/dist/components/CurrencyPairs/type.js +0 -2
- package/dist/components/CurrencyPairs/type.js.map +0 -1
- package/dist/components/DatePicker/DatePicker.d.ts +0 -5
- package/dist/components/DatePicker/DatePicker.d.ts.map +0 -1
- package/dist/components/DatePicker/DatePicker.js +0 -600
- package/dist/components/DatePicker/DatePicker.js.map +0 -1
- package/dist/components/DatePicker/index.d.ts +0 -2
- package/dist/components/DatePicker/index.d.ts.map +0 -1
- package/dist/components/DatePicker/index.js +0 -2
- package/dist/components/DatePicker/index.js.map +0 -1
- package/dist/components/DatePicker/style.d.ts +0 -18
- package/dist/components/DatePicker/style.d.ts.map +0 -1
- package/dist/components/DatePicker/style.js +0 -45
- package/dist/components/DatePicker/style.js.map +0 -1
- package/dist/components/DatePicker/type.d.ts +0 -81
- package/dist/components/DatePicker/type.d.ts.map +0 -1
- package/dist/components/DatePicker/type.js +0 -2
- package/dist/components/DatePicker/type.js.map +0 -1
- package/dist/components/DropdownList/DropdownList.d.ts +0 -5
- package/dist/components/DropdownList/DropdownList.d.ts.map +0 -1
- package/dist/components/DropdownList/DropdownList.js +0 -53
- package/dist/components/DropdownList/DropdownList.js.map +0 -1
- package/dist/components/DropdownList/style.d.ts +0 -8
- package/dist/components/DropdownList/style.d.ts.map +0 -1
- package/dist/components/DropdownList/style.js +0 -15
- package/dist/components/DropdownList/style.js.map +0 -1
- package/dist/components/DropdownList/type.d.ts +0 -14
- package/dist/components/DropdownList/type.d.ts.map +0 -1
- package/dist/components/DropdownList/type.js +0 -2
- package/dist/components/DropdownList/type.js.map +0 -1
- package/dist/components/Dropshadows/DropShadows.d.ts +0 -5
- package/dist/components/Dropshadows/DropShadows.d.ts.map +0 -1
- package/dist/components/Dropshadows/DropShadows.js +0 -19
- package/dist/components/Dropshadows/DropShadows.js.map +0 -1
- package/dist/components/Dropshadows/style.d.ts +0 -2
- package/dist/components/Dropshadows/style.d.ts.map +0 -1
- package/dist/components/Dropshadows/style.js +0 -9
- package/dist/components/Dropshadows/style.js.map +0 -1
- package/dist/components/Dropshadows/type.d.ts +0 -5
- package/dist/components/Dropshadows/type.d.ts.map +0 -1
- package/dist/components/Dropshadows/type.js +0 -2
- package/dist/components/Dropshadows/type.js.map +0 -1
- package/dist/components/ExchangeRates/ExchangeRates.d.ts +0 -5
- package/dist/components/ExchangeRates/ExchangeRates.d.ts.map +0 -1
- package/dist/components/ExchangeRates/ExchangeRates.js +0 -24
- package/dist/components/ExchangeRates/ExchangeRates.js.map +0 -1
- package/dist/components/ExchangeRates/style.d.ts +0 -4
- package/dist/components/ExchangeRates/style.d.ts.map +0 -1
- package/dist/components/ExchangeRates/style.js +0 -11
- package/dist/components/ExchangeRates/style.js.map +0 -1
- package/dist/components/ExchangeRates/type.d.ts +0 -12
- package/dist/components/ExchangeRates/type.d.ts.map +0 -1
- package/dist/components/ExchangeRates/type.js +0 -2
- package/dist/components/ExchangeRates/type.js.map +0 -1
- package/dist/components/Footer/Footer.d.ts +0 -4
- package/dist/components/Footer/Footer.d.ts.map +0 -1
- package/dist/components/Footer/Footer.js +0 -32
- package/dist/components/Footer/Footer.js.map +0 -1
- package/dist/components/Footer/style.d.ts +0 -7
- package/dist/components/Footer/style.d.ts.map +0 -1
- package/dist/components/Footer/style.js +0 -14
- package/dist/components/Footer/style.js.map +0 -1
- package/dist/components/Indices/Indices.d.ts +0 -5
- package/dist/components/Indices/Indices.d.ts.map +0 -1
- package/dist/components/Indices/Indices.js +0 -51
- package/dist/components/Indices/Indices.js.map +0 -1
- package/dist/components/Indices/style.d.ts +0 -6
- package/dist/components/Indices/style.d.ts.map +0 -1
- package/dist/components/Indices/style.js +0 -13
- package/dist/components/Indices/style.js.map +0 -1
- package/dist/components/Indices/type.d.ts +0 -10
- package/dist/components/Indices/type.d.ts.map +0 -1
- package/dist/components/Indices/type.js +0 -2
- package/dist/components/Indices/type.js.map +0 -1
- package/dist/components/LPRequestTable/LPRequestTable.d.ts +0 -5
- package/dist/components/LPRequestTable/LPRequestTable.d.ts.map +0 -1
- package/dist/components/LPRequestTable/LPRequestTable.js +0 -108
- package/dist/components/LPRequestTable/LPRequestTable.js.map +0 -1
- package/dist/components/LPRequestTable/style.d.ts +0 -5
- package/dist/components/LPRequestTable/style.d.ts.map +0 -1
- package/dist/components/LPRequestTable/style.js +0 -12
- package/dist/components/LPRequestTable/style.js.map +0 -1
- package/dist/components/LPRequestTable/type.d.ts +0 -30
- package/dist/components/LPRequestTable/type.d.ts.map +0 -1
- package/dist/components/LPRequestTable/type.js +0 -2
- package/dist/components/LPRequestTable/type.js.map +0 -1
- package/dist/components/LPSideNav/LPSideNav.d.ts +0 -10
- package/dist/components/LPSideNav/LPSideNav.d.ts.map +0 -1
- package/dist/components/LPSideNav/LPSideNav.js +0 -76
- package/dist/components/LPSideNav/LPSideNav.js.map +0 -1
- package/dist/components/LPSideNav/style.d.ts +0 -8
- package/dist/components/LPSideNav/style.d.ts.map +0 -1
- package/dist/components/LPSideNav/style.js +0 -15
- package/dist/components/LPSideNav/style.js.map +0 -1
- package/dist/components/LPSideNav/type.d.ts +0 -19
- package/dist/components/LPSideNav/type.d.ts.map +0 -1
- package/dist/components/LPSideNav/type.js +0 -2
- package/dist/components/LPSideNav/type.js.map +0 -1
- package/dist/components/LPTopBar/LPTopBar.d.ts +0 -5
- package/dist/components/LPTopBar/LPTopBar.d.ts.map +0 -1
- package/dist/components/LPTopBar/LPTopBar.js +0 -177
- package/dist/components/LPTopBar/LPTopBar.js.map +0 -1
- package/dist/components/LPTopBar/style.d.ts +0 -20
- package/dist/components/LPTopBar/style.d.ts.map +0 -1
- package/dist/components/LPTopBar/style.js +0 -27
- package/dist/components/LPTopBar/style.js.map +0 -1
- package/dist/components/LPTopBar/type.d.ts +0 -20
- package/dist/components/LPTopBar/type.d.ts.map +0 -1
- package/dist/components/LPTopBar/type.js +0 -2
- package/dist/components/LPTopBar/type.js.map +0 -1
- package/dist/components/LoadingShimmer/LoadingShimmer.d.ts +0 -5
- package/dist/components/LoadingShimmer/LoadingShimmer.d.ts.map +0 -1
- package/dist/components/LoadingShimmer/LoadingShimmer.js +0 -13
- package/dist/components/LoadingShimmer/LoadingShimmer.js.map +0 -1
- package/dist/components/LoadingShimmer/style.d.ts +0 -3
- package/dist/components/LoadingShimmer/style.d.ts.map +0 -1
- package/dist/components/LoadingShimmer/style.js +0 -10
- package/dist/components/LoadingShimmer/style.js.map +0 -1
- package/dist/components/LoadingShimmer/type.d.ts +0 -6
- package/dist/components/LoadingShimmer/type.d.ts.map +0 -1
- package/dist/components/LoadingShimmer/type.js +0 -2
- package/dist/components/LoadingShimmer/type.js.map +0 -1
- package/dist/components/LoadingSpinner/LoadingSpinner.d.ts +0 -5
- package/dist/components/LoadingSpinner/LoadingSpinner.d.ts.map +0 -1
- package/dist/components/LoadingSpinner/LoadingSpinner.js +0 -13
- package/dist/components/LoadingSpinner/LoadingSpinner.js.map +0 -1
- package/dist/components/MarketData/MarketData.d.ts +0 -5
- package/dist/components/MarketData/MarketData.d.ts.map +0 -1
- package/dist/components/MarketData/MarketData.js +0 -25
- package/dist/components/MarketData/MarketData.js.map +0 -1
- package/dist/components/MarketData/style.d.ts +0 -9
- package/dist/components/MarketData/style.d.ts.map +0 -1
- package/dist/components/MarketData/style.js +0 -16
- package/dist/components/MarketData/style.js.map +0 -1
- package/dist/components/MarketData/type.d.ts +0 -10
- package/dist/components/MarketData/type.d.ts.map +0 -1
- package/dist/components/MarketData/type.js +0 -2
- package/dist/components/MarketData/type.js.map +0 -1
- package/dist/components/MarketMovers/MarketMovers.d.ts +0 -5
- package/dist/components/MarketMovers/MarketMovers.d.ts.map +0 -1
- package/dist/components/MarketMovers/MarketMovers.js +0 -77
- package/dist/components/MarketMovers/MarketMovers.js.map +0 -1
- package/dist/components/MarketMovers/style.d.ts +0 -6
- package/dist/components/MarketMovers/style.d.ts.map +0 -1
- package/dist/components/MarketMovers/style.js +0 -13
- package/dist/components/MarketMovers/style.js.map +0 -1
- package/dist/components/MarketMovers/type.d.ts +0 -13
- package/dist/components/MarketMovers/type.d.ts.map +0 -1
- package/dist/components/MarketMovers/type.js +0 -2
- package/dist/components/MarketMovers/type.js.map +0 -1
- package/dist/components/MenuBar/MenuBar.d.ts +0 -5
- package/dist/components/MenuBar/MenuBar.d.ts.map +0 -1
- package/dist/components/MenuBar/MenuBar.js +0 -10
- package/dist/components/MenuBar/MenuBar.js.map +0 -1
- package/dist/components/MenuBar/style.d.ts +0 -3
- package/dist/components/MenuBar/style.d.ts.map +0 -1
- package/dist/components/MenuBar/style.js +0 -10
- package/dist/components/MenuBar/style.js.map +0 -1
- package/dist/components/MenuBar/type.d.ts +0 -9
- package/dist/components/MenuBar/type.d.ts.map +0 -1
- package/dist/components/MenuBar/type.js +0 -2
- package/dist/components/MenuBar/type.js.map +0 -1
- package/dist/components/NewsCard/NewsCard.d.ts +0 -5
- package/dist/components/NewsCard/NewsCard.d.ts.map +0 -1
- package/dist/components/NewsCard/NewsCard.js +0 -21
- package/dist/components/NewsCard/NewsCard.js.map +0 -1
- package/dist/components/NewsCard/style.d.ts +0 -7
- package/dist/components/NewsCard/style.d.ts.map +0 -1
- package/dist/components/NewsCard/style.js +0 -14
- package/dist/components/NewsCard/style.js.map +0 -1
- package/dist/components/NewsCard/type.d.ts +0 -11
- package/dist/components/NewsCard/type.d.ts.map +0 -1
- package/dist/components/NewsCard/type.js +0 -2
- package/dist/components/NewsCard/type.js.map +0 -1
- package/dist/components/NewsFilterBar/NewsFilterBar.d.ts +0 -5
- package/dist/components/NewsFilterBar/NewsFilterBar.d.ts.map +0 -1
- package/dist/components/NewsFilterBar/NewsFilterBar.js +0 -34
- package/dist/components/NewsFilterBar/NewsFilterBar.js.map +0 -1
- package/dist/components/NewsFilterBar/style.d.ts +0 -3
- package/dist/components/NewsFilterBar/style.d.ts.map +0 -1
- package/dist/components/NewsFilterBar/style.js +0 -10
- package/dist/components/NewsFilterBar/style.js.map +0 -1
- package/dist/components/NewsFilterBar/type.d.ts +0 -14
- package/dist/components/NewsFilterBar/type.d.ts.map +0 -1
- package/dist/components/NewsFilterBar/type.js +0 -2
- package/dist/components/NewsFilterBar/type.js.map +0 -1
- package/dist/components/NewsSourceTag/NewsSourceTag.d.ts +0 -5
- package/dist/components/NewsSourceTag/NewsSourceTag.d.ts.map +0 -1
- package/dist/components/NewsSourceTag/NewsSourceTag.js +0 -13
- package/dist/components/NewsSourceTag/NewsSourceTag.js.map +0 -1
- package/dist/components/NewsSourceTag/style.d.ts +0 -2
- package/dist/components/NewsSourceTag/style.d.ts.map +0 -1
- package/dist/components/NewsSourceTag/style.js +0 -9
- package/dist/components/NewsSourceTag/style.js.map +0 -1
- package/dist/components/NewsSourceTag/type.d.ts +0 -6
- package/dist/components/NewsSourceTag/type.d.ts.map +0 -1
- package/dist/components/NewsSourceTag/type.js +0 -2
- package/dist/components/NewsSourceTag/type.js.map +0 -1
- package/dist/components/NewsTitleBar/NewsTitleBar.d.ts +0 -5
- package/dist/components/NewsTitleBar/NewsTitleBar.d.ts.map +0 -1
- package/dist/components/NewsTitleBar/NewsTitleBar.js +0 -20
- package/dist/components/NewsTitleBar/NewsTitleBar.js.map +0 -1
- package/dist/components/NewsTitleBar/style.d.ts +0 -2
- package/dist/components/NewsTitleBar/style.d.ts.map +0 -1
- package/dist/components/NewsTitleBar/style.js +0 -9
- package/dist/components/NewsTitleBar/style.js.map +0 -1
- package/dist/components/NewsTitleBar/type.d.ts +0 -5
- package/dist/components/NewsTitleBar/type.d.ts.map +0 -1
- package/dist/components/NewsTitleBar/type.js +0 -2
- package/dist/components/NewsTitleBar/type.js.map +0 -1
- package/dist/components/PasswordField/PasswordField.d.ts +0 -5
- package/dist/components/PasswordField/PasswordField.d.ts.map +0 -1
- package/dist/components/PasswordField/PasswordField.js +0 -60
- package/dist/components/PasswordField/PasswordField.js.map +0 -1
- package/dist/components/PasswordField/style.d.ts +0 -6
- package/dist/components/PasswordField/style.d.ts.map +0 -1
- package/dist/components/PasswordField/style.js +0 -13
- package/dist/components/PasswordField/style.js.map +0 -1
- package/dist/components/PasswordField/type.d.ts +0 -8
- package/dist/components/PasswordField/type.d.ts.map +0 -1
- package/dist/components/PasswordField/type.js +0 -2
- package/dist/components/PasswordField/type.js.map +0 -1
- package/dist/components/PaymentMethodsTable/PaymentMethods.d.ts +0 -5
- package/dist/components/PaymentMethodsTable/PaymentMethods.d.ts.map +0 -1
- package/dist/components/PaymentMethodsTable/PaymentMethods.js +0 -40
- package/dist/components/PaymentMethodsTable/PaymentMethods.js.map +0 -1
- package/dist/components/PaymentMethodsTable/style.d.ts +0 -5
- package/dist/components/PaymentMethodsTable/style.d.ts.map +0 -1
- package/dist/components/PaymentMethodsTable/style.js +0 -12
- package/dist/components/PaymentMethodsTable/style.js.map +0 -1
- package/dist/components/PaymentMethodsTable/type.d.ts +0 -10
- package/dist/components/PaymentMethodsTable/type.d.ts.map +0 -1
- package/dist/components/PaymentMethodsTable/type.js +0 -2
- package/dist/components/PaymentMethodsTable/type.js.map +0 -1
- package/dist/components/ProvidersTable/ProvidersTable.d.ts +0 -5
- package/dist/components/ProvidersTable/ProvidersTable.d.ts.map +0 -1
- package/dist/components/ProvidersTable/ProvidersTable.js +0 -41
- package/dist/components/ProvidersTable/ProvidersTable.js.map +0 -1
- package/dist/components/ProvidersTable/style.d.ts +0 -5
- package/dist/components/ProvidersTable/style.d.ts.map +0 -1
- package/dist/components/ProvidersTable/style.js +0 -12
- package/dist/components/ProvidersTable/style.js.map +0 -1
- package/dist/components/ProvidersTable/type.d.ts +0 -12
- package/dist/components/ProvidersTable/type.d.ts.map +0 -1
- package/dist/components/ProvidersTable/type.js +0 -2
- package/dist/components/ProvidersTable/type.js.map +0 -1
- package/dist/components/RateHistory/RateHistory.d.ts +0 -5
- package/dist/components/RateHistory/RateHistory.d.ts.map +0 -1
- package/dist/components/RateHistory/RateHistory.js +0 -47
- package/dist/components/RateHistory/RateHistory.js.map +0 -1
- package/dist/components/RateHistory/style.d.ts +0 -7
- package/dist/components/RateHistory/style.d.ts.map +0 -1
- package/dist/components/RateHistory/style.js +0 -14
- package/dist/components/RateHistory/style.js.map +0 -1
- package/dist/components/RateHistory/type.d.ts +0 -13
- package/dist/components/RateHistory/type.d.ts.map +0 -1
- package/dist/components/RateHistory/type.js +0 -2
- package/dist/components/RateHistory/type.js.map +0 -1
- package/dist/components/RequestForm/RequestForm.d.ts +0 -5
- package/dist/components/RequestForm/RequestForm.d.ts.map +0 -1
- package/dist/components/RequestForm/RequestForm.js +0 -69
- package/dist/components/RequestForm/RequestForm.js.map +0 -1
- package/dist/components/RequestForm/style.d.ts +0 -3
- package/dist/components/RequestForm/style.d.ts.map +0 -1
- package/dist/components/RequestForm/style.js +0 -10
- package/dist/components/RequestForm/style.js.map +0 -1
- package/dist/components/RequestForm/type.d.ts +0 -19
- package/dist/components/RequestForm/type.d.ts.map +0 -1
- package/dist/components/RequestForm/type.js +0 -2
- package/dist/components/RequestForm/type.js.map +0 -1
- package/dist/components/Ribbon/Ribbon.d.ts +0 -5
- package/dist/components/Ribbon/Ribbon.d.ts.map +0 -1
- package/dist/components/Ribbon/Ribbon.js +0 -9
- package/dist/components/Ribbon/Ribbon.js.map +0 -1
- package/dist/components/Ribbon/style.d.ts +0 -3
- package/dist/components/Ribbon/style.d.ts.map +0 -1
- package/dist/components/Ribbon/style.js +0 -10
- package/dist/components/Ribbon/style.js.map +0 -1
- package/dist/components/Ribbon/type.d.ts +0 -7
- package/dist/components/Ribbon/type.d.ts.map +0 -1
- package/dist/components/Ribbon/type.js +0 -2
- package/dist/components/Ribbon/type.js.map +0 -1
- package/dist/components/SSXBar/SSXBar.d.ts +0 -3
- package/dist/components/SSXBar/SSXBar.d.ts.map +0 -1
- package/dist/components/SSXBar/SSXBar.js +0 -19
- package/dist/components/SSXBar/SSXBar.js.map +0 -1
- package/dist/components/SSXBar/style.d.ts +0 -2
- package/dist/components/SSXBar/style.d.ts.map +0 -1
- package/dist/components/SSXBar/style.js +0 -9
- package/dist/components/SSXBar/style.js.map +0 -1
- package/dist/components/SearchBar/SearchBar.d.ts +0 -5
- package/dist/components/SearchBar/SearchBar.d.ts.map +0 -1
- package/dist/components/SearchBar/SearchBar.js +0 -27
- package/dist/components/SearchBar/SearchBar.js.map +0 -1
- package/dist/components/SearchBar/style.d.ts +0 -4
- package/dist/components/SearchBar/style.d.ts.map +0 -1
- package/dist/components/SearchBar/style.js +0 -11
- package/dist/components/SearchBar/style.js.map +0 -1
- package/dist/components/SearchBar/type.d.ts +0 -6
- package/dist/components/SearchBar/type.d.ts.map +0 -1
- package/dist/components/SearchBar/type.js +0 -2
- package/dist/components/SearchBar/type.js.map +0 -1
- package/dist/components/SearchResultsBar/SearchResultsBar.d.ts +0 -5
- package/dist/components/SearchResultsBar/SearchResultsBar.d.ts.map +0 -1
- package/dist/components/SearchResultsBar/SearchResultsBar.js +0 -18
- package/dist/components/SearchResultsBar/SearchResultsBar.js.map +0 -1
- package/dist/components/SearchResultsBar/style.d.ts +0 -2
- package/dist/components/SearchResultsBar/style.d.ts.map +0 -1
- package/dist/components/SearchResultsBar/style.js +0 -9
- package/dist/components/SearchResultsBar/style.js.map +0 -1
- package/dist/components/SearchResultsBar/type.d.ts +0 -6
- package/dist/components/SearchResultsBar/type.d.ts.map +0 -1
- package/dist/components/SearchResultsBar/type.js +0 -2
- package/dist/components/SearchResultsBar/type.js.map +0 -1
- package/dist/components/SideModal/SideModal.d.ts +0 -5
- package/dist/components/SideModal/SideModal.d.ts.map +0 -1
- package/dist/components/SideModal/SideModal.js +0 -27
- package/dist/components/SideModal/SideModal.js.map +0 -1
- package/dist/components/SideModal/style.d.ts +0 -7
- package/dist/components/SideModal/style.d.ts.map +0 -1
- package/dist/components/SideModal/style.js +0 -14
- package/dist/components/SideModal/style.js.map +0 -1
- package/dist/components/SideModal/type.d.ts +0 -9
- package/dist/components/SideModal/type.d.ts.map +0 -1
- package/dist/components/SideModal/type.js +0 -2
- package/dist/components/SideModal/type.js.map +0 -1
- package/dist/components/SmallNewsCard/SmallNewsCard.d.ts +0 -5
- package/dist/components/SmallNewsCard/SmallNewsCard.d.ts.map +0 -1
- package/dist/components/SmallNewsCard/SmallNewsCard.js +0 -19
- package/dist/components/SmallNewsCard/SmallNewsCard.js.map +0 -1
- package/dist/components/SmallNewsCard/style.d.ts +0 -6
- package/dist/components/SmallNewsCard/style.d.ts.map +0 -1
- package/dist/components/SmallNewsCard/style.js +0 -13
- package/dist/components/SmallNewsCard/style.js.map +0 -1
- package/dist/components/SmallNewsCard/type.d.ts +0 -10
- package/dist/components/SmallNewsCard/type.d.ts.map +0 -1
- package/dist/components/SmallNewsCard/type.js +0 -2
- package/dist/components/SmallNewsCard/type.js.map +0 -1
- package/dist/components/StatusBadge/StatusBadge.d.ts +0 -5
- package/dist/components/StatusBadge/StatusBadge.d.ts.map +0 -1
- package/dist/components/StatusBadge/StatusBadge.js +0 -8
- package/dist/components/StatusBadge/StatusBadge.js.map +0 -1
- package/dist/components/StatusBadge/style.d.ts +0 -2
- package/dist/components/StatusBadge/style.d.ts.map +0 -1
- package/dist/components/StatusBadge/style.js +0 -9
- package/dist/components/StatusBadge/style.js.map +0 -1
- package/dist/components/StatusBadge/type.d.ts +0 -6
- package/dist/components/StatusBadge/type.d.ts.map +0 -1
- package/dist/components/StatusBadge/type.js +0 -2
- package/dist/components/StatusBadge/type.js.map +0 -1
- package/dist/components/StocksTicker/StocksTicker.d.ts +0 -5
- package/dist/components/StocksTicker/StocksTicker.d.ts.map +0 -1
- package/dist/components/StocksTicker/StocksTicker.js +0 -53
- package/dist/components/StocksTicker/StocksTicker.js.map +0 -1
- package/dist/components/StocksTicker/style.d.ts +0 -3
- package/dist/components/StocksTicker/style.d.ts.map +0 -1
- package/dist/components/StocksTicker/style.js +0 -10
- package/dist/components/StocksTicker/style.js.map +0 -1
- package/dist/components/StocksTicker/type.d.ts +0 -11
- package/dist/components/StocksTicker/type.d.ts.map +0 -1
- package/dist/components/StocksTicker/type.js +0 -2
- package/dist/components/StocksTicker/type.js.map +0 -1
- package/dist/components/SystemConfigTable/SystemConfigTable.d.ts +0 -5
- package/dist/components/SystemConfigTable/SystemConfigTable.d.ts.map +0 -1
- package/dist/components/SystemConfigTable/SystemConfigTable.js +0 -40
- package/dist/components/SystemConfigTable/SystemConfigTable.js.map +0 -1
- package/dist/components/SystemConfigTable/style.d.ts +0 -5
- package/dist/components/SystemConfigTable/style.d.ts.map +0 -1
- package/dist/components/SystemConfigTable/style.js +0 -12
- package/dist/components/SystemConfigTable/style.js.map +0 -1
- package/dist/components/SystemConfigTable/type.d.ts +0 -10
- package/dist/components/SystemConfigTable/type.d.ts.map +0 -1
- package/dist/components/SystemConfigTable/type.js +0 -2
- package/dist/components/SystemConfigTable/type.js.map +0 -1
- package/dist/components/Tab/Tab.d.ts +0 -5
- package/dist/components/Tab/Tab.d.ts.map +0 -1
- package/dist/components/Tab/Tab.js +0 -15
- package/dist/components/Tab/Tab.js.map +0 -1
- package/dist/components/Tab/style.d.ts +0 -4
- package/dist/components/Tab/style.d.ts.map +0 -1
- package/dist/components/Tab/style.js +0 -11
- package/dist/components/Tab/style.js.map +0 -1
- package/dist/components/Tab/type.d.ts +0 -9
- package/dist/components/Tab/type.d.ts.map +0 -1
- package/dist/components/Tab/type.js +0 -2
- package/dist/components/Tab/type.js.map +0 -1
- package/dist/components/Table/helpers.d.ts +0 -7
- package/dist/components/Table/helpers.d.ts.map +0 -1
- package/dist/components/Table/helpers.js +0 -79
- package/dist/components/Table/helpers.js.map +0 -1
- package/dist/components/Table/index.d.ts +0 -2
- package/dist/components/Table/index.d.ts.map +0 -1
- package/dist/components/Table/index.js +0 -3
- package/dist/components/Table/index.js.map +0 -1
- package/dist/components/Table/style.d.ts +0 -2
- package/dist/components/Table/style.d.ts.map +0 -1
- package/dist/components/Table/style.js +0 -8
- package/dist/components/Table/style.js.map +0 -1
- package/dist/components/Table/table.d.ts +0 -5
- package/dist/components/Table/table.d.ts.map +0 -1
- package/dist/components/Table/table.js +0 -195
- package/dist/components/Table/table.js.map +0 -1
- package/dist/components/Table/type.d.ts +0 -69
- package/dist/components/Table/type.d.ts.map +0 -1
- package/dist/components/Table/type.js +0 -2
- package/dist/components/Table/type.js.map +0 -1
- package/dist/components/TextArea/TextArea.d.ts +0 -5
- package/dist/components/TextArea/TextArea.d.ts.map +0 -1
- package/dist/components/TextArea/TextArea.js +0 -51
- package/dist/components/TextArea/TextArea.js.map +0 -1
- package/dist/components/TextArea/style.d.ts +0 -5
- package/dist/components/TextArea/style.d.ts.map +0 -1
- package/dist/components/TextArea/style.js +0 -12
- package/dist/components/TextArea/style.js.map +0 -1
- package/dist/components/TextArea/type.d.ts +0 -8
- package/dist/components/TextArea/type.d.ts.map +0 -1
- package/dist/components/TextArea/type.js +0 -2
- package/dist/components/TextArea/type.js.map +0 -1
- package/dist/components/TextField/TextField.d.ts +0 -5
- package/dist/components/TextField/TextField.d.ts.map +0 -1
- package/dist/components/TextField/TextField.js +0 -51
- package/dist/components/TextField/TextField.js.map +0 -1
- package/dist/components/TextField/style.d.ts +0 -5
- package/dist/components/TextField/style.d.ts.map +0 -1
- package/dist/components/TextField/style.js +0 -12
- package/dist/components/TextField/style.js.map +0 -1
- package/dist/components/TextField/type.d.ts +0 -8
- package/dist/components/TextField/type.d.ts.map +0 -1
- package/dist/components/TextField/type.js +0 -2
- package/dist/components/TextField/type.js.map +0 -1
- package/dist/components/TransactionDetails/TransactionDetails.d.ts +0 -5
- package/dist/components/TransactionDetails/TransactionDetails.d.ts.map +0 -1
- package/dist/components/TransactionDetails/TransactionDetails.js +0 -34
- package/dist/components/TransactionDetails/TransactionDetails.js.map +0 -1
- package/dist/components/TransactionDetails/helpers.d.ts +0 -2
- package/dist/components/TransactionDetails/helpers.d.ts.map +0 -1
- package/dist/components/TransactionDetails/helpers.js +0 -9
- package/dist/components/TransactionDetails/helpers.js.map +0 -1
- package/dist/components/TransactionDetails/style.d.ts +0 -3
- package/dist/components/TransactionDetails/style.d.ts.map +0 -1
- package/dist/components/TransactionDetails/style.js +0 -10
- package/dist/components/TransactionDetails/style.js.map +0 -1
- package/dist/components/TransactionDetails/type.d.ts +0 -18
- package/dist/components/TransactionDetails/type.d.ts.map +0 -1
- package/dist/components/TransactionDetails/type.js +0 -2
- package/dist/components/TransactionDetails/type.js.map +0 -1
- package/dist/components/TransactionDetailsWithPayment/TransactionDetailsWithPayment.d.ts +0 -5
- package/dist/components/TransactionDetailsWithPayment/TransactionDetailsWithPayment.d.ts.map +0 -1
- package/dist/components/TransactionDetailsWithPayment/TransactionDetailsWithPayment.js +0 -51
- package/dist/components/TransactionDetailsWithPayment/TransactionDetailsWithPayment.js.map +0 -1
- package/dist/components/TransactionDetailsWithPayment/style.d.ts +0 -3
- package/dist/components/TransactionDetailsWithPayment/style.d.ts.map +0 -1
- package/dist/components/TransactionDetailsWithPayment/style.js +0 -10
- package/dist/components/TransactionDetailsWithPayment/style.js.map +0 -1
- package/dist/components/TransactionDetailsWithPayment/type.d.ts +0 -25
- package/dist/components/TransactionDetailsWithPayment/type.d.ts.map +0 -1
- package/dist/components/TransactionDetailsWithPayment/type.js +0 -2
- package/dist/components/TransactionDetailsWithPayment/type.js.map +0 -1
- package/dist/components/UpdateUserActions/UpdateUserActions.d.ts +0 -5
- package/dist/components/UpdateUserActions/UpdateUserActions.d.ts.map +0 -1
- package/dist/components/UpdateUserActions/UpdateUserActions.js +0 -114
- package/dist/components/UpdateUserActions/UpdateUserActions.js.map +0 -1
- package/dist/components/UpdateUserActions/style.d.ts +0 -6
- package/dist/components/UpdateUserActions/style.d.ts.map +0 -1
- package/dist/components/UpdateUserActions/style.js +0 -13
- package/dist/components/UpdateUserActions/style.js.map +0 -1
- package/dist/components/UpdateUserActions/type.d.ts +0 -17
- package/dist/components/UpdateUserActions/type.d.ts.map +0 -1
- package/dist/components/UpdateUserActions/type.js +0 -2
- package/dist/components/UpdateUserActions/type.js.map +0 -1
- package/dist/components/UserActions/UserActions.d.ts +0 -5
- package/dist/components/UserActions/UserActions.d.ts.map +0 -1
- package/dist/components/UserActions/UserActions.js +0 -90
- package/dist/components/UserActions/UserActions.js.map +0 -1
- package/dist/components/UserActions/style.d.ts +0 -6
- package/dist/components/UserActions/style.d.ts.map +0 -1
- package/dist/components/UserActions/style.js +0 -13
- package/dist/components/UserActions/style.js.map +0 -1
- package/dist/components/UserActions/type.d.ts +0 -21
- package/dist/components/UserActions/type.d.ts.map +0 -1
- package/dist/components/UserActions/type.js +0 -2
- package/dist/components/UserActions/type.js.map +0 -1
- package/dist/components/UserRolesTable/UserRolesTable.d.ts +0 -5
- package/dist/components/UserRolesTable/UserRolesTable.d.ts.map +0 -1
- package/dist/components/UserRolesTable/UserRolesTable.js +0 -38
- package/dist/components/UserRolesTable/UserRolesTable.js.map +0 -1
- package/dist/components/UserRolesTable/style.d.ts +0 -5
- package/dist/components/UserRolesTable/style.d.ts.map +0 -1
- package/dist/components/UserRolesTable/style.js +0 -12
- package/dist/components/UserRolesTable/style.js.map +0 -1
- package/dist/components/UserRolesTable/type.d.ts +0 -9
- package/dist/components/UserRolesTable/type.d.ts.map +0 -1
- package/dist/components/UserRolesTable/type.js +0 -2
- package/dist/components/UserRolesTable/type.js.map +0 -1
- package/dist/components/UsersTable/UsersTable.d.ts +0 -5
- package/dist/components/UsersTable/UsersTable.d.ts.map +0 -1
- package/dist/components/UsersTable/UsersTable.js +0 -43
- package/dist/components/UsersTable/UsersTable.js.map +0 -1
- package/dist/components/UsersTable/style.d.ts +0 -5
- package/dist/components/UsersTable/style.d.ts.map +0 -1
- package/dist/components/UsersTable/style.js +0 -12
- package/dist/components/UsersTable/style.js.map +0 -1
- package/dist/components/UsersTable/type.d.ts +0 -12
- package/dist/components/UsersTable/type.d.ts.map +0 -1
- package/dist/components/UsersTable/type.js +0 -2
- package/dist/components/UsersTable/type.js.map +0 -1
- package/dist/components/WidgetTitle/WidgetTitle.d.ts +0 -5
- package/dist/components/WidgetTitle/WidgetTitle.d.ts.map +0 -1
- package/dist/components/WidgetTitle/WidgetTitle.js +0 -19
- package/dist/components/WidgetTitle/WidgetTitle.js.map +0 -1
- package/dist/components/WidgetTitle/style.d.ts +0 -2
- package/dist/components/WidgetTitle/style.d.ts.map +0 -1
- package/dist/components/WidgetTitle/style.js +0 -9
- package/dist/components/WidgetTitle/style.js.map +0 -1
- package/dist/components/WidgetTitle/type.d.ts +0 -5
- package/dist/components/WidgetTitle/type.d.ts.map +0 -1
- package/dist/components/WidgetTitle/type.js +0 -2
- package/dist/components/WidgetTitle/type.js.map +0 -1
- package/dist/components/index.d.ts +0 -61
- package/dist/components/index.d.ts.map +0 -1
- package/dist/components/index.js +0 -61
- package/dist/components/index.js.map +0 -1
- package/dist/index.d.ts +0 -2
- package/dist/index.d.ts.map +0 -1
- package/dist/index.es.js +0 -36
- package/dist/index.es.js.map +0 -1
- package/dist/index.js +0 -20219
- package/dist/index.js.map +0 -1
- package/dist/index.min.js +0 -36
- package/dist/index.min.js.map +0 -1
- package/dist/theme.d.ts +0 -59
- package/dist/theme.d.ts.map +0 -1
- package/dist/theme.js +0 -64
- package/dist/theme.js.map +0 -1
- package/dist/utils.d.ts +0 -8
- package/dist/utils.d.ts.map +0 -1
- package/dist/utils.js +0 -675
- package/dist/utils.js.map +0 -1
package/dist/index.min.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.min.js","sources":["../node_modules/react/cjs/react.production.min.js","../node_modules/react/cjs/react.development.js","../node_modules/react/index.js","../src/theme.ts","../src/components/Button/style.ts","../src/components/Button/Button.tsx","../src/components/ActionFailed/style.ts","../src/components/ActionSuccess/style.ts","../src/components/ActionSuccess/ActionSuccess.tsx","../src/components/AppActionsTable/style.ts","../src/components/AppFormsTable/style.ts","../src/components/AppModulesTable/style.ts","../src/components/AuditLog/style.ts","../src/components/BankAccounts/style.ts","../src/components/ButtonOutline/style.ts","../src/components/ButtonOutline/OutlineButton.tsx","../node_modules/style-inject/dist/style-inject.es.js","../src/components/LoadingSpinner/LoadingSpinner.tsx","../src/components/BankSelector/style.ts","../src/components/BreadcrumbBar/style.ts","../src/components/BrokersTable/style.ts","../node_modules/chart.js/dist/chunks/helpers.segment.mjs","../node_modules/chart.js/dist/chart.mjs","../node_modules/react-chartjs-2/src/utils.ts","../node_modules/react-chartjs-2/src/chart.tsx","../node_modules/react-chartjs-2/src/typedCharts.tsx","../node_modules/dayjs/dayjs.min.js","../src/components/Chart/style.ts","../src/components/Chart/Chart.tsx","../src/components/ChartMedium/style.ts","../src/components/ChartMedium/ChartMedium.tsx","../src/components/ChartSmall/style.ts","../src/components/ChartSmall/ChartSmall.tsx","../src/components/CookieConsent/style.ts","../src/components/CountrySelector/style.ts","../src/components/CountrySelector/CountrySelector.tsx","../src/components/CountrySelector/default.svg","../src/components/CurrencyPairs/style.ts","../src/components/DatePicker/style.ts","../src/components/DatePicker/DatePicker.tsx","../src/components/DropdownList/style.ts","../src/components/DropdownList/DropdownList.tsx","../src/components/Dropshadows/style.ts","../src/components/ExchangeRates/style.ts","../src/components/Footer/style.ts","../src/components/Indices/style.ts","../src/components/LoadingShimmer/style.ts","../src/components/LPRequestTable/style.ts","../src/components/StatusBadge/style.ts","../src/components/StatusBadge/StatusBadge.tsx","../src/components/LPSideNav/style.ts","../src/components/LPSideNav/LPSideNav.tsx","../src/components/LPTopBar/style.ts","../src/components/LPTopBar/client-logo.png","../src/components/MarketData/style.ts","../src/components/MarketMovers/style.ts","../src/components/Tab/style.ts","../src/components/Tab/Tab.tsx","../src/components/MenuBar/style.ts","../src/components/NewsCard/style.ts","../src/components/NewsFilterBar/style.ts","../src/components/NewsSourceTag/style.ts","../src/components/NewsTitleBar/style.ts","../src/components/PasswordField/style.ts","../src/components/PaymentMethodsTable/style.ts","../src/components/ProvidersTable/style.ts","../src/components/RateHistory/style.ts","../src/components/RequestForm/style.ts","../src/components/TextField/style.ts","../src/components/TextField/TextField.tsx","../src/components/Ribbon/style.ts","../src/components/SearchBar/style.ts","../src/components/SearchResultsBar/style.ts","../src/components/SideModal/style.ts","../src/components/SmallNewsCard/style.tsx","../node_modules/react-fast-marquee/src/components/Marquee.tsx","../src/components/StocksTicker/style.ts","../src/components/SystemConfigTable/style.ts","../src/components/Table/style.ts","../node_modules/@heroicons/react/24/solid/esm/ChevronDownIcon.js","../node_modules/@heroicons/react/24/solid/esm/XMarkIcon.js","../src/components/TextArea/style.ts","../src/components/TransactionDetails/style.ts","../src/components/TransactionDetails/helpers.ts","../src/components/TransactionDetails/TransactionDetails.tsx","../src/components/TransactionDetailsWithPayment/style.ts","../src/components/UpdateUserActions/style.ts","../src/components/UserActions/style.ts","../src/components/UserRolesTable/style.ts","../src/components/UsersTable/style.ts","../src/components/WidgetTitle/style.ts","../src/components/ActionFailed/ActionFailed.tsx","../src/components/AppActionsTable/AppActionsTable.tsx","../src/components/AppFormsTable/AppFormsTable.tsx","../src/components/AppModulesTable/AppModulesTable.tsx","../src/components/AuditLog/AuditLog.tsx","../src/components/BankAccounts/BankAccounts.tsx","../src/components/BankAccounts/default-bank.svg","../src/components/BankSelector/BankSelector.tsx","../src/components/BankSelector/img/default-bank-selected.svg","../src/components/BankSelector/img/default-bank.svg","../src/components/BreadcrumbBar/BreadcrumbBar.tsx","../src/components/BrokersTable/BrokersTable.tsx","../src/components/Chart/helpers.ts","../src/components/ChartMedium/helpers.ts","../src/components/ChartSmall/helpers.ts","../src/components/CookieConsent/CookieConsent.tsx","../src/components/CurrencyPairs/CurrencyPairsTable.tsx","../src/components/Dropshadows/DropShadows.tsx","../src/components/ExchangeRates/ExchangeRates.tsx","../src/components/Footer/Footer.tsx","../src/components/Indices/Indices.tsx","../src/components/LPRequestTable/LPRequestTable.tsx","../src/components/LPTopBar/LPTopBar.tsx","../src/components/LoadingShimmer/LoadingShimmer.tsx","../src/components/MarketData/MarketData.tsx","../src/components/MarketMovers/MarketMovers.tsx","../src/components/MenuBar/MenuBar.tsx","../src/components/NewsCard/NewsCard.tsx","../src/components/NewsFilterBar/NewsFilterBar.tsx","../src/components/NewsSourceTag/NewsSourceTag.tsx","../src/components/NewsTitleBar/NewsTitleBar.tsx","../src/components/PasswordField/PasswordField.tsx","../src/components/PaymentMethodsTable/PaymentMethods.tsx","../src/components/ProvidersTable/ProvidersTable.tsx","../src/components/RateHistory/RateHistory.tsx","../src/components/RequestForm/RequestForm.tsx","../src/components/Ribbon/Ribbon.tsx","../src/components/SearchBar/SearchBar.tsx","../src/components/SearchResultsBar/SearchResultsBar.tsx","../src/components/SideModal/SideModal.tsx","../src/components/SmallNewsCard/SmallNewsCard.tsx","../src/components/StocksTicker/StocksTicker.tsx","../src/components/SystemConfigTable/SystemConfigTable.tsx","../src/components/Table/table.tsx","../src/components/Table/helpers.ts","../src/components/TextArea/TextArea.tsx","../src/components/TransactionDetails/prov-default.png","../src/components/TransactionDetailsWithPayment/TransactionDetailsWithPayment.tsx","../src/components/TransactionDetailsWithPayment/prov-default.png","../src/components/UpdateUserActions/UpdateUserActions.tsx","../src/components/UserActions/UserActions.tsx","../src/components/UserRolesTable/UserRolesTable.tsx","../src/components/UsersTable/UsersTable.tsx","../src/components/WidgetTitle/WidgetTitle.tsx"],"sourcesContent":["/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];c.children=f}if(a&&a.defaultProps)for(d in g=a.defaultProps,g)void 0===c[d]&&(c[d]=g[d]);return{$$typeof:l,type:a,key:k,ref:h,props:c,_owner:K.current}}\nfunction N(a,b){return{$$typeof:l,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===l}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g;function Q(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\nfunction R(a,b,e,d,c){var k=typeof a;if(\"undefined\"===k||\"boolean\"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case \"string\":case \"number\":h=!0;break;case \"object\":switch(a.$$typeof){case l:case n:h=!0}}if(h)return h=a,c=c(h),a=\"\"===d?\".\"+Q(h,0):d,I(c)?(e=\"\",null!=a&&(e=a.replace(P,\"$&/\")+\"/\"),R(c,b,e,\"\",function(a){return a})):null!=c&&(O(c)&&(c=N(c,e+(!c.key||h&&h.key===c.key?\"\":(\"\"+c.key).replace(P,\"$&/\")+\"/\")+a)),b.push(c)),1;h=0;d=\"\"===d?\".\":d+\":\";if(I(a))for(var g=0;g<a.length;g++){k=\na[g];var f=d+Q(k,g);h+=R(k,b,e,f,c)}else if(f=A(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=d+Q(k,g++),h+=R(k,b,e,f,c);else if(\"object\"===k)throw b=String(a),Error(\"Objects are not valid as a React child (found: \"+(\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b)+\"). If you meant to render a collection of children, use an array instead.\");return h}\nfunction S(a,b,e){if(null==a)return a;var d=[],c=0;R(a,d,\"\",\"\",function(a){return b.call(e,a,c++)});return d}function T(a){if(-1===a._status){var b=a._result;b=b();b.then(function(b){if(0===a._status||-1===a._status)a._status=1,a._result=b},function(b){if(0===a._status||-1===a._status)a._status=2,a._result=b});-1===a._status&&(a._status=0,a._result=b)}if(1===a._status)return a._result.default;throw a._result;}\nvar U={current:null},V={transition:null},W={ReactCurrentDispatcher:U,ReactCurrentBatchConfig:V,ReactCurrentOwner:K};exports.Children={map:S,forEach:function(a,b,e){S(a,function(){b.apply(this,arguments)},e)},count:function(a){var b=0;S(a,function(){b++});return b},toArray:function(a){return S(a,function(a){return a})||[]},only:function(a){if(!O(a))throw Error(\"React.Children.only expected to receive a single React element child.\");return a}};exports.Component=E;exports.Fragment=p;\nexports.Profiler=r;exports.PureComponent=G;exports.StrictMode=q;exports.Suspense=w;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=W;\nexports.cloneElement=function(a,b,e){if(null===a||void 0===a)throw Error(\"React.cloneElement(...): The argument must be a React element, but you passed \"+a+\".\");var d=C({},a.props),c=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=K.current);void 0!==b.key&&(c=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)J.call(b,f)&&!L.hasOwnProperty(f)&&(d[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)d.children=e;else if(1<f){g=Array(f);\nfor(var m=0;m<f;m++)g[m]=arguments[m+2];d.children=g}return{$$typeof:l,type:a.type,key:c,ref:k,props:d,_owner:h}};exports.createContext=function(a){a={$$typeof:u,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null};a.Provider={$$typeof:t,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};\nexports.forwardRef=function(a){return{$$typeof:v,render:a}};exports.isValidElement=O;exports.lazy=function(a){return{$$typeof:y,_payload:{_status:-1,_result:a},_init:T}};exports.memo=function(a,b){return{$$typeof:x,type:a,compare:void 0===b?null:b}};exports.startTransition=function(a){var b=V.transition;V.transition={};try{a()}finally{V.transition=b}};exports.unstable_act=function(){throw Error(\"act(...) is not supported in production builds of React.\");};\nexports.useCallback=function(a,b){return U.current.useCallback(a,b)};exports.useContext=function(a){return U.current.useContext(a)};exports.useDebugValue=function(){};exports.useDeferredValue=function(a){return U.current.useDeferredValue(a)};exports.useEffect=function(a,b){return U.current.useEffect(a,b)};exports.useId=function(){return U.current.useId()};exports.useImperativeHandle=function(a,b,e){return U.current.useImperativeHandle(a,b,e)};\nexports.useInsertionEffect=function(a,b){return U.current.useInsertionEffect(a,b)};exports.useLayoutEffect=function(a,b){return U.current.useLayoutEffect(a,b)};exports.useMemo=function(a,b){return U.current.useMemo(a,b)};exports.useReducer=function(a,b,e){return U.current.useReducer(a,b,e)};exports.useRef=function(a){return U.current.useRef(a)};exports.useState=function(a){return U.current.useState(a)};exports.useSyncExternalStore=function(a,b,e){return U.current.useSyncExternalStore(a,b,e)};\nexports.useTransition=function(){return U.current.useTransition()};exports.version=\"18.2.0\";\n","/**\n * @license React\n * react.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n\n 'use strict';\n\n/* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart ===\n 'function'\n) {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());\n}\n var ReactVersion = '18.2.0';\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\nvar MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\nfunction getIteratorFn(maybeIterable) {\n if (maybeIterable === null || typeof maybeIterable !== 'object') {\n return null;\n }\n\n var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n\n if (typeof maybeIterator === 'function') {\n return maybeIterator;\n }\n\n return null;\n}\n\n/**\n * Keeps track of the current dispatcher.\n */\nvar ReactCurrentDispatcher = {\n /**\n * @internal\n * @type {ReactComponent}\n */\n current: null\n};\n\n/**\n * Keeps track of the current batch's configuration such as how long an update\n * should suspend for if it needs to.\n */\nvar ReactCurrentBatchConfig = {\n transition: null\n};\n\nvar ReactCurrentActQueue = {\n current: null,\n // Used to reproduce behavior of `batchedUpdates` in legacy mode.\n isBatchingLegacy: false,\n didScheduleLegacyUpdate: false\n};\n\n/**\n * Keeps track of the current owner.\n *\n * The current owner is the component who should own any components that are\n * currently being constructed.\n */\nvar ReactCurrentOwner = {\n /**\n * @internal\n * @type {ReactComponent}\n */\n current: null\n};\n\nvar ReactDebugCurrentFrame = {};\nvar currentExtraStackFrame = null;\nfunction setExtraStackFrame(stack) {\n {\n currentExtraStackFrame = stack;\n }\n}\n\n{\n ReactDebugCurrentFrame.setExtraStackFrame = function (stack) {\n {\n currentExtraStackFrame = stack;\n }\n }; // Stack implementation injected by the current renderer.\n\n\n ReactDebugCurrentFrame.getCurrentStack = null;\n\n ReactDebugCurrentFrame.getStackAddendum = function () {\n var stack = ''; // Add an extra top frame while an element is being validated\n\n if (currentExtraStackFrame) {\n stack += currentExtraStackFrame;\n } // Delegate to the injected renderer-specific implementation\n\n\n var impl = ReactDebugCurrentFrame.getCurrentStack;\n\n if (impl) {\n stack += impl() || '';\n }\n\n return stack;\n };\n}\n\n// -----------------------------------------------------------------------------\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\nvar enableCacheElement = false;\nvar enableTransitionTracing = false; // No known bugs, but needs performance testing\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n// stuff. Intended to enable React core members to more easily debug scheduling\n// issues in DEV builds.\n\nvar enableDebugTracing = false; // Track which Fiber(s) schedule render work.\n\nvar ReactSharedInternals = {\n ReactCurrentDispatcher: ReactCurrentDispatcher,\n ReactCurrentBatchConfig: ReactCurrentBatchConfig,\n ReactCurrentOwner: ReactCurrentOwner\n};\n\n{\n ReactSharedInternals.ReactDebugCurrentFrame = ReactDebugCurrentFrame;\n ReactSharedInternals.ReactCurrentActQueue = ReactCurrentActQueue;\n}\n\n// by calls to these methods by a Babel plugin.\n//\n// In PROD (or in packages without access to React internals),\n// they are left as they are instead.\n\nfunction warn(format) {\n {\n {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n printWarning('warn', format, args);\n }\n }\n}\nfunction error(format) {\n {\n {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n printWarning('error', format, args);\n }\n }\n}\n\nfunction printWarning(level, format, args) {\n // When changing this logic, you might want to also\n // update consoleWithStackDev.www.js as well.\n {\n var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n if (stack !== '') {\n format += '%s';\n args = args.concat([stack]);\n } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n var argsWithFormat = args.map(function (item) {\n return String(item);\n }); // Careful: RN currently depends on this prefix\n\n argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n // breaks IE9: https://github.com/facebook/react/issues/13610\n // eslint-disable-next-line react-internal/no-production-logging\n\n Function.prototype.apply.call(console[level], console, argsWithFormat);\n }\n}\n\nvar didWarnStateUpdateForUnmountedComponent = {};\n\nfunction warnNoop(publicInstance, callerName) {\n {\n var _constructor = publicInstance.constructor;\n var componentName = _constructor && (_constructor.displayName || _constructor.name) || 'ReactClass';\n var warningKey = componentName + \".\" + callerName;\n\n if (didWarnStateUpdateForUnmountedComponent[warningKey]) {\n return;\n }\n\n error(\"Can't call %s on a component that is not yet mounted. \" + 'This is a no-op, but it might indicate a bug in your application. ' + 'Instead, assign to `this.state` directly or define a `state = {};` ' + 'class property with the desired state in the %s component.', callerName, componentName);\n\n didWarnStateUpdateForUnmountedComponent[warningKey] = true;\n }\n}\n/**\n * This is the abstract API for an update queue.\n */\n\n\nvar ReactNoopUpdateQueue = {\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function (publicInstance) {\n return false;\n },\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {?function} callback Called after component is updated.\n * @param {?string} callerName name of the calling function in the public API.\n * @internal\n */\n enqueueForceUpdate: function (publicInstance, callback, callerName) {\n warnNoop(publicInstance, 'forceUpdate');\n },\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} completeState Next state.\n * @param {?function} callback Called after component is updated.\n * @param {?string} callerName name of the calling function in the public API.\n * @internal\n */\n enqueueReplaceState: function (publicInstance, completeState, callback, callerName) {\n warnNoop(publicInstance, 'replaceState');\n },\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialState Next partial state to be merged with state.\n * @param {?function} callback Called after component is updated.\n * @param {?string} Name of the calling function in the public API.\n * @internal\n */\n enqueueSetState: function (publicInstance, partialState, callback, callerName) {\n warnNoop(publicInstance, 'setState');\n }\n};\n\nvar assign = Object.assign;\n\nvar emptyObject = {};\n\n{\n Object.freeze(emptyObject);\n}\n/**\n * Base class helpers for the updating state of a component.\n */\n\n\nfunction Component(props, context, updater) {\n this.props = props;\n this.context = context; // If a component has string refs, we will assign a different object later.\n\n this.refs = emptyObject; // We initialize the default updater but the real one gets injected by the\n // renderer.\n\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nComponent.prototype.isReactComponent = {};\n/**\n * Sets a subset of the state. Always use this to mutate\n * state. You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * There is no guarantee that calls to `setState` will run synchronously,\n * as they may eventually be batched together. You can provide an optional\n * callback that will be executed when the call to setState is actually\n * completed.\n *\n * When a function is provided to setState, it will be called at some point in\n * the future (not synchronously). It will be called with the up to date\n * component arguments (state, props, context). These values can be different\n * from this.* because your function may be called after receiveProps but before\n * shouldComponentUpdate, and this new state, props, and context will not yet be\n * assigned to this.\n *\n * @param {object|function} partialState Next partial state or function to\n * produce next partial state to be merged with current state.\n * @param {?function} callback Called after state is updated.\n * @final\n * @protected\n */\n\nComponent.prototype.setState = function (partialState, callback) {\n if (typeof partialState !== 'object' && typeof partialState !== 'function' && partialState != null) {\n throw new Error('setState(...): takes an object of state variables to update or a ' + 'function which returns an object of state variables.');\n }\n\n this.updater.enqueueSetState(this, partialState, callback, 'setState');\n};\n/**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {?function} callback Called after update is complete.\n * @final\n * @protected\n */\n\n\nComponent.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this, callback, 'forceUpdate');\n};\n/**\n * Deprecated APIs. These APIs used to exist on classic React classes but since\n * we would like to deprecate them, we're not going to move them over to this\n * modern base class. Instead, we define a getter that warns if it's accessed.\n */\n\n\n{\n var deprecatedAPIs = {\n isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'],\n replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).']\n };\n\n var defineDeprecationWarning = function (methodName, info) {\n Object.defineProperty(Component.prototype, methodName, {\n get: function () {\n warn('%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]);\n\n return undefined;\n }\n });\n };\n\n for (var fnName in deprecatedAPIs) {\n if (deprecatedAPIs.hasOwnProperty(fnName)) {\n defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n }\n }\n}\n\nfunction ComponentDummy() {}\n\nComponentDummy.prototype = Component.prototype;\n/**\n * Convenience component with default shallow equality check for sCU.\n */\n\nfunction PureComponent(props, context, updater) {\n this.props = props;\n this.context = context; // If a component has string refs, we will assign a different object later.\n\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nvar pureComponentPrototype = PureComponent.prototype = new ComponentDummy();\npureComponentPrototype.constructor = PureComponent; // Avoid an extra prototype jump for these methods.\n\nassign(pureComponentPrototype, Component.prototype);\npureComponentPrototype.isPureReactComponent = true;\n\n// an immutable object with a single mutable value\nfunction createRef() {\n var refObject = {\n current: null\n };\n\n {\n Object.seal(refObject);\n }\n\n return refObject;\n}\n\nvar isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare\n\nfunction isArray(a) {\n return isArrayImpl(a);\n}\n\n/*\n * The `'' + value` pattern (used in in perf-sensitive code) throws for Symbol\n * and Temporal.* types. See https://github.com/facebook/react/pull/22064.\n *\n * The functions in this module will throw an easier-to-understand,\n * easier-to-debug exception with a clear errors message message explaining the\n * problem. (Instead of a confusing exception thrown inside the implementation\n * of the `value` object).\n */\n// $FlowFixMe only called in DEV, so void return is not possible.\nfunction typeName(value) {\n {\n // toStringTag is needed for namespaced types like Temporal.Instant\n var hasToStringTag = typeof Symbol === 'function' && Symbol.toStringTag;\n var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || 'Object';\n return type;\n }\n} // $FlowFixMe only called in DEV, so void return is not possible.\n\n\nfunction willCoercionThrow(value) {\n {\n try {\n testStringCoercion(value);\n return false;\n } catch (e) {\n return true;\n }\n }\n}\n\nfunction testStringCoercion(value) {\n // If you ended up here by following an exception call stack, here's what's\n // happened: you supplied an object or symbol value to React (as a prop, key,\n // DOM attribute, CSS property, string ref, etc.) and when React tried to\n // coerce it to a string using `'' + value`, an exception was thrown.\n //\n // The most common types that will cause this exception are `Symbol` instances\n // and Temporal objects like `Temporal.Instant`. But any object that has a\n // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this\n // exception. (Library authors do this to prevent users from using built-in\n // numeric operators like `+` or comparison operators like `>=` because custom\n // methods are needed to perform accurate arithmetic or comparison.)\n //\n // To fix the problem, coerce this object or symbol value to a string before\n // passing it to React. The most reliable way is usually `String(value)`.\n //\n // To find which value is throwing, check the browser or debugger console.\n // Before this exception was thrown, there should be `console.error` output\n // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the\n // problem and how that type was used: key, atrribute, input value prop, etc.\n // In most cases, this console output also shows the component and its\n // ancestor components where the exception happened.\n //\n // eslint-disable-next-line react-internal/safe-string-coercion\n return '' + value;\n}\nfunction checkKeyStringCoercion(value) {\n {\n if (willCoercionThrow(value)) {\n error('The provided key is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', typeName(value));\n\n return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n }\n }\n}\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n var displayName = outerType.displayName;\n\n if (displayName) {\n return displayName;\n }\n\n var functionName = innerType.displayName || innerType.name || '';\n return functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName;\n} // Keep in sync with react-reconciler/getComponentNameFromFiber\n\n\nfunction getContextName(type) {\n return type.displayName || 'Context';\n} // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead.\n\n\nfunction getComponentNameFromType(type) {\n if (type == null) {\n // Host root, text node or just invalid type.\n return null;\n }\n\n {\n if (typeof type.tag === 'number') {\n error('Received an unexpected object in getComponentNameFromType(). ' + 'This is likely a bug in React. Please file an issue.');\n }\n }\n\n if (typeof type === 'function') {\n return type.displayName || type.name || null;\n }\n\n if (typeof type === 'string') {\n return type;\n }\n\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return 'Fragment';\n\n case REACT_PORTAL_TYPE:\n return 'Portal';\n\n case REACT_PROFILER_TYPE:\n return 'Profiler';\n\n case REACT_STRICT_MODE_TYPE:\n return 'StrictMode';\n\n case REACT_SUSPENSE_TYPE:\n return 'Suspense';\n\n case REACT_SUSPENSE_LIST_TYPE:\n return 'SuspenseList';\n\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_CONTEXT_TYPE:\n var context = type;\n return getContextName(context) + '.Consumer';\n\n case REACT_PROVIDER_TYPE:\n var provider = type;\n return getContextName(provider._context) + '.Provider';\n\n case REACT_FORWARD_REF_TYPE:\n return getWrappedName(type, type.render, 'ForwardRef');\n\n case REACT_MEMO_TYPE:\n var outerName = type.displayName || null;\n\n if (outerName !== null) {\n return outerName;\n }\n\n return getComponentNameFromType(type.type) || 'Memo';\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n return getComponentNameFromType(init(payload));\n } catch (x) {\n return null;\n }\n }\n\n // eslint-disable-next-line no-fallthrough\n }\n }\n\n return null;\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar RESERVED_PROPS = {\n key: true,\n ref: true,\n __self: true,\n __source: true\n};\nvar specialPropKeyWarningShown, specialPropRefWarningShown, didWarnAboutStringRefs;\n\n{\n didWarnAboutStringRefs = {};\n}\n\nfunction hasValidRef(config) {\n {\n if (hasOwnProperty.call(config, 'ref')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n {\n if (hasOwnProperty.call(config, 'key')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.key !== undefined;\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n var warnAboutAccessingKey = function () {\n {\n if (!specialPropKeyWarningShown) {\n specialPropKeyWarningShown = true;\n\n error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n }\n };\n\n warnAboutAccessingKey.isReactWarning = true;\n Object.defineProperty(props, 'key', {\n get: warnAboutAccessingKey,\n configurable: true\n });\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n var warnAboutAccessingRef = function () {\n {\n if (!specialPropRefWarningShown) {\n specialPropRefWarningShown = true;\n\n error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n }\n };\n\n warnAboutAccessingRef.isReactWarning = true;\n Object.defineProperty(props, 'ref', {\n get: warnAboutAccessingRef,\n configurable: true\n });\n}\n\nfunction warnIfStringRefCannotBeAutoConverted(config) {\n {\n if (typeof config.ref === 'string' && ReactCurrentOwner.current && config.__self && ReactCurrentOwner.current.stateNode !== config.__self) {\n var componentName = getComponentNameFromType(ReactCurrentOwner.current.type);\n\n if (!didWarnAboutStringRefs[componentName]) {\n error('Component \"%s\" contains the string ref \"%s\". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', componentName, config.ref);\n\n didWarnAboutStringRefs[componentName] = true;\n }\n }\n }\n}\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, instanceof check\n * will not work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} props\n * @param {*} key\n * @param {string|object} ref\n * @param {*} owner\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @internal\n */\n\n\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n var element = {\n // This tag allows us to uniquely identify this as a React Element\n $$typeof: REACT_ELEMENT_TYPE,\n // Built-in properties that belong on the element\n type: type,\n key: key,\n ref: ref,\n props: props,\n // Record the component responsible for creating this element.\n _owner: owner\n };\n\n {\n // The validation flag is currently mutative. We put it on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n element._store = {}; // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n\n Object.defineProperty(element._store, 'validated', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: false\n }); // self and source are DEV only properties.\n\n Object.defineProperty(element, '_self', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: self\n }); // Two elements created in two different places should be considered\n // equal for testing purposes and therefore we hide it from enumeration.\n\n Object.defineProperty(element, '_source', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: source\n });\n\n if (Object.freeze) {\n Object.freeze(element.props);\n Object.freeze(element);\n }\n }\n\n return element;\n};\n/**\n * Create and return a new ReactElement of the given type.\n * See https://reactjs.org/docs/react-api.html#createelement\n */\n\nfunction createElement(type, config, children) {\n var propName; // Reserved names are extracted\n\n var props = {};\n var key = null;\n var ref = null;\n var self = null;\n var source = null;\n\n if (config != null) {\n if (hasValidRef(config)) {\n ref = config.ref;\n\n {\n warnIfStringRefCannotBeAutoConverted(config);\n }\n }\n\n if (hasValidKey(config)) {\n {\n checkKeyStringCoercion(config.key);\n }\n\n key = '' + config.key;\n }\n\n self = config.__self === undefined ? null : config.__self;\n source = config.__source === undefined ? null : config.__source; // Remaining properties are added to a new props object\n\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n }\n } // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n\n\n var childrenLength = arguments.length - 2;\n\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n\n {\n if (Object.freeze) {\n Object.freeze(childArray);\n }\n }\n\n props.children = childArray;\n } // Resolve default props\n\n\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n }\n\n {\n if (key || ref) {\n var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n\n if (key) {\n defineKeyPropWarningGetter(props, displayName);\n }\n\n if (ref) {\n defineRefPropWarningGetter(props, displayName);\n }\n }\n }\n\n return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n}\nfunction cloneAndReplaceKey(oldElement, newKey) {\n var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);\n return newElement;\n}\n/**\n * Clone and return a new ReactElement using element as the starting point.\n * See https://reactjs.org/docs/react-api.html#cloneelement\n */\n\nfunction cloneElement(element, config, children) {\n if (element === null || element === undefined) {\n throw new Error(\"React.cloneElement(...): The argument must be a React element, but you passed \" + element + \".\");\n }\n\n var propName; // Original props are copied\n\n var props = assign({}, element.props); // Reserved names are extracted\n\n var key = element.key;\n var ref = element.ref; // Self is preserved since the owner is preserved.\n\n var self = element._self; // Source is preserved since cloneElement is unlikely to be targeted by a\n // transpiler, and the original source is probably a better indicator of the\n // true owner.\n\n var source = element._source; // Owner will be preserved, unless ref is overridden\n\n var owner = element._owner;\n\n if (config != null) {\n if (hasValidRef(config)) {\n // Silently steal the ref from the parent.\n ref = config.ref;\n owner = ReactCurrentOwner.current;\n }\n\n if (hasValidKey(config)) {\n {\n checkKeyStringCoercion(config.key);\n }\n\n key = '' + config.key;\n } // Remaining properties override existing props\n\n\n var defaultProps;\n\n if (element.type && element.type.defaultProps) {\n defaultProps = element.type.defaultProps;\n }\n\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n if (config[propName] === undefined && defaultProps !== undefined) {\n // Resolve default props\n props[propName] = defaultProps[propName];\n } else {\n props[propName] = config[propName];\n }\n }\n }\n } // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n\n\n var childrenLength = arguments.length - 2;\n\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n\n props.children = childArray;\n }\n\n return ReactElement(element.type, key, ref, self, source, owner, props);\n}\n/**\n * Verifies the object is a ReactElement.\n * See https://reactjs.org/docs/react-api.html#isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a ReactElement.\n * @final\n */\n\nfunction isValidElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\n\nvar SEPARATOR = '.';\nvar SUBSEPARATOR = ':';\n/**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */\n\nfunction escape(key) {\n var escapeRegex = /[=:]/g;\n var escaperLookup = {\n '=': '=0',\n ':': '=2'\n };\n var escapedString = key.replace(escapeRegex, function (match) {\n return escaperLookup[match];\n });\n return '$' + escapedString;\n}\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\n\nvar didWarnAboutMaps = false;\nvar userProvidedKeyEscapeRegex = /\\/+/g;\n\nfunction escapeUserProvidedKey(text) {\n return text.replace(userProvidedKeyEscapeRegex, '$&/');\n}\n/**\n * Generate a key string that identifies a element within a set.\n *\n * @param {*} element A element that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\n\n\nfunction getElementKey(element, index) {\n // Do some typechecking here since we call this blindly. We want to ensure\n // that we don't block potential future ES APIs.\n if (typeof element === 'object' && element !== null && element.key != null) {\n // Explicit key\n {\n checkKeyStringCoercion(element.key);\n }\n\n return escape('' + element.key);\n } // Implicit key determined by the index in the set\n\n\n return index.toString(36);\n}\n\nfunction mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n var type = typeof children;\n\n if (type === 'undefined' || type === 'boolean') {\n // All of the above are perceived as null.\n children = null;\n }\n\n var invokeCallback = false;\n\n if (children === null) {\n invokeCallback = true;\n } else {\n switch (type) {\n case 'string':\n case 'number':\n invokeCallback = true;\n break;\n\n case 'object':\n switch (children.$$typeof) {\n case REACT_ELEMENT_TYPE:\n case REACT_PORTAL_TYPE:\n invokeCallback = true;\n }\n\n }\n }\n\n if (invokeCallback) {\n var _child = children;\n var mappedChild = callback(_child); // If it's the only child, treat the name as if it was wrapped in an array\n // so that it's consistent if the number of children grows:\n\n var childKey = nameSoFar === '' ? SEPARATOR + getElementKey(_child, 0) : nameSoFar;\n\n if (isArray(mappedChild)) {\n var escapedChildKey = '';\n\n if (childKey != null) {\n escapedChildKey = escapeUserProvidedKey(childKey) + '/';\n }\n\n mapIntoArray(mappedChild, array, escapedChildKey, '', function (c) {\n return c;\n });\n } else if (mappedChild != null) {\n if (isValidElement(mappedChild)) {\n {\n // The `if` statement here prevents auto-disabling of the safe\n // coercion ESLint rule, so we must manually disable it below.\n // $FlowFixMe Flow incorrectly thinks React.Portal doesn't have a key\n if (mappedChild.key && (!_child || _child.key !== mappedChild.key)) {\n checkKeyStringCoercion(mappedChild.key);\n }\n }\n\n mappedChild = cloneAndReplaceKey(mappedChild, // Keep both the (mapped) and old keys if they differ, just as\n // traverseAllChildren used to do for objects as children\n escapedPrefix + ( // $FlowFixMe Flow incorrectly thinks React.Portal doesn't have a key\n mappedChild.key && (!_child || _child.key !== mappedChild.key) ? // $FlowFixMe Flow incorrectly thinks existing element's key can be a number\n // eslint-disable-next-line react-internal/safe-string-coercion\n escapeUserProvidedKey('' + mappedChild.key) + '/' : '') + childKey);\n }\n\n array.push(mappedChild);\n }\n\n return 1;\n }\n\n var child;\n var nextName;\n var subtreeCount = 0; // Count of children found in the current subtree.\n\n var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\n if (isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n nextName = nextNamePrefix + getElementKey(child, i);\n subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback);\n }\n } else {\n var iteratorFn = getIteratorFn(children);\n\n if (typeof iteratorFn === 'function') {\n var iterableChildren = children;\n\n {\n // Warn about using Maps as children\n if (iteratorFn === iterableChildren.entries) {\n if (!didWarnAboutMaps) {\n warn('Using Maps as children is not supported. ' + 'Use an array of keyed ReactElements instead.');\n }\n\n didWarnAboutMaps = true;\n }\n }\n\n var iterator = iteratorFn.call(iterableChildren);\n var step;\n var ii = 0;\n\n while (!(step = iterator.next()).done) {\n child = step.value;\n nextName = nextNamePrefix + getElementKey(child, ii++);\n subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback);\n }\n } else if (type === 'object') {\n // eslint-disable-next-line react-internal/safe-string-coercion\n var childrenString = String(children);\n throw new Error(\"Objects are not valid as a React child (found: \" + (childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString) + \"). \" + 'If you meant to render a collection of children, use an array ' + 'instead.');\n }\n }\n\n return subtreeCount;\n}\n\n/**\n * Maps children that are typically specified as `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenmap\n *\n * The provided mapFunction(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} func The map function.\n * @param {*} context Context for mapFunction.\n * @return {object} Object containing the ordered map of results.\n */\nfunction mapChildren(children, func, context) {\n if (children == null) {\n return children;\n }\n\n var result = [];\n var count = 0;\n mapIntoArray(children, result, '', '', function (child) {\n return func.call(context, child, count++);\n });\n return result;\n}\n/**\n * Count the number of children that are typically specified as\n * `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrencount\n *\n * @param {?*} children Children tree container.\n * @return {number} The number of children.\n */\n\n\nfunction countChildren(children) {\n var n = 0;\n mapChildren(children, function () {\n n++; // Don't return anything\n });\n return n;\n}\n\n/**\n * Iterates through children that are typically specified as `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenforeach\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} forEachFunc\n * @param {*} forEachContext Context for forEachContext.\n */\nfunction forEachChildren(children, forEachFunc, forEachContext) {\n mapChildren(children, function () {\n forEachFunc.apply(this, arguments); // Don't return anything.\n }, forEachContext);\n}\n/**\n * Flatten a children object (typically specified as `props.children`) and\n * return an array with appropriately re-keyed children.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrentoarray\n */\n\n\nfunction toArray(children) {\n return mapChildren(children, function (child) {\n return child;\n }) || [];\n}\n/**\n * Returns the first child in a collection of children and verifies that there\n * is only one child in the collection.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenonly\n *\n * The current implementation of this function assumes that a single child gets\n * passed without a wrapper, but the purpose of this helper function is to\n * abstract away the particular structure of children.\n *\n * @param {?object} children Child collection structure.\n * @return {ReactElement} The first and only `ReactElement` contained in the\n * structure.\n */\n\n\nfunction onlyChild(children) {\n if (!isValidElement(children)) {\n throw new Error('React.Children.only expected to receive a single React element child.');\n }\n\n return children;\n}\n\nfunction createContext(defaultValue) {\n // TODO: Second argument used to be an optional `calculateChangedBits`\n // function. Warn to reserve for future use?\n var context = {\n $$typeof: REACT_CONTEXT_TYPE,\n // As a workaround to support multiple concurrent renderers, we categorize\n // some renderers as primary and others as secondary. We only expect\n // there to be two concurrent renderers at most: React Native (primary) and\n // Fabric (secondary); React DOM (primary) and React ART (secondary).\n // Secondary renderers store their context values on separate fields.\n _currentValue: defaultValue,\n _currentValue2: defaultValue,\n // Used to track how many concurrent renderers this context currently\n // supports within in a single renderer. Such as parallel server rendering.\n _threadCount: 0,\n // These are circular\n Provider: null,\n Consumer: null,\n // Add these to use same hidden class in VM as ServerContext\n _defaultValue: null,\n _globalName: null\n };\n context.Provider = {\n $$typeof: REACT_PROVIDER_TYPE,\n _context: context\n };\n var hasWarnedAboutUsingNestedContextConsumers = false;\n var hasWarnedAboutUsingConsumerProvider = false;\n var hasWarnedAboutDisplayNameOnConsumer = false;\n\n {\n // A separate object, but proxies back to the original context object for\n // backwards compatibility. It has a different $$typeof, so we can properly\n // warn for the incorrect usage of Context as a Consumer.\n var Consumer = {\n $$typeof: REACT_CONTEXT_TYPE,\n _context: context\n }; // $FlowFixMe: Flow complains about not setting a value, which is intentional here\n\n Object.defineProperties(Consumer, {\n Provider: {\n get: function () {\n if (!hasWarnedAboutUsingConsumerProvider) {\n hasWarnedAboutUsingConsumerProvider = true;\n\n error('Rendering <Context.Consumer.Provider> is not supported and will be removed in ' + 'a future major release. Did you mean to render <Context.Provider> instead?');\n }\n\n return context.Provider;\n },\n set: function (_Provider) {\n context.Provider = _Provider;\n }\n },\n _currentValue: {\n get: function () {\n return context._currentValue;\n },\n set: function (_currentValue) {\n context._currentValue = _currentValue;\n }\n },\n _currentValue2: {\n get: function () {\n return context._currentValue2;\n },\n set: function (_currentValue2) {\n context._currentValue2 = _currentValue2;\n }\n },\n _threadCount: {\n get: function () {\n return context._threadCount;\n },\n set: function (_threadCount) {\n context._threadCount = _threadCount;\n }\n },\n Consumer: {\n get: function () {\n if (!hasWarnedAboutUsingNestedContextConsumers) {\n hasWarnedAboutUsingNestedContextConsumers = true;\n\n error('Rendering <Context.Consumer.Consumer> is not supported and will be removed in ' + 'a future major release. Did you mean to render <Context.Consumer> instead?');\n }\n\n return context.Consumer;\n }\n },\n displayName: {\n get: function () {\n return context.displayName;\n },\n set: function (displayName) {\n if (!hasWarnedAboutDisplayNameOnConsumer) {\n warn('Setting `displayName` on Context.Consumer has no effect. ' + \"You should set it directly on the context with Context.displayName = '%s'.\", displayName);\n\n hasWarnedAboutDisplayNameOnConsumer = true;\n }\n }\n }\n }); // $FlowFixMe: Flow complains about missing properties because it doesn't understand defineProperty\n\n context.Consumer = Consumer;\n }\n\n {\n context._currentRenderer = null;\n context._currentRenderer2 = null;\n }\n\n return context;\n}\n\nvar Uninitialized = -1;\nvar Pending = 0;\nvar Resolved = 1;\nvar Rejected = 2;\n\nfunction lazyInitializer(payload) {\n if (payload._status === Uninitialized) {\n var ctor = payload._result;\n var thenable = ctor(); // Transition to the next state.\n // This might throw either because it's missing or throws. If so, we treat it\n // as still uninitialized and try again next time. Which is the same as what\n // happens if the ctor or any wrappers processing the ctor throws. This might\n // end up fixing it if the resolution was a concurrency bug.\n\n thenable.then(function (moduleObject) {\n if (payload._status === Pending || payload._status === Uninitialized) {\n // Transition to the next state.\n var resolved = payload;\n resolved._status = Resolved;\n resolved._result = moduleObject;\n }\n }, function (error) {\n if (payload._status === Pending || payload._status === Uninitialized) {\n // Transition to the next state.\n var rejected = payload;\n rejected._status = Rejected;\n rejected._result = error;\n }\n });\n\n if (payload._status === Uninitialized) {\n // In case, we're still uninitialized, then we're waiting for the thenable\n // to resolve. Set it as pending in the meantime.\n var pending = payload;\n pending._status = Pending;\n pending._result = thenable;\n }\n }\n\n if (payload._status === Resolved) {\n var moduleObject = payload._result;\n\n {\n if (moduleObject === undefined) {\n error('lazy: Expected the result of a dynamic imp' + 'ort() call. ' + 'Instead received: %s\\n\\nYour code should look like: \\n ' + // Break up imports to avoid accidentally parsing them as dependencies.\n 'const MyComponent = lazy(() => imp' + \"ort('./MyComponent'))\\n\\n\" + 'Did you accidentally put curly braces around the import?', moduleObject);\n }\n }\n\n {\n if (!('default' in moduleObject)) {\n error('lazy: Expected the result of a dynamic imp' + 'ort() call. ' + 'Instead received: %s\\n\\nYour code should look like: \\n ' + // Break up imports to avoid accidentally parsing them as dependencies.\n 'const MyComponent = lazy(() => imp' + \"ort('./MyComponent'))\", moduleObject);\n }\n }\n\n return moduleObject.default;\n } else {\n throw payload._result;\n }\n}\n\nfunction lazy(ctor) {\n var payload = {\n // We use these fields to store the result.\n _status: Uninitialized,\n _result: ctor\n };\n var lazyType = {\n $$typeof: REACT_LAZY_TYPE,\n _payload: payload,\n _init: lazyInitializer\n };\n\n {\n // In production, this would just set it on the object.\n var defaultProps;\n var propTypes; // $FlowFixMe\n\n Object.defineProperties(lazyType, {\n defaultProps: {\n configurable: true,\n get: function () {\n return defaultProps;\n },\n set: function (newDefaultProps) {\n error('React.lazy(...): It is not supported to assign `defaultProps` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.');\n\n defaultProps = newDefaultProps; // Match production behavior more closely:\n // $FlowFixMe\n\n Object.defineProperty(lazyType, 'defaultProps', {\n enumerable: true\n });\n }\n },\n propTypes: {\n configurable: true,\n get: function () {\n return propTypes;\n },\n set: function (newPropTypes) {\n error('React.lazy(...): It is not supported to assign `propTypes` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.');\n\n propTypes = newPropTypes; // Match production behavior more closely:\n // $FlowFixMe\n\n Object.defineProperty(lazyType, 'propTypes', {\n enumerable: true\n });\n }\n }\n });\n }\n\n return lazyType;\n}\n\nfunction forwardRef(render) {\n {\n if (render != null && render.$$typeof === REACT_MEMO_TYPE) {\n error('forwardRef requires a render function but received a `memo` ' + 'component. Instead of forwardRef(memo(...)), use ' + 'memo(forwardRef(...)).');\n } else if (typeof render !== 'function') {\n error('forwardRef requires a render function but was given %s.', render === null ? 'null' : typeof render);\n } else {\n if (render.length !== 0 && render.length !== 2) {\n error('forwardRef render functions accept exactly two parameters: props and ref. %s', render.length === 1 ? 'Did you forget to use the ref parameter?' : 'Any additional parameter will be undefined.');\n }\n }\n\n if (render != null) {\n if (render.defaultProps != null || render.propTypes != null) {\n error('forwardRef render functions do not support propTypes or defaultProps. ' + 'Did you accidentally pass a React component?');\n }\n }\n }\n\n var elementType = {\n $$typeof: REACT_FORWARD_REF_TYPE,\n render: render\n };\n\n {\n var ownName;\n Object.defineProperty(elementType, 'displayName', {\n enumerable: false,\n configurable: true,\n get: function () {\n return ownName;\n },\n set: function (name) {\n ownName = name; // The inner component shouldn't inherit this display name in most cases,\n // because the component may be used elsewhere.\n // But it's nice for anonymous functions to inherit the name,\n // so that our component-stack generation logic will display their frames.\n // An anonymous function generally suggests a pattern like:\n // React.forwardRef((props, ref) => {...});\n // This kind of inner function is not used elsewhere so the side effect is okay.\n\n if (!render.name && !render.displayName) {\n render.displayName = name;\n }\n }\n });\n }\n\n return elementType;\n}\n\nvar REACT_MODULE_REFERENCE;\n\n{\n REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n if (typeof type === 'string' || typeof type === 'function') {\n return true;\n } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing ) {\n return true;\n }\n\n if (typeof type === 'object' && type !== null) {\n if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n // types supported by any Flight configuration anywhere since\n // we don't know which Flight build this will end up being used\n // with.\n type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction memo(type, compare) {\n {\n if (!isValidElementType(type)) {\n error('memo: The first argument must be a component. Instead ' + 'received: %s', type === null ? 'null' : typeof type);\n }\n }\n\n var elementType = {\n $$typeof: REACT_MEMO_TYPE,\n type: type,\n compare: compare === undefined ? null : compare\n };\n\n {\n var ownName;\n Object.defineProperty(elementType, 'displayName', {\n enumerable: false,\n configurable: true,\n get: function () {\n return ownName;\n },\n set: function (name) {\n ownName = name; // The inner component shouldn't inherit this display name in most cases,\n // because the component may be used elsewhere.\n // But it's nice for anonymous functions to inherit the name,\n // so that our component-stack generation logic will display their frames.\n // An anonymous function generally suggests a pattern like:\n // React.memo((props) => {...});\n // This kind of inner function is not used elsewhere so the side effect is okay.\n\n if (!type.name && !type.displayName) {\n type.displayName = name;\n }\n }\n });\n }\n\n return elementType;\n}\n\nfunction resolveDispatcher() {\n var dispatcher = ReactCurrentDispatcher.current;\n\n {\n if (dispatcher === null) {\n error('Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for' + ' one of the following reasons:\\n' + '1. You might have mismatching versions of React and the renderer (such as React DOM)\\n' + '2. You might be breaking the Rules of Hooks\\n' + '3. You might have more than one copy of React in the same app\\n' + 'See https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.');\n }\n } // Will result in a null access error if accessed outside render phase. We\n // intentionally don't throw our own error because this is in a hot path.\n // Also helps ensure this is inlined.\n\n\n return dispatcher;\n}\nfunction useContext(Context) {\n var dispatcher = resolveDispatcher();\n\n {\n // TODO: add a more generic warning for invalid values.\n if (Context._context !== undefined) {\n var realContext = Context._context; // Don't deduplicate because this legitimately causes bugs\n // and nobody should be using this in existing code.\n\n if (realContext.Consumer === Context) {\n error('Calling useContext(Context.Consumer) is not supported, may cause bugs, and will be ' + 'removed in a future major release. Did you mean to call useContext(Context) instead?');\n } else if (realContext.Provider === Context) {\n error('Calling useContext(Context.Provider) is not supported. ' + 'Did you mean to call useContext(Context) instead?');\n }\n }\n }\n\n return dispatcher.useContext(Context);\n}\nfunction useState(initialState) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useState(initialState);\n}\nfunction useReducer(reducer, initialArg, init) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useReducer(reducer, initialArg, init);\n}\nfunction useRef(initialValue) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useRef(initialValue);\n}\nfunction useEffect(create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useEffect(create, deps);\n}\nfunction useInsertionEffect(create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useInsertionEffect(create, deps);\n}\nfunction useLayoutEffect(create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useLayoutEffect(create, deps);\n}\nfunction useCallback(callback, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useCallback(callback, deps);\n}\nfunction useMemo(create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useMemo(create, deps);\n}\nfunction useImperativeHandle(ref, create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useImperativeHandle(ref, create, deps);\n}\nfunction useDebugValue(value, formatterFn) {\n {\n var dispatcher = resolveDispatcher();\n return dispatcher.useDebugValue(value, formatterFn);\n }\n}\nfunction useTransition() {\n var dispatcher = resolveDispatcher();\n return dispatcher.useTransition();\n}\nfunction useDeferredValue(value) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useDeferredValue(value);\n}\nfunction useId() {\n var dispatcher = resolveDispatcher();\n return dispatcher.useId();\n}\nfunction useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n}\n\n// Helpers to patch console.logs to avoid logging during side-effect free\n// replaying on render function. This currently only patches the object\n// lazily which won't cover if the log function was extracted eagerly.\n// We could also eagerly patch the method.\nvar disabledDepth = 0;\nvar prevLog;\nvar prevInfo;\nvar prevWarn;\nvar prevError;\nvar prevGroup;\nvar prevGroupCollapsed;\nvar prevGroupEnd;\n\nfunction disabledLog() {}\n\ndisabledLog.__reactDisabledLog = true;\nfunction disableLogs() {\n {\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n prevLog = console.log;\n prevInfo = console.info;\n prevWarn = console.warn;\n prevError = console.error;\n prevGroup = console.group;\n prevGroupCollapsed = console.groupCollapsed;\n prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099\n\n var props = {\n configurable: true,\n enumerable: true,\n value: disabledLog,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n info: props,\n log: props,\n warn: props,\n error: props,\n group: props,\n groupCollapsed: props,\n groupEnd: props\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n disabledDepth++;\n }\n}\nfunction reenableLogs() {\n {\n disabledDepth--;\n\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n var props = {\n configurable: true,\n enumerable: true,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n log: assign({}, props, {\n value: prevLog\n }),\n info: assign({}, props, {\n value: prevInfo\n }),\n warn: assign({}, props, {\n value: prevWarn\n }),\n error: assign({}, props, {\n value: prevError\n }),\n group: assign({}, props, {\n value: prevGroup\n }),\n groupCollapsed: assign({}, props, {\n value: prevGroupCollapsed\n }),\n groupEnd: assign({}, props, {\n value: prevGroupEnd\n })\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n if (disabledDepth < 0) {\n error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');\n }\n }\n}\n\nvar ReactCurrentDispatcher$1 = ReactSharedInternals.ReactCurrentDispatcher;\nvar prefix;\nfunction describeBuiltInComponentFrame(name, source, ownerFn) {\n {\n if (prefix === undefined) {\n // Extract the VM specific prefix used by each line.\n try {\n throw Error();\n } catch (x) {\n var match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = match && match[1] || '';\n }\n } // We use the prefix to ensure our stacks line up with native stack frames.\n\n\n return '\\n' + prefix + name;\n }\n}\nvar reentry = false;\nvar componentFrameCache;\n\n{\n var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;\n componentFrameCache = new PossiblyWeakMap();\n}\n\nfunction describeNativeComponentFrame(fn, construct) {\n // If something asked for a stack inside a fake render, it should get ignored.\n if ( !fn || reentry) {\n return '';\n }\n\n {\n var frame = componentFrameCache.get(fn);\n\n if (frame !== undefined) {\n return frame;\n }\n }\n\n var control;\n reentry = true;\n var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.\n\n Error.prepareStackTrace = undefined;\n var previousDispatcher;\n\n {\n previousDispatcher = ReactCurrentDispatcher$1.current; // Set the dispatcher in DEV because this might be call in the render function\n // for warnings.\n\n ReactCurrentDispatcher$1.current = null;\n disableLogs();\n }\n\n try {\n // This should throw.\n if (construct) {\n // Something should be setting the props in the constructor.\n var Fake = function () {\n throw Error();\n }; // $FlowFixMe\n\n\n Object.defineProperty(Fake.prototype, 'props', {\n set: function () {\n // We use a throwing setter instead of frozen or non-writable props\n // because that won't throw in a non-strict mode function.\n throw Error();\n }\n });\n\n if (typeof Reflect === 'object' && Reflect.construct) {\n // We construct a different control for this case to include any extra\n // frames added by the construct call.\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n control = x;\n }\n\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x) {\n control = x;\n }\n\n fn.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x) {\n control = x;\n }\n\n fn();\n }\n } catch (sample) {\n // This is inlined manually because closure doesn't do it for us.\n if (sample && control && typeof sample.stack === 'string') {\n // This extracts the first frame from the sample that isn't also in the control.\n // Skipping one frame that we assume is the frame that calls the two.\n var sampleLines = sample.stack.split('\\n');\n var controlLines = control.stack.split('\\n');\n var s = sampleLines.length - 1;\n var c = controlLines.length - 1;\n\n while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\n // We expect at least one stack frame to be shared.\n // Typically this will be the root most one. However, stack frames may be\n // cut off due to maximum stack limits. In this case, one maybe cut off\n // earlier than the other. We assume that the sample is longer or the same\n // and there for cut off earlier. So we should find the root most frame in\n // the sample somewhere in the control.\n c--;\n }\n\n for (; s >= 1 && c >= 0; s--, c--) {\n // Next we find the first one that isn't the same which should be the\n // frame that called our sample function and the control.\n if (sampleLines[s] !== controlLines[c]) {\n // In V8, the first line is describing the message but other VMs don't.\n // If we're about to return the first line, and the control is also on the same\n // line, that's a pretty good indicator that our sample threw at same line as\n // the control. I.e. before we entered the sample frame. So we ignore this result.\n // This can happen if you passed a class to function component, or non-function.\n if (s !== 1 || c !== 1) {\n do {\n s--;\n c--; // We may still have similar intermediate frames from the construct call.\n // The next one that isn't the same should be our match though.\n\n if (c < 0 || sampleLines[s] !== controlLines[c]) {\n // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier.\n var _frame = '\\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled \"<anonymous>\"\n // but we have a user-provided \"displayName\"\n // splice it in to make the stack more readable.\n\n\n if (fn.displayName && _frame.includes('<anonymous>')) {\n _frame = _frame.replace('<anonymous>', fn.displayName);\n }\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, _frame);\n }\n } // Return the line we found.\n\n\n return _frame;\n }\n } while (s >= 1 && c >= 0);\n }\n\n break;\n }\n }\n }\n } finally {\n reentry = false;\n\n {\n ReactCurrentDispatcher$1.current = previousDispatcher;\n reenableLogs();\n }\n\n Error.prepareStackTrace = previousPrepareStackTrace;\n } // Fallback to just using the name if we couldn't make it throw.\n\n\n var name = fn ? fn.displayName || fn.name : '';\n var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, syntheticFrame);\n }\n }\n\n return syntheticFrame;\n}\nfunction describeFunctionComponentFrame(fn, source, ownerFn) {\n {\n return describeNativeComponentFrame(fn, false);\n }\n}\n\nfunction shouldConstruct(Component) {\n var prototype = Component.prototype;\n return !!(prototype && prototype.isReactComponent);\n}\n\nfunction describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n\n if (type == null) {\n return '';\n }\n\n if (typeof type === 'function') {\n {\n return describeNativeComponentFrame(type, shouldConstruct(type));\n }\n }\n\n if (typeof type === 'string') {\n return describeBuiltInComponentFrame(type);\n }\n\n switch (type) {\n case REACT_SUSPENSE_TYPE:\n return describeBuiltInComponentFrame('Suspense');\n\n case REACT_SUSPENSE_LIST_TYPE:\n return describeBuiltInComponentFrame('SuspenseList');\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_FORWARD_REF_TYPE:\n return describeFunctionComponentFrame(type.render);\n\n case REACT_MEMO_TYPE:\n // Memo may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n // Lazy may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n } catch (x) {}\n }\n }\n }\n\n return '';\n}\n\nvar loggedTypeFailures = {};\nvar ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n ReactDebugCurrentFrame$1.setExtraStackFrame(stack);\n } else {\n ReactDebugCurrentFrame$1.setExtraStackFrame(null);\n }\n }\n}\n\nfunction checkPropTypes(typeSpecs, values, location, componentName, element) {\n {\n // $FlowFixMe This is okay but Flow doesn't know it.\n var has = Function.call.bind(hasOwnProperty);\n\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n // eslint-disable-next-line react-internal/prod-error-codes\n var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n err.name = 'Invariant Violation';\n throw err;\n }\n\n error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');\n } catch (ex) {\n error$1 = ex;\n }\n\n if (error$1 && !(error$1 instanceof Error)) {\n setCurrentlyValidatingElement(element);\n\n error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);\n\n setCurrentlyValidatingElement(null);\n }\n\n if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error$1.message] = true;\n setCurrentlyValidatingElement(element);\n\n error('Failed %s type: %s', location, error$1.message);\n\n setCurrentlyValidatingElement(null);\n }\n }\n }\n }\n}\n\nfunction setCurrentlyValidatingElement$1(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n setExtraStackFrame(stack);\n } else {\n setExtraStackFrame(null);\n }\n }\n}\n\nvar propTypesMisspellWarningShown;\n\n{\n propTypesMisspellWarningShown = false;\n}\n\nfunction getDeclarationErrorAddendum() {\n if (ReactCurrentOwner.current) {\n var name = getComponentNameFromType(ReactCurrentOwner.current.type);\n\n if (name) {\n return '\\n\\nCheck the render method of `' + name + '`.';\n }\n }\n\n return '';\n}\n\nfunction getSourceInfoErrorAddendum(source) {\n if (source !== undefined) {\n var fileName = source.fileName.replace(/^.*[\\\\\\/]/, '');\n var lineNumber = source.lineNumber;\n return '\\n\\nCheck your code at ' + fileName + ':' + lineNumber + '.';\n }\n\n return '';\n}\n\nfunction getSourceInfoErrorAddendumForProps(elementProps) {\n if (elementProps !== null && elementProps !== undefined) {\n return getSourceInfoErrorAddendum(elementProps.__source);\n }\n\n return '';\n}\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\n\n\nvar ownerHasKeyUseWarning = {};\n\nfunction getCurrentComponentErrorInfo(parentType) {\n var info = getDeclarationErrorAddendum();\n\n if (!info) {\n var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;\n\n if (parentName) {\n info = \"\\n\\nCheck the top-level render call using <\" + parentName + \">.\";\n }\n }\n\n return info;\n}\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it. Error statuses are cached so a warning\n * will only be shown once.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\n\n\nfunction validateExplicitKey(element, parentType) {\n if (!element._store || element._store.validated || element.key != null) {\n return;\n }\n\n element._store.validated = true;\n var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n\n if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n return;\n }\n\n ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a\n // property, it may be the creator of the child that's responsible for\n // assigning it a key.\n\n var childOwner = '';\n\n if (element && element._owner && element._owner !== ReactCurrentOwner.current) {\n // Give the component that originally created this child.\n childOwner = \" It was passed a child from \" + getComponentNameFromType(element._owner.type) + \".\";\n }\n\n {\n setCurrentlyValidatingElement$1(element);\n\n error('Each child in a list should have a unique \"key\" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);\n\n setCurrentlyValidatingElement$1(null);\n }\n}\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\n\n\nfunction validateChildKeys(node, parentType) {\n if (typeof node !== 'object') {\n return;\n }\n\n if (isArray(node)) {\n for (var i = 0; i < node.length; i++) {\n var child = node[i];\n\n if (isValidElement(child)) {\n validateExplicitKey(child, parentType);\n }\n }\n } else if (isValidElement(node)) {\n // This element was passed in a valid location.\n if (node._store) {\n node._store.validated = true;\n }\n } else if (node) {\n var iteratorFn = getIteratorFn(node);\n\n if (typeof iteratorFn === 'function') {\n // Entry iterators used to provide implicit keys,\n // but now we print a separate warning for them later.\n if (iteratorFn !== node.entries) {\n var iterator = iteratorFn.call(node);\n var step;\n\n while (!(step = iterator.next()).done) {\n if (isValidElement(step.value)) {\n validateExplicitKey(step.value, parentType);\n }\n }\n }\n }\n }\n}\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\n\n\nfunction validatePropTypes(element) {\n {\n var type = element.type;\n\n if (type === null || type === undefined || typeof type === 'string') {\n return;\n }\n\n var propTypes;\n\n if (typeof type === 'function') {\n propTypes = type.propTypes;\n } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.\n // Inner props are checked in the reconciler.\n type.$$typeof === REACT_MEMO_TYPE)) {\n propTypes = type.propTypes;\n } else {\n return;\n }\n\n if (propTypes) {\n // Intentionally inside to avoid triggering lazy initializers:\n var name = getComponentNameFromType(type);\n checkPropTypes(propTypes, element.props, 'prop', name, element);\n } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {\n propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers:\n\n var _name = getComponentNameFromType(type);\n\n error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown');\n }\n\n if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) {\n error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.');\n }\n }\n}\n/**\n * Given a fragment, validate that it can only be provided with fragment props\n * @param {ReactElement} fragment\n */\n\n\nfunction validateFragmentProps(fragment) {\n {\n var keys = Object.keys(fragment.props);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n\n if (key !== 'children' && key !== 'key') {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);\n\n setCurrentlyValidatingElement$1(null);\n break;\n }\n }\n\n if (fragment.ref !== null) {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid attribute `ref` supplied to `React.Fragment`.');\n\n setCurrentlyValidatingElement$1(null);\n }\n }\n}\nfunction createElementWithValidation(type, props, children) {\n var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to\n // succeed and there will likely be errors in render.\n\n if (!validType) {\n var info = '';\n\n if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and named imports.\";\n }\n\n var sourceInfo = getSourceInfoErrorAddendumForProps(props);\n\n if (sourceInfo) {\n info += sourceInfo;\n } else {\n info += getDeclarationErrorAddendum();\n }\n\n var typeString;\n\n if (type === null) {\n typeString = 'null';\n } else if (isArray(type)) {\n typeString = 'array';\n } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {\n typeString = \"<\" + (getComponentNameFromType(type.type) || 'Unknown') + \" />\";\n info = ' Did you accidentally export a JSX literal instead of a component?';\n } else {\n typeString = typeof type;\n }\n\n {\n error('React.createElement: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);\n }\n }\n\n var element = createElement.apply(this, arguments); // The result can be nullish if a mock or a custom function is used.\n // TODO: Drop this when these are no longer allowed as the type argument.\n\n if (element == null) {\n return element;\n } // Skip key warning if the type isn't valid since our key validation logic\n // doesn't expect a non-string/function type and can throw confusing errors.\n // We don't want exception behavior to differ between dev and prod.\n // (Rendering will throw with a helpful message and as soon as the type is\n // fixed, the key warnings will appear.)\n\n\n if (validType) {\n for (var i = 2; i < arguments.length; i++) {\n validateChildKeys(arguments[i], type);\n }\n }\n\n if (type === REACT_FRAGMENT_TYPE) {\n validateFragmentProps(element);\n } else {\n validatePropTypes(element);\n }\n\n return element;\n}\nvar didWarnAboutDeprecatedCreateFactory = false;\nfunction createFactoryWithValidation(type) {\n var validatedFactory = createElementWithValidation.bind(null, type);\n validatedFactory.type = type;\n\n {\n if (!didWarnAboutDeprecatedCreateFactory) {\n didWarnAboutDeprecatedCreateFactory = true;\n\n warn('React.createFactory() is deprecated and will be removed in ' + 'a future major release. Consider using JSX ' + 'or use React.createElement() directly instead.');\n } // Legacy hook: remove it\n\n\n Object.defineProperty(validatedFactory, 'type', {\n enumerable: false,\n get: function () {\n warn('Factory.type is deprecated. Access the class directly ' + 'before passing it to createFactory.');\n\n Object.defineProperty(this, 'type', {\n value: type\n });\n return type;\n }\n });\n }\n\n return validatedFactory;\n}\nfunction cloneElementWithValidation(element, props, children) {\n var newElement = cloneElement.apply(this, arguments);\n\n for (var i = 2; i < arguments.length; i++) {\n validateChildKeys(arguments[i], newElement.type);\n }\n\n validatePropTypes(newElement);\n return newElement;\n}\n\nfunction startTransition(scope, options) {\n var prevTransition = ReactCurrentBatchConfig.transition;\n ReactCurrentBatchConfig.transition = {};\n var currentTransition = ReactCurrentBatchConfig.transition;\n\n {\n ReactCurrentBatchConfig.transition._updatedFibers = new Set();\n }\n\n try {\n scope();\n } finally {\n ReactCurrentBatchConfig.transition = prevTransition;\n\n {\n if (prevTransition === null && currentTransition._updatedFibers) {\n var updatedFibersCount = currentTransition._updatedFibers.size;\n\n if (updatedFibersCount > 10) {\n warn('Detected a large number of updates inside startTransition. ' + 'If this is due to a subscription please re-write it to use React provided hooks. ' + 'Otherwise concurrent mode guarantees are off the table.');\n }\n\n currentTransition._updatedFibers.clear();\n }\n }\n }\n}\n\nvar didWarnAboutMessageChannel = false;\nvar enqueueTaskImpl = null;\nfunction enqueueTask(task) {\n if (enqueueTaskImpl === null) {\n try {\n // read require off the module object to get around the bundlers.\n // we don't want them to detect a require and bundle a Node polyfill.\n var requireString = ('require' + Math.random()).slice(0, 7);\n var nodeRequire = module && module[requireString]; // assuming we're in node, let's try to get node's\n // version of setImmediate, bypassing fake timers if any.\n\n enqueueTaskImpl = nodeRequire.call(module, 'timers').setImmediate;\n } catch (_err) {\n // we're in a browser\n // we can't use regular timers because they may still be faked\n // so we try MessageChannel+postMessage instead\n enqueueTaskImpl = function (callback) {\n {\n if (didWarnAboutMessageChannel === false) {\n didWarnAboutMessageChannel = true;\n\n if (typeof MessageChannel === 'undefined') {\n error('This browser does not have a MessageChannel implementation, ' + 'so enqueuing tasks via await act(async () => ...) will fail. ' + 'Please file an issue at https://github.com/facebook/react/issues ' + 'if you encounter this warning.');\n }\n }\n }\n\n var channel = new MessageChannel();\n channel.port1.onmessage = callback;\n channel.port2.postMessage(undefined);\n };\n }\n }\n\n return enqueueTaskImpl(task);\n}\n\nvar actScopeDepth = 0;\nvar didWarnNoAwaitAct = false;\nfunction act(callback) {\n {\n // `act` calls can be nested, so we track the depth. This represents the\n // number of `act` scopes on the stack.\n var prevActScopeDepth = actScopeDepth;\n actScopeDepth++;\n\n if (ReactCurrentActQueue.current === null) {\n // This is the outermost `act` scope. Initialize the queue. The reconciler\n // will detect the queue and use it instead of Scheduler.\n ReactCurrentActQueue.current = [];\n }\n\n var prevIsBatchingLegacy = ReactCurrentActQueue.isBatchingLegacy;\n var result;\n\n try {\n // Used to reproduce behavior of `batchedUpdates` in legacy mode. Only\n // set to `true` while the given callback is executed, not for updates\n // triggered during an async event, because this is how the legacy\n // implementation of `act` behaved.\n ReactCurrentActQueue.isBatchingLegacy = true;\n result = callback(); // Replicate behavior of original `act` implementation in legacy mode,\n // which flushed updates immediately after the scope function exits, even\n // if it's an async function.\n\n if (!prevIsBatchingLegacy && ReactCurrentActQueue.didScheduleLegacyUpdate) {\n var queue = ReactCurrentActQueue.current;\n\n if (queue !== null) {\n ReactCurrentActQueue.didScheduleLegacyUpdate = false;\n flushActQueue(queue);\n }\n }\n } catch (error) {\n popActScope(prevActScopeDepth);\n throw error;\n } finally {\n ReactCurrentActQueue.isBatchingLegacy = prevIsBatchingLegacy;\n }\n\n if (result !== null && typeof result === 'object' && typeof result.then === 'function') {\n var thenableResult = result; // The callback is an async function (i.e. returned a promise). Wait\n // for it to resolve before exiting the current scope.\n\n var wasAwaited = false;\n var thenable = {\n then: function (resolve, reject) {\n wasAwaited = true;\n thenableResult.then(function (returnValue) {\n popActScope(prevActScopeDepth);\n\n if (actScopeDepth === 0) {\n // We've exited the outermost act scope. Recursively flush the\n // queue until there's no remaining work.\n recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n } else {\n resolve(returnValue);\n }\n }, function (error) {\n // The callback threw an error.\n popActScope(prevActScopeDepth);\n reject(error);\n });\n }\n };\n\n {\n if (!didWarnNoAwaitAct && typeof Promise !== 'undefined') {\n // eslint-disable-next-line no-undef\n Promise.resolve().then(function () {}).then(function () {\n if (!wasAwaited) {\n didWarnNoAwaitAct = true;\n\n error('You called act(async () => ...) without await. ' + 'This could lead to unexpected testing behaviour, ' + 'interleaving multiple act calls and mixing their ' + 'scopes. ' + 'You should - await act(async () => ...);');\n }\n });\n }\n }\n\n return thenable;\n } else {\n var returnValue = result; // The callback is not an async function. Exit the current scope\n // immediately, without awaiting.\n\n popActScope(prevActScopeDepth);\n\n if (actScopeDepth === 0) {\n // Exiting the outermost act scope. Flush the queue.\n var _queue = ReactCurrentActQueue.current;\n\n if (_queue !== null) {\n flushActQueue(_queue);\n ReactCurrentActQueue.current = null;\n } // Return a thenable. If the user awaits it, we'll flush again in\n // case additional work was scheduled by a microtask.\n\n\n var _thenable = {\n then: function (resolve, reject) {\n // Confirm we haven't re-entered another `act` scope, in case\n // the user does something weird like await the thenable\n // multiple times.\n if (ReactCurrentActQueue.current === null) {\n // Recursively flush the queue until there's no remaining work.\n ReactCurrentActQueue.current = [];\n recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n } else {\n resolve(returnValue);\n }\n }\n };\n return _thenable;\n } else {\n // Since we're inside a nested `act` scope, the returned thenable\n // immediately resolves. The outer scope will flush the queue.\n var _thenable2 = {\n then: function (resolve, reject) {\n resolve(returnValue);\n }\n };\n return _thenable2;\n }\n }\n }\n}\n\nfunction popActScope(prevActScopeDepth) {\n {\n if (prevActScopeDepth !== actScopeDepth - 1) {\n error('You seem to have overlapping act() calls, this is not supported. ' + 'Be sure to await previous act() calls before making a new one. ');\n }\n\n actScopeDepth = prevActScopeDepth;\n }\n}\n\nfunction recursivelyFlushAsyncActWork(returnValue, resolve, reject) {\n {\n var queue = ReactCurrentActQueue.current;\n\n if (queue !== null) {\n try {\n flushActQueue(queue);\n enqueueTask(function () {\n if (queue.length === 0) {\n // No additional work was scheduled. Finish.\n ReactCurrentActQueue.current = null;\n resolve(returnValue);\n } else {\n // Keep flushing work until there's none left.\n recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n }\n });\n } catch (error) {\n reject(error);\n }\n } else {\n resolve(returnValue);\n }\n }\n}\n\nvar isFlushing = false;\n\nfunction flushActQueue(queue) {\n {\n if (!isFlushing) {\n // Prevent re-entrance.\n isFlushing = true;\n var i = 0;\n\n try {\n for (; i < queue.length; i++) {\n var callback = queue[i];\n\n do {\n callback = callback(true);\n } while (callback !== null);\n }\n\n queue.length = 0;\n } catch (error) {\n // If something throws, leave the remaining callbacks on the queue.\n queue = queue.slice(i + 1);\n throw error;\n } finally {\n isFlushing = false;\n }\n }\n }\n}\n\nvar createElement$1 = createElementWithValidation ;\nvar cloneElement$1 = cloneElementWithValidation ;\nvar createFactory = createFactoryWithValidation ;\nvar Children = {\n map: mapChildren,\n forEach: forEachChildren,\n count: countChildren,\n toArray: toArray,\n only: onlyChild\n};\n\nexports.Children = Children;\nexports.Component = Component;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.PureComponent = PureComponent;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = ReactSharedInternals;\nexports.cloneElement = cloneElement$1;\nexports.createContext = createContext;\nexports.createElement = createElement$1;\nexports.createFactory = createFactory;\nexports.createRef = createRef;\nexports.forwardRef = forwardRef;\nexports.isValidElement = isValidElement;\nexports.lazy = lazy;\nexports.memo = memo;\nexports.startTransition = startTransition;\nexports.unstable_act = act;\nexports.useCallback = useCallback;\nexports.useContext = useContext;\nexports.useDebugValue = useDebugValue;\nexports.useDeferredValue = useDeferredValue;\nexports.useEffect = useEffect;\nexports.useId = useId;\nexports.useImperativeHandle = useImperativeHandle;\nexports.useInsertionEffect = useInsertionEffect;\nexports.useLayoutEffect = useLayoutEffect;\nexports.useMemo = useMemo;\nexports.useReducer = useReducer;\nexports.useRef = useRef;\nexports.useState = useState;\nexports.useSyncExternalStore = useSyncExternalStore;\nexports.useTransition = useTransition;\nexports.version = ReactVersion;\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop ===\n 'function'\n) {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());\n}\n \n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","const theme = {\n colors: {\n 'white':'#FFFFFF',\n 'black':'#000000',\n 'black-100':'#09101D',\n\n //neutral\n 'neutral-50':'#F7F9FC',\n 'neutral-100':'#E8EEF7',\n 'neutral-200':'#D2DDEE',\n 'neutral-300':'#BBCCE6',\n 'neutral-400':'#A4BBDD',\n 'neutral-500':'#365B91',\n 'neutral-600':'#29446D',\n 'neutral-700':'#1B2D49',\n 'neutral-800':'#0E1724',\n 'neutral-900':'#070B12',\n\n //primary\n 'primary-50':'#F5F5FE',\n 'primary-100':'#E2E2FD',\n 'primary-200':'#C6C6FB',\n 'primary-300':'#A9A9F9',\n 'primary-400':'#8C8CF7',\n 'primary-500':'#4040F2',\n 'primary-600':'#0F0FD7',\n 'primary-700':'#0A0A8F',\n 'primary-800':'#050548',\n 'primary-900':'#020224',\n\n //success\n 'success-50':'#F0FFF7',\n 'success-100':'#D1FEE8',\n 'success-200':'#A3FCD1',\n 'success-300':'#74FBBA',\n 'success-400':'#46F9A3',\n 'success-500':'#06BA63',\n 'success-600':'#058B4A',\n 'success-700':'#035D32',\n 'success-800':'#022F19',\n 'success-900':'#01170C',\n\n //warning\n 'warning-50':'#FFFAF2',\n 'warning-100':'#FFEFD8',\n 'warning-200':'#FFE0B0',\n 'warning-300':'#FFD089',\n 'warning-400':'#FFC062',\n 'warning-500':'#F89500',\n 'warning-600':'#BA7000',\n 'warning-700':'#7C4A00',\n 'warning-800':'#3E2500',\n 'warning-900':'#1F1300',\n\n //error\n 'error-50':'#FFF2F2',\n 'error-100':'#FFD8D8',\n 'error-200':'#FFB0B0',\n 'error-300':'#FF8989',\n 'error-400':'#FF6262',\n 'error-500':'#F80000',\n 'error-600':'#BA0000',\n 'error-700':'#7C0000',\n 'error-800':'#3E0000',\n 'error-900':'#1F0000',\n },\n}\n\n\nexport default theme;\n","\nimport theme from \"../../theme\";\nimport styled from \"styled-components\";\n\nexport const ButtonComp = styled.button`\n background: none;\n color:${theme.colors[\"neutral-900\"]};\n border-radius: 8px;\n border: none;\n width: 100%;\n cursor: pointer;\n display: flex;\n justify-content: center;\n align-items: center;\n gap: 10px;\n &:disabled{\n cursor: not-allowed;\n }\n\n //sizes\n &.sm{\n padding: 8px 16px;\n font-size: 14px;\n height: 33px;\n }\n \n &.md{\n padding: 12px 18px;\n font-size: 16px;\n height: 43px;\n }\n \n &.lg{\n padding: 14px 20px;\n font-size: 18px;\n height: 50px;\n }\n\n //colors\n &.primary{\n background: ${theme.colors[\"primary-500\"]};\n color: ${theme.colors.white};\n }\n &.primary:hover{\n background: ${theme.colors[\"primary-400\"]};\n }\n &.primary:active{\n background: ${theme.colors[\"primary-600\"]};\n }\n &.primary:focus,.primary:focus-within{\n outline: 2px solid ${theme.colors[\"primary-200\"]};\n }\n &.primary:disabled{\n background: ${theme.colors[\"neutral-100\"]};\n cursor: not-allowed;\n }\n\n &.error{\n background: ${theme.colors[\"error-500\"]};\n color: ${theme.colors.white};\n }\n &.error:hover{\n background: ${theme.colors[\"error-400\"]};\n }\n &.error:active{\n background: ${theme.colors[\"error-600\"]};\n }\n &.error:focus,.error:focus-within{\n outline: 2px solid ${theme.colors[\"error-200\"]};\n }\n &.error:disabled{\n background: ${theme.colors[\"error-100\"]};\n cursor: not-allowed;\n }\n\n &.success{\n background: ${theme.colors[\"success-500\"]};\n color: ${theme.colors.white};\n }\n &.success:hover{\n background: ${theme.colors[\"success-400\"]};\n }\n &.success:active{\n background: ${theme.colors[\"success-600\"]};\n }\n &.success:focus,.success:focus-within{\n outline: 2px solid ${theme.colors[\"success-200\"]};\n }\n &.success:disabled{\n background: ${theme.colors[\"success-100\"]};\n cursor: not-allowed;\n }\n\n &.warning{\n background: ${theme.colors[\"warning-500\"]};\n color: ${theme.colors.white};\n }\n &.warning:hover{\n background: ${theme.colors[\"warning-400\"]};\n }\n &.warning:active{\n background: ${theme.colors[\"warning-600\"]};\n }\n &.warning:focus,.warning:focus-within{\n outline: 2px solid ${theme.colors[\"warning-200\"]};\n }\n &.warning:disabled{\n background: ${theme.colors[\"warning-100\"]};\n cursor: not-allowed;\n }\n \n //outline colors\n &.outline-primary{\n outline: 1px solid ${theme.colors[\"primary-500\"]};\n color: ${theme.colors[\"primary-500\"]};\n background: none;\n }\n`\n","import React from \"react\"\nimport {ButtonProps} from \"./type\";\nimport {ButtonComp} from \"./style\";\n\n\nconst Button = (props:ButtonProps) => {\n const {variant, size, disabled,children, label} = props\n return <ButtonComp className={`${variant} ${size}`} disabled={disabled} {...props}>{\n label ? label : children\n }</ButtonComp>\n}\n\nexport default Button\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const Container = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n gap: 8px;\n width: 308px;\n .mb8{\n margin-bottom: 8px;\n }\n svg{\n animation:rtte 0.4s ease-out;\n -webkit-animation:rtte 0.4s ease-out;\n @keyframes rtte {\n from{\n -ms-transform: rotate(-45deg);\n transform: rotate(-45deg);\n -webkit-transform: rotate(-45deg);\n }\n to{\n -ms-transform: rotate(0deg);\n transform: rotate(0deg);\n -webkit-transform: rotate(0deg);\n }\n }\n }\n\n .svg-checkmark{\n animation:cm 0.3s ease-out;\n }\n @keyframes cm {\n from{\n -webkit-transform: scale(0.5);\n -ms-transform: scale(0.5);\n transform: scale(0.5);\n }\n to{\n -webkit-transform: scale(1);\n -ms-transform: scale(1);\n transform: scale(1);\n }\n }\n`\n\nexport const TextArea = styled.div`\n color: ${theme.colors[\"neutral-900\"]};\n text-align: center;\n .heading-text{\n font-size: 19px;\n font-weight: 500;\n margin: 0;\n font-family: Circular Book Medium, sans-serif;\n -webkit-animation:brr 0.6s ease-out;\n animation:brr 0.6s ease-out;\n }\n .sub-text{\n font-size: 16px;\n margin: 0;\n -webkit-animation:brr 0.6s ease-out;\n animation:brr 0.6s ease-out;\n }\n @keyframes brr {\n from{\n -webkit-transform: translateY(10px);\n -ms-transform: translateY(10px);\n transform: translateY(10px);\n opacity: 0;\n }\n to{\n -webkit-transform: translateY(0);\n -ms-transform: translateY(0);\n transform: translateY(0);\n opacity: 1;\n }\n }\n`\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const Container = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n gap: 8px;\n width: 308px;\n .mb8{\n margin-bottom: 8px;\n }\n svg{\n animation:rtte 0.4s ease-out;\n -webkit-animation:rtte 0.4s ease-out;\n @keyframes rtte {\n from{\n -ms-transform: rotate(-45deg);\n transform: rotate(-45deg);\n -webkit-transform: rotate(-45deg);\n }\n to{\n -ms-transform: rotate(0deg);\n transform: rotate(0deg);\n -webkit-transform: rotate(0deg);\n }\n }\n }\n\n .svg-checkmark{\n -webkit-animation:cm 0.3s ease-out;\n animation:cm 0.3s ease-out;\n }\n @keyframes cm {\n from{\n -webkit-transform: scale(0.5);\n -ms-transform: scale(0.5);\n transform: scale(0.5);\n }\n to{\n -webkit-transform: scale(1);\n -ms-transform: scale(1);\n transform: scale(1);\n }\n }\n`\n\nexport const TextArea = styled.div`\n color: ${theme.colors[\"neutral-900\"]};\n text-align: center;\n .heading-text{\n font-size: 19px;\n font-weight: 500;\n margin: 0;\n font-family: Circular Book Medium, sans-serif;\n -webkit-animation:brr 0.6s ease-out;\n animation:brr 0.6s ease-out;\n }\n .sub-text{\n font-size: 16px;\n margin: 0;\n -webkit-animation:brr 0.6s ease-out;\n animation:brr 0.6s ease-out;\n }\n @keyframes brr {\n from{\n -webkit-transform: translateY(10px);\n -ms-transform: translateY(10px);\n transform: translateY(10px);\n opacity: 0;\n }\n to{\n -webkit-transform: translateY(0);\n -ms-transform: translateY(0);\n transform: translateY(0);\n opacity: 1;\n }\n }\n`\n","import React from \"react\"\nimport {Container, TextArea} from \"./style\";\nimport {ActionSuccessProps} from \"./type\";\n\nconst ActionSuccess = (props:ActionSuccessProps) => {\n const {subText,headingText} = props\n return (\n <Container>\n <span className=\"mb8\">\n <svg width=\"64\" height=\"64\" viewBox=\"0 0 64 64\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className=\"bug-report-svg-circle\">\n <g clipPath=\"url(#clip0_400_1996)\">\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M30.181 8.068C30.781 8.023 31.388 8 32 8C45.246 8 56 18.754 56 32C56 45.246 45.246 56 32 56C18.754 56 8 45.246 8 32C8 31.388 8.02299 30.781 8.06799 30.181C8.92399 40.71 17.751 49 28.5 49C39.814 49 49 39.814 49 28.5C49 17.751 40.71 8.924 30.181 8.068Z\" fill=\"#D1FEE8\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M47.5564 47.5561C38.971 56.1415 25.0297 56.1415 16.4443 47.5561C7.85886 38.9707 7.85888 25.0294 16.4443 16.444C25.0297 7.85854 38.971 7.85853 47.5564 16.4439C54.3243 23.2118 55.7583 33.3076 51.8559 41.4848C51.3799 42.4819 51.8033 43.6758 52.7986 44.1518C53.7948 44.627 54.9904 44.2035 55.4656 43.2074C60.0765 33.5443 58.3836 21.6132 50.3854 13.615C40.2387 3.46826 23.762 3.46825 13.6153 13.6149C3.46858 23.7616 3.46859 40.2384 13.6153 50.3851C23.762 60.5318 40.2387 60.5318 50.3854 50.3851C51.166 49.6044 51.166 48.3367 50.3854 47.5561C49.6048 46.7754 48.3371 46.7754 47.5564 47.5561Z\" fill=\"#06BA63\"/>\n <g clipPath=\"url(#clip1_400_1996)\" className=\"svg-checkmark\">\n <path d=\"M38.7099 27.2099C38.617 27.1161 38.5064 27.0417 38.3845 26.991C38.2627 26.9402 38.132 26.9141 37.9999 26.9141C37.8679 26.9141 37.7372 26.9402 37.6154 26.991C37.4935 27.0417 37.3829 27.1161 37.29 27.2099L29.84 34.6699L26.7099 31.5299C26.6134 31.4366 26.4995 31.3633 26.3746 31.3141C26.2498 31.2649 26.1165 31.2408 25.9823 31.2431C25.8481 31.2454 25.7157 31.2741 25.5926 31.3276C25.4695 31.3811 25.3582 31.4583 25.2649 31.5549C25.1717 31.6514 25.0984 31.7653 25.0492 31.8902C25 32.015 24.9759 32.1484 24.9782 32.2825C24.9805 32.4167 25.0092 32.5491 25.0627 32.6722C25.1162 32.7953 25.1934 32.9066 25.2899 32.9999L29.13 36.8399C29.2229 36.9336 29.3335 37.008 29.4554 37.0588C29.5772 37.1095 29.7079 37.1357 29.84 37.1357C29.972 37.1357 30.1027 37.1095 30.2245 37.0588C30.3464 37.008 30.457 36.9336 30.55 36.8399L38.7099 28.6799C38.8115 28.5862 38.8925 28.4726 38.9479 28.3461C39.0033 28.2196 39.0319 28.083 39.0319 27.9449C39.0319 27.8068 39.0033 27.6702 38.9479 27.5437C38.8925 27.4172 38.8115 27.3035 38.7099 27.2099V27.2099Z\" fill=\"#06BA63\"/>\n </g>\n </g>\n <defs>\n <clipPath id=\"clip0_400_1996\">\n <rect width=\"64\" height=\"64\" fill=\"white\"/>\n </clipPath>\n <clipPath id=\"clip1_400_1996\">\n <rect width=\"24\" height=\"24\" fill=\"white\" transform=\"translate(20 20)\"/>\n </clipPath>\n </defs>\n </svg>\n </span>\n <TextArea>\n {headingText &&\n <h3 className=\"heading-text\">{headingText}</h3>\n }\n {subText &&\n <p className=\"sub-text\">{subText}</p>\n }\n </TextArea>\n </Container>\n )\n}\n\nexport default ActionSuccess\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const TableContainer = styled.div`\n overflow-x: auto;\n`\n\nexport const Table = styled.table`\n width: 100%;\n border-collapse: separate;\n border-spacing: 0 8px;\n text-align: left;\n .rounded-row td:first-child, .rounded-row th:first-child{\n border-top-left-radius: 8px;\n border-bottom-left-radius: 8px;\n }\n .rounded-row td:last-child, .rounded-row th:last-child{\n border-top-right-radius: 8px;\n border-bottom-right-radius: 8px;\n }\n .rounded-row td:last-child div{\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n thead tr{\n background: ${theme.colors[\"neutral-900\"]};\n font-size: 16px;\n font-weight: 500;\n line-height: 19px;\n font-family: Circular Book Medium, sans-serif;\n }\n thead th{\n padding: 11px 16px;\n color: ${theme.colors.white};\n }\n tbody tr{\n background: ${theme.colors.white};\n color: ${theme.colors[\"neutral-900\"]};\n font-size: 16px;\n font-weight: 400;\n line-height: 19px;\n cursor:pointer;\n }\n tbody td{\n padding: 16px;\n }\n`\n\nexport const NothingContainer = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 300px;\n background: ${theme.colors.white};\n border-radius: 8px;\n`\n\nexport const NothingContent = styled.div`\n display: flex;\n align-items: center;\n flex-direction: column;\n gap: 20px;\n p{\n font-size: 16px;\n font-weight: 400;\n line-height: 19px;\n margin: 0;\n }\n`\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const TableContainer = styled.div`\n overflow-x: auto;\n`\n\nexport const Table = styled.table`\n width: 100%;\n border-collapse: separate;\n border-spacing: 0 8px;\n text-align: left;\n .rounded-row td:first-child, .rounded-row th:first-child{\n border-top-left-radius: 8px;\n border-bottom-left-radius: 8px;\n }\n .rounded-row td:last-child, .rounded-row th:last-child{\n border-top-right-radius: 8px;\n border-bottom-right-radius: 8px;\n }\n .rounded-row td:last-child div{\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n thead tr{\n background: ${theme.colors[\"neutral-900\"]};\n font-size: 16px;\n font-weight: 500;\n line-height: 19px;\n font-family: Circular Book Medium, sans-serif;\n }\n thead th{\n color: ${theme.colors.white} !important;\n padding: 11px 16px;\n }\n tbody tr{\n background: ${theme.colors.white};\n color: ${theme.colors[\"neutral-900\"]};\n font-size: 16px;\n font-weight: 400;\n line-height: 19px;\n cursor:pointer;\n }\n tbody td{\n padding: 16px;\n }\n`\n\nexport const NothingContainer = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 300px;\n background: ${theme.colors.white};\n border-radius: 8px;\n`\n\nexport const NothingContent = styled.div`\n display: flex;\n align-items: center;\n flex-direction: column;\n gap: 20px;\n p{\n font-size: 16px;\n font-weight: 400;\n line-height: 19px;\n margin: 0;\n }\n`\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const TableContainer = styled.div`\n overflow-x: auto;\n`\n\nexport const Table = styled.table`\n width: 100%;\n border-collapse: separate;\n border-spacing: 0 8px;\n text-align: left;\n .rounded-row td:first-child, .rounded-row th:first-child{\n border-top-left-radius: 8px;\n border-bottom-left-radius: 8px;\n }\n .rounded-row td:last-child, .rounded-row th:last-child{\n border-top-right-radius: 8px;\n border-bottom-right-radius: 8px;\n }\n .rounded-row td:last-child div{\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n thead tr{\n background: ${theme.colors[\"neutral-900\"]};\n font-size: 16px;\n font-weight: 500;\n line-height: 19px;\n font-family: Circular Book Medium, sans-serif;\n }\n thead th{\n padding: 11px 16px;\n color: ${theme.colors.white} !important;\n }\n tbody tr{\n background: ${theme.colors.white};\n color: ${theme.colors[\"neutral-900\"]};\n font-size: 16px;\n font-weight: 400;\n line-height: 19px;\n cursor:pointer;\n }\n tbody td{\n padding: 16px;\n }\n`\n\nexport const NothingContainer = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 300px;\n background: ${theme.colors.white};\n border-radius: 8px;\n`\n\nexport const NothingContent = styled.div`\n display: flex;\n align-items: center;\n flex-direction: column;\n gap: 20px;\n p{\n font-size: 16px;\n font-weight: 400;\n line-height: 19px;\n margin: 0;\n }\n`\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const Container = styled.div`\n position: relative;\n padding: 8px 16px 40px 16px;\n`\n\nexport const LogTimeline = styled.div`\n position: absolute;\n height: 100%;\n border-left: 1px solid ${theme.colors[\"success-500\"]};\n left: 0;\n top:8px\n`\n\nexport const TimelineDot = styled.div`\n position: absolute;\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: ${theme.colors[\"success-500\"]};\n top: 8px;\n left: -3px;\n`\n\nexport const LogContent = styled.div`\n display: flex;\n flex-direction: column;\n gap: 8px;\n color: ${theme.colors[\"neutral-600\"]};\n font-size: 14px;\n *{\n margin: 0;\n }\n p.timestamp{\n font-size: 12px;\n line-height: 14px;\n font-weight: 400;\n }\n p.log-description{\n font-weight: 500;\n font-size: 16px;\n line-height: 19px;\n color: ${theme.colors[\"neutral-900\"]};\n }\n`\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const BankAcctsWrapper = styled.div`\n display: flex;\n flex-direction: column;\n gap: 29px;\n`\n\nexport const Container = styled.div`\n padding: 16px;\n background: ${theme.colors.white};\n border: 1px solid ${theme.colors[\"neutral-100\"]};\n border-top: 3px solid ${theme.colors[\"neutral-300\"]};\n border-radius: 8px;\n display: flex;\n gap: 24px;\n &.is-active{\n border-top: 3px solid ${theme.colors[\"success-500\"]};\n }\n`\n\nexport const AcctDets = styled.div`\n display: flex;\n flex-direction: column;\n gap: 8px;\n width: 100%;\n color: ${theme.colors[\"neutral-600\"]};\n font-size: 12px;\n line-height: 14px;\n font-weight: 400;\n *{\n margin: 0;\n }\n .acct-no{\n color: ${theme.colors[\"neutral-900\"]};\n font-weight: 500;\n font-family: Circular Book Medium, sans-serif;\n line-height: 19px;\n font-size: 16px;\n }\n .bank-name{\n font-family: Circular Book Medium,sans-serif;\n font-size: 12px;\n line-height: 14px;\n font-weight: 500;\n }\n`\n\nexport const ActionButtons = styled.div`\n display: flex;\n gap: 8px;\n justify-content: start;\n align-items: center;\n width: 100%;\n div{\n display: flex;\n gap: 8px;\n }\n`\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const OutlineButtonComp = styled.button`\n color: ${theme.colors[\"neutral-900\"]};\n border-radius: 8px;\n border: 1px solid;\n //border: transparent;\n width: 100%;\n cursor: pointer;\n display:flex;\n justify-content:center;\n align-items:center;\n &.with-bg{\n background: white !important;\n }\n :focus-within,:focus{\n outline: none;\n \n }\n &:disabled{\n cursor: not-allowed;\n }\n\n //sizes\n &.sm{\n padding: 8px 16px;\n font-size: 14px;\n height: 33px;\n }\n &.md{\n padding: 12px 18px;\n font-size: 16px;\n height: 43px;\n }\n &.lg{\n padding: 14px 20px;\n font-size: 18px;\n height: 50px;\n }\n \n //colors\n &.primary{\n outline-color: ${theme.colors[\"primary-500\"]};\n color: ${theme.colors[\"primary-500\"]};\n background: transparent;\n }\n &.primary:hover{\n background: ${theme.colors[\"neutral-50\"]};\n outline-color: ${theme.colors[\"primary-500\"]};\n }\n &.primary:active{\n background: ${theme.colors[\"primary-100\"]};\n border-color: ${theme.colors[\"primary-500\"]};\n }\n &.primary:focus,.primary:focus-within{\n outline: 2px solid ${theme.colors[\"primary-200\"]};\n border: 1px solid transparent;\n }\n &.primary:disabled{\n background: none;\n border: 1px solid ${theme.colors[\"primary-100\"]};\n color: ${theme.colors[\"primary-100\"]};\n cursor: not-allowed;\n }\n &.warning{\n outline-color: ${theme.colors[\"warning-500\"]};\n color: ${theme.colors[\"warning-500\"]};\n background: transparent;\n }\n &.warning:hover{\n background: ${theme.colors[\"warning-50\"]};\n outline-color: ${theme.colors[\"warning-500\"]};\n }\n &.warning:active{\n background: ${theme.colors[\"warning-100\"]};\n border-color: ${theme.colors[\"warning-500\"]};\n }\n &.warning:focus,.warning:focus-within{\n outline: 2px solid ${theme.colors[\"warning-200\"]};\n border: 1px solid transparent;\n }\n &.warning:disabled{\n background: none;\n border: 1px solid ${theme.colors[\"warning-100\"]};\n color: ${theme.colors[\"warning-100\"]};\n cursor: not-allowed;\n }\n &.success{\n outline-color: ${theme.colors[\"success-500\"]};\n color: ${theme.colors[\"success-500\"]};\n background: transparent;\n }\n &.success:hover{\n background: ${theme.colors[\"success-50\"]};\n outline-color: ${theme.colors[\"success-500\"]};\n }\n &.success:active{\n background: ${theme.colors[\"success-100\"]};\n border-color: ${theme.colors[\"success-500\"]};\n }\n &.success:focus,.success:focus-within{\n outline: 2px solid ${theme.colors[\"success-200\"]};\n border: 1px solid transparent;\n }\n &.success:disabled{\n background: none;\n border: 1px solid ${theme.colors[\"success-100\"]};\n color: ${theme.colors[\"success-100\"]};\n cursor: not-allowed;\n }\n &.error{\n outline-color: ${theme.colors[\"error-500\"]};\n color: ${theme.colors[\"error-500\"]};\n background: transparent;\n }\n &.error:hover{\n background: ${theme.colors[\"error-50\"]};\n outline-color: ${theme.colors[\"error-500\"]};\n }\n &.error:active{\n background: ${theme.colors[\"error-100\"]};\n border-color: ${theme.colors[\"error-500\"]};\n }\n &.error:focus,.error:focus-within{\n outline: 2px solid ${theme.colors[\"error-200\"]};\n border: 1px solid transparent;\n }\n &.error:disabled{\n background: none;\n border: 1px solid ${theme.colors[\"error-100\"]};\n color: ${theme.colors[\"error-100\"]};\n cursor: not-allowed;\n }\n &.base:disabled{\n opacity: 0.3;\n }\n`\n","import React from \"react\"\nimport {OutlineButtonProps} from \"./type\";\nimport {OutlineButtonComp} from \"./style\";\n\nconst OutlineButton = (props:OutlineButtonProps) => {\n const {size, variant, disabled, children} = props;\n return <OutlineButtonComp className={`${!variant ? 'base' : variant} ${size} with-bg`} disabled={disabled} {...props}>{children}</OutlineButtonComp>\n}\n\nexport default OutlineButton\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import React from \"react\"\nimport './style.css'\n\n\nconst Loader = () => {\n return (\n <span className=\"loader\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\">\n<rect width=\"24\" height=\"24\" fill=\"url(#pattern0)\"/>\n<defs>\n<pattern id=\"pattern0\" patternContentUnits=\"objectBoundingBox\" width=\"1\" height=\"1\">\n<use xlinkHref=\"#image0_460_1981\" transform=\"scale(0.00195312)\"/>\n</pattern>\n<image id=\"image0_460_1981\" width=\"512\" height=\"512\"\n xlinkHref=\"data:image/png;base64,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\"/>\n</defs>\n</svg>\n\n </span>\n )\n}\n\nexport default Loader\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const MapContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 24px;\n`\n\nexport const Container = styled.div`\n border: 1px solid ${theme.colors[\"neutral-100\"]};\n background: ${theme.colors.white};\n border-radius: 8px;\n display: flex;\n gap:12px;\n padding: 16px;\n cursor: pointer;\n &.active{\n background:${theme.colors[\"primary-50\"]};\n border:1px solid ${theme.colors[\"primary-500\"]};\n animation: 0.3s select ease-out;\n @keyframes select{\n from{\n border: 1px solid ${theme.colors[\"neutral-100\"]};\n background: ${theme.colors.white};\n }\n to{\n background:${theme.colors[\"primary-50\"]};\n border:1px solid ${theme.colors[\"primary-500\"]};\n }\n }\n }\n`\n\nexport const Dets = styled.div`\n display: flex;\n gap: 12px;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n`\n\nexport const AccountInfo = styled.div`\n display: flex;\n flex-direction: column;\n gap: 8px;\n *{\n margin: 0;\n }\n p.acct-no{\n color: ${theme.colors[\"neutral-900\"]};\n font-family: Circular Book Medium, sans-serif;\n font-weight: 500;\n font-size: 16px;\n line-height: 19px;\n }\n p.bank-name{\n font-weight: 500;\n font-family: Circular Book Medium, sans-serif;\n font-size: 12px;\n line-height: 14px;\n color: ${theme.colors[\"neutral-600\"]};\n }\n p.acct-name,p.curr{\n font-weight: 400;\n font-family: Circular Book, sans-serif;\n font-size: 12px;\n line-height: 14px;\n color: ${theme.colors[\"neutral-600\"]};\n }\n`\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const BreadcrumbContainer = styled.div`\n background: ${theme.colors.white};\n padding: 8px;\n height: 49px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n gap: 8px;\n //box-sizing: border-box;\n p{\n margin:0;\n }\n a{\n text-decoration: none;\n color: ${theme.colors[\"neutral-400\"]};\n }\n div{\n display: flex;\n align-items: center;\n gap: 8px;\n height: 100%;\n }\n`\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const TableContainer = styled.div`\n overflow-x: auto;\n`\n\nexport const Table = styled.table`\n width: 100%;\n border-collapse: separate;\n border-spacing: 0 8px;\n text-align: left;\n .rounded-row td:first-child, .rounded-row th:first-child{\n border-top-left-radius: 8px;\n border-bottom-left-radius: 8px;\n }\n .rounded-row td:last-child, .rounded-row th:last-child{\n border-top-right-radius: 8px;\n border-bottom-right-radius: 8px;\n }\n .rounded-row td:last-child div{\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n thead tr{\n background: ${theme.colors[\"neutral-900\"]};\n font-size: 16px;\n font-weight: 500;\n line-height: 19px;\n font-family: Circular Book Medium, sans-serif;\n }\n thead th{\n padding: 11px 16px;\n color: ${theme.colors.white};\n }\n tbody tr{\n background: ${theme.colors.white};\n color: ${theme.colors[\"neutral-900\"]};\n font-size: 16px;\n font-weight: 400;\n line-height: 19px;\n cursor:pointer;\n }\n tbody td{\n padding: 16px;\n }\n`\n\nexport const NothingContainer = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 300px;\n background: ${theme.colors.white};\n border-radius: 8px;\n`\n\nexport const NothingContent = styled.div`\n display: flex;\n align-items: center;\n flex-direction: column;\n gap: 20px;\n p{\n font-size: 16px;\n font-weight: 400;\n line-height: 19px;\n margin: 0;\n }\n`\n\nexport const BrokerCountry = styled.div`\n display: flex;\n gap: 8px;\n align-items: center;\n img{\n width: 21px;\n height: 15px;\n }\n`\n","/*!\n * Chart.js v3.9.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nfunction noop() {}\nconst uid = (function() {\n let id = 0;\n return function() {\n return id++;\n };\n}());\nfunction isNullOrUndef(value) {\n return value === null || typeof value === 'undefined';\n}\nfunction isArray(value) {\n if (Array.isArray && Array.isArray(value)) {\n return true;\n }\n const type = Object.prototype.toString.call(value);\n if (type.slice(0, 7) === '[object' && type.slice(-6) === 'Array]') {\n return true;\n }\n return false;\n}\nfunction isObject(value) {\n return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\nconst isNumberFinite = (value) => (typeof value === 'number' || value instanceof Number) && isFinite(+value);\nfunction finiteOrDefault(value, defaultValue) {\n return isNumberFinite(value) ? value : defaultValue;\n}\nfunction valueOrDefault(value, defaultValue) {\n return typeof value === 'undefined' ? defaultValue : value;\n}\nconst toPercentage = (value, dimension) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100\n : value / dimension;\nconst toDimension = (value, dimension) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100 * dimension\n : +value;\nfunction callback(fn, args, thisArg) {\n if (fn && typeof fn.call === 'function') {\n return fn.apply(thisArg, args);\n }\n}\nfunction each(loopable, fn, thisArg, reverse) {\n let i, len, keys;\n if (isArray(loopable)) {\n len = loopable.length;\n if (reverse) {\n for (i = len - 1; i >= 0; i--) {\n fn.call(thisArg, loopable[i], i);\n }\n } else {\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[i], i);\n }\n }\n } else if (isObject(loopable)) {\n keys = Object.keys(loopable);\n len = keys.length;\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[keys[i]], keys[i]);\n }\n }\n}\nfunction _elementsEqual(a0, a1) {\n let i, ilen, v0, v1;\n if (!a0 || !a1 || a0.length !== a1.length) {\n return false;\n }\n for (i = 0, ilen = a0.length; i < ilen; ++i) {\n v0 = a0[i];\n v1 = a1[i];\n if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n return false;\n }\n }\n return true;\n}\nfunction clone$1(source) {\n if (isArray(source)) {\n return source.map(clone$1);\n }\n if (isObject(source)) {\n const target = Object.create(null);\n const keys = Object.keys(source);\n const klen = keys.length;\n let k = 0;\n for (; k < klen; ++k) {\n target[keys[k]] = clone$1(source[keys[k]]);\n }\n return target;\n }\n return source;\n}\nfunction isValidKey(key) {\n return ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\n}\nfunction _merger(key, target, source, options) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n merge(tval, sval, options);\n } else {\n target[key] = clone$1(sval);\n }\n}\nfunction merge(target, source, options) {\n const sources = isArray(source) ? source : [source];\n const ilen = sources.length;\n if (!isObject(target)) {\n return target;\n }\n options = options || {};\n const merger = options.merger || _merger;\n for (let i = 0; i < ilen; ++i) {\n source = sources[i];\n if (!isObject(source)) {\n continue;\n }\n const keys = Object.keys(source);\n for (let k = 0, klen = keys.length; k < klen; ++k) {\n merger(keys[k], target, source, options);\n }\n }\n return target;\n}\nfunction mergeIf(target, source) {\n return merge(target, source, {merger: _mergerIf});\n}\nfunction _mergerIf(key, target, source) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n mergeIf(tval, sval);\n } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n target[key] = clone$1(sval);\n }\n}\nfunction _deprecated(scope, value, previous, current) {\n if (value !== undefined) {\n console.warn(scope + ': \"' + previous +\n\t\t\t'\" is deprecated. Please use \"' + current + '\" instead');\n }\n}\nconst keyResolvers = {\n '': v => v,\n x: o => o.x,\n y: o => o.y\n};\nfunction resolveObjectKey(obj, key) {\n const resolver = keyResolvers[key] || (keyResolvers[key] = _getKeyResolver(key));\n return resolver(obj);\n}\nfunction _getKeyResolver(key) {\n const keys = _splitKey(key);\n return obj => {\n for (const k of keys) {\n if (k === '') {\n break;\n }\n obj = obj && obj[k];\n }\n return obj;\n };\n}\nfunction _splitKey(key) {\n const parts = key.split('.');\n const keys = [];\n let tmp = '';\n for (const part of parts) {\n tmp += part;\n if (tmp.endsWith('\\\\')) {\n tmp = tmp.slice(0, -1) + '.';\n } else {\n keys.push(tmp);\n tmp = '';\n }\n }\n return keys;\n}\nfunction _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\nconst defined = (value) => typeof value !== 'undefined';\nconst isFunction = (value) => typeof value === 'function';\nconst setsEqual = (a, b) => {\n if (a.size !== b.size) {\n return false;\n }\n for (const item of a) {\n if (!b.has(item)) {\n return false;\n }\n }\n return true;\n};\nfunction _isClickEvent(e) {\n return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n\nconst PI = Math.PI;\nconst TAU = 2 * PI;\nconst PITAU = TAU + PI;\nconst INFINITY = Number.POSITIVE_INFINITY;\nconst RAD_PER_DEG = PI / 180;\nconst HALF_PI = PI / 2;\nconst QUARTER_PI = PI / 4;\nconst TWO_THIRDS_PI = PI * 2 / 3;\nconst log10 = Math.log10;\nconst sign = Math.sign;\nfunction niceNum(range) {\n const roundedRange = Math.round(range);\n range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;\n const niceRange = Math.pow(10, Math.floor(log10(range)));\n const fraction = range / niceRange;\n const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n return niceFraction * niceRange;\n}\nfunction _factorize(value) {\n const result = [];\n const sqrt = Math.sqrt(value);\n let i;\n for (i = 1; i < sqrt; i++) {\n if (value % i === 0) {\n result.push(i);\n result.push(value / i);\n }\n }\n if (sqrt === (sqrt | 0)) {\n result.push(sqrt);\n }\n result.sort((a, b) => a - b).pop();\n return result;\n}\nfunction isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\nfunction almostEquals(x, y, epsilon) {\n return Math.abs(x - y) < epsilon;\n}\nfunction almostWhole(x, epsilon) {\n const rounded = Math.round(x);\n return ((rounded - epsilon) <= x) && ((rounded + epsilon) >= x);\n}\nfunction _setMinAndMaxByKey(array, target, property) {\n let i, ilen, value;\n for (i = 0, ilen = array.length; i < ilen; i++) {\n value = array[i][property];\n if (!isNaN(value)) {\n target.min = Math.min(target.min, value);\n target.max = Math.max(target.max, value);\n }\n }\n}\nfunction toRadians(degrees) {\n return degrees * (PI / 180);\n}\nfunction toDegrees(radians) {\n return radians * (180 / PI);\n}\nfunction _decimalPlaces(x) {\n if (!isNumberFinite(x)) {\n return;\n }\n let e = 1;\n let p = 0;\n while (Math.round(x * e) / e !== x) {\n e *= 10;\n p++;\n }\n return p;\n}\nfunction getAngleFromPoint(centrePoint, anglePoint) {\n const distanceFromXCenter = anglePoint.x - centrePoint.x;\n const distanceFromYCenter = anglePoint.y - centrePoint.y;\n const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n if (angle < (-0.5 * PI)) {\n angle += TAU;\n }\n return {\n angle,\n distance: radialDistanceFromCenter\n };\n}\nfunction distanceBetweenPoints(pt1, pt2) {\n return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\nfunction _angleDiff(a, b) {\n return (a - b + PITAU) % TAU - PI;\n}\nfunction _normalizeAngle(a) {\n return (a % TAU + TAU) % TAU;\n}\nfunction _angleBetween(angle, start, end, sameAngleIsFullCircle) {\n const a = _normalizeAngle(angle);\n const s = _normalizeAngle(start);\n const e = _normalizeAngle(end);\n const angleToStart = _normalizeAngle(s - a);\n const angleToEnd = _normalizeAngle(e - a);\n const startToAngle = _normalizeAngle(a - s);\n const endToAngle = _normalizeAngle(a - e);\n return a === s || a === e || (sameAngleIsFullCircle && s === e)\n || (angleToStart > angleToEnd && startToAngle < endToAngle);\n}\nfunction _limitValue(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\nfunction _int16Range(value) {\n return _limitValue(value, -32768, 32767);\n}\nfunction _isBetween(value, start, end, epsilon = 1e-6) {\n return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;\n}\n\nfunction _lookup(table, value, cmp) {\n cmp = cmp || ((index) => table[index] < value);\n let hi = table.length - 1;\n let lo = 0;\n let mid;\n while (hi - lo > 1) {\n mid = (lo + hi) >> 1;\n if (cmp(mid)) {\n lo = mid;\n } else {\n hi = mid;\n }\n }\n return {lo, hi};\n}\nconst _lookupByKey = (table, key, value, last) =>\n _lookup(table, value, last\n ? index => table[index][key] <= value\n : index => table[index][key] < value);\nconst _rlookupByKey = (table, key, value) =>\n _lookup(table, value, index => table[index][key] >= value);\nfunction _filterBetween(values, min, max) {\n let start = 0;\n let end = values.length;\n while (start < end && values[start] < min) {\n start++;\n }\n while (end > start && values[end - 1] > max) {\n end--;\n }\n return start > 0 || end < values.length\n ? values.slice(start, end)\n : values;\n}\nconst arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\nfunction listenArrayEvents(array, listener) {\n if (array._chartjs) {\n array._chartjs.listeners.push(listener);\n return;\n }\n Object.defineProperty(array, '_chartjs', {\n configurable: true,\n enumerable: false,\n value: {\n listeners: [listener]\n }\n });\n arrayEvents.forEach((key) => {\n const method = '_onData' + _capitalize(key);\n const base = array[key];\n Object.defineProperty(array, key, {\n configurable: true,\n enumerable: false,\n value(...args) {\n const res = base.apply(this, args);\n array._chartjs.listeners.forEach((object) => {\n if (typeof object[method] === 'function') {\n object[method](...args);\n }\n });\n return res;\n }\n });\n });\n}\nfunction unlistenArrayEvents(array, listener) {\n const stub = array._chartjs;\n if (!stub) {\n return;\n }\n const listeners = stub.listeners;\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n if (listeners.length > 0) {\n return;\n }\n arrayEvents.forEach((key) => {\n delete array[key];\n });\n delete array._chartjs;\n}\nfunction _arrayUnique(items) {\n const set = new Set();\n let i, ilen;\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n set.add(items[i]);\n }\n if (set.size === ilen) {\n return items;\n }\n return Array.from(set);\n}\n\nfunction fontString(pixelSize, fontStyle, fontFamily) {\n return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\nconst requestAnimFrame = (function() {\n if (typeof window === 'undefined') {\n return function(callback) {\n return callback();\n };\n }\n return window.requestAnimationFrame;\n}());\nfunction throttled(fn, thisArg, updateFn) {\n const updateArgs = updateFn || ((args) => Array.prototype.slice.call(args));\n let ticking = false;\n let args = [];\n return function(...rest) {\n args = updateArgs(rest);\n if (!ticking) {\n ticking = true;\n requestAnimFrame.call(window, () => {\n ticking = false;\n fn.apply(thisArg, args);\n });\n }\n };\n}\nfunction debounce(fn, delay) {\n let timeout;\n return function(...args) {\n if (delay) {\n clearTimeout(timeout);\n timeout = setTimeout(fn, delay, args);\n } else {\n fn.apply(this, args);\n }\n return delay;\n };\n}\nconst _toLeftRightCenter = (align) => align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\nconst _alignStartEnd = (align, start, end) => align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\nconst _textX = (align, left, right, rtl) => {\n const check = rtl ? 'left' : 'right';\n return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\nfunction _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled) {\n const pointCount = points.length;\n let start = 0;\n let count = pointCount;\n if (meta._sorted) {\n const {iScale, _parsed} = meta;\n const axis = iScale.axis;\n const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(Math.min(\n _lookupByKey(_parsed, iScale.axis, min).lo,\n animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo),\n 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(Math.max(\n _lookupByKey(_parsed, iScale.axis, max, true).hi + 1,\n animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max), true).hi + 1),\n start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n }\n return {start, count};\n}\nfunction _scaleRangesChanged(meta) {\n const {xScale, yScale, _scaleRanges} = meta;\n const newRanges = {\n xmin: xScale.min,\n xmax: xScale.max,\n ymin: yScale.min,\n ymax: yScale.max\n };\n if (!_scaleRanges) {\n meta._scaleRanges = newRanges;\n return true;\n }\n const changed = _scaleRanges.xmin !== xScale.min\n\t\t|| _scaleRanges.xmax !== xScale.max\n\t\t|| _scaleRanges.ymin !== yScale.min\n\t\t|| _scaleRanges.ymax !== yScale.max;\n Object.assign(_scaleRanges, newRanges);\n return changed;\n}\n\nconst atEdge = (t) => t === 0 || t === 1;\nconst elasticIn = (t, s, p) => -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\nconst elasticOut = (t, s, p) => Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\nconst effects = {\n linear: t => t,\n easeInQuad: t => t * t,\n easeOutQuad: t => -t * (t - 2),\n easeInOutQuad: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t\n : -0.5 * ((--t) * (t - 2) - 1),\n easeInCubic: t => t * t * t,\n easeOutCubic: t => (t -= 1) * t * t + 1,\n easeInOutCubic: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t\n : 0.5 * ((t -= 2) * t * t + 2),\n easeInQuart: t => t * t * t * t,\n easeOutQuart: t => -((t -= 1) * t * t * t - 1),\n easeInOutQuart: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t\n : -0.5 * ((t -= 2) * t * t * t - 2),\n easeInQuint: t => t * t * t * t * t,\n easeOutQuint: t => (t -= 1) * t * t * t * t + 1,\n easeInOutQuint: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t * t\n : 0.5 * ((t -= 2) * t * t * t * t + 2),\n easeInSine: t => -Math.cos(t * HALF_PI) + 1,\n easeOutSine: t => Math.sin(t * HALF_PI),\n easeInOutSine: t => -0.5 * (Math.cos(PI * t) - 1),\n easeInExpo: t => (t === 0) ? 0 : Math.pow(2, 10 * (t - 1)),\n easeOutExpo: t => (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1,\n easeInOutExpo: t => atEdge(t) ? t : t < 0.5\n ? 0.5 * Math.pow(2, 10 * (t * 2 - 1))\n : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2),\n easeInCirc: t => (t >= 1) ? t : -(Math.sqrt(1 - t * t) - 1),\n easeOutCirc: t => Math.sqrt(1 - (t -= 1) * t),\n easeInOutCirc: t => ((t /= 0.5) < 1)\n ? -0.5 * (Math.sqrt(1 - t * t) - 1)\n : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n easeInElastic: t => atEdge(t) ? t : elasticIn(t, 0.075, 0.3),\n easeOutElastic: t => atEdge(t) ? t : elasticOut(t, 0.075, 0.3),\n easeInOutElastic(t) {\n const s = 0.1125;\n const p = 0.45;\n return atEdge(t) ? t :\n t < 0.5\n ? 0.5 * elasticIn(t * 2, s, p)\n : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p);\n },\n easeInBack(t) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n },\n easeOutBack(t) {\n const s = 1.70158;\n return (t -= 1) * t * ((s + 1) * t + s) + 1;\n },\n easeInOutBack(t) {\n let s = 1.70158;\n if ((t /= 0.5) < 1) {\n return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\n }\n return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n },\n easeInBounce: t => 1 - effects.easeOutBounce(1 - t),\n easeOutBounce(t) {\n const m = 7.5625;\n const d = 2.75;\n if (t < (1 / d)) {\n return m * t * t;\n }\n if (t < (2 / d)) {\n return m * (t -= (1.5 / d)) * t + 0.75;\n }\n if (t < (2.5 / d)) {\n return m * (t -= (2.25 / d)) * t + 0.9375;\n }\n return m * (t -= (2.625 / d)) * t + 0.984375;\n },\n easeInOutBounce: t => (t < 0.5)\n ? effects.easeInBounce(t * 2) * 0.5\n : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5,\n};\n\n/*!\n * @kurkle/color v0.2.1\n * https://github.com/kurkle/color#readme\n * (c) 2022 Jukka Kurkela\n * Released under the MIT License\n */\nfunction round(v) {\n return v + 0.5 | 0;\n}\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n return lim(round(v * 2.55), 0, 255);\n}\nfunction n2b(v) {\n return lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n return lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n return lim(round(v * 100), 0, 100);\n}\nconst map$1 = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15};\nconst hex = [...'0123456789ABCDEF'];\nconst h1 = b => hex[b & 0xF];\nconst h2 = b => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\nconst eq = b => ((b & 0xF0) >> 4) === (b & 0xF);\nconst isShort = v => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\nfunction hexParse(str) {\n var len = str.length;\n var ret;\n if (str[0] === '#') {\n if (len === 4 || len === 5) {\n ret = {\n r: 255 & map$1[str[1]] * 17,\n g: 255 & map$1[str[2]] * 17,\n b: 255 & map$1[str[3]] * 17,\n a: len === 5 ? map$1[str[4]] * 17 : 255\n };\n } else if (len === 7 || len === 9) {\n ret = {\n r: map$1[str[1]] << 4 | map$1[str[2]],\n g: map$1[str[3]] << 4 | map$1[str[4]],\n b: map$1[str[5]] << 4 | map$1[str[6]],\n a: len === 9 ? (map$1[str[7]] << 4 | map$1[str[8]]) : 255\n };\n }\n }\n return ret;\n}\nconst alpha = (a, f) => a < 255 ? f(a) : '';\nfunction hexString(v) {\n var f = isShort(v) ? h1 : h2;\n return v\n ? '#' + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f)\n : undefined;\n}\nconst HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n return [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n return [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n const rgb = hsl2rgbn(h, 1, 0.5);\n let i;\n if (w + b > 1) {\n i = 1 / (w + b);\n w *= i;\n b *= i;\n }\n for (i = 0; i < 3; i++) {\n rgb[i] *= 1 - w - b;\n rgb[i] += w;\n }\n return rgb;\n}\nfunction hueValue(r, g, b, d, max) {\n if (r === max) {\n return ((g - b) / d) + (g < b ? 6 : 0);\n }\n if (g === max) {\n return (b - r) / d + 2;\n }\n return (r - g) / d + 4;\n}\nfunction rgb2hsl(v) {\n const range = 255;\n const r = v.r / range;\n const g = v.g / range;\n const b = v.b / range;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n let h, s, d;\n if (max !== min) {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = hueValue(r, g, b, d, max);\n h = h * 60 + 0.5;\n }\n return [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n return (\n Array.isArray(a)\n ? f(a[0], a[1], a[2])\n : f(a, b, c)\n ).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n return calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n return calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n return calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n return (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n const m = HUE_RE.exec(str);\n let a = 255;\n let v;\n if (!m) {\n return;\n }\n if (m[5] !== v) {\n a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n }\n const h = hue(+m[2]);\n const p1 = +m[3] / 100;\n const p2 = +m[4] / 100;\n if (m[1] === 'hwb') {\n v = hwb2rgb(h, p1, p2);\n } else if (m[1] === 'hsv') {\n v = hsv2rgb(h, p1, p2);\n } else {\n v = hsl2rgb(h, p1, p2);\n }\n return {\n r: v[0],\n g: v[1],\n b: v[2],\n a: a\n };\n}\nfunction rotate(v, deg) {\n var h = rgb2hsl(v);\n h[0] = hue(h[0] + deg);\n h = hsl2rgb(h);\n v.r = h[0];\n v.g = h[1];\n v.b = h[2];\n}\nfunction hslString(v) {\n if (!v) {\n return;\n }\n const a = rgb2hsl(v);\n const h = a[0];\n const s = n2p(a[1]);\n const l = n2p(a[2]);\n return v.a < 255\n ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n : `hsl(${h}, ${s}%, ${l}%)`;\n}\nconst map = {\n x: 'dark',\n Z: 'light',\n Y: 're',\n X: 'blu',\n W: 'gr',\n V: 'medium',\n U: 'slate',\n A: 'ee',\n T: 'ol',\n S: 'or',\n B: 'ra',\n C: 'lateg',\n D: 'ights',\n R: 'in',\n Q: 'turquois',\n E: 'hi',\n P: 'ro',\n O: 'al',\n N: 'le',\n M: 'de',\n L: 'yello',\n F: 'en',\n K: 'ch',\n G: 'arks',\n H: 'ea',\n I: 'ightg',\n J: 'wh'\n};\nconst names$1 = {\n OiceXe: 'f0f8ff',\n antiquewEte: 'faebd7',\n aqua: 'ffff',\n aquamarRe: '7fffd4',\n azuY: 'f0ffff',\n beige: 'f5f5dc',\n bisque: 'ffe4c4',\n black: '0',\n blanKedOmond: 'ffebcd',\n Xe: 'ff',\n XeviTet: '8a2be2',\n bPwn: 'a52a2a',\n burlywood: 'deb887',\n caMtXe: '5f9ea0',\n KartYuse: '7fff00',\n KocTate: 'd2691e',\n cSO: 'ff7f50',\n cSnflowerXe: '6495ed',\n cSnsilk: 'fff8dc',\n crimson: 'dc143c',\n cyan: 'ffff',\n xXe: '8b',\n xcyan: '8b8b',\n xgTMnPd: 'b8860b',\n xWay: 'a9a9a9',\n xgYF: '6400',\n xgYy: 'a9a9a9',\n xkhaki: 'bdb76b',\n xmagFta: '8b008b',\n xTivegYF: '556b2f',\n xSange: 'ff8c00',\n xScEd: '9932cc',\n xYd: '8b0000',\n xsOmon: 'e9967a',\n xsHgYF: '8fbc8f',\n xUXe: '483d8b',\n xUWay: '2f4f4f',\n xUgYy: '2f4f4f',\n xQe: 'ced1',\n xviTet: '9400d3',\n dAppRk: 'ff1493',\n dApskyXe: 'bfff',\n dimWay: '696969',\n dimgYy: '696969',\n dodgerXe: '1e90ff',\n fiYbrick: 'b22222',\n flSOwEte: 'fffaf0',\n foYstWAn: '228b22',\n fuKsia: 'ff00ff',\n gaRsbSo: 'dcdcdc',\n ghostwEte: 'f8f8ff',\n gTd: 'ffd700',\n gTMnPd: 'daa520',\n Way: '808080',\n gYF: '8000',\n gYFLw: 'adff2f',\n gYy: '808080',\n honeyMw: 'f0fff0',\n hotpRk: 'ff69b4',\n RdianYd: 'cd5c5c',\n Rdigo: '4b0082',\n ivSy: 'fffff0',\n khaki: 'f0e68c',\n lavFMr: 'e6e6fa',\n lavFMrXsh: 'fff0f5',\n lawngYF: '7cfc00',\n NmoncEffon: 'fffacd',\n ZXe: 'add8e6',\n ZcSO: 'f08080',\n Zcyan: 'e0ffff',\n ZgTMnPdLw: 'fafad2',\n ZWay: 'd3d3d3',\n ZgYF: '90ee90',\n ZgYy: 'd3d3d3',\n ZpRk: 'ffb6c1',\n ZsOmon: 'ffa07a',\n ZsHgYF: '20b2aa',\n ZskyXe: '87cefa',\n ZUWay: '778899',\n ZUgYy: '778899',\n ZstAlXe: 'b0c4de',\n ZLw: 'ffffe0',\n lime: 'ff00',\n limegYF: '32cd32',\n lRF: 'faf0e6',\n magFta: 'ff00ff',\n maPon: '800000',\n VaquamarRe: '66cdaa',\n VXe: 'cd',\n VScEd: 'ba55d3',\n VpurpN: '9370db',\n VsHgYF: '3cb371',\n VUXe: '7b68ee',\n VsprRggYF: 'fa9a',\n VQe: '48d1cc',\n VviTetYd: 'c71585',\n midnightXe: '191970',\n mRtcYam: 'f5fffa',\n mistyPse: 'ffe4e1',\n moccasR: 'ffe4b5',\n navajowEte: 'ffdead',\n navy: '80',\n Tdlace: 'fdf5e6',\n Tive: '808000',\n TivedBb: '6b8e23',\n Sange: 'ffa500',\n SangeYd: 'ff4500',\n ScEd: 'da70d6',\n pOegTMnPd: 'eee8aa',\n pOegYF: '98fb98',\n pOeQe: 'afeeee',\n pOeviTetYd: 'db7093',\n papayawEp: 'ffefd5',\n pHKpuff: 'ffdab9',\n peru: 'cd853f',\n pRk: 'ffc0cb',\n plum: 'dda0dd',\n powMrXe: 'b0e0e6',\n purpN: '800080',\n YbeccapurpN: '663399',\n Yd: 'ff0000',\n Psybrown: 'bc8f8f',\n PyOXe: '4169e1',\n saddNbPwn: '8b4513',\n sOmon: 'fa8072',\n sandybPwn: 'f4a460',\n sHgYF: '2e8b57',\n sHshell: 'fff5ee',\n siFna: 'a0522d',\n silver: 'c0c0c0',\n skyXe: '87ceeb',\n UXe: '6a5acd',\n UWay: '708090',\n UgYy: '708090',\n snow: 'fffafa',\n sprRggYF: 'ff7f',\n stAlXe: '4682b4',\n tan: 'd2b48c',\n teO: '8080',\n tEstN: 'd8bfd8',\n tomato: 'ff6347',\n Qe: '40e0d0',\n viTet: 'ee82ee',\n JHt: 'f5deb3',\n wEte: 'ffffff',\n wEtesmoke: 'f5f5f5',\n Lw: 'ffff00',\n LwgYF: '9acd32'\n};\nfunction unpack() {\n const unpacked = {};\n const keys = Object.keys(names$1);\n const tkeys = Object.keys(map);\n let i, j, k, ok, nk;\n for (i = 0; i < keys.length; i++) {\n ok = nk = keys[i];\n for (j = 0; j < tkeys.length; j++) {\n k = tkeys[j];\n nk = nk.replace(k, map[k]);\n }\n k = parseInt(names$1[ok], 16);\n unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n }\n return unpacked;\n}\nlet names;\nfunction nameParse(str) {\n if (!names) {\n names = unpack();\n names.transparent = [0, 0, 0, 0];\n }\n const a = names[str.toLowerCase()];\n return a && {\n r: a[0],\n g: a[1],\n b: a[2],\n a: a.length === 4 ? a[3] : 255\n };\n}\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n const m = RGB_RE.exec(str);\n let a = 255;\n let r, g, b;\n if (!m) {\n return;\n }\n if (m[7] !== r) {\n const v = +m[7];\n a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\n }\n r = +m[1];\n g = +m[3];\n b = +m[5];\n r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255));\n g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255));\n b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255));\n return {\n r: r,\n g: g,\n b: b,\n a: a\n };\n}\nfunction rgbString(v) {\n return v && (\n v.a < 255\n ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n : `rgb(${v.r}, ${v.g}, ${v.b})`\n );\n}\nconst to = v => v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;\nconst from = v => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\nfunction interpolate(rgb1, rgb2, t) {\n const r = from(b2n(rgb1.r));\n const g = from(b2n(rgb1.g));\n const b = from(b2n(rgb1.b));\n return {\n r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))),\n g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n a: rgb1.a + t * (rgb2.a - rgb1.a)\n };\n}\nfunction modHSL(v, i, ratio) {\n if (v) {\n let tmp = rgb2hsl(v);\n tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n tmp = hsl2rgb(tmp);\n v.r = tmp[0];\n v.g = tmp[1];\n v.b = tmp[2];\n }\n}\nfunction clone(v, proto) {\n return v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n var v = {r: 0, g: 0, b: 0, a: 255};\n if (Array.isArray(input)) {\n if (input.length >= 3) {\n v = {r: input[0], g: input[1], b: input[2], a: 255};\n if (input.length > 3) {\n v.a = n2b(input[3]);\n }\n }\n } else {\n v = clone(input, {r: 0, g: 0, b: 0, a: 1});\n v.a = n2b(v.a);\n }\n return v;\n}\nfunction functionParse(str) {\n if (str.charAt(0) === 'r') {\n return rgbParse(str);\n }\n return hueParse(str);\n}\nclass Color {\n constructor(input) {\n if (input instanceof Color) {\n return input;\n }\n const type = typeof input;\n let v;\n if (type === 'object') {\n v = fromObject(input);\n } else if (type === 'string') {\n v = hexParse(input) || nameParse(input) || functionParse(input);\n }\n this._rgb = v;\n this._valid = !!v;\n }\n get valid() {\n return this._valid;\n }\n get rgb() {\n var v = clone(this._rgb);\n if (v) {\n v.a = b2n(v.a);\n }\n return v;\n }\n set rgb(obj) {\n this._rgb = fromObject(obj);\n }\n rgbString() {\n return this._valid ? rgbString(this._rgb) : undefined;\n }\n hexString() {\n return this._valid ? hexString(this._rgb) : undefined;\n }\n hslString() {\n return this._valid ? hslString(this._rgb) : undefined;\n }\n mix(color, weight) {\n if (color) {\n const c1 = this.rgb;\n const c2 = color.rgb;\n let w2;\n const p = weight === w2 ? 0.5 : weight;\n const w = 2 * p - 1;\n const a = c1.a - c2.a;\n const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n w2 = 1 - w1;\n c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n c1.a = p * c1.a + (1 - p) * c2.a;\n this.rgb = c1;\n }\n return this;\n }\n interpolate(color, t) {\n if (color) {\n this._rgb = interpolate(this._rgb, color._rgb, t);\n }\n return this;\n }\n clone() {\n return new Color(this.rgb);\n }\n alpha(a) {\n this._rgb.a = n2b(a);\n return this;\n }\n clearer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 - ratio;\n return this;\n }\n greyscale() {\n const rgb = this._rgb;\n const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n rgb.r = rgb.g = rgb.b = val;\n return this;\n }\n opaquer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 + ratio;\n return this;\n }\n negate() {\n const v = this._rgb;\n v.r = 255 - v.r;\n v.g = 255 - v.g;\n v.b = 255 - v.b;\n return this;\n }\n lighten(ratio) {\n modHSL(this._rgb, 2, ratio);\n return this;\n }\n darken(ratio) {\n modHSL(this._rgb, 2, -ratio);\n return this;\n }\n saturate(ratio) {\n modHSL(this._rgb, 1, ratio);\n return this;\n }\n desaturate(ratio) {\n modHSL(this._rgb, 1, -ratio);\n return this;\n }\n rotate(deg) {\n rotate(this._rgb, deg);\n return this;\n }\n}\nfunction index_esm(input) {\n return new Color(input);\n}\n\nfunction isPatternOrGradient(value) {\n if (value && typeof value === 'object') {\n const type = value.toString();\n return type === '[object CanvasPattern]' || type === '[object CanvasGradient]';\n }\n return false;\n}\nfunction color(value) {\n return isPatternOrGradient(value) ? value : index_esm(value);\n}\nfunction getHoverColor(value) {\n return isPatternOrGradient(value)\n ? value\n : index_esm(value).saturate(0.5).darken(0.1).hexString();\n}\n\nconst overrides = Object.create(null);\nconst descriptors = Object.create(null);\nfunction getScope$1(node, key) {\n if (!key) {\n return node;\n }\n const keys = key.split('.');\n for (let i = 0, n = keys.length; i < n; ++i) {\n const k = keys[i];\n node = node[k] || (node[k] = Object.create(null));\n }\n return node;\n}\nfunction set(root, scope, values) {\n if (typeof scope === 'string') {\n return merge(getScope$1(root, scope), values);\n }\n return merge(getScope$1(root, ''), scope);\n}\nclass Defaults {\n constructor(_descriptors) {\n this.animation = undefined;\n this.backgroundColor = 'rgba(0,0,0,0.1)';\n this.borderColor = 'rgba(0,0,0,0.1)';\n this.color = '#666';\n this.datasets = {};\n this.devicePixelRatio = (context) => context.chart.platform.getDevicePixelRatio();\n this.elements = {};\n this.events = [\n 'mousemove',\n 'mouseout',\n 'click',\n 'touchstart',\n 'touchmove'\n ];\n this.font = {\n family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n size: 12,\n style: 'normal',\n lineHeight: 1.2,\n weight: null\n };\n this.hover = {};\n this.hoverBackgroundColor = (ctx, options) => getHoverColor(options.backgroundColor);\n this.hoverBorderColor = (ctx, options) => getHoverColor(options.borderColor);\n this.hoverColor = (ctx, options) => getHoverColor(options.color);\n this.indexAxis = 'x';\n this.interaction = {\n mode: 'nearest',\n intersect: true,\n includeInvisible: false\n };\n this.maintainAspectRatio = true;\n this.onHover = null;\n this.onClick = null;\n this.parsing = true;\n this.plugins = {};\n this.responsive = true;\n this.scale = undefined;\n this.scales = {};\n this.showLine = true;\n this.drawActiveElementsOnTop = true;\n this.describe(_descriptors);\n }\n set(scope, values) {\n return set(this, scope, values);\n }\n get(scope) {\n return getScope$1(this, scope);\n }\n describe(scope, values) {\n return set(descriptors, scope, values);\n }\n override(scope, values) {\n return set(overrides, scope, values);\n }\n route(scope, name, targetScope, targetName) {\n const scopeObject = getScope$1(this, scope);\n const targetScopeObject = getScope$1(this, targetScope);\n const privateName = '_' + name;\n Object.defineProperties(scopeObject, {\n [privateName]: {\n value: scopeObject[name],\n writable: true\n },\n [name]: {\n enumerable: true,\n get() {\n const local = this[privateName];\n const target = targetScopeObject[targetName];\n if (isObject(local)) {\n return Object.assign({}, target, local);\n }\n return valueOrDefault(local, target);\n },\n set(value) {\n this[privateName] = value;\n }\n }\n });\n }\n}\nvar defaults = new Defaults({\n _scriptable: (name) => !name.startsWith('on'),\n _indexable: (name) => name !== 'events',\n hover: {\n _fallback: 'interaction'\n },\n interaction: {\n _scriptable: false,\n _indexable: false,\n }\n});\n\nfunction toFontString(font) {\n if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n return null;\n }\n return (font.style ? font.style + ' ' : '')\n\t\t+ (font.weight ? font.weight + ' ' : '')\n\t\t+ font.size + 'px '\n\t\t+ font.family;\n}\nfunction _measureText(ctx, data, gc, longest, string) {\n let textWidth = data[string];\n if (!textWidth) {\n textWidth = data[string] = ctx.measureText(string).width;\n gc.push(string);\n }\n if (textWidth > longest) {\n longest = textWidth;\n }\n return longest;\n}\nfunction _longestText(ctx, font, arrayOfThings, cache) {\n cache = cache || {};\n let data = cache.data = cache.data || {};\n let gc = cache.garbageCollect = cache.garbageCollect || [];\n if (cache.font !== font) {\n data = cache.data = {};\n gc = cache.garbageCollect = [];\n cache.font = font;\n }\n ctx.save();\n ctx.font = font;\n let longest = 0;\n const ilen = arrayOfThings.length;\n let i, j, jlen, thing, nestedThing;\n for (i = 0; i < ilen; i++) {\n thing = arrayOfThings[i];\n if (thing !== undefined && thing !== null && isArray(thing) !== true) {\n longest = _measureText(ctx, data, gc, longest, thing);\n } else if (isArray(thing)) {\n for (j = 0, jlen = thing.length; j < jlen; j++) {\n nestedThing = thing[j];\n if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n longest = _measureText(ctx, data, gc, longest, nestedThing);\n }\n }\n }\n }\n ctx.restore();\n const gcLen = gc.length / 2;\n if (gcLen > arrayOfThings.length) {\n for (i = 0; i < gcLen; i++) {\n delete data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n return longest;\n}\nfunction _alignPixel(chart, pixel, width) {\n const devicePixelRatio = chart.currentDevicePixelRatio;\n const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0;\n return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n}\nfunction clearCanvas(canvas, ctx) {\n ctx = ctx || canvas.getContext('2d');\n ctx.save();\n ctx.resetTransform();\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.restore();\n}\nfunction drawPoint(ctx, options, x, y) {\n drawPointLegend(ctx, options, x, y, null);\n}\nfunction drawPointLegend(ctx, options, x, y, w) {\n let type, xOffset, yOffset, size, cornerRadius, width;\n const style = options.pointStyle;\n const rotation = options.rotation;\n const radius = options.radius;\n let rad = (rotation || 0) * RAD_PER_DEG;\n if (style && typeof style === 'object') {\n type = style.toString();\n if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n ctx.save();\n ctx.translate(x, y);\n ctx.rotate(rad);\n ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n ctx.restore();\n return;\n }\n }\n if (isNaN(radius) || radius <= 0) {\n return;\n }\n ctx.beginPath();\n switch (style) {\n default:\n if (w) {\n ctx.ellipse(x, y, w / 2, radius, 0, 0, TAU);\n } else {\n ctx.arc(x, y, radius, 0, TAU);\n }\n ctx.closePath();\n break;\n case 'triangle':\n ctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n ctx.closePath();\n break;\n case 'rectRounded':\n cornerRadius = radius * 0.516;\n size = radius - cornerRadius;\n xOffset = Math.cos(rad + QUARTER_PI) * size;\n yOffset = Math.sin(rad + QUARTER_PI) * size;\n ctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n ctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n ctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n ctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n ctx.closePath();\n break;\n case 'rect':\n if (!rotation) {\n size = Math.SQRT1_2 * radius;\n width = w ? w / 2 : size;\n ctx.rect(x - width, y - size, 2 * width, 2 * size);\n break;\n }\n rad += QUARTER_PI;\n case 'rectRot':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + yOffset, y - xOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n ctx.closePath();\n break;\n case 'crossRot':\n rad += QUARTER_PI;\n case 'cross':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n case 'star':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n rad += QUARTER_PI;\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n case 'line':\n xOffset = w ? w / 2 : Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n break;\n case 'dash':\n ctx.moveTo(x, y);\n ctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius);\n break;\n }\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n}\nfunction _isPointInArea(point, area, margin) {\n margin = margin || 0.5;\n return !area || (point && point.x > area.left - margin && point.x < area.right + margin &&\n\t\tpoint.y > area.top - margin && point.y < area.bottom + margin);\n}\nfunction clipArea(ctx, area) {\n ctx.save();\n ctx.beginPath();\n ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n ctx.clip();\n}\nfunction unclipArea(ctx) {\n ctx.restore();\n}\nfunction _steppedLineTo(ctx, previous, target, flip, mode) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n if (mode === 'middle') {\n const midpoint = (previous.x + target.x) / 2.0;\n ctx.lineTo(midpoint, previous.y);\n ctx.lineTo(midpoint, target.y);\n } else if (mode === 'after' !== !!flip) {\n ctx.lineTo(previous.x, target.y);\n } else {\n ctx.lineTo(target.x, previous.y);\n }\n ctx.lineTo(target.x, target.y);\n}\nfunction _bezierCurveTo(ctx, previous, target, flip) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n ctx.bezierCurveTo(\n flip ? previous.cp1x : previous.cp2x,\n flip ? previous.cp1y : previous.cp2y,\n flip ? target.cp2x : target.cp1x,\n flip ? target.cp2y : target.cp1y,\n target.x,\n target.y);\n}\nfunction renderText(ctx, text, x, y, font, opts = {}) {\n const lines = isArray(text) ? text : [text];\n const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n let i, line;\n ctx.save();\n ctx.font = font.string;\n setRenderOpts(ctx, opts);\n for (i = 0; i < lines.length; ++i) {\n line = lines[i];\n if (stroke) {\n if (opts.strokeColor) {\n ctx.strokeStyle = opts.strokeColor;\n }\n if (!isNullOrUndef(opts.strokeWidth)) {\n ctx.lineWidth = opts.strokeWidth;\n }\n ctx.strokeText(line, x, y, opts.maxWidth);\n }\n ctx.fillText(line, x, y, opts.maxWidth);\n decorateText(ctx, x, y, line, opts);\n y += font.lineHeight;\n }\n ctx.restore();\n}\nfunction setRenderOpts(ctx, opts) {\n if (opts.translation) {\n ctx.translate(opts.translation[0], opts.translation[1]);\n }\n if (!isNullOrUndef(opts.rotation)) {\n ctx.rotate(opts.rotation);\n }\n if (opts.color) {\n ctx.fillStyle = opts.color;\n }\n if (opts.textAlign) {\n ctx.textAlign = opts.textAlign;\n }\n if (opts.textBaseline) {\n ctx.textBaseline = opts.textBaseline;\n }\n}\nfunction decorateText(ctx, x, y, line, opts) {\n if (opts.strikethrough || opts.underline) {\n const metrics = ctx.measureText(line);\n const left = x - metrics.actualBoundingBoxLeft;\n const right = x + metrics.actualBoundingBoxRight;\n const top = y - metrics.actualBoundingBoxAscent;\n const bottom = y + metrics.actualBoundingBoxDescent;\n const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom;\n ctx.strokeStyle = ctx.fillStyle;\n ctx.beginPath();\n ctx.lineWidth = opts.decorationWidth || 2;\n ctx.moveTo(left, yDecoration);\n ctx.lineTo(right, yDecoration);\n ctx.stroke();\n }\n}\nfunction addRoundedRectPath(ctx, rect) {\n const {x, y, w, h, radius} = rect;\n ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, -HALF_PI, PI, true);\n ctx.lineTo(x, y + h - radius.bottomLeft);\n ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true);\n ctx.lineTo(x + w - radius.bottomRight, y + h);\n ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true);\n ctx.lineTo(x + w, y + radius.topRight);\n ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true);\n ctx.lineTo(x + radius.topLeft, y);\n}\n\nconst LINE_HEIGHT = new RegExp(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\nconst FONT_STYLE = new RegExp(/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/);\nfunction toLineHeight(value, size) {\n const matches = ('' + value).match(LINE_HEIGHT);\n if (!matches || matches[1] === 'normal') {\n return size * 1.2;\n }\n value = +matches[2];\n switch (matches[3]) {\n case 'px':\n return value;\n case '%':\n value /= 100;\n break;\n }\n return size * value;\n}\nconst numberOrZero = v => +v || 0;\nfunction _readValueToProps(value, props) {\n const ret = {};\n const objProps = isObject(props);\n const keys = objProps ? Object.keys(props) : props;\n const read = isObject(value)\n ? objProps\n ? prop => valueOrDefault(value[prop], value[props[prop]])\n : prop => value[prop]\n : () => value;\n for (const prop of keys) {\n ret[prop] = numberOrZero(read(prop));\n }\n return ret;\n}\nfunction toTRBL(value) {\n return _readValueToProps(value, {top: 'y', right: 'x', bottom: 'y', left: 'x'});\n}\nfunction toTRBLCorners(value) {\n return _readValueToProps(value, ['topLeft', 'topRight', 'bottomLeft', 'bottomRight']);\n}\nfunction toPadding(value) {\n const obj = toTRBL(value);\n obj.width = obj.left + obj.right;\n obj.height = obj.top + obj.bottom;\n return obj;\n}\nfunction toFont(options, fallback) {\n options = options || {};\n fallback = fallback || defaults.font;\n let size = valueOrDefault(options.size, fallback.size);\n if (typeof size === 'string') {\n size = parseInt(size, 10);\n }\n let style = valueOrDefault(options.style, fallback.style);\n if (style && !('' + style).match(FONT_STYLE)) {\n console.warn('Invalid font style specified: \"' + style + '\"');\n style = '';\n }\n const font = {\n family: valueOrDefault(options.family, fallback.family),\n lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n size,\n style,\n weight: valueOrDefault(options.weight, fallback.weight),\n string: ''\n };\n font.string = toFontString(font);\n return font;\n}\nfunction resolve(inputs, context, index, info) {\n let cacheable = true;\n let i, ilen, value;\n for (i = 0, ilen = inputs.length; i < ilen; ++i) {\n value = inputs[i];\n if (value === undefined) {\n continue;\n }\n if (context !== undefined && typeof value === 'function') {\n value = value(context);\n cacheable = false;\n }\n if (index !== undefined && isArray(value)) {\n value = value[index % value.length];\n cacheable = false;\n }\n if (value !== undefined) {\n if (info && !cacheable) {\n info.cacheable = false;\n }\n return value;\n }\n }\n}\nfunction _addGrace(minmax, grace, beginAtZero) {\n const {min, max} = minmax;\n const change = toDimension(grace, (max - min) / 2);\n const keepZero = (value, add) => beginAtZero && value === 0 ? 0 : value + add;\n return {\n min: keepZero(min, -Math.abs(change)),\n max: keepZero(max, change)\n };\n}\nfunction createContext(parentContext, context) {\n return Object.assign(Object.create(parentContext), context);\n}\n\nfunction _createResolver(scopes, prefixes = [''], rootScopes = scopes, fallback, getTarget = () => scopes[0]) {\n if (!defined(fallback)) {\n fallback = _resolve('_fallback', scopes);\n }\n const cache = {\n [Symbol.toStringTag]: 'Object',\n _cacheable: true,\n _scopes: scopes,\n _rootScopes: rootScopes,\n _fallback: fallback,\n _getTarget: getTarget,\n override: (scope) => _createResolver([scope, ...scopes], prefixes, rootScopes, fallback),\n };\n return new Proxy(cache, {\n deleteProperty(target, prop) {\n delete target[prop];\n delete target._keys;\n delete scopes[0][prop];\n return true;\n },\n get(target, prop) {\n return _cached(target, prop,\n () => _resolveWithPrefixes(prop, prefixes, scopes, target));\n },\n getOwnPropertyDescriptor(target, prop) {\n return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(scopes[0]);\n },\n has(target, prop) {\n return getKeysFromAllScopes(target).includes(prop);\n },\n ownKeys(target) {\n return getKeysFromAllScopes(target);\n },\n set(target, prop, value) {\n const storage = target._storage || (target._storage = getTarget());\n target[prop] = storage[prop] = value;\n delete target._keys;\n return true;\n }\n });\n}\nfunction _attachContext(proxy, context, subProxy, descriptorDefaults) {\n const cache = {\n _cacheable: false,\n _proxy: proxy,\n _context: context,\n _subProxy: subProxy,\n _stack: new Set(),\n _descriptors: _descriptors(proxy, descriptorDefaults),\n setContext: (ctx) => _attachContext(proxy, ctx, subProxy, descriptorDefaults),\n override: (scope) => _attachContext(proxy.override(scope), context, subProxy, descriptorDefaults)\n };\n return new Proxy(cache, {\n deleteProperty(target, prop) {\n delete target[prop];\n delete proxy[prop];\n return true;\n },\n get(target, prop, receiver) {\n return _cached(target, prop,\n () => _resolveWithContext(target, prop, receiver));\n },\n getOwnPropertyDescriptor(target, prop) {\n return target._descriptors.allKeys\n ? Reflect.has(proxy, prop) ? {enumerable: true, configurable: true} : undefined\n : Reflect.getOwnPropertyDescriptor(proxy, prop);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(proxy);\n },\n has(target, prop) {\n return Reflect.has(proxy, prop);\n },\n ownKeys() {\n return Reflect.ownKeys(proxy);\n },\n set(target, prop, value) {\n proxy[prop] = value;\n delete target[prop];\n return true;\n }\n });\n}\nfunction _descriptors(proxy, defaults = {scriptable: true, indexable: true}) {\n const {_scriptable = defaults.scriptable, _indexable = defaults.indexable, _allKeys = defaults.allKeys} = proxy;\n return {\n allKeys: _allKeys,\n scriptable: _scriptable,\n indexable: _indexable,\n isScriptable: isFunction(_scriptable) ? _scriptable : () => _scriptable,\n isIndexable: isFunction(_indexable) ? _indexable : () => _indexable\n };\n}\nconst readKey = (prefix, name) => prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop, value) => isObject(value) && prop !== 'adapters' &&\n (Object.getPrototypeOf(value) === null || value.constructor === Object);\nfunction _cached(target, prop, resolve) {\n if (Object.prototype.hasOwnProperty.call(target, prop)) {\n return target[prop];\n }\n const value = resolve();\n target[prop] = value;\n return value;\n}\nfunction _resolveWithContext(target, prop, receiver) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n let value = _proxy[prop];\n if (isFunction(value) && descriptors.isScriptable(prop)) {\n value = _resolveScriptable(prop, value, target, receiver);\n }\n if (isArray(value) && value.length) {\n value = _resolveArray(prop, value, target, descriptors.isIndexable);\n }\n if (needsSubResolver(prop, value)) {\n value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n }\n return value;\n}\nfunction _resolveScriptable(prop, value, target, receiver) {\n const {_proxy, _context, _subProxy, _stack} = target;\n if (_stack.has(prop)) {\n throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n }\n _stack.add(prop);\n value = value(_context, _subProxy || receiver);\n _stack.delete(prop);\n if (needsSubResolver(prop, value)) {\n value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n }\n return value;\n}\nfunction _resolveArray(prop, value, target, isIndexable) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n if (defined(_context.index) && isIndexable(prop)) {\n value = value[_context.index % value.length];\n } else if (isObject(value[0])) {\n const arr = value;\n const scopes = _proxy._scopes.filter(s => s !== arr);\n value = [];\n for (const item of arr) {\n const resolver = createSubResolver(scopes, _proxy, prop, item);\n value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n }\n }\n return value;\n}\nfunction resolveFallback(fallback, prop, value) {\n return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\nconst getScope = (key, parent) => key === true ? parent\n : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\nfunction addScopes(set, parentScopes, key, parentFallback, value) {\n for (const parent of parentScopes) {\n const scope = getScope(key, parent);\n if (scope) {\n set.add(scope);\n const fallback = resolveFallback(scope._fallback, key, value);\n if (defined(fallback) && fallback !== key && fallback !== parentFallback) {\n return fallback;\n }\n } else if (scope === false && defined(parentFallback) && key !== parentFallback) {\n return null;\n }\n }\n return false;\n}\nfunction createSubResolver(parentScopes, resolver, prop, value) {\n const rootScopes = resolver._rootScopes;\n const fallback = resolveFallback(resolver._fallback, prop, value);\n const allScopes = [...parentScopes, ...rootScopes];\n const set = new Set();\n set.add(value);\n let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n if (key === null) {\n return false;\n }\n if (defined(fallback) && fallback !== prop) {\n key = addScopesFromKey(set, allScopes, fallback, key, value);\n if (key === null) {\n return false;\n }\n }\n return _createResolver(Array.from(set), [''], rootScopes, fallback,\n () => subGetTarget(resolver, prop, value));\n}\nfunction addScopesFromKey(set, allScopes, key, fallback, item) {\n while (key) {\n key = addScopes(set, allScopes, key, fallback, item);\n }\n return key;\n}\nfunction subGetTarget(resolver, prop, value) {\n const parent = resolver._getTarget();\n if (!(prop in parent)) {\n parent[prop] = {};\n }\n const target = parent[prop];\n if (isArray(target) && isObject(value)) {\n return value;\n }\n return target;\n}\nfunction _resolveWithPrefixes(prop, prefixes, scopes, proxy) {\n let value;\n for (const prefix of prefixes) {\n value = _resolve(readKey(prefix, prop), scopes);\n if (defined(value)) {\n return needsSubResolver(prop, value)\n ? createSubResolver(scopes, proxy, prop, value)\n : value;\n }\n }\n}\nfunction _resolve(key, scopes) {\n for (const scope of scopes) {\n if (!scope) {\n continue;\n }\n const value = scope[key];\n if (defined(value)) {\n return value;\n }\n }\n}\nfunction getKeysFromAllScopes(target) {\n let keys = target._keys;\n if (!keys) {\n keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n }\n return keys;\n}\nfunction resolveKeysFromAllScopes(scopes) {\n const set = new Set();\n for (const scope of scopes) {\n for (const key of Object.keys(scope).filter(k => !k.startsWith('_'))) {\n set.add(key);\n }\n }\n return Array.from(set);\n}\nfunction _parseObjectDataRadialScale(meta, data, start, count) {\n const {iScale} = meta;\n const {key = 'r'} = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n r: iScale.parse(resolveObjectKey(item, key), index)\n };\n }\n return parsed;\n}\n\nconst EPSILON = Number.EPSILON || 1e-14;\nconst getPoint = (points, i) => i < points.length && !points[i].skip && points[i];\nconst getValueAxis = (indexAxis) => indexAxis === 'x' ? 'y' : 'x';\nfunction splineCurve(firstPoint, middlePoint, afterPoint, t) {\n const previous = firstPoint.skip ? middlePoint : firstPoint;\n const current = middlePoint;\n const next = afterPoint.skip ? middlePoint : afterPoint;\n const d01 = distanceBetweenPoints(current, previous);\n const d12 = distanceBetweenPoints(next, current);\n let s01 = d01 / (d01 + d12);\n let s12 = d12 / (d01 + d12);\n s01 = isNaN(s01) ? 0 : s01;\n s12 = isNaN(s12) ? 0 : s12;\n const fa = t * s01;\n const fb = t * s12;\n return {\n previous: {\n x: current.x - fa * (next.x - previous.x),\n y: current.y - fa * (next.y - previous.y)\n },\n next: {\n x: current.x + fb * (next.x - previous.x),\n y: current.y + fb * (next.y - previous.y)\n }\n };\n}\nfunction monotoneAdjust(points, deltaK, mK) {\n const pointsLen = points.length;\n let alphaK, betaK, tauK, squaredMagnitude, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen - 1; ++i) {\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent || !pointAfter) {\n continue;\n }\n if (almostEquals(deltaK[i], 0, EPSILON)) {\n mK[i] = mK[i + 1] = 0;\n continue;\n }\n alphaK = mK[i] / deltaK[i];\n betaK = mK[i + 1] / deltaK[i];\n squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n if (squaredMagnitude <= 9) {\n continue;\n }\n tauK = 3 / Math.sqrt(squaredMagnitude);\n mK[i] = alphaK * tauK * deltaK[i];\n mK[i + 1] = betaK * tauK * deltaK[i];\n }\n}\nfunction monotoneCompute(points, mK, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n let delta, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n const iPixel = pointCurrent[indexAxis];\n const vPixel = pointCurrent[valueAxis];\n if (pointBefore) {\n delta = (iPixel - pointBefore[indexAxis]) / 3;\n pointCurrent[`cp1${indexAxis}`] = iPixel - delta;\n pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i];\n }\n if (pointAfter) {\n delta = (pointAfter[indexAxis] - iPixel) / 3;\n pointCurrent[`cp2${indexAxis}`] = iPixel + delta;\n pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i];\n }\n }\n}\nfunction splineCurveMonotone(points, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n const deltaK = Array(pointsLen).fill(0);\n const mK = Array(pointsLen);\n let i, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n if (pointAfter) {\n const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n }\n mK[i] = !pointBefore ? deltaK[i]\n : !pointAfter ? deltaK[i - 1]\n : (sign(deltaK[i - 1]) !== sign(deltaK[i])) ? 0\n : (deltaK[i - 1] + deltaK[i]) / 2;\n }\n monotoneAdjust(points, deltaK, mK);\n monotoneCompute(points, mK, indexAxis);\n}\nfunction capControlPoint(pt, min, max) {\n return Math.max(Math.min(pt, max), min);\n}\nfunction capBezierPoints(points, area) {\n let i, ilen, point, inArea, inAreaPrev;\n let inAreaNext = _isPointInArea(points[0], area);\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n inAreaPrev = inArea;\n inArea = inAreaNext;\n inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n if (!inArea) {\n continue;\n }\n point = points[i];\n if (inAreaPrev) {\n point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n }\n if (inAreaNext) {\n point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n }\n }\n}\nfunction _updateBezierControlPoints(points, options, area, loop, indexAxis) {\n let i, ilen, point, controlPoints;\n if (options.spanGaps) {\n points = points.filter((pt) => !pt.skip);\n }\n if (options.cubicInterpolationMode === 'monotone') {\n splineCurveMonotone(points, indexAxis);\n } else {\n let prev = loop ? points[points.length - 1] : points[0];\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n point = points[i];\n controlPoints = splineCurve(\n prev,\n point,\n points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen],\n options.tension\n );\n point.cp1x = controlPoints.previous.x;\n point.cp1y = controlPoints.previous.y;\n point.cp2x = controlPoints.next.x;\n point.cp2y = controlPoints.next.y;\n prev = point;\n }\n }\n if (options.capBezierPoints) {\n capBezierPoints(points, area);\n }\n}\n\nfunction _isDomSupported() {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\nfunction _getParentNode(domNode) {\n let parent = domNode.parentNode;\n if (parent && parent.toString() === '[object ShadowRoot]') {\n parent = parent.host;\n }\n return parent;\n}\nfunction parseMaxStyle(styleValue, node, parentProperty) {\n let valueInPixels;\n if (typeof styleValue === 'string') {\n valueInPixels = parseInt(styleValue, 10);\n if (styleValue.indexOf('%') !== -1) {\n valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n }\n } else {\n valueInPixels = styleValue;\n }\n return valueInPixels;\n}\nconst getComputedStyle = (element) => window.getComputedStyle(element, null);\nfunction getStyle(el, property) {\n return getComputedStyle(el).getPropertyValue(property);\n}\nconst positions = ['top', 'right', 'bottom', 'left'];\nfunction getPositionedStyle(styles, style, suffix) {\n const result = {};\n suffix = suffix ? '-' + suffix : '';\n for (let i = 0; i < 4; i++) {\n const pos = positions[i];\n result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n }\n result.width = result.left + result.right;\n result.height = result.top + result.bottom;\n return result;\n}\nconst useOffsetPos = (x, y, target) => (x > 0 || y > 0) && (!target || !target.shadowRoot);\nfunction getCanvasPosition(e, canvas) {\n const touches = e.touches;\n const source = touches && touches.length ? touches[0] : e;\n const {offsetX, offsetY} = source;\n let box = false;\n let x, y;\n if (useOffsetPos(offsetX, offsetY, e.target)) {\n x = offsetX;\n y = offsetY;\n } else {\n const rect = canvas.getBoundingClientRect();\n x = source.clientX - rect.left;\n y = source.clientY - rect.top;\n box = true;\n }\n return {x, y, box};\n}\nfunction getRelativePosition(evt, chart) {\n if ('native' in evt) {\n return evt;\n }\n const {canvas, currentDevicePixelRatio} = chart;\n const style = getComputedStyle(canvas);\n const borderBox = style.boxSizing === 'border-box';\n const paddings = getPositionedStyle(style, 'padding');\n const borders = getPositionedStyle(style, 'border', 'width');\n const {x, y, box} = getCanvasPosition(evt, canvas);\n const xOffset = paddings.left + (box && borders.left);\n const yOffset = paddings.top + (box && borders.top);\n let {width, height} = chart;\n if (borderBox) {\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n return {\n x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n };\n}\nfunction getContainerSize(canvas, width, height) {\n let maxWidth, maxHeight;\n if (width === undefined || height === undefined) {\n const container = _getParentNode(canvas);\n if (!container) {\n width = canvas.clientWidth;\n height = canvas.clientHeight;\n } else {\n const rect = container.getBoundingClientRect();\n const containerStyle = getComputedStyle(container);\n const containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n const containerPadding = getPositionedStyle(containerStyle, 'padding');\n width = rect.width - containerPadding.width - containerBorder.width;\n height = rect.height - containerPadding.height - containerBorder.height;\n maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth');\n maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight');\n }\n }\n return {\n width,\n height,\n maxWidth: maxWidth || INFINITY,\n maxHeight: maxHeight || INFINITY\n };\n}\nconst round1 = v => Math.round(v * 10) / 10;\nfunction getMaximumSize(canvas, bbWidth, bbHeight, aspectRatio) {\n const style = getComputedStyle(canvas);\n const margins = getPositionedStyle(style, 'margin');\n const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n const containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n let {width, height} = containerSize;\n if (style.boxSizing === 'content-box') {\n const borders = getPositionedStyle(style, 'border', 'width');\n const paddings = getPositionedStyle(style, 'padding');\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n width = Math.max(0, width - margins.width);\n height = Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height - margins.height);\n width = round1(Math.min(width, maxWidth, containerSize.maxWidth));\n height = round1(Math.min(height, maxHeight, containerSize.maxHeight));\n if (width && !height) {\n height = round1(width / 2);\n }\n return {\n width,\n height\n };\n}\nfunction retinaScale(chart, forceRatio, forceStyle) {\n const pixelRatio = forceRatio || 1;\n const deviceHeight = Math.floor(chart.height * pixelRatio);\n const deviceWidth = Math.floor(chart.width * pixelRatio);\n chart.height = deviceHeight / pixelRatio;\n chart.width = deviceWidth / pixelRatio;\n const canvas = chart.canvas;\n if (canvas.style && (forceStyle || (!canvas.style.height && !canvas.style.width))) {\n canvas.style.height = `${chart.height}px`;\n canvas.style.width = `${chart.width}px`;\n }\n if (chart.currentDevicePixelRatio !== pixelRatio\n || canvas.height !== deviceHeight\n || canvas.width !== deviceWidth) {\n chart.currentDevicePixelRatio = pixelRatio;\n canvas.height = deviceHeight;\n canvas.width = deviceWidth;\n chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n return true;\n }\n return false;\n}\nconst supportsEventListenerOptions = (function() {\n let passiveSupported = false;\n try {\n const options = {\n get passive() {\n passiveSupported = true;\n return false;\n }\n };\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n } catch (e) {\n }\n return passiveSupported;\n}());\nfunction readUsedSize(element, property) {\n const value = getStyle(element, property);\n const matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n return matches ? +matches[1] : undefined;\n}\n\nfunction _pointInLine(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: p1.y + t * (p2.y - p1.y)\n };\n}\nfunction _steppedInterpolation(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y\n : mode === 'after' ? t < 1 ? p1.y : p2.y\n : t > 0 ? p2.y : p1.y\n };\n}\nfunction _bezierInterpolation(p1, p2, t, mode) {\n const cp1 = {x: p1.cp2x, y: p1.cp2y};\n const cp2 = {x: p2.cp1x, y: p2.cp1y};\n const a = _pointInLine(p1, cp1, t);\n const b = _pointInLine(cp1, cp2, t);\n const c = _pointInLine(cp2, p2, t);\n const d = _pointInLine(a, b, t);\n const e = _pointInLine(b, c, t);\n return _pointInLine(d, e, t);\n}\n\nconst intlCache = new Map();\nfunction getNumberFormat(locale, options) {\n options = options || {};\n const cacheKey = locale + JSON.stringify(options);\n let formatter = intlCache.get(cacheKey);\n if (!formatter) {\n formatter = new Intl.NumberFormat(locale, options);\n intlCache.set(cacheKey, formatter);\n }\n return formatter;\n}\nfunction formatNumber(num, locale, options) {\n return getNumberFormat(locale, options).format(num);\n}\n\nconst getRightToLeftAdapter = function(rectX, width) {\n return {\n x(x) {\n return rectX + rectX + width - x;\n },\n setWidth(w) {\n width = w;\n },\n textAlign(align) {\n if (align === 'center') {\n return align;\n }\n return align === 'right' ? 'left' : 'right';\n },\n xPlus(x, value) {\n return x - value;\n },\n leftForLtr(x, itemWidth) {\n return x - itemWidth;\n },\n };\n};\nconst getLeftToRightAdapter = function() {\n return {\n x(x) {\n return x;\n },\n setWidth(w) {\n },\n textAlign(align) {\n return align;\n },\n xPlus(x, value) {\n return x + value;\n },\n leftForLtr(x, _itemWidth) {\n return x;\n },\n };\n};\nfunction getRtlAdapter(rtl, rectX, width) {\n return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\nfunction overrideTextDirection(ctx, direction) {\n let style, original;\n if (direction === 'ltr' || direction === 'rtl') {\n style = ctx.canvas.style;\n original = [\n style.getPropertyValue('direction'),\n style.getPropertyPriority('direction'),\n ];\n style.setProperty('direction', direction, 'important');\n ctx.prevTextDirection = original;\n }\n}\nfunction restoreTextDirection(ctx, original) {\n if (original !== undefined) {\n delete ctx.prevTextDirection;\n ctx.canvas.style.setProperty('direction', original[0], original[1]);\n }\n}\n\nfunction propertyFn(property) {\n if (property === 'angle') {\n return {\n between: _angleBetween,\n compare: _angleDiff,\n normalize: _normalizeAngle,\n };\n }\n return {\n between: _isBetween,\n compare: (a, b) => a - b,\n normalize: x => x\n };\n}\nfunction normalizeSegment({start, end, count, loop, style}) {\n return {\n start: start % count,\n end: end % count,\n loop: loop && (end - start + 1) % count === 0,\n style\n };\n}\nfunction getSegment(segment, points, bounds) {\n const {property, start: startBound, end: endBound} = bounds;\n const {between, normalize} = propertyFn(property);\n const count = points.length;\n let {start, end, loop} = segment;\n let i, ilen;\n if (loop) {\n start += count;\n end += count;\n for (i = 0, ilen = count; i < ilen; ++i) {\n if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n break;\n }\n start--;\n end--;\n }\n start %= count;\n end %= count;\n }\n if (end < start) {\n end += count;\n }\n return {start, end, loop, style: segment.style};\n}\nfunction _boundSegment(segment, points, bounds) {\n if (!bounds) {\n return [segment];\n }\n const {property, start: startBound, end: endBound} = bounds;\n const count = points.length;\n const {compare, between, normalize} = propertyFn(property);\n const {start, end, loop, style} = getSegment(segment, points, bounds);\n const result = [];\n let inside = false;\n let subStart = null;\n let value, point, prevValue;\n const startIsBefore = () => between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n const endIsBefore = () => compare(endBound, value) === 0 || between(endBound, prevValue, value);\n const shouldStart = () => inside || startIsBefore();\n const shouldStop = () => !inside || endIsBefore();\n for (let i = start, prev = start; i <= end; ++i) {\n point = points[i % count];\n if (point.skip) {\n continue;\n }\n value = normalize(point[property]);\n if (value === prevValue) {\n continue;\n }\n inside = between(value, startBound, endBound);\n if (subStart === null && shouldStart()) {\n subStart = compare(value, startBound) === 0 ? i : prev;\n }\n if (subStart !== null && shouldStop()) {\n result.push(normalizeSegment({start: subStart, end: i, loop, count, style}));\n subStart = null;\n }\n prev = i;\n prevValue = value;\n }\n if (subStart !== null) {\n result.push(normalizeSegment({start: subStart, end, loop, count, style}));\n }\n return result;\n}\nfunction _boundSegments(line, bounds) {\n const result = [];\n const segments = line.segments;\n for (let i = 0; i < segments.length; i++) {\n const sub = _boundSegment(segments[i], line.points, bounds);\n if (sub.length) {\n result.push(...sub);\n }\n }\n return result;\n}\nfunction findStartAndEnd(points, count, loop, spanGaps) {\n let start = 0;\n let end = count - 1;\n if (loop && !spanGaps) {\n while (start < count && !points[start].skip) {\n start++;\n }\n }\n while (start < count && points[start].skip) {\n start++;\n }\n start %= count;\n if (loop) {\n end += start;\n }\n while (end > start && points[end % count].skip) {\n end--;\n }\n end %= count;\n return {start, end};\n}\nfunction solidSegments(points, start, max, loop) {\n const count = points.length;\n const result = [];\n let last = start;\n let prev = points[start];\n let end;\n for (end = start + 1; end <= max; ++end) {\n const cur = points[end % count];\n if (cur.skip || cur.stop) {\n if (!prev.skip) {\n loop = false;\n result.push({start: start % count, end: (end - 1) % count, loop});\n start = last = cur.stop ? end : null;\n }\n } else {\n last = end;\n if (prev.skip) {\n start = end;\n }\n }\n prev = cur;\n }\n if (last !== null) {\n result.push({start: start % count, end: last % count, loop});\n }\n return result;\n}\nfunction _computeSegments(line, segmentOptions) {\n const points = line.points;\n const spanGaps = line.options.spanGaps;\n const count = points.length;\n if (!count) {\n return [];\n }\n const loop = !!line._loop;\n const {start, end} = findStartAndEnd(points, count, loop, spanGaps);\n if (spanGaps === true) {\n return splitByStyles(line, [{start, end, loop}], points, segmentOptions);\n }\n const max = end < start ? end + count : end;\n const completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\nfunction splitByStyles(line, segments, points, segmentOptions) {\n if (!segmentOptions || !segmentOptions.setContext || !points) {\n return segments;\n }\n return doSplitByStyles(line, segments, points, segmentOptions);\n}\nfunction doSplitByStyles(line, segments, points, segmentOptions) {\n const chartContext = line._chart.getContext();\n const baseStyle = readStyle(line.options);\n const {_datasetIndex: datasetIndex, options: {spanGaps}} = line;\n const count = points.length;\n const result = [];\n let prevStyle = baseStyle;\n let start = segments[0].start;\n let i = start;\n function addStyle(s, e, l, st) {\n const dir = spanGaps ? -1 : 1;\n if (s === e) {\n return;\n }\n s += count;\n while (points[s % count].skip) {\n s -= dir;\n }\n while (points[e % count].skip) {\n e += dir;\n }\n if (s % count !== e % count) {\n result.push({start: s % count, end: e % count, loop: l, style: st});\n prevStyle = st;\n start = e % count;\n }\n }\n for (const segment of segments) {\n start = spanGaps ? start : segment.start;\n let prev = points[start % count];\n let style;\n for (i = start + 1; i <= segment.end; i++) {\n const pt = points[i % count];\n style = readStyle(segmentOptions.setContext(createContext(chartContext, {\n type: 'segment',\n p0: prev,\n p1: pt,\n p0DataIndex: (i - 1) % count,\n p1DataIndex: i % count,\n datasetIndex\n })));\n if (styleChanged(style, prevStyle)) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n prev = pt;\n prevStyle = style;\n }\n if (start < i - 1) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n }\n return result;\n}\nfunction readStyle(options) {\n return {\n backgroundColor: options.backgroundColor,\n borderCapStyle: options.borderCapStyle,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderJoinStyle: options.borderJoinStyle,\n borderWidth: options.borderWidth,\n borderColor: options.borderColor\n };\n}\nfunction styleChanged(style, prevStyle) {\n return prevStyle && JSON.stringify(style) !== JSON.stringify(prevStyle);\n}\n\nexport { _isPointInArea as $, _factorize as A, finiteOrDefault as B, callback as C, _addGrace as D, _limitValue as E, toDegrees as F, _measureText as G, HALF_PI as H, _int16Range as I, _alignPixel as J, toPadding as K, clipArea as L, renderText as M, unclipArea as N, toFont as O, PI as P, each as Q, _toLeftRightCenter as R, _alignStartEnd as S, TAU as T, overrides as U, merge as V, _capitalize as W, getRelativePosition as X, _rlookupByKey as Y, _lookupByKey as Z, _arrayUnique as _, resolve as a, toLineHeight as a$, getAngleFromPoint as a0, getMaximumSize as a1, _getParentNode as a2, readUsedSize as a3, throttled as a4, supportsEventListenerOptions as a5, _isDomSupported as a6, descriptors as a7, isFunction as a8, _attachContext as a9, getRtlAdapter as aA, overrideTextDirection as aB, _textX as aC, restoreTextDirection as aD, drawPointLegend as aE, noop as aF, distanceBetweenPoints as aG, _setMinAndMaxByKey as aH, niceNum as aI, almostWhole as aJ, almostEquals as aK, _decimalPlaces as aL, _longestText as aM, _filterBetween as aN, _lookup as aO, isPatternOrGradient as aP, getHoverColor as aQ, clone$1 as aR, _merger as aS, _mergerIf as aT, _deprecated as aU, _splitKey as aV, toFontString as aW, splineCurve as aX, splineCurveMonotone as aY, getStyle as aZ, fontString as a_, _createResolver as aa, _descriptors as ab, mergeIf as ac, uid as ad, debounce as ae, retinaScale as af, clearCanvas as ag, setsEqual as ah, _elementsEqual as ai, _isClickEvent as aj, _isBetween as ak, _readValueToProps as al, _updateBezierControlPoints as am, _computeSegments as an, _boundSegments as ao, _steppedInterpolation as ap, _bezierInterpolation as aq, _pointInLine as ar, _steppedLineTo as as, _bezierCurveTo as at, drawPoint as au, addRoundedRectPath as av, toTRBL as aw, toTRBLCorners as ax, _boundSegment as ay, _normalizeAngle as az, isArray as b, PITAU as b0, INFINITY as b1, RAD_PER_DEG as b2, QUARTER_PI as b3, TWO_THIRDS_PI as b4, _angleDiff as b5, color as c, defaults as d, effects as e, resolveObjectKey as f, isNumberFinite as g, createContext as h, isObject as i, defined as j, isNullOrUndef as k, listenArrayEvents as l, toPercentage as m, toDimension as n, formatNumber as o, _angleBetween as p, _getStartAndCountOfVisiblePoints as q, requestAnimFrame as r, sign as s, toRadians as t, unlistenArrayEvents as u, valueOrDefault as v, _scaleRangesChanged as w, isNumber as x, _parseObjectDataRadialScale as y, log10 as z };\n","/*!\n * Chart.js v3.9.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nimport { r as requestAnimFrame, a as resolve, e as effects, c as color, d as defaults, i as isObject, b as isArray, v as valueOrDefault, u as unlistenArrayEvents, l as listenArrayEvents, f as resolveObjectKey, g as isNumberFinite, h as createContext, j as defined, s as sign, k as isNullOrUndef, _ as _arrayUnique, t as toRadians, m as toPercentage, n as toDimension, T as TAU, o as formatNumber, p as _angleBetween, H as HALF_PI, P as PI, q as _getStartAndCountOfVisiblePoints, w as _scaleRangesChanged, x as isNumber, y as _parseObjectDataRadialScale, z as log10, A as _factorize, B as finiteOrDefault, C as callback, D as _addGrace, E as _limitValue, F as toDegrees, G as _measureText, I as _int16Range, J as _alignPixel, K as toPadding, L as clipArea, M as renderText, N as unclipArea, O as toFont, Q as each, R as _toLeftRightCenter, S as _alignStartEnd, U as overrides, V as merge, W as _capitalize, X as getRelativePosition, Y as _rlookupByKey, Z as _lookupByKey, $ as _isPointInArea, a0 as getAngleFromPoint, a1 as getMaximumSize, a2 as _getParentNode, a3 as readUsedSize, a4 as throttled, a5 as supportsEventListenerOptions, a6 as _isDomSupported, a7 as descriptors, a8 as isFunction, a9 as _attachContext, aa as _createResolver, ab as _descriptors, ac as mergeIf, ad as uid, ae as debounce, af as retinaScale, ag as clearCanvas, ah as setsEqual, ai as _elementsEqual, aj as _isClickEvent, ak as _isBetween, al as _readValueToProps, am as _updateBezierControlPoints, an as _computeSegments, ao as _boundSegments, ap as _steppedInterpolation, aq as _bezierInterpolation, ar as _pointInLine, as as _steppedLineTo, at as _bezierCurveTo, au as drawPoint, av as addRoundedRectPath, aw as toTRBL, ax as toTRBLCorners, ay as _boundSegment, az as _normalizeAngle, aA as getRtlAdapter, aB as overrideTextDirection, aC as _textX, aD as restoreTextDirection, aE as drawPointLegend, aF as noop, aG as distanceBetweenPoints, aH as _setMinAndMaxByKey, aI as niceNum, aJ as almostWhole, aK as almostEquals, aL as _decimalPlaces, aM as _longestText, aN as _filterBetween, aO as _lookup } from './chunks/helpers.segment.mjs';\nexport { d as defaults } from './chunks/helpers.segment.mjs';\n\nclass Animator {\n constructor() {\n this._request = null;\n this._charts = new Map();\n this._running = false;\n this._lastDate = undefined;\n }\n _notify(chart, anims, date, type) {\n const callbacks = anims.listeners[type];\n const numSteps = anims.duration;\n callbacks.forEach(fn => fn({\n chart,\n initial: anims.initial,\n numSteps,\n currentStep: Math.min(date - anims.start, numSteps)\n }));\n }\n _refresh() {\n if (this._request) {\n return;\n }\n this._running = true;\n this._request = requestAnimFrame.call(window, () => {\n this._update();\n this._request = null;\n if (this._running) {\n this._refresh();\n }\n });\n }\n _update(date = Date.now()) {\n let remaining = 0;\n this._charts.forEach((anims, chart) => {\n if (!anims.running || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n let draw = false;\n let item;\n for (; i >= 0; --i) {\n item = items[i];\n if (item._active) {\n if (item._total > anims.duration) {\n anims.duration = item._total;\n }\n item.tick(date);\n draw = true;\n } else {\n items[i] = items[items.length - 1];\n items.pop();\n }\n }\n if (draw) {\n chart.draw();\n this._notify(chart, anims, date, 'progress');\n }\n if (!items.length) {\n anims.running = false;\n this._notify(chart, anims, date, 'complete');\n anims.initial = false;\n }\n remaining += items.length;\n });\n this._lastDate = date;\n if (remaining === 0) {\n this._running = false;\n }\n }\n _getAnims(chart) {\n const charts = this._charts;\n let anims = charts.get(chart);\n if (!anims) {\n anims = {\n running: false,\n initial: true,\n items: [],\n listeners: {\n complete: [],\n progress: []\n }\n };\n charts.set(chart, anims);\n }\n return anims;\n }\n listen(chart, event, cb) {\n this._getAnims(chart).listeners[event].push(cb);\n }\n add(chart, items) {\n if (!items || !items.length) {\n return;\n }\n this._getAnims(chart).items.push(...items);\n }\n has(chart) {\n return this._getAnims(chart).items.length > 0;\n }\n start(chart) {\n const anims = this._charts.get(chart);\n if (!anims) {\n return;\n }\n anims.running = true;\n anims.start = Date.now();\n anims.duration = anims.items.reduce((acc, cur) => Math.max(acc, cur._duration), 0);\n this._refresh();\n }\n running(chart) {\n if (!this._running) {\n return false;\n }\n const anims = this._charts.get(chart);\n if (!anims || !anims.running || !anims.items.length) {\n return false;\n }\n return true;\n }\n stop(chart) {\n const anims = this._charts.get(chart);\n if (!anims || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n for (; i >= 0; --i) {\n items[i].cancel();\n }\n anims.items = [];\n this._notify(chart, anims, Date.now(), 'complete');\n }\n remove(chart) {\n return this._charts.delete(chart);\n }\n}\nvar animator = new Animator();\n\nconst transparent = 'transparent';\nconst interpolators = {\n boolean(from, to, factor) {\n return factor > 0.5 ? to : from;\n },\n color(from, to, factor) {\n const c0 = color(from || transparent);\n const c1 = c0.valid && color(to || transparent);\n return c1 && c1.valid\n ? c1.mix(c0, factor).hexString()\n : to;\n },\n number(from, to, factor) {\n return from + (to - from) * factor;\n }\n};\nclass Animation {\n constructor(cfg, target, prop, to) {\n const currentValue = target[prop];\n to = resolve([cfg.to, to, currentValue, cfg.from]);\n const from = resolve([cfg.from, currentValue, to]);\n this._active = true;\n this._fn = cfg.fn || interpolators[cfg.type || typeof from];\n this._easing = effects[cfg.easing] || effects.linear;\n this._start = Math.floor(Date.now() + (cfg.delay || 0));\n this._duration = this._total = Math.floor(cfg.duration);\n this._loop = !!cfg.loop;\n this._target = target;\n this._prop = prop;\n this._from = from;\n this._to = to;\n this._promises = undefined;\n }\n active() {\n return this._active;\n }\n update(cfg, to, date) {\n if (this._active) {\n this._notify(false);\n const currentValue = this._target[this._prop];\n const elapsed = date - this._start;\n const remain = this._duration - elapsed;\n this._start = date;\n this._duration = Math.floor(Math.max(remain, cfg.duration));\n this._total += elapsed;\n this._loop = !!cfg.loop;\n this._to = resolve([cfg.to, to, currentValue, cfg.from]);\n this._from = resolve([cfg.from, currentValue, to]);\n }\n }\n cancel() {\n if (this._active) {\n this.tick(Date.now());\n this._active = false;\n this._notify(false);\n }\n }\n tick(date) {\n const elapsed = date - this._start;\n const duration = this._duration;\n const prop = this._prop;\n const from = this._from;\n const loop = this._loop;\n const to = this._to;\n let factor;\n this._active = from !== to && (loop || (elapsed < duration));\n if (!this._active) {\n this._target[prop] = to;\n this._notify(true);\n return;\n }\n if (elapsed < 0) {\n this._target[prop] = from;\n return;\n }\n factor = (elapsed / duration) % 2;\n factor = loop && factor > 1 ? 2 - factor : factor;\n factor = this._easing(Math.min(1, Math.max(0, factor)));\n this._target[prop] = this._fn(from, to, factor);\n }\n wait() {\n const promises = this._promises || (this._promises = []);\n return new Promise((res, rej) => {\n promises.push({res, rej});\n });\n }\n _notify(resolved) {\n const method = resolved ? 'res' : 'rej';\n const promises = this._promises || [];\n for (let i = 0; i < promises.length; i++) {\n promises[i][method]();\n }\n }\n}\n\nconst numbers = ['x', 'y', 'borderWidth', 'radius', 'tension'];\nconst colors = ['color', 'borderColor', 'backgroundColor'];\ndefaults.set('animation', {\n delay: undefined,\n duration: 1000,\n easing: 'easeOutQuart',\n fn: undefined,\n from: undefined,\n loop: undefined,\n to: undefined,\n type: undefined,\n});\nconst animationOptions = Object.keys(defaults.animation);\ndefaults.describe('animation', {\n _fallback: false,\n _indexable: false,\n _scriptable: (name) => name !== 'onProgress' && name !== 'onComplete' && name !== 'fn',\n});\ndefaults.set('animations', {\n colors: {\n type: 'color',\n properties: colors\n },\n numbers: {\n type: 'number',\n properties: numbers\n },\n});\ndefaults.describe('animations', {\n _fallback: 'animation',\n});\ndefaults.set('transitions', {\n active: {\n animation: {\n duration: 400\n }\n },\n resize: {\n animation: {\n duration: 0\n }\n },\n show: {\n animations: {\n colors: {\n from: 'transparent'\n },\n visible: {\n type: 'boolean',\n duration: 0\n },\n }\n },\n hide: {\n animations: {\n colors: {\n to: 'transparent'\n },\n visible: {\n type: 'boolean',\n easing: 'linear',\n fn: v => v | 0\n },\n }\n }\n});\nclass Animations {\n constructor(chart, config) {\n this._chart = chart;\n this._properties = new Map();\n this.configure(config);\n }\n configure(config) {\n if (!isObject(config)) {\n return;\n }\n const animatedProps = this._properties;\n Object.getOwnPropertyNames(config).forEach(key => {\n const cfg = config[key];\n if (!isObject(cfg)) {\n return;\n }\n const resolved = {};\n for (const option of animationOptions) {\n resolved[option] = cfg[option];\n }\n (isArray(cfg.properties) && cfg.properties || [key]).forEach((prop) => {\n if (prop === key || !animatedProps.has(prop)) {\n animatedProps.set(prop, resolved);\n }\n });\n });\n }\n _animateOptions(target, values) {\n const newOptions = values.options;\n const options = resolveTargetOptions(target, newOptions);\n if (!options) {\n return [];\n }\n const animations = this._createAnimations(options, newOptions);\n if (newOptions.$shared) {\n awaitAll(target.options.$animations, newOptions).then(() => {\n target.options = newOptions;\n }, () => {\n });\n }\n return animations;\n }\n _createAnimations(target, values) {\n const animatedProps = this._properties;\n const animations = [];\n const running = target.$animations || (target.$animations = {});\n const props = Object.keys(values);\n const date = Date.now();\n let i;\n for (i = props.length - 1; i >= 0; --i) {\n const prop = props[i];\n if (prop.charAt(0) === '$') {\n continue;\n }\n if (prop === 'options') {\n animations.push(...this._animateOptions(target, values));\n continue;\n }\n const value = values[prop];\n let animation = running[prop];\n const cfg = animatedProps.get(prop);\n if (animation) {\n if (cfg && animation.active()) {\n animation.update(cfg, value, date);\n continue;\n } else {\n animation.cancel();\n }\n }\n if (!cfg || !cfg.duration) {\n target[prop] = value;\n continue;\n }\n running[prop] = animation = new Animation(cfg, target, prop, value);\n animations.push(animation);\n }\n return animations;\n }\n update(target, values) {\n if (this._properties.size === 0) {\n Object.assign(target, values);\n return;\n }\n const animations = this._createAnimations(target, values);\n if (animations.length) {\n animator.add(this._chart, animations);\n return true;\n }\n }\n}\nfunction awaitAll(animations, properties) {\n const running = [];\n const keys = Object.keys(properties);\n for (let i = 0; i < keys.length; i++) {\n const anim = animations[keys[i]];\n if (anim && anim.active()) {\n running.push(anim.wait());\n }\n }\n return Promise.all(running);\n}\nfunction resolveTargetOptions(target, newOptions) {\n if (!newOptions) {\n return;\n }\n let options = target.options;\n if (!options) {\n target.options = newOptions;\n return;\n }\n if (options.$shared) {\n target.options = options = Object.assign({}, options, {$shared: false, $animations: {}});\n }\n return options;\n}\n\nfunction scaleClip(scale, allowedOverflow) {\n const opts = scale && scale.options || {};\n const reverse = opts.reverse;\n const min = opts.min === undefined ? allowedOverflow : 0;\n const max = opts.max === undefined ? allowedOverflow : 0;\n return {\n start: reverse ? max : min,\n end: reverse ? min : max\n };\n}\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n if (allowedOverflow === false) {\n return false;\n }\n const x = scaleClip(xScale, allowedOverflow);\n const y = scaleClip(yScale, allowedOverflow);\n return {\n top: y.end,\n right: x.end,\n bottom: y.start,\n left: x.start\n };\n}\nfunction toClip(value) {\n let t, r, b, l;\n if (isObject(value)) {\n t = value.top;\n r = value.right;\n b = value.bottom;\n l = value.left;\n } else {\n t = r = b = l = value;\n }\n return {\n top: t,\n right: r,\n bottom: b,\n left: l,\n disabled: value === false\n };\n}\nfunction getSortedDatasetIndices(chart, filterVisible) {\n const keys = [];\n const metasets = chart._getSortedDatasetMetas(filterVisible);\n let i, ilen;\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n keys.push(metasets[i].index);\n }\n return keys;\n}\nfunction applyStack(stack, value, dsIndex, options = {}) {\n const keys = stack.keys;\n const singleMode = options.mode === 'single';\n let i, ilen, datasetIndex, otherValue;\n if (value === null) {\n return;\n }\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n datasetIndex = +keys[i];\n if (datasetIndex === dsIndex) {\n if (options.all) {\n continue;\n }\n break;\n }\n otherValue = stack.values[datasetIndex];\n if (isNumberFinite(otherValue) && (singleMode || (value === 0 || sign(value) === sign(otherValue)))) {\n value += otherValue;\n }\n }\n return value;\n}\nfunction convertObjectDataToArray(data) {\n const keys = Object.keys(data);\n const adata = new Array(keys.length);\n let i, ilen, key;\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n key = keys[i];\n adata[i] = {\n x: key,\n y: data[key]\n };\n }\n return adata;\n}\nfunction isStacked(scale, meta) {\n const stacked = scale && scale.options.stacked;\n return stacked || (stacked === undefined && meta.stack !== undefined);\n}\nfunction getStackKey(indexScale, valueScale, meta) {\n return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\nfunction getUserBounds(scale) {\n const {min, max, minDefined, maxDefined} = scale.getUserBounds();\n return {\n min: minDefined ? min : Number.NEGATIVE_INFINITY,\n max: maxDefined ? max : Number.POSITIVE_INFINITY\n };\n}\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n return subStack[indexValue] || (subStack[indexValue] = {});\n}\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n for (const meta of vScale.getMatchingVisibleMetas(type).reverse()) {\n const value = stack[meta.index];\n if ((positive && value > 0) || (!positive && value < 0)) {\n return meta.index;\n }\n }\n return null;\n}\nfunction updateStacks(controller, parsed) {\n const {chart, _cachedMeta: meta} = controller;\n const stacks = chart._stacks || (chart._stacks = {});\n const {iScale, vScale, index: datasetIndex} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const key = getStackKey(iScale, vScale, meta);\n const ilen = parsed.length;\n let stack;\n for (let i = 0; i < ilen; ++i) {\n const item = parsed[i];\n const {[iAxis]: index, [vAxis]: value} = item;\n const itemStacks = item._stacks || (item._stacks = {});\n stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);\n stack[datasetIndex] = value;\n stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n }\n}\nfunction getFirstScaleId(chart, axis) {\n const scales = chart.scales;\n return Object.keys(scales).filter(key => scales[key].axis === axis).shift();\n}\nfunction createDatasetContext(parent, index) {\n return createContext(parent,\n {\n active: false,\n dataset: undefined,\n datasetIndex: index,\n index,\n mode: 'default',\n type: 'dataset'\n }\n );\n}\nfunction createDataContext(parent, index, element) {\n return createContext(parent, {\n active: false,\n dataIndex: index,\n parsed: undefined,\n raw: undefined,\n element,\n index,\n mode: 'default',\n type: 'data'\n });\n}\nfunction clearStacks(meta, items) {\n const datasetIndex = meta.controller.index;\n const axis = meta.vScale && meta.vScale.axis;\n if (!axis) {\n return;\n }\n items = items || meta._parsed;\n for (const parsed of items) {\n const stacks = parsed._stacks;\n if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n return;\n }\n delete stacks[axis][datasetIndex];\n }\n}\nconst isDirectUpdateMode = (mode) => mode === 'reset' || mode === 'none';\nconst cloneIfNotShared = (cached, shared) => shared ? cached : Object.assign({}, cached);\nconst createStack = (canStack, meta, chart) => canStack && !meta.hidden && meta._stacked\n && {keys: getSortedDatasetIndices(chart, true), values: null};\nclass DatasetController {\n constructor(chart, datasetIndex) {\n this.chart = chart;\n this._ctx = chart.ctx;\n this.index = datasetIndex;\n this._cachedDataOpts = {};\n this._cachedMeta = this.getMeta();\n this._type = this._cachedMeta.type;\n this.options = undefined;\n this._parsing = false;\n this._data = undefined;\n this._objectData = undefined;\n this._sharedOptions = undefined;\n this._drawStart = undefined;\n this._drawCount = undefined;\n this.enableOptionSharing = false;\n this.supportsDecimation = false;\n this.$context = undefined;\n this._syncList = [];\n this.initialize();\n }\n initialize() {\n const meta = this._cachedMeta;\n this.configure();\n this.linkScales();\n meta._stacked = isStacked(meta.vScale, meta);\n this.addElements();\n }\n updateIndex(datasetIndex) {\n if (this.index !== datasetIndex) {\n clearStacks(this._cachedMeta);\n }\n this.index = datasetIndex;\n }\n linkScales() {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n const chooseId = (axis, x, y, r) => axis === 'x' ? x : axis === 'r' ? r : y;\n const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n const indexAxis = meta.indexAxis;\n const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid);\n meta.xScale = this.getScaleForId(xid);\n meta.yScale = this.getScaleForId(yid);\n meta.rScale = this.getScaleForId(rid);\n meta.iScale = this.getScaleForId(iid);\n meta.vScale = this.getScaleForId(vid);\n }\n getDataset() {\n return this.chart.data.datasets[this.index];\n }\n getMeta() {\n return this.chart.getDatasetMeta(this.index);\n }\n getScaleForId(scaleID) {\n return this.chart.scales[scaleID];\n }\n _getOtherScale(scale) {\n const meta = this._cachedMeta;\n return scale === meta.iScale\n ? meta.vScale\n : meta.iScale;\n }\n reset() {\n this._update('reset');\n }\n _destroy() {\n const meta = this._cachedMeta;\n if (this._data) {\n unlistenArrayEvents(this._data, this);\n }\n if (meta._stacked) {\n clearStacks(meta);\n }\n }\n _dataCheck() {\n const dataset = this.getDataset();\n const data = dataset.data || (dataset.data = []);\n const _data = this._data;\n if (isObject(data)) {\n this._data = convertObjectDataToArray(data);\n } else if (_data !== data) {\n if (_data) {\n unlistenArrayEvents(_data, this);\n const meta = this._cachedMeta;\n clearStacks(meta);\n meta._parsed = [];\n }\n if (data && Object.isExtensible(data)) {\n listenArrayEvents(data, this);\n }\n this._syncList = [];\n this._data = data;\n }\n }\n addElements() {\n const meta = this._cachedMeta;\n this._dataCheck();\n if (this.datasetElementType) {\n meta.dataset = new this.datasetElementType();\n }\n }\n buildOrUpdateElements(resetNewElements) {\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n let stackChanged = false;\n this._dataCheck();\n const oldStacked = meta._stacked;\n meta._stacked = isStacked(meta.vScale, meta);\n if (meta.stack !== dataset.stack) {\n stackChanged = true;\n clearStacks(meta);\n meta.stack = dataset.stack;\n }\n this._resyncElements(resetNewElements);\n if (stackChanged || oldStacked !== meta._stacked) {\n updateStacks(this, meta._parsed);\n }\n }\n configure() {\n const config = this.chart.config;\n const scopeKeys = config.datasetScopeKeys(this._type);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true);\n this.options = config.createResolver(scopes, this.getContext());\n this._parsing = this.options.parsing;\n this._cachedDataOpts = {};\n }\n parse(start, count) {\n const {_cachedMeta: meta, _data: data} = this;\n const {iScale, _stacked} = meta;\n const iAxis = iScale.axis;\n let sorted = start === 0 && count === data.length ? true : meta._sorted;\n let prev = start > 0 && meta._parsed[start - 1];\n let i, cur, parsed;\n if (this._parsing === false) {\n meta._parsed = data;\n meta._sorted = true;\n parsed = data;\n } else {\n if (isArray(data[start])) {\n parsed = this.parseArrayData(meta, data, start, count);\n } else if (isObject(data[start])) {\n parsed = this.parseObjectData(meta, data, start, count);\n } else {\n parsed = this.parsePrimitiveData(meta, data, start, count);\n }\n const isNotInOrderComparedToPrev = () => cur[iAxis] === null || (prev && cur[iAxis] < prev[iAxis]);\n for (i = 0; i < count; ++i) {\n meta._parsed[i + start] = cur = parsed[i];\n if (sorted) {\n if (isNotInOrderComparedToPrev()) {\n sorted = false;\n }\n prev = cur;\n }\n }\n meta._sorted = sorted;\n }\n if (_stacked) {\n updateStacks(this, parsed);\n }\n }\n parsePrimitiveData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = new Array(count);\n let i, ilen, index;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n parsed[i] = {\n [iAxis]: singleScale || iScale.parse(labels[index], index),\n [vAxis]: vScale.parse(data[index], index)\n };\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(item[0], index),\n y: yScale.parse(item[1], index)\n };\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n };\n }\n return parsed;\n }\n getParsed(index) {\n return this._cachedMeta._parsed[index];\n }\n getDataElement(index) {\n return this._cachedMeta.data[index];\n }\n applyStack(scale, parsed, mode) {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const value = parsed[scale.axis];\n const stack = {\n keys: getSortedDatasetIndices(chart, true),\n values: parsed._stacks[scale.axis]\n };\n return applyStack(stack, value, meta.index, {mode});\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n const parsedValue = parsed[scale.axis];\n let value = parsedValue === null ? NaN : parsedValue;\n const values = stack && parsed._stacks[scale.axis];\n if (stack && values) {\n stack.values = values;\n value = applyStack(stack, parsedValue, this._cachedMeta.index);\n }\n range.min = Math.min(range.min, value);\n range.max = Math.max(range.max, value);\n }\n getMinMax(scale, canStack) {\n const meta = this._cachedMeta;\n const _parsed = meta._parsed;\n const sorted = meta._sorted && scale === meta.iScale;\n const ilen = _parsed.length;\n const otherScale = this._getOtherScale(scale);\n const stack = createStack(canStack, meta, this.chart);\n const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n const {min: otherMin, max: otherMax} = getUserBounds(otherScale);\n let i, parsed;\n function _skip() {\n parsed = _parsed[i];\n const otherValue = parsed[otherScale.axis];\n return !isNumberFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue;\n }\n for (i = 0; i < ilen; ++i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n if (sorted) {\n break;\n }\n }\n if (sorted) {\n for (i = ilen - 1; i >= 0; --i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n break;\n }\n }\n return range;\n }\n getAllParsedValues(scale) {\n const parsed = this._cachedMeta._parsed;\n const values = [];\n let i, ilen, value;\n for (i = 0, ilen = parsed.length; i < ilen; ++i) {\n value = parsed[i][scale.axis];\n if (isNumberFinite(value)) {\n values.push(value);\n }\n }\n return values;\n }\n getMaxOverflow() {\n return false;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '',\n value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : ''\n };\n }\n _update(mode) {\n const meta = this._cachedMeta;\n this.update(mode || 'default');\n meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow())));\n }\n update(mode) {}\n draw() {\n const ctx = this._ctx;\n const chart = this.chart;\n const meta = this._cachedMeta;\n const elements = meta.data || [];\n const area = chart.chartArea;\n const active = [];\n const start = this._drawStart || 0;\n const count = this._drawCount || (elements.length - start);\n const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop;\n let i;\n if (meta.dataset) {\n meta.dataset.draw(ctx, area, start, count);\n }\n for (i = start; i < start + count; ++i) {\n const element = elements[i];\n if (element.hidden) {\n continue;\n }\n if (element.active && drawActiveElementsOnTop) {\n active.push(element);\n } else {\n element.draw(ctx, area);\n }\n }\n for (i = 0; i < active.length; ++i) {\n active[i].draw(ctx, area);\n }\n }\n getStyle(index, active) {\n const mode = active ? 'active' : 'default';\n return index === undefined && this._cachedMeta.dataset\n ? this.resolveDatasetElementOptions(mode)\n : this.resolveDataElementOptions(index || 0, mode);\n }\n getContext(index, active, mode) {\n const dataset = this.getDataset();\n let context;\n if (index >= 0 && index < this._cachedMeta.data.length) {\n const element = this._cachedMeta.data[index];\n context = element.$context ||\n (element.$context = createDataContext(this.getContext(), index, element));\n context.parsed = this.getParsed(index);\n context.raw = dataset.data[index];\n context.index = context.dataIndex = index;\n } else {\n context = this.$context ||\n (this.$context = createDatasetContext(this.chart.getContext(), this.index));\n context.dataset = dataset;\n context.index = context.datasetIndex = this.index;\n }\n context.active = !!active;\n context.mode = mode;\n return context;\n }\n resolveDatasetElementOptions(mode) {\n return this._resolveElementOptions(this.datasetElementType.id, mode);\n }\n resolveDataElementOptions(index, mode) {\n return this._resolveElementOptions(this.dataElementType.id, mode, index);\n }\n _resolveElementOptions(elementType, mode = 'default', index) {\n const active = mode === 'active';\n const cache = this._cachedDataOpts;\n const cacheKey = elementType + '-' + mode;\n const cached = cache[cacheKey];\n const sharing = this.enableOptionSharing && defined(index);\n if (cached) {\n return cloneIfNotShared(cached, sharing);\n }\n const config = this.chart.config;\n const scopeKeys = config.datasetElementScopeKeys(this._type, elementType);\n const prefixes = active ? [`${elementType}Hover`, 'hover', elementType, ''] : [elementType, ''];\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n const names = Object.keys(defaults.elements[elementType]);\n const context = () => this.getContext(index, active);\n const values = config.resolveNamedOptions(scopes, names, context, prefixes);\n if (values.$shared) {\n values.$shared = sharing;\n cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n }\n return values;\n }\n _resolveAnimations(index, transition, active) {\n const chart = this.chart;\n const cache = this._cachedDataOpts;\n const cacheKey = `animation-${transition}`;\n const cached = cache[cacheKey];\n if (cached) {\n return cached;\n }\n let options;\n if (chart.options.animation !== false) {\n const config = this.chart.config;\n const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n options = config.createResolver(scopes, this.getContext(index, active, transition));\n }\n const animations = new Animations(chart, options && options.animations);\n if (options && options._cacheable) {\n cache[cacheKey] = Object.freeze(animations);\n }\n return animations;\n }\n getSharedOptions(options) {\n if (!options.$shared) {\n return;\n }\n return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n }\n includeOptions(mode, sharedOptions) {\n return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\n }\n _getSharedOptions(start, mode) {\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const previouslySharedOptions = this._sharedOptions;\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions) || (sharedOptions !== previouslySharedOptions);\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n return {sharedOptions, includeOptions};\n }\n updateElement(element, index, properties, mode) {\n if (isDirectUpdateMode(mode)) {\n Object.assign(element, properties);\n } else {\n this._resolveAnimations(index, mode).update(element, properties);\n }\n }\n updateSharedOptions(sharedOptions, mode, newOptions) {\n if (sharedOptions && !isDirectUpdateMode(mode)) {\n this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n }\n }\n _setStyle(element, index, mode, active) {\n element.active = active;\n const options = this.getStyle(index, active);\n this._resolveAnimations(index, mode, active).update(element, {\n options: (!active && this.getSharedOptions(options)) || options\n });\n }\n removeHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', false);\n }\n setHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', true);\n }\n _removeDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', false);\n }\n }\n _setDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', true);\n }\n }\n _resyncElements(resetNewElements) {\n const data = this._data;\n const elements = this._cachedMeta.data;\n for (const [method, arg1, arg2] of this._syncList) {\n this[method](arg1, arg2);\n }\n this._syncList = [];\n const numMeta = elements.length;\n const numData = data.length;\n const count = Math.min(numData, numMeta);\n if (count) {\n this.parse(0, count);\n }\n if (numData > numMeta) {\n this._insertElements(numMeta, numData - numMeta, resetNewElements);\n } else if (numData < numMeta) {\n this._removeElements(numData, numMeta - numData);\n }\n }\n _insertElements(start, count, resetNewElements = true) {\n const meta = this._cachedMeta;\n const data = meta.data;\n const end = start + count;\n let i;\n const move = (arr) => {\n arr.length += count;\n for (i = arr.length - 1; i >= end; i--) {\n arr[i] = arr[i - count];\n }\n };\n move(data);\n for (i = start; i < end; ++i) {\n data[i] = new this.dataElementType();\n }\n if (this._parsing) {\n move(meta._parsed);\n }\n this.parse(start, count);\n if (resetNewElements) {\n this.updateElements(data, start, count, 'reset');\n }\n }\n updateElements(element, start, count, mode) {}\n _removeElements(start, count) {\n const meta = this._cachedMeta;\n if (this._parsing) {\n const removed = meta._parsed.splice(start, count);\n if (meta._stacked) {\n clearStacks(meta, removed);\n }\n }\n meta.data.splice(start, count);\n }\n _sync(args) {\n if (this._parsing) {\n this._syncList.push(args);\n } else {\n const [method, arg1, arg2] = args;\n this[method](arg1, arg2);\n }\n this.chart._dataChanges.push([this.index, ...args]);\n }\n _onDataPush() {\n const count = arguments.length;\n this._sync(['_insertElements', this.getDataset().data.length - count, count]);\n }\n _onDataPop() {\n this._sync(['_removeElements', this._cachedMeta.data.length - 1, 1]);\n }\n _onDataShift() {\n this._sync(['_removeElements', 0, 1]);\n }\n _onDataSplice(start, count) {\n if (count) {\n this._sync(['_removeElements', start, count]);\n }\n const newCount = arguments.length - 2;\n if (newCount) {\n this._sync(['_insertElements', start, newCount]);\n }\n }\n _onDataUnshift() {\n this._sync(['_insertElements', 0, arguments.length]);\n }\n}\nDatasetController.defaults = {};\nDatasetController.prototype.datasetElementType = null;\nDatasetController.prototype.dataElementType = null;\n\nfunction getAllScaleValues(scale, type) {\n if (!scale._cache.$bar) {\n const visibleMetas = scale.getMatchingVisibleMetas(type);\n let values = [];\n for (let i = 0, ilen = visibleMetas.length; i < ilen; i++) {\n values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale));\n }\n scale._cache.$bar = _arrayUnique(values.sort((a, b) => a - b));\n }\n return scale._cache.$bar;\n}\nfunction computeMinSampleSize(meta) {\n const scale = meta.iScale;\n const values = getAllScaleValues(scale, meta.type);\n let min = scale._length;\n let i, ilen, curr, prev;\n const updateMinAndPrev = () => {\n if (curr === 32767 || curr === -32768) {\n return;\n }\n if (defined(prev)) {\n min = Math.min(min, Math.abs(curr - prev) || min);\n }\n prev = curr;\n };\n for (i = 0, ilen = values.length; i < ilen; ++i) {\n curr = scale.getPixelForValue(values[i]);\n updateMinAndPrev();\n }\n prev = undefined;\n for (i = 0, ilen = scale.ticks.length; i < ilen; ++i) {\n curr = scale.getPixelForTick(i);\n updateMinAndPrev();\n }\n return min;\n}\nfunction computeFitCategoryTraits(index, ruler, options, stackCount) {\n const thickness = options.barThickness;\n let size, ratio;\n if (isNullOrUndef(thickness)) {\n size = ruler.min * options.categoryPercentage;\n ratio = options.barPercentage;\n } else {\n size = thickness * stackCount;\n ratio = 1;\n }\n return {\n chunk: size / stackCount,\n ratio,\n start: ruler.pixels[index] - (size / 2)\n };\n}\nfunction computeFlexCategoryTraits(index, ruler, options, stackCount) {\n const pixels = ruler.pixels;\n const curr = pixels[index];\n let prev = index > 0 ? pixels[index - 1] : null;\n let next = index < pixels.length - 1 ? pixels[index + 1] : null;\n const percent = options.categoryPercentage;\n if (prev === null) {\n prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n }\n if (next === null) {\n next = curr + curr - prev;\n }\n const start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n const size = Math.abs(next - prev) / 2 * percent;\n return {\n chunk: size / stackCount,\n ratio: options.barPercentage,\n start\n };\n}\nfunction parseFloatBar(entry, item, vScale, i) {\n const startValue = vScale.parse(entry[0], i);\n const endValue = vScale.parse(entry[1], i);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n let barStart = min;\n let barEnd = max;\n if (Math.abs(min) > Math.abs(max)) {\n barStart = max;\n barEnd = min;\n }\n item[vScale.axis] = barEnd;\n item._custom = {\n barStart,\n barEnd,\n start: startValue,\n end: endValue,\n min,\n max\n };\n}\nfunction parseValue(entry, item, vScale, i) {\n if (isArray(entry)) {\n parseFloatBar(entry, item, vScale, i);\n } else {\n item[vScale.axis] = vScale.parse(entry, i);\n }\n return item;\n}\nfunction parseArrayOrPrimitive(meta, data, start, count) {\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = [];\n let i, ilen, item, entry;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n entry = data[i];\n item = {};\n item[iScale.axis] = singleScale || iScale.parse(labels[i], i);\n parsed.push(parseValue(entry, item, vScale, i));\n }\n return parsed;\n}\nfunction isFloatBar(custom) {\n return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\nfunction barSign(size, vScale, actualBase) {\n if (size !== 0) {\n return sign(size);\n }\n return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1);\n}\nfunction borderProps(properties) {\n let reverse, start, end, top, bottom;\n if (properties.horizontal) {\n reverse = properties.base > properties.x;\n start = 'left';\n end = 'right';\n } else {\n reverse = properties.base < properties.y;\n start = 'bottom';\n end = 'top';\n }\n if (reverse) {\n top = 'end';\n bottom = 'start';\n } else {\n top = 'start';\n bottom = 'end';\n }\n return {start, end, reverse, top, bottom};\n}\nfunction setBorderSkipped(properties, options, stack, index) {\n let edge = options.borderSkipped;\n const res = {};\n if (!edge) {\n properties.borderSkipped = res;\n return;\n }\n if (edge === true) {\n properties.borderSkipped = {top: true, right: true, bottom: true, left: true};\n return;\n }\n const {start, end, reverse, top, bottom} = borderProps(properties);\n if (edge === 'middle' && stack) {\n properties.enableBorderRadius = true;\n if ((stack._top || 0) === index) {\n edge = top;\n } else if ((stack._bottom || 0) === index) {\n edge = bottom;\n } else {\n res[parseEdge(bottom, start, end, reverse)] = true;\n edge = top;\n }\n }\n res[parseEdge(edge, start, end, reverse)] = true;\n properties.borderSkipped = res;\n}\nfunction parseEdge(edge, a, b, reverse) {\n if (reverse) {\n edge = swap(edge, a, b);\n edge = startEnd(edge, b, a);\n } else {\n edge = startEnd(edge, a, b);\n }\n return edge;\n}\nfunction swap(orig, v1, v2) {\n return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\nfunction startEnd(v, start, end) {\n return v === 'start' ? start : v === 'end' ? end : v;\n}\nfunction setInflateAmount(properties, {inflateAmount}, ratio) {\n properties.inflateAmount = inflateAmount === 'auto'\n ? ratio === 1 ? 0.33 : 0\n : inflateAmount;\n}\nclass BarController extends DatasetController {\n parsePrimitiveData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseArrayData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseObjectData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey;\n const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey;\n const parsed = [];\n let i, ilen, item, obj;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n obj = data[i];\n item = {};\n item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i);\n parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i));\n }\n return parsed;\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n super.updateRangeFromParsed(range, scale, parsed, stack);\n const custom = parsed._custom;\n if (custom && scale === this._cachedMeta.vScale) {\n range.min = Math.min(range.min, custom.min);\n range.max = Math.max(range.max, custom.max);\n }\n }\n getMaxOverflow() {\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const {iScale, vScale} = meta;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const value = isFloatBar(custom)\n ? '[' + custom.start + ', ' + custom.end + ']'\n : '' + vScale.getLabelForValue(parsed[vScale.axis]);\n return {\n label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n value\n };\n }\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n const meta = this._cachedMeta;\n meta.stack = this.getDataset().stack;\n }\n update(mode) {\n const meta = this._cachedMeta;\n this.updateElements(meta.data, 0, meta.data.length, mode);\n }\n updateElements(bars, start, count, mode) {\n const reset = mode === 'reset';\n const {index, _cachedMeta: {vScale}} = this;\n const base = vScale.getBasePixel();\n const horizontal = vScale.isHorizontal();\n const ruler = this._getRuler();\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n for (let i = start; i < start + count; i++) {\n const parsed = this.getParsed(i);\n const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {base, head: base} : this._calculateBarValuePixels(i);\n const ipixels = this._calculateBarIndexPixels(i, ruler);\n const stack = (parsed._stacks || {})[vScale.axis];\n const properties = {\n horizontal,\n base: vpixels.base,\n enableBorderRadius: !stack || isFloatBar(parsed._custom) || (index === stack._top || index === stack._bottom),\n x: horizontal ? vpixels.head : ipixels.center,\n y: horizontal ? ipixels.center : vpixels.head,\n height: horizontal ? ipixels.size : Math.abs(vpixels.size),\n width: horizontal ? Math.abs(vpixels.size) : ipixels.size\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode);\n }\n const options = properties.options || bars[i].options;\n setBorderSkipped(properties, options, stack, index);\n setInflateAmount(properties, options, ruler.ratio);\n this.updateElement(bars[i], i, properties, mode);\n }\n }\n _getStacks(last, dataIndex) {\n const {iScale} = this._cachedMeta;\n const metasets = iScale.getMatchingVisibleMetas(this._type)\n .filter(meta => meta.controller.options.grouped);\n const stacked = iScale.options.stacked;\n const stacks = [];\n const skipNull = (meta) => {\n const parsed = meta.controller.getParsed(dataIndex);\n const val = parsed && parsed[meta.vScale.axis];\n if (isNullOrUndef(val) || isNaN(val)) {\n return true;\n }\n };\n for (const meta of metasets) {\n if (dataIndex !== undefined && skipNull(meta)) {\n continue;\n }\n if (stacked === false || stacks.indexOf(meta.stack) === -1 ||\n\t\t\t\t(stacked === undefined && meta.stack === undefined)) {\n stacks.push(meta.stack);\n }\n if (meta.index === last) {\n break;\n }\n }\n if (!stacks.length) {\n stacks.push(undefined);\n }\n return stacks;\n }\n _getStackCount(index) {\n return this._getStacks(undefined, index).length;\n }\n _getStackIndex(datasetIndex, name, dataIndex) {\n const stacks = this._getStacks(datasetIndex, dataIndex);\n const index = (name !== undefined)\n ? stacks.indexOf(name)\n : -1;\n return (index === -1)\n ? stacks.length - 1\n : index;\n }\n _getRuler() {\n const opts = this.options;\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const pixels = [];\n let i, ilen;\n for (i = 0, ilen = meta.data.length; i < ilen; ++i) {\n pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i));\n }\n const barThickness = opts.barThickness;\n const min = barThickness || computeMinSampleSize(meta);\n return {\n min,\n pixels,\n start: iScale._startPixel,\n end: iScale._endPixel,\n stackCount: this._getStackCount(),\n scale: iScale,\n grouped: opts.grouped,\n ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n };\n }\n _calculateBarValuePixels(index) {\n const {_cachedMeta: {vScale, _stacked}, options: {base: baseValue, minBarLength}} = this;\n const actualBase = baseValue || 0;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const floating = isFloatBar(custom);\n let value = parsed[vScale.axis];\n let start = 0;\n let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value;\n let head, size;\n if (length !== value) {\n start = length - value;\n length = value;\n }\n if (floating) {\n value = custom.barStart;\n length = custom.barEnd - custom.barStart;\n if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n start = 0;\n }\n start += value;\n }\n const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n let base = vScale.getPixelForValue(startValue);\n if (this.chart.getDataVisibility(index)) {\n head = vScale.getPixelForValue(start + length);\n } else {\n head = base;\n }\n size = head - base;\n if (Math.abs(size) < minBarLength) {\n size = barSign(size, vScale, actualBase) * minBarLength;\n if (value === actualBase) {\n base -= size / 2;\n }\n const startPixel = vScale.getPixelForDecimal(0);\n const endPixel = vScale.getPixelForDecimal(1);\n const min = Math.min(startPixel, endPixel);\n const max = Math.max(startPixel, endPixel);\n base = Math.max(Math.min(base, max), min);\n head = base + size;\n }\n if (base === vScale.getPixelForValue(actualBase)) {\n const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n base += halfGrid;\n size -= halfGrid;\n }\n return {\n size,\n base,\n head,\n center: head + size / 2\n };\n }\n _calculateBarIndexPixels(index, ruler) {\n const scale = ruler.scale;\n const options = this.options;\n const skipNull = options.skipNull;\n const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n let center, size;\n if (ruler.grouped) {\n const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount;\n const range = options.barThickness === 'flex'\n ? computeFlexCategoryTraits(index, ruler, options, stackCount)\n : computeFitCategoryTraits(index, ruler, options, stackCount);\n const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined);\n center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\n size = Math.min(maxBarThickness, range.chunk * range.ratio);\n } else {\n center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index);\n size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n }\n return {\n base: center - size / 2,\n head: center + size / 2,\n center,\n size\n };\n }\n draw() {\n const meta = this._cachedMeta;\n const vScale = meta.vScale;\n const rects = meta.data;\n const ilen = rects.length;\n let i = 0;\n for (; i < ilen; ++i) {\n if (this.getParsed(i)[vScale.axis] !== null) {\n rects[i].draw(this._ctx);\n }\n }\n }\n}\nBarController.id = 'bar';\nBarController.defaults = {\n datasetElementType: false,\n dataElementType: 'bar',\n categoryPercentage: 0.8,\n barPercentage: 0.9,\n grouped: true,\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'base', 'width', 'height']\n }\n }\n};\nBarController.overrides = {\n scales: {\n _index_: {\n type: 'category',\n offset: true,\n grid: {\n offset: true\n }\n },\n _value_: {\n type: 'linear',\n beginAtZero: true,\n }\n }\n};\n\nclass BubbleController extends DatasetController {\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n parsePrimitiveData(meta, data, start, count) {\n const parsed = super.parsePrimitiveData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n parsed[i]._custom = this.resolveDataElementOptions(i + start).radius;\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const parsed = super.parseArrayData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const parsed = super.parseObjectData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n getMaxOverflow() {\n const data = this._cachedMeta.data;\n let max = 0;\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const {xScale, yScale} = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n const r = parsed._custom;\n return {\n label: meta.label,\n value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n };\n }\n update(mode) {\n const points = this._cachedMeta.data;\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale} = this._cachedMeta;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const parsed = !reset && this.getParsed(i);\n const properties = {};\n const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]);\n const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]);\n properties.skip = isNaN(iPixel) || isNaN(vPixel);\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n if (reset) {\n properties.options.radius = 0;\n }\n }\n this.updateElement(point, i, properties, mode);\n }\n }\n resolveDataElementOptions(index, mode) {\n const parsed = this.getParsed(index);\n let values = super.resolveDataElementOptions(index, mode);\n if (values.$shared) {\n values = Object.assign({}, values, {$shared: false});\n }\n const radius = values.radius;\n if (mode !== 'active') {\n values.radius = 0;\n }\n values.radius += valueOrDefault(parsed && parsed._custom, radius);\n return values;\n }\n}\nBubbleController.id = 'bubble';\nBubbleController.defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'borderWidth', 'radius']\n }\n }\n};\nBubbleController.overrides = {\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n },\n plugins: {\n tooltip: {\n callbacks: {\n title() {\n return '';\n }\n }\n }\n }\n};\n\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n let ratioX = 1;\n let ratioY = 1;\n let offsetX = 0;\n let offsetY = 0;\n if (circumference < TAU) {\n const startAngle = rotation;\n const endAngle = startAngle + circumference;\n const startX = Math.cos(startAngle);\n const startY = Math.sin(startAngle);\n const endX = Math.cos(endAngle);\n const endY = Math.sin(endAngle);\n const calcMax = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n const calcMin = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n const maxX = calcMax(0, startX, endX);\n const maxY = calcMax(HALF_PI, startY, endY);\n const minX = calcMin(PI, startX, endX);\n const minY = calcMin(PI + HALF_PI, startY, endY);\n ratioX = (maxX - minX) / 2;\n ratioY = (maxY - minY) / 2;\n offsetX = -(maxX + minX) / 2;\n offsetY = -(maxY + minY) / 2;\n }\n return {ratioX, ratioY, offsetX, offsetY};\n}\nclass DoughnutController extends DatasetController {\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n this.enableOptionSharing = true;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.offsetX = undefined;\n this.offsetY = undefined;\n }\n linkScales() {}\n parse(start, count) {\n const data = this.getDataset().data;\n const meta = this._cachedMeta;\n if (this._parsing === false) {\n meta._parsed = data;\n } else {\n let getter = (i) => +data[i];\n if (isObject(data[start])) {\n const {key = 'value'} = this._parsing;\n getter = (i) => +resolveObjectKey(data[i], key);\n }\n let i, ilen;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n meta._parsed[i] = getter(i);\n }\n }\n }\n _getRotation() {\n return toRadians(this.options.rotation - 90);\n }\n _getCircumference() {\n return toRadians(this.options.circumference);\n }\n _getRotationExtents() {\n let min = TAU;\n let max = -TAU;\n for (let i = 0; i < this.chart.data.datasets.length; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n const controller = this.chart.getDatasetMeta(i).controller;\n const rotation = controller._getRotation();\n const circumference = controller._getCircumference();\n min = Math.min(min, rotation);\n max = Math.max(max, rotation + circumference);\n }\n }\n return {\n rotation: min,\n circumference: max - min,\n };\n }\n update(mode) {\n const chart = this.chart;\n const {chartArea} = chart;\n const meta = this._cachedMeta;\n const arcs = meta.data;\n const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing;\n const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1);\n const chartWeight = this._getRingWeight(this.index);\n const {circumference, rotation} = this._getRotationExtents();\n const {ratioX, ratioY, offsetX, offsetY} = getRatioAndOffset(rotation, circumference, cutout);\n const maxWidth = (chartArea.width - spacing) / ratioX;\n const maxHeight = (chartArea.height - spacing) / ratioY;\n const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n const outerRadius = toDimension(this.options.radius, maxRadius);\n const innerRadius = Math.max(outerRadius * cutout, 0);\n const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal();\n this.offsetX = offsetX * outerRadius;\n this.offsetY = offsetY * outerRadius;\n meta.total = this.calculateTotal();\n this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index);\n this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0);\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n _circumference(i, reset) {\n const opts = this.options;\n const meta = this._cachedMeta;\n const circumference = this._getCircumference();\n if ((reset && opts.animation.animateRotate) || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) {\n return 0;\n }\n return this.calculateCircumference(meta._parsed[i] * circumference / TAU);\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const centerX = (chartArea.left + chartArea.right) / 2;\n const centerY = (chartArea.top + chartArea.bottom) / 2;\n const animateScale = reset && animationOpts.animateScale;\n const innerRadius = animateScale ? 0 : this.innerRadius;\n const outerRadius = animateScale ? 0 : this.outerRadius;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n let startAngle = this._getRotation();\n let i;\n for (i = 0; i < start; ++i) {\n startAngle += this._circumference(i, reset);\n }\n for (i = start; i < start + count; ++i) {\n const circumference = this._circumference(i, reset);\n const arc = arcs[i];\n const properties = {\n x: centerX + this.offsetX,\n y: centerY + this.offsetY,\n startAngle,\n endAngle: startAngle + circumference,\n circumference,\n outerRadius,\n innerRadius\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode);\n }\n startAngle += circumference;\n this.updateElement(arc, i, properties, mode);\n }\n }\n calculateTotal() {\n const meta = this._cachedMeta;\n const metaData = meta.data;\n let total = 0;\n let i;\n for (i = 0; i < metaData.length; i++) {\n const value = meta._parsed[i];\n if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) {\n total += Math.abs(value);\n }\n }\n return total;\n }\n calculateCircumference(value) {\n const total = this._cachedMeta.total;\n if (total > 0 && !isNaN(value)) {\n return TAU * (Math.abs(value) / total);\n }\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index], chart.options.locale);\n return {\n label: labels[index] || '',\n value,\n };\n }\n getMaxBorderWidth(arcs) {\n let max = 0;\n const chart = this.chart;\n let i, ilen, meta, controller, options;\n if (!arcs) {\n for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n if (chart.isDatasetVisible(i)) {\n meta = chart.getDatasetMeta(i);\n arcs = meta.data;\n controller = meta.controller;\n break;\n }\n }\n }\n if (!arcs) {\n return 0;\n }\n for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n options = controller.resolveDataElementOptions(i);\n if (options.borderAlign !== 'inner') {\n max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n }\n }\n return max;\n }\n getMaxOffset(arcs) {\n let max = 0;\n for (let i = 0, ilen = arcs.length; i < ilen; ++i) {\n const options = this.resolveDataElementOptions(i);\n max = Math.max(max, options.offset || 0, options.hoverOffset || 0);\n }\n return max;\n }\n _getRingWeightOffset(datasetIndex) {\n let ringWeightOffset = 0;\n for (let i = 0; i < datasetIndex; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n ringWeightOffset += this._getRingWeight(i);\n }\n }\n return ringWeightOffset;\n }\n _getRingWeight(datasetIndex) {\n return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n }\n _getVisibleDatasetWeightTotal() {\n return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n }\n}\nDoughnutController.id = 'doughnut';\nDoughnutController.defaults = {\n datasetElementType: false,\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: false\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['circumference', 'endAngle', 'innerRadius', 'outerRadius', 'startAngle', 'x', 'y', 'offset', 'borderWidth', 'spacing']\n },\n },\n cutout: '50%',\n rotation: 0,\n circumference: 360,\n radius: '100%',\n spacing: 0,\n indexAxis: 'r',\n};\nDoughnutController.descriptors = {\n _scriptable: (name) => name !== 'spacing',\n _indexable: (name) => name !== 'spacing',\n};\nDoughnutController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle}} = chart.legend.options;\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n },\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(tooltipItem) {\n let dataLabel = tooltipItem.label;\n const value = ': ' + tooltipItem.formattedValue;\n if (isArray(dataLabel)) {\n dataLabel = dataLabel.slice();\n dataLabel[0] += value;\n } else {\n dataLabel += value;\n }\n return dataLabel;\n }\n }\n }\n }\n};\n\nclass LineController extends DatasetController {\n initialize() {\n this.enableOptionSharing = true;\n this.supportsDecimation = true;\n super.initialize();\n }\n update(mode) {\n const meta = this._cachedMeta;\n const {dataset: line, data: points = [], _dataset} = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n this.updateElements(points, start, count, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const {spanGaps, segment} = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for (let i = start; i < start + count; ++i) {\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n const data = meta.data || [];\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n draw() {\n const meta = this._cachedMeta;\n meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n super.draw();\n }\n}\nLineController.id = 'line';\nLineController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n showLine: true,\n spanGaps: false,\n};\nLineController.overrides = {\n scales: {\n _index_: {\n type: 'category',\n },\n _value_: {\n type: 'linear',\n },\n }\n};\n\nclass PolarAreaController extends DatasetController {\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index].r, chart.options.locale);\n return {\n label: labels[index] || '',\n value,\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const arcs = this._cachedMeta.data;\n this._updateRadius();\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n getMinMax() {\n const meta = this._cachedMeta;\n const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n meta.data.forEach((element, index) => {\n const parsed = this.getParsed(index).r;\n if (!isNaN(parsed) && this.chart.getDataVisibility(index)) {\n if (parsed < range.min) {\n range.min = parsed;\n }\n if (parsed > range.max) {\n range.max = parsed;\n }\n }\n });\n return range;\n }\n _updateRadius() {\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n const outerRadius = Math.max(minSize / 2, 0);\n const innerRadius = Math.max(opts.cutoutPercentage ? (outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount();\n this.outerRadius = outerRadius - (radiusLength * this.index);\n this.innerRadius = this.outerRadius - radiusLength;\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const scale = this._cachedMeta.rScale;\n const centerX = scale.xCenter;\n const centerY = scale.yCenter;\n const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI;\n let angle = datasetStartAngle;\n let i;\n const defaultAngle = 360 / this.countVisibleElements();\n for (i = 0; i < start; ++i) {\n angle += this._computeAngle(i, mode, defaultAngle);\n }\n for (i = start; i < start + count; i++) {\n const arc = arcs[i];\n let startAngle = angle;\n let endAngle = angle + this._computeAngle(i, mode, defaultAngle);\n let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(this.getParsed(i).r) : 0;\n angle = endAngle;\n if (reset) {\n if (animationOpts.animateScale) {\n outerRadius = 0;\n }\n if (animationOpts.animateRotate) {\n startAngle = endAngle = datasetStartAngle;\n }\n }\n const properties = {\n x: centerX,\n y: centerY,\n innerRadius: 0,\n outerRadius,\n startAngle,\n endAngle,\n options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode)\n };\n this.updateElement(arc, i, properties, mode);\n }\n }\n countVisibleElements() {\n const meta = this._cachedMeta;\n let count = 0;\n meta.data.forEach((element, index) => {\n if (!isNaN(this.getParsed(index).r) && this.chart.getDataVisibility(index)) {\n count++;\n }\n });\n return count;\n }\n _computeAngle(index, mode, defaultAngle) {\n return this.chart.getDataVisibility(index)\n ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle)\n : 0;\n }\n}\nPolarAreaController.id = 'polarArea';\nPolarAreaController.defaults = {\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: true\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'startAngle', 'endAngle', 'innerRadius', 'outerRadius']\n },\n },\n indexAxis: 'r',\n startAngle: 0,\n};\nPolarAreaController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle}} = chart.legend.options;\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n },\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(context) {\n return context.chart.data.labels[context.dataIndex] + ': ' + context.formattedValue;\n }\n }\n }\n },\n scales: {\n r: {\n type: 'radialLinear',\n angleLines: {\n display: false\n },\n beginAtZero: true,\n grid: {\n circular: true\n },\n pointLabels: {\n display: false\n },\n startAngle: 0\n }\n }\n};\n\nclass PieController extends DoughnutController {\n}\nPieController.id = 'pie';\nPieController.defaults = {\n cutout: 0,\n rotation: 0,\n circumference: 360,\n radius: '100%'\n};\n\nclass RadarController extends DatasetController {\n getLabelAndValue(index) {\n const vScale = this._cachedMeta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: vScale.getLabels()[index],\n value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const meta = this._cachedMeta;\n const line = meta.dataset;\n const points = meta.data || [];\n const labels = meta.iScale.getLabels();\n line.points = points;\n if (mode !== 'resize') {\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n const properties = {\n _loop: true,\n _fullLoop: labels.length === points.length,\n options\n };\n this.updateElement(line, undefined, properties, mode);\n }\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const scale = this._cachedMeta.rScale;\n const reset = mode === 'reset';\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n const pointPosition = scale.getPointPositionForValue(i, this.getParsed(i).r);\n const x = reset ? scale.xCenter : pointPosition.x;\n const y = reset ? scale.yCenter : pointPosition.y;\n const properties = {\n x,\n y,\n angle: pointPosition.angle,\n skip: isNaN(x) || isNaN(y),\n options\n };\n this.updateElement(point, i, properties, mode);\n }\n }\n}\nRadarController.id = 'radar';\nRadarController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n indexAxis: 'r',\n showLine: true,\n elements: {\n line: {\n fill: 'start'\n }\n },\n};\nRadarController.overrides = {\n aspectRatio: 1,\n scales: {\n r: {\n type: 'radialLinear',\n }\n }\n};\n\nclass Element {\n constructor() {\n this.x = undefined;\n this.y = undefined;\n this.active = false;\n this.options = undefined;\n this.$animations = undefined;\n }\n tooltipPosition(useFinalPosition) {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y};\n }\n hasValue() {\n return isNumber(this.x) && isNumber(this.y);\n }\n getProps(props, final) {\n const anims = this.$animations;\n if (!final || !anims) {\n return this;\n }\n const ret = {};\n props.forEach(prop => {\n ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop];\n });\n return ret;\n }\n}\nElement.defaults = {};\nElement.defaultRoutes = undefined;\n\nconst formatters = {\n values(value) {\n return isArray(value) ? value : '' + value;\n },\n numeric(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const locale = this.chart.options.locale;\n let notation;\n let delta = tickValue;\n if (ticks.length > 1) {\n const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value));\n if (maxTick < 1e-4 || maxTick > 1e+15) {\n notation = 'scientific';\n }\n delta = calculateDelta(tickValue, ticks);\n }\n const logDelta = log10(Math.abs(delta));\n const numDecimal = Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n const options = {notation, minimumFractionDigits: numDecimal, maximumFractionDigits: numDecimal};\n Object.assign(options, this.options.ticks.format);\n return formatNumber(tickValue, locale, options);\n },\n logarithmic(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const remain = tickValue / (Math.pow(10, Math.floor(log10(tickValue))));\n if (remain === 1 || remain === 2 || remain === 5) {\n return formatters.numeric.call(this, tickValue, index, ticks);\n }\n return '';\n }\n};\nfunction calculateDelta(tickValue, ticks) {\n let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value;\n if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n delta = tickValue - Math.floor(tickValue);\n }\n return delta;\n}\nvar Ticks = {formatters};\n\ndefaults.set('scale', {\n display: true,\n offset: false,\n reverse: false,\n beginAtZero: false,\n bounds: 'ticks',\n grace: 0,\n grid: {\n display: true,\n lineWidth: 1,\n drawBorder: true,\n drawOnChartArea: true,\n drawTicks: true,\n tickLength: 8,\n tickWidth: (_ctx, options) => options.lineWidth,\n tickColor: (_ctx, options) => options.color,\n offset: false,\n borderDash: [],\n borderDashOffset: 0.0,\n borderWidth: 1\n },\n title: {\n display: false,\n text: '',\n padding: {\n top: 4,\n bottom: 4\n }\n },\n ticks: {\n minRotation: 0,\n maxRotation: 50,\n mirror: false,\n textStrokeWidth: 0,\n textStrokeColor: '',\n padding: 3,\n display: true,\n autoSkip: true,\n autoSkipPadding: 3,\n labelOffset: 0,\n callback: Ticks.formatters.values,\n minor: {},\n major: {},\n align: 'center',\n crossAlign: 'near',\n showLabelBackdrop: false,\n backdropColor: 'rgba(255, 255, 255, 0.75)',\n backdropPadding: 2,\n }\n});\ndefaults.route('scale.ticks', 'color', '', 'color');\ndefaults.route('scale.grid', 'color', '', 'borderColor');\ndefaults.route('scale.grid', 'borderColor', '', 'borderColor');\ndefaults.route('scale.title', 'color', '', 'color');\ndefaults.describe('scale', {\n _fallback: false,\n _scriptable: (name) => !name.startsWith('before') && !name.startsWith('after') && name !== 'callback' && name !== 'parser',\n _indexable: (name) => name !== 'borderDash' && name !== 'tickBorderDash',\n});\ndefaults.describe('scales', {\n _fallback: 'scale',\n});\ndefaults.describe('scale.ticks', {\n _scriptable: (name) => name !== 'backdropPadding' && name !== 'callback',\n _indexable: (name) => name !== 'backdropPadding',\n});\n\nfunction autoSkip(scale, ticks) {\n const tickOpts = scale.options.ticks;\n const ticksLimit = tickOpts.maxTicksLimit || determineMaxTicks(scale);\n const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n const numMajorIndices = majorIndices.length;\n const first = majorIndices[0];\n const last = majorIndices[numMajorIndices - 1];\n const newTicks = [];\n if (numMajorIndices > ticksLimit) {\n skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n return newTicks;\n }\n const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n if (numMajorIndices > 0) {\n let i, ilen;\n const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null;\n skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\n skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n }\n skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n return newTicks;\n }\n skip(ticks, newTicks, spacing);\n return newTicks;\n}\nfunction determineMaxTicks(scale) {\n const offset = scale.options.offset;\n const tickLength = scale._tickSize();\n const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n const maxChart = scale._maxLength / tickLength;\n return Math.floor(Math.min(maxScale, maxChart));\n}\nfunction calculateSpacing(majorIndices, ticks, ticksLimit) {\n const evenMajorSpacing = getEvenSpacing(majorIndices);\n const spacing = ticks.length / ticksLimit;\n if (!evenMajorSpacing) {\n return Math.max(spacing, 1);\n }\n const factors = _factorize(evenMajorSpacing);\n for (let i = 0, ilen = factors.length - 1; i < ilen; i++) {\n const factor = factors[i];\n if (factor > spacing) {\n return factor;\n }\n }\n return Math.max(spacing, 1);\n}\nfunction getMajorIndices(ticks) {\n const result = [];\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (ticks[i].major) {\n result.push(i);\n }\n }\n return result;\n}\nfunction skipMajors(ticks, newTicks, majorIndices, spacing) {\n let count = 0;\n let next = majorIndices[0];\n let i;\n spacing = Math.ceil(spacing);\n for (i = 0; i < ticks.length; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = majorIndices[count * spacing];\n }\n }\n}\nfunction skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n const start = valueOrDefault(majorStart, 0);\n const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n let count = 0;\n let length, i, next;\n spacing = Math.ceil(spacing);\n if (majorEnd) {\n length = majorEnd - majorStart;\n spacing = length / Math.floor(length / spacing);\n }\n next = start;\n while (next < 0) {\n count++;\n next = Math.round(start + count * spacing);\n }\n for (i = Math.max(start, 0); i < end; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = Math.round(start + count * spacing);\n }\n }\n}\nfunction getEvenSpacing(arr) {\n const len = arr.length;\n let i, diff;\n if (len < 2) {\n return false;\n }\n for (diff = arr[0], i = 1; i < len; ++i) {\n if (arr[i] - arr[i - 1] !== diff) {\n return false;\n }\n }\n return diff;\n}\n\nconst reverseAlign = (align) => align === 'left' ? 'right' : align === 'right' ? 'left' : align;\nconst offsetFromEdge = (scale, edge, offset) => edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\nfunction sample(arr, numItems) {\n const result = [];\n const increment = arr.length / numItems;\n const len = arr.length;\n let i = 0;\n for (; i < len; i += increment) {\n result.push(arr[Math.floor(i)]);\n }\n return result;\n}\nfunction getPixelForGridLine(scale, index, offsetGridLines) {\n const length = scale.ticks.length;\n const validIndex = Math.min(index, length - 1);\n const start = scale._startPixel;\n const end = scale._endPixel;\n const epsilon = 1e-6;\n let lineValue = scale.getPixelForTick(validIndex);\n let offset;\n if (offsetGridLines) {\n if (length === 1) {\n offset = Math.max(lineValue - start, end - lineValue);\n } else if (index === 0) {\n offset = (scale.getPixelForTick(1) - lineValue) / 2;\n } else {\n offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n }\n lineValue += validIndex < index ? offset : -offset;\n if (lineValue < start - epsilon || lineValue > end + epsilon) {\n return;\n }\n }\n return lineValue;\n}\nfunction garbageCollect(caches, length) {\n each(caches, (cache) => {\n const gc = cache.gc;\n const gcLen = gc.length / 2;\n let i;\n if (gcLen > length) {\n for (i = 0; i < gcLen; ++i) {\n delete cache.data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n });\n}\nfunction getTickMarkLength(options) {\n return options.drawTicks ? options.tickLength : 0;\n}\nfunction getTitleHeight(options, fallback) {\n if (!options.display) {\n return 0;\n }\n const font = toFont(options.font, fallback);\n const padding = toPadding(options.padding);\n const lines = isArray(options.text) ? options.text.length : 1;\n return (lines * font.lineHeight) + padding.height;\n}\nfunction createScaleContext(parent, scale) {\n return createContext(parent, {\n scale,\n type: 'scale'\n });\n}\nfunction createTickContext(parent, index, tick) {\n return createContext(parent, {\n tick,\n index,\n type: 'tick'\n });\n}\nfunction titleAlign(align, position, reverse) {\n let ret = _toLeftRightCenter(align);\n if ((reverse && position !== 'right') || (!reverse && position === 'right')) {\n ret = reverseAlign(ret);\n }\n return ret;\n}\nfunction titleArgs(scale, offset, position, align) {\n const {top, left, bottom, right, chart} = scale;\n const {chartArea, scales} = chart;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n const height = bottom - top;\n const width = right - left;\n if (scale.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleY = scales[positionAxisID].getPixelForValue(value) + height - offset;\n } else if (position === 'center') {\n titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset;\n } else {\n titleY = offsetFromEdge(scale, position, offset);\n }\n maxWidth = right - left;\n } else {\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleX = scales[positionAxisID].getPixelForValue(value) - width + offset;\n } else if (position === 'center') {\n titleX = (chartArea.left + chartArea.right) / 2 - width + offset;\n } else {\n titleX = offsetFromEdge(scale, position, offset);\n }\n titleY = _alignStartEnd(align, bottom, top);\n rotation = position === 'left' ? -HALF_PI : HALF_PI;\n }\n return {titleX, titleY, maxWidth, rotation};\n}\nclass Scale extends Element {\n constructor(cfg) {\n super();\n this.id = cfg.id;\n this.type = cfg.type;\n this.options = undefined;\n this.ctx = cfg.ctx;\n this.chart = cfg.chart;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this._margins = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n this.maxWidth = undefined;\n this.maxHeight = undefined;\n this.paddingTop = undefined;\n this.paddingBottom = undefined;\n this.paddingLeft = undefined;\n this.paddingRight = undefined;\n this.axis = undefined;\n this.labelRotation = undefined;\n this.min = undefined;\n this.max = undefined;\n this._range = undefined;\n this.ticks = [];\n this._gridLineItems = null;\n this._labelItems = null;\n this._labelSizes = null;\n this._length = 0;\n this._maxLength = 0;\n this._longestTextCache = {};\n this._startPixel = undefined;\n this._endPixel = undefined;\n this._reversePixels = false;\n this._userMax = undefined;\n this._userMin = undefined;\n this._suggestedMax = undefined;\n this._suggestedMin = undefined;\n this._ticksLength = 0;\n this._borderValue = 0;\n this._cache = {};\n this._dataLimitsCached = false;\n this.$context = undefined;\n }\n init(options) {\n this.options = options.setContext(this.getContext());\n this.axis = options.axis;\n this._userMin = this.parse(options.min);\n this._userMax = this.parse(options.max);\n this._suggestedMin = this.parse(options.suggestedMin);\n this._suggestedMax = this.parse(options.suggestedMax);\n }\n parse(raw, index) {\n return raw;\n }\n getUserBounds() {\n let {_userMin, _userMax, _suggestedMin, _suggestedMax} = this;\n _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY);\n _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY);\n _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY);\n _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY);\n return {\n min: finiteOrDefault(_userMin, _suggestedMin),\n max: finiteOrDefault(_userMax, _suggestedMax),\n minDefined: isNumberFinite(_userMin),\n maxDefined: isNumberFinite(_userMax)\n };\n }\n getMinMax(canStack) {\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n let range;\n if (minDefined && maxDefined) {\n return {min, max};\n }\n const metas = this.getMatchingVisibleMetas();\n for (let i = 0, ilen = metas.length; i < ilen; ++i) {\n range = metas[i].controller.getMinMax(this, canStack);\n if (!minDefined) {\n min = Math.min(min, range.min);\n }\n if (!maxDefined) {\n max = Math.max(max, range.max);\n }\n }\n min = maxDefined && min > max ? max : min;\n max = minDefined && min > max ? min : max;\n return {\n min: finiteOrDefault(min, finiteOrDefault(max, min)),\n max: finiteOrDefault(max, finiteOrDefault(min, max))\n };\n }\n getPadding() {\n return {\n left: this.paddingLeft || 0,\n top: this.paddingTop || 0,\n right: this.paddingRight || 0,\n bottom: this.paddingBottom || 0\n };\n }\n getTicks() {\n return this.ticks;\n }\n getLabels() {\n const data = this.chart.data;\n return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n }\n beforeLayout() {\n this._cache = {};\n this._dataLimitsCached = false;\n }\n beforeUpdate() {\n callback(this.options.beforeUpdate, [this]);\n }\n update(maxWidth, maxHeight, margins) {\n const {beginAtZero, grace, ticks: tickOpts} = this.options;\n const sampleSize = tickOpts.sampleSize;\n this.beforeUpdate();\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins = Object.assign({\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }, margins);\n this.ticks = null;\n this._labelSizes = null;\n this._gridLineItems = null;\n this._labelItems = null;\n this.beforeSetDimensions();\n this.setDimensions();\n this.afterSetDimensions();\n this._maxLength = this.isHorizontal()\n ? this.width + margins.left + margins.right\n : this.height + margins.top + margins.bottom;\n if (!this._dataLimitsCached) {\n this.beforeDataLimits();\n this.determineDataLimits();\n this.afterDataLimits();\n this._range = _addGrace(this, grace, beginAtZero);\n this._dataLimitsCached = true;\n }\n this.beforeBuildTicks();\n this.ticks = this.buildTicks() || [];\n this.afterBuildTicks();\n const samplingEnabled = sampleSize < this.ticks.length;\n this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n this.configure();\n this.beforeCalculateLabelRotation();\n this.calculateLabelRotation();\n this.afterCalculateLabelRotation();\n if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n this.ticks = autoSkip(this, this.ticks);\n this._labelSizes = null;\n this.afterAutoSkip();\n }\n if (samplingEnabled) {\n this._convertTicksToLabels(this.ticks);\n }\n this.beforeFit();\n this.fit();\n this.afterFit();\n this.afterUpdate();\n }\n configure() {\n let reversePixels = this.options.reverse;\n let startPixel, endPixel;\n if (this.isHorizontal()) {\n startPixel = this.left;\n endPixel = this.right;\n } else {\n startPixel = this.top;\n endPixel = this.bottom;\n reversePixels = !reversePixels;\n }\n this._startPixel = startPixel;\n this._endPixel = endPixel;\n this._reversePixels = reversePixels;\n this._length = endPixel - startPixel;\n this._alignToPixels = this.options.alignToPixels;\n }\n afterUpdate() {\n callback(this.options.afterUpdate, [this]);\n }\n beforeSetDimensions() {\n callback(this.options.beforeSetDimensions, [this]);\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = 0;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = 0;\n this.bottom = this.height;\n }\n this.paddingLeft = 0;\n this.paddingTop = 0;\n this.paddingRight = 0;\n this.paddingBottom = 0;\n }\n afterSetDimensions() {\n callback(this.options.afterSetDimensions, [this]);\n }\n _callHooks(name) {\n this.chart.notifyPlugins(name, this.getContext());\n callback(this.options[name], [this]);\n }\n beforeDataLimits() {\n this._callHooks('beforeDataLimits');\n }\n determineDataLimits() {}\n afterDataLimits() {\n this._callHooks('afterDataLimits');\n }\n beforeBuildTicks() {\n this._callHooks('beforeBuildTicks');\n }\n buildTicks() {\n return [];\n }\n afterBuildTicks() {\n this._callHooks('afterBuildTicks');\n }\n beforeTickToLabelConversion() {\n callback(this.options.beforeTickToLabelConversion, [this]);\n }\n generateTickLabels(ticks) {\n const tickOpts = this.options.ticks;\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n tick = ticks[i];\n tick.label = callback(tickOpts.callback, [tick.value, i, ticks], this);\n }\n }\n afterTickToLabelConversion() {\n callback(this.options.afterTickToLabelConversion, [this]);\n }\n beforeCalculateLabelRotation() {\n callback(this.options.beforeCalculateLabelRotation, [this]);\n }\n calculateLabelRotation() {\n const options = this.options;\n const tickOpts = options.ticks;\n const numTicks = this.ticks.length;\n const minRotation = tickOpts.minRotation || 0;\n const maxRotation = tickOpts.maxRotation;\n let labelRotation = minRotation;\n let tickWidth, maxHeight, maxLabelDiagonal;\n if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n this.labelRotation = minRotation;\n return;\n }\n const labelSizes = this._getLabelSizes();\n const maxLabelWidth = labelSizes.widest.width;\n const maxLabelHeight = labelSizes.highest.height;\n const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\n if (maxLabelWidth + 6 > tickWidth) {\n tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n maxHeight = this.maxHeight - getTickMarkLength(options.grid)\n\t\t\t\t- tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n labelRotation = toDegrees(Math.min(\n Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)),\n Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))\n ));\n labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n }\n this.labelRotation = labelRotation;\n }\n afterCalculateLabelRotation() {\n callback(this.options.afterCalculateLabelRotation, [this]);\n }\n afterAutoSkip() {}\n beforeFit() {\n callback(this.options.beforeFit, [this]);\n }\n fit() {\n const minSize = {\n width: 0,\n height: 0\n };\n const {chart, options: {ticks: tickOpts, title: titleOpts, grid: gridOpts}} = this;\n const display = this._isVisible();\n const isHorizontal = this.isHorizontal();\n if (display) {\n const titleHeight = getTitleHeight(titleOpts, chart.options.font);\n if (isHorizontal) {\n minSize.width = this.maxWidth;\n minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n } else {\n minSize.height = this.maxHeight;\n minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n }\n if (tickOpts.display && this.ticks.length) {\n const {first, last, widest, highest} = this._getLabelSizes();\n const tickPadding = tickOpts.padding * 2;\n const angleRadians = toRadians(this.labelRotation);\n const cos = Math.cos(angleRadians);\n const sin = Math.sin(angleRadians);\n if (isHorizontal) {\n const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding);\n } else {\n const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding);\n }\n this._calculatePadding(first, last, sin, cos);\n }\n }\n this._handleMargins();\n if (isHorizontal) {\n this.width = this._length = chart.width - this._margins.left - this._margins.right;\n this.height = minSize.height;\n } else {\n this.width = minSize.width;\n this.height = this._length = chart.height - this._margins.top - this._margins.bottom;\n }\n }\n _calculatePadding(first, last, sin, cos) {\n const {ticks: {align, padding}, position} = this.options;\n const isRotated = this.labelRotation !== 0;\n const labelsBelowTicks = position !== 'top' && this.axis === 'x';\n if (this.isHorizontal()) {\n const offsetLeft = this.getPixelForTick(0) - this.left;\n const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1);\n let paddingLeft = 0;\n let paddingRight = 0;\n if (isRotated) {\n if (labelsBelowTicks) {\n paddingLeft = cos * first.width;\n paddingRight = sin * last.height;\n } else {\n paddingLeft = sin * first.height;\n paddingRight = cos * last.width;\n }\n } else if (align === 'start') {\n paddingRight = last.width;\n } else if (align === 'end') {\n paddingLeft = first.width;\n } else if (align !== 'inner') {\n paddingLeft = first.width / 2;\n paddingRight = last.width / 2;\n }\n this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0);\n this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0);\n } else {\n let paddingTop = last.height / 2;\n let paddingBottom = first.height / 2;\n if (align === 'start') {\n paddingTop = 0;\n paddingBottom = first.height;\n } else if (align === 'end') {\n paddingTop = last.height;\n paddingBottom = 0;\n }\n this.paddingTop = paddingTop + padding;\n this.paddingBottom = paddingBottom + padding;\n }\n }\n _handleMargins() {\n if (this._margins) {\n this._margins.left = Math.max(this.paddingLeft, this._margins.left);\n this._margins.top = Math.max(this.paddingTop, this._margins.top);\n this._margins.right = Math.max(this.paddingRight, this._margins.right);\n this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom);\n }\n }\n afterFit() {\n callback(this.options.afterFit, [this]);\n }\n isHorizontal() {\n const {axis, position} = this.options;\n return position === 'top' || position === 'bottom' || axis === 'x';\n }\n isFullSize() {\n return this.options.fullSize;\n }\n _convertTicksToLabels(ticks) {\n this.beforeTickToLabelConversion();\n this.generateTickLabels(ticks);\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (isNullOrUndef(ticks[i].label)) {\n ticks.splice(i, 1);\n ilen--;\n i--;\n }\n }\n this.afterTickToLabelConversion();\n }\n _getLabelSizes() {\n let labelSizes = this._labelSizes;\n if (!labelSizes) {\n const sampleSize = this.options.ticks.sampleSize;\n let ticks = this.ticks;\n if (sampleSize < ticks.length) {\n ticks = sample(ticks, sampleSize);\n }\n this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length);\n }\n return labelSizes;\n }\n _computeLabelSizes(ticks, length) {\n const {ctx, _longestTextCache: caches} = this;\n const widths = [];\n const heights = [];\n let widestLabelSize = 0;\n let highestLabelSize = 0;\n let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n for (i = 0; i < length; ++i) {\n label = ticks[i].label;\n tickFont = this._resolveTickFontOptions(i);\n ctx.font = fontString = tickFont.string;\n cache = caches[fontString] = caches[fontString] || {data: {}, gc: []};\n lineHeight = tickFont.lineHeight;\n width = height = 0;\n if (!isNullOrUndef(label) && !isArray(label)) {\n width = _measureText(ctx, cache.data, cache.gc, width, label);\n height = lineHeight;\n } else if (isArray(label)) {\n for (j = 0, jlen = label.length; j < jlen; ++j) {\n nestedLabel = label[j];\n if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n height += lineHeight;\n }\n }\n }\n widths.push(width);\n heights.push(height);\n widestLabelSize = Math.max(width, widestLabelSize);\n highestLabelSize = Math.max(height, highestLabelSize);\n }\n garbageCollect(caches, length);\n const widest = widths.indexOf(widestLabelSize);\n const highest = heights.indexOf(highestLabelSize);\n const valueAt = (idx) => ({width: widths[idx] || 0, height: heights[idx] || 0});\n return {\n first: valueAt(0),\n last: valueAt(length - 1),\n widest: valueAt(widest),\n highest: valueAt(highest),\n widths,\n heights,\n };\n }\n getLabelForValue(value) {\n return value;\n }\n getPixelForValue(value, index) {\n return NaN;\n }\n getValueForPixel(pixel) {}\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getPixelForDecimal(decimal) {\n if (this._reversePixels) {\n decimal = 1 - decimal;\n }\n const pixel = this._startPixel + decimal * this._length;\n return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n }\n getDecimalForPixel(pixel) {\n const decimal = (pixel - this._startPixel) / this._length;\n return this._reversePixels ? 1 - decimal : decimal;\n }\n getBasePixel() {\n return this.getPixelForValue(this.getBaseValue());\n }\n getBaseValue() {\n const {min, max} = this;\n return min < 0 && max < 0 ? max :\n min > 0 && max > 0 ? min :\n 0;\n }\n getContext(index) {\n const ticks = this.ticks || [];\n if (index >= 0 && index < ticks.length) {\n const tick = ticks[index];\n return tick.$context ||\n\t\t\t\t(tick.$context = createTickContext(this.getContext(), index, tick));\n }\n return this.$context ||\n\t\t\t(this.$context = createScaleContext(this.chart.getContext(), this));\n }\n _tickSize() {\n const optionTicks = this.options.ticks;\n const rot = toRadians(this.labelRotation);\n const cos = Math.abs(Math.cos(rot));\n const sin = Math.abs(Math.sin(rot));\n const labelSizes = this._getLabelSizes();\n const padding = optionTicks.autoSkipPadding || 0;\n const w = labelSizes ? labelSizes.widest.width + padding : 0;\n const h = labelSizes ? labelSizes.highest.height + padding : 0;\n return this.isHorizontal()\n ? h * cos > w * sin ? w / cos : h / sin\n : h * sin < w * cos ? h / cos : w / sin;\n }\n _isVisible() {\n const display = this.options.display;\n if (display !== 'auto') {\n return !!display;\n }\n return this.getMatchingVisibleMetas().length > 0;\n }\n _computeGridLineItems(chartArea) {\n const axis = this.axis;\n const chart = this.chart;\n const options = this.options;\n const {grid, position} = options;\n const offset = grid.offset;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const ticksLength = ticks.length + (offset ? 1 : 0);\n const tl = getTickMarkLength(grid);\n const items = [];\n const borderOpts = grid.setContext(this.getContext());\n const axisWidth = borderOpts.drawBorder ? borderOpts.borderWidth : 0;\n const axisHalfWidth = axisWidth / 2;\n const alignBorderValue = function(pixel) {\n return _alignPixel(chart, pixel, axisWidth);\n };\n let borderValue, i, lineValue, alignedLineValue;\n let tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n if (position === 'top') {\n borderValue = alignBorderValue(this.bottom);\n ty1 = this.bottom - tl;\n ty2 = borderValue - axisHalfWidth;\n y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n y2 = chartArea.bottom;\n } else if (position === 'bottom') {\n borderValue = alignBorderValue(this.top);\n y1 = chartArea.top;\n y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n ty1 = borderValue + axisHalfWidth;\n ty2 = this.top + tl;\n } else if (position === 'left') {\n borderValue = alignBorderValue(this.right);\n tx1 = this.right - tl;\n tx2 = borderValue - axisHalfWidth;\n x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n x2 = chartArea.right;\n } else if (position === 'right') {\n borderValue = alignBorderValue(this.left);\n x1 = chartArea.left;\n x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n tx1 = borderValue + axisHalfWidth;\n tx2 = this.left + tl;\n } else if (axis === 'x') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n y1 = chartArea.top;\n y2 = chartArea.bottom;\n ty1 = borderValue + axisHalfWidth;\n ty2 = ty1 + tl;\n } else if (axis === 'y') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n tx1 = borderValue - axisHalfWidth;\n tx2 = tx1 - tl;\n x1 = chartArea.left;\n x2 = chartArea.right;\n }\n const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n const step = Math.max(1, Math.ceil(ticksLength / limit));\n for (i = 0; i < ticksLength; i += step) {\n const optsAtIndex = grid.setContext(this.getContext(i));\n const lineWidth = optsAtIndex.lineWidth;\n const lineColor = optsAtIndex.color;\n const borderDash = optsAtIndex.borderDash || [];\n const borderDashOffset = optsAtIndex.borderDashOffset;\n const tickWidth = optsAtIndex.tickWidth;\n const tickColor = optsAtIndex.tickColor;\n const tickBorderDash = optsAtIndex.tickBorderDash || [];\n const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset;\n lineValue = getPixelForGridLine(this, i, offset);\n if (lineValue === undefined) {\n continue;\n }\n alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n if (isHorizontal) {\n tx1 = tx2 = x1 = x2 = alignedLineValue;\n } else {\n ty1 = ty2 = y1 = y2 = alignedLineValue;\n }\n items.push({\n tx1,\n ty1,\n tx2,\n ty2,\n x1,\n y1,\n x2,\n y2,\n width: lineWidth,\n color: lineColor,\n borderDash,\n borderDashOffset,\n tickWidth,\n tickColor,\n tickBorderDash,\n tickBorderDashOffset,\n });\n }\n this._ticksLength = ticksLength;\n this._borderValue = borderValue;\n return items;\n }\n _computeLabelItems(chartArea) {\n const axis = this.axis;\n const options = this.options;\n const {position, ticks: optionTicks} = options;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const {align, crossAlign, padding, mirror} = optionTicks;\n const tl = getTickMarkLength(options.grid);\n const tickAndPadding = tl + padding;\n const hTickAndPadding = mirror ? -padding : tickAndPadding;\n const rotation = -toRadians(this.labelRotation);\n const items = [];\n let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n let textBaseline = 'middle';\n if (position === 'top') {\n y = this.bottom - hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'bottom') {\n y = this.top + hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'left') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (position === 'right') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (axis === 'x') {\n if (position === 'center') {\n y = ((chartArea.top + chartArea.bottom) / 2) + tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n }\n textAlign = this._getXAxisLabelAlignment();\n } else if (axis === 'y') {\n if (position === 'center') {\n x = ((chartArea.left + chartArea.right) / 2) - tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n x = this.chart.scales[positionAxisID].getPixelForValue(value);\n }\n textAlign = this._getYAxisLabelAlignment(tl).textAlign;\n }\n if (axis === 'y') {\n if (align === 'start') {\n textBaseline = 'top';\n } else if (align === 'end') {\n textBaseline = 'bottom';\n }\n }\n const labelSizes = this._getLabelSizes();\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n label = tick.label;\n const optsAtIndex = optionTicks.setContext(this.getContext(i));\n pixel = this.getPixelForTick(i) + optionTicks.labelOffset;\n font = this._resolveTickFontOptions(i);\n lineHeight = font.lineHeight;\n lineCount = isArray(label) ? label.length : 1;\n const halfCount = lineCount / 2;\n const color = optsAtIndex.color;\n const strokeColor = optsAtIndex.textStrokeColor;\n const strokeWidth = optsAtIndex.textStrokeWidth;\n let tickTextAlign = textAlign;\n if (isHorizontal) {\n x = pixel;\n if (textAlign === 'inner') {\n if (i === ilen - 1) {\n tickTextAlign = !this.options.reverse ? 'right' : 'left';\n } else if (i === 0) {\n tickTextAlign = !this.options.reverse ? 'left' : 'right';\n } else {\n tickTextAlign = 'center';\n }\n }\n if (position === 'top') {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = -lineCount * lineHeight + lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n } else {\n textOffset = -labelSizes.highest.height + lineHeight / 2;\n }\n } else {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n } else {\n textOffset = labelSizes.highest.height - lineCount * lineHeight;\n }\n }\n if (mirror) {\n textOffset *= -1;\n }\n } else {\n y = pixel;\n textOffset = (1 - lineCount) * lineHeight / 2;\n }\n let backdrop;\n if (optsAtIndex.showLabelBackdrop) {\n const labelPadding = toPadding(optsAtIndex.backdropPadding);\n const height = labelSizes.heights[i];\n const width = labelSizes.widths[i];\n let top = y + textOffset - labelPadding.top;\n let left = x - labelPadding.left;\n switch (textBaseline) {\n case 'middle':\n top -= height / 2;\n break;\n case 'bottom':\n top -= height;\n break;\n }\n switch (textAlign) {\n case 'center':\n left -= width / 2;\n break;\n case 'right':\n left -= width;\n break;\n }\n backdrop = {\n left,\n top,\n width: width + labelPadding.width,\n height: height + labelPadding.height,\n color: optsAtIndex.backdropColor,\n };\n }\n items.push({\n rotation,\n label,\n font,\n color,\n strokeColor,\n strokeWidth,\n textOffset,\n textAlign: tickTextAlign,\n textBaseline,\n translation: [x, y],\n backdrop,\n });\n }\n return items;\n }\n _getXAxisLabelAlignment() {\n const {position, ticks} = this.options;\n const rotation = -toRadians(this.labelRotation);\n if (rotation) {\n return position === 'top' ? 'left' : 'right';\n }\n let align = 'center';\n if (ticks.align === 'start') {\n align = 'left';\n } else if (ticks.align === 'end') {\n align = 'right';\n } else if (ticks.align === 'inner') {\n align = 'inner';\n }\n return align;\n }\n _getYAxisLabelAlignment(tl) {\n const {position, ticks: {crossAlign, mirror, padding}} = this.options;\n const labelSizes = this._getLabelSizes();\n const tickAndPadding = tl + padding;\n const widest = labelSizes.widest.width;\n let textAlign;\n let x;\n if (position === 'left') {\n if (mirror) {\n x = this.right + padding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += (widest / 2);\n } else {\n textAlign = 'right';\n x += widest;\n }\n } else {\n x = this.right - tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x = this.left;\n }\n }\n } else if (position === 'right') {\n if (mirror) {\n x = this.left + padding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x -= widest;\n }\n } else {\n x = this.left + tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x = this.right;\n }\n }\n } else {\n textAlign = 'right';\n }\n return {textAlign, x};\n }\n _computeLabelArea() {\n if (this.options.ticks.mirror) {\n return;\n }\n const chart = this.chart;\n const position = this.options.position;\n if (position === 'left' || position === 'right') {\n return {top: 0, left: this.left, bottom: chart.height, right: this.right};\n } if (position === 'top' || position === 'bottom') {\n return {top: this.top, left: 0, bottom: this.bottom, right: chart.width};\n }\n }\n drawBackground() {\n const {ctx, options: {backgroundColor}, left, top, width, height} = this;\n if (backgroundColor) {\n ctx.save();\n ctx.fillStyle = backgroundColor;\n ctx.fillRect(left, top, width, height);\n ctx.restore();\n }\n }\n getLineWidthForValue(value) {\n const grid = this.options.grid;\n if (!this._isVisible() || !grid.display) {\n return 0;\n }\n const ticks = this.ticks;\n const index = ticks.findIndex(t => t.value === value);\n if (index >= 0) {\n const opts = grid.setContext(this.getContext(index));\n return opts.lineWidth;\n }\n return 0;\n }\n drawGrid(chartArea) {\n const grid = this.options.grid;\n const ctx = this.ctx;\n const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n let i, ilen;\n const drawLine = (p1, p2, style) => {\n if (!style.width || !style.color) {\n return;\n }\n ctx.save();\n ctx.lineWidth = style.width;\n ctx.strokeStyle = style.color;\n ctx.setLineDash(style.borderDash || []);\n ctx.lineDashOffset = style.borderDashOffset;\n ctx.beginPath();\n ctx.moveTo(p1.x, p1.y);\n ctx.lineTo(p2.x, p2.y);\n ctx.stroke();\n ctx.restore();\n };\n if (grid.display) {\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n if (grid.drawOnChartArea) {\n drawLine(\n {x: item.x1, y: item.y1},\n {x: item.x2, y: item.y2},\n item\n );\n }\n if (grid.drawTicks) {\n drawLine(\n {x: item.tx1, y: item.ty1},\n {x: item.tx2, y: item.ty2},\n {\n color: item.tickColor,\n width: item.tickWidth,\n borderDash: item.tickBorderDash,\n borderDashOffset: item.tickBorderDashOffset\n }\n );\n }\n }\n }\n }\n drawBorder() {\n const {chart, ctx, options: {grid}} = this;\n const borderOpts = grid.setContext(this.getContext());\n const axisWidth = grid.drawBorder ? borderOpts.borderWidth : 0;\n if (!axisWidth) {\n return;\n }\n const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n const borderValue = this._borderValue;\n let x1, x2, y1, y2;\n if (this.isHorizontal()) {\n x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2;\n x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2;\n y1 = y2 = borderValue;\n } else {\n y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2;\n y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2;\n x1 = x2 = borderValue;\n }\n ctx.save();\n ctx.lineWidth = borderOpts.borderWidth;\n ctx.strokeStyle = borderOpts.borderColor;\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.stroke();\n ctx.restore();\n }\n drawLabels(chartArea) {\n const optionTicks = this.options.ticks;\n if (!optionTicks.display) {\n return;\n }\n const ctx = this.ctx;\n const area = this._computeLabelArea();\n if (area) {\n clipArea(ctx, area);\n }\n const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n let i, ilen;\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n const tickFont = item.font;\n const label = item.label;\n if (item.backdrop) {\n ctx.fillStyle = item.backdrop.color;\n ctx.fillRect(item.backdrop.left, item.backdrop.top, item.backdrop.width, item.backdrop.height);\n }\n let y = item.textOffset;\n renderText(ctx, label, 0, y, tickFont, item);\n }\n if (area) {\n unclipArea(ctx);\n }\n }\n drawTitle() {\n const {ctx, options: {position, title, reverse}} = this;\n if (!title.display) {\n return;\n }\n const font = toFont(title.font);\n const padding = toPadding(title.padding);\n const align = title.align;\n let offset = font.lineHeight / 2;\n if (position === 'bottom' || position === 'center' || isObject(position)) {\n offset += padding.bottom;\n if (isArray(title.text)) {\n offset += font.lineHeight * (title.text.length - 1);\n }\n } else {\n offset += padding.top;\n }\n const {titleX, titleY, maxWidth, rotation} = titleArgs(this, offset, position, align);\n renderText(ctx, title.text, 0, 0, font, {\n color: title.color,\n maxWidth,\n rotation,\n textAlign: titleAlign(align, position, reverse),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n draw(chartArea) {\n if (!this._isVisible()) {\n return;\n }\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawBorder();\n this.drawTitle();\n this.drawLabels(chartArea);\n }\n _layers() {\n const opts = this.options;\n const tz = opts.ticks && opts.ticks.z || 0;\n const gz = valueOrDefault(opts.grid && opts.grid.z, -1);\n if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n return [{\n z: tz,\n draw: (chartArea) => {\n this.draw(chartArea);\n }\n }];\n }\n return [{\n z: gz,\n draw: (chartArea) => {\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawTitle();\n }\n }, {\n z: gz + 1,\n draw: () => {\n this.drawBorder();\n }\n }, {\n z: tz,\n draw: (chartArea) => {\n this.drawLabels(chartArea);\n }\n }];\n }\n getMatchingVisibleMetas(type) {\n const metas = this.chart.getSortedVisibleDatasetMetas();\n const axisID = this.axis + 'AxisID';\n const result = [];\n let i, ilen;\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n const meta = metas[i];\n if (meta[axisID] === this.id && (!type || meta.type === type)) {\n result.push(meta);\n }\n }\n return result;\n }\n _resolveTickFontOptions(index) {\n const opts = this.options.ticks.setContext(this.getContext(index));\n return toFont(opts.font);\n }\n _maxDigits() {\n const fontSize = this._resolveTickFontOptions(0).lineHeight;\n return (this.isHorizontal() ? this.width : this.height) / fontSize;\n }\n}\n\nclass TypedRegistry {\n constructor(type, scope, override) {\n this.type = type;\n this.scope = scope;\n this.override = override;\n this.items = Object.create(null);\n }\n isForType(type) {\n return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n }\n register(item) {\n const proto = Object.getPrototypeOf(item);\n let parentScope;\n if (isIChartComponent(proto)) {\n parentScope = this.register(proto);\n }\n const items = this.items;\n const id = item.id;\n const scope = this.scope + '.' + id;\n if (!id) {\n throw new Error('class does not have id: ' + item);\n }\n if (id in items) {\n return scope;\n }\n items[id] = item;\n registerDefaults(item, scope, parentScope);\n if (this.override) {\n defaults.override(item.id, item.overrides);\n }\n return scope;\n }\n get(id) {\n return this.items[id];\n }\n unregister(item) {\n const items = this.items;\n const id = item.id;\n const scope = this.scope;\n if (id in items) {\n delete items[id];\n }\n if (scope && id in defaults[scope]) {\n delete defaults[scope][id];\n if (this.override) {\n delete overrides[id];\n }\n }\n }\n}\nfunction registerDefaults(item, scope, parentScope) {\n const itemDefaults = merge(Object.create(null), [\n parentScope ? defaults.get(parentScope) : {},\n defaults.get(scope),\n item.defaults\n ]);\n defaults.set(scope, itemDefaults);\n if (item.defaultRoutes) {\n routeDefaults(scope, item.defaultRoutes);\n }\n if (item.descriptors) {\n defaults.describe(scope, item.descriptors);\n }\n}\nfunction routeDefaults(scope, routes) {\n Object.keys(routes).forEach(property => {\n const propertyParts = property.split('.');\n const sourceName = propertyParts.pop();\n const sourceScope = [scope].concat(propertyParts).join('.');\n const parts = routes[property].split('.');\n const targetName = parts.pop();\n const targetScope = parts.join('.');\n defaults.route(sourceScope, sourceName, targetScope, targetName);\n });\n}\nfunction isIChartComponent(proto) {\n return 'id' in proto && 'defaults' in proto;\n}\n\nclass Registry {\n constructor() {\n this.controllers = new TypedRegistry(DatasetController, 'datasets', true);\n this.elements = new TypedRegistry(Element, 'elements');\n this.plugins = new TypedRegistry(Object, 'plugins');\n this.scales = new TypedRegistry(Scale, 'scales');\n this._typedRegistries = [this.controllers, this.scales, this.elements];\n }\n add(...args) {\n this._each('register', args);\n }\n remove(...args) {\n this._each('unregister', args);\n }\n addControllers(...args) {\n this._each('register', args, this.controllers);\n }\n addElements(...args) {\n this._each('register', args, this.elements);\n }\n addPlugins(...args) {\n this._each('register', args, this.plugins);\n }\n addScales(...args) {\n this._each('register', args, this.scales);\n }\n getController(id) {\n return this._get(id, this.controllers, 'controller');\n }\n getElement(id) {\n return this._get(id, this.elements, 'element');\n }\n getPlugin(id) {\n return this._get(id, this.plugins, 'plugin');\n }\n getScale(id) {\n return this._get(id, this.scales, 'scale');\n }\n removeControllers(...args) {\n this._each('unregister', args, this.controllers);\n }\n removeElements(...args) {\n this._each('unregister', args, this.elements);\n }\n removePlugins(...args) {\n this._each('unregister', args, this.plugins);\n }\n removeScales(...args) {\n this._each('unregister', args, this.scales);\n }\n _each(method, args, typedRegistry) {\n [...args].forEach(arg => {\n const reg = typedRegistry || this._getRegistryForType(arg);\n if (typedRegistry || reg.isForType(arg) || (reg === this.plugins && arg.id)) {\n this._exec(method, reg, arg);\n } else {\n each(arg, item => {\n const itemReg = typedRegistry || this._getRegistryForType(item);\n this._exec(method, itemReg, item);\n });\n }\n });\n }\n _exec(method, registry, component) {\n const camelMethod = _capitalize(method);\n callback(component['before' + camelMethod], [], component);\n registry[method](component);\n callback(component['after' + camelMethod], [], component);\n }\n _getRegistryForType(type) {\n for (let i = 0; i < this._typedRegistries.length; i++) {\n const reg = this._typedRegistries[i];\n if (reg.isForType(type)) {\n return reg;\n }\n }\n return this.plugins;\n }\n _get(id, typedRegistry, type) {\n const item = typedRegistry.get(id);\n if (item === undefined) {\n throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n }\n return item;\n }\n}\nvar registry = new Registry();\n\nclass ScatterController extends DatasetController {\n update(mode) {\n const meta = this._cachedMeta;\n const {data: points = []} = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n if (this.options.showLine) {\n const {dataset: line, _dataset} = meta;\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n }\n this.updateElements(points, start, count, mode);\n }\n addElements() {\n const {showLine} = this.options;\n if (!this.datasetElementType && showLine) {\n this.datasetElementType = registry.getElement('line');\n }\n super.addElements();\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const {spanGaps, segment} = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for (let i = start; i < start + count; ++i) {\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const data = meta.data || [];\n if (!this.options.showLine) {\n let max = 0;\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n}\nScatterController.id = 'scatter';\nScatterController.defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n showLine: false,\n fill: false\n};\nScatterController.overrides = {\n interaction: {\n mode: 'point'\n },\n plugins: {\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(item) {\n return '(' + item.label + ', ' + item.formattedValue + ')';\n }\n }\n }\n },\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n};\n\nvar controllers = /*#__PURE__*/Object.freeze({\n__proto__: null,\nBarController: BarController,\nBubbleController: BubbleController,\nDoughnutController: DoughnutController,\nLineController: LineController,\nPolarAreaController: PolarAreaController,\nPieController: PieController,\nRadarController: RadarController,\nScatterController: ScatterController\n});\n\nfunction abstract() {\n throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\nclass DateAdapter {\n constructor(options) {\n this.options = options || {};\n }\n init(chartOptions) {}\n formats() {\n return abstract();\n }\n parse(value, format) {\n return abstract();\n }\n format(timestamp, format) {\n return abstract();\n }\n add(timestamp, amount, unit) {\n return abstract();\n }\n diff(a, b, unit) {\n return abstract();\n }\n startOf(timestamp, unit, weekday) {\n return abstract();\n }\n endOf(timestamp, unit) {\n return abstract();\n }\n}\nDateAdapter.override = function(members) {\n Object.assign(DateAdapter.prototype, members);\n};\nvar adapters = {\n _date: DateAdapter\n};\n\nfunction binarySearch(metaset, axis, value, intersect) {\n const {controller, data, _sorted} = metaset;\n const iScale = controller._cachedMeta.iScale;\n if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n if (!intersect) {\n return lookupMethod(data, axis, value);\n } else if (controller._sharedOptions) {\n const el = data[0];\n const range = typeof el.getRange === 'function' && el.getRange(axis);\n if (range) {\n const start = lookupMethod(data, axis, value - range);\n const end = lookupMethod(data, axis, value + range);\n return {lo: start.lo, hi: end.hi};\n }\n }\n }\n return {lo: 0, hi: data.length - 1};\n}\nfunction evaluateInteractionItems(chart, axis, position, handler, intersect) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n const value = position[axis];\n for (let i = 0, ilen = metasets.length; i < ilen; ++i) {\n const {index, data} = metasets[i];\n const {lo, hi} = binarySearch(metasets[i], axis, value, intersect);\n for (let j = lo; j <= hi; ++j) {\n const element = data[j];\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\nfunction getDistanceMetricForAxis(axis) {\n const useX = axis.indexOf('x') !== -1;\n const useY = axis.indexOf('y') !== -1;\n return function(pt1, pt2) {\n const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n };\n}\nfunction getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) {\n const items = [];\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return items;\n }\n const evaluationFunc = function(element, datasetIndex, index) {\n if (!includeInvisible && !_isPointInArea(element, chart.chartArea, 0)) {\n return;\n }\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n items.push({element, datasetIndex, index});\n }\n };\n evaluateInteractionItems(chart, axis, position, evaluationFunc, true);\n return items;\n}\nfunction getNearestRadialItems(chart, position, axis, useFinalPosition) {\n let items = [];\n function evaluationFunc(element, datasetIndex, index) {\n const {startAngle, endAngle} = element.getProps(['startAngle', 'endAngle'], useFinalPosition);\n const {angle} = getAngleFromPoint(element, {x: position.x, y: position.y});\n if (_angleBetween(angle, startAngle, endAngle)) {\n items.push({element, datasetIndex, index});\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n let items = [];\n const distanceMetric = getDistanceMetricForAxis(axis);\n let minDistance = Number.POSITIVE_INFINITY;\n function evaluationFunc(element, datasetIndex, index) {\n const inRange = element.inRange(position.x, position.y, useFinalPosition);\n if (intersect && !inRange) {\n return;\n }\n const center = element.getCenterPoint(useFinalPosition);\n const pointInArea = !!includeInvisible || chart.isPointInArea(center);\n if (!pointInArea && !inRange) {\n return;\n }\n const distance = distanceMetric(position, center);\n if (distance < minDistance) {\n items = [{element, datasetIndex, index}];\n minDistance = distance;\n } else if (distance === minDistance) {\n items.push({element, datasetIndex, index});\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return [];\n }\n return axis === 'r' && !intersect\n ? getNearestRadialItems(chart, position, axis, useFinalPosition)\n : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible);\n}\nfunction getAxisItems(chart, position, axis, intersect, useFinalPosition) {\n const items = [];\n const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n let intersectsItem = false;\n evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index) => {\n if (element[rangeMethod](position[axis], useFinalPosition)) {\n items.push({element, datasetIndex, index});\n intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition);\n }\n });\n if (intersect && !intersectsItem) {\n return [];\n }\n return items;\n}\nvar Interaction = {\n evaluateInteractionItems,\n modes: {\n index(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'x';\n const includeInvisible = options.includeInvisible || false;\n const items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible)\n : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n const elements = [];\n if (!items.length) {\n return [];\n }\n chart.getSortedVisibleDatasetMetas().forEach((meta) => {\n const index = items[0].index;\n const element = meta.data[index];\n if (element && !element.skip) {\n elements.push({element, datasetIndex: meta.index, index});\n }\n });\n return elements;\n },\n dataset(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n let items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) :\n getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n if (items.length > 0) {\n const datasetIndex = items[0].datasetIndex;\n const data = chart.getDatasetMeta(datasetIndex).data;\n items = [];\n for (let i = 0; i < data.length; ++i) {\n items.push({element: data[i], datasetIndex, index: i});\n }\n }\n return items;\n },\n point(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible);\n },\n nearest(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getNearestItems(chart, position, axis, options.intersect, useFinalPosition, includeInvisible);\n },\n x(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'x', options.intersect, useFinalPosition);\n },\n y(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'y', options.intersect, useFinalPosition);\n }\n }\n};\n\nconst STATIC_POSITIONS = ['left', 'top', 'right', 'bottom'];\nfunction filterByPosition(array, position) {\n return array.filter(v => v.pos === position);\n}\nfunction filterDynamicPositionByAxis(array, axis) {\n return array.filter(v => STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\nfunction sortByWeight(array, reverse) {\n return array.sort((a, b) => {\n const v0 = reverse ? b : a;\n const v1 = reverse ? a : b;\n return v0.weight === v1.weight ?\n v0.index - v1.index :\n v0.weight - v1.weight;\n });\n}\nfunction wrapBoxes(boxes) {\n const layoutBoxes = [];\n let i, ilen, box, pos, stack, stackWeight;\n for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\n box = boxes[i];\n ({position: pos, options: {stack, stackWeight = 1}} = box);\n layoutBoxes.push({\n index: i,\n box,\n pos,\n horizontal: box.isHorizontal(),\n weight: box.weight,\n stack: stack && (pos + stack),\n stackWeight\n });\n }\n return layoutBoxes;\n}\nfunction buildStacks(layouts) {\n const stacks = {};\n for (const wrap of layouts) {\n const {stack, pos, stackWeight} = wrap;\n if (!stack || !STATIC_POSITIONS.includes(pos)) {\n continue;\n }\n const _stack = stacks[stack] || (stacks[stack] = {count: 0, placed: 0, weight: 0, size: 0});\n _stack.count++;\n _stack.weight += stackWeight;\n }\n return stacks;\n}\nfunction setLayoutDims(layouts, params) {\n const stacks = buildStacks(layouts);\n const {vBoxMaxWidth, hBoxMaxHeight} = params;\n let i, ilen, layout;\n for (i = 0, ilen = layouts.length; i < ilen; ++i) {\n layout = layouts[i];\n const {fullSize} = layout.box;\n const stack = stacks[layout.stack];\n const factor = stack && layout.stackWeight / stack.weight;\n if (layout.horizontal) {\n layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth;\n layout.height = hBoxMaxHeight;\n } else {\n layout.width = vBoxMaxWidth;\n layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight;\n }\n }\n return stacks;\n}\nfunction buildLayoutBoxes(boxes) {\n const layoutBoxes = wrapBoxes(boxes);\n const fullSize = sortByWeight(layoutBoxes.filter(wrap => wrap.box.fullSize), true);\n const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n const right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n return {\n fullSize,\n leftAndTop: left.concat(top),\n rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),\n chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n vertical: left.concat(right).concat(centerVertical),\n horizontal: top.concat(bottom).concat(centerHorizontal)\n };\n}\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\nfunction updateMaxPadding(maxPadding, boxPadding) {\n maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\nfunction updateDims(chartArea, params, layout, stacks) {\n const {pos, box} = layout;\n const maxPadding = chartArea.maxPadding;\n if (!isObject(pos)) {\n if (layout.size) {\n chartArea[pos] -= layout.size;\n }\n const stack = stacks[layout.stack] || {size: 0, count: 1};\n stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width);\n layout.size = stack.size / stack.count;\n chartArea[pos] += layout.size;\n }\n if (box.getPadding) {\n updateMaxPadding(maxPadding, box.getPadding());\n }\n const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n const widthChanged = newWidth !== chartArea.w;\n const heightChanged = newHeight !== chartArea.h;\n chartArea.w = newWidth;\n chartArea.h = newHeight;\n return layout.horizontal\n ? {same: widthChanged, other: heightChanged}\n : {same: heightChanged, other: widthChanged};\n}\nfunction handleMaxPadding(chartArea) {\n const maxPadding = chartArea.maxPadding;\n function updatePos(pos) {\n const change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n chartArea[pos] += change;\n return change;\n }\n chartArea.y += updatePos('top');\n chartArea.x += updatePos('left');\n updatePos('right');\n updatePos('bottom');\n}\nfunction getMargins(horizontal, chartArea) {\n const maxPadding = chartArea.maxPadding;\n function marginForPositions(positions) {\n const margin = {left: 0, top: 0, right: 0, bottom: 0};\n positions.forEach((pos) => {\n margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n });\n return margin;\n }\n return horizontal\n ? marginForPositions(['left', 'right'])\n : marginForPositions(['top', 'bottom']);\n}\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n const refitBoxes = [];\n let i, ilen, layout, box, refit, changed;\n for (i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i) {\n layout = boxes[i];\n box = layout.box;\n box.update(\n layout.width || chartArea.w,\n layout.height || chartArea.h,\n getMargins(layout.horizontal, chartArea)\n );\n const {same, other} = updateDims(chartArea, params, layout, stacks);\n refit |= same && refitBoxes.length;\n changed = changed || other;\n if (!box.fullSize) {\n refitBoxes.push(layout);\n }\n }\n return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\n}\nfunction setBoxDims(box, left, top, width, height) {\n box.top = top;\n box.left = left;\n box.right = left + width;\n box.bottom = top + height;\n box.width = width;\n box.height = height;\n}\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n const userPadding = params.padding;\n let {x, y} = chartArea;\n for (const layout of boxes) {\n const box = layout.box;\n const stack = stacks[layout.stack] || {count: 1, placed: 0, weight: 1};\n const weight = (layout.stackWeight / stack.weight) || 1;\n if (layout.horizontal) {\n const width = chartArea.w * weight;\n const height = stack.size || box.height;\n if (defined(stack.start)) {\n y = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height);\n } else {\n setBoxDims(box, chartArea.left + stack.placed, y, width, height);\n }\n stack.start = y;\n stack.placed += width;\n y = box.bottom;\n } else {\n const height = chartArea.h * weight;\n const width = stack.size || box.width;\n if (defined(stack.start)) {\n x = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, x, userPadding.top, width, params.outerHeight - userPadding.bottom - userPadding.top);\n } else {\n setBoxDims(box, x, chartArea.top + stack.placed, width, height);\n }\n stack.start = x;\n stack.placed += height;\n x = box.right;\n }\n }\n chartArea.x = x;\n chartArea.y = y;\n}\ndefaults.set('layout', {\n autoPadding: true,\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n});\nvar layouts = {\n addBox(chart, item) {\n if (!chart.boxes) {\n chart.boxes = [];\n }\n item.fullSize = item.fullSize || false;\n item.position = item.position || 'top';\n item.weight = item.weight || 0;\n item._layers = item._layers || function() {\n return [{\n z: 0,\n draw(chartArea) {\n item.draw(chartArea);\n }\n }];\n };\n chart.boxes.push(item);\n },\n removeBox(chart, layoutItem) {\n const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n if (index !== -1) {\n chart.boxes.splice(index, 1);\n }\n },\n configure(chart, item, options) {\n item.fullSize = options.fullSize;\n item.position = options.position;\n item.weight = options.weight;\n },\n update(chart, width, height, minPadding) {\n if (!chart) {\n return;\n }\n const padding = toPadding(chart.options.layout.padding);\n const availableWidth = Math.max(width - padding.width, 0);\n const availableHeight = Math.max(height - padding.height, 0);\n const boxes = buildLayoutBoxes(chart.boxes);\n const verticalBoxes = boxes.vertical;\n const horizontalBoxes = boxes.horizontal;\n each(chart.boxes, box => {\n if (typeof box.beforeLayout === 'function') {\n box.beforeLayout();\n }\n });\n const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap) =>\n wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\n const params = Object.freeze({\n outerWidth: width,\n outerHeight: height,\n padding,\n availableWidth,\n availableHeight,\n vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n hBoxMaxHeight: availableHeight / 2\n });\n const maxPadding = Object.assign({}, padding);\n updateMaxPadding(maxPadding, toPadding(minPadding));\n const chartArea = Object.assign({\n maxPadding,\n w: availableWidth,\n h: availableHeight,\n x: padding.left,\n y: padding.top\n }, padding);\n const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n fitBoxes(boxes.fullSize, chartArea, params, stacks);\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n }\n handleMaxPadding(chartArea);\n placeBoxes(boxes.leftAndTop, chartArea, params, stacks);\n chartArea.x += chartArea.w;\n chartArea.y += chartArea.h;\n placeBoxes(boxes.rightAndBottom, chartArea, params, stacks);\n chart.chartArea = {\n left: chartArea.left,\n top: chartArea.top,\n right: chartArea.left + chartArea.w,\n bottom: chartArea.top + chartArea.h,\n height: chartArea.h,\n width: chartArea.w,\n };\n each(boxes.chartArea, (layout) => {\n const box = layout.box;\n Object.assign(box, chart.chartArea);\n box.update(chartArea.w, chartArea.h, {left: 0, top: 0, right: 0, bottom: 0});\n });\n }\n};\n\nclass BasePlatform {\n acquireContext(canvas, aspectRatio) {}\n releaseContext(context) {\n return false;\n }\n addEventListener(chart, type, listener) {}\n removeEventListener(chart, type, listener) {}\n getDevicePixelRatio() {\n return 1;\n }\n getMaximumSize(element, width, height, aspectRatio) {\n width = Math.max(0, width || element.width);\n height = height || element.height;\n return {\n width,\n height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n };\n }\n isAttached(canvas) {\n return true;\n }\n updateConfig(config) {\n }\n}\n\nclass BasicPlatform extends BasePlatform {\n acquireContext(item) {\n return item && item.getContext && item.getContext('2d') || null;\n }\n updateConfig(config) {\n config.options.animation = false;\n }\n}\n\nconst EXPANDO_KEY = '$chartjs';\nconst EVENT_TYPES = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup',\n pointerenter: 'mouseenter',\n pointerdown: 'mousedown',\n pointermove: 'mousemove',\n pointerup: 'mouseup',\n pointerleave: 'mouseout',\n pointerout: 'mouseout'\n};\nconst isNullOrEmpty = value => value === null || value === '';\nfunction initCanvas(canvas, aspectRatio) {\n const style = canvas.style;\n const renderHeight = canvas.getAttribute('height');\n const renderWidth = canvas.getAttribute('width');\n canvas[EXPANDO_KEY] = {\n initial: {\n height: renderHeight,\n width: renderWidth,\n style: {\n display: style.display,\n height: style.height,\n width: style.width\n }\n }\n };\n style.display = style.display || 'block';\n style.boxSizing = style.boxSizing || 'border-box';\n if (isNullOrEmpty(renderWidth)) {\n const displayWidth = readUsedSize(canvas, 'width');\n if (displayWidth !== undefined) {\n canvas.width = displayWidth;\n }\n }\n if (isNullOrEmpty(renderHeight)) {\n if (canvas.style.height === '') {\n canvas.height = canvas.width / (aspectRatio || 2);\n } else {\n const displayHeight = readUsedSize(canvas, 'height');\n if (displayHeight !== undefined) {\n canvas.height = displayHeight;\n }\n }\n }\n return canvas;\n}\nconst eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\nfunction addListener(node, type, listener) {\n node.addEventListener(type, listener, eventListenerOptions);\n}\nfunction removeListener(chart, type, listener) {\n chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n}\nfunction fromNativeEvent(event, chart) {\n const type = EVENT_TYPES[event.type] || event.type;\n const {x, y} = getRelativePosition(event, chart);\n return {\n type,\n chart,\n native: event,\n x: x !== undefined ? x : null,\n y: y !== undefined ? y : null,\n };\n}\nfunction nodeListContains(nodeList, canvas) {\n for (const node of nodeList) {\n if (node === canvas || node.contains(canvas)) {\n return true;\n }\n }\n}\nfunction createAttachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\nfunction createDetachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.removedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.addedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\nfunction onWindowResize() {\n const dpr = window.devicePixelRatio;\n if (dpr === oldDevicePixelRatio) {\n return;\n }\n oldDevicePixelRatio = dpr;\n drpListeningCharts.forEach((resize, chart) => {\n if (chart.currentDevicePixelRatio !== dpr) {\n resize();\n }\n });\n}\nfunction listenDevicePixelRatioChanges(chart, resize) {\n if (!drpListeningCharts.size) {\n window.addEventListener('resize', onWindowResize);\n }\n drpListeningCharts.set(chart, resize);\n}\nfunction unlistenDevicePixelRatioChanges(chart) {\n drpListeningCharts.delete(chart);\n if (!drpListeningCharts.size) {\n window.removeEventListener('resize', onWindowResize);\n }\n}\nfunction createResizeObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n return;\n }\n const resize = throttled((width, height) => {\n const w = container.clientWidth;\n listener(width, height);\n if (w < container.clientWidth) {\n listener();\n }\n }, window);\n const observer = new ResizeObserver(entries => {\n const entry = entries[0];\n const width = entry.contentRect.width;\n const height = entry.contentRect.height;\n if (width === 0 && height === 0) {\n return;\n }\n resize(width, height);\n });\n observer.observe(container);\n listenDevicePixelRatioChanges(chart, resize);\n return observer;\n}\nfunction releaseObserver(chart, type, observer) {\n if (observer) {\n observer.disconnect();\n }\n if (type === 'resize') {\n unlistenDevicePixelRatioChanges(chart);\n }\n}\nfunction createProxyAndListen(chart, type, listener) {\n const canvas = chart.canvas;\n const proxy = throttled((event) => {\n if (chart.ctx !== null) {\n listener(fromNativeEvent(event, chart));\n }\n }, chart, (args) => {\n const event = args[0];\n return [event, event.offsetX, event.offsetY];\n });\n addListener(canvas, type, proxy);\n return proxy;\n}\nclass DomPlatform extends BasePlatform {\n acquireContext(canvas, aspectRatio) {\n const context = canvas && canvas.getContext && canvas.getContext('2d');\n if (context && context.canvas === canvas) {\n initCanvas(canvas, aspectRatio);\n return context;\n }\n return null;\n }\n releaseContext(context) {\n const canvas = context.canvas;\n if (!canvas[EXPANDO_KEY]) {\n return false;\n }\n const initial = canvas[EXPANDO_KEY].initial;\n ['height', 'width'].forEach((prop) => {\n const value = initial[prop];\n if (isNullOrUndef(value)) {\n canvas.removeAttribute(prop);\n } else {\n canvas.setAttribute(prop, value);\n }\n });\n const style = initial.style || {};\n Object.keys(style).forEach((key) => {\n canvas.style[key] = style[key];\n });\n canvas.width = canvas.width;\n delete canvas[EXPANDO_KEY];\n return true;\n }\n addEventListener(chart, type, listener) {\n this.removeEventListener(chart, type);\n const proxies = chart.$proxies || (chart.$proxies = {});\n const handlers = {\n attach: createAttachObserver,\n detach: createDetachObserver,\n resize: createResizeObserver\n };\n const handler = handlers[type] || createProxyAndListen;\n proxies[type] = handler(chart, type, listener);\n }\n removeEventListener(chart, type) {\n const proxies = chart.$proxies || (chart.$proxies = {});\n const proxy = proxies[type];\n if (!proxy) {\n return;\n }\n const handlers = {\n attach: releaseObserver,\n detach: releaseObserver,\n resize: releaseObserver\n };\n const handler = handlers[type] || removeListener;\n handler(chart, type, proxy);\n proxies[type] = undefined;\n }\n getDevicePixelRatio() {\n return window.devicePixelRatio;\n }\n getMaximumSize(canvas, width, height, aspectRatio) {\n return getMaximumSize(canvas, width, height, aspectRatio);\n }\n isAttached(canvas) {\n const container = _getParentNode(canvas);\n return !!(container && container.isConnected);\n }\n}\n\nfunction _detectPlatform(canvas) {\n if (!_isDomSupported() || (typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas)) {\n return BasicPlatform;\n }\n return DomPlatform;\n}\n\nclass PluginService {\n constructor() {\n this._init = [];\n }\n notify(chart, hook, args, filter) {\n if (hook === 'beforeInit') {\n this._init = this._createDescriptors(chart, true);\n this._notify(this._init, chart, 'install');\n }\n const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n const result = this._notify(descriptors, chart, hook, args);\n if (hook === 'afterDestroy') {\n this._notify(descriptors, chart, 'stop');\n this._notify(this._init, chart, 'uninstall');\n }\n return result;\n }\n _notify(descriptors, chart, hook, args) {\n args = args || {};\n for (const descriptor of descriptors) {\n const plugin = descriptor.plugin;\n const method = plugin[hook];\n const params = [chart, args, descriptor.options];\n if (callback(method, params, plugin) === false && args.cancelable) {\n return false;\n }\n }\n return true;\n }\n invalidate() {\n if (!isNullOrUndef(this._cache)) {\n this._oldCache = this._cache;\n this._cache = undefined;\n }\n }\n _descriptors(chart) {\n if (this._cache) {\n return this._cache;\n }\n const descriptors = this._cache = this._createDescriptors(chart);\n this._notifyStateChanges(chart);\n return descriptors;\n }\n _createDescriptors(chart, all) {\n const config = chart && chart.config;\n const options = valueOrDefault(config.options && config.options.plugins, {});\n const plugins = allPlugins(config);\n return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n }\n _notifyStateChanges(chart) {\n const previousDescriptors = this._oldCache || [];\n const descriptors = this._cache;\n const diff = (a, b) => a.filter(x => !b.some(y => x.plugin.id === y.plugin.id));\n this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n }\n}\nfunction allPlugins(config) {\n const localIds = {};\n const plugins = [];\n const keys = Object.keys(registry.plugins.items);\n for (let i = 0; i < keys.length; i++) {\n plugins.push(registry.getPlugin(keys[i]));\n }\n const local = config.plugins || [];\n for (let i = 0; i < local.length; i++) {\n const plugin = local[i];\n if (plugins.indexOf(plugin) === -1) {\n plugins.push(plugin);\n localIds[plugin.id] = true;\n }\n }\n return {plugins, localIds};\n}\nfunction getOpts(options, all) {\n if (!all && options === false) {\n return null;\n }\n if (options === true) {\n return {};\n }\n return options;\n}\nfunction createDescriptors(chart, {plugins, localIds}, options, all) {\n const result = [];\n const context = chart.getContext();\n for (const plugin of plugins) {\n const id = plugin.id;\n const opts = getOpts(options[id], all);\n if (opts === null) {\n continue;\n }\n result.push({\n plugin,\n options: pluginOpts(chart.config, {plugin, local: localIds[id]}, opts, context)\n });\n }\n return result;\n}\nfunction pluginOpts(config, {plugin, local}, opts, context) {\n const keys = config.pluginScopeKeys(plugin);\n const scopes = config.getOptionScopes(opts, keys);\n if (local && plugin.defaults) {\n scopes.push(plugin.defaults);\n }\n return config.createResolver(scopes, context, [''], {\n scriptable: false,\n indexable: false,\n allKeys: true\n });\n}\n\nfunction getIndexAxis(type, options) {\n const datasetDefaults = defaults.datasets[type] || {};\n const datasetOptions = (options.datasets || {})[type] || {};\n return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n let axis = id;\n if (id === '_index_') {\n axis = indexAxis;\n } else if (id === '_value_') {\n axis = indexAxis === 'x' ? 'y' : 'x';\n }\n return axis;\n}\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n return axis === indexAxis ? '_index_' : '_value_';\n}\nfunction axisFromPosition(position) {\n if (position === 'top' || position === 'bottom') {\n return 'x';\n }\n if (position === 'left' || position === 'right') {\n return 'y';\n }\n}\nfunction determineAxis(id, scaleOptions) {\n if (id === 'x' || id === 'y') {\n return id;\n }\n return scaleOptions.axis || axisFromPosition(scaleOptions.position) || id.charAt(0).toLowerCase();\n}\nfunction mergeScaleConfig(config, options) {\n const chartDefaults = overrides[config.type] || {scales: {}};\n const configScales = options.scales || {};\n const chartIndexAxis = getIndexAxis(config.type, options);\n const firstIDs = Object.create(null);\n const scales = Object.create(null);\n Object.keys(configScales).forEach(id => {\n const scaleConf = configScales[id];\n if (!isObject(scaleConf)) {\n return console.error(`Invalid scale configuration for scale: ${id}`);\n }\n if (scaleConf._proxy) {\n return console.warn(`Ignoring resolver passed as options for scale: ${id}`);\n }\n const axis = determineAxis(id, scaleConf);\n const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n const defaultScaleOptions = chartDefaults.scales || {};\n firstIDs[axis] = firstIDs[axis] || id;\n scales[id] = mergeIf(Object.create(null), [{axis}, scaleConf, defaultScaleOptions[axis], defaultScaleOptions[defaultId]]);\n });\n config.data.datasets.forEach(dataset => {\n const type = dataset.type || config.type;\n const indexAxis = dataset.indexAxis || getIndexAxis(type, options);\n const datasetDefaults = overrides[type] || {};\n const defaultScaleOptions = datasetDefaults.scales || {};\n Object.keys(defaultScaleOptions).forEach(defaultID => {\n const axis = getAxisFromDefaultScaleID(defaultID, indexAxis);\n const id = dataset[axis + 'AxisID'] || firstIDs[axis] || axis;\n scales[id] = scales[id] || Object.create(null);\n mergeIf(scales[id], [{axis}, configScales[id], defaultScaleOptions[defaultID]]);\n });\n });\n Object.keys(scales).forEach(key => {\n const scale = scales[key];\n mergeIf(scale, [defaults.scales[scale.type], defaults.scale]);\n });\n return scales;\n}\nfunction initOptions(config) {\n const options = config.options || (config.options = {});\n options.plugins = valueOrDefault(options.plugins, {});\n options.scales = mergeScaleConfig(config, options);\n}\nfunction initData(data) {\n data = data || {};\n data.datasets = data.datasets || [];\n data.labels = data.labels || [];\n return data;\n}\nfunction initConfig(config) {\n config = config || {};\n config.data = initData(config.data);\n initOptions(config);\n return config;\n}\nconst keyCache = new Map();\nconst keysCached = new Set();\nfunction cachedKeys(cacheKey, generate) {\n let keys = keyCache.get(cacheKey);\n if (!keys) {\n keys = generate();\n keyCache.set(cacheKey, keys);\n keysCached.add(keys);\n }\n return keys;\n}\nconst addIfFound = (set, obj, key) => {\n const opts = resolveObjectKey(obj, key);\n if (opts !== undefined) {\n set.add(opts);\n }\n};\nclass Config {\n constructor(config) {\n this._config = initConfig(config);\n this._scopeCache = new Map();\n this._resolverCache = new Map();\n }\n get platform() {\n return this._config.platform;\n }\n get type() {\n return this._config.type;\n }\n set type(type) {\n this._config.type = type;\n }\n get data() {\n return this._config.data;\n }\n set data(data) {\n this._config.data = initData(data);\n }\n get options() {\n return this._config.options;\n }\n set options(options) {\n this._config.options = options;\n }\n get plugins() {\n return this._config.plugins;\n }\n update() {\n const config = this._config;\n this.clearCache();\n initOptions(config);\n }\n clearCache() {\n this._scopeCache.clear();\n this._resolverCache.clear();\n }\n datasetScopeKeys(datasetType) {\n return cachedKeys(datasetType,\n () => [[\n `datasets.${datasetType}`,\n ''\n ]]);\n }\n datasetAnimationScopeKeys(datasetType, transition) {\n return cachedKeys(`${datasetType}.transition.${transition}`,\n () => [\n [\n `datasets.${datasetType}.transitions.${transition}`,\n `transitions.${transition}`,\n ],\n [\n `datasets.${datasetType}`,\n ''\n ]\n ]);\n }\n datasetElementScopeKeys(datasetType, elementType) {\n return cachedKeys(`${datasetType}-${elementType}`,\n () => [[\n `datasets.${datasetType}.elements.${elementType}`,\n `datasets.${datasetType}`,\n `elements.${elementType}`,\n ''\n ]]);\n }\n pluginScopeKeys(plugin) {\n const id = plugin.id;\n const type = this.type;\n return cachedKeys(`${type}-plugin-${id}`,\n () => [[\n `plugins.${id}`,\n ...plugin.additionalOptionScopes || [],\n ]]);\n }\n _cachedScopes(mainScope, resetCache) {\n const _scopeCache = this._scopeCache;\n let cache = _scopeCache.get(mainScope);\n if (!cache || resetCache) {\n cache = new Map();\n _scopeCache.set(mainScope, cache);\n }\n return cache;\n }\n getOptionScopes(mainScope, keyLists, resetCache) {\n const {options, type} = this;\n const cache = this._cachedScopes(mainScope, resetCache);\n const cached = cache.get(keyLists);\n if (cached) {\n return cached;\n }\n const scopes = new Set();\n keyLists.forEach(keys => {\n if (mainScope) {\n scopes.add(mainScope);\n keys.forEach(key => addIfFound(scopes, mainScope, key));\n }\n keys.forEach(key => addIfFound(scopes, options, key));\n keys.forEach(key => addIfFound(scopes, overrides[type] || {}, key));\n keys.forEach(key => addIfFound(scopes, defaults, key));\n keys.forEach(key => addIfFound(scopes, descriptors, key));\n });\n const array = Array.from(scopes);\n if (array.length === 0) {\n array.push(Object.create(null));\n }\n if (keysCached.has(keyLists)) {\n cache.set(keyLists, array);\n }\n return array;\n }\n chartOptionScopes() {\n const {options, type} = this;\n return [\n options,\n overrides[type] || {},\n defaults.datasets[type] || {},\n {type},\n defaults,\n descriptors\n ];\n }\n resolveNamedOptions(scopes, names, context, prefixes = ['']) {\n const result = {$shared: true};\n const {resolver, subPrefixes} = getResolver(this._resolverCache, scopes, prefixes);\n let options = resolver;\n if (needContext(resolver, names)) {\n result.$shared = false;\n context = isFunction(context) ? context() : context;\n const subResolver = this.createResolver(scopes, context, subPrefixes);\n options = _attachContext(resolver, context, subResolver);\n }\n for (const prop of names) {\n result[prop] = options[prop];\n }\n return result;\n }\n createResolver(scopes, context, prefixes = [''], descriptorDefaults) {\n const {resolver} = getResolver(this._resolverCache, scopes, prefixes);\n return isObject(context)\n ? _attachContext(resolver, context, undefined, descriptorDefaults)\n : resolver;\n }\n}\nfunction getResolver(resolverCache, scopes, prefixes) {\n let cache = resolverCache.get(scopes);\n if (!cache) {\n cache = new Map();\n resolverCache.set(scopes, cache);\n }\n const cacheKey = prefixes.join();\n let cached = cache.get(cacheKey);\n if (!cached) {\n const resolver = _createResolver(scopes, prefixes);\n cached = {\n resolver,\n subPrefixes: prefixes.filter(p => !p.toLowerCase().includes('hover'))\n };\n cache.set(cacheKey, cached);\n }\n return cached;\n}\nconst hasFunction = value => isObject(value)\n && Object.getOwnPropertyNames(value).reduce((acc, key) => acc || isFunction(value[key]), false);\nfunction needContext(proxy, names) {\n const {isScriptable, isIndexable} = _descriptors(proxy);\n for (const prop of names) {\n const scriptable = isScriptable(prop);\n const indexable = isIndexable(prop);\n const value = (indexable || scriptable) && proxy[prop];\n if ((scriptable && (isFunction(value) || hasFunction(value)))\n || (indexable && isArray(value))) {\n return true;\n }\n }\n return false;\n}\n\nvar version = \"3.9.1\";\n\nconst KNOWN_POSITIONS = ['top', 'bottom', 'left', 'right', 'chartArea'];\nfunction positionIsHorizontal(position, axis) {\n return position === 'top' || position === 'bottom' || (KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x');\n}\nfunction compare2Level(l1, l2) {\n return function(a, b) {\n return a[l1] === b[l1]\n ? a[l2] - b[l2]\n : a[l1] - b[l1];\n };\n}\nfunction onAnimationsComplete(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n chart.notifyPlugins('afterRender');\n callback(animationOptions && animationOptions.onComplete, [context], chart);\n}\nfunction onAnimationProgress(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n callback(animationOptions && animationOptions.onProgress, [context], chart);\n}\nfunction getCanvas(item) {\n if (_isDomSupported() && typeof item === 'string') {\n item = document.getElementById(item);\n } else if (item && item.length) {\n item = item[0];\n }\n if (item && item.canvas) {\n item = item.canvas;\n }\n return item;\n}\nconst instances = {};\nconst getChart = (key) => {\n const canvas = getCanvas(key);\n return Object.values(instances).filter((c) => c.canvas === canvas).pop();\n};\nfunction moveNumericKeys(obj, start, move) {\n const keys = Object.keys(obj);\n for (const key of keys) {\n const intKey = +key;\n if (intKey >= start) {\n const value = obj[key];\n delete obj[key];\n if (move > 0 || intKey > start) {\n obj[intKey + move] = value;\n }\n }\n }\n}\nfunction determineLastEvent(e, lastEvent, inChartArea, isClick) {\n if (!inChartArea || e.type === 'mouseout') {\n return null;\n }\n if (isClick) {\n return lastEvent;\n }\n return e;\n}\nclass Chart {\n constructor(item, userConfig) {\n const config = this.config = new Config(userConfig);\n const initialCanvas = getCanvas(item);\n const existingChart = getChart(initialCanvas);\n if (existingChart) {\n throw new Error(\n 'Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' +\n\t\t\t\t' must be destroyed before the canvas with ID \\'' + existingChart.canvas.id + '\\' can be reused.'\n );\n }\n const options = config.createResolver(config.chartOptionScopes(), this.getContext());\n this.platform = new (config.platform || _detectPlatform(initialCanvas))();\n this.platform.updateConfig(config);\n const context = this.platform.acquireContext(initialCanvas, options.aspectRatio);\n const canvas = context && context.canvas;\n const height = canvas && canvas.height;\n const width = canvas && canvas.width;\n this.id = uid();\n this.ctx = context;\n this.canvas = canvas;\n this.width = width;\n this.height = height;\n this._options = options;\n this._aspectRatio = this.aspectRatio;\n this._layers = [];\n this._metasets = [];\n this._stacks = undefined;\n this.boxes = [];\n this.currentDevicePixelRatio = undefined;\n this.chartArea = undefined;\n this._active = [];\n this._lastEvent = undefined;\n this._listeners = {};\n this._responsiveListeners = undefined;\n this._sortedMetasets = [];\n this.scales = {};\n this._plugins = new PluginService();\n this.$proxies = {};\n this._hiddenIndices = {};\n this.attached = false;\n this._animationsDisabled = undefined;\n this.$context = undefined;\n this._doResize = debounce(mode => this.update(mode), options.resizeDelay || 0);\n this._dataChanges = [];\n instances[this.id] = this;\n if (!context || !canvas) {\n console.error(\"Failed to create chart: can't acquire context from the given item\");\n return;\n }\n animator.listen(this, 'complete', onAnimationsComplete);\n animator.listen(this, 'progress', onAnimationProgress);\n this._initialize();\n if (this.attached) {\n this.update();\n }\n }\n get aspectRatio() {\n const {options: {aspectRatio, maintainAspectRatio}, width, height, _aspectRatio} = this;\n if (!isNullOrUndef(aspectRatio)) {\n return aspectRatio;\n }\n if (maintainAspectRatio && _aspectRatio) {\n return _aspectRatio;\n }\n return height ? width / height : null;\n }\n get data() {\n return this.config.data;\n }\n set data(data) {\n this.config.data = data;\n }\n get options() {\n return this._options;\n }\n set options(options) {\n this.config.options = options;\n }\n _initialize() {\n this.notifyPlugins('beforeInit');\n if (this.options.responsive) {\n this.resize();\n } else {\n retinaScale(this, this.options.devicePixelRatio);\n }\n this.bindEvents();\n this.notifyPlugins('afterInit');\n return this;\n }\n clear() {\n clearCanvas(this.canvas, this.ctx);\n return this;\n }\n stop() {\n animator.stop(this);\n return this;\n }\n resize(width, height) {\n if (!animator.running(this)) {\n this._resize(width, height);\n } else {\n this._resizeBeforeDraw = {width, height};\n }\n }\n _resize(width, height) {\n const options = this.options;\n const canvas = this.canvas;\n const aspectRatio = options.maintainAspectRatio && this.aspectRatio;\n const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio);\n const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio();\n const mode = this.width ? 'resize' : 'attach';\n this.width = newSize.width;\n this.height = newSize.height;\n this._aspectRatio = this.aspectRatio;\n if (!retinaScale(this, newRatio, true)) {\n return;\n }\n this.notifyPlugins('resize', {size: newSize});\n callback(options.onResize, [this, newSize], this);\n if (this.attached) {\n if (this._doResize(mode)) {\n this.render();\n }\n }\n }\n ensureScalesHaveIDs() {\n const options = this.options;\n const scalesOptions = options.scales || {};\n each(scalesOptions, (axisOptions, axisID) => {\n axisOptions.id = axisID;\n });\n }\n buildOrUpdateScales() {\n const options = this.options;\n const scaleOpts = options.scales;\n const scales = this.scales;\n const updated = Object.keys(scales).reduce((obj, id) => {\n obj[id] = false;\n return obj;\n }, {});\n let items = [];\n if (scaleOpts) {\n items = items.concat(\n Object.keys(scaleOpts).map((id) => {\n const scaleOptions = scaleOpts[id];\n const axis = determineAxis(id, scaleOptions);\n const isRadial = axis === 'r';\n const isHorizontal = axis === 'x';\n return {\n options: scaleOptions,\n dposition: isRadial ? 'chartArea' : isHorizontal ? 'bottom' : 'left',\n dtype: isRadial ? 'radialLinear' : isHorizontal ? 'category' : 'linear'\n };\n })\n );\n }\n each(items, (item) => {\n const scaleOptions = item.options;\n const id = scaleOptions.id;\n const axis = determineAxis(id, scaleOptions);\n const scaleType = valueOrDefault(scaleOptions.type, item.dtype);\n if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n scaleOptions.position = item.dposition;\n }\n updated[id] = true;\n let scale = null;\n if (id in scales && scales[id].type === scaleType) {\n scale = scales[id];\n } else {\n const scaleClass = registry.getScale(scaleType);\n scale = new scaleClass({\n id,\n type: scaleType,\n ctx: this.ctx,\n chart: this\n });\n scales[scale.id] = scale;\n }\n scale.init(scaleOptions, options);\n });\n each(updated, (hasUpdated, id) => {\n if (!hasUpdated) {\n delete scales[id];\n }\n });\n each(scales, (scale) => {\n layouts.configure(this, scale, scale.options);\n layouts.addBox(this, scale);\n });\n }\n _updateMetasets() {\n const metasets = this._metasets;\n const numData = this.data.datasets.length;\n const numMeta = metasets.length;\n metasets.sort((a, b) => a.index - b.index);\n if (numMeta > numData) {\n for (let i = numData; i < numMeta; ++i) {\n this._destroyDatasetMeta(i);\n }\n metasets.splice(numData, numMeta - numData);\n }\n this._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index'));\n }\n _removeUnreferencedMetasets() {\n const {_metasets: metasets, data: {datasets}} = this;\n if (metasets.length > datasets.length) {\n delete this._stacks;\n }\n metasets.forEach((meta, index) => {\n if (datasets.filter(x => x === meta._dataset).length === 0) {\n this._destroyDatasetMeta(index);\n }\n });\n }\n buildOrUpdateControllers() {\n const newControllers = [];\n const datasets = this.data.datasets;\n let i, ilen;\n this._removeUnreferencedMetasets();\n for (i = 0, ilen = datasets.length; i < ilen; i++) {\n const dataset = datasets[i];\n let meta = this.getDatasetMeta(i);\n const type = dataset.type || this.config.type;\n if (meta.type && meta.type !== type) {\n this._destroyDatasetMeta(i);\n meta = this.getDatasetMeta(i);\n }\n meta.type = type;\n meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options);\n meta.order = dataset.order || 0;\n meta.index = i;\n meta.label = '' + dataset.label;\n meta.visible = this.isDatasetVisible(i);\n if (meta.controller) {\n meta.controller.updateIndex(i);\n meta.controller.linkScales();\n } else {\n const ControllerClass = registry.getController(type);\n const {datasetElementType, dataElementType} = defaults.datasets[type];\n Object.assign(ControllerClass.prototype, {\n dataElementType: registry.getElement(dataElementType),\n datasetElementType: datasetElementType && registry.getElement(datasetElementType)\n });\n meta.controller = new ControllerClass(this, i);\n newControllers.push(meta.controller);\n }\n }\n this._updateMetasets();\n return newControllers;\n }\n _resetElements() {\n each(this.data.datasets, (dataset, datasetIndex) => {\n this.getDatasetMeta(datasetIndex).controller.reset();\n }, this);\n }\n reset() {\n this._resetElements();\n this.notifyPlugins('reset');\n }\n update(mode) {\n const config = this.config;\n config.update();\n const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());\n const animsDisabled = this._animationsDisabled = !options.animation;\n this._updateScales();\n this._checkEventBindings();\n this._updateHiddenIndices();\n this._plugins.invalidate();\n if (this.notifyPlugins('beforeUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n const newControllers = this.buildOrUpdateControllers();\n this.notifyPlugins('beforeElementsUpdate');\n let minPadding = 0;\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; i++) {\n const {controller} = this.getDatasetMeta(i);\n const reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n controller.buildOrUpdateElements(reset);\n minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n }\n minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0;\n this._updateLayout(minPadding);\n if (!animsDisabled) {\n each(newControllers, (controller) => {\n controller.reset();\n });\n }\n this._updateDatasets(mode);\n this.notifyPlugins('afterUpdate', {mode});\n this._layers.sort(compare2Level('z', '_idx'));\n const {_active, _lastEvent} = this;\n if (_lastEvent) {\n this._eventHandler(_lastEvent, true);\n } else if (_active.length) {\n this._updateHoverStyles(_active, _active, true);\n }\n this.render();\n }\n _updateScales() {\n each(this.scales, (scale) => {\n layouts.removeBox(this, scale);\n });\n this.ensureScalesHaveIDs();\n this.buildOrUpdateScales();\n }\n _checkEventBindings() {\n const options = this.options;\n const existingEvents = new Set(Object.keys(this._listeners));\n const newEvents = new Set(options.events);\n if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {\n this.unbindEvents();\n this.bindEvents();\n }\n }\n _updateHiddenIndices() {\n const {_hiddenIndices} = this;\n const changes = this._getUniformDataChanges() || [];\n for (const {method, start, count} of changes) {\n const move = method === '_removeElements' ? -count : count;\n moveNumericKeys(_hiddenIndices, start, move);\n }\n }\n _getUniformDataChanges() {\n const _dataChanges = this._dataChanges;\n if (!_dataChanges || !_dataChanges.length) {\n return;\n }\n this._dataChanges = [];\n const datasetCount = this.data.datasets.length;\n const makeSet = (idx) => new Set(\n _dataChanges\n .filter(c => c[0] === idx)\n .map((c, i) => i + ',' + c.splice(1).join(','))\n );\n const changeSet = makeSet(0);\n for (let i = 1; i < datasetCount; i++) {\n if (!setsEqual(changeSet, makeSet(i))) {\n return;\n }\n }\n return Array.from(changeSet)\n .map(c => c.split(','))\n .map(a => ({method: a[1], start: +a[2], count: +a[3]}));\n }\n _updateLayout(minPadding) {\n if (this.notifyPlugins('beforeLayout', {cancelable: true}) === false) {\n return;\n }\n layouts.update(this, this.width, this.height, minPadding);\n const area = this.chartArea;\n const noArea = area.width <= 0 || area.height <= 0;\n this._layers = [];\n each(this.boxes, (box) => {\n if (noArea && box.position === 'chartArea') {\n return;\n }\n if (box.configure) {\n box.configure();\n }\n this._layers.push(...box._layers());\n }, this);\n this._layers.forEach((item, index) => {\n item._idx = index;\n });\n this.notifyPlugins('afterLayout');\n }\n _updateDatasets(mode) {\n if (this.notifyPlugins('beforeDatasetsUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this.getDatasetMeta(i).controller.configure();\n }\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._updateDataset(i, isFunction(mode) ? mode({datasetIndex: i}) : mode);\n }\n this.notifyPlugins('afterDatasetsUpdate', {mode});\n }\n _updateDataset(index, mode) {\n const meta = this.getDatasetMeta(index);\n const args = {meta, index, mode, cancelable: true};\n if (this.notifyPlugins('beforeDatasetUpdate', args) === false) {\n return;\n }\n meta.controller._update(mode);\n args.cancelable = false;\n this.notifyPlugins('afterDatasetUpdate', args);\n }\n render() {\n if (this.notifyPlugins('beforeRender', {cancelable: true}) === false) {\n return;\n }\n if (animator.has(this)) {\n if (this.attached && !animator.running(this)) {\n animator.start(this);\n }\n } else {\n this.draw();\n onAnimationsComplete({chart: this});\n }\n }\n draw() {\n let i;\n if (this._resizeBeforeDraw) {\n const {width, height} = this._resizeBeforeDraw;\n this._resize(width, height);\n this._resizeBeforeDraw = null;\n }\n this.clear();\n if (this.width <= 0 || this.height <= 0) {\n return;\n }\n if (this.notifyPlugins('beforeDraw', {cancelable: true}) === false) {\n return;\n }\n const layers = this._layers;\n for (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\n layers[i].draw(this.chartArea);\n }\n this._drawDatasets();\n for (; i < layers.length; ++i) {\n layers[i].draw(this.chartArea);\n }\n this.notifyPlugins('afterDraw');\n }\n _getSortedDatasetMetas(filterVisible) {\n const metasets = this._sortedMetasets;\n const result = [];\n let i, ilen;\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n const meta = metasets[i];\n if (!filterVisible || meta.visible) {\n result.push(meta);\n }\n }\n return result;\n }\n getSortedVisibleDatasetMetas() {\n return this._getSortedDatasetMetas(true);\n }\n _drawDatasets() {\n if (this.notifyPlugins('beforeDatasetsDraw', {cancelable: true}) === false) {\n return;\n }\n const metasets = this.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n this._drawDataset(metasets[i]);\n }\n this.notifyPlugins('afterDatasetsDraw');\n }\n _drawDataset(meta) {\n const ctx = this.ctx;\n const clip = meta._clip;\n const useClip = !clip.disabled;\n const area = this.chartArea;\n const args = {\n meta,\n index: meta.index,\n cancelable: true\n };\n if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n return;\n }\n if (useClip) {\n clipArea(ctx, {\n left: clip.left === false ? 0 : area.left - clip.left,\n right: clip.right === false ? this.width : area.right + clip.right,\n top: clip.top === false ? 0 : area.top - clip.top,\n bottom: clip.bottom === false ? this.height : area.bottom + clip.bottom\n });\n }\n meta.controller.draw();\n if (useClip) {\n unclipArea(ctx);\n }\n args.cancelable = false;\n this.notifyPlugins('afterDatasetDraw', args);\n }\n isPointInArea(point) {\n return _isPointInArea(point, this.chartArea, this._minPadding);\n }\n getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n const method = Interaction.modes[mode];\n if (typeof method === 'function') {\n return method(this, e, options, useFinalPosition);\n }\n return [];\n }\n getDatasetMeta(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n const metasets = this._metasets;\n let meta = metasets.filter(x => x && x._dataset === dataset).pop();\n if (!meta) {\n meta = {\n type: null,\n data: [],\n dataset: null,\n controller: null,\n hidden: null,\n xAxisID: null,\n yAxisID: null,\n order: dataset && dataset.order || 0,\n index: datasetIndex,\n _dataset: dataset,\n _parsed: [],\n _sorted: false\n };\n metasets.push(meta);\n }\n return meta;\n }\n getContext() {\n return this.$context || (this.$context = createContext(null, {chart: this, type: 'chart'}));\n }\n getVisibleDatasetCount() {\n return this.getSortedVisibleDatasetMetas().length;\n }\n isDatasetVisible(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n if (!dataset) {\n return false;\n }\n const meta = this.getDatasetMeta(datasetIndex);\n return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n }\n setDatasetVisibility(datasetIndex, visible) {\n const meta = this.getDatasetMeta(datasetIndex);\n meta.hidden = !visible;\n }\n toggleDataVisibility(index) {\n this._hiddenIndices[index] = !this._hiddenIndices[index];\n }\n getDataVisibility(index) {\n return !this._hiddenIndices[index];\n }\n _updateVisibility(datasetIndex, dataIndex, visible) {\n const mode = visible ? 'show' : 'hide';\n const meta = this.getDatasetMeta(datasetIndex);\n const anims = meta.controller._resolveAnimations(undefined, mode);\n if (defined(dataIndex)) {\n meta.data[dataIndex].hidden = !visible;\n this.update();\n } else {\n this.setDatasetVisibility(datasetIndex, visible);\n anims.update(meta, {visible});\n this.update((ctx) => ctx.datasetIndex === datasetIndex ? mode : undefined);\n }\n }\n hide(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, false);\n }\n show(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, true);\n }\n _destroyDatasetMeta(datasetIndex) {\n const meta = this._metasets[datasetIndex];\n if (meta && meta.controller) {\n meta.controller._destroy();\n }\n delete this._metasets[datasetIndex];\n }\n _stop() {\n let i, ilen;\n this.stop();\n animator.remove(this);\n for (i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._destroyDatasetMeta(i);\n }\n }\n destroy() {\n this.notifyPlugins('beforeDestroy');\n const {canvas, ctx} = this;\n this._stop();\n this.config.clearCache();\n if (canvas) {\n this.unbindEvents();\n clearCanvas(canvas, ctx);\n this.platform.releaseContext(ctx);\n this.canvas = null;\n this.ctx = null;\n }\n this.notifyPlugins('destroy');\n delete instances[this.id];\n this.notifyPlugins('afterDestroy');\n }\n toBase64Image(...args) {\n return this.canvas.toDataURL(...args);\n }\n bindEvents() {\n this.bindUserEvents();\n if (this.options.responsive) {\n this.bindResponsiveEvents();\n } else {\n this.attached = true;\n }\n }\n bindUserEvents() {\n const listeners = this._listeners;\n const platform = this.platform;\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const listener = (e, x, y) => {\n e.offsetX = x;\n e.offsetY = y;\n this._eventHandler(e);\n };\n each(this.options.events, (type) => _add(type, listener));\n }\n bindResponsiveEvents() {\n if (!this._responsiveListeners) {\n this._responsiveListeners = {};\n }\n const listeners = this._responsiveListeners;\n const platform = this.platform;\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const _remove = (type, listener) => {\n if (listeners[type]) {\n platform.removeEventListener(this, type, listener);\n delete listeners[type];\n }\n };\n const listener = (width, height) => {\n if (this.canvas) {\n this.resize(width, height);\n }\n };\n let detached;\n const attached = () => {\n _remove('attach', attached);\n this.attached = true;\n this.resize();\n _add('resize', listener);\n _add('detach', detached);\n };\n detached = () => {\n this.attached = false;\n _remove('resize', listener);\n this._stop();\n this._resize(0, 0);\n _add('attach', attached);\n };\n if (platform.isAttached(this.canvas)) {\n attached();\n } else {\n detached();\n }\n }\n unbindEvents() {\n each(this._listeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._listeners = {};\n each(this._responsiveListeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._responsiveListeners = undefined;\n }\n updateHoverStyle(items, mode, enabled) {\n const prefix = enabled ? 'set' : 'remove';\n let meta, item, i, ilen;\n if (mode === 'dataset') {\n meta = this.getDatasetMeta(items[0].datasetIndex);\n meta.controller['_' + prefix + 'DatasetHoverStyle']();\n }\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n item = items[i];\n const controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n if (controller) {\n controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n }\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements) {\n const lastActive = this._active || [];\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('No dataset found at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(active, lastActive);\n if (changed) {\n this._active = active;\n this._lastEvent = null;\n this._updateHoverStyles(active, lastActive);\n }\n }\n notifyPlugins(hook, args, filter) {\n return this._plugins.notify(this, hook, args, filter);\n }\n _updateHoverStyles(active, lastActive, replay) {\n const hoverOptions = this.options.hover;\n const diff = (a, b) => a.filter(x => !b.some(y => x.datasetIndex === y.datasetIndex && x.index === y.index));\n const deactivated = diff(lastActive, active);\n const activated = replay ? active : diff(active, lastActive);\n if (deactivated.length) {\n this.updateHoverStyle(deactivated, hoverOptions.mode, false);\n }\n if (activated.length && hoverOptions.mode) {\n this.updateHoverStyle(activated, hoverOptions.mode, true);\n }\n }\n _eventHandler(e, replay) {\n const args = {\n event: e,\n replay,\n cancelable: true,\n inChartArea: this.isPointInArea(e)\n };\n const eventFilter = (plugin) => (plugin.options.events || this.options.events).includes(e.native.type);\n if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n return;\n }\n const changed = this._handleEvent(e, replay, args.inChartArea);\n args.cancelable = false;\n this.notifyPlugins('afterEvent', args, eventFilter);\n if (changed || args.changed) {\n this.render();\n }\n return this;\n }\n _handleEvent(e, replay, inChartArea) {\n const {_active: lastActive = [], options} = this;\n const useFinalPosition = replay;\n const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);\n const isClick = _isClickEvent(e);\n const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick);\n if (inChartArea) {\n this._lastEvent = null;\n callback(options.onHover, [e, active, this], this);\n if (isClick) {\n callback(options.onClick, [e, active, this], this);\n }\n }\n const changed = !_elementsEqual(active, lastActive);\n if (changed || replay) {\n this._active = active;\n this._updateHoverStyles(active, lastActive, replay);\n }\n this._lastEvent = lastEvent;\n return changed;\n }\n _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const hoverOptions = this.options.hover;\n return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n }\n}\nconst invalidatePlugins = () => each(Chart.instances, (chart) => chart._plugins.invalidate());\nconst enumerable = true;\nObject.defineProperties(Chart, {\n defaults: {\n enumerable,\n value: defaults\n },\n instances: {\n enumerable,\n value: instances\n },\n overrides: {\n enumerable,\n value: overrides\n },\n registry: {\n enumerable,\n value: registry\n },\n version: {\n enumerable,\n value: version\n },\n getChart: {\n enumerable,\n value: getChart\n },\n register: {\n enumerable,\n value: (...items) => {\n registry.add(...items);\n invalidatePlugins();\n }\n },\n unregister: {\n enumerable,\n value: (...items) => {\n registry.remove(...items);\n invalidatePlugins();\n }\n }\n});\n\nfunction clipArc(ctx, element, endAngle) {\n const {startAngle, pixelMargin, x, y, outerRadius, innerRadius} = element;\n let angleMargin = pixelMargin / outerRadius;\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n if (innerRadius > pixelMargin) {\n angleMargin = pixelMargin / innerRadius;\n ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true);\n } else {\n ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI);\n }\n ctx.closePath();\n ctx.clip();\n}\nfunction toRadiusCorners(value) {\n return _readValueToProps(value, ['outerStart', 'outerEnd', 'innerStart', 'innerEnd']);\n}\nfunction parseBorderRadius$1(arc, innerRadius, outerRadius, angleDelta) {\n const o = toRadiusCorners(arc.options.borderRadius);\n const halfThickness = (outerRadius - innerRadius) / 2;\n const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2);\n const computeOuterLimit = (val) => {\n const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2;\n return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit));\n };\n return {\n outerStart: computeOuterLimit(o.outerStart),\n outerEnd: computeOuterLimit(o.outerEnd),\n innerStart: _limitValue(o.innerStart, 0, innerLimit),\n innerEnd: _limitValue(o.innerEnd, 0, innerLimit),\n };\n}\nfunction rThetaToXY(r, theta, x, y) {\n return {\n x: x + r * Math.cos(theta),\n y: y + r * Math.sin(theta),\n };\n}\nfunction pathArc(ctx, element, offset, spacing, end, circular) {\n const {x, y, startAngle: start, pixelMargin, innerRadius: innerR} = element;\n const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0);\n const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0;\n let spacingOffset = 0;\n const alpha = end - start;\n if (spacing) {\n const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0;\n const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0;\n const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2;\n const adjustedAngle = avNogSpacingRadius !== 0 ? (alpha * avNogSpacingRadius) / (avNogSpacingRadius + spacing) : alpha;\n spacingOffset = (alpha - adjustedAngle) / 2;\n }\n const beta = Math.max(0.001, alpha * outerRadius - offset / PI) / outerRadius;\n const angleOffset = (alpha - beta) / 2;\n const startAngle = start + angleOffset + spacingOffset;\n const endAngle = end - angleOffset - spacingOffset;\n const {outerStart, outerEnd, innerStart, innerEnd} = parseBorderRadius$1(element, innerRadius, outerRadius, endAngle - startAngle);\n const outerStartAdjustedRadius = outerRadius - outerStart;\n const outerEndAdjustedRadius = outerRadius - outerEnd;\n const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius;\n const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius;\n const innerStartAdjustedRadius = innerRadius + innerStart;\n const innerEndAdjustedRadius = innerRadius + innerEnd;\n const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius;\n const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius;\n ctx.beginPath();\n if (circular) {\n ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerEndAdjustedAngle);\n if (outerEnd > 0) {\n const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI);\n }\n const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n ctx.lineTo(p4.x, p4.y);\n if (innerEnd > 0) {\n const pCenter = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI);\n }\n ctx.arc(x, y, innerRadius, endAngle - (innerEnd / innerRadius), startAngle + (innerStart / innerRadius), true);\n if (innerStart > 0) {\n const pCenter = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI);\n }\n const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n ctx.lineTo(p8.x, p8.y);\n if (outerStart > 0) {\n const pCenter = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle);\n }\n } else {\n ctx.moveTo(x, y);\n const outerStartX = Math.cos(outerStartAdjustedAngle) * outerRadius + x;\n const outerStartY = Math.sin(outerStartAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerStartX, outerStartY);\n const outerEndX = Math.cos(outerEndAdjustedAngle) * outerRadius + x;\n const outerEndY = Math.sin(outerEndAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerEndX, outerEndY);\n }\n ctx.closePath();\n}\nfunction drawArc(ctx, element, offset, spacing, circular) {\n const {fullCircles, startAngle, circumference} = element;\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, startAngle + TAU, circular);\n for (let i = 0; i < fullCircles; ++i) {\n ctx.fill();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + circumference % TAU;\n if (circumference % TAU === 0) {\n endAngle += TAU;\n }\n }\n }\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.fill();\n return endAngle;\n}\nfunction drawFullCircleBorders(ctx, element, inner) {\n const {x, y, startAngle, pixelMargin, fullCircles} = element;\n const outerRadius = Math.max(element.outerRadius - pixelMargin, 0);\n const innerRadius = element.innerRadius + pixelMargin;\n let i;\n if (inner) {\n clipArc(ctx, element, startAngle + TAU);\n }\n ctx.beginPath();\n ctx.arc(x, y, innerRadius, startAngle + TAU, startAngle, true);\n for (i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle, startAngle + TAU);\n for (i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n}\nfunction drawBorder(ctx, element, offset, spacing, endAngle, circular) {\n const {options} = element;\n const {borderWidth, borderJoinStyle} = options;\n const inner = options.borderAlign === 'inner';\n if (!borderWidth) {\n return;\n }\n if (inner) {\n ctx.lineWidth = borderWidth * 2;\n ctx.lineJoin = borderJoinStyle || 'round';\n } else {\n ctx.lineWidth = borderWidth;\n ctx.lineJoin = borderJoinStyle || 'bevel';\n }\n if (element.fullCircles) {\n drawFullCircleBorders(ctx, element, inner);\n }\n if (inner) {\n clipArc(ctx, element, endAngle);\n }\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.stroke();\n}\nclass ArcElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.circumference = undefined;\n this.startAngle = undefined;\n this.endAngle = undefined;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.pixelMargin = 0;\n this.fullCircles = 0;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(chartX, chartY, useFinalPosition) {\n const point = this.getProps(['x', 'y'], useFinalPosition);\n const {angle, distance} = getAngleFromPoint(point, {x: chartX, y: chartY});\n const {startAngle, endAngle, innerRadius, outerRadius, circumference} = this.getProps([\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference'\n ], useFinalPosition);\n const rAdjust = this.options.spacing / 2;\n const _circumference = valueOrDefault(circumference, endAngle - startAngle);\n const betweenAngles = _circumference >= TAU || _angleBetween(angle, startAngle, endAngle);\n const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);\n return (betweenAngles && withinRadius);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y, startAngle, endAngle, innerRadius, outerRadius} = this.getProps([\n 'x',\n 'y',\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference',\n ], useFinalPosition);\n const {offset, spacing} = this.options;\n const halfAngle = (startAngle + endAngle) / 2;\n const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2;\n return {\n x: x + Math.cos(halfAngle) * halfRadius,\n y: y + Math.sin(halfAngle) * halfRadius\n };\n }\n tooltipPosition(useFinalPosition) {\n return this.getCenterPoint(useFinalPosition);\n }\n draw(ctx) {\n const {options, circumference} = this;\n const offset = (options.offset || 0) / 2;\n const spacing = (options.spacing || 0) / 2;\n const circular = options.circular;\n this.pixelMargin = (options.borderAlign === 'inner') ? 0.33 : 0;\n this.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0;\n if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) {\n return;\n }\n ctx.save();\n let radiusOffset = 0;\n if (offset) {\n radiusOffset = offset / 2;\n const halfAngle = (this.startAngle + this.endAngle) / 2;\n ctx.translate(Math.cos(halfAngle) * radiusOffset, Math.sin(halfAngle) * radiusOffset);\n if (this.circumference >= PI) {\n radiusOffset = offset;\n }\n }\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n const endAngle = drawArc(ctx, this, radiusOffset, spacing, circular);\n drawBorder(ctx, this, radiusOffset, spacing, endAngle, circular);\n ctx.restore();\n }\n}\nArcElement.id = 'arc';\nArcElement.defaults = {\n borderAlign: 'center',\n borderColor: '#fff',\n borderJoinStyle: undefined,\n borderRadius: 0,\n borderWidth: 2,\n offset: 0,\n spacing: 0,\n angle: undefined,\n circular: true,\n};\nArcElement.defaultRoutes = {\n backgroundColor: 'backgroundColor'\n};\n\nfunction setStyle(ctx, options, style = options) {\n ctx.lineCap = valueOrDefault(style.borderCapStyle, options.borderCapStyle);\n ctx.setLineDash(valueOrDefault(style.borderDash, options.borderDash));\n ctx.lineDashOffset = valueOrDefault(style.borderDashOffset, options.borderDashOffset);\n ctx.lineJoin = valueOrDefault(style.borderJoinStyle, options.borderJoinStyle);\n ctx.lineWidth = valueOrDefault(style.borderWidth, options.borderWidth);\n ctx.strokeStyle = valueOrDefault(style.borderColor, options.borderColor);\n}\nfunction lineTo(ctx, previous, target) {\n ctx.lineTo(target.x, target.y);\n}\nfunction getLineMethod(options) {\n if (options.stepped) {\n return _steppedLineTo;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierCurveTo;\n }\n return lineTo;\n}\nfunction pathVars(points, segment, params = {}) {\n const count = points.length;\n const {start: paramsStart = 0, end: paramsEnd = count - 1} = params;\n const {start: segmentStart, end: segmentEnd} = segment;\n const start = Math.max(paramsStart, segmentStart);\n const end = Math.min(paramsEnd, segmentEnd);\n const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd;\n return {\n count,\n start,\n loop: segment.loop,\n ilen: end < start && !outside ? count + end - start : end - start\n };\n}\nfunction pathSegment(ctx, line, segment, params) {\n const {points, options} = line;\n const {count, start, loop, ilen} = pathVars(points, segment, params);\n const lineMethod = getLineMethod(options);\n let {move = true, reverse} = params || {};\n let i, point, prev;\n for (i = 0; i <= ilen; ++i) {\n point = points[(start + (reverse ? ilen - i : i)) % count];\n if (point.skip) {\n continue;\n } else if (move) {\n ctx.moveTo(point.x, point.y);\n move = false;\n } else {\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n prev = point;\n }\n if (loop) {\n point = points[(start + (reverse ? ilen : 0)) % count];\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n return !!loop;\n}\nfunction fastPathSegment(ctx, line, segment, params) {\n const points = line.points;\n const {count, start, ilen} = pathVars(points, segment, params);\n const {move = true, reverse} = params || {};\n let avgX = 0;\n let countX = 0;\n let i, point, prevX, minY, maxY, lastY;\n const pointIndex = (index) => (start + (reverse ? ilen - index : index)) % count;\n const drawX = () => {\n if (minY !== maxY) {\n ctx.lineTo(avgX, maxY);\n ctx.lineTo(avgX, minY);\n ctx.lineTo(avgX, lastY);\n }\n };\n if (move) {\n point = points[pointIndex(0)];\n ctx.moveTo(point.x, point.y);\n }\n for (i = 0; i <= ilen; ++i) {\n point = points[pointIndex(i)];\n if (point.skip) {\n continue;\n }\n const x = point.x;\n const y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n } else if (y > maxY) {\n maxY = y;\n }\n avgX = (countX * avgX + x) / ++countX;\n } else {\n drawX();\n ctx.lineTo(x, y);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n }\n lastY = y;\n }\n drawX();\n}\nfunction _getSegmentMethod(line) {\n const opts = line.options;\n const borderDash = opts.borderDash && opts.borderDash.length;\n const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== 'monotone' && !opts.stepped && !borderDash;\n return useFastPath ? fastPathSegment : pathSegment;\n}\nfunction _getInterpolationMethod(options) {\n if (options.stepped) {\n return _steppedInterpolation;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierInterpolation;\n }\n return _pointInLine;\n}\nfunction strokePathWithCache(ctx, line, start, count) {\n let path = line._path;\n if (!path) {\n path = line._path = new Path2D();\n if (line.path(path, start, count)) {\n path.closePath();\n }\n }\n setStyle(ctx, line.options);\n ctx.stroke(path);\n}\nfunction strokePathDirect(ctx, line, start, count) {\n const {segments, options} = line;\n const segmentMethod = _getSegmentMethod(line);\n for (const segment of segments) {\n setStyle(ctx, options, segment.style);\n ctx.beginPath();\n if (segmentMethod(ctx, line, segment, {start, end: start + count - 1})) {\n ctx.closePath();\n }\n ctx.stroke();\n }\n}\nconst usePath2D = typeof Path2D === 'function';\nfunction draw(ctx, line, start, count) {\n if (usePath2D && !line.options.segment) {\n strokePathWithCache(ctx, line, start, count);\n } else {\n strokePathDirect(ctx, line, start, count);\n }\n}\nclass LineElement extends Element {\n constructor(cfg) {\n super();\n this.animated = true;\n this.options = undefined;\n this._chart = undefined;\n this._loop = undefined;\n this._fullLoop = undefined;\n this._path = undefined;\n this._points = undefined;\n this._segments = undefined;\n this._decimated = false;\n this._pointsUpdated = false;\n this._datasetIndex = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n updateControlPoints(chartArea, indexAxis) {\n const options = this.options;\n if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) {\n const loop = options.spanGaps ? this._loop : this._fullLoop;\n _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis);\n this._pointsUpdated = true;\n }\n }\n set points(points) {\n this._points = points;\n delete this._segments;\n delete this._path;\n this._pointsUpdated = false;\n }\n get points() {\n return this._points;\n }\n get segments() {\n return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n }\n first() {\n const segments = this.segments;\n const points = this.points;\n return segments.length && points[segments[0].start];\n }\n last() {\n const segments = this.segments;\n const points = this.points;\n const count = segments.length;\n return count && points[segments[count - 1].end];\n }\n interpolate(point, property) {\n const options = this.options;\n const value = point[property];\n const points = this.points;\n const segments = _boundSegments(this, {property, start: value, end: value});\n if (!segments.length) {\n return;\n }\n const result = [];\n const _interpolate = _getInterpolationMethod(options);\n let i, ilen;\n for (i = 0, ilen = segments.length; i < ilen; ++i) {\n const {start, end} = segments[i];\n const p1 = points[start];\n const p2 = points[end];\n if (p1 === p2) {\n result.push(p1);\n continue;\n }\n const t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n const interpolated = _interpolate(p1, p2, t, options.stepped);\n interpolated[property] = point[property];\n result.push(interpolated);\n }\n return result.length === 1 ? result[0] : result;\n }\n pathSegment(ctx, segment, params) {\n const segmentMethod = _getSegmentMethod(this);\n return segmentMethod(ctx, this, segment, params);\n }\n path(ctx, start, count) {\n const segments = this.segments;\n const segmentMethod = _getSegmentMethod(this);\n let loop = this._loop;\n start = start || 0;\n count = count || (this.points.length - start);\n for (const segment of segments) {\n loop &= segmentMethod(ctx, this, segment, {start, end: start + count - 1});\n }\n return !!loop;\n }\n draw(ctx, chartArea, start, count) {\n const options = this.options || {};\n const points = this.points || [];\n if (points.length && options.borderWidth) {\n ctx.save();\n draw(ctx, this, start, count);\n ctx.restore();\n }\n if (this.animated) {\n this._pointsUpdated = false;\n this._path = undefined;\n }\n }\n}\nLineElement.id = 'line';\nLineElement.defaults = {\n borderCapStyle: 'butt',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: 'miter',\n borderWidth: 3,\n capBezierPoints: true,\n cubicInterpolationMode: 'default',\n fill: false,\n spanGaps: false,\n stepped: false,\n tension: 0,\n};\nLineElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\nLineElement.descriptors = {\n _scriptable: true,\n _indexable: (name) => name !== 'borderDash' && name !== 'fill',\n};\n\nfunction inRange$1(el, pos, axis, useFinalPosition) {\n const options = el.options;\n const {[axis]: value} = el.getProps([axis], useFinalPosition);\n return (Math.abs(pos - value) < options.radius + options.hitRadius);\n}\nclass PointElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.parsed = undefined;\n this.skip = undefined;\n this.stop = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n const options = this.options;\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return ((Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2)) < Math.pow(options.hitRadius + options.radius, 2));\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange$1(this, mouseX, 'x', useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange$1(this, mouseY, 'y', useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y};\n }\n size(options) {\n options = options || this.options || {};\n let radius = options.radius || 0;\n radius = Math.max(radius, radius && options.hoverRadius || 0);\n const borderWidth = radius && options.borderWidth || 0;\n return (radius + borderWidth) * 2;\n }\n draw(ctx, area) {\n const options = this.options;\n if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) {\n return;\n }\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.fillStyle = options.backgroundColor;\n drawPoint(ctx, options, this.x, this.y);\n }\n getRange() {\n const options = this.options || {};\n return options.radius + options.hitRadius;\n }\n}\nPointElement.id = 'point';\nPointElement.defaults = {\n borderWidth: 1,\n hitRadius: 1,\n hoverBorderWidth: 1,\n hoverRadius: 4,\n pointStyle: 'circle',\n radius: 3,\n rotation: 0\n};\nPointElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\n\nfunction getBarBounds(bar, useFinalPosition) {\n const {x, y, base, width, height} = bar.getProps(['x', 'y', 'base', 'width', 'height'], useFinalPosition);\n let left, right, top, bottom, half;\n if (bar.horizontal) {\n half = height / 2;\n left = Math.min(x, base);\n right = Math.max(x, base);\n top = y - half;\n bottom = y + half;\n } else {\n half = width / 2;\n left = x - half;\n right = x + half;\n top = Math.min(y, base);\n bottom = Math.max(y, base);\n }\n return {left, top, right, bottom};\n}\nfunction skipOrLimit(skip, value, min, max) {\n return skip ? 0 : _limitValue(value, min, max);\n}\nfunction parseBorderWidth(bar, maxW, maxH) {\n const value = bar.options.borderWidth;\n const skip = bar.borderSkipped;\n const o = toTRBL(value);\n return {\n t: skipOrLimit(skip.top, o.top, 0, maxH),\n r: skipOrLimit(skip.right, o.right, 0, maxW),\n b: skipOrLimit(skip.bottom, o.bottom, 0, maxH),\n l: skipOrLimit(skip.left, o.left, 0, maxW)\n };\n}\nfunction parseBorderRadius(bar, maxW, maxH) {\n const {enableBorderRadius} = bar.getProps(['enableBorderRadius']);\n const value = bar.options.borderRadius;\n const o = toTRBLCorners(value);\n const maxR = Math.min(maxW, maxH);\n const skip = bar.borderSkipped;\n const enableBorder = enableBorderRadius || isObject(value);\n return {\n topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR),\n topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR),\n bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR),\n bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR)\n };\n}\nfunction boundingRects(bar) {\n const bounds = getBarBounds(bar);\n const width = bounds.right - bounds.left;\n const height = bounds.bottom - bounds.top;\n const border = parseBorderWidth(bar, width / 2, height / 2);\n const radius = parseBorderRadius(bar, width / 2, height / 2);\n return {\n outer: {\n x: bounds.left,\n y: bounds.top,\n w: width,\n h: height,\n radius\n },\n inner: {\n x: bounds.left + border.l,\n y: bounds.top + border.t,\n w: width - border.l - border.r,\n h: height - border.t - border.b,\n radius: {\n topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)),\n topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)),\n bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)),\n bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r)),\n }\n }\n };\n}\nfunction inRange(bar, x, y, useFinalPosition) {\n const skipX = x === null;\n const skipY = y === null;\n const skipBoth = skipX && skipY;\n const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition);\n return bounds\n\t\t&& (skipX || _isBetween(x, bounds.left, bounds.right))\n\t\t&& (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\nfunction hasRadius(radius) {\n return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\nfunction addNormalRectPath(ctx, rect) {\n ctx.rect(rect.x, rect.y, rect.w, rect.h);\n}\nfunction inflateRect(rect, amount, refRect = {}) {\n const x = rect.x !== refRect.x ? -amount : 0;\n const y = rect.y !== refRect.y ? -amount : 0;\n const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x;\n const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y;\n return {\n x: rect.x + x,\n y: rect.y + y,\n w: rect.w + w,\n h: rect.h + h,\n radius: rect.radius\n };\n}\nclass BarElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.horizontal = undefined;\n this.base = undefined;\n this.width = undefined;\n this.height = undefined;\n this.inflateAmount = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n draw(ctx) {\n const {inflateAmount, options: {borderColor, backgroundColor}} = this;\n const {inner, outer} = boundingRects(this);\n const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n ctx.save();\n if (outer.w !== inner.w || outer.h !== inner.h) {\n ctx.beginPath();\n addRectPath(ctx, inflateRect(outer, inflateAmount, inner));\n ctx.clip();\n addRectPath(ctx, inflateRect(inner, -inflateAmount, outer));\n ctx.fillStyle = borderColor;\n ctx.fill('evenodd');\n }\n ctx.beginPath();\n addRectPath(ctx, inflateRect(inner, inflateAmount));\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n return inRange(this, mouseX, mouseY, useFinalPosition);\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange(this, mouseX, null, useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange(this, null, mouseY, useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y, base, horizontal} = this.getProps(['x', 'y', 'base', 'horizontal'], useFinalPosition);\n return {\n x: horizontal ? (x + base) / 2 : x,\n y: horizontal ? y : (y + base) / 2\n };\n }\n getRange(axis) {\n return axis === 'x' ? this.width / 2 : this.height / 2;\n }\n}\nBarElement.id = 'bar';\nBarElement.defaults = {\n borderSkipped: 'start',\n borderWidth: 0,\n borderRadius: 0,\n inflateAmount: 'auto',\n pointStyle: undefined\n};\nBarElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\n\nvar elements = /*#__PURE__*/Object.freeze({\n__proto__: null,\nArcElement: ArcElement,\nLineElement: LineElement,\nPointElement: PointElement,\nBarElement: BarElement\n});\n\nfunction lttbDecimation(data, start, count, availableWidth, options) {\n const samples = options.samples || availableWidth;\n if (samples >= count) {\n return data.slice(start, start + count);\n }\n const decimated = [];\n const bucketWidth = (count - 2) / (samples - 2);\n let sampledIndex = 0;\n const endIndex = start + count - 1;\n let a = start;\n let i, maxAreaPoint, maxArea, area, nextA;\n decimated[sampledIndex++] = data[a];\n for (i = 0; i < samples - 2; i++) {\n let avgX = 0;\n let avgY = 0;\n let j;\n const avgRangeStart = Math.floor((i + 1) * bucketWidth) + 1 + start;\n const avgRangeEnd = Math.min(Math.floor((i + 2) * bucketWidth) + 1, count) + start;\n const avgRangeLength = avgRangeEnd - avgRangeStart;\n for (j = avgRangeStart; j < avgRangeEnd; j++) {\n avgX += data[j].x;\n avgY += data[j].y;\n }\n avgX /= avgRangeLength;\n avgY /= avgRangeLength;\n const rangeOffs = Math.floor(i * bucketWidth) + 1 + start;\n const rangeTo = Math.min(Math.floor((i + 1) * bucketWidth) + 1, count) + start;\n const {x: pointAx, y: pointAy} = data[a];\n maxArea = area = -1;\n for (j = rangeOffs; j < rangeTo; j++) {\n area = 0.5 * Math.abs(\n (pointAx - avgX) * (data[j].y - pointAy) -\n (pointAx - data[j].x) * (avgY - pointAy)\n );\n if (area > maxArea) {\n maxArea = area;\n maxAreaPoint = data[j];\n nextA = j;\n }\n }\n decimated[sampledIndex++] = maxAreaPoint;\n a = nextA;\n }\n decimated[sampledIndex++] = data[endIndex];\n return decimated;\n}\nfunction minMaxDecimation(data, start, count, availableWidth) {\n let avgX = 0;\n let countX = 0;\n let i, point, x, y, prevX, minIndex, maxIndex, startIndex, minY, maxY;\n const decimated = [];\n const endIndex = start + count - 1;\n const xMin = data[start].x;\n const xMax = data[endIndex].x;\n const dx = xMax - xMin;\n for (i = start; i < start + count; ++i) {\n point = data[i];\n x = (point.x - xMin) / dx * availableWidth;\n y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n minIndex = i;\n } else if (y > maxY) {\n maxY = y;\n maxIndex = i;\n }\n avgX = (countX * avgX + point.x) / ++countX;\n } else {\n const lastIndex = i - 1;\n if (!isNullOrUndef(minIndex) && !isNullOrUndef(maxIndex)) {\n const intermediateIndex1 = Math.min(minIndex, maxIndex);\n const intermediateIndex2 = Math.max(minIndex, maxIndex);\n if (intermediateIndex1 !== startIndex && intermediateIndex1 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex1],\n x: avgX,\n });\n }\n if (intermediateIndex2 !== startIndex && intermediateIndex2 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex2],\n x: avgX\n });\n }\n }\n if (i > 0 && lastIndex !== startIndex) {\n decimated.push(data[lastIndex]);\n }\n decimated.push(point);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n minIndex = maxIndex = startIndex = i;\n }\n }\n return decimated;\n}\nfunction cleanDecimatedDataset(dataset) {\n if (dataset._decimated) {\n const data = dataset._data;\n delete dataset._decimated;\n delete dataset._data;\n Object.defineProperty(dataset, 'data', {value: data});\n }\n}\nfunction cleanDecimatedData(chart) {\n chart.data.datasets.forEach((dataset) => {\n cleanDecimatedDataset(dataset);\n });\n}\nfunction getStartAndCountOfVisiblePointsSimplified(meta, points) {\n const pointCount = points.length;\n let start = 0;\n let count;\n const {iScale} = meta;\n const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(_lookupByKey(points, iScale.axis, min).lo, 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(_lookupByKey(points, iScale.axis, max).hi + 1, start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n return {start, count};\n}\nvar plugin_decimation = {\n id: 'decimation',\n defaults: {\n algorithm: 'min-max',\n enabled: false,\n },\n beforeElementsUpdate: (chart, args, options) => {\n if (!options.enabled) {\n cleanDecimatedData(chart);\n return;\n }\n const availableWidth = chart.width;\n chart.data.datasets.forEach((dataset, datasetIndex) => {\n const {_data, indexAxis} = dataset;\n const meta = chart.getDatasetMeta(datasetIndex);\n const data = _data || dataset.data;\n if (resolve([indexAxis, chart.options.indexAxis]) === 'y') {\n return;\n }\n if (!meta.controller.supportsDecimation) {\n return;\n }\n const xAxis = chart.scales[meta.xAxisID];\n if (xAxis.type !== 'linear' && xAxis.type !== 'time') {\n return;\n }\n if (chart.options.parsing) {\n return;\n }\n let {start, count} = getStartAndCountOfVisiblePointsSimplified(meta, data);\n const threshold = options.threshold || 4 * availableWidth;\n if (count <= threshold) {\n cleanDecimatedDataset(dataset);\n return;\n }\n if (isNullOrUndef(_data)) {\n dataset._data = data;\n delete dataset.data;\n Object.defineProperty(dataset, 'data', {\n configurable: true,\n enumerable: true,\n get: function() {\n return this._decimated;\n },\n set: function(d) {\n this._data = d;\n }\n });\n }\n let decimated;\n switch (options.algorithm) {\n case 'lttb':\n decimated = lttbDecimation(data, start, count, availableWidth, options);\n break;\n case 'min-max':\n decimated = minMaxDecimation(data, start, count, availableWidth);\n break;\n default:\n throw new Error(`Unsupported decimation algorithm '${options.algorithm}'`);\n }\n dataset._decimated = decimated;\n });\n },\n destroy(chart) {\n cleanDecimatedData(chart);\n }\n};\n\nfunction _segments(line, target, property) {\n const segments = line.segments;\n const points = line.points;\n const tpoints = target.points;\n const parts = [];\n for (const segment of segments) {\n let {start, end} = segment;\n end = _findSegmentEnd(start, end, points);\n const bounds = _getBounds(property, points[start], points[end], segment.loop);\n if (!target.segments) {\n parts.push({\n source: segment,\n target: bounds,\n start: points[start],\n end: points[end]\n });\n continue;\n }\n const targetSegments = _boundSegments(target, bounds);\n for (const tgt of targetSegments) {\n const subBounds = _getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);\n const fillSources = _boundSegment(segment, points, subBounds);\n for (const fillSource of fillSources) {\n parts.push({\n source: fillSource,\n target: tgt,\n start: {\n [property]: _getEdge(bounds, subBounds, 'start', Math.max)\n },\n end: {\n [property]: _getEdge(bounds, subBounds, 'end', Math.min)\n }\n });\n }\n }\n }\n return parts;\n}\nfunction _getBounds(property, first, last, loop) {\n if (loop) {\n return;\n }\n let start = first[property];\n let end = last[property];\n if (property === 'angle') {\n start = _normalizeAngle(start);\n end = _normalizeAngle(end);\n }\n return {property, start, end};\n}\nfunction _pointsFromSegments(boundary, line) {\n const {x = null, y = null} = boundary || {};\n const linePoints = line.points;\n const points = [];\n line.segments.forEach(({start, end}) => {\n end = _findSegmentEnd(start, end, linePoints);\n const first = linePoints[start];\n const last = linePoints[end];\n if (y !== null) {\n points.push({x: first.x, y});\n points.push({x: last.x, y});\n } else if (x !== null) {\n points.push({x, y: first.y});\n points.push({x, y: last.y});\n }\n });\n return points;\n}\nfunction _findSegmentEnd(start, end, points) {\n for (;end > start; end--) {\n const point = points[end];\n if (!isNaN(point.x) && !isNaN(point.y)) {\n break;\n }\n }\n return end;\n}\nfunction _getEdge(a, b, prop, fn) {\n if (a && b) {\n return fn(a[prop], b[prop]);\n }\n return a ? a[prop] : b ? b[prop] : 0;\n}\n\nfunction _createBoundaryLine(boundary, line) {\n let points = [];\n let _loop = false;\n if (isArray(boundary)) {\n _loop = true;\n points = boundary;\n } else {\n points = _pointsFromSegments(boundary, line);\n }\n return points.length ? new LineElement({\n points,\n options: {tension: 0},\n _loop,\n _fullLoop: _loop\n }) : null;\n}\nfunction _shouldApplyFill(source) {\n return source && source.fill !== false;\n}\n\nfunction _resolveTarget(sources, index, propagate) {\n const source = sources[index];\n let fill = source.fill;\n const visited = [index];\n let target;\n if (!propagate) {\n return fill;\n }\n while (fill !== false && visited.indexOf(fill) === -1) {\n if (!isNumberFinite(fill)) {\n return fill;\n }\n target = sources[fill];\n if (!target) {\n return false;\n }\n if (target.visible) {\n return fill;\n }\n visited.push(fill);\n fill = target.fill;\n }\n return false;\n}\nfunction _decodeFill(line, index, count) {\n const fill = parseFillOption(line);\n if (isObject(fill)) {\n return isNaN(fill.value) ? false : fill;\n }\n let target = parseFloat(fill);\n if (isNumberFinite(target) && Math.floor(target) === target) {\n return decodeTargetIndex(fill[0], index, target, count);\n }\n return ['origin', 'start', 'end', 'stack', 'shape'].indexOf(fill) >= 0 && fill;\n}\nfunction decodeTargetIndex(firstCh, index, target, count) {\n if (firstCh === '-' || firstCh === '+') {\n target = index + target;\n }\n if (target === index || target < 0 || target >= count) {\n return false;\n }\n return target;\n}\nfunction _getTargetPixel(fill, scale) {\n let pixel = null;\n if (fill === 'start') {\n pixel = scale.bottom;\n } else if (fill === 'end') {\n pixel = scale.top;\n } else if (isObject(fill)) {\n pixel = scale.getPixelForValue(fill.value);\n } else if (scale.getBasePixel) {\n pixel = scale.getBasePixel();\n }\n return pixel;\n}\nfunction _getTargetValue(fill, scale, startValue) {\n let value;\n if (fill === 'start') {\n value = startValue;\n } else if (fill === 'end') {\n value = scale.options.reverse ? scale.min : scale.max;\n } else if (isObject(fill)) {\n value = fill.value;\n } else {\n value = scale.getBaseValue();\n }\n return value;\n}\nfunction parseFillOption(line) {\n const options = line.options;\n const fillOption = options.fill;\n let fill = valueOrDefault(fillOption && fillOption.target, fillOption);\n if (fill === undefined) {\n fill = !!options.backgroundColor;\n }\n if (fill === false || fill === null) {\n return false;\n }\n if (fill === true) {\n return 'origin';\n }\n return fill;\n}\n\nfunction _buildStackLine(source) {\n const {scale, index, line} = source;\n const points = [];\n const segments = line.segments;\n const sourcePoints = line.points;\n const linesBelow = getLinesBelow(scale, index);\n linesBelow.push(_createBoundaryLine({x: null, y: scale.bottom}, line));\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n for (let j = segment.start; j <= segment.end; j++) {\n addPointsBelow(points, sourcePoints[j], linesBelow);\n }\n }\n return new LineElement({points, options: {}});\n}\nfunction getLinesBelow(scale, index) {\n const below = [];\n const metas = scale.getMatchingVisibleMetas('line');\n for (let i = 0; i < metas.length; i++) {\n const meta = metas[i];\n if (meta.index === index) {\n break;\n }\n if (!meta.hidden) {\n below.unshift(meta.dataset);\n }\n }\n return below;\n}\nfunction addPointsBelow(points, sourcePoint, linesBelow) {\n const postponed = [];\n for (let j = 0; j < linesBelow.length; j++) {\n const line = linesBelow[j];\n const {first, last, point} = findPoint(line, sourcePoint, 'x');\n if (!point || (first && last)) {\n continue;\n }\n if (first) {\n postponed.unshift(point);\n } else {\n points.push(point);\n if (!last) {\n break;\n }\n }\n }\n points.push(...postponed);\n}\nfunction findPoint(line, sourcePoint, property) {\n const point = line.interpolate(sourcePoint, property);\n if (!point) {\n return {};\n }\n const pointValue = point[property];\n const segments = line.segments;\n const linePoints = line.points;\n let first = false;\n let last = false;\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const firstValue = linePoints[segment.start][property];\n const lastValue = linePoints[segment.end][property];\n if (_isBetween(pointValue, firstValue, lastValue)) {\n first = pointValue === firstValue;\n last = pointValue === lastValue;\n break;\n }\n }\n return {first, last, point};\n}\n\nclass simpleArc {\n constructor(opts) {\n this.x = opts.x;\n this.y = opts.y;\n this.radius = opts.radius;\n }\n pathSegment(ctx, bounds, opts) {\n const {x, y, radius} = this;\n bounds = bounds || {start: 0, end: TAU};\n ctx.arc(x, y, radius, bounds.end, bounds.start, true);\n return !opts.bounds;\n }\n interpolate(point) {\n const {x, y, radius} = this;\n const angle = point.angle;\n return {\n x: x + Math.cos(angle) * radius,\n y: y + Math.sin(angle) * radius,\n angle\n };\n }\n}\n\nfunction _getTarget(source) {\n const {chart, fill, line} = source;\n if (isNumberFinite(fill)) {\n return getLineByIndex(chart, fill);\n }\n if (fill === 'stack') {\n return _buildStackLine(source);\n }\n if (fill === 'shape') {\n return true;\n }\n const boundary = computeBoundary(source);\n if (boundary instanceof simpleArc) {\n return boundary;\n }\n return _createBoundaryLine(boundary, line);\n}\nfunction getLineByIndex(chart, index) {\n const meta = chart.getDatasetMeta(index);\n const visible = meta && chart.isDatasetVisible(index);\n return visible ? meta.dataset : null;\n}\nfunction computeBoundary(source) {\n const scale = source.scale || {};\n if (scale.getPointPositionForValue) {\n return computeCircularBoundary(source);\n }\n return computeLinearBoundary(source);\n}\nfunction computeLinearBoundary(source) {\n const {scale = {}, fill} = source;\n const pixel = _getTargetPixel(fill, scale);\n if (isNumberFinite(pixel)) {\n const horizontal = scale.isHorizontal();\n return {\n x: horizontal ? pixel : null,\n y: horizontal ? null : pixel\n };\n }\n return null;\n}\nfunction computeCircularBoundary(source) {\n const {scale, fill} = source;\n const options = scale.options;\n const length = scale.getLabels().length;\n const start = options.reverse ? scale.max : scale.min;\n const value = _getTargetValue(fill, scale, start);\n const target = [];\n if (options.grid.circular) {\n const center = scale.getPointPositionForValue(0, start);\n return new simpleArc({\n x: center.x,\n y: center.y,\n radius: scale.getDistanceFromCenterForValue(value)\n });\n }\n for (let i = 0; i < length; ++i) {\n target.push(scale.getPointPositionForValue(i, value));\n }\n return target;\n}\n\nfunction _drawfill(ctx, source, area) {\n const target = _getTarget(source);\n const {line, scale, axis} = source;\n const lineOpts = line.options;\n const fillOption = lineOpts.fill;\n const color = lineOpts.backgroundColor;\n const {above = color, below = color} = fillOption || {};\n if (target && line.points.length) {\n clipArea(ctx, area);\n doFill(ctx, {line, target, above, below, area, scale, axis});\n unclipArea(ctx);\n }\n}\nfunction doFill(ctx, cfg) {\n const {line, target, above, below, area, scale} = cfg;\n const property = line._loop ? 'angle' : cfg.axis;\n ctx.save();\n if (property === 'x' && below !== above) {\n clipVertical(ctx, target, area.top);\n fill(ctx, {line, target, color: above, scale, property});\n ctx.restore();\n ctx.save();\n clipVertical(ctx, target, area.bottom);\n }\n fill(ctx, {line, target, color: below, scale, property});\n ctx.restore();\n}\nfunction clipVertical(ctx, target, clipY) {\n const {segments, points} = target;\n let first = true;\n let lineLoop = false;\n ctx.beginPath();\n for (const segment of segments) {\n const {start, end} = segment;\n const firstPoint = points[start];\n const lastPoint = points[_findSegmentEnd(start, end, points)];\n if (first) {\n ctx.moveTo(firstPoint.x, firstPoint.y);\n first = false;\n } else {\n ctx.lineTo(firstPoint.x, clipY);\n ctx.lineTo(firstPoint.x, firstPoint.y);\n }\n lineLoop = !!target.pathSegment(ctx, segment, {move: lineLoop});\n if (lineLoop) {\n ctx.closePath();\n } else {\n ctx.lineTo(lastPoint.x, clipY);\n }\n }\n ctx.lineTo(target.first().x, clipY);\n ctx.closePath();\n ctx.clip();\n}\nfunction fill(ctx, cfg) {\n const {line, target, property, color, scale} = cfg;\n const segments = _segments(line, target, property);\n for (const {source: src, target: tgt, start, end} of segments) {\n const {style: {backgroundColor = color} = {}} = src;\n const notShape = target !== true;\n ctx.save();\n ctx.fillStyle = backgroundColor;\n clipBounds(ctx, scale, notShape && _getBounds(property, start, end));\n ctx.beginPath();\n const lineLoop = !!line.pathSegment(ctx, src);\n let loop;\n if (notShape) {\n if (lineLoop) {\n ctx.closePath();\n } else {\n interpolatedLineTo(ctx, target, end, property);\n }\n const targetLoop = !!target.pathSegment(ctx, tgt, {move: lineLoop, reverse: true});\n loop = lineLoop && targetLoop;\n if (!loop) {\n interpolatedLineTo(ctx, target, start, property);\n }\n }\n ctx.closePath();\n ctx.fill(loop ? 'evenodd' : 'nonzero');\n ctx.restore();\n }\n}\nfunction clipBounds(ctx, scale, bounds) {\n const {top, bottom} = scale.chart.chartArea;\n const {property, start, end} = bounds || {};\n if (property === 'x') {\n ctx.beginPath();\n ctx.rect(start, top, end - start, bottom - top);\n ctx.clip();\n }\n}\nfunction interpolatedLineTo(ctx, target, point, property) {\n const interpolatedPoint = target.interpolate(point, property);\n if (interpolatedPoint) {\n ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);\n }\n}\n\nvar index = {\n id: 'filler',\n afterDatasetsUpdate(chart, _args, options) {\n const count = (chart.data.datasets || []).length;\n const sources = [];\n let meta, i, line, source;\n for (i = 0; i < count; ++i) {\n meta = chart.getDatasetMeta(i);\n line = meta.dataset;\n source = null;\n if (line && line.options && line instanceof LineElement) {\n source = {\n visible: chart.isDatasetVisible(i),\n index: i,\n fill: _decodeFill(line, i, count),\n chart,\n axis: meta.controller.options.indexAxis,\n scale: meta.vScale,\n line,\n };\n }\n meta.$filler = source;\n sources.push(source);\n }\n for (i = 0; i < count; ++i) {\n source = sources[i];\n if (!source || source.fill === false) {\n continue;\n }\n source.fill = _resolveTarget(sources, i, options.propagate);\n }\n },\n beforeDraw(chart, _args, options) {\n const draw = options.drawTime === 'beforeDraw';\n const metasets = chart.getSortedVisibleDatasetMetas();\n const area = chart.chartArea;\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (!source) {\n continue;\n }\n source.line.updateControlPoints(area, source.axis);\n if (draw && source.fill) {\n _drawfill(chart.ctx, source, area);\n }\n }\n },\n beforeDatasetsDraw(chart, _args, options) {\n if (options.drawTime !== 'beforeDatasetsDraw') {\n return;\n }\n const metasets = chart.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (_shouldApplyFill(source)) {\n _drawfill(chart.ctx, source, chart.chartArea);\n }\n }\n },\n beforeDatasetDraw(chart, args, options) {\n const source = args.meta.$filler;\n if (!_shouldApplyFill(source) || options.drawTime !== 'beforeDatasetDraw') {\n return;\n }\n _drawfill(chart.ctx, source, chart.chartArea);\n },\n defaults: {\n propagate: true,\n drawTime: 'beforeDatasetDraw'\n }\n};\n\nconst getBoxSize = (labelOpts, fontSize) => {\n let {boxHeight = fontSize, boxWidth = fontSize} = labelOpts;\n if (labelOpts.usePointStyle) {\n boxHeight = Math.min(boxHeight, fontSize);\n boxWidth = labelOpts.pointStyleWidth || Math.min(boxWidth, fontSize);\n }\n return {\n boxWidth,\n boxHeight,\n itemHeight: Math.max(fontSize, boxHeight)\n };\n};\nconst itemsEqual = (a, b) => a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\nclass Legend extends Element {\n constructor(config) {\n super();\n this._added = false;\n this.legendHitBoxes = [];\n this._hoveredItem = null;\n this.doughnutMode = false;\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this.legendItems = undefined;\n this.columnSizes = undefined;\n this.lineWidths = undefined;\n this.maxHeight = undefined;\n this.maxWidth = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.height = undefined;\n this.width = undefined;\n this._margins = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight, margins) {\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins;\n this.setDimensions();\n this.buildLabels();\n this.fit();\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = this._margins.left;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = this._margins.top;\n this.bottom = this.height;\n }\n }\n buildLabels() {\n const labelOpts = this.options.labels || {};\n let legendItems = callback(labelOpts.generateLabels, [this.chart], this) || [];\n if (labelOpts.filter) {\n legendItems = legendItems.filter((item) => labelOpts.filter(item, this.chart.data));\n }\n if (labelOpts.sort) {\n legendItems = legendItems.sort((a, b) => labelOpts.sort(a, b, this.chart.data));\n }\n if (this.options.reverse) {\n legendItems.reverse();\n }\n this.legendItems = legendItems;\n }\n fit() {\n const {options, ctx} = this;\n if (!options.display) {\n this.width = this.height = 0;\n return;\n }\n const labelOpts = options.labels;\n const labelFont = toFont(labelOpts.font);\n const fontSize = labelFont.size;\n const titleHeight = this._computeTitleHeight();\n const {boxWidth, itemHeight} = getBoxSize(labelOpts, fontSize);\n let width, height;\n ctx.font = labelFont.string;\n if (this.isHorizontal()) {\n width = this.maxWidth;\n height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n } else {\n height = this.maxHeight;\n width = this._fitCols(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n }\n this.width = Math.min(width, options.maxWidth || this.maxWidth);\n this.height = Math.min(height, options.maxHeight || this.maxHeight);\n }\n _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n const {ctx, maxWidth, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n const lineWidths = this.lineWidths = [0];\n const lineHeight = itemHeight + padding;\n let totalHeight = titleHeight;\n ctx.textAlign = 'left';\n ctx.textBaseline = 'middle';\n let row = -1;\n let top = -lineHeight;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {\n totalHeight += lineHeight;\n lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n top += lineHeight;\n row++;\n }\n hitboxes[i] = {left: 0, top, row, width: itemWidth, height: itemHeight};\n lineWidths[lineWidths.length - 1] += itemWidth + padding;\n });\n return totalHeight;\n }\n _fitCols(titleHeight, fontSize, boxWidth, itemHeight) {\n const {ctx, maxHeight, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n const columnSizes = this.columnSizes = [];\n const heightLimit = maxHeight - titleHeight;\n let totalWidth = padding;\n let currentColWidth = 0;\n let currentColHeight = 0;\n let left = 0;\n let col = 0;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n totalWidth += currentColWidth + padding;\n columnSizes.push({width: currentColWidth, height: currentColHeight});\n left += currentColWidth + padding;\n col++;\n currentColWidth = currentColHeight = 0;\n }\n hitboxes[i] = {left, top: currentColHeight, col, width: itemWidth, height: itemHeight};\n currentColWidth = Math.max(currentColWidth, itemWidth);\n currentColHeight += itemHeight + padding;\n });\n totalWidth += currentColWidth;\n columnSizes.push({width: currentColWidth, height: currentColHeight});\n return totalWidth;\n }\n adjustHitBoxes() {\n if (!this.options.display) {\n return;\n }\n const titleHeight = this._computeTitleHeight();\n const {legendHitBoxes: hitboxes, options: {align, labels: {padding}, rtl}} = this;\n const rtlHelper = getRtlAdapter(rtl, this.left, this.width);\n if (this.isHorizontal()) {\n let row = 0;\n let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n for (const hitbox of hitboxes) {\n if (row !== hitbox.row) {\n row = hitbox.row;\n left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n }\n hitbox.top += this.top + titleHeight + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width);\n left += hitbox.width + padding;\n }\n } else {\n let col = 0;\n let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n for (const hitbox of hitboxes) {\n if (hitbox.col !== col) {\n col = hitbox.col;\n top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n }\n hitbox.top = top;\n hitbox.left += this.left + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox.left), hitbox.width);\n top += hitbox.height + padding;\n }\n }\n }\n isHorizontal() {\n return this.options.position === 'top' || this.options.position === 'bottom';\n }\n draw() {\n if (this.options.display) {\n const ctx = this.ctx;\n clipArea(ctx, this);\n this._draw();\n unclipArea(ctx);\n }\n }\n _draw() {\n const {options: opts, columnSizes, lineWidths, ctx} = this;\n const {align, labels: labelOpts} = opts;\n const defaultColor = defaults.color;\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const labelFont = toFont(labelOpts.font);\n const {color: fontColor, padding} = labelOpts;\n const fontSize = labelFont.size;\n const halfFontSize = fontSize / 2;\n let cursor;\n this.drawTitle();\n ctx.textAlign = rtlHelper.textAlign('left');\n ctx.textBaseline = 'middle';\n ctx.lineWidth = 0.5;\n ctx.font = labelFont.string;\n const {boxWidth, boxHeight, itemHeight} = getBoxSize(labelOpts, fontSize);\n const drawLegendBox = function(x, y, legendItem) {\n if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n return;\n }\n ctx.save();\n const lineWidth = valueOrDefault(legendItem.lineWidth, 1);\n ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);\n ctx.lineCap = valueOrDefault(legendItem.lineCap, 'butt');\n ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0);\n ctx.lineJoin = valueOrDefault(legendItem.lineJoin, 'miter');\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor);\n ctx.setLineDash(valueOrDefault(legendItem.lineDash, []));\n if (labelOpts.usePointStyle) {\n const drawOptions = {\n radius: boxHeight * Math.SQRT2 / 2,\n pointStyle: legendItem.pointStyle,\n rotation: legendItem.rotation,\n borderWidth: lineWidth\n };\n const centerX = rtlHelper.xPlus(x, boxWidth / 2);\n const centerY = y + halfFontSize;\n drawPointLegend(ctx, drawOptions, centerX, centerY, labelOpts.pointStyleWidth && boxWidth);\n } else {\n const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n const borderRadius = toTRBLCorners(legendItem.borderRadius);\n ctx.beginPath();\n if (Object.values(borderRadius).some(v => v !== 0)) {\n addRoundedRectPath(ctx, {\n x: xBoxLeft,\n y: yBoxTop,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n } else {\n ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight);\n }\n ctx.fill();\n if (lineWidth !== 0) {\n ctx.stroke();\n }\n }\n ctx.restore();\n };\n const fillText = function(x, y, legendItem) {\n renderText(ctx, legendItem.text, x, y + (itemHeight / 2), labelFont, {\n strikethrough: legendItem.hidden,\n textAlign: rtlHelper.textAlign(legendItem.textAlign)\n });\n };\n const isHorizontal = this.isHorizontal();\n const titleHeight = this._computeTitleHeight();\n if (isHorizontal) {\n cursor = {\n x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]),\n y: this.top + padding + titleHeight,\n line: 0\n };\n } else {\n cursor = {\n x: this.left + padding,\n y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height),\n line: 0\n };\n }\n overrideTextDirection(this.ctx, opts.textDirection);\n const lineHeight = itemHeight + padding;\n this.legendItems.forEach((legendItem, i) => {\n ctx.strokeStyle = legendItem.fontColor || fontColor;\n ctx.fillStyle = legendItem.fontColor || fontColor;\n const textWidth = ctx.measureText(legendItem.text).width;\n const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign));\n const width = boxWidth + halfFontSize + textWidth;\n let x = cursor.x;\n let y = cursor.y;\n rtlHelper.setWidth(this.width);\n if (isHorizontal) {\n if (i > 0 && x + width + padding > this.right) {\n y = cursor.y += lineHeight;\n cursor.line++;\n x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]);\n }\n } else if (i > 0 && y + lineHeight > this.bottom) {\n x = cursor.x = x + columnSizes[cursor.line].width + padding;\n cursor.line++;\n y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height);\n }\n const realX = rtlHelper.x(x);\n drawLegendBox(realX, y, legendItem);\n x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl);\n fillText(rtlHelper.x(x), y, legendItem);\n if (isHorizontal) {\n cursor.x += width + padding;\n } else {\n cursor.y += lineHeight;\n }\n });\n restoreTextDirection(this.ctx, opts.textDirection);\n }\n drawTitle() {\n const opts = this.options;\n const titleOpts = opts.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n if (!titleOpts.display) {\n return;\n }\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const ctx = this.ctx;\n const position = titleOpts.position;\n const halfFontSize = titleFont.size / 2;\n const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n let y;\n let left = this.left;\n let maxWidth = this.width;\n if (this.isHorizontal()) {\n maxWidth = Math.max(...this.lineWidths);\n y = this.top + topPaddingPlusHalfFontSize;\n left = _alignStartEnd(opts.align, left, this.right - maxWidth);\n } else {\n const maxHeight = this.columnSizes.reduce((acc, size) => Math.max(acc, size.height), 0);\n y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight());\n }\n const x = _alignStartEnd(position, left, left + maxWidth);\n ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position));\n ctx.textBaseline = 'middle';\n ctx.strokeStyle = titleOpts.color;\n ctx.fillStyle = titleOpts.color;\n ctx.font = titleFont.string;\n renderText(ctx, titleOpts.text, x, y, titleFont);\n }\n _computeTitleHeight() {\n const titleOpts = this.options.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0;\n }\n _getLegendItemAt(x, y) {\n let i, hitBox, lh;\n if (_isBetween(x, this.left, this.right)\n && _isBetween(y, this.top, this.bottom)) {\n lh = this.legendHitBoxes;\n for (i = 0; i < lh.length; ++i) {\n hitBox = lh[i];\n if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width)\n && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) {\n return this.legendItems[i];\n }\n }\n }\n return null;\n }\n handleEvent(e) {\n const opts = this.options;\n if (!isListened(e.type, opts)) {\n return;\n }\n const hoveredItem = this._getLegendItemAt(e.x, e.y);\n if (e.type === 'mousemove' || e.type === 'mouseout') {\n const previous = this._hoveredItem;\n const sameItem = itemsEqual(previous, hoveredItem);\n if (previous && !sameItem) {\n callback(opts.onLeave, [e, previous, this], this);\n }\n this._hoveredItem = hoveredItem;\n if (hoveredItem && !sameItem) {\n callback(opts.onHover, [e, hoveredItem, this], this);\n }\n } else if (hoveredItem) {\n callback(opts.onClick, [e, hoveredItem, this], this);\n }\n }\n}\nfunction isListened(type, opts) {\n if ((type === 'mousemove' || type === 'mouseout') && (opts.onHover || opts.onLeave)) {\n return true;\n }\n if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n return true;\n }\n return false;\n}\nvar plugin_legend = {\n id: 'legend',\n _element: Legend,\n start(chart, _args, options) {\n const legend = chart.legend = new Legend({ctx: chart.ctx, options, chart});\n layouts.configure(chart, legend, options);\n layouts.addBox(chart, legend);\n },\n stop(chart) {\n layouts.removeBox(chart, chart.legend);\n delete chart.legend;\n },\n beforeUpdate(chart, _args, options) {\n const legend = chart.legend;\n layouts.configure(chart, legend, options);\n legend.options = options;\n },\n afterUpdate(chart) {\n const legend = chart.legend;\n legend.buildLabels();\n legend.adjustHitBoxes();\n },\n afterEvent(chart, args) {\n if (!args.replay) {\n chart.legend.handleEvent(args.event);\n }\n },\n defaults: {\n display: true,\n position: 'top',\n align: 'center',\n fullSize: true,\n reverse: false,\n weight: 1000,\n onClick(e, legendItem, legend) {\n const index = legendItem.datasetIndex;\n const ci = legend.chart;\n if (ci.isDatasetVisible(index)) {\n ci.hide(index);\n legendItem.hidden = true;\n } else {\n ci.show(index);\n legendItem.hidden = false;\n }\n },\n onHover: null,\n onLeave: null,\n labels: {\n color: (ctx) => ctx.chart.options.color,\n boxWidth: 40,\n padding: 10,\n generateLabels(chart) {\n const datasets = chart.data.datasets;\n const {labels: {usePointStyle, pointStyle, textAlign, color}} = chart.legend.options;\n return chart._getSortedDatasetMetas().map((meta) => {\n const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n const borderWidth = toPadding(style.borderWidth);\n return {\n text: datasets[meta.index].label,\n fillStyle: style.backgroundColor,\n fontColor: color,\n hidden: !meta.visible,\n lineCap: style.borderCapStyle,\n lineDash: style.borderDash,\n lineDashOffset: style.borderDashOffset,\n lineJoin: style.borderJoinStyle,\n lineWidth: (borderWidth.width + borderWidth.height) / 4,\n strokeStyle: style.borderColor,\n pointStyle: pointStyle || style.pointStyle,\n rotation: style.rotation,\n textAlign: textAlign || style.textAlign,\n borderRadius: 0,\n datasetIndex: meta.index\n };\n }, this);\n }\n },\n title: {\n color: (ctx) => ctx.chart.options.color,\n display: false,\n position: 'center',\n text: '',\n }\n },\n descriptors: {\n _scriptable: (name) => !name.startsWith('on'),\n labels: {\n _scriptable: (name) => !['generateLabels', 'filter', 'sort'].includes(name),\n }\n },\n};\n\nclass Title extends Element {\n constructor(config) {\n super();\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this._padding = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight) {\n const opts = this.options;\n this.left = 0;\n this.top = 0;\n if (!opts.display) {\n this.width = this.height = this.right = this.bottom = 0;\n return;\n }\n this.width = this.right = maxWidth;\n this.height = this.bottom = maxHeight;\n const lineCount = isArray(opts.text) ? opts.text.length : 1;\n this._padding = toPadding(opts.padding);\n const textSize = lineCount * toFont(opts.font).lineHeight + this._padding.height;\n if (this.isHorizontal()) {\n this.height = textSize;\n } else {\n this.width = textSize;\n }\n }\n isHorizontal() {\n const pos = this.options.position;\n return pos === 'top' || pos === 'bottom';\n }\n _drawArgs(offset) {\n const {top, left, bottom, right, options} = this;\n const align = options.align;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n if (this.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n titleY = top + offset;\n maxWidth = right - left;\n } else {\n if (options.position === 'left') {\n titleX = left + offset;\n titleY = _alignStartEnd(align, bottom, top);\n rotation = PI * -0.5;\n } else {\n titleX = right - offset;\n titleY = _alignStartEnd(align, top, bottom);\n rotation = PI * 0.5;\n }\n maxWidth = bottom - top;\n }\n return {titleX, titleY, maxWidth, rotation};\n }\n draw() {\n const ctx = this.ctx;\n const opts = this.options;\n if (!opts.display) {\n return;\n }\n const fontOpts = toFont(opts.font);\n const lineHeight = fontOpts.lineHeight;\n const offset = lineHeight / 2 + this._padding.top;\n const {titleX, titleY, maxWidth, rotation} = this._drawArgs(offset);\n renderText(ctx, opts.text, 0, 0, fontOpts, {\n color: opts.color,\n maxWidth,\n rotation,\n textAlign: _toLeftRightCenter(opts.align),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n}\nfunction createTitle(chart, titleOpts) {\n const title = new Title({\n ctx: chart.ctx,\n options: titleOpts,\n chart\n });\n layouts.configure(chart, title, titleOpts);\n layouts.addBox(chart, title);\n chart.titleBlock = title;\n}\nvar plugin_title = {\n id: 'title',\n _element: Title,\n start(chart, _args, options) {\n createTitle(chart, options);\n },\n stop(chart) {\n const titleBlock = chart.titleBlock;\n layouts.removeBox(chart, titleBlock);\n delete chart.titleBlock;\n },\n beforeUpdate(chart, _args, options) {\n const title = chart.titleBlock;\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'bold',\n },\n fullSize: true,\n padding: 10,\n position: 'top',\n text: '',\n weight: 2000\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n\nconst map = new WeakMap();\nvar plugin_subtitle = {\n id: 'subtitle',\n start(chart, _args, options) {\n const title = new Title({\n ctx: chart.ctx,\n options,\n chart\n });\n layouts.configure(chart, title, options);\n layouts.addBox(chart, title);\n map.set(chart, title);\n },\n stop(chart) {\n layouts.removeBox(chart, map.get(chart));\n map.delete(chart);\n },\n beforeUpdate(chart, _args, options) {\n const title = map.get(chart);\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'normal',\n },\n fullSize: true,\n padding: 0,\n position: 'top',\n text: '',\n weight: 1500\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n\nconst positioners = {\n average(items) {\n if (!items.length) {\n return false;\n }\n let i, len;\n let x = 0;\n let y = 0;\n let count = 0;\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const pos = el.tooltipPosition();\n x += pos.x;\n y += pos.y;\n ++count;\n }\n }\n return {\n x: x / count,\n y: y / count\n };\n },\n nearest(items, eventPosition) {\n if (!items.length) {\n return false;\n }\n let x = eventPosition.x;\n let y = eventPosition.y;\n let minDistance = Number.POSITIVE_INFINITY;\n let i, len, nearestElement;\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const center = el.getCenterPoint();\n const d = distanceBetweenPoints(eventPosition, center);\n if (d < minDistance) {\n minDistance = d;\n nearestElement = el;\n }\n }\n }\n if (nearestElement) {\n const tp = nearestElement.tooltipPosition();\n x = tp.x;\n y = tp.y;\n }\n return {\n x,\n y\n };\n }\n};\nfunction pushOrConcat(base, toPush) {\n if (toPush) {\n if (isArray(toPush)) {\n Array.prototype.push.apply(base, toPush);\n } else {\n base.push(toPush);\n }\n }\n return base;\n}\nfunction splitNewlines(str) {\n if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n return str.split('\\n');\n }\n return str;\n}\nfunction createTooltipItem(chart, item) {\n const {element, datasetIndex, index} = item;\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n const {label, value} = controller.getLabelAndValue(index);\n return {\n chart,\n label,\n parsed: controller.getParsed(index),\n raw: chart.data.datasets[datasetIndex].data[index],\n formattedValue: value,\n dataset: controller.getDataset(),\n dataIndex: index,\n datasetIndex,\n element\n };\n}\nfunction getTooltipSize(tooltip, options) {\n const ctx = tooltip.chart.ctx;\n const {body, footer, title} = tooltip;\n const {boxWidth, boxHeight} = options;\n const bodyFont = toFont(options.bodyFont);\n const titleFont = toFont(options.titleFont);\n const footerFont = toFont(options.footerFont);\n const titleLineCount = title.length;\n const footerLineCount = footer.length;\n const bodyLineItemCount = body.length;\n const padding = toPadding(options.padding);\n let height = padding.height;\n let width = 0;\n let combinedBodyLength = body.reduce((count, bodyItem) => count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0);\n combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;\n if (titleLineCount) {\n height += titleLineCount * titleFont.lineHeight\n\t\t\t+ (titleLineCount - 1) * options.titleSpacing\n\t\t\t+ options.titleMarginBottom;\n }\n if (combinedBodyLength) {\n const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n height += bodyLineItemCount * bodyLineHeight\n\t\t\t+ (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight\n\t\t\t+ (combinedBodyLength - 1) * options.bodySpacing;\n }\n if (footerLineCount) {\n height += options.footerMarginTop\n\t\t\t+ footerLineCount * footerFont.lineHeight\n\t\t\t+ (footerLineCount - 1) * options.footerSpacing;\n }\n let widthPadding = 0;\n const maxLineWidth = function(line) {\n width = Math.max(width, ctx.measureText(line).width + widthPadding);\n };\n ctx.save();\n ctx.font = titleFont.string;\n each(tooltip.title, maxLineWidth);\n ctx.font = bodyFont.string;\n each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n widthPadding = options.displayColors ? (boxWidth + 2 + options.boxPadding) : 0;\n each(body, (bodyItem) => {\n each(bodyItem.before, maxLineWidth);\n each(bodyItem.lines, maxLineWidth);\n each(bodyItem.after, maxLineWidth);\n });\n widthPadding = 0;\n ctx.font = footerFont.string;\n each(tooltip.footer, maxLineWidth);\n ctx.restore();\n width += padding.width;\n return {width, height};\n}\nfunction determineYAlign(chart, size) {\n const {y, height} = size;\n if (y < height / 2) {\n return 'top';\n } else if (y > (chart.height - height / 2)) {\n return 'bottom';\n }\n return 'center';\n}\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n const {x, width} = size;\n const caret = options.caretSize + options.caretPadding;\n if (xAlign === 'left' && x + width + caret > chart.width) {\n return true;\n }\n if (xAlign === 'right' && x - width - caret < 0) {\n return true;\n }\n}\nfunction determineXAlign(chart, options, size, yAlign) {\n const {x, width} = size;\n const {width: chartWidth, chartArea: {left, right}} = chart;\n let xAlign = 'center';\n if (yAlign === 'center') {\n xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n } else if (x <= width / 2) {\n xAlign = 'left';\n } else if (x >= chartWidth - width / 2) {\n xAlign = 'right';\n }\n if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n xAlign = 'center';\n }\n return xAlign;\n}\nfunction determineAlignment(chart, options, size) {\n const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n return {\n xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n yAlign\n };\n}\nfunction alignX(size, xAlign) {\n let {x, width} = size;\n if (xAlign === 'right') {\n x -= width;\n } else if (xAlign === 'center') {\n x -= (width / 2);\n }\n return x;\n}\nfunction alignY(size, yAlign, paddingAndSize) {\n let {y, height} = size;\n if (yAlign === 'top') {\n y += paddingAndSize;\n } else if (yAlign === 'bottom') {\n y -= height + paddingAndSize;\n } else {\n y -= (height / 2);\n }\n return y;\n}\nfunction getBackgroundPoint(options, size, alignment, chart) {\n const {caretSize, caretPadding, cornerRadius} = options;\n const {xAlign, yAlign} = alignment;\n const paddingAndSize = caretSize + caretPadding;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n let x = alignX(size, xAlign);\n const y = alignY(size, yAlign, paddingAndSize);\n if (yAlign === 'center') {\n if (xAlign === 'left') {\n x += paddingAndSize;\n } else if (xAlign === 'right') {\n x -= paddingAndSize;\n }\n } else if (xAlign === 'left') {\n x -= Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x += Math.max(topRight, bottomRight) + caretSize;\n }\n return {\n x: _limitValue(x, 0, chart.width - size.width),\n y: _limitValue(y, 0, chart.height - size.height)\n };\n}\nfunction getAlignedX(tooltip, align, options) {\n const padding = toPadding(options.padding);\n return align === 'center'\n ? tooltip.x + tooltip.width / 2\n : align === 'right'\n ? tooltip.x + tooltip.width - padding.right\n : tooltip.x + padding.left;\n}\nfunction getBeforeAfterBodyLines(callback) {\n return pushOrConcat([], splitNewlines(callback));\n}\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n return createContext(parent, {\n tooltip,\n tooltipItems,\n type: 'tooltip'\n });\n}\nfunction overrideCallbacks(callbacks, context) {\n const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n return override ? callbacks.override(override) : callbacks;\n}\nclass Tooltip extends Element {\n constructor(config) {\n super();\n this.opacity = 0;\n this._active = [];\n this._eventPosition = undefined;\n this._size = undefined;\n this._cachedAnimations = undefined;\n this._tooltipItems = [];\n this.$animations = undefined;\n this.$context = undefined;\n this.chart = config.chart || config._chart;\n this._chart = this.chart;\n this.options = config.options;\n this.dataPoints = undefined;\n this.title = undefined;\n this.beforeBody = undefined;\n this.body = undefined;\n this.afterBody = undefined;\n this.footer = undefined;\n this.xAlign = undefined;\n this.yAlign = undefined;\n this.x = undefined;\n this.y = undefined;\n this.height = undefined;\n this.width = undefined;\n this.caretX = undefined;\n this.caretY = undefined;\n this.labelColors = undefined;\n this.labelPointStyles = undefined;\n this.labelTextColors = undefined;\n }\n initialize(options) {\n this.options = options;\n this._cachedAnimations = undefined;\n this.$context = undefined;\n }\n _resolveAnimations() {\n const cached = this._cachedAnimations;\n if (cached) {\n return cached;\n }\n const chart = this.chart;\n const options = this.options.setContext(this.getContext());\n const opts = options.enabled && chart.options.animation && options.animations;\n const animations = new Animations(this.chart, opts);\n if (opts._cacheable) {\n this._cachedAnimations = Object.freeze(animations);\n }\n return animations;\n }\n getContext() {\n return this.$context ||\n\t\t\t(this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n }\n getTitle(context, options) {\n const {callbacks} = options;\n const beforeTitle = callbacks.beforeTitle.apply(this, [context]);\n const title = callbacks.title.apply(this, [context]);\n const afterTitle = callbacks.afterTitle.apply(this, [context]);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n lines = pushOrConcat(lines, splitNewlines(title));\n lines = pushOrConcat(lines, splitNewlines(afterTitle));\n return lines;\n }\n getBeforeBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(options.callbacks.beforeBody.apply(this, [tooltipItems]));\n }\n getBody(tooltipItems, options) {\n const {callbacks} = options;\n const bodyItems = [];\n each(tooltipItems, (context) => {\n const bodyItem = {\n before: [],\n lines: [],\n after: []\n };\n const scoped = overrideCallbacks(callbacks, context);\n pushOrConcat(bodyItem.before, splitNewlines(scoped.beforeLabel.call(this, context)));\n pushOrConcat(bodyItem.lines, scoped.label.call(this, context));\n pushOrConcat(bodyItem.after, splitNewlines(scoped.afterLabel.call(this, context)));\n bodyItems.push(bodyItem);\n });\n return bodyItems;\n }\n getAfterBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(options.callbacks.afterBody.apply(this, [tooltipItems]));\n }\n getFooter(tooltipItems, options) {\n const {callbacks} = options;\n const beforeFooter = callbacks.beforeFooter.apply(this, [tooltipItems]);\n const footer = callbacks.footer.apply(this, [tooltipItems]);\n const afterFooter = callbacks.afterFooter.apply(this, [tooltipItems]);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n lines = pushOrConcat(lines, splitNewlines(footer));\n lines = pushOrConcat(lines, splitNewlines(afterFooter));\n return lines;\n }\n _createItems(options) {\n const active = this._active;\n const data = this.chart.data;\n const labelColors = [];\n const labelPointStyles = [];\n const labelTextColors = [];\n let tooltipItems = [];\n let i, len;\n for (i = 0, len = active.length; i < len; ++i) {\n tooltipItems.push(createTooltipItem(this.chart, active[i]));\n }\n if (options.filter) {\n tooltipItems = tooltipItems.filter((element, index, array) => options.filter(element, index, array, data));\n }\n if (options.itemSort) {\n tooltipItems = tooltipItems.sort((a, b) => options.itemSort(a, b, data));\n }\n each(tooltipItems, (context) => {\n const scoped = overrideCallbacks(options.callbacks, context);\n labelColors.push(scoped.labelColor.call(this, context));\n labelPointStyles.push(scoped.labelPointStyle.call(this, context));\n labelTextColors.push(scoped.labelTextColor.call(this, context));\n });\n this.labelColors = labelColors;\n this.labelPointStyles = labelPointStyles;\n this.labelTextColors = labelTextColors;\n this.dataPoints = tooltipItems;\n return tooltipItems;\n }\n update(changed, replay) {\n const options = this.options.setContext(this.getContext());\n const active = this._active;\n let properties;\n let tooltipItems = [];\n if (!active.length) {\n if (this.opacity !== 0) {\n properties = {\n opacity: 0\n };\n }\n } else {\n const position = positioners[options.position].call(this, active, this._eventPosition);\n tooltipItems = this._createItems(options);\n this.title = this.getTitle(tooltipItems, options);\n this.beforeBody = this.getBeforeBody(tooltipItems, options);\n this.body = this.getBody(tooltipItems, options);\n this.afterBody = this.getAfterBody(tooltipItems, options);\n this.footer = this.getFooter(tooltipItems, options);\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, size);\n const alignment = determineAlignment(this.chart, options, positionAndSize);\n const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart);\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n properties = {\n opacity: 1,\n x: backgroundPoint.x,\n y: backgroundPoint.y,\n width: size.width,\n height: size.height,\n caretX: position.x,\n caretY: position.y\n };\n }\n this._tooltipItems = tooltipItems;\n this.$context = undefined;\n if (properties) {\n this._resolveAnimations().update(this, properties);\n }\n if (changed && options.external) {\n options.external.call(this, {chart: this.chart, tooltip: this, replay});\n }\n }\n drawCaret(tooltipPoint, ctx, size, options) {\n const caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n ctx.lineTo(caretPosition.x1, caretPosition.y1);\n ctx.lineTo(caretPosition.x2, caretPosition.y2);\n ctx.lineTo(caretPosition.x3, caretPosition.y3);\n }\n getCaretPosition(tooltipPoint, size, options) {\n const {xAlign, yAlign} = this;\n const {caretSize, cornerRadius} = options;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n const {x: ptX, y: ptY} = tooltipPoint;\n const {width, height} = size;\n let x1, x2, x3, y1, y2, y3;\n if (yAlign === 'center') {\n y2 = ptY + (height / 2);\n if (xAlign === 'left') {\n x1 = ptX;\n x2 = x1 - caretSize;\n y1 = y2 + caretSize;\n y3 = y2 - caretSize;\n } else {\n x1 = ptX + width;\n x2 = x1 + caretSize;\n y1 = y2 - caretSize;\n y3 = y2 + caretSize;\n }\n x3 = x1;\n } else {\n if (xAlign === 'left') {\n x2 = ptX + Math.max(topLeft, bottomLeft) + (caretSize);\n } else if (xAlign === 'right') {\n x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize;\n } else {\n x2 = this.caretX;\n }\n if (yAlign === 'top') {\n y1 = ptY;\n y2 = y1 - caretSize;\n x1 = x2 - caretSize;\n x3 = x2 + caretSize;\n } else {\n y1 = ptY + height;\n y2 = y1 + caretSize;\n x1 = x2 + caretSize;\n x3 = x2 - caretSize;\n }\n y3 = y1;\n }\n return {x1, x2, x3, y1, y2, y3};\n }\n drawTitle(pt, ctx, options) {\n const title = this.title;\n const length = title.length;\n let titleFont, titleSpacing, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.titleAlign, options);\n ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n ctx.textBaseline = 'middle';\n titleFont = toFont(options.titleFont);\n titleSpacing = options.titleSpacing;\n ctx.fillStyle = options.titleColor;\n ctx.font = titleFont.string;\n for (i = 0; i < length; ++i) {\n ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n pt.y += titleFont.lineHeight + titleSpacing;\n if (i + 1 === length) {\n pt.y += options.titleMarginBottom - titleSpacing;\n }\n }\n }\n }\n _drawColorBox(ctx, pt, i, rtlHelper, options) {\n const labelColors = this.labelColors[i];\n const labelPointStyle = this.labelPointStyles[i];\n const {boxHeight, boxWidth, boxPadding} = options;\n const bodyFont = toFont(options.bodyFont);\n const colorX = getAlignedX(this, 'left', options);\n const rtlColorX = rtlHelper.x(colorX);\n const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n const colorY = pt.y + yOffSet;\n if (options.usePointStyle) {\n const drawOptions = {\n radius: Math.min(boxWidth, boxHeight) / 2,\n pointStyle: labelPointStyle.pointStyle,\n rotation: labelPointStyle.rotation,\n borderWidth: 1\n };\n const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n const centerY = colorY + boxHeight / 2;\n ctx.strokeStyle = options.multiKeyBackground;\n ctx.fillStyle = options.multiKeyBackground;\n drawPoint(ctx, drawOptions, centerX, centerY);\n ctx.strokeStyle = labelColors.borderColor;\n ctx.fillStyle = labelColors.backgroundColor;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n ctx.lineWidth = isObject(labelColors.borderWidth) ? Math.max(...Object.values(labelColors.borderWidth)) : (labelColors.borderWidth || 1);\n ctx.strokeStyle = labelColors.borderColor;\n ctx.setLineDash(labelColors.borderDash || []);\n ctx.lineDashOffset = labelColors.borderDashOffset || 0;\n const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth - boxPadding);\n const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - boxPadding - 2);\n const borderRadius = toTRBLCorners(labelColors.borderRadius);\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n ctx.fillStyle = options.multiKeyBackground;\n addRoundedRectPath(ctx, {\n x: outerX,\n y: colorY,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n ctx.fill();\n ctx.stroke();\n ctx.fillStyle = labelColors.backgroundColor;\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: innerX,\n y: colorY + 1,\n w: boxWidth - 2,\n h: boxHeight - 2,\n radius: borderRadius,\n });\n ctx.fill();\n } else {\n ctx.fillStyle = options.multiKeyBackground;\n ctx.fillRect(outerX, colorY, boxWidth, boxHeight);\n ctx.strokeRect(outerX, colorY, boxWidth, boxHeight);\n ctx.fillStyle = labelColors.backgroundColor;\n ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\n }\n }\n ctx.fillStyle = this.labelTextColors[i];\n }\n drawBody(pt, ctx, options) {\n const {body} = this;\n const {bodySpacing, bodyAlign, displayColors, boxHeight, boxWidth, boxPadding} = options;\n const bodyFont = toFont(options.bodyFont);\n let bodyLineHeight = bodyFont.lineHeight;\n let xLinePadding = 0;\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n const fillLineOfText = function(line) {\n ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n pt.y += bodyLineHeight + bodySpacing;\n };\n const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n let bodyItem, textColor, lines, i, j, ilen, jlen;\n ctx.textAlign = bodyAlign;\n ctx.textBaseline = 'middle';\n ctx.font = bodyFont.string;\n pt.x = getAlignedX(this, bodyAlignForCalculation, options);\n ctx.fillStyle = options.bodyColor;\n each(this.beforeBody, fillLineOfText);\n xLinePadding = displayColors && bodyAlignForCalculation !== 'right'\n ? bodyAlign === 'center' ? (boxWidth / 2 + boxPadding) : (boxWidth + 2 + boxPadding)\n : 0;\n for (i = 0, ilen = body.length; i < ilen; ++i) {\n bodyItem = body[i];\n textColor = this.labelTextColors[i];\n ctx.fillStyle = textColor;\n each(bodyItem.before, fillLineOfText);\n lines = bodyItem.lines;\n if (displayColors && lines.length) {\n this._drawColorBox(ctx, pt, i, rtlHelper, options);\n bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n }\n for (j = 0, jlen = lines.length; j < jlen; ++j) {\n fillLineOfText(lines[j]);\n bodyLineHeight = bodyFont.lineHeight;\n }\n each(bodyItem.after, fillLineOfText);\n }\n xLinePadding = 0;\n bodyLineHeight = bodyFont.lineHeight;\n each(this.afterBody, fillLineOfText);\n pt.y -= bodySpacing;\n }\n drawFooter(pt, ctx, options) {\n const footer = this.footer;\n const length = footer.length;\n let footerFont, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.footerAlign, options);\n pt.y += options.footerMarginTop;\n ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n ctx.textBaseline = 'middle';\n footerFont = toFont(options.footerFont);\n ctx.fillStyle = options.footerColor;\n ctx.font = footerFont.string;\n for (i = 0; i < length; ++i) {\n ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n pt.y += footerFont.lineHeight + options.footerSpacing;\n }\n }\n }\n drawBackground(pt, ctx, tooltipSize, options) {\n const {xAlign, yAlign} = this;\n const {x, y} = pt;\n const {width, height} = tooltipSize;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(options.cornerRadius);\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.beginPath();\n ctx.moveTo(x + topLeft, y);\n if (yAlign === 'top') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width - topRight, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + topRight);\n if (yAlign === 'center' && xAlign === 'right') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width, y + height - bottomRight);\n ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height);\n if (yAlign === 'bottom') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + bottomLeft, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft);\n if (yAlign === 'center' && xAlign === 'left') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x, y + topLeft);\n ctx.quadraticCurveTo(x, y, x + topLeft, y);\n ctx.closePath();\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n }\n _updateAnimationTarget(options) {\n const chart = this.chart;\n const anims = this.$animations;\n const animX = anims && anims.x;\n const animY = anims && anims.y;\n if (animX || animY) {\n const position = positioners[options.position].call(this, this._active, this._eventPosition);\n if (!position) {\n return;\n }\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, this._size);\n const alignment = determineAlignment(chart, options, positionAndSize);\n const point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n if (animX._to !== point.x || animY._to !== point.y) {\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n this.width = size.width;\n this.height = size.height;\n this.caretX = position.x;\n this.caretY = position.y;\n this._resolveAnimations().update(this, point);\n }\n }\n }\n _willRender() {\n return !!this.opacity;\n }\n draw(ctx) {\n const options = this.options.setContext(this.getContext());\n let opacity = this.opacity;\n if (!opacity) {\n return;\n }\n this._updateAnimationTarget(options);\n const tooltipSize = {\n width: this.width,\n height: this.height\n };\n const pt = {\n x: this.x,\n y: this.y\n };\n opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n const padding = toPadding(options.padding);\n const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n if (options.enabled && hasTooltipContent) {\n ctx.save();\n ctx.globalAlpha = opacity;\n this.drawBackground(pt, ctx, tooltipSize, options);\n overrideTextDirection(ctx, options.textDirection);\n pt.y += padding.top;\n this.drawTitle(pt, ctx, options);\n this.drawBody(pt, ctx, options);\n this.drawFooter(pt, ctx, options);\n restoreTextDirection(ctx, options.textDirection);\n ctx.restore();\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements, eventPosition) {\n const lastActive = this._active;\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.chart.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('Cannot find a dataset at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(lastActive, active);\n const positionChanged = this._positionChanged(active, eventPosition);\n if (changed || positionChanged) {\n this._active = active;\n this._eventPosition = eventPosition;\n this._ignoreReplayEvents = true;\n this.update(true);\n }\n }\n handleEvent(e, replay, inChartArea = true) {\n if (replay && this._ignoreReplayEvents) {\n return false;\n }\n this._ignoreReplayEvents = false;\n const options = this.options;\n const lastActive = this._active || [];\n const active = this._getActiveElements(e, lastActive, replay, inChartArea);\n const positionChanged = this._positionChanged(active, e);\n const changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n if (changed) {\n this._active = active;\n if (options.enabled || options.external) {\n this._eventPosition = {\n x: e.x,\n y: e.y\n };\n this.update(true, replay);\n }\n }\n return changed;\n }\n _getActiveElements(e, lastActive, replay, inChartArea) {\n const options = this.options;\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n if (options.reverse) {\n active.reverse();\n }\n return active;\n }\n _positionChanged(active, e) {\n const {caretX, caretY, options} = this;\n const position = positioners[options.position].call(this, active, e);\n return position !== false && (caretX !== position.x || caretY !== position.y);\n }\n}\nTooltip.positioners = positioners;\nvar plugin_tooltip = {\n id: 'tooltip',\n _element: Tooltip,\n positioners,\n afterInit(chart, _args, options) {\n if (options) {\n chart.tooltip = new Tooltip({chart, options});\n }\n },\n beforeUpdate(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n reset(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n afterDraw(chart) {\n const tooltip = chart.tooltip;\n if (tooltip && tooltip._willRender()) {\n const args = {\n tooltip\n };\n if (chart.notifyPlugins('beforeTooltipDraw', args) === false) {\n return;\n }\n tooltip.draw(chart.ctx);\n chart.notifyPlugins('afterTooltipDraw', args);\n }\n },\n afterEvent(chart, args) {\n if (chart.tooltip) {\n const useFinalPosition = args.replay;\n if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {\n args.changed = true;\n }\n }\n },\n defaults: {\n enabled: true,\n external: null,\n position: 'average',\n backgroundColor: 'rgba(0,0,0,0.8)',\n titleColor: '#fff',\n titleFont: {\n weight: 'bold',\n },\n titleSpacing: 2,\n titleMarginBottom: 6,\n titleAlign: 'left',\n bodyColor: '#fff',\n bodySpacing: 2,\n bodyFont: {\n },\n bodyAlign: 'left',\n footerColor: '#fff',\n footerSpacing: 2,\n footerMarginTop: 6,\n footerFont: {\n weight: 'bold',\n },\n footerAlign: 'left',\n padding: 6,\n caretPadding: 2,\n caretSize: 5,\n cornerRadius: 6,\n boxHeight: (ctx, opts) => opts.bodyFont.size,\n boxWidth: (ctx, opts) => opts.bodyFont.size,\n multiKeyBackground: '#fff',\n displayColors: true,\n boxPadding: 0,\n borderColor: 'rgba(0,0,0,0)',\n borderWidth: 0,\n animation: {\n duration: 400,\n easing: 'easeOutQuart',\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'width', 'height', 'caretX', 'caretY'],\n },\n opacity: {\n easing: 'linear',\n duration: 200\n }\n },\n callbacks: {\n beforeTitle: noop,\n title(tooltipItems) {\n if (tooltipItems.length > 0) {\n const item = tooltipItems[0];\n const labels = item.chart.data.labels;\n const labelCount = labels ? labels.length : 0;\n if (this && this.options && this.options.mode === 'dataset') {\n return item.dataset.label || '';\n } else if (item.label) {\n return item.label;\n } else if (labelCount > 0 && item.dataIndex < labelCount) {\n return labels[item.dataIndex];\n }\n }\n return '';\n },\n afterTitle: noop,\n beforeBody: noop,\n beforeLabel: noop,\n label(tooltipItem) {\n if (this && this.options && this.options.mode === 'dataset') {\n return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n }\n let label = tooltipItem.dataset.label || '';\n if (label) {\n label += ': ';\n }\n const value = tooltipItem.formattedValue;\n if (!isNullOrUndef(value)) {\n label += value;\n }\n return label;\n },\n labelColor(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n borderColor: options.borderColor,\n backgroundColor: options.backgroundColor,\n borderWidth: options.borderWidth,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderRadius: 0,\n };\n },\n labelTextColor() {\n return this.options.bodyColor;\n },\n labelPointStyle(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n pointStyle: options.pointStyle,\n rotation: options.rotation,\n };\n },\n afterLabel: noop,\n afterBody: noop,\n beforeFooter: noop,\n footer: noop,\n afterFooter: noop\n }\n },\n defaultRoutes: {\n bodyFont: 'font',\n footerFont: 'font',\n titleFont: 'font'\n },\n descriptors: {\n _scriptable: (name) => name !== 'filter' && name !== 'itemSort' && name !== 'external',\n _indexable: false,\n callbacks: {\n _scriptable: false,\n _indexable: false,\n },\n animation: {\n _fallback: false\n },\n animations: {\n _fallback: 'animation'\n }\n },\n additionalOptionScopes: ['interaction']\n};\n\nvar plugins = /*#__PURE__*/Object.freeze({\n__proto__: null,\nDecimation: plugin_decimation,\nFiller: index,\nLegend: plugin_legend,\nSubTitle: plugin_subtitle,\nTitle: plugin_title,\nTooltip: plugin_tooltip\n});\n\nconst addIfString = (labels, raw, index, addedLabels) => {\n if (typeof raw === 'string') {\n index = labels.push(raw) - 1;\n addedLabels.unshift({index, label: raw});\n } else if (isNaN(raw)) {\n index = null;\n }\n return index;\n};\nfunction findOrAddLabel(labels, raw, index, addedLabels) {\n const first = labels.indexOf(raw);\n if (first === -1) {\n return addIfString(labels, raw, index, addedLabels);\n }\n const last = labels.lastIndexOf(raw);\n return first !== last ? index : first;\n}\nconst validIndex = (index, max) => index === null ? null : _limitValue(Math.round(index), 0, max);\nclass CategoryScale extends Scale {\n constructor(cfg) {\n super(cfg);\n this._startValue = undefined;\n this._valueRange = 0;\n this._addedLabels = [];\n }\n init(scaleOptions) {\n const added = this._addedLabels;\n if (added.length) {\n const labels = this.getLabels();\n for (const {index, label} of added) {\n if (labels[index] === label) {\n labels.splice(index, 1);\n }\n }\n this._addedLabels = [];\n }\n super.init(scaleOptions);\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n const labels = this.getLabels();\n index = isFinite(index) && labels[index] === raw ? index\n : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels);\n return validIndex(index, labels.length - 1);\n }\n determineDataLimits() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this.getMinMax(true);\n if (this.options.bounds === 'ticks') {\n if (!minDefined) {\n min = 0;\n }\n if (!maxDefined) {\n max = this.getLabels().length - 1;\n }\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const min = this.min;\n const max = this.max;\n const offset = this.options.offset;\n const ticks = [];\n let labels = this.getLabels();\n labels = (min === 0 && max === labels.length - 1) ? labels : labels.slice(min, max + 1);\n this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n this._startValue = this.min - (offset ? 0.5 : 0);\n for (let value = min; value <= max; value++) {\n ticks.push({value});\n }\n return ticks;\n }\n getLabelForValue(value) {\n const labels = this.getLabels();\n if (value >= 0 && value < labels.length) {\n return labels[value];\n }\n return value;\n }\n configure() {\n super.configure();\n if (!this.isHorizontal()) {\n this._reversePixels = !this._reversePixels;\n }\n }\n getPixelForValue(value) {\n if (typeof value !== 'number') {\n value = this.parse(value);\n }\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getValueForPixel(pixel) {\n return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n }\n getBasePixel() {\n return this.bottom;\n }\n}\nCategoryScale.id = 'category';\nCategoryScale.defaults = {\n ticks: {\n callback: CategoryScale.prototype.getLabelForValue\n }\n};\n\nfunction generateTicks$1(generationOptions, dataRange) {\n const ticks = [];\n const MIN_SPACING = 1e-14;\n const {bounds, step, min, max, precision, count, maxTicks, maxDigits, includeBounds} = generationOptions;\n const unit = step || 1;\n const maxSpaces = maxTicks - 1;\n const {min: rmin, max: rmax} = dataRange;\n const minDefined = !isNullOrUndef(min);\n const maxDefined = !isNullOrUndef(max);\n const countDefined = !isNullOrUndef(count);\n const minSpacing = (rmax - rmin) / (maxDigits + 1);\n let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n let factor, niceMin, niceMax, numSpaces;\n if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n return [{value: rmin}, {value: rmax}];\n }\n numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n if (numSpaces > maxSpaces) {\n spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n }\n if (!isNullOrUndef(precision)) {\n factor = Math.pow(10, precision);\n spacing = Math.ceil(spacing * factor) / factor;\n }\n if (bounds === 'ticks') {\n niceMin = Math.floor(rmin / spacing) * spacing;\n niceMax = Math.ceil(rmax / spacing) * spacing;\n } else {\n niceMin = rmin;\n niceMax = rmax;\n }\n if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks));\n spacing = (max - min) / numSpaces;\n niceMin = min;\n niceMax = max;\n } else if (countDefined) {\n niceMin = minDefined ? min : niceMin;\n niceMax = maxDefined ? max : niceMax;\n numSpaces = count - 1;\n spacing = (niceMax - niceMin) / numSpaces;\n } else {\n numSpaces = (niceMax - niceMin) / spacing;\n if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n numSpaces = Math.round(numSpaces);\n } else {\n numSpaces = Math.ceil(numSpaces);\n }\n }\n const decimalPlaces = Math.max(\n _decimalPlaces(spacing),\n _decimalPlaces(niceMin)\n );\n factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision);\n niceMin = Math.round(niceMin * factor) / factor;\n niceMax = Math.round(niceMax * factor) / factor;\n let j = 0;\n if (minDefined) {\n if (includeBounds && niceMin !== min) {\n ticks.push({value: min});\n if (niceMin < min) {\n j++;\n }\n if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n j++;\n }\n } else if (niceMin < min) {\n j++;\n }\n }\n for (; j < numSpaces; ++j) {\n ticks.push({value: Math.round((niceMin + j * spacing) * factor) / factor});\n }\n if (maxDefined && includeBounds && niceMax !== max) {\n if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n ticks[ticks.length - 1].value = max;\n } else {\n ticks.push({value: max});\n }\n } else if (!maxDefined || niceMax === max) {\n ticks.push({value: niceMax});\n }\n return ticks;\n}\nfunction relativeLabelSize(value, minSpacing, {horizontal, minRotation}) {\n const rad = toRadians(minRotation);\n const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n const length = 0.75 * minSpacing * ('' + value).length;\n return Math.min(minSpacing / ratio, length);\n}\nclass LinearScaleBase extends Scale {\n constructor(cfg) {\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._endValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n return null;\n }\n return +raw;\n }\n handleTickRangeOptions() {\n const {beginAtZero} = this.options;\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this;\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n if (beginAtZero) {\n const minSign = sign(min);\n const maxSign = sign(max);\n if (minSign < 0 && maxSign < 0) {\n setMax(0);\n } else if (minSign > 0 && maxSign > 0) {\n setMin(0);\n }\n }\n if (min === max) {\n let offset = 1;\n if (max >= Number.MAX_SAFE_INTEGER || min <= Number.MIN_SAFE_INTEGER) {\n offset = Math.abs(max * 0.05);\n }\n setMax(max + offset);\n if (!beginAtZero) {\n setMin(min - offset);\n }\n }\n this.min = min;\n this.max = max;\n }\n getTickLimit() {\n const tickOpts = this.options.ticks;\n let {maxTicksLimit, stepSize} = tickOpts;\n let maxTicks;\n if (stepSize) {\n maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;\n if (maxTicks > 1000) {\n console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`);\n maxTicks = 1000;\n }\n } else {\n maxTicks = this.computeTickLimit();\n maxTicksLimit = maxTicksLimit || 11;\n }\n if (maxTicksLimit) {\n maxTicks = Math.min(maxTicksLimit, maxTicks);\n }\n return maxTicks;\n }\n computeTickLimit() {\n return Number.POSITIVE_INFINITY;\n }\n buildTicks() {\n const opts = this.options;\n const tickOpts = opts.ticks;\n let maxTicks = this.getTickLimit();\n maxTicks = Math.max(2, maxTicks);\n const numericGeneratorOptions = {\n maxTicks,\n bounds: opts.bounds,\n min: opts.min,\n max: opts.max,\n precision: tickOpts.precision,\n step: tickOpts.stepSize,\n count: tickOpts.count,\n maxDigits: this._maxDigits(),\n horizontal: this.isHorizontal(),\n minRotation: tickOpts.minRotation || 0,\n includeBounds: tickOpts.includeBounds !== false\n };\n const dataRange = this._range || this;\n const ticks = generateTicks$1(numericGeneratorOptions, dataRange);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n configure() {\n const ticks = this.ticks;\n let start = this.min;\n let end = this.max;\n super.configure();\n if (this.options.offset && ticks.length) {\n const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n start -= offset;\n end += offset;\n }\n this._startValue = start;\n this._endValue = end;\n this._valueRange = end - start;\n }\n getLabelForValue(value) {\n return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n}\n\nclass LinearScale extends LinearScaleBase {\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n this.min = isNumberFinite(min) ? min : 0;\n this.max = isNumberFinite(max) ? max : 1;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n const horizontal = this.isHorizontal();\n const length = horizontal ? this.width : this.height;\n const minRotation = toRadians(this.options.ticks.minRotation);\n const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n const tickFont = this._resolveTickFontOptions(0);\n return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n }\n getPixelForValue(value) {\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n }\n}\nLinearScale.id = 'linear';\nLinearScale.defaults = {\n ticks: {\n callback: Ticks.formatters.numeric\n }\n};\n\nfunction isMajor(tickVal) {\n const remain = tickVal / (Math.pow(10, Math.floor(log10(tickVal))));\n return remain === 1;\n}\nfunction generateTicks(generationOptions, dataRange) {\n const endExp = Math.floor(log10(dataRange.max));\n const endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\n const ticks = [];\n let tickVal = finiteOrDefault(generationOptions.min, Math.pow(10, Math.floor(log10(dataRange.min))));\n let exp = Math.floor(log10(tickVal));\n let significand = Math.floor(tickVal / Math.pow(10, exp));\n let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n do {\n ticks.push({value: tickVal, major: isMajor(tickVal)});\n ++significand;\n if (significand === 10) {\n significand = 1;\n ++exp;\n precision = exp >= 0 ? 1 : precision;\n }\n tickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\n } while (exp < endExp || (exp === endExp && significand < endSignificand));\n const lastTick = finiteOrDefault(generationOptions.max, tickVal);\n ticks.push({value: lastTick, major: isMajor(tickVal)});\n return ticks;\n}\nclass LogarithmicScale extends Scale {\n constructor(cfg) {\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n const value = LinearScaleBase.prototype.parse.apply(this, [raw, index]);\n if (value === 0) {\n this._zero = true;\n return undefined;\n }\n return isNumberFinite(value) && value > 0 ? value : null;\n }\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n this.min = isNumberFinite(min) ? Math.max(0, min) : null;\n this.max = isNumberFinite(max) ? Math.max(0, max) : null;\n if (this.options.beginAtZero) {\n this._zero = true;\n }\n this.handleTickRangeOptions();\n }\n handleTickRangeOptions() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let min = this.min;\n let max = this.max;\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n const exp = (v, m) => Math.pow(10, Math.floor(log10(v)) + m);\n if (min === max) {\n if (min <= 0) {\n setMin(1);\n setMax(10);\n } else {\n setMin(exp(min, -1));\n setMax(exp(max, +1));\n }\n }\n if (min <= 0) {\n setMin(exp(max, -1));\n }\n if (max <= 0) {\n setMax(exp(min, +1));\n }\n if (this._zero && this.min !== this._suggestedMin && min === exp(this.min, 0)) {\n setMin(exp(min, -1));\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const opts = this.options;\n const generationOptions = {\n min: this._userMin,\n max: this._userMax\n };\n const ticks = generateTicks(generationOptions, this);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n getLabelForValue(value) {\n return value === undefined\n ? '0'\n : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n configure() {\n const start = this.min;\n super.configure();\n this._startValue = log10(start);\n this._valueRange = log10(this.max) - log10(start);\n }\n getPixelForValue(value) {\n if (value === undefined || value === 0) {\n value = this.min;\n }\n if (value === null || isNaN(value)) {\n return NaN;\n }\n return this.getPixelForDecimal(value === this.min\n ? 0\n : (log10(value) - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n const decimal = this.getDecimalForPixel(pixel);\n return Math.pow(10, this._startValue + decimal * this._valueRange);\n }\n}\nLogarithmicScale.id = 'logarithmic';\nLogarithmicScale.defaults = {\n ticks: {\n callback: Ticks.formatters.logarithmic,\n major: {\n enabled: true\n }\n }\n};\n\nfunction getTickBackdropHeight(opts) {\n const tickOpts = opts.ticks;\n if (tickOpts.display && opts.display) {\n const padding = toPadding(tickOpts.backdropPadding);\n return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height;\n }\n return 0;\n}\nfunction measureLabelSize(ctx, font, label) {\n label = isArray(label) ? label : [label];\n return {\n w: _longestText(ctx, font.string, label),\n h: label.length * font.lineHeight\n };\n}\nfunction determineLimits(angle, pos, size, min, max) {\n if (angle === min || angle === max) {\n return {\n start: pos - (size / 2),\n end: pos + (size / 2)\n };\n } else if (angle < min || angle > max) {\n return {\n start: pos - size,\n end: pos\n };\n }\n return {\n start: pos,\n end: pos + size\n };\n}\nfunction fitWithPointLabels(scale) {\n const orig = {\n l: scale.left + scale._padding.left,\n r: scale.right - scale._padding.right,\n t: scale.top + scale._padding.top,\n b: scale.bottom - scale._padding.bottom\n };\n const limits = Object.assign({}, orig);\n const labelSizes = [];\n const padding = [];\n const valueCount = scale._pointLabels.length;\n const pointLabelOpts = scale.options.pointLabels;\n const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;\n for (let i = 0; i < valueCount; i++) {\n const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));\n padding[i] = opts.padding;\n const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);\n const plFont = toFont(opts.font);\n const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);\n labelSizes[i] = textSize;\n const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\n const angle = Math.round(toDegrees(angleRadians));\n const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n updateLimits(limits, orig, angleRadians, hLimits, vLimits);\n }\n scale.setCenterPoint(\n orig.l - limits.l,\n limits.r - orig.r,\n orig.t - limits.t,\n limits.b - orig.b\n );\n scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);\n}\nfunction updateLimits(limits, orig, angle, hLimits, vLimits) {\n const sin = Math.abs(Math.sin(angle));\n const cos = Math.abs(Math.cos(angle));\n let x = 0;\n let y = 0;\n if (hLimits.start < orig.l) {\n x = (orig.l - hLimits.start) / sin;\n limits.l = Math.min(limits.l, orig.l - x);\n } else if (hLimits.end > orig.r) {\n x = (hLimits.end - orig.r) / sin;\n limits.r = Math.max(limits.r, orig.r + x);\n }\n if (vLimits.start < orig.t) {\n y = (orig.t - vLimits.start) / cos;\n limits.t = Math.min(limits.t, orig.t - y);\n } else if (vLimits.end > orig.b) {\n y = (vLimits.end - orig.b) / cos;\n limits.b = Math.max(limits.b, orig.b + y);\n }\n}\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n const items = [];\n const valueCount = scale._pointLabels.length;\n const opts = scale.options;\n const extra = getTickBackdropHeight(opts) / 2;\n const outerDistance = scale.drawingArea;\n const additionalAngle = opts.pointLabels.centerPointLabels ? PI / valueCount : 0;\n for (let i = 0; i < valueCount; i++) {\n const pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + padding[i], additionalAngle);\n const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n const size = labelSizes[i];\n const y = yForAngle(pointLabelPosition.y, size.h, angle);\n const textAlign = getTextAlignForAngle(angle);\n const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n items.push({\n x: pointLabelPosition.x,\n y,\n textAlign,\n left,\n top: y,\n right: left + size.w,\n bottom: y + size.h\n });\n }\n return items;\n}\nfunction getTextAlignForAngle(angle) {\n if (angle === 0 || angle === 180) {\n return 'center';\n } else if (angle < 180) {\n return 'left';\n }\n return 'right';\n}\nfunction leftForTextAlign(x, w, align) {\n if (align === 'right') {\n x -= w;\n } else if (align === 'center') {\n x -= (w / 2);\n }\n return x;\n}\nfunction yForAngle(y, h, angle) {\n if (angle === 90 || angle === 270) {\n y -= (h / 2);\n } else if (angle > 270 || angle < 90) {\n y -= h;\n }\n return y;\n}\nfunction drawPointLabels(scale, labelCount) {\n const {ctx, options: {pointLabels}} = scale;\n for (let i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n const plFont = toFont(optsAtIndex.font);\n const {x, y, textAlign, left, top, right, bottom} = scale._pointLabelItems[i];\n const {backdropColor} = optsAtIndex;\n if (!isNullOrUndef(backdropColor)) {\n const borderRadius = toTRBLCorners(optsAtIndex.borderRadius);\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillStyle = backdropColor;\n const backdropLeft = left - padding.left;\n const backdropTop = top - padding.top;\n const backdropWidth = right - left + padding.width;\n const backdropHeight = bottom - top + padding.height;\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: backdropLeft,\n y: backdropTop,\n w: backdropWidth,\n h: backdropHeight,\n radius: borderRadius,\n });\n ctx.fill();\n } else {\n ctx.fillRect(backdropLeft, backdropTop, backdropWidth, backdropHeight);\n }\n }\n renderText(\n ctx,\n scale._pointLabels[i],\n x,\n y + (plFont.lineHeight / 2),\n plFont,\n {\n color: optsAtIndex.color,\n textAlign: textAlign,\n textBaseline: 'middle'\n }\n );\n }\n}\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n const {ctx} = scale;\n if (circular) {\n ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n } else {\n let pointPosition = scale.getPointPosition(0, radius);\n ctx.moveTo(pointPosition.x, pointPosition.y);\n for (let i = 1; i < labelCount; i++) {\n pointPosition = scale.getPointPosition(i, radius);\n ctx.lineTo(pointPosition.x, pointPosition.y);\n }\n }\n}\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount) {\n const ctx = scale.ctx;\n const circular = gridLineOpts.circular;\n const {color, lineWidth} = gridLineOpts;\n if ((!circular && !labelCount) || !color || !lineWidth || radius < 0) {\n return;\n }\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash(gridLineOpts.borderDash);\n ctx.lineDashOffset = gridLineOpts.borderDashOffset;\n ctx.beginPath();\n pathRadiusLine(scale, radius, circular, labelCount);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n}\nfunction createPointLabelContext(parent, index, label) {\n return createContext(parent, {\n label,\n index,\n type: 'pointLabel'\n });\n}\nclass RadialLinearScale extends LinearScaleBase {\n constructor(cfg) {\n super(cfg);\n this.xCenter = undefined;\n this.yCenter = undefined;\n this.drawingArea = undefined;\n this._pointLabels = [];\n this._pointLabelItems = [];\n }\n setDimensions() {\n const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);\n const w = this.width = this.maxWidth - padding.width;\n const h = this.height = this.maxHeight - padding.height;\n this.xCenter = Math.floor(this.left + w / 2 + padding.left);\n this.yCenter = Math.floor(this.top + h / 2 + padding.top);\n this.drawingArea = Math.floor(Math.min(w, h) / 2);\n }\n determineDataLimits() {\n const {min, max} = this.getMinMax(false);\n this.min = isNumberFinite(min) && !isNaN(min) ? min : 0;\n this.max = isNumberFinite(max) && !isNaN(max) ? max : 0;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n }\n generateTickLabels(ticks) {\n LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n this._pointLabels = this.getLabels()\n .map((value, index) => {\n const label = callback(this.options.pointLabels.callback, [value, index], this);\n return label || label === 0 ? label : '';\n })\n .filter((v, i) => this.chart.getDataVisibility(i));\n }\n fit() {\n const opts = this.options;\n if (opts.display && opts.pointLabels.display) {\n fitWithPointLabels(this);\n } else {\n this.setCenterPoint(0, 0, 0, 0);\n }\n }\n setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n this.xCenter += Math.floor((leftMovement - rightMovement) / 2);\n this.yCenter += Math.floor((topMovement - bottomMovement) / 2);\n this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement));\n }\n getIndexAngle(index) {\n const angleMultiplier = TAU / (this._pointLabels.length || 1);\n const startAngle = this.options.startAngle || 0;\n return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n }\n getDistanceFromCenterForValue(value) {\n if (isNullOrUndef(value)) {\n return NaN;\n }\n const scalingFactor = this.drawingArea / (this.max - this.min);\n if (this.options.reverse) {\n return (this.max - value) * scalingFactor;\n }\n return (value - this.min) * scalingFactor;\n }\n getValueForDistanceFromCenter(distance) {\n if (isNullOrUndef(distance)) {\n return NaN;\n }\n const scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n }\n getPointLabelContext(index) {\n const pointLabels = this._pointLabels || [];\n if (index >= 0 && index < pointLabels.length) {\n const pointLabel = pointLabels[index];\n return createPointLabelContext(this.getContext(), index, pointLabel);\n }\n }\n getPointPosition(index, distanceFromCenter, additionalAngle = 0) {\n const angle = this.getIndexAngle(index) - HALF_PI + additionalAngle;\n return {\n x: Math.cos(angle) * distanceFromCenter + this.xCenter,\n y: Math.sin(angle) * distanceFromCenter + this.yCenter,\n angle\n };\n }\n getPointPositionForValue(index, value) {\n return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n }\n getBasePosition(index) {\n return this.getPointPositionForValue(index || 0, this.getBaseValue());\n }\n getPointLabelPosition(index) {\n const {left, top, right, bottom} = this._pointLabelItems[index];\n return {\n left,\n top,\n right,\n bottom,\n };\n }\n drawBackground() {\n const {backgroundColor, grid: {circular}} = this.options;\n if (backgroundColor) {\n const ctx = this.ctx;\n ctx.save();\n ctx.beginPath();\n pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length);\n ctx.closePath();\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n }\n drawGrid() {\n const ctx = this.ctx;\n const opts = this.options;\n const {angleLines, grid} = opts;\n const labelCount = this._pointLabels.length;\n let i, offset, position;\n if (opts.pointLabels.display) {\n drawPointLabels(this, labelCount);\n }\n if (grid.display) {\n this.ticks.forEach((tick, index) => {\n if (index !== 0) {\n offset = this.getDistanceFromCenterForValue(tick.value);\n const optsAtIndex = grid.setContext(this.getContext(index - 1));\n drawRadiusLine(this, optsAtIndex, offset, labelCount);\n }\n });\n }\n if (angleLines.display) {\n ctx.save();\n for (i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n const {color, lineWidth} = optsAtIndex;\n if (!lineWidth || !color) {\n continue;\n }\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n ctx.setLineDash(optsAtIndex.borderDash);\n ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n offset = this.getDistanceFromCenterForValue(opts.ticks.reverse ? this.min : this.max);\n position = this.getPointPosition(i, offset);\n ctx.beginPath();\n ctx.moveTo(this.xCenter, this.yCenter);\n ctx.lineTo(position.x, position.y);\n ctx.stroke();\n }\n ctx.restore();\n }\n }\n drawBorder() {}\n drawLabels() {\n const ctx = this.ctx;\n const opts = this.options;\n const tickOpts = opts.ticks;\n if (!tickOpts.display) {\n return;\n }\n const startAngle = this.getIndexAngle(0);\n let offset, width;\n ctx.save();\n ctx.translate(this.xCenter, this.yCenter);\n ctx.rotate(startAngle);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n this.ticks.forEach((tick, index) => {\n if (index === 0 && !opts.reverse) {\n return;\n }\n const optsAtIndex = tickOpts.setContext(this.getContext(index));\n const tickFont = toFont(optsAtIndex.font);\n offset = this.getDistanceFromCenterForValue(this.ticks[index].value);\n if (optsAtIndex.showLabelBackdrop) {\n ctx.font = tickFont.string;\n width = ctx.measureText(tick.label).width;\n ctx.fillStyle = optsAtIndex.backdropColor;\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillRect(\n -width / 2 - padding.left,\n -offset - tickFont.size / 2 - padding.top,\n width + padding.width,\n tickFont.size + padding.height\n );\n }\n renderText(ctx, tick.label, 0, -offset, tickFont, {\n color: optsAtIndex.color,\n });\n });\n ctx.restore();\n }\n drawTitle() {}\n}\nRadialLinearScale.id = 'radialLinear';\nRadialLinearScale.defaults = {\n display: true,\n animate: true,\n position: 'chartArea',\n angleLines: {\n display: true,\n lineWidth: 1,\n borderDash: [],\n borderDashOffset: 0.0\n },\n grid: {\n circular: false\n },\n startAngle: 0,\n ticks: {\n showLabelBackdrop: true,\n callback: Ticks.formatters.numeric\n },\n pointLabels: {\n backdropColor: undefined,\n backdropPadding: 2,\n display: true,\n font: {\n size: 10\n },\n callback(label) {\n return label;\n },\n padding: 5,\n centerPointLabels: false\n }\n};\nRadialLinearScale.defaultRoutes = {\n 'angleLines.color': 'borderColor',\n 'pointLabels.color': 'color',\n 'ticks.color': 'color'\n};\nRadialLinearScale.descriptors = {\n angleLines: {\n _fallback: 'grid'\n }\n};\n\nconst INTERVALS = {\n millisecond: {common: true, size: 1, steps: 1000},\n second: {common: true, size: 1000, steps: 60},\n minute: {common: true, size: 60000, steps: 60},\n hour: {common: true, size: 3600000, steps: 24},\n day: {common: true, size: 86400000, steps: 30},\n week: {common: false, size: 604800000, steps: 4},\n month: {common: true, size: 2.628e9, steps: 12},\n quarter: {common: false, size: 7.884e9, steps: 4},\n year: {common: true, size: 3.154e10}\n};\nconst UNITS = (Object.keys(INTERVALS));\nfunction sorter(a, b) {\n return a - b;\n}\nfunction parse(scale, input) {\n if (isNullOrUndef(input)) {\n return null;\n }\n const adapter = scale._adapter;\n const {parser, round, isoWeekday} = scale._parseOpts;\n let value = input;\n if (typeof parser === 'function') {\n value = parser(value);\n }\n if (!isNumberFinite(value)) {\n value = typeof parser === 'string'\n ? adapter.parse(value, parser)\n : adapter.parse(value);\n }\n if (value === null) {\n return null;\n }\n if (round) {\n value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true)\n ? adapter.startOf(value, 'isoWeek', isoWeekday)\n : adapter.startOf(value, round);\n }\n return +value;\n}\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n const ilen = UNITS.length;\n for (let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n const interval = INTERVALS[UNITS[i]];\n const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER;\n if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n return UNITS[i];\n }\n }\n return UNITS[ilen - 1];\n}\nfunction determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n for (let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\n const unit = UNITS[i];\n if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n return unit;\n }\n }\n return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\nfunction determineMajorUnit(unit) {\n for (let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n if (INTERVALS[UNITS[i]].common) {\n return UNITS[i];\n }\n }\n}\nfunction addTick(ticks, time, timestamps) {\n if (!timestamps) {\n ticks[time] = true;\n } else if (timestamps.length) {\n const {lo, hi} = _lookup(timestamps, time);\n const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n ticks[timestamp] = true;\n }\n}\nfunction setMajorTicks(scale, ticks, map, majorUnit) {\n const adapter = scale._adapter;\n const first = +adapter.startOf(ticks[0].value, majorUnit);\n const last = ticks[ticks.length - 1].value;\n let major, index;\n for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\n index = map[major];\n if (index >= 0) {\n ticks[index].major = true;\n }\n }\n return ticks;\n}\nfunction ticksFromTimestamps(scale, values, majorUnit) {\n const ticks = [];\n const map = {};\n const ilen = values.length;\n let i, value;\n for (i = 0; i < ilen; ++i) {\n value = values[i];\n map[value] = i;\n ticks.push({\n value,\n major: false\n });\n }\n return (ilen === 0 || !majorUnit) ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\nclass TimeScale extends Scale {\n constructor(props) {\n super(props);\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n this._unit = 'day';\n this._majorUnit = undefined;\n this._offsets = {};\n this._normalized = false;\n this._parseOpts = undefined;\n }\n init(scaleOpts, opts) {\n const time = scaleOpts.time || (scaleOpts.time = {});\n const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n adapter.init(opts);\n mergeIf(time.displayFormats, adapter.formats());\n this._parseOpts = {\n parser: time.parser,\n round: time.round,\n isoWeekday: time.isoWeekday\n };\n super.init(scaleOpts);\n this._normalized = opts.normalized;\n }\n parse(raw, index) {\n if (raw === undefined) {\n return null;\n }\n return parse(this, raw);\n }\n beforeLayout() {\n super.beforeLayout();\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n }\n determineDataLimits() {\n const options = this.options;\n const adapter = this._adapter;\n const unit = options.time.unit || 'day';\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n function _applyBounds(bounds) {\n if (!minDefined && !isNaN(bounds.min)) {\n min = Math.min(min, bounds.min);\n }\n if (!maxDefined && !isNaN(bounds.max)) {\n max = Math.max(max, bounds.max);\n }\n }\n if (!minDefined || !maxDefined) {\n _applyBounds(this._getLabelBounds());\n if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n _applyBounds(this.getMinMax(false));\n }\n }\n min = isNumberFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n max = isNumberFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n this.min = Math.min(min, max - 1);\n this.max = Math.max(min + 1, max);\n }\n _getLabelBounds() {\n const arr = this.getLabelTimestamps();\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n if (arr.length) {\n min = arr[0];\n max = arr[arr.length - 1];\n }\n return {min, max};\n }\n buildTicks() {\n const options = this.options;\n const timeOpts = options.time;\n const tickOpts = options.ticks;\n const timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate();\n if (options.bounds === 'ticks' && timestamps.length) {\n this.min = this._userMin || timestamps[0];\n this.max = this._userMax || timestamps[timestamps.length - 1];\n }\n const min = this.min;\n const max = this.max;\n const ticks = _filterBetween(timestamps, min, max);\n this._unit = timeOpts.unit || (tickOpts.autoSkip\n ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min))\n : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined\n : determineMajorUnit(this._unit);\n this.initOffsets(timestamps);\n if (options.reverse) {\n ticks.reverse();\n }\n return ticksFromTimestamps(this, ticks, this._majorUnit);\n }\n afterAutoSkip() {\n if (this.options.offsetAfterAutoskip) {\n this.initOffsets(this.ticks.map(tick => +tick.value));\n }\n }\n initOffsets(timestamps) {\n let start = 0;\n let end = 0;\n let first, last;\n if (this.options.offset && timestamps.length) {\n first = this.getDecimalForValue(timestamps[0]);\n if (timestamps.length === 1) {\n start = 1 - first;\n } else {\n start = (this.getDecimalForValue(timestamps[1]) - first) / 2;\n }\n last = this.getDecimalForValue(timestamps[timestamps.length - 1]);\n if (timestamps.length === 1) {\n end = last;\n } else {\n end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n }\n }\n const limit = timestamps.length < 3 ? 0.5 : 0.25;\n start = _limitValue(start, 0, limit);\n end = _limitValue(end, 0, limit);\n this._offsets = {start, end, factor: 1 / (start + 1 + end)};\n }\n _generate() {\n const adapter = this._adapter;\n const min = this.min;\n const max = this.max;\n const options = this.options;\n const timeOpts = options.time;\n const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n const stepSize = valueOrDefault(timeOpts.stepSize, 1);\n const weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n const hasWeekday = isNumber(weekday) || weekday === true;\n const ticks = {};\n let first = min;\n let time, count;\n if (hasWeekday) {\n first = +adapter.startOf(first, 'isoWeek', weekday);\n }\n first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n }\n const timestamps = options.ticks.source === 'data' && this.getDataTimestamps();\n for (time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++) {\n addTick(ticks, time, timestamps);\n }\n if (time === max || options.bounds === 'ticks' || count === 1) {\n addTick(ticks, time, timestamps);\n }\n return Object.keys(ticks).sort((a, b) => a - b).map(x => +x);\n }\n getLabelForValue(value) {\n const adapter = this._adapter;\n const timeOpts = this.options.time;\n if (timeOpts.tooltipFormat) {\n return adapter.format(value, timeOpts.tooltipFormat);\n }\n return adapter.format(value, timeOpts.displayFormats.datetime);\n }\n _tickFormatFunction(time, index, ticks, format) {\n const options = this.options;\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const majorUnit = this._majorUnit;\n const minorFormat = unit && formats[unit];\n const majorFormat = majorUnit && formats[majorUnit];\n const tick = ticks[index];\n const major = majorUnit && majorFormat && tick && tick.major;\n const label = this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n const formatter = options.ticks.callback;\n return formatter ? callback(formatter, [label, index, ticks], this) : label;\n }\n generateTickLabels(ticks) {\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n tick.label = this._tickFormatFunction(tick.value, i, ticks);\n }\n }\n getDecimalForValue(value) {\n return value === null ? NaN : (value - this.min) / (this.max - this.min);\n }\n getPixelForValue(value) {\n const offsets = this._offsets;\n const pos = this.getDecimalForValue(value);\n return this.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return this.min + pos * (this.max - this.min);\n }\n _getLabelSize(label) {\n const ticksOpts = this.options.ticks;\n const tickLabelWidth = this.ctx.measureText(label).width;\n const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n const cosRotation = Math.cos(angle);\n const sinRotation = Math.sin(angle);\n const tickFontSize = this._resolveTickFontOptions(0).size;\n return {\n w: (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation),\n h: (tickLabelWidth * sinRotation) + (tickFontSize * cosRotation)\n };\n }\n _getLabelCapacity(exampleTime) {\n const timeOpts = this.options.time;\n const displayFormats = timeOpts.displayFormats;\n const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [exampleTime], this._majorUnit), format);\n const size = this._getLabelSize(exampleLabel);\n const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n return capacity > 0 ? capacity : 1;\n }\n getDataTimestamps() {\n let timestamps = this._cache.data || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const metas = this.getMatchingVisibleMetas();\n if (this._normalized && metas.length) {\n return (this._cache.data = metas[0].controller.getAllParsedValues(this));\n }\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\n }\n return (this._cache.data = this.normalize(timestamps));\n }\n getLabelTimestamps() {\n const timestamps = this._cache.labels || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const labels = this.getLabels();\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n timestamps.push(parse(this, labels[i]));\n }\n return (this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps));\n }\n normalize(values) {\n return _arrayUnique(values.sort(sorter));\n }\n}\nTimeScale.id = 'time';\nTimeScale.defaults = {\n bounds: 'data',\n adapters: {},\n time: {\n parser: false,\n unit: false,\n round: false,\n isoWeekday: false,\n minUnit: 'millisecond',\n displayFormats: {}\n },\n ticks: {\n source: 'auto',\n major: {\n enabled: false\n }\n }\n};\n\nfunction interpolate(table, val, reverse) {\n let lo = 0;\n let hi = table.length - 1;\n let prevSource, nextSource, prevTarget, nextTarget;\n if (reverse) {\n if (val >= table[lo].pos && val <= table[hi].pos) {\n ({lo, hi} = _lookupByKey(table, 'pos', val));\n }\n ({pos: prevSource, time: prevTarget} = table[lo]);\n ({pos: nextSource, time: nextTarget} = table[hi]);\n } else {\n if (val >= table[lo].time && val <= table[hi].time) {\n ({lo, hi} = _lookupByKey(table, 'time', val));\n }\n ({time: prevSource, pos: prevTarget} = table[lo]);\n ({time: nextSource, pos: nextTarget} = table[hi]);\n }\n const span = nextSource - prevSource;\n return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\nclass TimeSeriesScale extends TimeScale {\n constructor(props) {\n super(props);\n this._table = [];\n this._minPos = undefined;\n this._tableRange = undefined;\n }\n initOffsets() {\n const timestamps = this._getTimestampsForTable();\n const table = this._table = this.buildLookupTable(timestamps);\n this._minPos = interpolate(table, this.min);\n this._tableRange = interpolate(table, this.max) - this._minPos;\n super.initOffsets(timestamps);\n }\n buildLookupTable(timestamps) {\n const {min, max} = this;\n const items = [];\n const table = [];\n let i, ilen, prev, curr, next;\n for (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n curr = timestamps[i];\n if (curr >= min && curr <= max) {\n items.push(curr);\n }\n }\n if (items.length < 2) {\n return [\n {time: min, pos: 0},\n {time: max, pos: 1}\n ];\n }\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n next = items[i + 1];\n prev = items[i - 1];\n curr = items[i];\n if (Math.round((next + prev) / 2) !== curr) {\n table.push({time: curr, pos: i / (ilen - 1)});\n }\n }\n return table;\n }\n _getTimestampsForTable() {\n let timestamps = this._cache.all || [];\n if (timestamps.length) {\n return timestamps;\n }\n const data = this.getDataTimestamps();\n const label = this.getLabelTimestamps();\n if (data.length && label.length) {\n timestamps = this.normalize(data.concat(label));\n } else {\n timestamps = data.length ? data : label;\n }\n timestamps = this._cache.all = timestamps;\n return timestamps;\n }\n getDecimalForValue(value) {\n return (interpolate(this._table, value) - this._minPos) / this._tableRange;\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return interpolate(this._table, decimal * this._tableRange + this._minPos, true);\n }\n}\nTimeSeriesScale.id = 'timeseries';\nTimeSeriesScale.defaults = TimeScale.defaults;\n\nvar scales = /*#__PURE__*/Object.freeze({\n__proto__: null,\nCategoryScale: CategoryScale,\nLinearScale: LinearScale,\nLogarithmicScale: LogarithmicScale,\nRadialLinearScale: RadialLinearScale,\nTimeScale: TimeScale,\nTimeSeriesScale: TimeSeriesScale\n});\n\nconst registerables = [\n controllers,\n elements,\n plugins,\n scales,\n];\n\nexport { Animation, Animations, ArcElement, BarController, BarElement, BasePlatform, BasicPlatform, BubbleController, CategoryScale, Chart, DatasetController, plugin_decimation as Decimation, DomPlatform, DoughnutController, Element, index as Filler, Interaction, plugin_legend as Legend, LineController, LineElement, LinearScale, LogarithmicScale, PieController, PointElement, PolarAreaController, RadarController, RadialLinearScale, Scale, ScatterController, plugin_subtitle as SubTitle, Ticks, TimeScale, TimeSeriesScale, plugin_title as Title, plugin_tooltip as Tooltip, adapters as _adapters, _detectPlatform, animator, controllers, elements, layouts, plugins, registerables, registry, scales };\n","import type { MouseEvent } from 'react';\nimport type {\n ChartType,\n ChartData,\n DefaultDataPoint,\n ChartDataset,\n ChartOptions,\n Chart,\n} from 'chart.js';\n\nimport type { ForwardedRef } from './types';\n\nconst defaultDatasetIdKey = 'label';\n\nexport function reforwardRef<T>(ref: ForwardedRef<T>, value: T) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}\n\nexport function setOptions<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint<TType>,\n TLabel = unknown\n>(chart: Chart<TType, TData, TLabel>, nextOptions: ChartOptions<TType>) {\n Object.assign(chart.options, nextOptions);\n}\n\nexport function setLabels<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint<TType>,\n TLabel = unknown\n>(\n currentData: ChartData<TType, TData, TLabel>,\n nextLabels: TLabel[] | undefined\n) {\n currentData.labels = nextLabels;\n}\n\nexport function setDatasets<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint<TType>,\n TLabel = unknown\n>(\n currentData: ChartData<TType, TData, TLabel>,\n nextDatasets: ChartDataset<TType, TData>[],\n datasetIdKey = defaultDatasetIdKey\n) {\n const addedDatasets: ChartDataset<TType, TData>[] = [];\n\n currentData.datasets = nextDatasets.map(\n (nextDataset: Record<string, unknown>) => {\n // given the new set, find it's current match\n const currentDataset = currentData.datasets.find(\n (dataset: Record<string, unknown>) =>\n dataset[datasetIdKey] === nextDataset[datasetIdKey]\n );\n\n // There is no original to update, so simply add new one\n if (\n !currentDataset ||\n !nextDataset.data ||\n addedDatasets.includes(currentDataset)\n ) {\n return { ...nextDataset } as ChartDataset<TType, TData>;\n }\n\n addedDatasets.push(currentDataset);\n\n Object.assign(currentDataset, nextDataset);\n\n return currentDataset;\n }\n );\n}\n\nexport function cloneData<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint<TType>,\n TLabel = unknown\n>(data: ChartData<TType, TData, TLabel>, datasetIdKey = defaultDatasetIdKey) {\n const nextData: ChartData<TType, TData, TLabel> = {\n labels: [],\n datasets: [],\n };\n\n setLabels(nextData, data.labels);\n setDatasets(nextData, data.datasets, datasetIdKey);\n\n return nextData;\n}\n\n/**\n * Get dataset from mouse click event\n * @param chart - Chart.js instance\n * @param event - Mouse click event\n * @returns Dataset\n */\nexport function getDatasetAtEvent(\n chart: Chart,\n event: MouseEvent<HTMLCanvasElement>\n) {\n return chart.getElementsAtEventForMode(\n event.nativeEvent,\n 'dataset',\n { intersect: true },\n false\n );\n}\n\n/**\n * Get single dataset element from mouse click event\n * @param chart - Chart.js instance\n * @param event - Mouse click event\n * @returns Dataset\n */\nexport function getElementAtEvent(\n chart: Chart,\n event: MouseEvent<HTMLCanvasElement>\n) {\n return chart.getElementsAtEventForMode(\n event.nativeEvent,\n 'nearest',\n { intersect: true },\n false\n );\n}\n\n/**\n * Get all dataset elements from mouse click event\n * @param chart - Chart.js instance\n * @param event - Mouse click event\n * @returns Dataset\n */\nexport function getElementsAtEvent(\n chart: Chart,\n event: MouseEvent<HTMLCanvasElement>\n) {\n return chart.getElementsAtEventForMode(\n event.nativeEvent,\n 'index',\n { intersect: true },\n false\n );\n}\n","import React, { useEffect, useRef, forwardRef } from 'react';\nimport { Chart as ChartJS } from 'chart.js';\nimport type { ChartType, DefaultDataPoint } from 'chart.js';\n\nimport type { ForwardedRef, ChartProps, TypedChartComponent } from './types';\nimport {\n reforwardRef,\n cloneData,\n setOptions,\n setLabels,\n setDatasets,\n} from './utils';\n\nfunction ChartComponent<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint<TType>,\n TLabel = unknown\n>(\n {\n height = 150,\n width = 300,\n redraw = false,\n datasetIdKey,\n type,\n data,\n options,\n plugins = [],\n fallbackContent,\n updateMode,\n ...props\n }: ChartProps<TType, TData, TLabel>,\n ref: ForwardedRef<ChartJS<TType, TData, TLabel>>\n) {\n type TypedChartJS = ChartJS<TType, TData, TLabel>;\n\n const canvasRef = useRef<HTMLCanvasElement>(null);\n const chartRef = useRef<TypedChartJS | null>();\n\n const renderChart = () => {\n if (!canvasRef.current) return;\n\n chartRef.current = new ChartJS(canvasRef.current, {\n type,\n data: cloneData(data, datasetIdKey),\n options: options && { ...options },\n plugins,\n });\n\n reforwardRef(ref, chartRef.current);\n };\n\n const destroyChart = () => {\n reforwardRef(ref, null);\n\n if (chartRef.current) {\n chartRef.current.destroy();\n chartRef.current = null;\n }\n };\n\n useEffect(() => {\n if (!redraw && chartRef.current && options) {\n setOptions(chartRef.current, options);\n }\n }, [redraw, options]);\n\n useEffect(() => {\n if (!redraw && chartRef.current) {\n setLabels(chartRef.current.config.data, data.labels);\n }\n }, [redraw, data.labels]);\n\n useEffect(() => {\n if (!redraw && chartRef.current && data.datasets) {\n setDatasets(chartRef.current.config.data, data.datasets, datasetIdKey);\n }\n }, [redraw, data.datasets]);\n\n useEffect(() => {\n if (!chartRef.current) return;\n\n if (redraw) {\n destroyChart();\n setTimeout(renderChart);\n } else {\n chartRef.current.update(updateMode);\n }\n }, [redraw, options, data.labels, data.datasets, updateMode]);\n\n useEffect(() => {\n if (!chartRef.current) return;\n\n destroyChart();\n setTimeout(renderChart);\n }, [type]);\n\n useEffect(() => {\n renderChart();\n\n return () => destroyChart();\n }, []);\n\n return (\n <canvas ref={canvasRef} role='img' height={height} width={width} {...props}>\n {fallbackContent}\n </canvas>\n );\n}\n\nexport const Chart = forwardRef(ChartComponent) as TypedChartComponent;\n","import React, { forwardRef } from 'react';\nimport {\n Chart as ChartJS,\n LineController,\n BarController,\n RadarController,\n DoughnutController,\n PolarAreaController,\n BubbleController,\n PieController,\n ScatterController,\n} from 'chart.js';\nimport type { ChartType, ChartComponentLike } from 'chart.js';\n\nimport type {\n ChartProps,\n ChartJSOrUndefined,\n TypedChartComponent,\n} from './types';\nimport { Chart } from './chart';\n\nfunction createTypedChart<T extends ChartType>(\n type: T,\n registerables: ChartComponentLike\n) {\n ChartJS.register(registerables);\n\n return forwardRef<ChartJSOrUndefined<T>, Omit<ChartProps<T>, 'type'>>(\n (props, ref) => <Chart {...props} ref={ref} type={type} />\n ) as TypedChartComponent<T, true>;\n}\n\nexport const Line = /* #__PURE__ */ createTypedChart('line', LineController);\n\nexport const Bar = /* #__PURE__ */ createTypedChart('bar', BarController);\n\nexport const Radar = /* #__PURE__ */ createTypedChart('radar', RadarController);\n\nexport const Doughnut = /* #__PURE__ */ createTypedChart(\n 'doughnut',\n DoughnutController\n);\n\nexport const PolarArea = /* #__PURE__ */ createTypedChart(\n 'polarArea',\n PolarAreaController\n);\n\nexport const Bubble = /* #__PURE__ */ createTypedChart(\n 'bubble',\n BubbleController\n);\n\nexport const Pie = /* #__PURE__ */ createTypedChart('pie', PieController);\n\nexport const Scatter = /* #__PURE__ */ createTypedChart(\n 'scatter',\n ScatterController\n);\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",f=\"month\",h=\"quarter\",c=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,f),s=n-i<0,u=e.clone().add(r+(s?-1:1),f);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:f,y:c,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:h}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=function(t){return t instanceof _},S=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},w=function(t,e){if(p(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},O=v;O.l=S,O.i=p,O.w=function(t,e){return w(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=S(t.locale,null,!0),this.parse(t)}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(O.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.$x=t.x||{},this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return O},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=w(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return w(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<w(t)},m.$g=function(t,e,n){return O.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!O.u(e)||e,h=O.p(t),l=function(t,e){var i=O.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return O.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(h){case c:return r?l(1,0):l(31,11);case f:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=O.p(t),h=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=h+\"Date\",n[d]=h+\"Date\",n[f]=h+\"Month\",n[c]=h+\"FullYear\",n[u]=h+\"Hours\",n[s]=h+\"Minutes\",n[i]=h+\"Seconds\",n[r]=h+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===f||o===c){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[O.p(t)]()},m.add=function(r,h){var d,l=this;r=Number(r);var $=O.p(h),y=function(t){var e=w(l);return O.w(e.date(e.date()+Math.round(t*r)),l)};if($===f)return this.set(f,this.$M+r);if($===c)return this.set(c,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return O.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=O.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,f=n.months,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},c=function(t){return O.s(s%12||12,t,\"0\")},d=n.meridiem||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r},$={YY:String(this.$y).slice(-2),YYYY:this.$y,M:a+1,MM:O.s(a+1,2,\"0\"),MMM:h(n.monthsShort,a,f,3),MMMM:h(f,a),D:this.$D,DD:O.s(this.$D,2,\"0\"),d:String(this.$W),dd:h(n.weekdaysMin,this.$W,o,2),ddd:h(n.weekdaysShort,this.$W,o,3),dddd:o[this.$W],H:String(s),HH:O.s(s,2,\"0\"),h:c(1),hh:c(2),a:d(s,u,!0),A:d(s,u,!1),m:String(u),mm:O.s(u,2,\"0\"),s:String(this.$s),ss:O.s(this.$s,2,\"0\"),SSS:O.s(this.$ms,3,\"0\"),Z:i};return r.replace(y,(function(t,e){return e||$[t]||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=O.p(d),M=w(r),m=(M.utcOffset()-this.utcOffset())*e,v=this-M,g=O.m(this,M);return g=($={},$[c]=g/12,$[f]=g,$[h]=g/3,$[o]=(v-m)/6048e5,$[a]=(v-m)/864e5,$[u]=v/n,$[s]=v/e,$[i]=v/t,$)[y]||v,l?g:O.a(g)},m.daysInMonth=function(){return this.endOf(f).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=S(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return O.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),T=_.prototype;return w.prototype=T,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",f],[\"$y\",c],[\"$D\",d]].forEach((function(t){T[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),w.extend=function(t,e){return t.$i||(t(e,_,w),t.$i=!0),w},w.locale=S,w.isDayjs=p,w.unix=function(t){return w(1e3*t)},w.en=D[g],w.Ls=D,w.p={},w}));","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const ChartContainer = styled.div`\n width: 448px;\n height: 174px;\n border-radius: 8px;\n border: 1px solid ${theme.colors[\"neutral-100\"]};\n background: ${theme.colors.white};\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n overflow: hidden;\n`\n\nexport const GraphArea = styled.div`\n height: 80px;\n`\n\nexport const TextArea = styled.div`\n display: flex;\n justify-content: space-between;\n padding: 16px;\n`\n\nexport const ExchangeCurr = styled.div`\n display: flex;\n gap: 8px;\n align-items: center;\n color: ${theme.colors[\"neutral-900\"]};\n .curr-name{\n margin: 0;\n font-weight: 500;\n font-size: 16px;\n line-height: 19px;\n font-family: Circular Book Medium, sans-serif;\n }\n .curr-code{\n margin: 0;\n font-weight: 400;\n font-size: 16px;\n line-height: 19px;\n }\n`\n\nexport const RateInfo = styled.p`\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0;\n font-size: 14px;\n font-weight: 400;\n line-height: 17px;\n .success{\n color: ${theme.colors[\"success-500\"]};\n font-size: 12px;\n }\n .error{\n color: ${theme.colors[\"error-500\"]};\n font-size: 12px;\n }\n .neutral{\n color: ${theme.colors[\"neutral-500\"]};\n font-size: 12px;\n }\n`\n\nexport const RateDate = styled.div`\n color: ${theme.colors[\"neutral-400\"]};\n font-size: 14px;\n font-weight: 400;\n line-height: 17px;\n margin: 0;\n`\n","import React, {useEffect, useState} from \"react\"\nimport {Line } from 'react-chartjs-2'\nimport {Chart as ChartJs, registerables} from \"chart.js\";\nChartJs.register( ...registerables )\nimport {ChartProps} from \"./type\";\nimport dayjs from \"dayjs\";\nimport theme from \"../../theme\";\nimport {dayDiff} from \"./helpers\";\nimport {ChartContainer, ExchangeCurr, GraphArea, RateDate, RateInfo, TextArea} from \"./style\";\n\nconst Chart = (props:ChartProps) => {\n const {ratesData,exchCurrFlag,baseCurrCode,exchCurrName,exchCurrCode} = props\n const [graphData,setGraphData]:any = useState({})\n\n const [change,setChange] = useState(0)\n\n //generate graph colour based on performance of the currency\n const performanceColor = (rateChange:number) => {\n if(rateChange < 0){ // reduction in currency performance\n return {\n borderColor:theme.colors[\"error-500\"],\n fillColor:theme.colors[\"error-50\"]\n }\n }else if(rateChange > 0){ // rise in currency performance\n return {\n borderColor:theme.colors[\"success-500\"],\n fillColor:theme.colors[\"success-50\"]\n }\n }else{ //no change in performance\n return {\n borderColor:theme.colors[\"neutral-500\"],\n fillColor:theme.colors[\"neutral-50\"]\n }\n }\n }\n\n useEffect(()=>{\n let curr:any = {\n dates:[],\n data:[],\n change:0\n }\n\n if (ratesData && ratesData.length > 0) {\n for (let i = 0; i < ratesData.length; i++) {\n if (ratesData[i].exchCurrency === exchCurrCode && ratesData[i].baseCurrency === baseCurrCode) {\n if (curr.dates.length < 7 && curr.data.length < 7) {\n curr.dates.push(dayjs(ratesData[i].currDate).format('D MMM'))\n curr.data.push(ratesData[i].rate)\n curr.change = ratesData[i].rateChange\n setChange(ratesData[i].rateChange)\n }\n }\n }\n }\n\n let chartData = {\n labels:curr.dates,\n datasets:[{\n label:'', //kenyan shilling\n data:curr.data,\n borderColor:performanceColor(curr.change).borderColor,\n backgroundColor:performanceColor(curr.change).fillColor,\n fill:true,\n tension:0.23,\n borderWidth:1\n }]\n }\n\n setGraphData(chartData)\n },[ratesData,baseCurrCode,exchCurrCode])\n\n\n let options:any = {\n responsive: true,\n maintainAspectRatio:false,\n plugins: {\n legend: {\n display: false\n },\n title: {\n display: false\n },\n tooltip:{\n enabled:true,\n intersect:false,\n backgroundColor:'#F7F9FC',\n bodyColor:'#070B12',\n titleColor:'#070B12',\n displayColors:false,\n titleAlign:'center',\n bodyAlign:'center',\n xAlign:'center',\n /*borderColor:'#070B12',\n borderWidth:0.5,*/\n caretSize:0,\n padding:10\n }\n },\n scales:{\n y:{\n display:false,\n // min:0\n },\n x:{\n display:false,\n }\n },\n elements:{\n point:{\n radius:0\n }\n }\n };\n\n return (\n <>\n {graphData.labels && graphData.labels.length > 0 &&\n <ChartContainer>\n <TextArea>\n <ExchangeCurr>\n <img src={exchCurrFlag} alt=\"Base currency flag\"/>\n <div>\n <p className=\"curr-name\">{exchCurrName}</p>\n <p className=\"curr-code\">{exchCurrCode}</p>\n </div>\n </ExchangeCurr>\n <div style={{textAlign:\"right\"}}>\n <RateInfo>\n {change < 0 && <i className=\"icon-arrow-down-right error\"/>}\n {change > 0 && <i className=\"icon-arrow-up-right success\"/>}\n {change === 0 && <i className=\"icon-dash neutral\"/>}\n {exchCurrCode} 1.0000 = {baseCurrCode} {graphData.datasets[0].data[graphData.datasets[0].data.length - 1]}\n </RateInfo>\n <RateDate>{`${dayDiff(graphData.labels[graphData.labels.length - 1])}${dayjs(graphData.labels[graphData.labels.length - 1]).format('MMM D')}`}</RateDate>\n </div>\n </TextArea>\n <div>\n <GraphArea>\n <Line data={graphData} options={options}/>\n </GraphArea>\n <div style={{height:'10px',background:performanceColor(change).fillColor}}/>\n </div>\n </ChartContainer>\n }\n </>\n )\n}\n\nexport default Chart\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const ChartContainer = styled.div`\n width: 424px;\n height: 118px;\n border-radius: 8px;\n border: 1px solid ${theme.colors[\"neutral-100\"]};\n background: ${theme.colors.white};\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n overflow: hidden;\n`\n\nexport const GraphArea = styled.div`\n //height: 36px;\n height: 45px;\n`\n\nexport const TextArea = styled.div`\n display: flex;\n justify-content: space-between;\n padding: 16px;\n`\n\nexport const ExchangeCurr = styled.div`\n display: flex;\n gap: 8px;\n align-items: center;\n color: ${theme.colors[\"neutral-900\"]};\n .curr-name{\n margin: 0;\n font-weight: 500;\n font-size: 14px;\n line-height: 17px;\n font-family: Circular Book Medium, sans-serif;\n }\n .curr-code{\n margin: 0;\n font-weight: 400;\n font-size: 14px;\n line-height: 17px;\n }\n`\n\nexport const RateInfo = styled.p`\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0;\n font-size: 12px;\n font-weight: 400;\n line-height: 14px;\n .success{\n color: ${theme.colors[\"success-500\"]};\n font-size: 12px;\n }\n .error{\n color: ${theme.colors[\"error-500\"]};\n font-size: 12px;\n }\n .neutral{\n color: ${theme.colors[\"neutral-500\"]};\n font-size: 12px;\n }\n`\n\nexport const RateDate = styled.div`\n color: ${theme.colors[\"neutral-400\"]};\n font-size: 14px;\n font-weight: 400;\n line-height: 17px;\n margin: 0;\n`\n","import React, {useEffect, useState} from \"react\"\nimport {Line } from 'react-chartjs-2'\nimport {Chart as ChartJs, registerables} from \"chart.js\";\nChartJs.register( ...registerables )\nimport {ChartProps} from \"./type\";\nimport dayjs from \"dayjs\";\nimport theme from \"../../theme\";\nimport {dayDiff} from \"./helpers\";\nimport {ChartContainer, ExchangeCurr, GraphArea, RateDate, RateInfo, TextArea} from \"./style\";\n\nconst ChartMedium = (props:ChartProps) => {\n const {ratesData,exchCurrFlag,baseCurrCode,exchCurrName,exchCurrCode} = props\n const [graphData,setGraphData]:any = useState({})\n\n const [change,setChange] = useState(0)\n\n //generate graph colour based on performance of the currency\n const performanceColor = (rateChange:number) => {\n if(rateChange < 0){ // reduction in currency performance\n return {\n borderColor:theme.colors[\"error-500\"],\n fillColor:theme.colors[\"error-50\"]\n }\n }else if(rateChange > 0){ // rise in currency performance\n return {\n borderColor:theme.colors[\"success-500\"],\n fillColor:theme.colors[\"success-50\"]\n }\n }else{ //no change in performance\n return {\n borderColor:theme.colors[\"neutral-500\"],\n fillColor:theme.colors[\"neutral-50\"]\n }\n }\n }\n\n useEffect(()=>{\n let curr:any = {\n dates:[],\n data:[],\n change:0\n }\n\n if (ratesData && ratesData.length > 0) {\n for (let i = 0; i < ratesData.length; i++) {\n if (ratesData[i].exchCurrency === exchCurrCode && ratesData[i].baseCurrency === baseCurrCode) {\n if (curr.dates.length < 7 && curr.data.length < 7) {\n curr.dates.push(dayjs(ratesData[i].currDate).format('D MMM'))\n curr.data.push(ratesData[i].rate)\n curr.change = ratesData[i].rateChange\n setChange(ratesData[i].rateChange)\n }\n }\n }\n }\n\n let chartData = {\n labels:curr.dates,\n datasets:[{\n label:'', //kenyan shilling\n data:curr.data,\n borderColor:performanceColor(curr.change).borderColor,\n backgroundColor:performanceColor(curr.change).fillColor,\n fill:true,\n tension:0.23,\n borderWidth:1\n }]\n }\n\n setGraphData(chartData)\n },[ratesData,baseCurrCode,exchCurrCode])\n\n\n let options:any = {\n responsive: true,\n maintainAspectRatio:false,\n plugins: {\n legend: {\n display: false\n },\n title: {\n display: false\n },\n tooltip:{\n enabled:true,\n intersect:false,\n backgroundColor:'#F7F9FC',\n bodyColor:'#070B12',\n titleColor:'#070B12',\n displayColors:false,\n titleAlign:'center',\n bodyAlign:'center',\n xAlign:'center',\n /*borderColor:'#070B12',\n borderWidth:0.5,*/\n caretSize:0,\n padding:10\n }\n },\n scales:{\n y:{\n display:false,\n // min:0\n },\n x:{\n display:false,\n }\n },\n elements:{\n point:{\n radius:0\n }\n }\n };\n\n return (\n <>\n {graphData.labels && graphData.labels.length > 0 &&\n <ChartContainer>\n <TextArea>\n <ExchangeCurr>\n <img src={exchCurrFlag} alt=\"Base currency flag\"/>\n <div>\n <p className=\"curr-name\">{exchCurrName}</p>\n <p className=\"curr-code\">{exchCurrCode}</p>\n </div>\n </ExchangeCurr>\n <div style={{textAlign:\"right\"}}>\n <RateInfo>\n {change < 0 && <i className=\"icon-arrow-down-right error\"/>}\n {change > 0 && <i className=\"icon-arrow-up-right success\"/>}\n {change === 0 && <i className=\"icon-dash neutral\"/>}\n {exchCurrCode} 1.0000 = {baseCurrCode} {graphData.datasets[0].data[graphData.datasets[0].data.length - 1]}\n </RateInfo>\n <RateDate>{`${dayDiff(graphData.labels[graphData.labels.length - 1])}${dayjs(graphData.labels[graphData.labels.length - 1]).format('MMM D')}`}</RateDate>\n </div>\n </TextArea>\n <div>\n <GraphArea>\n <Line data={graphData} options={options}/>\n </GraphArea>\n <div style={{height:'10px',background:performanceColor(change).fillColor}}/>\n </div>\n </ChartContainer>\n }\n </>\n )\n}\n\nexport default ChartMedium\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const ChartContainer = styled.div`\n width: 122px;\n height: 101px;\n border-radius: 8px;\n border: 1px solid ${theme.colors[\"neutral-100\"]};\n background: ${theme.colors.white};\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n overflow: hidden;\n`\n\nexport const GraphArea = styled.div`\n height: 31px;\n`\n\nexport const TextArea = styled.div`\n display: flex;\n justify-content: space-between;\n padding: 16px;\n`\n\nexport const ExchangeCurr = styled.div`\n display: flex;\n gap: 8px;\n align-items: center;\n color: ${theme.colors[\"neutral-900\"]};\n .curr-name{\n margin: 0;\n font-weight: 500;\n font-size: 14px;\n line-height: 17px;\n font-family: Circular Book Medium, sans-serif;\n }\n .curr-code{\n margin: 0;\n font-weight: 400;\n font-size: 14px;\n line-height: 17px;\n }\n`\n\nexport const RateInfo = styled.p`\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0;\n font-size: 12px;\n font-weight: 400;\n line-height: 14px;\n .success{\n color: ${theme.colors[\"success-500\"]};\n font-size: 12px;\n }\n .error{\n color: ${theme.colors[\"error-500\"]};\n font-size: 12px;\n }\n .neutral{\n color: ${theme.colors[\"neutral-500\"]};\n font-size: 12px;\n }\n`\n\nexport const RateDate = styled.div`\n color: ${theme.colors[\"neutral-400\"]};\n font-size: 14px;\n font-weight: 400;\n line-height: 17px;\n margin: 0;\n`\n","import React, {useEffect, useState} from \"react\"\nimport {Line } from 'react-chartjs-2'\nimport {Chart as ChartJs, registerables} from \"chart.js\";\nChartJs.register( ...registerables )\nimport {ChartProps} from \"./type\";\nimport dayjs from \"dayjs\";\nimport theme from \"../../theme\";\nimport {dayDiff} from \"./helpers\";\nimport {ChartContainer, ExchangeCurr, GraphArea, RateDate, RateInfo, TextArea} from \"./style\";\n\nconst ChartSmall = (props:ChartProps) => {\n const {ratesData,exchCurrFlag,baseCurrCode,exchCurrName,exchCurrCode} = props\n const [graphData,setGraphData]:any = useState({})\n\n const [change,setChange] = useState(0)\n\n //generate graph colour based on performance of the currency\n const performanceColor = (rateChange:number) => {\n if(rateChange < 0){ // reduction in currency performance\n return {\n borderColor:theme.colors[\"error-500\"],\n fillColor:theme.colors[\"error-50\"]\n }\n }else if(rateChange > 0){ // rise in currency performance\n return {\n borderColor:theme.colors[\"success-500\"],\n fillColor:theme.colors[\"success-50\"]\n }\n }else{ //no change in performance\n return {\n borderColor:theme.colors[\"neutral-500\"],\n fillColor:theme.colors[\"neutral-50\"]\n }\n }\n }\n\n useEffect(()=>{\n let curr:any = {\n dates:[],\n data:[],\n change:0\n }\n\n if (ratesData && ratesData.length > 0) {\n for (let i = 0; i < ratesData.length; i++) {\n if (ratesData[i].exchCurrency === exchCurrCode && ratesData[i].baseCurrency === baseCurrCode) {\n if (curr.dates.length < 7 && curr.data.length < 7) {\n curr.dates.push(dayjs(ratesData[i].currDate).format('D MMM'))\n curr.data.push(ratesData[i].rate)\n curr.change = ratesData[i].rateChange\n setChange(ratesData[i].rateChange)\n }\n }\n }\n }\n\n let chartData = {\n labels:curr.dates,\n datasets:[{\n label:'', //kenyan shilling\n data:curr.data,\n borderColor:performanceColor(curr.change).borderColor,\n backgroundColor:performanceColor(curr.change).fillColor,\n fill:true,\n tension:0.23,\n borderWidth:1\n }]\n }\n\n setGraphData(chartData)\n },[ratesData,baseCurrCode,exchCurrCode])\n\n\n let options:any = {\n responsive: true,\n maintainAspectRatio:false,\n plugins: {\n legend: {\n display: false\n },\n title: {\n display: false\n },\n tooltip:{\n enabled:true,\n intersect:false,\n backgroundColor:'#F7F9FC',\n bodyColor:'#070B12',\n titleColor:'#070B12',\n displayColors:false,\n titleAlign:'center',\n bodyAlign:'center',\n xAlign:'center',\n /*borderColor:'#070B12',\n borderWidth:0.5,*/\n caretSize:0,\n padding:10\n }\n },\n scales:{\n y:{\n display:false,\n // min:0\n },\n x:{\n display:false,\n }\n },\n elements:{\n point:{\n radius:0\n }\n }\n };\n\n return (\n <>\n {graphData.labels && graphData.labels.length > 0 &&\n <ChartContainer>\n <TextArea>\n <ExchangeCurr>\n <img src={exchCurrFlag} alt=\"Base currency flag\"/>\n <div>\n <p className=\"curr-code\">{exchCurrCode} {graphData.datasets[0].data[graphData.datasets[0].data.length - 1]}</p>\n <RateDate>{`${dayDiff(graphData.labels[graphData.labels.length - 1])}${dayjs(graphData.labels[graphData.labels.length - 1]).format('MMM D')}`}</RateDate>\n </div>\n </ExchangeCurr>\n </TextArea>\n <div>\n <GraphArea>\n <Line data={graphData} options={options}/>\n </GraphArea>\n <div style={{height:'10px',background:performanceColor(change).fillColor}}/>\n </div>\n </ChartContainer>\n }\n </>\n )\n}\n\nexport default ChartSmall\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const ConsentContainer = styled.div`\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n padding: 24px;\n background: ${theme.colors[\"neutral-900\"]};\n border-radius: 8px 8px 0 0;\n margin: 0;\n color: ${theme.colors[\"neutral-50\"]};\n display: flex;\n justify-content: space-between;\n align-items: center;\n`\n\nexport const ConsentNotice = styled.div`\n display: flex;\n gap: 11px;\n`\n\nexport const ConsentHeading = styled.h5`\n font-weight: bold;\n font-size: 23px;\n line-height: 28px;\n letter-spacing: -0.02em;\n margin: 0;\n`\n\nexport const ConsentDesc = styled.p`\n font-size: 16px;\n font-weight: 400;\n line-height: 19px;\n`\n\nexport const ConsentButton = styled.button`\n padding: 14px 20px;\n background: ${theme.colors.white};\n color: ${theme.colors[\"primary-500\"]};\n border: 1px solid ${theme.colors[\"primary-500\"]};\n border-radius: 8px;\n font-weight: 500;\n font-family: Circular Book Medium, sans-serif;\n font-size: 18px;\n line-height: 21.6px;\n display: flex;\n justify-content: center;\n align-items: center;\n height: 50px;\n cursor: pointer;\n`\n\nexport const ConsentButtonsContainer = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 8px;\n`\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const DropdownContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 12px;\n`\n\nexport const LabelContainer = styled.div`\n font-weight: 500;\n font-size: 16px;\n line-height: 19px;\n //margin-bottom: 12px;\n label{\n font-family: 'Circular Book Medium', sans-serif;\n margin: 0;\n }\n`\n\nexport const DropdownField = styled.button`\n position: relative;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 0 16px;\n gap: 8px;\n margin: 0;\n background: ${theme.colors.white};\n border: 1px solid ${theme.colors[\"neutral-200\"]};\n border-radius: 8px;\n transition: 300ms ease-out;\n color: ${theme.colors[\"neutral-900\"]};\n cursor: pointer;\n height: 50px;\n white-space: nowrap;\n &:hover{\n border: 1px solid ${theme.colors[\"primary-300\"]};\n outline: none;\n }\n &:focus{\n border: 1px solid ${theme.colors[\"primary-500\"]};\n outline: none;\n }\n`\n\nexport const DropdownIcon = styled.div`\n height: 100%;\n display: flex;\n align-items: center;\n transition: 0.3s ease-out;\n &.expanded {\n -webkit-transform: rotate(-180deg);\n transform: rotate(-180deg);\n }\n &.collapsed {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n`\n\nexport const OptionsList = styled.div`\n z-index: 5;\n border-radius: 8px;\n position: absolute;\n top: 55px;\n left: 0;\n right: 0;\n max-height: 250px;\n border:1px solid ${theme.colors[\"neutral-50\"]};\n box-shadow: 0 0 24px rgba(0,0,0,0.04);\n display: flex;\n flex-direction: column;\n animation: openlist 0.2s ease-out;\n overflow-y: auto;\n overflow-x: hidden;\n margin: 0;\n white-space: nowrap;\n min-width: fit-content;\n transform-origin: top;\n ::-webkit-scrollbar-track{\n width: 2px !important;\n background: ${theme.colors.white} !important;\n }\n ::-webkit-scrollbar-thumb{\n background: ${theme.colors[\"neutral-900\"]} !important;\n }\n @keyframes openlist{\n from{\n transform: scaleY(0%);\n }\n to{\n transform: scaleY(100%);\n \n }\n }\n`\n\nexport const DropdownOption = styled.div`\n padding: 12px 16px;\n //border: none;\n background: ${theme.colors.white};\n text-align: left;\n display: flex;\n gap: 16px;\n &:hover{\n background: ${theme.colors[\"neutral-50\"]};\n }\n`\n","import React, {useEffect, useState} from \"react\";\nimport {DropdownContainer, DropdownField, DropdownIcon, DropdownOption, LabelContainer, OptionsList} from \"./style\";\nimport {SelectorProps} from \"./type\";\nimport imageFile from './default.svg'\n\n\nconst CountrySelector = (props:SelectorProps) => {\n const {options,selectedOption,initialText,initialFlag,label} = props\n const [opened,setOpened] = useState(false)\n const [passedOption,setPassedOption]:any = useState({})\n\n let imgFile = initialFlag ? initialFlag : imageFile\n\n useEffect(()=>{\n document.addEventListener('keyup',function(e){\n if (opened && e.key === 'Escape') setOpened(false)\n if (!opened && (document as any).activeElement.classList.value.includes('country-selector') && e.code === 'Enter' ||\n !opened && (document as any).activeElement.classList.value.includes('country-selector') && e.code === 'Space') setOpened(true)\n })\n },[opened])\n\n return (\n <DropdownContainer>\n {label &&\n <LabelContainer>\n <label>{label}</label>\n </LabelContainer>\n }\n <DropdownField type=\"button\" className=\"country-selector\" onBlur={()=>{\n setOpened(false)\n }} onMouseUp={()=>{\n if (opened){\n setTimeout(()=>{\n setOpened(false)\n },100)\n }else {\n setOpened(true)\n }\n }}>\n <div style={{display:'flex',gap:'16px', alignItems:'center', overflowX:'hidden'}}>\n <img src={!passedOption.optionFlag ? imgFile : passedOption.optionFlag} alt=\"flag\"/>\n {!passedOption.optionName ? initialText : passedOption.optionName}\n </div>\n <DropdownIcon className={opened ? 'expanded' : 'collapsed'}>\n <svg width=\"12\" height=\"8\" viewBox=\"0 0 12 8\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M10.9999 1.17C10.8126 0.983753 10.5591 0.879211 10.2949 0.879211C10.0308 0.879211 9.77731 0.983753 9.58995 1.17L5.99995 4.71L2.45995 1.17C2.27259 0.983753 2.01913 0.879211 1.75495 0.879211C1.49076 0.879211 1.23731 0.983753 1.04995 1.17C0.95622 1.26297 0.881826 1.37357 0.831057 1.49543C0.780288 1.61729 0.75415 1.74799 0.75415 1.88C0.75415 2.01202 0.780288 2.14272 0.831057 2.26458C0.881826 2.38644 0.95622 2.49704 1.04995 2.59L5.28995 6.83C5.38291 6.92373 5.49351 6.99813 5.61537 7.04889C5.73723 7.09966 5.86794 7.1258 5.99995 7.1258C6.13196 7.1258 6.26267 7.09966 6.38453 7.04889C6.50638 6.99813 6.61699 6.92373 6.70995 6.83L10.9999 2.59C11.0937 2.49704 11.1681 2.38644 11.2188 2.26458C11.2696 2.14272 11.2957 2.01202 11.2957 1.88C11.2957 1.74799 11.2696 1.61729 11.2188 1.49543C11.1681 1.37357 11.0937 1.26297 10.9999 1.17Z\" fill=\"#070B12\"/>\n </svg>\n </DropdownIcon>\n {opened &&\n <>\n {options && options.length > 0 &&\n <OptionsList>\n {options.map((country:any, index:number) => (\n <DropdownOption key={index} onClick={()=>{\n setPassedOption(country)\n selectedOption(country)\n }}>\n {country.optionFlag && <img src={country.optionFlag} alt=\"Flag\"/>}\n {country.optionName}\n </DropdownOption>\n ))}\n </OptionsList>\n }\n </>\n }\n </DropdownField>\n </DropdownContainer>\n )\n}\n\nexport default CountrySelector\n","var img = \"data:image/svg+xml,%3csvg width='21' height='15' viewBox='0 0 21 15' fill='none' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3cpath d='M3.5 14.48H17.5V0.48H3.5V14.48Z' fill='url(%23pattern0)'/%3e%3cdefs%3e%3cpattern id='pattern0' patternContentUnits='objectBoundingBox' width='1' height='1'%3e%3cuse xlink:href='%23image0_122_19220' transform='scale(0.00625)'/%3e%3c/pattern%3e%3cimage id='image0_122_19220' width='160' height='160' xlink:href='data:image/png%3bbase64%2ciVBORw0KGgoAAAANSUhEUgAAAKAAAACgCAYAAACLz2ctAACd7UlEQVR4nOz9d7QlWXbXiX/2OSfM9c/mS5/ls7xpV11t1ZK65aUWsggNDPx%2bGiRYMzDMAiFgZs3gBPPDDAjBAoSkYYSREDIt391Sd7Wprqru6vImK7PSu%2bfNtRFxzO%2bPiHvffS%2bzJCHXEkPkennjxg1z4pzv2X7vIyEE/tv237Yv1aa%2b1A34b9v/uzcz3snt7%2b2NA2BdQZYPMabB8sqnefH8q9xy8L006w1euXyalnH0h9dpN%2b/CuQajocKHLWbrG0QywtRvY3mzycVlzcqmxVpPEgsH5xIAokiYaUacvzrk9qN18sJzZXWIiCL4wGY35/BCynDkKGwgToR2XbO%2bnXP3LQ2uLI/oZ447jqa8dLqn8iK0bjlSP/jcazuHbR4WNnay%2bbtu6Rw8c2HrcG9kW0szunFl2TVWVoep9VbhvTjrRQfvm42o6LRroyRRw42N3rCRhN4733ZsdWtQLG9s9tcPLNauvvuRxStvXNheXt/Odt77jkPutTc20QoOLtS4ttKnlmqGQ8viXIKIUBSW6ys7OOto1DXzsw3azRRjhHPnVxiNCm6/bRGtAts7Pba3tllanGEwzGk06xxemuelV14hTRMW5ufIshGDwRAIzM/NYl3A2oKjR47wax/9GIcOHeK%2b%2b%2b6D4Li%2bvMza2hZzczMsLS0w05nl4MEDKKX4veKaSRztAvC/9k1rIY6EWqpIhopu3y3t9O1t568M7z59rn//9bX81o0te2yQbRwdDn3He2p54fjE011AODA/pChy1ropTiu2eobBUCGAhIDqOcLVEdZaNACBJ186SxwJzaZGR9uj3/jcynZswtWZtrm0uZWfhvDy0YO10/VEvZEmermWGu9sIDIK6/7fIRr9VwtAAYwWkricsRtb9mB34O9/5XT/LdfWsreurBf37/TdsW7ftbLcIyKICC4IwQs%2bgGBQEYh4dvpNzl%2bH24467jzuuHjFc%2b6KJokgL4SdviJ4QBJK%2bh8IwUMIFMGTOZ92N11KCEtcHz7yzCs9jFa0atJr17l67GD68sJc/MyRpfoXkzi8MDdTu2I0GKPwzn1pO/P3cfuvCoAiJeiiSGGLoPtDf/cLr/feub6VfeDy8vAt2313607fpQHPKNMlwHRClHoIJdVJjWWu41mYETpNmO0IKkqRALGxHJrXxFJw59II/5DFmIgrq55ffTri0nWD0QGtA9oElBJCgOADWjwmMkgFzHYtp123dPuuudINd11cye5SwX1zuy55p6Eu3H1b%2b6kjS7VPNOryZC3Vp2qpcVGkEZEvdTf/nm7/VQBQK6GeKoYj6A/DyQtv9L58dXP01Wtbg0f7o7C0M1QooaRQKiEERZwILijE50QR6Mhxy9wyj94bceyWWdp1TxwZfLDI6gtcu77OlesZbn2bXuMEqnGQnazOMFdkObTqgSOLgTSG3hC2B0LmhCQOtBuBUa5wPuBcOVFyF6FVoN3SoAJZKhQWhtbFW2v2zrNX1%2b6sRf67O42wfHQp%2bdydtzR/9ZEHDv3GbCc9ncQGpf7rAOIfaQDGkdCoaXLLgadf6n3gzKX%2bN5y5vPP%2b9e38qA0KUQneK5rRFoNMGOQdBI/SGsOQd81/hntP1qnPLDIYbtFueY4cWkArh88juhtbuJ0VuueeY/naNXye0Y1qzN17hEynJEmNxVmhUxcevENhlKeeKNa2HZdWYbsPSiyLnZzlbc2Vdc/yRsTKZoQdajb7CQGFEUszHtKoWQprMDqiKFJs4Vjp5kvLm8MPv/h678NPPLN26f47O4/ff/fcz3da5uP11GxFkSb4P7os%2bo8cAEUgjhRGw/Ja8fCzr%2bYffvHM6jd1%2b/2HtwYaHxSF72Cd5kBjnYcOv0Gn1edi7xhXewkn509xYPvXeXHtXk7I53lr0UXWWqyuX2G9SLjy2gHEKEYasu0V8jzDNk/SOHAMW19kYelWDhw8RtANWrWIEBS9fgbeUtgCQViaj1iaK/DWsrWTYYm47bBhZSvn2pbl9UsRl657Fhs7SHDkXpEVcKS5zNG5jNV%2bi2sbmkgL690aO/0WRRE4vzo8dvry%2bnd/7InlP3Hnsfjp%2b%2b5s/%2bzcfOMjczPpq0n8R24ogT9CABQgMkJshOWN7MtePZv9yWdPdb%2b%2bVbu62OrEdPMFnNcMi4QD9Td4tPZznDy4zUr9ncRG%2bJq7nufqsMXh6A0G9lnWPDSinNNrQ/TMAvHsrTQKzyDX2GYHH4bMzN5P1D5Eki7QrM8wKAJuZ5ts9RwS1%2bimLVRtjlFmyfMCE3KKUR8d11DpDFnuCJRacX99meWrW8y0m3zVg7Os3JrSDhtEwyt0Q8p2Zoi0plnTzM1mnJjPiSLFVr/HZs%2bwut1go6sI3jAcKnn1Io%2b%2bdmHt0aefX/3z73ho/mceun/xJ2o184UkiRiOii/1cP22tz/0ACwpnhBHopbX3YeeuZz/6dOX3detbdNA17i35Wj5N1C%2bxkZ2jAeOnuK77/0p8sEWn7r0fup%2bjgeaT%2bPOvMKcqpHXZokOfxUnQoQLh5D2LGtdR9w%2bzomjh1iIwHuFH/UZjUY0G23CcJXt1aus9yyRK2hoh7ceZwvQCaY%2bjzMxwcSMsiHG9hhZwe%2bskdg1UJ4LVzbYHMQspD18DkuzB0n1Ij5L6K8tk/TWqEVtlJqjkdQwbGMLy%2bGFlMVOxtHZHnkRWNtYZ2drk35nkevbR7iwmhw798vX/sLjTy3/iQdP1n/2g%2b8zP95s159IkuSPhMLyhxiAQhJr0lizvC5f/qlnw5%2b7uNr9ht4oi5uR464jO5jI8WD7Wd53%2bNfZvP0%2bfv3s23nr8VeYrTt%2b5tq30WyPmE8vcbU4wNsObuMxSK3N7IEI3wtc6S3RmV8kmVH0XI2cQC2JCIUjme2Q7yg2dtbZuvQam90hM4vHWWg3sIMe2TAnqkW4fIvCC436QSI3wo/W6XmNlS5N6WH7fbaWL%2bLVLHFnCZERhhxlPBpLLhrSJqGekfkMtq6Qtg8Q1dqEsMNgMGBrELDZgLrOiSMFJkb1TzOjz6JbSyhVBztYeOoL2fe8duq5b3vw3gM/%2bYEPvP9fHj966Nk4in/PDMe/H9sfSgBqpaknwrX17K0//bj98198ZfvblbvQeMvRF7ilvcbhZk6nGYiMpx57XHwfrZUrfO3RC1y0D/Jr597Dfe0rPHToVa5lCYhjYEB5j6kNOb0z5NRGwkziSJMa8606o2AY5QOUtTRTjSOm1VLkQ080s8C9x2JCNsIoS2uhQ9AptI7gCbhsiPJC1h%2bgC0fbOXADrC0I9EgIzM2k5H6D61sDjtktOqmmkBRtYpbmaqxHCxjRhFGXkQWdNGimKTubaxjpUmvVEZ8wEzmSuMbmJrC9QaTO0EgS0jhQ5BmbW4OZZz7z0T975oVf%2bcZXP/CNP37k%2bMl/deL4sfNaa0r75B%2bu7Q8VAAVI4xhQi5974ez3/tqzV76vP%2bLQl9/%2bMRbrp6inBbVklnZrFqJFHJqhy8gG62yqGstyhKbyfMXxpznSWmbdWhbTnNwZzhQtOs2IhXibiJgkmadV24TByyTOkKZL2OZRbHB45wk2INubtEbrKBy1%2bDjSOUjhDGmzhkRN1ja2YdRD2YJRluGKHK8ULokpRgrT65NnV6HWw%2biCucJzeR1eXg0cWHuD9sJxZo%2b/hbjWZEYlGKVQvs5wWGCxBAyd%2bQWM8oyyAXF9Dm8dWq0RmXmCiohck5qBwWiARjgwZ5ltLNHdWTv0iz/zz35gZuG2b/jab/gT/%2bhtb3/X/5OmdTscZn%2boKOIfCgAGIDYKH9V55dKZD28s/%2bL3L19ffec9R0ccnNkg1j2W7TFs4xithsLJkK3hkKZbZ8Zu0RDD0lKLO5I%2bzQDFCC7nGWJgKB3WZJ626pIwQExEjOLW2VUWo8DOUOP6fYriWYrWvbQXjjJavYTolETVKYwlmU3J3Q5pAa32DF08zcEySb7JyuYOc0WfRGlc5ikGO%2bQqY0s0s8U2iazSa2eEepeo0eao9lzoxpwVxdH%2bGdSlHXaSDkhMvblIs71Iuylko02KEAMalTry3ia97T7N5hzNekwtVVAIO9sZKmnQTpoUeUTmahQh0Fg6xnx/nesXX7//J370b/3o0597zzd%2by7f/mb/XbneeKorRl3rIJ9uXHIACNJKEyyvx8WfPnPsry8s/8j8cmD8THX3rvcwlGY18QD8cZtHMsRQtk4Yul4YJMTkHm326bh6DRjXbzEWKTdciaypk1MWiGLoa3iU0k5woeLq5ZnkYWIy3ybzDaCCGWkNRsEF3VMPHBpt1sXFGbGqoJEIzYJRvsrF%2bmY1exoxxNBttOm3H5c2YUGwz20qwtQTt11kgI2vGFHlM1OuSDwoiH6g3O9xTT%2bg5RdRfIV/fII9TcinYuTpiZuYWTOcoeaZQSqins8S1GZIYdpbfoNtfptGcwZiEpYMzpHHB1vo1hra0cCfKkCQ1XJQQpXWOxoK88QLPf%2bEjH37jzIuPvv8rvuMffvCDH/zhNE1H/cGXHohfUgBqpRFV49T1q9/8xGsv/m%2bMPvHwXbecJ6rPEaXrmCDk5gi1kNOS0wxHwtUwy5FZy4E4RqTNzrBFESBWgU2vyfMNkijQaUcULqMT%2bhQW8iJj6AVvMzJfp08dJ4FCFPNRgaiYlkmopz1s1IBmjPYb9EYZA%2buJ05i42UYVnluSnA1XZ2Vrm1v0Fv3oBDVvqUcbtBqaYRYYjHIKHLXI06g38B4gJS80iXO03DaFGlLEnrhQjFoNamkP2XyGzY3XyXUNb2ISc5il4w8xf/gASewYdHuMii5xojHi0WpImkIYDdnMc1oeItVAqOGyjFqtzqETd5KmZ7h44dyh//gf/vE/ePW11973fd/7ff/7gaWFZ7s7X1qTzZcIgAGtDEDr%2bsYXv//F5Rf/lzi%2bnh6f7zHT7NCQIUWScmbnHub1VW5rrxIrQUcHsKM55tLraDGs9jTnNlMaUcZc3ZIDDW0pXCB1Of0sofCGepRhldC3hiQpaIpizS7SinJUcKxIoK4F7zWDYc580icxQuRGqGZMzwrWzNGNYxBHK61jB33S5BJFpHmgs03qFcqnDI2hp1MEoVMMaMeGEENeC%2bA1IRNyG0PaIbeG3lDo2To1Mupeo%2bYaqMwSsnVcWieLaqhiBUKNJLIkC3WyoMlUjBFPNCrQQRCT0sw9UdErPSOugGKbrLuK6AYqXeTQYc9MkfDCs7/8jX/jr5996Fu%2b7bv%2bj6/96g/9WBx/6TTlP3AAlopGk25W3HP6/E/9/xI%2b%2bXWHGik920bVU5JaQRYfpqdPcFt0nQPxCnXVIHiFlhHNaMCmq3OkNsA0DB3JmatZeoVhWCh01EEpIYl7xDoQgqDFEOmImThQ05APEgajmLm5gJg2xnuM7zPwMRZHT2XEKqOvNX2dsGUNM2GNKNvEe2HAkH7ukWaETVM0Q7quz2omXMvbiBbiZguVFVjZIfcDtnIBFDOtHFNYdFA0onnqLtAZ5phhnziHqFA0pWCkPHliid11sus5ZuY4xsDm1XM4ZbASyIJHK6GtoFZLIVEEqxkMC7xyLGf3cn59htn482S6Q6QsnXqXhx86wekzr574R//47/3I5sbWfX/qT33X32006htfChD%2bgQJQRNCmzquXz3/FmUv/7p92zCfubXZaNLyhHnfBxHRZRNXmuUUuUo83CM6QFzViI/RCjEPTTizBGOoqcFttCwlCHMd03RyJChxKewSV4ERwVqCAVHtyNHnQxKmQiqCVQRJNbEdQBGqhR6wdI6tYd5pMhH5m8Xgy3yN4QbQm0RnGJHRzRc322Q4Zq6PA2rDF4VrMwwfm8ekMG91NBt2MfNRnlhEKzY6ucTApaPahkBG9uiEyMaOowSgLJFmGloRhMYDCIhasWkHlFucFYYNi2MeZETvDDoXvkGhHrDbxKiLnIHE8oGau0Vu5j9XiQ%2bTqOOJGJCzQlv8MIePYsSaZLKp/9aMf%2bV8uXrh0/2OPvf0vHD58%2bJRIGcHzB7X9gQFQRNBS5/VrX/j/nLn0oz94S%2be1xXazQx5iatqidcyIBnO1iFhtMMMmkCLGkJkIJCEyEQcZ0NIOG1JcUERKMfAxceSZMSO2bJN1ZjkQjUjJGTpHLgqrTEl%2bg2Im8SjjudKfJ%2b5nzDUDgTpKQ8AyAnpFA/GeRjQiR9NzNQzQCQWF1XiEvo/Y6UcUThMLHG9FtCNb3iHfITZC2mzRYEij1aGXC/gaquiTNTyZOFJXvmPBDnk8T95u0M2GpMUynWGPLDUY7/HFNjYoIg21ds75/AifXf6zDLMlYtkhUtsoyRkW89TNDkdmfh1Un2Z6mbw4iPOaJDlP1Fng4sa99EZtGh2FNhEf/8QXv%2br1M2/8p%2b//y3/xe9M0eSIb/cEFN/wBADCglCY2bbq9J//XreEz/9vdSytmptUkK2LaJoBJudafI41gKdnB%2b4DSdSKtiMRQZAkXdlpoZTlWj7A6ItWgIk2v0CCCoEi15bb6JoMQcylvEXKFD55YHKJKF5tW4IE5U6BMRuEUcVSnCIIKAcGQUJDgCRIoXIvtUYuZeJNUMopgyCVmvYgY%2bYjDNaEea7REpGlEETzbRc4oxGjd5FDrGIluU48NtcKSb63TEQNaGBYj4l4XGwL1NCU4TWr69Bli4zq%2bVsPk21AUDIqADD3N2ZyBtHjh5T/OWvetxGpAHmbLnvYBFQr6o0NsDI4QqSGCoLUlIHgRonaTMLyHXvcOUr1GVNtm8fB9XLn62gM/%2bPd/6Cf/0l/M/ucPfegrfvr68srvPzT4AwCg1nWKfBi/fuU3/lYve/yv3L6YEcdttI6YSYUCTUHKfCuABApJmWkKPgg7IwMSoyPh2GzG0CaQtNgJGkvGQt0SW01uBUEY%2bUAQT8c4ej5nR2IWGhZLSj5yBAWZirDOEWuhHQfyIudY01N4GLmA9ZqVQY2aDPAkXBocohHt0EnABMOWj9DB0tSKmWaL22ahcIbMabwTllpNQjHk0s4OLu9jowbKDSALJOIwskOmHDNkBAVFkqG8UPMxTg9wPqOpLEURyCVC6ZiAx/iAblhUTfHRZ7%2bds9ffTy3qApYy6jWAeAgeHTwhpFgbI%2bQEPCjLQuscTbnCLfNPM%2borhqMjiHKYZIn5A57LV04d/Ts/%2bE9/RJR07r/vnn%2bztrb1%2bw2P318Aah2RFYP6q2f%2bzj%2b4sPbz31dvNplvKqIoKjU5l5JJzKFZiwoZ1/oN0pomMQVZIaRJTKqhaQocESKW%2bVrGtUEL5xJaTUviIMsVo1xTU56AZiiKjtbEBurBE5scH2mM1jgFy9sx23mNhXrGgVogiKI3CkTKkyhPLUlQocZw2CTP28w2uqSRYuRiRBRt7XHG413MZ18%2byoN3bhCbHXYGiu7mGqkMOBAXdEc93E7ZBuc9XRwiGkJOcD0SiQjGE3KHMEDrAqcgsxGZaZJKQaQT8hBh1BaDIuUzp76SF85/kMjkCEBQIJ5Qyhdl9EZQSPCAgyAImhCEes3SrHni5CwcvsYrV7%2bZfLSIEouKFzhwsGBz/Urnb//df/5Df/Z7vqNx/333/lOlfn8TJ3/P7y5UofEGbJGnr73x9//h5s6//b6jc5p6mpDRIolShrSROGWxVRACrI%2baBJPSih0ehYkSkshgJcbqGp2aJokMa1mbhZrjQNNxdmOJ9axJXDOYekKzEVFELaxKOJQ67l4IEKVc7M6yNpqhnYL4OjvFIjt5g6xQoOps2A6brslWXmPLxjQjz%2bE6LHYcxw6tYSIoiLHa0E4UnZrQaVsef/EeXrlwjMXmJjXZYV53afo1GnqTuu7RqUMUFaAyXGJBB%2bZlyKzKwMQ4AfAEE3BRzmrR5OWN42QhEMkOVmVYk%2bP0gFGU8/LGrbx0%2bSHiaAelcjJbp7A1QtCATD4RqT5VuS8BIWGl%2b3YkniNOatTqmyzMPIMXA6oGuomK5pmZO0B/4Gs//C9%2b8h8%2b8eQX/nKjkfL7CcLfcwrog4PgyIvcnHrjn/yfG5s//r2LM23S1LA2SshDCxN3WYwDW0Wg8JpIG9qpJtKBhsSI0cSRkPkIhZCqQCxCasASUTeWgU0Y2g4ttcNMVKBV4PxOh0YUmE083WFCOxQ0YkhiQxLpKknJcPdil34%2b4ovXjnB%2bZ5H7D25y8GCgnw9YGw4J3tLLczrxgFpHOLs5i1OBTpTTqhcMMsMnn3mMZ04/wHe%2b99eIwhpCQj3KkMSRhYgi9yTiQBscZbS0wuGVZtvF%2bODQyuHEYApHokC7hFrdkWpHcCUb7iuH4Om7OncevMJt8/%2bEz7z%2bXk5deoQHb32ZneEcb1x6K5Hp4YgJPkIkryhhBUICWhWsdt/C2ZUL3Hf4cbJYWGxcZrN%2bnWH/IEoNwTRRYZZW29Pv9cxP/Ltf%2bsG52U724Q9/ze8bJZwA0P0uIyUEwePJszV2%2bhe5dv0n//ed/s//j4szHWYbhvVihk4KS/UtIq3IxDLyMW2dMpsKmoByAR8igikVi5oE8ArnI8RApDypV3TzBu3Ic//BTaxVFD7BScRcU3C2INXC7Kzh7FZENwt4chIVcM6wMxI2RjHe1fCuTRT1yfMNgnFEqsWxmYP4IuN6z9HLNjiS9rml08MYy2I85NzqAr/4xUc4d2WJb37fJ3joznO4IsUYhdUK4xXGerQRRIEi4K2QBcFqRbeALChqkhNcIGjBKsH6mNnaiKXGFi7TZEUpB7tgsdbRijxpqnFFn/ff%2b6vcdfzztGvrbOZ1ovoKbhiTxJYXT38QHTQiHiRULDogyiHB8MrVr6Uer3PHgacZjEZo7QgqhhCD8ojpoHxGswm9/lD/i3/1n/7%2b7Eyn/%2bEPf/2/%2bf3IQ/k9poBCIGZn%2b9N/Qbmf/WtH51KMjti2NTZHTe6Z26KlFEMV0SsMczqmoxXKKYIYHDG60midQDDggyEBgmiykJLEQt9rchwqaIoQY4OhHgtH6hnn%2bzGbRUw3ONZtxMCmOBVh9YjXd%2bpc2uogZsixxoD7jm5RBEffGYZDOFgPzCcOo0fUJWbZnuD6cAXsgLW1g3zq%2bgwXNhc5fmSdr3rHsxypb0BhiE3AFh6NwkYxKsqJAFC44PBGEAsNPLlEJConCYG%2b00TiiJUjF9iydSQAkWMoEYnPSIOjh0Y7KKxnVCQE41ic7aLzgI4H3H7LF9hZO8DtB17j%2bvpJrq3cQRptV9TPTyih1gVF0eKFy9/EbOsS9eY2NrRKGEgNRAjiwbQRn9NqKrq9QfqD/%2beP/KNOZ2bzW/7Y1/9MAIri966KwQSAv9voWaHMTuvufOZbit6P/525ppHYJPR8SiIJ989uUVOCKxJA0ZaUtigkCEHFpXDuDEopVAAVhGAUyiuUArRgVPmk3EWMQkRTcgy2NPP4nPWhoq4BEa726xRFQk2lnJjVpIBujrh9LmdtpJlJRhgtbA4Nm0OFUREaQdwmz1%2baY9jVPHz7MsOmY2XYZmdwkJmW4/YT5zg2v0xb54yyGjY4nHiCFgIBowOpKBKnCAZGTmGCRcVCFgKpNmix2CIiMr7UGyhdiHkIdF0TrXPmzAiTO3YKjRFH0JqRLUqp3Rti7/BodvIWrWTE%2be5t5MMO99/6UVY3j%2bF9jFJ5OTihZMOgiEzGMD/M59/4dh448e9p1nbo94%2bjxYAYUAmEJugR3m7SajbY2u61/94/%2bJEfimN95S1vefipdrvzu8LKeIsjg4zdLzvD/u/8TpXQ2%2b8%2b%2b8jm9e//SBxdORpFc%2bSSYCSio31Z0qGICWIgUUiRYrwQtEaLJogqhV1TCtJWIpQRnBeiKBBFpalFOUUeYnaICBKwIjSV5Y1NRebrHG0UeOXZGEWoEKNQNJOYhs6I2ebUtUU2BnXefXKFwjq2MxjYGOdyZo2lHTvObbSRkHOgtYkNmlEAFyz12LFja%2bjC0sscO7mnzBkPODwt7ZjRliaeIJrNokFT9UjpUwRhB03kLPiCrgsMc4fyjlgcTgRxBSujlAGKY/EmeQ69oaewDggMc48gYHMGTrFqWzR9j7lknV965rt59tR7%2bY4v%2b2ucufJuPv/KN5OYHuDABwiuzEsNnhA8tjAcmv8NsqLNxsZJtPTAZ%2bCH5Z/dwRerEDJEaXa2uxw6WH/x7/6tv/TH3v%2b%2b954ZjTKCr2bP73Cbn%2btM1YYper%2bjmwQCWrcYDS8d2Fz%2be/9MootHVbKAszUaoqgrDyRQKIwolFZ4HyEetNagTaWwGTQCSpEpgwoG40CUoIA8aNBCqjyJhVmgUBpLwAdDWksIeUTuIYSYetqhYWA%2bybHOMypiGlGHw7MRhYdUNHGkaGhh6CK8B%2b0tgub%2bQ12GEuhmDZxz5A6cjfC5p6kh08K2jfChHIC2sTREkZqA%2bAixHh0JdeNIgnB95yCknpnaNkY5cmuIg8NFYG1AxOPRGGA%2bzohRbIQ6hSi8KTAMqvPAWUeqHAUzSFDUycldxMljz/Dc6S/njcuP8Za7folrG7dzbeUejBpV9sGSSIRKOTEmY6V7H9gIrRwEDWIIUpq70DWUbxPcNiE4Wu0Wl65sPfAff/IX/68H77/vOxuNVs9if9dB1hMAxib5HVwuiCjyfFv3tv7V30W/8K6oNk8UEsgjouDJdEJkI2omEJSGYIiCIRiDiQwq0hAUSjTOQvCaBF0qcVohumTBIWiCVWU/aiFCiIIHFci9wRQ15iJBKAFWTyxIDWFEI7IkShFIaNRzlqhh9RyxHpI7IcfgHCQqIYhj6ByIpx0pRlojVhATMNYSS6mBNwzUIkeCo24EJULwBoNHpZoQK5o%2bx3hNd2eWttumLsIIjVMBEBRCzSiUitkJGmNH6EioFR6de5wTtlyCc4ZZ2SJKFFZrtlwdi9DRA7p5Skc5jsxdYqa1xtWNu1nYeIOsqKO1pTKMTbThUh4sj4mvEVC7ABUNEhHEIhKBrkEYIb6MG%2by0Z/m1jz/7dQvz//qv/8W/8Gd%2bwEQJWZb9jsG3MD/zuwWgQqmEzc3/9Kfz/Gf%2bTK3eRFwLNYpIQ0CbGK8SEg06EkSXebRKGySJIWqAF3QIBGsREyEqKmU%2bpfBB0FKKPRGGEBSiqs705dQLCnJb4/WVg9x1YIdbZjOGPsG6nMzD6iDQTOrMxhkr/ZSr23CkXVCLIkIAJQVNNSCPBBMibBA8gqEguEBda5pG450jRKXHY9YE5puBgKBdQClDEI/34AqFL0DZgCEi0sL9RzbZGlisheAVQ6fp%2b0Asnlas6SlN3QcCGusCPkCee4Ir6MiAQZLgTB3nFO20YMsa4uEAFTK8Vhidc3HlXoZZk5GPOXXlMbZ7xyrvCLsgZCwLCgENIQEqbVk0BI%2bIJkhEkBiRuLQRhgKCxxhFkrb52V/47F96%2bOF7nvvQhz7wk1qr31XwwgSA9r84u17QKmW7%2b8wjmzv/9m%2bmSSyxb1MMEhIJzLXAqpgQFDqKkSguZTwFqAZE9fKlbUawFnSM0gliGqW84gM69iDQHcYYo0kMDKzBBMFIQLQFBUmsePT4Bh6IVUG/SOjZWY43LVt5IC88Vhnm0oJ2AuDLTguBVCl8XCf1pZ0u94bMOjIrWO9piGAEQlQ6kY2GRlV8yDmHtYZgS7kKo8okpWAJtiifg6AllKmcSiFZIEiEiaEVPFoUA12jLjmdesFOrhmKY5AYijxgsBxpZeRBIdaS%2bIxu4clcwLkIpRxOIp47934Ggzm0ZDSiIXff%2bjivnPlyFB7BVZ4SKvDJeJcJMEVVyorapYQqgZCCHwE5AUjTiG7Xxv/XD/2Hv3filqPPve/dj53Ki7yKJ/wvFwgnAPwvjgWTiKLYrHe3/skPxpw/pDlGGEQ0xTHbcKzZOXRaYzbJQKVIowF5zvWdNnOzDWKphGNVA8kRMUBUvUQEsWejG/Gpc7cQopTDM13iGC6t13jHsWVmGjmfOHuQR5a2WGorFlsF3htyf4BWEtFIAiKa2VjhzRAvGq00Bg%2bUjxYJhGBLZmhi8koubRiHczk%2beIyyKAVKHL5wBBUQEbz1KB/KSBUf8IUriUgMuRJGI1vC1FkEwYQARmHigPYOZxU%2b0xhR1FTE0GrmY0tkCjbzmF7QDE1BXUbgc1RhMTIkD6WYopTHK2hFO6zsHObq6l0YnUEQtnuHqDdXMfGAUJQGIREIQRGCAL5698pMU8o7lUvPAaU8iJRRSEgKwVJW/Ao0mw0uXNq85d//x1/9O%2b942yPflSZp7n6H5UEmAEyj%2bLePPRRaRayt/cv/4cXLF75qceZOTsY9WomlG9X5F098gJ97%2bV38r9/5G7z/jnPgDMOh4sXrx9gsWrxjZkCss/LFRCEUldvIlGxDCwOn%2bA8v3MrCrOKDd/ZJlCX3lqOtPo0kpwiWVs2TSQngQI2cBC8JdRUBAR8yJHiUqiKxQsk2pRLGJVC2AYcPUPgySkWUoJRGE/AIgRyPhbikaB4Q5VCSl1wuKJS1BFdACEQSkzuHBDAmJViLcwWiHEMlOA/iPcZH6ESYM571EHPJJmgfiJWjpQrSOJCNFNkokCaec6sn2B7WWVq8gGSeWOVYn/D0qa9mpzdHbIYQYH3nONvDBWzRQChQY5lPHMpkQIa30yJXBUJU5Tf2FRUsg0FQKYRRBcKSyrU7M/zCLz35LY88%2bJ%2b/589%2bz5/4YUHK636nACT8drXggInqbPdfv/8nPnX9rzh7N2878hIzsePq5iJ/%2b5e/mV97/lG%2b/n3nefj2AlSbzBp%2b8pkHOLd9jB/4hmeJlcNjQAkqmKoVuhSEQ%2blQl5DwnrsH3LW0SU158IGGKhg6Q69IGBUp7zjaZyevMyyEmvGkYkENCES4oNAEkAiPRigIFKULTKLyuaEMRCgpr6JmNOCwqJI6hAEBj1cGCQLYyq8aCARwCi%2bUg6VcOXg%2boDQ0ajHOKkJweIGgHLnWDDKFsaBRiARMgERykqTg2sAxKCAPikQ5RllB3Vi0MhSFQ%2bmAxRByjxbQac7nXv4aXnj9fURqhAj4oPA%2b5v7bfoX17WO8%2bsZ7wEOkhsTxNiIZ%2bahTcTzPrnw4lhErFhzGADSg4lJe9J6xYTuKFKNRzI/82C/8tfe8662fPHn3HS93u33%2bS8zJM50pM4zSv03rdlDkdkP/5JPP/fUXlvWhv/j%2bsxxpbnN9%2bwg/8HP/HU9cuI9/%2bL2f5MNvexZdpGA6nF2Z5ZOnT/JNb10hjRzYOuCxZARv0b5qRvAl2Q9CzTgeOrAKXmGBlWGN2aiB1oGGCURaAQVW%2blwfRbQiQ6QKYm1RWKwXIlVq11pKDdiSosQS8CV7lIjxnBVxaBwhKEzFigRdHvMZClt6CoJUlgdTgldAQkHw4NFgAlqXWnMxUvjRiJ4yeCKMc7SNISjDwAM6x1tLKACTY3zAB0W30AwyaJgCrTW9XFDOcmT2Cu3m9TIRPs04dfU%2bnnz5q0sqbxwEUOLpDebBKb76HT/KfOscV9duZX3zFobDBuKbldIwTkaqlLqwSwUnIESDMkAMPgFyxhE3IQRarTrnL20d/qF//u//xt/8P/6n706S1BWF/S8SBScA1Cr9rbEHCIanXln7un/zC/Vv%2bfYvv8xtR66Ajvn0Syf5yBcf5X/%2blif5lnc8D30P3kA8w%2bG5Hj/wjc9w2wEDLi1f0IOmRk4OCBoISpeGVqjOsWTBcXmnwbbTtGcyVAi4oCm8ZyOL8OKJYzBak0jp5EfFxFFc%2bUEdPpQaphJFqSaUIIQINdkPeAoC4IJHV6wrUHpuAhng8UGVbFyBSFGCD8DE6GAhFATvCD4QaYdLhNhGjAoPRY5SCp9oUmsJRSCIUCjYtDHdrED7nJY4doJhKDFic4xxFFHER194D29cPM49x75Ib9jimVffSzaoE0ejUrYLpf/40IEXabXXiLXlsXt%2bnrNrJ3nqpW%2bl213EqAxwu8EKY%2bqnSstCGCsjovZRwaRURqbYbCkPtviVj37xWz/4lV/4mW/55q/%2bT93%2b8LePvmkAZsXgtwRfbIRBZjv/6uf7f/XV109E5n0tLJqdkPDkmXsgQD225W1VG2ptcDkd06VzOAJmwJpqtmkkgCYhjKtHKo8NttTbpKwWdWGtwS%2b8cJyH7%2bghC5sMQovCOZSUxuRELEoLWgWGhdDLGiw1NIG4ZOW4krPjKU3aArhKkiuAeDIIAYsHLCVwS7ZtKb28Gh8cXgwiAcWgrAUdQHB473B5gQRbGq8LB7gymMAJ3TwQBaFhcwwaLQU6HTFygUERsZnFbI4CdQoQIVYebGkSct7w0S9%2biM898xhFZjhz/n6c0wieyIwo5YCxTdhzaOk0Vzfv4MLVBzi8cIrnz3yQ7a1FIlNMaauV/W8MwOqwVHbCwBQIGSskcWmSmVifA3Fs2B5q8yM//vN//d57bvtks9VeHY1%2be7bB1u0npgH4W9PNNNL84hPd7/71z/vHWg2DjgNKNNc253jh7B3UE8uZ6zNcX53j4GLES1cWONzYYK5uCD4phX40lUOT4C0eQ6wCiMMpw7YtyX9DDJlVHJjxfPujXebqBRISIgk0TAMlroz2DS0gIccx0I40KQ0PgqlAVUYUjynd1Pwl%2bGoiiKGUhwxKHBEBQeFReFLA4/EEMRhy1mzGRq6o%2b8BSYgnOY7MCh2NYBBQKbcCHwCCPudwLdAuNBMMh1WUpzXE68MLVI4wKy/zMNrn1GOVZd3WsDUTBkoSCueaAcxtHeOG1t%2bAyRT0d4L2gJS/b7GUCCFGB4DTXlh9AdMa1lTs5df5dpSkmOMCOUVZdoiip4Xi/iqyeTNRps8zYT5xVICzPDwGarQbPv3jloZ/%2bmd/4ng9/0wf%2b7nCY/7YACFMUcJj/Jmp0gCQSzl4LB//DJ9f/3Hq/yd23r/PgifPESlXG40AaO55%2b4zBPvXGCb1q8ThopkqQJppppQVcTzrK%2bXTCwEY2OoYXFS4InohVZEAc%2bRilDYgwzsYOgKKgxFEdA42gCpalFVXCbVaV26okmYnU5sQsEVRpfGSsRBlHjgj2qOlYZaLEVIFUFYlOd48hJccBcBLaAfoBCPIW2pKog856EnETBtjOcGShs8KA9zucM0phLmeKLZ%2b7i337sfdx77FX%2b%2b6/%2baPl8EyGxIH2H9mXh9HNrx/jEc%2b8jG0UkaUlZlPKlHzYIQcJ4Ppf4Qej353j3I/%2bOI0un%2beKLX4tWw5LiB9lnmL7RQD1mzYIiiAalwU%2bxYjGlnXZq0wqUTvnIL332e7/6Q4/%2b5AMP3PtG/7fJiicAHP0WC4V4anzx7Ct/8oHbf%2bpeorfyTQ%2b%2bwL0LGyAzNGJNbjVHl7r8dx96hQdu64FX3HGgW760b5Uaong8OYKQ1mNiK2hx9IIiVaUgLCgUCUKCYBBfBnQ6SVBSJ8VUxoIxvCpjLzA2soYKZoKrDLG2ZCnVL2AqSVNhGOJxFF5QYlCi8STVfe3k2gBIyMmDZU476lJQqICzHq0KrpnS9NKJMgY2sGNhZRhhbcFc3ZKFiFFXkxUdfuIz7%2bDxJ08S6z4P3HWRZ8/fyxPP3slgFHP80CXe%2b8CzpMkOr1y8nf/8sW9ja71BLRnsetPCGESlfzggYztTNVaKZn2Lu2/5ApubRzh38QFiU45vaXoa%2b4THozsGXvlbyXrHnxUVnLYNku/O7so2WK/HXLi8dexXP/70n3/LWx/8S9YlJYf5bQPQRm96klYx69uDIzPyE9/zvW/7FOodzzIfezYGHZLZgs%2b98gCnrxzkK95%2blT/7oZfK2xb1arzHTnBHkILgI1TQNKIMZzxDp4mVwktKEZoMckM7iTEyQBCGaIxqoEkrSjfWQqspP1FbdiN2VWVecNUrBiI8Bo9FGKIQPA6N4vpAkxpPanL6to8mkEYpQoovw2QrRiSMXMHAD0mipLyf8pgoZuQ1PRuIrCVD08sNO1kZQjVbL2hHjh1X4z8/%2by5ePTXH2labEASlAh///Nu5srzEoBdTZBHbWzFf/tYnadUdBzqb3H/Hq3yh/xDBqZLyVW8cpEKPr0xXFQFTyjMqmmz3D3JX8iLt5iY%2bjFnqPmfDmBqO5cJpbVgpxPtKFqwoYRgrJBUVlOlbBeKkzs9%2b5Mnv/oave9%2bP3n/fXS/1er%2b5XrFn1Opx7U3/0niW1D317ffVv3DHvLRp%2bwgXOiy1cs5cOMA//9UvY5ilxJFQ2BZU4UMTGWIs5AaFCRESFNgIFRrUtEYrIUeDOJoRKBVjVUShIoLUMTQYM8uxCC0VHSw11BJQFosQyJymb0sfpQ3gSSqpTlCUDngBXBAKl%2bBDwhChC2yEwOVBj%2bX%2bMtauIxVVsXgyFdMwDVIJCJaEAiUFAy3kErE80AydEFSEDZpEB7yUpqCGGvD%2bB17ivY%2bepVb3tOtd7r5tld5gltgUNBtDmvUBcWR55tWTvHj%2bJJ32kK9518/zjoeeriaQTAZ91962S8mCN%2bQuZaa9xrHFs1zbPMmF6w9g1JTJhUkH7u7c4C/eZc8iU2MoulRERE/dbyymCPVawuUrm4s//5FP/X8JVe2f3%2bQfTAekcnMKKBJR5JtzreJjf7LTjHHUubizQCuOOGJW%2bMknHuOlC8dp1gveclcPo7swtCA5VNU5hYAEhSiF1eBdhEgZdBB8hISAURqtWojE%2bGApyIlCQk08EkY4CQRiDHqqdaVhdFd%2bEwbOkfmSyUbiK8UjRyp2alFkXohEkztYakIsmn5QfOFKiyzv8%2bDxDbbzwHAw5JbmkIEkeAqaSojQeAI7Nid3BUYsmRi8VwxDTGwdWgKp9tR0IChh5COWBxHzs6t8/dI6NSk43rzEQ3df43Ovn%2bCpV27n6S/ejlaW1Y0j/PQv38rhw%2bf4jq/9JWYbGe9%2by2%2bwsd3htdMnic2oImalMhEqNIp4orRHGnLe/eBHWJi9yqXVO/FO7QJMqmiYaXkPdgnj5PsuAMN%2bZUSZ0rzG/qJGJZDjtMYv/urT3/kt3/yBf3nfPXe9OvotomV2gxGKN1FCVIofPPWNLXnhYedjIg0L9T5r9hjObeOTEU4JC/MD3n7nywgZ0CllFZvjVIwey1yhjpIUp6QCT1FGIUtZLdTj2XE9AgmKWhm8IBYXBgRikpJuUXpNxsRbTTEXRyQBrSwinpH3KAGFJQ8JsYrR5MSiAEPNWMqWaOoS8dCco1sYGiYiEtDesO0VWjypROgwJIgtDeMu5cymEIWcRDlqJmMmVWSjmMQ4tBJSE%2bgXhg0b04hy2koTrOVr3/F5cIpffPpt/MZTt7G9kyK%2b8s8SiLQnG6RkQwUNQ6M25M5bz3D67F2EUILNe02RxzgnOKepp1u8%2b8Ff4sjcaZr1NSIJtOu%2bEtN2AxF2QcgEZCXwwi7wKoN0EKmwPjbHjGXBSg7ETd0HCIFaLebi5c2lj/zip//U4sLcX%2b0Phjdw/vF2263HdgG42du8ySkarXbiaPSJ7%2bqHQFJvYlJNO3Y0TBcjKd/99i8yO1Nw93HHPYtdyBqVTa8UWJWk5XzzZUOVtSSoXYFZewYh4H2O1l0sHi8L1NUCAYsOBQ6NDTFZEFIl4B0ag5ZKIgweJ44yAConqFIJyD2kKBSOSGd4VUYuR1ImQXWtrzwmIJKx2N5kFmHbCkNvCcHjihGHlCKWBjvBsDkcUWhP1yZ4FxO0ouuglgzIrWbkHXhPajRdm7JWaGL6zMcDtNKMvGWzt8CPfOS9fO65o5hgibTFqDFYAkp5CpuC0sRmwHYWEcUWEzlcoSjylNh0OXboddJ4QGKG2BC44/CLzLWX6Q4SvKuRyyzKTLHdMN4tecYeEDJFGdk9b8yGdw3UY2VETxmld%2b%2blRDBRyq9%2b/Nlvf/e7HvzhmZn2pSy7eQm4PQBspDfG%2bdfiiBcvrrzrl5889t5vffhejt02RKSG7m4g2oOa4fbFgv/pltfBzEIxWwpdEiYNl4mMUlEvDyX5FoJWZDh2gme1cLRUTMfEJNoS2MaFBMESe0XhPH0XIHakQBCDiML6vNJ0DRGaoU/w4mgahw8aRVTOTJ1jsfShMuIEel7oF465pFRZtnzMJhovDq8NWWYZOIvDMhP1GPiEV7spucuYS0YcbgvDAJvDiOVeQiIjmnWFEoMTw/pA0VJDbBDO9mosJjnNxHGt32ZrWKMeW8TnqDEBqropAM2ZHju%2bxVOn3sG5S0dYXj5EcEJexMy3L/HYQx/l8IFz9IdthoOUufYafXeIa1fuIB86zl69n%2b3uPDYzKD3F3cbUboyzydhMCZfTHpKxjWeiHY9BqPay8/HtQqCWxpw9v3rrK6%2be%2b%2bbv/Pav%2bqe93pubZKay4vayYBEQET76ef%2btL5w5mv6NDz%2bH1GowUqXhVgxoDfE80CzJjUp2AwvGfsRQhW3L2OMQJr95CgwRRmt2QmDHlZTxeDAEseXgWtAhI9YJDTHkLqep6xjxeJ/jKaNoTCjfQbAEr8kLTyMu7YRaNISIgCNGCBJzHY%2bLcxpxgSNQEDPyiiIERk5VkR2anUwYuSFZzXNtCFvWoJyw5nLSUUEWNEVRhlxZLxgyanWDCHTMiJpxxDhqdU/fGc7vzDGTrvLnvu3n%2bI%2b/9kGefOoo9Xg0UUQBTGTpbnf46K9/Gd2dGUa9lCjK0Crj1iPnOHz4NBv9AwyuNug0N3jlwsPce/zzbPSX%2bNRTX4fG4qwhuDIfWCk3BTRKDXpa7ps8WyZelVL%2bU7uNqkSlMnhj7B3Jp9j5LqC1Fgor/PonX/zj3/QN7/%2bxWj3tvlkm3ZsaopNIOHNlcOyzL3S/7o%2b9%2bywHj4zodWcxZKRRVAbUeQcuhzACU68aUEVZmEa5720lP4zlvhR0AxgQUHhqzPqIY5JxLfJsuBzJY26LG4TgGaAwSpMSE%2bsIHxI0iuBLDSsp073L1S4JpFrYyMslrxqRIGTkeLREJRjxlD6LwCAIwxCjxVGX8jlxnhG8Z0RpJpGgGRYRV4NiJ1fEyqKVJrMpgyKaBCl4hE6aEqeCiEW8o1Uz%2bBAQH9iyilFwZD6hm9do16/ynrc%2bx6nXl9jeiEiTfCqyWMArQq7BBZJ4hAuweOAc73nbZwDDp558D8eWXuHC9klW147zyeXDFEVKKDRBBZRYxJSrdU7bDd9MHps8dyz/TWZEpa9OKN6YAo4jZjxTDZ9Ydeq1Gi%2b%2bfPltn/rMc%2b995OGTv3wzw/ShAwu7AOw0ant%2b7DQ0jz/X/YrBcOeWr3vrJQga6xxKV9TP%2b5ICFhmYCJSr5D61C7xxkKkYgo6q1IMyEkZCQEkHR%2bn0ahpFC%2bGaT8l8YN5bOtqQqJgQdHl%2bAERXkeZSpZIGtAQKPMMisD2KmWt4FhIhc44MwSmgWrEoBMgASyjtXKLYLISuWGItZN7QKwLajbC%2btCU6VcMWHtEBjcF7hxDKfCpfLo7tHYQop14T%2boOIrWGgnlgiBblP6VqhJUNm4y6b0mC7mOPg4iof%2bsALfOzx%2b%2bhtKVQpKCMS8EHTH7TLvlJl0v7G5lGurh7kbfc8SS19jC%2b88EGyPC3rwPgAOKIoq4zVY9vMFPjGW5B9x/dYuKexNHVV6UioWGNlipkOaGWaExPFms2tvnn2%2bbMf/mPf9IFfHo2KPb%2bPtwkAlzd2EaqUsLGD/rXPD77h0Vte4oGDlyCfp2YyIhMBLXC9Mk5M14Bpu1DZEh8E0TVEqcqYWdXnQ5VUkwSvTcUeB%2bSiSYhZMoGLhfDCMOPOeMTBeB6ZcqENCtgpHO24jPILIaLnynp/26PAtV6gkWqG1jEipxbHODzDkJUhUD6noTU2GPpWmIkV1gecC2QmYG3pshqNPOIDIUlII7AVBVNKI7a0SNpQCudBlZ6ZLBeu9zQUllakGNiY1Syg7YD5mmVr1KCbaVQ0ZDiMubJ1lIfufpWN7hy//rETJCabUJD9AepKCf3eDKtrB3j9yn1cWz3GKKtPglBRfopqhTLfGijjF6eBNJYBp0AzdhiMzTtUdG9cY2aiNFYyYBhrw2oXyPvBFQJRFPHUF8581cVL108cWJy/cDM2PAFgd7j7YxoLZ6%2bqk69f7r73B7/zdSQOhKDRRvDBoyIDcQNcgCgqbxOorOMKL4ZRSEgwaKl8rUFTUr4yACAg5AEyLEEETcQsQl15RpFiPcScyj2FzzhoyqqlWitqkSYHfMgZupj1ocUoOKgjmg3HsbZla2h5/krg5DEhkcAoFGR5TuFU6RXxnkg5UikVpURCteJkxAiFKoZlUlSkMaZkuV4gkpI6KRXIRZfj4EOZbqsFT40CQYynKxG9ooEnY%2bAC/Z2CoUsQ16epslL7TeDq6hyryzVM7CaUfRcZfo9yGscZZy8%2bwMWrJ8mGEUmcEfw%2b6rYHBNNfprSOySX7yNb0uWMiGcb%2b8WLqfDVh1Te/vrx3Wks4e371%2bKc%2b8/wHv/Hr3/Mj2zv9PWfPz3Z2PSGHDsjk78hSTM%2btv/9Djz6%2b%2bP5HNkBaiDGIaeG1qQJaolINH7%2bkt%2bXMcKWvNY5iFAXeW8RXUzq4qtGGURDWJWNbcjJS6uMIZmIOKWE2gW6a8qr3vJT3uO57XLFDUJb5JKER1ZhLNMdawvGmohUJiWiEhMgE7jkCOlKs%2bZztIqMfDDs5rPT6jAYjlA0oUfSK0p%2bLh0SpMh3ReZxOKKIILxG5FZQGJVAExdBHeFFEAZTzGBdIKdAm0HOKnmtxbdSinxVkPtAtZui6WYxkGCnoDhOsz1hsbUJwzMwu05rJy5yN8fjLWFPdpS5KgS0SBr3mrltoGmyTYxUV/M0Fvim8VZRuSgYNYyBOe0bGKZ1q7B2Z8pLsvSFQVrLI8sDnv/jGV2WjTBmt2L9NKOChubEnRCGi1Vc%2b8PEv/653/DrtuFVmsSmD1obLK4v89BO38q1vP8eJxY1dX6TNQdVBTOnUrzLxSw9L9RhVAyIIGWtYBlJjiZim15gQ6KucTAkDDJHAvIZRLWHFp6x5jyly0qzLoinTuPNgqEURmkmsLiFALimDyLAgnq4XNlzBwMJQxdhawrYdwHCIKEXXK7xJqUUNjPN4aylUUqaIBkcRqpAlpXEOlHfoUPpc8QoRTxDBSemrjSgINqLpRzifY32BcilaG9LYkQ01WkqLpVjL4YULXFlfYNBPS%2bVlgqux0XgKYwHAo%2bQmPHoPo91vZpnabkoVx5R2mvreBFSTc6ZlwOn77H1YAKLI8NLLl9%2b9srpz2%2bHDC2f22wQnAGzGlVFRDMGt3rrUeP0xk5WhRCaq1Hhx/Ppzx/lnH3mUDzy4zYlkB4bjBvmSwplG9fSSpU38hkGDBHL6bAdNLA0OhkYZOBVKuathIRWPNmBEIxLYCI6uGIKOCTrmjHVczjNS36NGxIGoQSIKrWJihIHrYb0CRhACM8qwXHhyElRaQ6Gx2rDaXaNGTqHrZA5EKQa5YyQGF2lSFXDKMLAeQ0ngjasS0JXHVuDQAk4pvDdQFGgp4%2b5yL9ggtOKC2cY2w1xQPuB06bf2DiwF1zYP8PrrJyiGZQmSPfbhKU4MoFSZPFVmt%2b1D1kSWG%2bNBbgLSfffdj5mJDTCMdd/KFbffLjidOzKOBbsJaAMkScTFKxuHXnn14vtvv/XwmUkb9gPQ%2bipcR2KCO/POrd7mkUaIaTT02OUKKKxLKKxisx8DdUjqIAMoWpTlrIoyckLGsuFYw7IM6LNGRIsZZkMC44gOKvDi0GhqobQ3GUDE06is7k6EflyjG2oMvacbHFsuhwDG5UQIg2DJK5PLSlGQKscwmQEdgQSMBLSOCX6BjLLyfFDCTlCEENEwjtwV5K6M9ujEZRyhdQ4rpS4dnFR9Yqsik0KqLLUoMLIRmSuXT0A5rKqRZRbtHf0swvuc4BWKnNwnfPLJ9/DaqUMkcbbXSrKfIlUa8u6xvQO958JKvgt70Bb26R03uc80fqqk9km41%2bTZU3%2by1064D80AaK0YDAJPPP3a%2b2%2b9denfjPJiMi%2bW3jc3FYwQhhUAA95deOyVcx3uOZSxkHpCNpYKFEcPdBEs//fH7%2badd/dpxI7XLs9z24IjTlJwVZiUrzLuceAdXoSMmMUwS1lvvpIJxyaEIASlQCkaQTMMwohyjY8mHiWaqDSCsCwKpyMMERsmxSLkIWADaNFlzi9CiALboaRQhHySdVx4UEmCEFNkOd5rYhPw4rAS8FpjnRA5hxFLLopAII5BO6E0mQpOysVtxBVljj0COpAoxSgPOC9l5pwr7%2bdwZREm48hsk8898xCvnzpEZPaZKPbjQpcxja4wJeWbZs1vJuZN/z6lHVeDjISw79Kby3G70BqDbvzzWBnZdave%2bPDyZKUUZ95YeZvW%2bsDifGMln4o93U1KMrNAhFH91trm9be/evEQdy9dhCwjBINUEcInj%2b5wbLHL488d4Qd%2bvCCOR2S%2bxj/5718A6YNJKbWUsWFblxq7qxGHQC3Y6vcwpTl7EIOg6eHIdaAVYoZe2KhkwnmElEBPFDaUkYFGyvwRjSIWcAJDqwh4lC4VpFhRxiKiIQRy7yZUwFGaNwKlLBdL6f%2bNJFDo0vY48grnHVp5TKD83ZSWfu/KqgdeFDaYsnCQ5Dgiioqti4RSGPcyTnkminPWdpZ4/fVbsAWIMmXN50oa2QsgKRWSoG4E24RCUYl9pdwYpmzDe6EwfZ1UGm5lkpmQX9kFmN8LxPJjbIqRvb/t2cayYUmao1hz%2bdrGHWvr3YffdvzgR7OiuOFMvNvE%2b00I5%2b/e7m3dY11Kkm/hRw6VRFVjHCbSvOP%2bdVr1nJ96/DZev7LA%2bnaNf/mxO3j8lSUurLbZ7Nd5%2bUqTT7/e4Refm%2bfjrx2gIGLkA5MM%2bspYncmILPLkyjFUDq0DIzyrQEMFZih9vTuiWAeWQ1lCY14KJARaHowXMl8G3eMViVIYAaPAS5WMHsAGj1aKSJUhVYgQRwpjyggXKzFGDOIErCcioHUgqBL0A6cYhhK4Y1elkkBkArHyxKLIitINqHVlpvWK3JfFjzSOZjpg0Fvgi1%2b8m2FPM9PZ5G0PvUq9XuCcmhrOXRLmncY7vWesZf9plEz3pprxDQjcd3HYf2wKcNPYm97GBuk3NcPsbpHRbG4NozfOXn/MlEUeJ1dNKGAUHSw12PDiQ4Nhv5UVMZHkiE4nkS14xcHOiEOzIy6v1/jG9y7zP371M/zlH3snf/ulBzk41%2bfATE6z7tjoJwysoZ8ZDi16Dv/pV7l7tsDbFIvD4MlVn3WtSBF2PNSUYhZHgmIknnVK65OhTNKxQYgkUJOA4GhhOIBwRRyXncE6XQa7UoaJl8EQZXLQmAFFIrjgEFXmkTjKClwxgcEowgkYFfDB4gkYoSqhq3HBI4EyeVMUogqMURQFFM4SfOkPVsqhtGJURKALIgOxshhdcObSLXz6iYe4fLFNrAZ88L3PcODgNqfPn8A7QZkp1LyZeW8adFNKCshNSqyMqdsepP4W2nGYkkHHt5Fd4/aY9E5Y8DSk2HNN2VVlPvXzL55/5L3vuVs5F7zznmNHlnYBWGRnQWpoOfdgloMERdKIkDgqH6BK%2b11i4JaFLb73w6f4vq%2b5yonWNd555yVW%2by1yG3N5PSKsqzJX1wTqMWxsG/6fzy3x/V/pmYkH9F0NEzRaK9rESAjERogFtoNCiSLGk6OwVUi8F0%2bOwVecoYdmUCWdjyiX4rLOUEiZA9cSTV7FCmoJOBypKJR3FCEQqTITzlaJ6OI9sSm9H2UUc1lqwiDElQAynvDKBwof0OJLsEaKPEQ4HN5rmsphElfm2PtAqnr0h20%2b%2b8wDPPvcUXrbMSF47jx%2blbc%2bconPPnuSbreOVkWV3zsFhN9Ekd3NqucGyrf30HT41TTi5CYnVy%2b5X5%2b4QUGa6pDppKZJA8YyY3kvpYVLVzbvUUovzc02r2V5yYanSvQqgh8kyIX7ljcbXNqYQ7QCHcqgg8r46En4tvdu8B2slZfblL/5xz/DodmMf/34W6nFAW0sogTRpbvYEPjY00vUga96YI37DzowZUGisnpJQBPoESgQrIdUCQUwqLwoiYRyeVI0MZ4upZ%2b2LClZ5gh7U1Y0WBvGXFhrcGBuSLNRdo/1BSkeJYYMg6qiiVXV4WP3poiUlEwMRYAslAH8zpdkIwSD%2bBGdKEc0uMKCKKwKpFFRVl6wivXNFt2%2b5vzlOsUIri3PcfbcAuIL0iRnFAy5TTh75RCvnr4F7yp2P6ZON7DFvaM/IXxT5%2b5RnNn3OY0PKvDsCyK4OcUda8D7vu/RhPdfsp8aBqJIs7LeO/HyK5fvPnZ04dooK7jrtql4QFGzBLaOhWL9ru7wIKNMY2JdBhrYqQgIyiwMXEEZVjVLXFN867uX%2bcjzPVa7TerGTbVbyupSLvDa9QZf85brpNGIrSzlcpEw08xJMFigh8eJIUEYBSEXRVEJ1xZFEgKZUwy0w0kJ2r4XVjZieoXCBkd/ELO8lnDqouEb311woGHpUxa0TL0i1RGFwDCURl%2bpIoSFclmvQOmRUQLeaLx3E9kxOFUWfVSKqxsNikJoNnIajRGJ0qytN9na1FxbnuHU6QNsbWj6g6gMiw%2bOyGSl/uUhiR2XVub5uV96J91unUgXN0HQTdAxTkBiKqz0TSnUvlu9KZt9EzI7uaaapJUtZA%2bFftNtLwiN0Wxs9JOt7eF9H/rK45/oD8rc4akSvafBb9yauO6BppnhloPbJDUBK1V9kKmme49YX16tDDDDZ14/xFY/LQtv36Qtxni2ugmbWcSO7/Irrx5CtTxvaebUKJd4iCmDtKwo8lB6N5QIaRASAhZNT0q7XIMy5fyJN2p84tk6pgwIpCjKGWlt4PKq4e4jBQbB4WkEYUE8fZ%2bTY0oPhq9YdCgtSJH40ttEpUQoRR48wohDHVjupjz5cocXnuvQ29HceXyV971nhSe%2beJw3Ttfo9w15VqqzgieObOn8qXzGJVBK%2bhW8ZmOjXYZOTQJS9g1qGB%2bf2mdsFuOm594cGhXFk7Dv6DRzltIicTNcTeP0BpOf3Aj0iX5S7iglFD5w%2bcraPdeurdIfZJw4MhWOpfWtOLd6izCInYuZaw9RfgCuBXFVZWCatJqEoFMEePZCk3/5sVsZFYZm3TJWrieTKEBsAps9ww/9yu0cnj3IxbUW3/E112miyEPpgUjQtFEMq4stpQQwDGXFqkQ8Sgd81ezrO4qXzxoGI2jUS7OCVqGq5wfPnUnoNAruu82V5YEJ5GIZeV%2by1KgsRabweAlQacc%2bFGiloCo8qUURa8/qdsqvfOoYz79cQ3nPKDdcvtbk1JmMq1dTNjcSIuOIjas00pKljoG3O0ChEpMCxpRR4iFww8CHfXvT1c/C/gEPe3b232CMlF2nxUT%2b28eKK1NO6WK98XKqGjR7VeQpW9ANF0x/Ey5c2rhtfWsYaV2m6k3JgAnQO4nxrI9mOXVlHusNJi4NjeUAlsneQsDrWpnWncM//LnbubzeZKZuy4ZPE8ypGZzGjs2tiCvL8xxccCx0chSBAbsKQw70KWsR6BDIJKItgRTHDhpBs90zfPS1BheuR2z3Fa1G2O24ikJoDdYpPvaFFoNiwKP3OlbwrPtAZlJs7gkuEEmJEI0nVkLhyngKE8Y4CWjtGGY1PvLx45w6UyeNLN7CQyev8Y63X2WmndMf1Fi5nlQxfaEE1XQfTCmj4/Eui44rrBWUlEn0by6L7Qp6wj7M7EXIm/w4Dc6boP2m2x4%2bDGNrws3kzDGoA%2bU43KROm4iwut67ZXG%2bPX/o4Mx1mLIDuuJ5FdzVWwmBq6sNXr1yjH5Wo3SDVKl93iI2K3OOKFPzPvNqg1OXOiTRlCTMfuxXrxwgijytusVLwBYKjTCHoLFco1zKoIxpESR4XBUOpBEawM5Q8ctPNvjcSykbOwqjw76%2brKhFCFUomPDCmRrnl2O8CAUGLQoVKRS754QqGkf7MlOv8HqS2I4L5IUwHCg0fpK/ffxoj6OH%2bly%2bNsMrp2aRin2PjT7jd97tAPYoA84p6mmPpaUVkiRHVNg7oDfIb3uYJeMn7R6YQvbNBoGbwG4/KZ3Mjl12vdeC81sAd0JdbziINort7cGhU69fPHrq9YvAFACNnqkFt72ED3QaI6xTZHn1syjEF0jw5aIyJgYsn3%2bjyd/5qXsYZmUq4uQNp//2v3w1KoWFbhGVBdKC0ELRxpEAh1AsEUrNOzh6wDYRp1Zq/KfHO5y9ntCseZJ4umemOn/qcGwCa5uKZ181ZSndACGUlNd5KXOoFKAVuVd4BToKaO2pxZ44UhQ2pm5GfMW7LzEz68hGZfGhzz1zhP/7Pz7IL3/sVnpdjdb7mOZ%2bojMeiwAhCLYQ7r/nFb79w7/EY%2b9%2bGVEa52Ry3Q34kTfZnz7426kQOS2m3%2bwhYf%2bRKXY9/S5v1rg3aYLWisGwaJ69sHXo3KVtYAqAKrq9E3y2hHfctrTCyBqubdbKUHtvwVmCihBlgIwnX0v4qz92H9c3WiSRv1FQnny/USYRBTZXbPQ0fQK6KvyYBMUcgdkARQAfNA3lSSh44rUa/%2bETHS6uxCSRv1F0AW4QpKq%2bVAoS47De4ymQAaxeryielFVgUuVJNESqrJdap6CupJx44hCdcuTAgPe/9RytRk6WawbDiMtXmxUg/T6iVY7CuJ0TyjEBZOnKa9Ry2s0e9548x%2bx8D%2bfG0eVhj5h181G9mX1vdwxulAHGuvO%2b824ktXuvF6bskzf28eRT9uzcsK%2bU0O9nupbopbc9fAswXR9w9PzBUHQX0ILBstWrc62/wEPqYhVgYBBxXF0P/OtfvYvfePE4y5tt6jXLDct87WE7N3ac0pDlMBgIO5RlsZuiiDHUUGzbgm0CdRO42kt46XyLJ16sM8oU9dTv69K9%2b9MdOsa/UoFD8znNSHFhLeLzz6ds9OCbvmyHTieQWV/ms0rA%2bdJobVRZI1VJmSgegsJaw8k7ujQbZ3j8ySNcvNImjstilLsTrnrodOP2TMJy33thdmaLZnPAsGhwfWWefGQmeSH7z9/Tr/v3J%2bfdjN/v396ENYUptL0Jm52A/QYhdMrus2fC7AWiEqGfW/LCH5ubbWio0nXKu/cWvM9qBIejDFAxEaU0j4YoBzb59584wg//4iNc32iXi8Hc8DJ7Nb%2bpujm7/USpAV5crrMZIuqiUN4TgiV4z7rkHDKai2dq/NuPLvDxp9vYQpHGVXEekX3U4eZdPnbKawk8e6rBz366zS8/OcNzF2qsbMds9kv7o3WBDMETaBnLQlT6Lws83kAUC7kN5aI2NubIwSFf84EznDjSJc/1bgMIuxywevE9dbun8FHkmgML17n75Hl6wyV%2b/ROPsbbSLLXi8aDdzK22H9BT54ns6RL2gmmKNsve728isd/k2M3OGf/dXO6bnokigtaaM2cuH/rkp55twnRJKV%2bbCflO7PsDbp29yC1LK1DkkA0hztjsav7xTz/IT336bhY7GY20mLQj%2bCmkwS7/HXfWfjMEYHTg7PkGr15ukOFxAZq%2b9Mm2tcO5wGdPNTl/LSU2Dq2nXnc/m/8tuk8EVrZinnsjYWMbmmm5CtHGdhlmpQpLE1uWwqMsUJ57qtIUZeiSIVAU4FxgNDLMdQre%2bdYr1OoeZ3c7e0yApyNS9o5VJZArz/WVg7z0yu3keUS9NkTrHOcMzukbzTLjA3vEsKlje1lA1ZybUbr9B/Zdc8N%2b2cl7bv9mVPnNhL/xb1Vt6WHm29aVebwTANr82kKwA%2bky4p7bLvLl951maAX0MleuB/7qj72Hf/Az72ZnUCPSbjfEbEyO97zLbpW%2bMQD3AMWD1oF%2bV/HK602uuIBSigaaNChmAuQyoBa70j%2b7r6sCuywvhCqccN/r7uI/IArSFOppwKgAUioj564YrIV2GgiFJh8qnGi2vcfZHAqPzQKjTLAuYH2o5HdHYYX5mT6dVoZ1as/kuDkD220PIWCMpdub4TOfe5CLFxvMzW5w370vcdfJ15md30BrW5VV%2b022N%2bGme3WRN1EOxqLRHpDehOLuOX4TcN5w432sad9mncc63bnr9iMtmAKguGwpMGJNe3IC7zxxhno946NPPsL3/JMP82ufP0mnkZFGtspJYHpCToA33i/7ebzjb06tBDa3DVu2tP3t6IJcwEjCjDa06vkk72laxgrVs/YM%2bhiIFfVxHow42vWinA7jpoWAtyUQz15KeeNcgkSaJ95o8dHH60gWSKNS/BgMHcurhmzkS%2b%2bPBESPA1EFHQXqDctkeYk9Dd03ZpOo8rGtrGxnHA1xhWdttcP6xgGazR6LC5vkeTSlkLCb%2b7M/0G/fg%2bTGQ3sPyP79m4Fr/P03Aed%2bSnjTbb8cWGrCO9s7s5cuX5uDaUO0zeZy6bFuE%2bYHhgcPvMEPP/V1/NQTj7LVq5MmZfh6EhUszvS4ttHBBYP2fooSVoXSbph9Y2TIZFcCGO1Z30hY30rYWhqx7gM1EWZEkFGdK5spSsbnj0dtzHz2Cb5hV%2bIJlGCMtENJmfOry5ZVFfPLOxQ57PTLilRr68ILZxp0h4bFhYyH7t2mkwyIlMVmBRKVMoByHh8CyoD2juB9NRWm27bbkF2qt%2b%2b4E5I0I8tadHuzDIY1rl0%2bRJFp6o0hJ%2b94llExw/lzt6HlxuI%2bwlS86M044g07NwFLoEzrHAuq4ebnjb06Vc/eeJMbFJeba%2byE0ifc7Q%2bbX3zpYvubvu7duxQwhI20r0dsjVIKrfF4Pvnc7VxcnaOZ9nnHXef5svvPMswNK1utMvF8irKFPT6n3ZeeBElWFGAsGwVKOXBj0/C55%2bbZtIoYh4SMGMdLK/DCtZSkMjSX14XxkrcT3%2bqYyoYQdilgdWyUC9u9qWK%2bPkwmrUiZNTAcela7mmurMR7F6Ut1PvX0HB/75DyDIuHI0iZHWhltgcW2JY4t9cSS6Izr1xNWllPUuI1TXTDZZx/4xpRbIEkyclvn6aceJJEN3vOuJ7EhZXl5gfbsJiduuVQWJr0ZMN7M5HcDW546MM1B3ozABbiR7ew7Zzyge%2bSwm23j41M1CgEXJIqTNIEpCliwnWzaQCJDCmdopfDWO64wN5fzp778Gb7skav81Kcf4aPP3kUIFqNDlZNS5U/d4EQf97pMwBlCuUL6rmhY1jY9fbbOhYdSTh7UdHy5hELXBpwtw8EmGf8eUGXGVghUAkT1nMrgNnEThYAPgqsyyEouWYJ2AkgHtQROX2xw8Uq5grlSZQDqxasNHn9qkbfdM%2bK22YwkVVVSAqzvNHnl1YO89Noig6HBKF8pWnsHmlBNwOnx8FAUhoWFa0SRcP3KAQRPFFmOHFsGpTl37gg7vSXW1lt4GybVs8Y3vwFfY5q%2bT3OZTP7xOWMiXU3ScIOTevqm43eZTl%2bakPS950xe7k22qchp5z1GR/G9dx6PYQqA2247GbqAF8i9ol4LfP83f4KkpugseiDh9NU5QhC0eMZ60Z6ojOmXHQu5UxR6PKFkTBGVYExgMNCcv1Zn%2beAqcyqwNTR88rUZlFYEV0WRTKUZjPMYxuVzA%2bNO2X2OUN5fAFuEiTdxIqr5qqpo7Ll0vUFeCElcUkijA4UVXny1xZlzJ3norlXe/a4VBiPP088c5fmX5uh2NXg/UchCGMukUyCEPRwreLCFot3aolYv2NmeATxx7Lly7QSdUxscv32DwdCwuTZHv18jqQ3Jh9FecW1PX0/tTwF1curkWLkjlfzub8Dd9M1k7/E9QN0Lzn1Pu8m2TwkSIS9CMhjaGkwBcOCpquwFnPL06bOgNEo64JuMhhGXVls3Ak4quW8CrlBSZzUG4W6OaXl86h0Ck0ScC1dT7MOeIgj/5rPznFpu8LWPrfDUi23WtlOSxJeh3b5MPhKpKMO08avqu3FIk60iOsYiznTsZOGgUfcsdHLqaZdry4aNTYPRlURXhd%2bvrieMeoHehuHTzx3hpZfaZBllJts4hGoiCrCXxU33ky/veejQCrWG5/KlQ4z6CqPLaJjCCeurCwzyea5fncfmcPKOZxFT47lnH8bIeO2NcUbbmLrewHMnD91jLw7TX6aOTe9MZMEbgVWO5NTzwpiK7EP%2bnitutA1KxRGdLynU7lpx0spN2C0T6zPP2nUQnbHYNpxbnuPc9RniaMrnO/6cyqraO38qEIa9330ow6zG1DAynnPn63z%2bpUWeLyw/89w8996a8WUPbqHE8nOfPIR3Jf9QWiZ95CsgwpRxuuqfag0aXOFxFnQse0Sa4AK1BjgiHr5zm8IpfuHjC1gLSqo1NVWgUStY3mrz0786z6WrKbG2JHFZDWsXbOP39BOw7QruVVt9KfOJiblyeYZ8yG4oFqCVo9erc%2bKWl4l1n9nGBd7%2byBe4tHw3L7/8AHakyjp/Nwx0uMnuzUjluC3l/sSVOS20jhs7YVfT4za%2bx1iIfzP2vQ90EwJRHvceksjkM53aEKYA6Hw9C76Mt8sKhRvGeOvJd0awYnn%2b9ftZ3W5Qi23F4qrEZx9QqjIyVi8wYbPjd6neYf%2bx8QxVKhAK4acfXyBQhkjVa54hEQ%2bfHPHiawPOLjdIk4D3pUV9HHMwZrdBwh6hvJyg5YPKYFXBOaqIrYDWsDPQ/MJvzDN4zHHb0U067TZXrqQ0Gg5dUXCtA5dXGjgLaWInxYimicbEFTc93tP6mA8ErxgM6/R6DTQWrf1EISsKTae5xu13ncWbJp32NR6%2b/wW8xLQam8zO7HDt8kwZ3Dq%2b7T6DYwggqkyMCmPKfzPiOJkwvxnb3NOJY%2bhOXTP9cuNjv5kRepf1aK3wuPzC5ZVszy8izdHYzpVngDbELU3c0DgSnj9/kKLQpQ1wuqOnSXu48W%2baUu959/GxahBEAs6WPlKjYKenGBYwGw%2bp110ZJUJ5vnehXDl0GuDs2gEnn7akjElSigbOlfbBMYCcg60dw0c/vcDKRsKH3n2dtz%2b0jjGB4VBP2q%2bVJ9KesbYd/PT7jjXrMNHyCWMKI%2bAC1kakcY/773uN2fk%2boyzBjb2goczwS2qWCxdO8smPvYfVqx3arT6Xl%2b/kiS%2b8m9HQoJXb88xdkExhwI/zdd/kvIry7V5TkYHx/p5rdqn3HqUjlKsSiEw/eP92c/YLVWkT74vrK2t7A1KLgq26hgYQck9QFp02SEOgT42L67Oo6UZRKSBVR09iEMOENk4oYflZRrwQqtp1FQjHMqBQsr5ywAOr64bPPDOPsrOcuVwnifzuiqJSUp2xHUzGS1ZN2QRLg3OZjTXKFd4GIiyFE4Z5KdRr5UmMY6cX8/hTC3zLhy5yy7Eur5ze4TNPLbGylpYix/SYTGOvon7jAyVnqt7dlxOgsAlGD3n07c/z8MNneeX1LZ555g62NpvYvAzwSNOM7a0ONtfU0x6r68d54unH8LR548xduMyXuSi7uGAyEFNjEcaFoghlMckb2GpFOaeJyPQs3ufAn4gR4/v4coaFsUzxpgC8ORCF0u/eaqb9h%2b85srMHgLlVK7E3tLIINxByFTAdaLQdp643OLc8R2TcpNGBMmO/KqUMY1VDAC8VS9yV/wL7WHD1OdbuxmaVsRxsc/jk59q4IMSRx5jqWdU7iVCWkxHKZ8Gktk6YUvF8xYbzXHHH4T4Pntzh4nJClmvOX2my043QGtbWI1Y3Yg7M9bnrxDb1OOdjnzrE8moDo8fG5t0BD27XgDuh6BMKU5qQAoF2Z4uH7nuF%2b%2b67wrAfc%2bfx12k1N3nq6Qe5dGERCFgb422ZHmCigm5vjk8%2b/iFq6QjxRRkPsodq7dv2T4w9xGl6gkyz0f032H%2bzMPW8MKU2V2zrhqDCMLU/fXxaCxac87Tb7c3jRw%2buwxQLnpu5e3XoDN1Rg6yb4grNaCdHhYznLx9ieatJPAbgNMkeo2ds5J1QcsVkceewmzC9ayje%2b85%2b/F6U9rkQqiTQypvhp2Tfyd944McT1QW8C3sm7dgAriVwbbPO0MZ81Xs3%2bGMfWuEDjy4TRZbRUNHrlwCMIs9goFma63L7LTv4KWo9zd6NzhH8hOUC1arqkBUxUZLznnc9y4e/9lPcd/Iy%2bRBC8Gz2F3nhpXu5emWxfG%2bvCE5XbK3kJlqXSezZqCyJYqKsnOyTvp2awYS9eh5j09gUK56AMEydMX2PqXMmYzJFKYIH3LiTdzt9egBvYLsy9bn7p41G8Nsvn17uwZ6sOLspYgqJQ%2bQkYrjjSeZ6ZMR86vU7KApNPSoXl55QwVCZNiYjJJRl/JlwQ6oBlPHUDFKdFsALXlHWfq7eb3y/4JhovONEmrD/Hcfb9PrL%2b7gOlM/WOtAfKH7lUwtcvFLn3Y%2bscv%2bdWxht%2bfwLC5w%2b1%2bYLL8xzfGmT2c6QwoF1GucU0Zj9VdQ0eIgSi3dRxQnKn4q8jLpO4z6Pvf0F7r//IjYT8mG1mJjEfP7Fh3j5xSNosQi%2boiyVbDkGVijFEWXKOjau0KVyERSEqTK3E%2bwEdvG062qcPi/sB8z0tdMgDLBHwJ7cfzzGTM3%2b8bbPDsZNfqp%2bVaJIE9nRkg1gCoA%2bd%2bvdfGYwk2SdVBts4akvdHlu%2bz4%2b/8YtJLqYtG8iyI5X3an2xx0wNjQHJbuxZ17wUkXZV4M41lrLalbl5NKyux9gtxRdKD/3vHb1%2bHEfjcuV7KGAUxcYHTDieO7lBmvrig9/KOP2Y12WFgc88/IiH//UEh//1BJf/WVXmFvMODDXJVJz2EJhlK9ceeX7DoYJwZdxfcGXkdO33X6JI4fWmW9vsrS4SdY3FAUEZ8tCRT4jVV3Gqx3tDvC%2bhgLeqeoc8N7gnZAkvZJdu6kBH09sJnRt95577E67P0yUppuB7IYAxrB3fwzAPWUZuMk%2buwL7%2bKcgWOu44/Yj17/yyx7uwhQLXpx7%2bPpWvrTeK7rUU8vMUsG1VPgXn3k/6xttElNM2OeE7Uwo4VRGP%2bPZGPa8054JN2anYR/b9uBt2L2N3b2HDxMZeNenPM2Kq3tPWPXUn/fVcVdq2WniuHQ14Wd/9Sgvn24R65x3PnSNb/uaN6g3PL/0yVt44vOHOXFknbc9dBVbSEkUJtQfQigz2Y4dWaXd6jI71%2bXRR0/x8IPnWFrYIs8EVwTw5ULZtgDjRpy87TQzM91SRvRgrSEvDFmeUBQxeZGQZzFx3Ecbi3caCY4DCxeZmV0rFTUnk5eeziPeA779VG0KTLL/iv2AnAjmN5FzmDKA7p0z%2b4A4za7K/RAgiQ1ac2l5vW9higKuda9uzcVuxZniNms8MzXLk5eP8uwrdxObcTRGRWLDmGRVbZvyMJSLE04Z6aZJ1ISCTtmpfOVTDlItdxAoM0BLVi2VcD9mddMpqRNqPH5HtatV7%2bEQU31bWIXzisMHdhiMIj7xuYMcWthmbqbgvjs3uOOY4/S5Di%2bdXuDK1VuJ04JWc8RwEO96gUIgzwwnjpbLLAxHiqww1E3OzlYCNkdCCTwkoEK5pnBA0ah3uf/e13jmC/cyHBiOHz7N4cPXWF%2bbJRsmFM6Q6B3ShuXsuXvwXhOZESeOv0ruWqyvHIYQyrqEMu0U8FU/Tc/om7CBPR3Cvt93329XTh8Lv9UM3n/tDVx3P/iY7PsQaNRTN8r88hefu8Rb7jsxBZ2wOhjZ48ufeO3Rsqijzzl98Vb63VbpdhqDbWLlH7ej3JmOit6dibssIIyrCvmwt0rAFHUrZb1Qaa7ldb5ag4NpyrafAvpKcanyp8Zy8oRT7KOIhEBvkKKVsLMd8/LpOQoL2QhCUNx1%2byZf%2bZ4zzM0Nef30HL5aliFMDU7woMRhlGWmM2BxcQsfyURMGAfJ%2buDLKqrGo2LNMy%2b%2bkxdfvBtrFXNzazRnRmRFAx1BFAUW5ldpzw64vnyCUT9Cq3IVgfXeHCsbB7FOo42lVtsioMmyGnlFPcsHCsGP/Z27YyRT3/crMbtjdZPfxx08ERkmA3UTAN/c9jc2jzgPaWIGhw82rh9aSoEpCrjYecRtbF%2b8MNi2FCNN3rBc3ljCFRoxGZPggzA1GBUVUmPCSCjbKb7siHEwX5CJbFZaKaYAHKQCSpicMBbqpfJ6lFQvjJegKys0jGXFqck2NstMd8Mep3v1TEWg3zf0uoHIWD779BGsFd7ywBVUEAqrSeKMAwtdvD9I4QLOle3UqpR9lPIsr7RZ2aqxtLiDLRIMniAFQ6fKmpvaI1KuWYcJZFLjypUFVlfaNNIuszPbnHnjPnY2Yjozm0RmRFhZZHt7DnEFxhQEr6nVuvR25llfP4qogChPo73M3MxF5hqXGBV1rq7cRb%2b3gDZ9lDiyUQdnFUpytMr3AW6CNHblo/2ArCheVTp5ogGHfXbR8Zcx297DdqegKIItPDOd%2bvKXv/%2b%2bS0cOzuwFYLt1mIXOgVOHOs%2bgMqHfj1jbnqkoWmk8Lu/pd6O4JwhgogSPoy0m0kaoolYmRE0m9sAxC56wdXxVtrSyMYpU4VflHB6/33gJg0mpkArYTEW8TE/s6f4Zg788T9Gq9QgIn3ryCM20y/13bZSKRYBm0uOdj1zgc184gcsLlHbkeYxSHqU8w1GNLzxzF4%2b97VU69R4uC3jvMMojyuO8Jyihpod0%2by2eeeEtbK0nGO2Z6azzjkeeZH5mjWJkmZvrcmnlMJvr82SjCCU5tihL49nckI/isli/KqlRnje4445neOTOT2NzeP3SO/js578Lbz3BWLTuMjd7mW7/IP3uLAqPUjlasgkRgaqPJWcS5UFZ0yaMQThhe/vZys22m7Hf6riU6%2b/NzTXOXV/tr25sZLzlwanqWBevfwrnhucePHDNNqVn1rZnuHb9MErcrnZbyVmlnFcK0eP6hJMBrj5LD8UUCEIooweqoup7SgtXQBQJU0XXKxBO0FPdVslkuQoqU85%2bVf8GEWfcZdMiQvXfIEuppQXBBZ578RDHj2xRiwuyXNGsjXjwnktsbWt6O0KjkfHCS7eSj0LlGtOcfv0wtx%2b9yLGHrtITUwY%2baEdRgM9KtlWr5bx27gTPP3MnkQyQ4Dhy6AoLc6vMdDZY2Vjic597D9eXl5BgiU0XpcsI9LxIcFkLj8LmglIeHVl2tg7x7Etfh80TDi2%2bgVcK5wP93hKHDj3Dffd%2bgvnFN%2bhuH%2bTipYdZ2ThOt3uA0bCJiMPoUZkC6gWlMwgBbxPAIWaIOI2f1IEJ5WD6feC7mUlsn%2bF5bxVV4cjBzvlsOMg3hwUwBcBO6y5G8ew5F//nNeNHBws7h8uiyeiNvQ1jJUMmNg8IlIniJdsNExfbtLISQuUp8eWPE%2bVKyWQhGx/K9RnDdATmGGAyfvcqLAupxJIwYcl7FvwM%2b3YC40XGJ9%2bFMsOt34to1YdsbKV85qljfNljZ4iMJSsUo0Jx/wMX6W3H7PRatDsZRTRibm7E2XNLaO04c/4ocR0SPWJxYYON7QZid5hpbdJpO1zQrK7OokKB94pWfZUHTj6Hci2%2b%2bOLDHDnwKocPXeTi%2baNo8Xhp4b1CqyG3HnmBnd4hBkPh1tteLZUZK1y9di/b2/NcunoLBw%2b8ysHFV7j3zk9y/epR3vXQTzI/e5VhnlCffYOlzmmGo5TN7UUuXX%2bQ5ZWT7PQOktuESA3xtlYK0WO7llMEycoE7slKTFMC9YTk3Ezmqz6nIkOkGnYlwm23LL36wL0nGGWlPXMCwCTqEFR8ccfcfqaxffGgBAfaVsLr2OVUgWVCaSdC2cQOV1K5ULFWVVEtJjMpBBAddq/xpZdjvDh86RcuFxEMU%2b8hunxAKedNhM4JmqaM/OXHtAw%2b3pmifmPzhYTS91wUEcHDCy8fxjrhvY%2b%2bTrM2ZDjUzJgRcwcUH3npNq4vN2gkipW1GkLAaM/5Cwc5e%2b4QzcaQhfkum5t1vLXcc%2btFHrj3Gmevd1hemUXrAhXKCvmnTj/I2x88y5VLJ5hNz/Dw3c9y7twdrK10qjaX79RsdXF06A1n2NlZwllDs75OFA8RP8Owu8iFS4/ggnD84Bd46PZfIDZ9/DDGWIUjJXeeREYszr7B7MxZesfbLK/fxRvn30d36zBKxn5mgaCwrkUcXSZurjDqHcLlCgkOZKwFTyk5NyeDu1sQUGUk0kynVgTcK5/87Cny3PKd3/zotCdkhcjUB6Zx%2b8u9jcffo3WOibKJ4XXizhg7/n2Aqgp8QKqsMdm10kzYbilVqHGx8MmtShCVXp7SfDBm58FXsk5lO5pQN1UFNJYaChP7zxh0474IU4xivxJSDu3uO1XHbFWTRSnPiy8dot/TvOOR8xxc2uRQY%2bf/3957B1uW3Pd9n%2b4Tbnj5TY77Ju7ObJoNsxlxSQRqSYACaRCmYJC2ADGYtGhWqSyalFWUTIq2XCZVJZplkSqZokgzFClmAitkArvE5p1NszuzM7OT08v33pO623909zl975tdLAACBEh3zZ137kn3nNPf8/3F/jWz7YQ/qmJbhsOk1l3k3CAShRDQW01Znt%2bIEBqlJI8tj3Pk5f30VmPiqCSOC4yS9LNxzp7dxFtue5G86vLMc3cx1n2SzdvPsLjYpRrESKkwOuHIC/fbKWGN4fLKOABXzFZimZOmPZZXN/Ls8%2b8my9ucmLmZTbMnmR4/zfb1RxhvX6YoEyKjUSom13aevHa0yu5Nn2dy7DhPPPNRFuZ30k6vgrB%2bxyQ%2bzczMl%2bhnezDe3TOUfOBZMTQ6CLaJoE%2bs/lcWig3bJs48%2bNYbXly3bpwsHynR221NkiRjTI5veWZRd9nUWWXbzCWOnrx%2b2Orx%2bphnQoRlOG2BYbOOw2wXU78IdbKAA1M9j7LX/7zodrmFwlVo8k4EoYyzhh3QfQrOyMs4pP6FFDjKmKEx5Kx4KQxprDj%2b6gbOnJvh0M0nkLcY8okuRRGTZyCMtA7txBBJbaWWihFGkbZKjLH5hlrB6pJEisrpoNZKkrJkZnKVC/ObyXLJytUdfP6xlM5Yz6oGUtfXFEs3j7CwY4nrZ%2b90ijgtqErBxukjlMzw4qtvR5Lzwth93Hrj77Bl%2bihKS4yByChkpdFKoukylV5k786/4CT30csnmR57jonOKQplWFm5gZWFvUgxT7t7iqI3i6r8Sz4aCw6AN7RG1CBUCrZsmnxRGc5dme%2bjlB4G4HLvJJFs0Y7Hn9Xpun4avdo9NPcCn3vuXrSW9dseOp0xDashHTM53apR/wTCJQgQuRuIBEY5MevOI4xZU/fQCGt0eAPIuOqdxoHUW8P%2btjUiVD2oJ3SpjaHmoYXRE8/UzXpDmpQUWcQTT8zx8ivbkKLg4M5XOPRQn5XVFmfOb%2bDo6S2srqZEVIyPrdAftBlkCe24IIpsvRmZ6Cb64yyzdlpy7OxeXr2wB1Xae7t8YQMiWgfKOBVEYJSox640kQ97nUpFCEqEipEmY%2buOF7mydCOry7NEMmN%2bYQ/HXn2A6%2b58ntIk9KuU2JQk0k4OZEyFKSN2b3iUWAx47tj7WV7ei1Yx/WwT/dV1RKLnElwLovYSqj9hcw5H69dcs/mUCKdqIbh%2b/6anO%2b2oWloe1PWEagCOtbcjZUKaTD5/rrv96Gp%2b4rZdG15jvNujt9KhFWtXv851qtBeuXPWsHDl%2bN3Pa2fR2v5sStAG2NCqSV8a0tWcddsYMo0v0N2b3VW6OsmB7luz9EiHNcgLreBghbEMGPook0ihleDyxQ6tRFBu77Bn7xm2zCyi8ld45ug2Llzp0JLL3LnnAnl/nOdPz3L0zEYuLmzk0vwYwggE2tWJNmhjB1oJFJWKkKZCukFeqojt/O/a17AqQdrQW0P0tg8mJs5RFGPk%2bRhxIjh94W6ywQRRnIMRdFvzjI/NY1qSVBUs5GNUxHTEKqsmYSFbT1suMkHGlaU99HuzSJMzGMwiyYhEH4y1AfL%2bLmS8jIgzqAyYFqNsN4I9akNECKrKMD6eqn17Nj6aJDGdTqveNUjJL1C6RMadxYnx/Y9nq5%2b77bqJM1w3e5anFw7QSt0gnNJbG1An6DlnspDW0gkVfZ%2beaguRaqs3aieNtEdiw37CWbum9vU11rxxQJSeLX181rOmo91ax/RsWYNNOFAOD9ipmXEkudTpB7RbCmNivvj49bz86lY2blhl3ewiragiTiq2rV9h6/qCie4Vdu%2b9yNRzK1y8eJ7jZ7Zy%2bvy0jftKQVUJOkkPhGC1P0k7XiESFVnRQqCJ2873JzT5IGa8fZV2p2Jhcb0DsB2zg6xotXPKaoIo1iBjeqvrERTICMoiYdumx9k/9yzHT72Dja0XuG76GPPlOEtFm1cuvpPXTt3DZPs4N%2b/8f5nb8DAXL%2b9ndXkjSbQEVEHgvQJdYkyEEAVaKoTIESrB6LgxCOvn24gw4eYRKUrFzm1TJ6/bMf1kb3XANafqGmtvAgyRjNkyvfPRl14b%2b%2bjGqQF37XqSp08cRGuBxJWniN00QEpBHFlDBa%2bbuUTU2kp1xkVpK%2beLlrU07FBLG5YTxtQMqV3mSxMBwemB1HPjabfckJtYM32a8apA8Gh8BQMTgpAQicGiHlmhNbHUXLo8zvnzkwix2frJNHTbN7J%2buk%2bSVta/hmJ2cgGRaCYnV5GqZNO6y6SpIusJlOlw7EzEuomzbJ1d4vz8OhZWxqyhkCdsmjjH9TecIEng1OU5FhbFkJdECMnCwg7rpHdDBaR02UraEEUZi/0dfOHJD7M4v4l1Y89zz8E/JkpXObs4x6mTb6NYGePC0npa4iqH9v4ae3f8Z1468fdRpbTKK4VlCK2BAlNpoIMUfUS0hNbrGG5Duk%2bNAeEYcP/ejU/OTHfPlZVCRM2%2bTX3AwRUApExJOzsfjVtbLi8vndvw1hu%2bxF%2b8%2bA7Ond9MpzWwijo2LckoY52ZkSegYKop7%2bsL4sFCWplc64c6oBpvgOiGtYYMGndgjW1Dk57lmDJkOC9HQ1A24jncL2C7%2blIbBTEMiWIgjSs7WN591waKQnDy7IRb570G24kjW0cnFhVLq7OkccnS6jjCFFy//SWmOwOOnLqRlZUWVRmRZ4K3H/gkB/fP8/jJWzn12nqWFsfsHCJxVUeSkLIhnvp6nakm7JiNQW8GrQRptMri6nX8xeP/iEhWdu7ICpJ0hVhLLly%2bi6PpOdZPP8PWDZ/k/JV7qPodywSmsh8vSoyECIx2cwEKP8d0AMDQFhGWo5I44sYbtny2022baiWzGd6jAGwsSEXS2fby1NTcX504tfTQni3L3LT9ZU6f3%2bb2i6i0HZQtcQyGdvqeQEfS2SkueuzHiEQu9OF0Q2O8l9CLTWdQeFeOMHXMWzhwGQf82rnuOkFIv2%2bTyoXXDUMdMOgsjGfCa2x36sOQKPZg1cEL5K4qkppOK6x2b2qDDANKCRYXxqwzVmoELU5duI54y3kqFZHlKZGsmJxcokjX8akXbub5Y1uIZEGaFsjUdZAGrW02TxzlGCMpVYuYAoFy12yzz6WsnBpiiKQtvJmkSxRqwgXvDULYKYKOn3kfr51/K%2b32OYRPDEY7AAbefVFh9DiYFK5Rr8ajz0LJit8812zdNHX5xhu2fiYblGg1rJQ3AKzHNyiiZKqanLrxU8Y881DRhwPTr/Bw8oBlOAFj4wPyQWTHqnq5oK2yjQAjZWAJu25SGvyU7b6TcO4X36P2AgIQup2lnzHSA0sMW%2bNBTUd/juFm/L96t7rch78e8XrAczzqr9kTdsDuIUiHGZT6RFFkJ2L055xfmuXS1XWkUWnT3aTCRC0eefE2tKoY6/acu8XpvUBVSSbHLzIzdYWz8zuZGruAqGIuLmylKlIQFanMkRifaA3GUKmE6c4xbtr3BZ545bsZrKa2K4wFoTCGspikzMeQ9BHkICqs4zm0eIVdZ2L7qUVKqANSK%2b1CCIqi4sYDW/5qz64NL2kNUUh/IQCNyoP%2bXGFs4vrPTLe7i33Vn9636SQznWWWVibQCG7eeozxuM%2bnn7ydjszsRXoLuDYM7FxrNRP6HL86/8/lrhk/xK/BTZ3Vb5pj7KLjHSkaP7Q3SMIHoA112nbgbEZ4FrX7Cm/1ImoDpCFJL3YaFaJeDIDVuFiaF2QYuE2meHiTsSyJEnutqgAiaUVmnCH8jAPBBdnAkqSoYjZNn2SytcB1Uy%2byd%2bZVTs7v5MLKehQVV3vXcfy1Qxij8ClYlYbtU0%2bya%2bZFnkvfRc%2b0iRyVW124QkgnbrWfw9lnwpjwQhgWK2L44yWY6wcrfiV3HNrxcLudquWVAaMtEMEBGRpN2t313PTk7kcWF86%2bd9vsRQ5ufYXPPH8XAsHM5Dz3H3icR1%2b8EZXHdpp6gzVCvCgc0kmdpao8UK3Ytrdlhi3dGkA0sVvhVTcHrCA27Q%2bqXTb18/KOveCP9r/ZTHNlQtDU9x%2bAJQBdCM6hUhz1eur9h9LWhhjRnTYwcuoxtvWUEfZTVDFKSVrxAImdffPAlmd527bPM06FRiNNyczMM7B%2bwOnqOv78%2bVuolCQWJRa4kjRaYtvkMcbiVZIkR1UJSdpjONPZW70%2b5WpE/F6ziddZtv2SZYod22Yu3Hnbzo9rrYkjyWgLyrM1N661hqhbjm%2b880%2bUaNFmiTt2Pk2SVBQqQWUpN255kd07j5NVadMLPjmgLu/lAOZk1nBpNdPkADqdaUjs%2bX1rMdfsb5QtGOkzqP1ouDr13sWXjXbJrsH5fe7h0DUE/RBmIPnfNUEf1Tn/urnteoeA7Wqm9R/C8zVINJ4p604UlFVKXgm2zbzELXOPgxDMr06zZ/3jfMfNH2emk6PKCFXF9LOEQZ6ynG/g0ZPfztkrmy34BCA0ysTMdM%2bweeIcZZ4ynl4kTZad5yJIrwpBGBofQ0r0COCEsqJ61A0jJEJEFIXmjlt2fHJu57qXjdEkiRz6QMCAcTI2jMwoZWrjfZ9ovfYn5yr11NaNU5eJo4rpqUUO7zrCBlbZMHsZLaJGacWlFPgcQPxztk5CETmKC/1%2bBvufwIX3RHCbw5PjGYELx2Fz17RGSBdeqXXKQNrVF%2bC/m4AtISw81lxrc4xlTWqLY41%2bGOiGzXrjsTZ8IQGYQ2SGbjQBZGXCVPcMb9//eQ5tPsJUJ%2bNPJ7%2bD507u5P79X2Bz0mN5uQtCoSvr%2bko6FSd6e3nh9CGK1YQ0zh0J2Il%2bOumyLU08qLh3628xlnw7R46/3RkvGuPz/bRnvorh1KJrNYkRfaBCmFagClp/WlkqJsfb%2bvZbtv/BxYvLZrWXrznDjq0bAgDG48NbhWR8cs%2bx2albHi6W/uojmYjJTItD217g7Tu/hBjAdGsZhK6tQtsLgnpik9qScJ2ifXkwJ54c%2bOpOcNZvLZJD/Hj3iVvpJa4Q2k0l24BEeIey34n6Etx1%2bHtsRG09hnlEXFo2NoGR4td7oAWiOJTVQ79by4E15/aPSBtJ3u8yOX6CD971W9y%2b8TWy1RhRCN6z72Hesh2EUAyyDlJXKAymUiAkg37ERnOSe%2bf%2bmCdO3c/i0mZiMpe9XbJ14hXSSNPPIrqtJdpxbrURH%2bKraT8EYMh8voOCtwXAJITWoHDsZ%2bSA/qrkzlu3P/f2tx34TLeTMl1eG9A1ALP%2bxeEtxhAn40yuu/N35hd/678%2buzKVVCpmYXWaK1cn2btugbn1Z0mTHF0JROyoQhvrFkHUFQqE6wKv23kNrHYUu/uqy6cZmtCbGLrlpl8daoWxk0wjJT5repT5hp5lyIhrcivddZvAUvbA0sOnGNY3/b4NoOv1OmBSoDFP/S4CpQxxMmDrumM8cP0j3Dx7nv5ql6yEVFT0VYeqqphilV4lSGJAGbQwKKOoCkPLZNy/4b%2bwe%2bIZvnji2zg%2bf5DV3iY2tJ5j38zTmNImEJdlC0yBFAXGaCe5vN6n3iT72R4VJsHgfIFeiY8uY8wkUrS5586dv611dfXS5f5wF7i2Y8tsA8DO2Oa1PyNjZre94zP9i7f8lSwvP9COM85c2cIjZ29h//pX2bP%2bNNMTCyxcniWK8yZD2luUxuCK%2bIFxNQSFnXXTR02s6HS35BNUfecJe2NGmDps5w2VMCXQGmtmGKnAMAD1tbe5Zk/vXULWUBo6rD5XI2KHRbFploNVjX4YLAfMnFUpN29%2bnPtueAyZaG6ZOUoxSNHaVnPQRpOqFVKhqZQglgYhIspcIWJrkEXSVmgo8haz6gLv3vkbHJm5myOn7%2bbQzMeZbi%2bTFS20MURAt3OFKMowBQiXnNAYHteY%2b6VBxMhX349e6oGgzaAv2bVj5ux3vvfW3x7vdomjmOEskaY1seDqGo5FURLF4/2pTQ/%2b9vqjf/xAO%2bmxtDzDw8fu4537HmXL%2bAVmp65y%2bcIGUtPUTLXs55RcTSNP6xRtu1/tDvHWrzM0DDambDvS6ZbeD1i77rzZTw3kxvQOqSn8HqxiWEI7jna6eMBSQbWpa9ZWGTGRh/Dldb7mBHZRW/ZXxFTGsG/LUR7Y/jSr1TSKDqKtSJQhKjXaCCJToSpNoex0EWhlRWglkIkhHk/QlaZcKcnLFpHU3DzxBNcfeAqhSoq8bec4FYZSKVYGHYqqQ2JWGsZ7Q/a7lrXrle1QREmMmaUscu6/Z9d/3jU3e7woNN044fVaUx0rX7zmDioa0J65//cPbH34x3fOPr/vucUHOHFhB89f2s9br/8s29ad50VzsO4vrSCOFDLSVIW0Y3z9IJDGU%2by6uykxWoPX0ZuuBz8JwlJgQ/1fj0dxfjyfJlSDbhQs4bLx9YTq51k/1JDZ3NUOGx/BgeHKEIsE0RBf0gJQOrYlP7CT4dy/85Pcvek5lhan7BzGMXZiem0LayoF2giqElSlqUqFQSBlRJFXUBqiroQoJukKSCqMgjxTxLGmVCnaVCilyEtBVUXMcIIts0e4dHkOoV3CganAlGuf2ZoHaGhgE7CfSzzN8pLNG8cX3/nW/f/P/Pwqfmb0a7UNM9NBLLg//7o7RsnEuZ2bD/zHt%2b/51M%2b%2bcvZ2VlfbnL66ia7U7N18kk8nlR2tLyBqKaK0wlSRc%2bv4a7dsIENXkDMsmnFvI0zlZLGTijVG6uZ9jjKQyw2drgFc8xDXLo4e0xCbo7RaFI8ALtRj6%2b/Gj4LCICiqNlVlX7ZussTm6St0owG7po7x4L5HmE5KMpViUOhMO8e7DZ9ppVGVnWC7KsGYCNmyKoJWds6TsqgwkUC2JFGSkA9yioFGtCPr3o0lpjAURUVZJUwkl7lj029zRPw9zl7Y7zKuS9aoKUMPJ0KIHCnPoPR2MO0hUrG%2bVclgkPE9D%2b3//cO3zz2W5RWTE/HrnNO2Jhtmasvr7iRlQue67/uNt5z/yY9%2b7uiXdjx67N28Or%2bNPE/YO/Ma3bEexWpCHCuEBK1iykGMjDSmHpZpLTZjvOgcoXXlXDMysIqHWMhjTDjL2biQn2jSqESjVzbi%2btpiePhLU70rNEcaUIa%2bHRNcW7BLuGDAaEGhUpTW7Bw/xvrxJaZaK9y8%2bQW2r7tAR%2ba0dE6lIwZVgtG2EJEREqUs2ERka/Fp4wfrA9pQZZZdlcua0hoqpTCZJunGlKVAVRpTCtJWhGhJImNIM4k2lhVTs8SG8WOcFftBfTn2c2akSTGUwAowDuhGJyciyxWb1o2vfPdDt/3f7U6bSmWviynfGgBObH3jPcc3n9i57c7/8MDuT/3M82fu45GXbuWx/Teyf%2bMJNs9e4vjiLpKoR5XFbqyIbnSp2oLXTRzXCIQvXV93ZMBa/lAPqnq1aTA1NECqeX41tAO2WoPHIWAGLpIhcdpY6/Xpmosd/olAPzRGkKuI9e3zHN72GG/f/QSzYzkCRZqAQqKNoLeaUlY2QUGVyqZ3uUgRwoldbRBS2jo5WqGURitFUUGlDShrRfsUNVXZeZC1kOhCk/cMMnE%2b0iRGViVVUbHSi5DxPO3uefLlFLHGzA%2bfpP8uUWq32%2bLv1QASpGSQ5XzgoUO/e%2bCGLX%2b1uNizL82XaTUAL7z2%2bBvuKGRKPP6WX7tj79Mfnnv52bkjJ%2b7jD595Nz/znn/Nrdue4%2bUTey3JCVUbEkYYV20%2bcOrVrhKPGDl0q7WTOngWwrPQkCFlGjEdfqDx8g89vxGQrRHPYnibyw2r9Zt6mxk%2bXEMgr1Eqop2scv/%2bJ3lg05PMTZ9Hxwl5KTBE9CtZn6aqrAValUAUYUpFNajqaIk2YJx7qSwKDJpKgzYRlVaUpXZJCtSdraV1PoskQihN0VeY2DJpVdnyGJUy5EVMy5xktnuUs8uHiGovwrWs1eb%2bBZ01z1BEkn6m2L5l6vL3vP/Qv0EYKlW%2bzrmGW5OM8IbKJxhd0BrbdWrH9vt/dV3n3L9spRlfOHYrXzx5Fzdtfpk/THOUioh9olytvxkHtsBB7W0FgWVKPzakvuSGzry5MiywR/S5cAcRrIdh2rqGaG92NWsP8UgJAuxGj74HOiBTQ6kjZuJl3rvvC2yMllmtupSlZS%2bEQOnKpiRpMErbqcikxFQaXWmUqagKhRDS1kc0hiq3xyiD9f1pO3GiTA2mMqhKOB%2bfIo4g6UpMKSgLQ97XkBiEVFSloVKgkYg4QpcZHS4SyRyj5AgLiuB//3SEM/QEYdKmJiLLCj74/tt/9fBtu5%2bpKk0nTXkzrRHB46MZrmtbFKVct%2bs9v3bf/j/9vqdOnrspyzfyK1/4frauv0Qa2Vwvg6mHXPqmhXFp9MIRk6gd6I2I81mE1h83CqQm28Q/Hw%2bgoAbh0CNjSCz6s6x5z14Hh6b2Unsd0MfkgpfVE1/wG5US7NtwgvWdFQZZanM2M42qDEjQysbadWnnr7O2mxXBVVWhXXlYg0GVUBk3iMi5rZTRKF0hlEAVPvRpwacSQXssBaFACqpCo12kqcgMSmkKrVHGUGpDqWIm0xOMj%2b1laXknkckDdcf1Ye0OGxU1DpIyZrVfsXdu9vhD77n5VyIZIxPD6/n9RlvjiO5%2beQAaoN3eeOED33byf/vks6/8h%2bfOTctzV9ZzfnETbZFZttKmKSgZghBssSF3L02sWNZM6H17tU7lzyCGUWOGhmI2HFn/mgO6fUNHETZyR0Pi1H2RYviY0L1jmusZckT7XVGsZpMsrbRI44IkTTGVoOwpbA3xJhFCCVBVBYVdXyrdeIEqW5daaZt4USo7V3FVGbSyQxCUsskjlVJoaUgmE6JYUhWKYqCtz9AIikwxyAxGaCqjyHJDUdjzRDIjiZYZ4YzRL/Z7oGfbVRGlksSR4aP/zf2/sH3b7GuXrixd60Ffs23eGLhh0vbMmztKCnbd8K7fed99v/ahF3738nsjuZ4kKqzISCS6VPV4jxHc1DQucJ0XRj2kGd7P%2bBFvga5R/%2b%2bZzRkovr7gUMWEAFkjJDi0IWRIjR3vIgTGOuCo/a317w6fzwTxPKMlnbTHpSrl%2bYWt3Dx1jEpHmFITRfZSC%2bUsWgyV0nU2d1XZCqze4rW3p9FCoWtFxBYNUk5CxG1n7QpoT7WJO7F1WPcVVaXQxlCWmjwzFIWi1JpSWxArY9C6oNDT9LPNSKOaMmfh46rv3YtdD0QBMmZlseC977z%2bz77/e%2b/%2b9VYrpdO5Vqb067dGB9Qrb%2boAowUyTvP3f/ut//LjT79275demp6enMQaHFIgImlTpVxH%2b8wT60trBhoJ4ceHOJaqpW5D%2b8Ml4dz9Y61rW%2bTSx5%2b9PuIA6VHdSE0C2RrcTLPOqnp2rIBxk4mMBj0C2481ADeA0ZRli7E0Y%2bPkJapSY8qcKLH%2bOFO6WtGqQiDQSiNjC2Lt08t82pqxotIYGoe0T2UzNsUMoyEVtKZbtCfbZMsD8sIfY900VWHIM0VZafJKUSmBwriZDSoyNU1WTFIXu1zTAusO65UwgJARvYFm66bJpR/4/nv/hZAyX%2bkNvowlMdzSOA1CceXCmzzMoKuYzdv2f/EfvGfpl46cWPxf8nyGTsdmuvjqqMY0DuIQA00qlAed1xsdToUVK7WfsO5nv3CNWwwYrw7N%2bfXD4YtGhPpr8IzpwoS68iVoxUjyr2PLkCSGRLBx%2bI947exesutTJqf6LC/balTKGIzW6ErhhvQABlUoGme3coWanFWrtLVaK2u5amWnOSuUpjsliCNBpiAdb2MqTTaoEHFMkSvyXFOVhkGvoqgqtE92FZpKa2IBMjUMBuswKkaKN7JaHRGIJuuoQqK14nvfd%2bj/OHRo7tErC6u22sGbU/0AmBzrBrVhiv6bPxLQleRdd8/94p8/evZdf/yX%2bb2tJCGyLkBXZ8U4ZdpZwJ7FPCuJ0FpubtI5cBpGeh23QGO1e1Hsll1MOIxMD4MmYC6aSI2Uvrigz0FsFAbvl6tPNBQVaV4mgEgW9LIxvnDqLvbcfRrRq8jz2DqQjYFWDKXGlArtU8%2bUQWMcSI1Lz/Ji0j1HY5zD2aCUAmJMJJFRhNCGrJchYkHZK1hZLok6EWVRkRUVMhVumGtlrXFlEFFJT21hvnfAdso1xO%2bQ3hfO9ChjlpcLHnxg36e%2b//vu/cWq8lGutRnPX67VRyg32urNfrJK0O5MLf7D9239p7u2qKWVVeu/EpFprFI/7sD3VS2KTZ1Z7DOHjRnuSN%2bxBj8pdmAYhPFaPfx91PC1Nrasw4LemmzOKcD4aWGNfdA%2b8qEta/nlsDqZqa89uBYnFhOpeOrEQU71p%2bjO9CmFJjOgogqdSDIDpbA%2bOaU1sq2JE2FdJBKIDFoaKgOltsaDlPZZgEZqyFcVxUBR5Ypypc9gOaPINGVp0%2bHKfkm/XyKTiNIYlDBooTHCEImKXMVcWL6TqphqqmOFwKvdZsPuGIQVvXPbZi7/2Mfe8T9t3jS1EklbfPwr/UA4TYNof8XoHRSCwzdt/uxHHjI///P//vK/ygYtOl2JjAWqjKipQlsLd3jchgksXreq1t/cLXsW8uKjziekUelwmlltlLi1RgbyPnyz6x9rvrvLwpd%2bC0RrwwuWBetZmIZOGaLf1o4u8xbz/Un2bz3HBH30QNDvS/rZACM0SkduiKKh0lDmChlr0lRiKoWMctJWgUlBa20n71aSXEsqKcgyjSg0ItHkUjHIrBFR9ivyQUVeKogFg35FXlYkXU1pDFWliGTF1f4B%2btkckZ8G1qsm4Y358TY1EK3Va3Rlvu8Dt//ze%2b7a81heVKTJG8d736jVR4qo%2bxUfrIFcCT743p2/9PTR8p4/%2bNTC%2b5OkTRxJjBJoI2sWrFWtOnLACBhFgxUv8XzXm0b9b/DkFhqcOiD6G3IztNc06Y5xf02duc0ImNx27%2brRChP4tLzfrXYj4VOumnuSomSQj/H0y7exd8vLtNs57UhAFKFkjFKaykQYIdFlRdUv6EpFezzCRJIih6VsE5fyzQyKlH4RM9t%2bjanuBaIyJ8okOmpDnqHynAKoStCqIC80pdIoZehnFf1BSdTRZEJS5CWSioViHwurdyONAamDF7T56wuQCiPrnE5lJIOs4kPfffuvfvd33f4rq/2CepjBV9kaAMqvHMUCqBSMd9Psww9t/8mXjg/2vXKmuHF6NkXGAlP6IL8DhpSgdT16pK6GUOuCBjcJcCCJvTvGI7jZ3WqYIThoMOaAZwhW1jtYUWlojB0/vNkzgagrOzD0AvnzmABwzQVYkSyEQZuIs5c3srgkmZ3IkTIm7iqSSqEGgiStKKVAyD5xN2ah2MMrFw6y2O%2bQlR3OLe7k6vI02s3wOdZaZKy9xMGNH2f/xJdQ/R59NUFOC5EtoYqYQhmMjKiMISsqcqUgNpSJIS9LpFZcLW5jqX83qAQhS%2brC2kO9il1vJEjl9mmxvJxz%2b83bHvmh/%2b5t//O2rev18vKgETpfZatRF0WdN9rvdZsQUFZwz61bXv2ZHxI/9pO/8PzvzS%2bVs5NTsa2WVVv3rtOlgMDPVesYNXN5UdYUnxyNPIgAoKZmT1Nj2G4Qzbm838q7fCDQPxsLvIF1A2zj9q1vod5tFNTNOqUjWskKc5ufxcgey1WMjEpaUqOTLqVuo9MCVMFgMMsjr/49nn/tVpZXbBkOjEZSEssSgSZGM%2bh3WVhaR5m9he03P0HVnuTk6kHGO8/RMZqiglLb4QlFqZCJIBGaAk2mNIku6emDLPXvBRUhZMFwgW%2bCBYEv5m3kRYTZzNJKxfV7N576qZ/8jh/dvnX2clUpOu2vXvT61jDgmwydXKv5UOm9h2Y//ZH3b/2pX/z1U7/c7yG7ndhFsUyT5VEzio%2bhNuLXsx0QgCW4rrrPg/UOAL5S60jKSpMxE4qJEddMY/zo%2bjoMuLHHZtiAGtIpzTAA/dmUoNtZojO2zHIxxmTS40o5ycnzt/LM8dtY6ncBRSwzsnycsxe3YypFGvURscYP6K/HpmKIZEE3KVjtT/HUhXcyv7oXZc5xoL0KCZYmC02uNErakW6DSNHLFQmKXnU9V1buByUQImdtmd3A3ycEEKPECoI2g0HM%2bun24j/9x%2b/60bfed%2bApjbYhQ4arHHw1Tfg45qBYO2zuK2lSCFYHJcdOLvLrf3DiZ//ws/M/0%2b6mJHGErmhQCg0AfAIpdns9wxLe8PCHBG9mvb9bFeqQBMBaAwx/ULjdLbyRElMrmOELOgLAa/gdjZFEccb66dNMT8yzPNjI6fO7KDNrnFkSNUgUSZwhnbW/dpyu/9uM3dDkpMk5ZFSyY%2bZz7J16gTxr0e8VaKHpV5qlAeSlYlyW9IpdXFx5EKNajb9PBKATYAHp3DWmjZQ5svUUK6t7acfb1U/%2b92/54Q/%2b/cP/bmJizD2Wr0Hxcy2JkmBYZvS10akQMNGV3HrDJv7X/3H2Z7vtZzb9xz85/7GJ6Q6RkMOxxqGAd6N8mRqggc8NEEMhDbc%2bPKEIQHStBxOyV7guBGy4wQRgXnM6wVDmcP0CgHc5WS9kRZm3OH32AKeMRIiKWGZ0Ujf3sAk%2buA71YGuqHDE0P4ex4UGJRqgOvdWtLMpplsf6ZEpQyQJdwWKWMMgKhG6xIrax2L8bU1lQXVtpc89ZACQIUdLqPE5eamJm%2bK73HPhnh2/f/e/6/YLx8e7XJC1HWyCCv/aTRZEgjSXtNK4%2b9sG5f3L%2bUn/6M0%2bu/FfdbssWrhxKv/dtlLFE3ZEhYYoALGINGBlmoWu1kPFC/0/420OsOXKiuhgnLuYc8Kkx9fAAH9YDW7MvTQtHso4Zcft6MeuPD%2bdhW8N6TizXI9egyKaQpkApw5XlhKoaUFRtsmKcLBOocpqs3EdVbkDSQoo8fKebFjIhKYaItPMsRdli0LuT%2b%2b7Y/rN7ds383Mpqxvp1X7mn5Mu1r12LDJox2DgjmlYaLX3fd279keX%2bKfnEi/3vGeu2kEFKfqN9DClYw8zm9mh0RRqDIUwSJSDVN75C91OaoZ8dDdcNF4yurzKsCFuXgnPnbaZ98OtDhguBFq7z3/3A8HC7r%2bU8LH6b0WslUigWl%2b9kdXULcXyaqpqkKGNisUxVzYFuE/kBR2ssXf8xCCSGFCNWMHKV/mAaU83xsQ/f/6/e%2bba9/zxJW2zYMMXMVIdIRs0p/hraXysAw1YUmjiWVx/6tk0/LOVF8dhzvQ902ilRFLl%2bdUD0432HXk8vBt1%2bQQfWmdT17iNOPL9uDagCAyVcvSZWPPrd/meCA4XT1YbfFdMwd329IZCHRW7tHx0Or9jICw3zUX8PiwaV9qMLtBbkags5M%2bAKR5ai7%2bCVB/fi9b0R5JgYIxKS%2bBRECyz3riOVO7jn9q0/%2b9B7b/rnt968%2b0292l9t%2b7oBECArFO12fOV73rv1Y9Njl/oPP7r44TRNSJN4WMA5hhPemPAi1VcbDR9aOD44iHA0EnZEvK7dw50mgEoonodq/Zq11BqI2KGfGWLSUJwH7FeLV896Tix7MNZM57bXJdI8%2bBzw/AByXSD0AEGJkpeJ5DyR6VOZrQizidetbuVeUmNSpChJ0uNImbO0spdua4N69zv2/LN1s8nPrVyjnstfd/vKo8dfQRNAlmviWMz/ow9d98Mfed%2bWf6PKjCyzFT2F88E1feRjr5q6vFWtgPuwnjt5fZxhqKOH6W140VCzkPF6WQ0aBwg9coCPA4%2bKTty56lixv27c/mEMOQCVE6XGiVfjh7Vpl3Ol3LL2QLNMh87tX%2bWW1QB0H0wORqNVnzR6nDReRJiZYSYfFZcmQpuUOL5Eq30EJFyeP8Dk%2bIblj/7A3f/4tkM7fm6QVU3Y8evYvq4MCJa8Bpmm04l7P/6Rgz%2bR5erin37q/E/3e6ozNpZikI48/FPSDWzcQ2yMDpcdM4qxMBF1yFdnhqT6yEKwPKKj1ZtHrd3giwez32%2bISkcYMGA9Q7M8DEr/koXiNiiXUX8KC0QzAF0ihEBRoLUir%2b5EmF1ACoTpVSECI6BgvP0sUdRnNb%2bJlZVZ9s3Nnvrg997xE7fcNPcHR46c%2boaAD74BAAQLwrLUlBX6vjs2/Nz2Ta2Tv/lHp//3C1cHW7tjLaT0nnffhcHNa6f3CeekDvWuIKox6piu25AXOQBqCDoxsq8O969PNLw45PA2rAWg%2bwjTOJbrGY4843odb8TQWKPzVQ50pWU8nVsgOsVFIknlZtAddw1BVnLtfhJAhBF9Oq2niKI2S73D9Ppd9u%2befPInfvSdP7TjuvWPXbjY%2b2vx8b3Z9g0BoG9VpekPFHfdtv43E6lO/uYfnf4/z14e3JW2W8SxD4CNZh2Hjuew/t%2bQ8sUwMq8BnBpoTbSj2UazTyiSh1hzFJTDLGe3NozYMN3IXz/5c%2b3rC8FmqOfoCMtl6DJgvsx%2b9/py/RQSoGxexjV%2bNZ9gAKU6wOLKRqSI%2bZ7vOvifbr5x%2b09PTHRO5kX1DQUffJ11wGs1rQ15oZicSL/4/ndv/cDb7hz/1aK/Qq%2bX2WRJ52ytP74j6ywaN1dJnTalr/HxDKQb/c3rkjrYT3vnri/OGB4bAKf%2bhO6Q5q%2b3XK1eV2GGKo%2bOuE%2b0woJLBeAK9b0SyBvA6Rz0AHTmxG7B8Avmmr%2bmuoUAlCAiN5PVJItLG5gcS5f%2bwQdv/6kf%2bdi3/eDEeOdkv1%2b8YUDo69W%2boQzomzEwyBRjY%2bmZ%2bw%2bv/%2bjMpHzqsWeX/smJc8vXjY11iJM4kHB2QQhjszUl%2bLBbJBUYiUaypuo9DBGicT68Jndw%2bPz1V3z2tuPhUNSGIcQh/9412DK0dkN9DwdkL3YJATqq85UOgBmWGcOi4QxjLGz1ehdekxIhJFmhKYqKe%2b7Y9ej7v/POn5mZGf8vqtIUZYUQrdc52de3/Y0AECyGqlKTVRX3Hd7yy/fftfWLv/cnx3/68SNLHxgUKe12MuSlN0bbEhVaOjEs6YwvEMUly8ub8cE8RnDhluqVa8YX%2b%2b01aMM6MV5M%2bn1CnTMEnX6d7SEYqwCEii9rcOgCq%2b9ldr/wxuyFjoBeBM/LD2Ww4NNG0usVTE60Bx/50D3/9t0P3vqvkzS%2bePzERSoVsuY3vv2NAdA3Y4ytpr594ukf%2b29v/dBn/vLUP/yjT7z2E%2beuDva1Oh3StGFDO1m1fcBGRPR7k8hIIRwD1drgaF/VnTcKPlP33ZAeGOqNa44b1elovteI18PH1jpdIJZrMayvwXpe1yto6vX5Cw0vNjCs6u8OfMKK3f6gRCC59849X3j/d97587cf2vWnSsHlq0tvsoe%2bvu1vHIBgH2GeK9LxtDx008b/q90Snzp2avl/%2bOwjF39geVF0Ot02SRJTl8xFABVKR6giQkjlBrUFVRIETUQNGlYa%2blUYqnz1OgYG9fHXAN8Qy/ljQ33sWpat1wMdIJUNrVm9z1m5%2bGpVoyAL1YdgdRheExFFqcnzjN3XbTx33917f/nBd9z6K3M7N11dXFkljuK/1oSCr6V9UwDQN6U0yysFU5Odo9/5ng0/sm/XxB9%2b6YmLP/7EcwvvXelHotvtEMUyiETYKQKMAiPs1FBSyjoaN2oxm3DiFR/lCPyPtgVumjUgDEVtyIwjITdCI8WBrwagZzyv/5XW8WxC1nMx5yEXSnMfw8qfB52dGiEvNUWRs352fHD322/83Q%2b8/95fMsY8WVaaXj8bkQB/8%2b2bCoDgfYaKwaBi3771H3/rvdd96tkj57/7jz5%2b/Eeef2Xpbf1eRLvTIomj4FnaWsUGqyMa4VPtjfUfGtxAbjevXQikEGTGnmuoyCXurxnRB72YHdIXA58eoSsl1PcqCzhfkd779ExJHToTYFPiRYA1/ztev/ODrizjVRXkRcHUZFsdvm3uT%2b8%2bvPff3nRw1yc2bZzh1VPnkeKbrquBb0IA%2bmYMDAYVQkTl/ffM/c76de0/P/LChfc9%2beylH3zmhfl3LBZSdMa6pGlTLlYQuX6yIMTNORJm5xvf%2bSG4gKEsZzsvlvvuxkQMgcsf5/U%2b04hV7%2bczwTr/V/si4GVgZJTuNwIROjwyKyC%2bwLgQVhUpClsKbawbF4dv2/3xD3/owV9rj6V/cuq1i2qQlWR5OSKqv7naNy0AfVNKs9or0IaVW2/a/Bv3Ht7x%2b6dOLX7H57546geffP7ygwtLqiWjhFYrJYokxrsenFiqCx4JN0JOWKNgyFfnogR181YrOMCAmy6wAeCQjufXK4b9fxU18PDJBAXoDGMKMMpd5zVS22unuX8RfMayRBnI%2bnb61g3rx3rXX7/lz3duX//vb7px98P33n1j9dRzx8jz8hvuVP5q2jc9AH3T2tAvKrqdVv/%2be/f83jvesvcPP/HJ597x2FNnvvflV5fee/biwrZeJUjTFmkaI4KagyARMnbzFQs7ZLie19dgTAW4zA9fm6YWr54tnVVTA80zYAg859D24rYWwUUDPG2B54t61%2bzqZ%2bz24rUe10ztSilLRZ7npGnE3t0bX73x4I4/O3DD9t/rjrU/d/nKismygtXewJbI%2bBZp3zIA9E0pzepqzsx0p9y2bfoTW7ZMfkIrdeCZI2fe/dIrV77j6KtX77uykI8ZkZIkKUmS2GxsLTHCgTDU5SU2P9VPUwU1MId0vVpUV8E6D0hvEHlncdkAT%2bcYnTvgmVoUCiLAVj0AV1MxKH8hhEATUVaasrBTb62b7a7edcf%2bR/bt3fzHb3/r7X8WxcnxS5evsrC0SlGUfyORjK%2b1fcsB0DelNFluATM92X7x8O1zL77lvt2/cv7C/OGXj118z5NPn3jw9Pn5W64ulh0hOkRxizhpEUVJ47RGOLVKuElqCIDlRakTxybQ78CxVujjc4kCpsQ4V4rWhWNXa20LV/bDD/quxSo4xo5QWlBVoJSdyWh2Znwwd2DL0zfftOvhHTs2Pnz99bseW1lZzbtjXZZXBt8yovb12rcsAH0zxk6M1%2b8XJGkr27Fj4%2bf37dn8%2bfsO7/iFqwsrdxx95exbn3r6lQcuXlq6ZX6p2LiaSUTUJYpTEgdIWRek9MBzRoDRIDQCBaIMrGcLSJvLV2BMDsr57ny%2bHy61Qrj51NxvCGHDYgIbQtTKUFYKpSqUyul0WqyfHb%2b6bdvMk4duvf7zu3dv/8sN66Yfn52dXrmysIJS0O9nlOU3PnHg69G%2b5QEYNq0NeV5SFhDFreW5nROf3r9vx6c3rxftifGJPRcuXT10/sLCXS8efe22q1cHNywuZ%2bsWrvSlkC2iuI0UkiRN0apHJCvipAVEGN1HigFRMoauSqpy4Lw4Xk/MQCQYY8W7dAXObfgwwZjKMZqgqjSGFLC/Nz7eMetmJ%2bbXrZt4%2bZZb9j09NTX%2b2MR4%2b6kkES8dPnw4W1np0e9nrKz2yfOCNHn9WYe%2bFdvfKgCGTSlFlpcUZUmlRDY1Pf389p07nk9i8Z8uXLgw1kpbc1985NH9cZwePHnqzI1nzl6cW13Nti0sLq8brFwaywZLtgq9Mw60LklbbQTCFpgUEiEThIwQRiGi1LKaUWitkMIQxbGdiDCWTIyP0%2bl2%2bmPjEwtj4zNndu/af3zbtm0vKlW9dN%2b9t7%2bstT6xc%2bfWlYWFHq%2beOEmv12NltU%2bWFSiliOOvfRD4N2P7WwvAsBljKIqSwSAnE4Y47vTWb9jw/LZt255/17e/%2bw9efPFFVlaXJw4ePLj%2bkUce3XH06NGt09Oz69vtdMvLR1/ZtLi0uC4bDGZ7g8FYWVbjAsa0VhHGztMkZaxlJLNIiH670x50Op1%2bd2xiKUni%2bd27ds2Pj4%2bfP3f%2bwpmd1%2b06e/jwnWdfPvrKpQ0bZpb37NnPZz77CBs2rmNhYZnl5R79wd8e8fpm2t8JAI42pRR5XlAUJf1BRr%2bf0Wp1V%2bbm9qycPnP%2bxPJKj7e85a3cfNPB%2bFOf/uzE/NX5qd2756ZfO3thoreyMrll84bJsiwSpTSqqqJ2t6MGg7x38eLl3tatW3pzcztXV1Z6y6deO7384DvfthJJmf327/4uGzduYseOHZw8eZp%2bP2MwyCiKkjwv7Jwhfweb%2bLvypv3/7Zuz/X%2b4bAX5UtySrwAAAABJRU5ErkJggg=='/%3e%3c/defs%3e%3c/svg%3e\";\n export default img;","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const TableContainer = styled.div`\n overflow-x: auto;\n`\n\nexport const Table = styled.table`\n width: 100%;\n border-collapse: separate;\n border-spacing: 0 8px;\n text-align: left;\n .rounded-row td:first-child, .rounded-row th:first-child{\n border-top-left-radius: 8px;\n border-bottom-left-radius: 8px;\n }\n .rounded-row td:last-child, .rounded-row th:last-child{\n border-top-right-radius: 8px;\n border-bottom-right-radius: 8px;\n }\n .rounded-row td:last-child div{\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n thead tr{\n background: ${theme.colors[\"neutral-900\"]};\n font-size: 16px;\n font-weight: 500;\n font-family: Circular Book Medium, serif;\n line-height: 19px;\n }\n thead th{\n padding: 11px 16px;\n color: ${theme.colors.white};\n }\n tbody tr{\n background: ${theme.colors.white};\n color: ${theme.colors[\"neutral-900\"]};\n font-size: 16px;\n font-weight: 400;\n line-height: 19px;\n cursor:pointer;\n }\n tbody td{\n padding: 16px;\n }\n`\n\nexport const NothingContainer = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 300px;\n background: ${theme.colors.white};\n border-radius: 8px;\n`\n\nexport const NothingContent = styled.div`\n display: flex;\n align-items: center;\n flex-direction: column;\n gap: 20px;\n p{\n font-size: 16px;\n font-weight: 400;\n line-height: 19px;\n margin: 0;\n }\n`\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\nimport { CalendarPositionProps, CalendarProps } from \"./type\";\n\nexport const DatePickerComp = styled.div<{\n calendarPosition: CalendarPositionProps;\n showTime?: boolean;\n range?: boolean;\n}>`\n \n position: absolute;\n width: ${({ range }) => (range ? \"650px\" : \"300px\")};\n /* height: 421px; */\n background-color: ${theme.colors.white};\n box-shadow: 0 0 24px rgba(0, 0, 0, 0.04);\n top: 58px;\n z-index: 10;\n padding: 16px;\n border-radius: 16px;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n\n .calendar_head {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n height: 19px;\n padding: 0.5rem 1rem;\n background-color: ${theme.colors[\"white\"]};\n\n svg {\n cursor: pointer;\n }\n\n .calendar_head_month_year {\n display: flex;\n flex-direction: row;\n font-size: 1rem;\n\n .calendar_head_month_name {\n margin-right: 0.5rem;\n }\n }\n }\n\n .datepicker_month {\n width: 100%;\n display: flex;\n flex-direction: row;\n justify-content: center;\n }\n\n .datepicker_main {\n display: flex;\n flex-direction: column;\n justify-content: center;\n padding: 16px 0 0 0;\n align-items: center;\n\n table {\n width: 100%;\n display: table;\n height: 80%;\n border-collapse: collapse;\n border-spacing: 0;\n\n thead {\n width: 100%;\n }\n\n tbody {\n width: 100%;\n\n tr {\n height: 35px;\n\n td {\n }\n }\n }\n }\n\n ${({calendarPosition}) =>\n calendarPosition.topOffset < 150 ? `bottom: 421px;` : \"top: -100px;\"}\n ${({calendarPosition}) =>\n calendarPosition.leftOffset < 150 ? \"right: 0px;\" : \"left: 0px;\"}\n }\n\n .date-picker_right {\n grid-area: 1 / 9 / 2 / 10;\n }\n`;\n\ninterface CellStyleProps {\n selected: boolean;\n notSelectable: boolean;\n fallsWithinRange: boolean;\n}\n\nexport const DateCellContainer = styled.div<CellStyleProps>`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n position: relative;\n cursor: pointer;\n margin: 0.3rem;\n height: 2rem;\n width: 2rem;\n border-bottom:1px solid;\n border-color:transparent;\n ${({fallsWithinRange})=> fallsWithinRange && `background-color: ${theme.colors[\"black-100\"]}`}\n :hover {\n border-color: black;\n }\n ${({ selected }) => selected && `background-color: ${theme.colors[\"black\"]};`}\n ${({ selected }) => selected && `border-radius: 50%;`}\n ${({notSelectable}) => notSelectable && `cursor: not-allowed !important;`}\n *{\n ${({selected}) => selected && `color:white !important`}\n }\n p{\n font-family: \"Circular Book\", sans-serif;\n font-size: 14px;\n font-weight: 400;\n line-height: 17px;\n ${({selected}) => selected && `color:white`}\n &.invalid {\n pointer-events: none;\n }\n }\n\n .month {\n color: grey;\n }\n\n \n\n .today {\n color: ${({ selected }) =>\n selected ? \"white\" : `${theme.colors[\"black\"]}`};\n font-weight: 900;\n }\n`;\n\nexport const TimePickerComp = styled.div`\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n grid-template-rows: 1fr;\n grid-column-gap: 8px;\n grid-row-gap: 0;\n padding: 10px;\n margin-top: 12px;\n border-top: 1px solid ${theme.colors[\"neutral-200\"]};\n\n .timepicker_hours {\n \n }\n \n .tsc ul{\n border:1px solid ${theme.colors[\"neutral-200\"]};\n border-radius:8px;\n }\n\n ul {\n height: 64px;\n overflow-y: scroll;\n padding: 2px;\n }\n li {\n cursor: pointer;\n list-style: none;\n padding: 3px;\n border-radius: 1px;\n\n &.selected {\n background-color: ${theme.colors[\"neutral-900\"]};\n color: white;\n }\n\n &:hover {\n background-color: ${theme.colors[\"neutral-400\"]};\n color: white;\n }\n }\n`;\n\nexport const DatePickerContainer = styled.div<{\n width?: number;\n}>`\n display: flex;\n position: relative;\n width: ${({ width }) => (width ? `${width}px` : \"100%\")};\n height: 50px;\n background: white;\n .date_picker_input_holder {\n display: flex;\n flex-direction: row;\n width: 100%;\n height: 50px;\n border: 1px solid #d2ddee;\n border-radius: 8px;\n overflow: hidden;\n transition: 300ms ease-out;\n padding: 2px 4px;\n\n &:focus,&:focus-within{\n border: 1px solid ${theme.colors[\"primary-500\"]};\n outline: none;\n }\n &:hover {\n border: 1px solid ${theme.colors[\"primary-300\"]};\n }\n &.error{\n border: 1px solid ${theme.colors[\"error-500\"]};\n }\n\n .date_picker_input_holder_icon {\n display: flex;\n cursor: pointer;\n padding: 13px 16px;\n }\n\n .date-time-parent-wrapper {\n height: 100%;\n width: 100%;\n }\n\n .date-picker-wrapper {\n position: relative;\n height: 100%;\n display: flex;\n width: 100%;\n svg {\n width: 20px;\n height: 22px;\n position: absolute;\n pointer-events: none;\n background-color: white;\n z-index: 100;\n /* center element */\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n }\n\n input {\n border: none;\n height: 100%;\n width: 95%;\n font-family: \"Circular Book\", sans-serif;\n font-weight: 400;\n font-size: 16px;\n line-height: 22.4px;\n \n\n &::placeholder {\n color: ${theme.colors[\"neutral-200\"]};\n }\n\n &:focus {\n outline: none;\n }\n\n &#datePickerTime {\n position: absolute;\n top: 0;\n bottom: 0;\n right: 0;\n left: 0;\n\n width: 24px;\n height: 24px;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n\n &.showTime {\n visibility: visible;\n width: 30px;\n height: 100%;\n z-index: 200;\n }\n }\n }\n }\n`;\n","import React, { useEffect, useRef, useState } from \"react\";\nimport {\n CellProps,\n DatePickerProps,\n CalendarProps,\n dayInDate,\n TimePickerProps,\n} from \"./type\";\nimport {\n DateCellContainer,\n DatePickerComp,\n DatePickerContainer,\n TimePickerComp,\n} from \"./style\";\nimport { setTextRange } from \"typescript\";\n\nconst setupDates = function () {\n return {\n getDayNames: function () {\n return [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ];\n },\n getDayNamesTrimmed: function () {\n return this.getDayNames().map((p) => p.substring(0, 3));\n },\n getMonthNames: function () {\n return [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ];\n },\n getMonthDays: function (month: number, year: number) {\n return new Date(year, month, 0).getDate();\n },\n getMonthFirstDay: function (month: number, year: number) {\n return new Date(year, month, 1).getDay();\n },\n getMonthLastDay: function (month: number, year: number) {\n return new Date(year, month, this.getMonthDays(month, year)).getDay();\n },\n getMonthName: function (month: number) {\n return this.getMonthNames()[month];\n },\n getDayName: function (day: number) {\n return this.getDayNames()[day];\n },\n getMonth: function (date: Date) {\n return date.getMonth();\n },\n getYear: function (date: Date) {\n return date.getFullYear();\n },\n getDay: function (date: Date) {\n return date.getDate();\n },\n getDayOfWeek: function (date: Date) {\n return date.getDay();\n },\n getWeekOfMonth: function (date: Date) {\n return Math.ceil(this.getDay(date) / 7);\n },\n getDateData: function (\n curYear: number,\n curMonth: number\n ): Array<dayInDate> {\n let getDaysOfWeek = function (n: number, f: Array<string>): number {\n if (n == f.length) {\n return 0;\n }\n return n;\n };\n let days = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\n let Months = [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ];\n let today = new Date().getDate();\n let f = new Date(curYear, curMonth, 0).getDate();\n let final = [];\n for (let y = 1; y <= f; y++) {\n let h: dayInDate = {\n month: Months[curMonth - 1],\n day: y,\n isMonth:\n new Date().getFullYear() == curYear &&\n new Date().getMonth() + 1 == curMonth,\n isToday:\n y == today &&\n new Date().getFullYear() == curYear &&\n new Date().getMonth() + 1 == curMonth,\n dayName:\n days[\n getDaysOfWeek(new Date(curYear, curMonth - 1, y).getDay(), days)\n ],\n year: curYear,\n date: new Date(curYear, curMonth - 1, y),\n };\n final.push(h);\n }\n return final;\n },\n getPreviousMonthDays: function (\n year: number,\n month: number,\n daysToCut: number\n ) {\n let final = this.getDateData(year, month);\n return final.slice(final.length - daysToCut);\n },\n getNextMonthDays: function (\n year: number,\n month: number,\n daysToCut: number\n ) {\n let final = this.getDateData(year, month);\n return final.slice(0, daysToCut);\n },\n renderDateToShow: function (data: any) {},\n };\n};\n\nconst DatePickerCalendar = (props: CalendarProps) => {\n const [currentMonth, setCurrentMonth] = useState(\n new Date().getMonth() + 1\n );\n const [currentYear, setCurrentYear] = useState(\n new Date().getFullYear()\n );\n\n const [currentMonth2, setCurrentMonth2] = useState(\n new Date().getMonth() + 1\n );\n\n const [currentYear2, setCurrentYear2] = useState(\n new Date().getFullYear()\n );\n const calendarRef = useRef<HTMLDivElement | null>(null);\n const {\n parentRef,\n showCalendar,\n onDateChange,\n showTime,\n range,\n fromDate,\n toDate,\n dateObject\n } = props;\n useOutsideAlerter(parentRef, calendarRef, showCalendar);\n\n const applyDate = (date: dayInDate) => {};\n const g = setupDates();\n\n const renderDate = function (\n thismonth: Array<dayInDate>\n ): Array<Array<dayInDate>> {\n let refactored = [];\n let first = g.getDayNamesTrimmed().indexOf(thismonth[0].dayName);\n let last =\n g.getDayNames().length -\n (g.getDayNamesTrimmed().indexOf(thismonth[thismonth.length - 1].dayName) +\n 1);\n let prevdays = g.getPreviousMonthDays(currentYear, currentMonth - 1, first);\n let nextdays = g.getNextMonthDays(currentYear, currentMonth + 1, last);\n let total = [...prevdays, ...thismonth, ...nextdays];\n let weeks = total.length / 7;\n for (let g = 0; g < weeks; g++) {\n let h = g + 1;\n let y = total.slice(g * 7, h * 7);\n refactored.push(y);\n }\n return refactored;\n };\n return (\n <DatePickerComp\n ref={calendarRef}\n showTime={props.showTime}\n calendarPosition={props.position}\n range={range}\n >\n <div className=\"date\">\n <div className=\"calendar_head\">\n <svg\n onClick={() => {\n if (currentMonth === 1) {\n setCurrentMonth(12);\n setCurrentYear(currentYear - 1);\n } else {\n setCurrentMonth(currentMonth - 1);\n }\n }}\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g clipPath=\"url(#clip0_783_5845)\">\n <path\n d=\"M11.29 12L14.83 8.46001C15.0163 8.27265 15.1208 8.0192 15.1208 7.75501C15.1208 7.49082 15.0163 7.23737 14.83 7.05001C14.737 6.95628 14.6264 6.88189 14.5046 6.83112C14.3827 6.78035 14.252 6.75421 14.12 6.75421C13.988 6.75421 13.8573 6.78035 13.7354 6.83112C13.6136 6.88189 13.503 6.95628 13.41 7.05001L9.17 11.29C9.07628 11.383 9.00188 11.4936 8.95111 11.6154C8.90035 11.7373 8.87421 11.868 8.87421 12C8.87421 12.132 8.90035 12.2627 8.95111 12.3846C9.00188 12.5064 9.07628 12.617 9.17 12.71L13.41 17C13.5034 17.0927 13.6143 17.166 13.7361 17.2158C13.8579 17.2655 13.9884 17.2908 14.12 17.29C14.2516 17.2908 14.3821 17.2655 14.5039 17.2158C14.6257 17.166 14.7366 17.0927 14.83 17C15.0163 16.8126 15.1208 16.5592 15.1208 16.295C15.1208 16.0308 15.0163 15.7774 14.83 15.59L11.29 12Z\"\n fill=\"#070B12\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_783_5845\">\n <rect width=\"24\" height=\"24\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <div className=\"calendar_head_month_year\">\n <h5 className=\"calendar_head_month_name\">\n {g.getMonthName(currentMonth - 1)}\n </h5>\n <h5 className=\"calendar_head_year\">{currentYear}</h5>\n </div>\n\n <svg\n onClick={() => {\n if (currentMonth == 12) {\n setCurrentMonth(1);\n setCurrentYear(currentYear + 1);\n } else {\n setCurrentMonth(currentMonth + 1);\n }\n }}\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g clipPath=\"url(#clip0_783_5847)\">\n <path\n d=\"M14.83 11.29L10.59 7.05001C10.497 6.95628 10.3864 6.88189 10.2646 6.83112C10.1427 6.78035 10.012 6.75421 9.88 6.75421C9.74799 6.75421 9.61729 6.78035 9.49543 6.83112C9.37357 6.88189 9.26297 6.95628 9.17 7.05001C8.98375 7.23737 8.87921 7.49082 8.87921 7.75501C8.87921 8.0192 8.98375 8.27265 9.17 8.46001L12.71 12L9.17 15.54C8.98375 15.7274 8.87921 15.9808 8.87921 16.245C8.87921 16.5092 8.98375 16.7626 9.17 16.95C9.26344 17.0427 9.37426 17.116 9.4961 17.1658C9.61794 17.2155 9.7484 17.2408 9.88 17.24C10.0116 17.2408 10.1421 17.2155 10.2639 17.1658C10.3857 17.116 10.4966 17.0427 10.59 16.95L14.83 12.71C14.9237 12.617 14.9981 12.5064 15.0489 12.3846C15.0997 12.2627 15.1258 12.132 15.1258 12C15.1258 11.868 15.0997 11.7373 15.0489 11.6154C14.9981 11.4936 14.9237 11.383 14.83 11.29Z\"\n fill=\"#070B12\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_783_5847\">\n <rect width=\"24\" height=\"24\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n </div>\n <div className=\"datepicker_main\">\n <table>\n <thead>\n <tr>\n {g.getDayNames().map((day, index) => {\n return <th key={index}>{day.substring(0, 3)}</th>;\n })}\n </tr>\n </thead>\n <tbody>\n {renderDate(g.getDateData(currentYear, currentMonth)).map(\n (g, ind) => {\n return (\n <tr key={ind}>\n {g.map((v, m) => {\n return (\n <td key={m}>\n <Cell\n endCalendar={false}\n startCalendar={true}\n fromDate={fromDate}\n toDate={toDate}\n dateObject={dateObject}\n onDateChange={(d) => {\n if (range) {\n onDateChange(d, range, d, undefined);\n return;\n }\n onDateChange(d, range, undefined, undefined);\n }}\n selectDate={applyDate}\n day={v}\n />\n </td>\n );\n })}\n </tr>\n );\n }\n )}\n </tbody>\n </table>\n </div>\n </div>\n {range && (\n <div className=\"date2\">\n <div className=\"calendar_head\">\n <svg\n onClick={() => {\n if (currentMonth2 === 1) {\n setCurrentMonth2(12);\n setCurrentYear2(currentYear2 - 1);\n } else {\n setCurrentMonth2(currentMonth2 - 1);\n }\n }}\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g clipPath=\"url(#clip0_783_5845)\">\n <path\n d=\"M11.29 12L14.83 8.46001C15.0163 8.27265 15.1208 8.0192 15.1208 7.75501C15.1208 7.49082 15.0163 7.23737 14.83 7.05001C14.737 6.95628 14.6264 6.88189 14.5046 6.83112C14.3827 6.78035 14.252 6.75421 14.12 6.75421C13.988 6.75421 13.8573 6.78035 13.7354 6.83112C13.6136 6.88189 13.503 6.95628 13.41 7.05001L9.17 11.29C9.07628 11.383 9.00188 11.4936 8.95111 11.6154C8.90035 11.7373 8.87421 11.868 8.87421 12C8.87421 12.132 8.90035 12.2627 8.95111 12.3846C9.00188 12.5064 9.07628 12.617 9.17 12.71L13.41 17C13.5034 17.0927 13.6143 17.166 13.7361 17.2158C13.8579 17.2655 13.9884 17.2908 14.12 17.29C14.2516 17.2908 14.3821 17.2655 14.5039 17.2158C14.6257 17.166 14.7366 17.0927 14.83 17C15.0163 16.8126 15.1208 16.5592 15.1208 16.295C15.1208 16.0308 15.0163 15.7774 14.83 15.59L11.29 12Z\"\n fill=\"#070B12\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_783_5845\">\n <rect width=\"24\" height=\"24\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <div className=\"calendar_head_month_year\">\n <h5 className=\"calendar_head_month_name\">\n {g.getMonthName(currentMonth2 - 1)}\n </h5>\n <h5 className=\"calendar_head_year\">{currentYear}</h5>\n </div>\n\n <svg\n onClick={() => {\n if (currentMonth == 12) {\n setCurrentMonth2(1);\n setCurrentYear2(currentYear2 + 1);\n } else {\n setCurrentMonth2(currentMonth2 + 1);\n }\n }}\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g clipPath=\"url(#clip0_783_5847)\">\n <path\n d=\"M14.83 11.29L10.59 7.05001C10.497 6.95628 10.3864 6.88189 10.2646 6.83112C10.1427 6.78035 10.012 6.75421 9.88 6.75421C9.74799 6.75421 9.61729 6.78035 9.49543 6.83112C9.37357 6.88189 9.26297 6.95628 9.17 7.05001C8.98375 7.23737 8.87921 7.49082 8.87921 7.75501C8.87921 8.0192 8.98375 8.27265 9.17 8.46001L12.71 12L9.17 15.54C8.98375 15.7274 8.87921 15.9808 8.87921 16.245C8.87921 16.5092 8.98375 16.7626 9.17 16.95C9.26344 17.0427 9.37426 17.116 9.4961 17.1658C9.61794 17.2155 9.7484 17.2408 9.88 17.24C10.0116 17.2408 10.1421 17.2155 10.2639 17.1658C10.3857 17.116 10.4966 17.0427 10.59 16.95L14.83 12.71C14.9237 12.617 14.9981 12.5064 15.0489 12.3846C15.0997 12.2627 15.1258 12.132 15.1258 12C15.1258 11.868 15.0997 11.7373 15.0489 11.6154C14.9981 11.4936 14.9237 11.383 14.83 11.29Z\"\n fill=\"#070B12\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_783_5847\">\n <rect width=\"24\" height=\"24\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n </div>\n <div className=\"datepicker_main\">\n <table>\n <thead>\n <tr>\n {g.getDayNames().map((day, index) => {\n return <th key={index}>{day.substring(0, 3)}</th>;\n })}\n </tr>\n </thead>\n <tbody>\n {renderDate(g.getDateData(currentYear2, currentMonth2)).map(\n (g, ind) => {\n return (\n <tr key={ind}>\n {g.map((v, m) => {\n return (\n <td key={m}>\n <Cell\n startCalendar={false}\n endCalendar={true}\n fromDate={fromDate}\n toDate={toDate}\n dateObject={dateObject}\n onDateChange={(d) => {\n if (range) {\n onDateChange(d, range, undefined, d);\n return;\n }\n onDateChange(\n d,\n undefined,\n undefined,\n undefined\n );\n }}\n selectDate={applyDate}\n day={v}\n />\n </td>\n );\n })}\n </tr>\n );\n }\n )}\n </tbody>\n </table>\n </div>\n </div>\n )}\n {showTime && (\n <div className=\"time\">\n <TimePicker onTimeChange={props.onTimeChange} />\n </div>\n )}\n </DatePickerComp>\n );\n};\n\nconst TimePicker = (props: TimePickerProps) => {\n const [hours, setHours] = useState([\n \"00\",\n \"01\",\n \"02\",\n \"03\",\n \"04\",\n \"05\",\n \"06\",\n \"07\",\n \"08\",\n \"09\",\n \"10\",\n \"11\",\n \"12\",\n ]);\n const [minutes, setMinutes] = useState([\n \"00\",\n \"01\",\n \"02\",\n \"03\",\n \"04\",\n \"05\",\n \"06\",\n \"07\",\n \"08\",\n \"09\",\n \"10\",\n \"11\",\n \"12\",\n \"13\",\n \"14\",\n \"15\",\n \"16\",\n \"17\",\n \"18\",\n \"19\",\n \"20\",\n \"21\",\n \"22\",\n \"23\",\n \"24\",\n \"25\",\n \"26\",\n \"27\",\n \"28\",\n \"29\",\n \"30\",\n \"31\",\n \"32\",\n \"33\",\n \"34\",\n \"35\",\n \"36\",\n \"37\",\n \"38\",\n \"39\",\n \"40\",\n \"41\",\n \"42\",\n \"43\",\n \"44\",\n \"45\",\n \"46\",\n \"47\",\n \"48\",\n \"49\",\n \"50\",\n \"51\",\n \"52\",\n \"53\",\n \"54\",\n \"55\",\n \"56\",\n \"57\",\n \"58\",\n \"59\",\n ]);\n const [selectedHour, setSelectedHour] = useState(\"00\");\n const [selectedMinute, setSelectedMinute] = useState(\"00\");\n const [selectedAmPm, setSelectedAmPm] = useState(\"\");\n\n const { onTimeChange } = props;\n\n const applyTime = (hour: string, minute: string, ampm: string) => {\n if (onTimeChange) onTimeChange(hour, minute, ampm);\n };\n\n useEffect(() => {\n applyTime(selectedHour, selectedMinute, selectedAmPm);\n }, [selectedHour, selectedMinute, selectedAmPm]);\n\n return (\n <TimePickerComp>\n <div className=\"timepicker_hours tsc\">\n <div className=\"timepicker_hours_header\">\n <div className=\"timepicker_hours_header_title\">Hour</div>\n <ul>\n {hours.map((hour, index) => {\n return (\n <li\n key={index}\n className={`${selectedHour === hour ? \"selected\" : \"\"}`}\n onClick={() => {\n setSelectedHour(hour);\n }}\n >\n {hour}\n </li>\n );\n })}\n </ul>\n </div>\n </div>\n <div className=\"timepicker_minutes tsc\">\n <div className=\"timepicker_minutes_header\">\n <div className=\"timepicker_minutes_header_title\">Minute</div>\n <ul>\n {minutes.map((minute, index) => {\n return (\n <li\n key={index}\n className={`${selectedMinute === minute ? \"selected\" : \"\"}`}\n onClick={() => {\n setSelectedMinute(minute);\n }}\n >\n {minute}\n </li>\n );\n })}\n </ul>\n </div>\n </div>\n <div className=\"timepicker_ampm tsc\">\n <div className=\"timepicker_ampm_header\">\n <div className=\"timepicker_ampm_header_title\">AM/PM</div>\n <ul>\n <li\n className={`${selectedAmPm === \"am\" ? \"selected\" : \"\"}`}\n onClick={() => {\n setSelectedAmPm(\"am\");\n }}\n >\n AM\n </li>\n <li\n className={`${selectedAmPm === \"pm\" ? \"selected\" : \"\"}`}\n onClick={() => {\n setSelectedAmPm(\"pm\");\n }}\n >\n PM\n </li>\n </ul>\n </div>\n </div>\n </TimePickerComp>\n );\n};\n\nconst Cell = (props: CellProps) => {\n \n\n const {\n selectDate,\n day,\n onDateChange,\n fromDate,\n toDate,\n startCalendar,\n endCalendar,\n dateObject\n } = props;\n let st =\n (startCalendar && toDate && new Date(toDate) < day.date ? true : false) ||\n (startCalendar && fromDate && new Date(fromDate) < day.date ? true : false);\n let fal =\n (fromDate &&\n toDate &&\n day.date > new Date(fromDate) &&\n day.date < new Date(toDate)) ? true : false;\n let selected = dateObject.date && !dateObject.range && dateObject.date == day.date\n selected = function(v){\n if(dateObject.range){\n if(startCalendar && dateObject.fromDate){\n let y = new Date(dateObject.fromDate).valueOf() - new Date(day.date).valueOf();\n if(!y){\n return true\n }else {\n return false\n }\n }\n if(endCalendar && dateObject.toDate){\n let y = new Date(dateObject.toDate).valueOf() - new Date(day.date).valueOf()\n if(!y){\n return true\n }else {\n return false\n }\n }\n }\n return v\n }(selected);\n return (\n <DateCellContainer\n fallsWithinRange={fal}\n notSelectable={st}\n selected={selected}\n onClick={() => {\n selectDate(props.day);\n onDateChange(props.day.date);\n }}\n >\n <p\n className={`${props.day.isToday ? \"today\" : \"\"}${\n props.day.isMonth ? \"\" : \"month\"\n } ${\n startCalendar && toDate && new Date(toDate) < day.date\n ? \"invalid\"\n : \"\"\n }`}\n >\n {props.day.day}\n </p>\n </DateCellContainer>\n );\n};\n\nfunction useOutsideAlerter(ref: any, refSec: any, setActiveCalendar: any) {\n useEffect(() => {\n /**\n * Alert if clicked on outside of element\n */\n function handleClickOutside(event: any) {\n // console.log(event.target, refSec.current, refSec.current.contains(event.target));\n if (\n ref.current &&\n !ref.current.contains(event.target) &&\n refSec.current &&\n !refSec.current.contains(event.target)\n ) {\n setActiveCalendar(false);\n }\n }\n\n // Bind the event listener\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n // Unbind the event listener on clean up\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [ref]);\n}\n\nconst DatePicker = (props: DatePickerProps) => {\n const {\n active,\n placeholder = \"Select date\",\n showTime,\n onDateChange,\n width,\n range,\n } = props;\n // const [dateSelected, setDateSelected] = useState(new Date());\n const [dateObject, setDateObject] = useState<dayInDate>({\n year: new Date().getFullYear(),\n month: new Date().getMonth().toLocaleString(),\n date: new Date(),\n isToday: true,\n isMonth: true,\n day: new Date().getDate(),\n dayName: \"\",\n\n });\n const [dateSelected, setDateSelected]: any = useState(\"\");\n const [formattedDate, setFormattedDate] = useState(\"\");\n const [fromDate, setFromDate]: any = useState(\"\");\n const [toDate, setToDate]: any = useState(\"\");\n const [userInput, setUserInput] = useState(\"\");\n const [activeCalendar, setActiveCalendar] = useState(false);\n const [localTime, setLocalTime] = useState(\"\");\n const [fromSelect, setFromSelect] = useState(false);\n const [position, setPosition] = useState({\n topOffset: 0,\n leftOffset: 0,\n });\n const wrapperRef = useRef<HTMLDivElement | null>(null);\n\n const formatDateAndTime = (date: Date, time: string) => {\n if (!showTime) time = \"\";\n if (range && fromDate && toDate) {\n return `${\n fromDate.getMonth() + 1\n }/${fromDate.getDate()}/${fromDate.getFullYear()} - ${\n toDate.getMonth() + 1\n }/${toDate.getDate()}/${toDate.getFullYear()}`;\n }\n if (range && fromDate && !toDate) {\n return `${\n fromDate.getMonth() + 1\n }/${fromDate.getDate()}/${fromDate.getFullYear()}`;\n }\n return new Date(\n `${date.getMonth() + 1}/${date.getDate()}/${date.getFullYear()} ${time}`\n );\n };\n\n const formatDateRange = (fromDate: Date, toDate: Date): string =>{\n return `${\n fromDate.getMonth() + 1\n }/${fromDate.getDate()}/${fromDate.getFullYear()} - ${\n toDate.getMonth() + 1\n }/${toDate.getDate()}/${toDate.getFullYear()}`\n }\n\n const dateChanged = (date: Date, range?: boolean, fd?: Date, td?: Date) => {\n if (range) {\n if(fd){\n setFromDate(fd);\n }\n if(td){\n setToDate(td);\n }\n }\n let obj = {\n ...dateObject,\n range: range,\n ...(fd && {fromDate: fd}),\n ...(td && {toDate: td}),\n ...(date && {date: date})\n }\n setDateObject(obj)\n if(fromDate && toDate && range){\n setActiveCalendar(false)\n }else if(range && (!fromDate || !toDate)) {\n return\n }\n if (!showTime) setActiveCalendar(false);\n \n };\n\n // useEffect(()=>{\n // if(!fromSelect && fromDate && toDate){\n // setActiveCalendar(false)\n // setFromDate('')\n // setToDate('')\n // }\n // },[fromSelect])\n\n useEffect(() => {\n if (fromDate && toDate && range) {\n setDateSelected(\n `${\n fromDate.getMonth() + 1\n }/${fromDate.getDate()}/${fromDate.getFullYear()} - ${\n toDate.getMonth() + 1\n }/${toDate.getDate()}/${toDate.getFullYear()}`\n );\n setActiveCalendar(false);\n }\n }, [toDate, fromDate]);\n\n const timeChanged = (hour: string, minute: string, ampm: string) => {\n setLocalTime(` ${hour}:${minute} ${ampm}`);\n if (ampm) {\n setActiveCalendar(false);\n }\n };\n\n const clearDates = ()=>{\n setFromDate('')\n setToDate('')\n setDateSelected('')\n setFormattedDate('')\n setDateObject({\n year: new Date().getFullYear(),\n month: new Date().getMonth().toLocaleString(),\n date: new Date(),\n isToday: true,\n isMonth: true,\n day: new Date().getDate(),\n dayName: \"\",\n \n })\n }\n\n // dateInput function which is an input event\n const dateInput = (e: React.ChangeEvent<HTMLInputElement>) => {\n setUserInput(e.target.value);\n };\n\n const inputFocused = (event: React.FocusEvent<HTMLInputElement>) => {\n setActiveCalendar(true);\n clearDates()\n };\n const inputLoseFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n setActiveCalendar(false);\n };\n\n React.useEffect(() => {}, [userInput]);\n React.useEffect(() => {\n if (fromDate && toDate && range) {\n // onDateChange(\n // formatDateAndTime(dateSelected, localTime),\n // new Date(fromDate),\n // new Date(toDate)\n // );\n setFormattedDate(formatDateRange(fromDate, toDate));\n return;\n }\n if (dateSelected) {\n onDateChange(formatDateAndTime(dateSelected, localTime));\n setFormattedDate(\n formatDateAndTime(dateSelected, localTime).toLocaleString()\n );\n }\n }, [dateSelected, localTime]);\n\n React.useEffect(() => {\n if (active) {\n setActiveCalendar(true);\n }\n }, []);\n\n return (\n <DatePickerContainer width={width}>\n <div\n ref={(element) => {\n if (element) {\n let rect = element.getBoundingClientRect();\n let top = rect.x;\n let left = rect.y;\n if (position.topOffset !== top || position.leftOffset !== left) {\n setPosition({ topOffset: top, leftOffset: left });\n }\n wrapperRef.current = element;\n }\n }}\n className=\"date_picker_input_holder\"\n >\n <input\n onFocus={inputFocused}\n placeholder={placeholder}\n type=\"text\"\n onChange={dateInput}\n value={formattedDate}\n />\n\n <div\n className=\"date_picker_input_holder_icon\"\n onClick={() => {\n setActiveCalendar(!activeCalendar);\n }}\n >\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g clipPath=\"url(#clip0_1118_153)\">\n <path\n d=\"M12 19C12.1978 19 12.3911 18.9414 12.5556 18.8315C12.72 18.7216 12.8482 18.5654 12.9239 18.3827C12.9996 18.2 13.0194 17.9989 12.9808 17.8049C12.9422 17.6109 12.847 17.4327 12.7071 17.2929C12.5673 17.153 12.3891 17.0578 12.1951 17.0192C12.0011 16.9806 11.8 17.0004 11.6173 17.0761C11.4346 17.1518 11.2784 17.28 11.1685 17.4444C11.0586 17.6089 11 17.8022 11 18C11 18.2652 11.1054 18.5196 11.2929 18.7071C11.4804 18.8946 11.7348 19 12 19ZM17 19C17.1978 19 17.3911 18.9414 17.5556 18.8315C17.72 18.7216 17.8482 18.5654 17.9239 18.3827C17.9996 18.2 18.0194 17.9989 17.9808 17.8049C17.9422 17.6109 17.847 17.4327 17.7071 17.2929C17.5673 17.153 17.3891 17.0578 17.1951 17.0192C17.0011 16.9806 16.8 17.0004 16.6173 17.0761C16.4346 17.1518 16.2784 17.28 16.1685 17.4444C16.0586 17.6089 16 17.8022 16 18C16 18.2652 16.1054 18.5196 16.2929 18.7071C16.4804 18.8946 16.7348 19 17 19ZM17 15C17.1978 15 17.3911 14.9414 17.5556 14.8315C17.72 14.7216 17.8482 14.5654 17.9239 14.3827C17.9996 14.2 18.0194 13.9989 17.9808 13.8049C17.9422 13.6109 17.847 13.4327 17.7071 13.2929C17.5673 13.153 17.3891 13.0578 17.1951 13.0192C17.0011 12.9806 16.8 13.0004 16.6173 13.0761C16.4346 13.1518 16.2784 13.28 16.1685 13.4444C16.0586 13.6089 16 13.8022 16 14C16 14.2652 16.1054 14.5196 16.2929 14.7071C16.4804 14.8946 16.7348 15 17 15ZM12 15C12.1978 15 12.3911 14.9414 12.5556 14.8315C12.72 14.7216 12.8482 14.5654 12.9239 14.3827C12.9996 14.2 13.0194 13.9989 12.9808 13.8049C12.9422 13.6109 12.847 13.4327 12.7071 13.2929C12.5673 13.153 12.3891 13.0578 12.1951 13.0192C12.0011 12.9806 11.8 13.0004 11.6173 13.0761C11.4346 13.1518 11.2784 13.28 11.1685 13.4444C11.0586 13.6089 11 13.8022 11 14C11 14.2652 11.1054 14.5196 11.2929 14.7071C11.4804 14.8946 11.7348 15 12 15ZM19 3H18V2C18 1.73478 17.8946 1.48043 17.7071 1.29289C17.5196 1.10536 17.2652 1 17 1C16.7348 1 16.4804 1.10536 16.2929 1.29289C16.1054 1.48043 16 1.73478 16 2V3H8V2C8 1.73478 7.89464 1.48043 7.70711 1.29289C7.51957 1.10536 7.26522 1 7 1C6.73478 1 6.48043 1.10536 6.29289 1.29289C6.10536 1.48043 6 1.73478 6 2V3H5C4.20435 3 3.44129 3.31607 2.87868 3.87868C2.31607 4.44129 2 5.20435 2 6V20C2 20.7956 2.31607 21.5587 2.87868 22.1213C3.44129 22.6839 4.20435 23 5 23H19C19.7956 23 20.5587 22.6839 21.1213 22.1213C21.6839 21.5587 22 20.7956 22 20V6C22 5.20435 21.6839 4.44129 21.1213 3.87868C20.5587 3.31607 19.7956 3 19 3ZM20 20C20 20.2652 19.8946 20.5196 19.7071 20.7071C19.5196 20.8946 19.2652 21 19 21H5C4.73478 21 4.48043 20.8946 4.29289 20.7071C4.10536 20.5196 4 20.2652 4 20V11H20V20ZM20 9H4V6C4 5.73478 4.10536 5.48043 4.29289 5.29289C4.48043 5.10536 4.73478 5 5 5H6V6C6 6.26522 6.10536 6.51957 6.29289 6.70711C6.48043 6.89464 6.73478 7 7 7C7.26522 7 7.51957 6.89464 7.70711 6.70711C7.89464 6.51957 8 6.26522 8 6V5H16V6C16 6.26522 16.1054 6.51957 16.2929 6.70711C16.4804 6.89464 16.7348 7 17 7C17.2652 7 17.5196 6.89464 17.7071 6.70711C17.8946 6.51957 18 6.26522 18 6V5H19C19.2652 5 19.5196 5.10536 19.7071 5.29289C19.8946 5.48043 20 5.73478 20 6V9ZM7 15C7.19778 15 7.39112 14.9414 7.55557 14.8315C7.72002 14.7216 7.84819 14.5654 7.92388 14.3827C7.99957 14.2 8.01937 13.9989 7.98079 13.8049C7.9422 13.6109 7.84696 13.4327 7.70711 13.2929C7.56725 13.153 7.38907 13.0578 7.19509 13.0192C7.00111 12.9806 6.80004 13.0004 6.61732 13.0761C6.43459 13.1518 6.27841 13.28 6.16853 13.4444C6.05865 13.6089 6 13.8022 6 14C6 14.2652 6.10536 14.5196 6.29289 14.7071C6.48043 14.8946 6.73478 15 7 15ZM7 19C7.19778 19 7.39112 18.9414 7.55557 18.8315C7.72002 18.7216 7.84819 18.5654 7.92388 18.3827C7.99957 18.2 8.01937 17.9989 7.98079 17.8049C7.9422 17.6109 7.84696 17.4327 7.70711 17.2929C7.56725 17.153 7.38907 17.0578 7.19509 17.0192C7.00111 16.9806 6.80004 17.0004 6.61732 17.0761C6.43459 17.1518 6.27841 17.28 6.16853 17.4444C6.05865 17.6089 6 17.8022 6 18C6 18.2652 6.10536 18.5196 6.29289 18.7071C6.48043 18.8946 6.73478 19 7 19Z\"\n fill=\"#070B12\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_1118_153\">\n <rect width=\"24\" height=\"24\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n </div>\n </div>\n {activeCalendar && (\n <DatePickerCalendar\n showTime={showTime}\n onTimeChange={timeChanged}\n parentRef={wrapperRef}\n showCalendar={setActiveCalendar}\n position={position}\n onDateChange={dateChanged}\n selectedDate={dateSelected}\n fromDate={fromDate}\n toDate={toDate}\n dateObject={dateObject}\n range={range}\n />\n )}\n </DatePickerContainer>\n );\n};\n\nexport default DatePicker;\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const FieldContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 16px;\n width: 100%;\n`\n\nexport const LabelContainer = styled.div`\n font-weight: 500;\n font-size: 16px;\n line-height: 19px;\n label{\n font-family: \"Circular Book Medium\",sans-serif;\n }\n`\n\nexport const DropdownField = styled.button`\n position: relative;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 0 16px;\n gap: 8px;\n margin: 0;\n background: ${theme.colors.white};\n border: 1px solid ${theme.colors[\"neutral-200\"]};\n border-radius: 8px;\n transition: 300ms ease-out;\n color: ${theme.colors[\"neutral-900\"]};\n cursor: pointer;\n white-space: nowrap;\n height: 50px;\n &:hover{\n border: 1px solid ${theme.colors[\"primary-300\"]};\n }\n &.error{\n border-color: ${theme.colors[\"error-500\"]};\n }\n &:focus,&:focus-within{\n outline: none;\n border: 1px solid ${theme.colors[\"primary-500\"]};\n }\n`\n\nexport const DisabledContainer = styled.div`\n border: 1px solid ${theme.colors[\"neutral-100\"]};\n border-radius: 8px;\n padding: 0 16px;\n color: ${theme.colors[\"neutral-100\"]};\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 16px;\n cursor:not-allowed;\n background: ${theme.colors.white};\n margin: 0;\n height: 50px;\n *{\n margin: 0;\n }\n`\n\nexport const DropdownIcon = styled.div`\n height: 100%;\n display: flex;\n align-items: center;\n transition: 0.3s ease-out;\n &.collapsed {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n &.expanded {\n -webkit-transform: rotate(-180deg);\n transform: rotate(-180deg);\n }\n`\n\nexport const OptionsList = styled.div`\n border-radius: 8px;\n position: absolute;\n top: 55px;\n left: 0;\n right: 0;\n max-height: 250px;\n border:1px solid ${theme.colors[\"neutral-50\"]};\n box-shadow: 0 0 24px rgba(0,0,0,0.04);\n display: flex;\n flex-direction: column;\n animation: openlist 0.2s ease-out;\n overflow-y: auto;\n white-space: nowrap;\n min-width: fit-content;\n margin: 0;\n z-index: 10;\n transform-origin: top;\n ::-webkit-scrollbar-track{\n width: 2px !important;\n background: ${theme.colors.white} !important;\n }\n ::-webkit-scrollbar-thumb{\n background: ${theme.colors[\"neutral-900\"]} !important;\n }\n @keyframes openlist{\n from{\n transform: scaleY(0%);\n }\n to{\n transform:scaleY(100%);\n }\n }\n`\n\nexport const DropdownOption = styled.div`\n padding: 12px 16px;\n //border: none;\n background: ${theme.colors.white};\n text-align: left;\n &:hover{\n background: ${theme.colors[\"neutral-50\"]};\n }\n`\n","import React, {ReactNode, useEffect, useState} from \"react\";\nimport {DisabledContainer, DropdownField, DropdownIcon, DropdownOption, OptionsList, LabelContainer, FieldContainer} from \"./style\";\nimport {DropdownProps} from \"./type\";\n\nconst DropdownList = (props:DropdownProps) => {\n const {options,returnedSelection,initialText,disabled,label} = props\n const [opened,setOpened] = useState(false)\n const [passedOption,setPassedOption]:any = useState({})\n const [err,setErr] = useState(false)\n\n useEffect(()=>{\n document.addEventListener('keyup',function(e){\n if (opened && e.code === 'Escape') setOpened(false)\n if (!opened && (document as any).activeElement.classList.value.includes('dropdown-field') && e.code === 'Enter' ||\n !opened && (document as any).activeElement.classList.value.includes('dropdown-field') && e.code === 'Space') setOpened(true)\n })\n },[opened])\n\n return (\n <FieldContainer>\n {!disabled &&\n <>\n {label &&\n <LabelContainer>\n <label>{label}</label>\n </LabelContainer>\n }\n <DropdownField type=\"button\" className={`dropdown-field ${err ? 'error' : ''}`} onBlur={()=>{\n setOpened(false)\n }} onMouseUp={()=>{\n if (opened){\n setTimeout(()=>{\n setOpened(false)\n },100)\n }else {\n setOpened(true)\n }\n }}>\n <div style={{overflowX:'hidden'}}>\n {!passedOption.label ? initialText : passedOption.label}\n </div>\n <DropdownIcon className={opened ? 'expanded' : 'collapsed'}>\n <svg width=\"12\" height=\"8\" viewBox=\"0 0 12 8\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M10.9999 1.17C10.8126 0.983753 10.5591 0.879211 10.2949 0.879211C10.0308 0.879211 9.77731 0.983753 9.58995 1.17L5.99995 4.71L2.45995 1.17C2.27259 0.983753 2.01913 0.879211 1.75495 0.879211C1.49076 0.879211 1.23731 0.983753 1.04995 1.17C0.95622 1.26297 0.881826 1.37357 0.831057 1.49543C0.780288 1.61729 0.75415 1.74799 0.75415 1.88C0.75415 2.01202 0.780288 2.14272 0.831057 2.26458C0.881826 2.38644 0.95622 2.49704 1.04995 2.59L5.28995 6.83C5.38291 6.92373 5.49351 6.99813 5.61537 7.04889C5.73723 7.09966 5.86794 7.1258 5.99995 7.1258C6.13196 7.1258 6.26267 7.09966 6.38453 7.04889C6.50638 6.99813 6.61699 6.92373 6.70995 6.83L10.9999 2.59C11.0937 2.49704 11.1681 2.38644 11.2188 2.26458C11.2696 2.14272 11.2957 2.01202 11.2957 1.88C11.2957 1.74799 11.2696 1.61729 11.2188 1.49543C11.1681 1.37357 11.0937 1.26297 10.9999 1.17Z\" fill=\"#070B12\"/>\n </svg>\n </DropdownIcon>\n {opened &&\n <>\n {options && options.length > 0 &&\n <OptionsList>\n {options.map((option:{label:string,value:string}, index:number) => (\n <DropdownOption key={index} onClick={()=>{\n setPassedOption(option)\n returnedSelection(option)\n // setOpened(false)\n }}>{option.label}</DropdownOption>\n ))}\n </OptionsList>\n }\n </>\n }\n </DropdownField>\n </>\n }\n {disabled &&\n <DisabledContainer>\n {initialText}\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M16.9999 9.16994C16.8126 8.98369 16.5591 8.87915 16.2949 8.87915C16.0308 8.87915 15.7773 8.98369 15.5899 9.16994L11.9999 12.7099L8.45995 9.16994C8.27259 8.98369 8.01913 8.87915 7.75495 8.87915C7.49076 8.87915 7.23731 8.98369 7.04995 9.16994C6.95622 9.26291 6.88183 9.37351 6.83106 9.49537C6.78029 9.61723 6.75415 9.74793 6.75415 9.87994C6.75415 10.012 6.78029 10.1427 6.83106 10.2645C6.88183 10.3864 6.95622 10.497 7.04995 10.5899L11.2899 14.8299C11.3829 14.9237 11.4935 14.9981 11.6154 15.0488C11.7372 15.0996 11.8679 15.1257 11.9999 15.1257C12.132 15.1257 12.2627 15.0996 12.3845 15.0488C12.5064 14.9981 12.617 14.9237 12.7099 14.8299L16.9999 10.5899C17.0937 10.497 17.1681 10.3864 17.2188 10.2645C17.2696 10.1427 17.2957 10.012 17.2957 9.87994C17.2957 9.74793 17.2696 9.61723 17.2188 9.49537C17.1681 9.37351 17.0937 9.26291 16.9999 9.16994Z\" fill=\"#E8EEF7\"/>\n </svg>\n </DisabledContainer>\n }\n </FieldContainer>\n )\n}\n\nexport default DropdownList\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const DropShadowCard = styled.div`\n background: ${theme.colors.white};\n border-radius: 8px;\n border: 1px solid ${theme.colors[\"neutral-50\"]};\n min-height: 20px;\n height: 20px;\n &.withShadow{\n box-shadow: 0 0 24px rgba(0,0,0,0.04);\n }\n &.noShadow{\n box-shadow: 0 0 0 transparent;\n }\n`\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const RateContainer = styled.div`\n padding: 16px;\n border-radius: 8px;\n background: ${theme.colors.white};\n border: 1px solid ${theme.colors[\"neutral-100\"]};\n .last-updated{\n font-size: 10px;\n color: ${theme.colors[\"neutral-600\"]};\n line-height: 12px;\n letter-spacing: 0.02em;\n font-weight: 400;\n }\n`\n\nexport const CurrencyName = styled.p`\n font-size: 16px;\n font-weight: 500;\n font-family: Circular Book Medium, serif;\n line-height: 19px;\n color: ${theme.colors[\"neutral-900\"]};\n margin-bottom:16px;\n`\n\nexport const Rates = styled.div`\n display: grid;\n gap: 8px;\n align-items: center;\n grid-template-columns: calc(1/3 * 100%) calc(1/3 * 100%) calc(1/3 * 100%);\n margin-bottom: 16px;\n .exchange-currency{\n display: flex;\n gap: 4px;\n align-items: center;\n font-size: 14px;\n color: ${theme.colors[\"neutral-600\"]};\n }\n`\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const FooterContainer = styled.div`\n position: relative;\n background: ${theme.colors[\"primary-900\"]};\n color: ${theme.colors[\"neutral-50\"]};\n margin: 0;\n`\n\nexport const FooterArea = styled.div`\n padding: 80px 134px;\n display: flex;\n gap: 120px;\n`\n\nexport const AboutSSX = styled.div`\n width: 720px;\n p{\n font-size: 16px;\n font-weight: 500;\n font-family: Circular Book Medium, sans-serif;\n line-height: 19px;\n margin: 0;\n }\n img{\n width: 204px;\n }\n`\n\nexport const SSXInfo = styled.div`\n width:250px;\n h6{\n font-size: 19px;\n font-weight: bold;\n line-height: 23px;\n letter-spacing: -0.02em;\n text-transform: capitalize;\n margin: 0;\n display: flex;\n align-items: center;\n gap: 9px;\n }\n p{\n font-size: 16px;\n font-weight: 400;\n line-height: 20px;\n font-style: normal;\n }\n`\n\nexport const CopyrightArea = styled.div`\n padding: 24px 134px;\n border-top: 1px solid ${theme.colors[\"neutral-600\"]};\n`\n\nexport const CopyrightText = styled.p`\n font-size: 14px;\n font-weight: 400;\n line-height: 17px;\n`\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const IndicesContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 8px;\n`\n\nexport const IndicesItem = styled.div`\n padding: 16px;\n border-radius: 8px;\n background: ${theme.colors.white};\n border: 1px solid ${theme.colors[\"neutral-100\"]};\n display: flex;\n justify-content: space-between;\n align-items: center;\n .success{\n color:${theme.colors[\"success-500\"]}\n }\n .error{\n color:${theme.colors[\"error-500\"]}\n }\n .neutral{\n color:${theme.colors[\"neutral-400\"]}\n }\n`\n\nexport const IndexName = styled.div`\n display: flex;\n gap: 14px;\n align-items: center;\n color: ${theme.colors[\"neutral-900\"]};\n font-size: 16px;\n line-height: 19px;\n`\n\nexport const IndexValue = styled.div`\n font-size: 14px;\n color: ${theme.colors[\"neutral-900\"]};\n line-height: 17px;\n .index-value{\n color: ${theme.colors[\"neutral-600\"]};\n }\n`\n\nexport const ValidityText = styled.p`\n font-size: 10px;\n font-weight: 400;\n line-height: 12px;\n color: ${theme.colors[\"neutral-600\"]};\n margin: 8px 0 0 0;\n`\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const LoaderContainer = styled.div`\n background: ${theme.colors[\"neutral-50\"]};\n position: relative;\n overflow: hidden;\n`\n\nexport const Shimmer = styled.div`\n width: 60%;\n height: 100%;\n background: ${theme.colors[\"neutral-100\"]};\n position: absolute;\n left: -90%;\n transform: skew(-20deg);\n filter: blur(30px);\n animation: 1.5s shimmerEffect infinite ease-in-out;\n @keyframes shimmerEffect{\n from{\n left: -90%;\n }\n to{\n left: 110%;\n }\n }\n`\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const TableContainer = styled.div`\n overflow-x: auto;\n`\n\nexport const Table = styled.table`\n width: 100%;\n border-collapse: separate;\n border-spacing: 0 8px;\n text-align: left;\n .rounded-row td:first-child, .rounded-row th:first-child{\n border-top-left-radius: 8px;\n border-bottom-left-radius: 8px;\n }\n .rounded-row td:last-child, .rounded-row th:last-child{\n border-top-right-radius: 8px;\n border-bottom-right-radius: 8px;\n }\n thead tr{\n background: ${theme.colors[\"neutral-900\"]};\n color: ${theme.colors.white};\n font-size: 16px;\n font-weight: 500;\n line-height: 19px;\n font-family: Circular Book Medium, sans-serif;\n }\n thead th{\n padding: 11px 16px;\n color: ${theme.colors.white};\n }\n tbody tr{\n background: ${theme.colors.white};\n color: ${theme.colors[\"neutral-900\"]};\n font-size: 16px;\n font-weight: 400;\n line-height: 19px;\n cursor:pointer;\n }\n tbody td{\n padding: 16px;\n }\n tbody td div{\n display: flex;\n align-items: center;\n }\n tbody td div.provider{\n display: flex;\n align-items: center;\n gap: 16px;\n }\n tbody td div.txn-date{\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n tbody td .txn-amt{\n gap: 10px;\n }\n tbody td span.amt{\n display: flex;\n gap: 4px;\n align-items: center;\n }\n`\n\nexport const NothingContainer = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 581px;\n background: ${theme.colors.white};\n border-radius: 8px;\n`\n\nexport const NothingContent = styled.div`\n display: flex;\n align-items: center;\n flex-direction: column;\n gap: 20px;\n width: 333px;\n text-align: center;\n p{\n font-size: 16px;\n font-weight: 400;\n line-height: 19px;\n margin: 0;\n }\n`\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const Badge = styled.div`\n border-radius: 4px;\n width: fit-content;\n text-align: center;\n padding: 8px;\n display: flex;\n justify-content: center;\n &.default{\n background:${theme.colors[\"neutral-50\"]};\n color: ${theme.colors[\"neutral-900\"]};\n }\n &.warning{\n background:${theme.colors[\"warning-50\"]};\n color: ${theme.colors[\"warning-500\"]};\n }\n &.primary{\n background:${theme.colors[\"primary-50\"]};\n color: ${theme.colors[\"primary-500\"]};\n }\n &.neutral{\n background:${theme.colors[\"neutral-50\"]};\n color: ${theme.colors[\"neutral-500\"]};\n }\n &.success{\n background:${theme.colors[\"success-50\"]};\n color: ${theme.colors[\"success-500\"]};\n }\n &.error{\n background:${theme.colors[\"error-50\"]};\n color: ${theme.colors[\"error-500\"]};\n }\n`\n","import React from \"react\"\nimport {Badge} from \"./style\";\nimport {statusProps} from \"./type\";\n\nconst StatusBadge = (props:statusProps) => {\n const {status,label,width} = props\n return (\n <Badge className={!status ? 'default' : status} style={{width:width}}>\n {label}\n </Badge>\n )\n}\n\nexport default StatusBadge\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const Container = styled.div`\n background: ${theme.colors.white};\n width: 257px;\n padding: 16px 0;\n position: absolute;\n height: 100%;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n`\n\nexport const MenuLink = styled.a`\n color: ${theme.colors[\"neutral-900\"]};\n text-decoration: none;\n`\n\nexport const MenuItem = styled.div`\n text-decoration: none;\n display: flex;\n gap: 8px;\n align-items: center;\n`\n\nexport const MenuLinks = styled.div`\n display: flex;\n flex-direction: column;\n gap: 24px;\n`\n\nexport const MenuItemContainer = styled.div`\n padding: 8px 24px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n .icon-angle-right{\n color:#A4BBDD;\n font-size: 12px !important;\n }\n i:first-of-type{\n font-size: 18px;\n }\n &.active{\n border-left: 2px solid ${theme.colors[\"primary-500\"]};\n background: ${theme.colors[\"primary-50\"]};\n color: ${theme.colors[\"primary-500\"]};\n }\n &.indent{\n padding-left: 50px;\n }\n`\n\nexport const CodeMaintenanceSubMenu = styled.div`\n display: flex;\n flex-direction: column;\n gap: 16px;\n margin-top: 18.5px;\n max-height: 560px;\n overflow-y: auto;\n &.collapsed{\n height: 0;\n overflow: hidden;\n display: none;\n }\n`\n\nexport const CodeMaintenanceContainer = styled.div`\n &.active{\n border-left: 2px solid ${theme.colors[\"primary-500\"]};\n background: ${theme.colors[\"primary-50\"]};\n }\n &.active .cm-main-item{\n color: ${theme.colors[\"primary-500\"]};\n }\n`\n","import React, {ReactNode} from \"react\"\nimport {\n CodeMaintenanceContainer,\n CodeMaintenanceSubMenu,\n Container,\n MenuItem,\n MenuItemContainer,\n MenuLink,\n MenuLinks\n} from \"./style\";\nimport './icons.css'\nimport theme from \"../../theme\";\nimport {renderLink, SideNavProps} from \"./type\";\n\n/**\n * NOTE<br>\n * currentPage (optional) -- passed to the component to match pageName from mainNavLinks to highlight the current page in the menu\n * */\nconst LPSideNav = (props:SideNavProps) => {\n const {mainNavLinks,codeMaintenanceLinks,currentPage} = props\n\n function codeMaintenanceMenu(){\n (document.querySelector('#codeMaintenanceMenu') as any).classList.toggle('collapsed')\n }\n\n return (\n <Container>\n {mainNavLinks && mainNavLinks.length > 0 &&\n <MenuLinks>\n {mainNavLinks.map((link:any, index:number) => (\n <>\n {link.LinkComponent ?\n (<link.LinkComponent url={link.url}>\n <>\n <MenuItemContainer className={currentPage === link.pageName ? 'active' : ''}>\n <MenuItem>\n <i className={link.iconClass}/>\n {link.label}\n </MenuItem>\n <i className=\"icon-angle-right\"/>\n </MenuItemContainer>\n </>\n </link.LinkComponent>)\n :\n (<MenuLink key={index} href={link.url}>\n <MenuItemContainer className={currentPage === link.pageName ? 'active' : ''}>\n <MenuItem>\n <i className={link.iconClass}/>\n {link.label}\n </MenuItem>\n <i className=\"icon-angle-right\"/>\n </MenuItemContainer>\n </MenuLink>)\n }\n </>\n ))}\n </MenuLinks>\n }\n\n {codeMaintenanceLinks &&\n <div>\n <hr style={{margin:'16px', border:`1px solid ${theme.colors[\"neutral-100\"]}`}}/>\n <CodeMaintenanceContainer className=\"active\">\n <MenuLink href=\"#\" onClick={(e)=>{\n e.preventDefault()\n codeMaintenanceMenu()\n }}>\n <MenuItemContainer>\n <MenuItem className=\"cm-main-item\">\n <i className=\"icon-settings\"/>\n Code Maintenance\n </MenuItem>\n </MenuItemContainer>\n </MenuLink>\n <CodeMaintenanceSubMenu className=\"collapsed\" id=\"codeMaintenanceMenu\">\n <MenuLink href=\"#\">\n <MenuItemContainer className=\"indent\">\n <MenuItem>\n Users\n </MenuItem>\n </MenuItemContainer>\n </MenuLink>\n <MenuLink href=\"#\">\n <MenuItemContainer className=\"indent\">\n <MenuItem>\n Brokers\n </MenuItem>\n </MenuItemContainer>\n </MenuLink>\n <MenuLink href=\"#\">\n <MenuItemContainer className=\"indent\">\n <MenuItem>\n Liquidity Providers\n </MenuItem>\n </MenuItemContainer>\n </MenuLink>\n <MenuLink href=\"#\">\n <MenuItemContainer className=\"indent\">\n <MenuItem>\n App Actions\n </MenuItem>\n </MenuItemContainer>\n </MenuLink>\n <MenuLink href=\"#\">\n <MenuItemContainer className=\"indent\">\n <MenuItem>\n App Forms\n </MenuItem>\n </MenuItemContainer>\n </MenuLink>\n <MenuLink href=\"#\">\n <MenuItemContainer className=\"indent\">\n <MenuItem>\n App Modules\n </MenuItem>\n </MenuItemContainer>\n </MenuLink>\n <MenuLink href=\"#\">\n <MenuItemContainer className=\"indent\">\n <MenuItem>\n Currency Pairs\n </MenuItem>\n </MenuItemContainer>\n </MenuLink>\n <MenuLink href=\"#\">\n <MenuItemContainer className=\"indent\">\n <MenuItem>\n Payment Methods\n </MenuItem>\n </MenuItemContainer>\n </MenuLink>\n <MenuLink href=\"#\">\n <MenuItemContainer className=\"indent\">\n <MenuItem>\n System Config\n </MenuItem>\n </MenuItemContainer>\n </MenuLink>\n <MenuLink href=\"#\">\n <MenuItemContainer className=\"indent\">\n <MenuItem>\n User Roles\n </MenuItem>\n </MenuItemContainer>\n </MenuLink>\n </CodeMaintenanceSubMenu>\n </CodeMaintenanceContainer>\n </div>\n }\n </Container>\n )\n}\n\nexport default LPSideNav\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const TopBarContainer = styled.div`\n background: ${theme.colors.white};\n display: flex;\n justify-content: space-between;\n align-items: center;\n position: relative;\n //height: 120px;\n`\nexport const Logo = styled.div`\n padding: 16px 32px;\n img{\n width: 193px;\n }\n`\n\nexport const TopBarRight = styled.div`\n padding: 16px 32px;\n display: flex;\n gap: 24px;\n a.trade-button{\n background: ${theme.colors[\"primary-500\"]};\n border-radius: 8px;\n padding: 12px 18px;\n color: ${theme.colors.white};\n text-decoration: none;\n font-family: \"Circular Book Medium\",serif;\n font-weight: 500;\n }\n a.trade-button:hover{\n background: ${theme.colors[\"primary-400\"]};\n }\n a.trade-button:active{\n background: ${theme.colors[\"primary-700\"]};\n }\n a.trade-button:focus,a.trade-button:focus-within{\n outline: 2px solid ${theme.colors[\"primary-200\"]};\n }\n div.vt-divider{\n background-color: ${theme.colors[\"neutral-100\"]};\n padding-bottom: 1.1rem;\n padding-top: 1.1rem;\n width: 1px;\n }\n div.icon-buttons{\n display: flex;\n gap: 16px;\n }\n`\n\nexport const IconButton = styled.button`\n background: ${theme.colors.white};\n border-radius: 8px;\n border: none;\n width: 40px;\n height: 40px;\n padding: 8px;\n position: relative;\n margin: 0;\n cursor: pointer;\n &:focus-within,:focus{\n outline: none;\n }\n &:hover{\n background: ${theme.colors[\"neutral-50\"]};\n }\n &:active{\n background: ${theme.colors[\"neutral-100\"]};\n }\n &.active-item{\n background: ${theme.colors[\"neutral-100\"]};\n }\n .notification-dot{\n background: red;\n width: 8px;\n height: 8px;\n border-radius: 50%;\n position: absolute;\n right: 0;\n top: 0;\n }\n`\n\nexport const ProfileButton = styled.button`\n display: flex;\n align-items: center;\n gap: 4px;\n background: ${theme.colors.white};\n border: none;\n cursor: pointer;\n .profile-pic{\n width: 40px;\n height: 40px;\n background: ${theme.colors[\"neutral-100\"]};\n border-radius: 50%;\n }\n .rotate-icon-180{\n rotate: 180deg;\n animation: rotate 0.2s ease-out;\n }\n @keyframes rotate{\n from{\n rotate: 0deg;\n }\n to{\n rotate: 180deg;\n }\n }\n .rotate-icon-0{\n rotate: 0deg;\n animation: counterRotate 0.2s ease-out;\n }\n @keyframes counterRotate{\n from{\n rotate: 180deg;\n }\n to{\n rotate: 0deg;\n }\n }\n`\n\nexport const BugReportingCard = styled.div`\n width: 430px;\n min-height: 321px;\n background: ${theme.colors.white};\n position: absolute;\n top: 95px;\n right: 32px;\n box-shadow: 0 0 24px rgba(0, 0, 0, 0.04);\n border-radius: 8px;\n`\n\nexport const NotificationsCard = styled.div`\n width: 460px;\n background: ${theme.colors.white};\n position: absolute;\n top: 95px;\n right: 32px;\n box-shadow: 0 0 24px rgba(0, 0, 0, 0.04);\n border-radius: 8px;\n`\n\nexport const NavCardHeading = styled.div`\n border-bottom: 1px solid ${theme.colors[\"neutral-100\"]};\n padding: 12px 16px;font-family: Circular Book Medium, sans-serif;\n font-weight: 500;\n font-size: 16px;\n color: ${theme.colors[\"neutral-900\"]};\n h4{\n margin: 0 !important;\n }\n`\n\nexport const ProfileCardHeading = styled.div`\n padding: 12px 16px;font-family: Circular Book Medium, sans-serif;\n font-weight: 500;\n font-size: 16px;\n color: ${theme.colors[\"neutral-900\"]};\n h4{\n margin: 0 !important;\n }\n`\n\nexport const BugReportingBody = styled.div`\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px;\n textarea{\n padding: 13px 16px;\n border-radius: 8px;\n border: none;\n outline: 1px solid ${theme.colors[\"neutral-200\"]};\n background: ${theme.colors.white};\n height: 108px;\n font-size: 16px;\n line-height: 22.4px;\n font-weight: 400;\n }\n textarea:hover{\n outline: 1px solid ${theme.colors[\"primary-400\"]};\n }\n textarea:focus{\n outline: 1px solid ${theme.colors[\"primary-500\"]};\n }\n .info-text{\n display: flex;\n gap: 8px;\n align-items: start;\n }\n .info-text svg{\n width: 35px;\n height: 16px;\n }\n .info-text p{\n margin: 0;\n font-size: 14px;\n color: ${theme.colors[\"neutral-900\"]};\n font-weight: 400;\n line-height: 17px;\n }\n`\n\nexport const NotifList = styled.div`\n overflow-y: auto;\n max-height: 749px;\n`\n\nexport const UnreadNotif = styled.div`\n background: ${theme.colors[\"primary-50\"]};\n cursor: pointer;\n padding: 16px;\n border-left: 2px solid ${theme.colors[\"primary-500\"]};\n display: flex;\n gap: 16px;\n align-items: start;\n &:hover{\n background: ${theme.colors[\"neutral-50\"]};\n }\n .txn-amts{\n background: ${theme.colors.white};\n padding:16px;\n border-radius: 8px;\n }\n .request-status{\n font-family: Circular Book Medium, sans-serif;\n font-weight: 500;\n margin: 0;\n }\n .lp-info-txn-no{\n font-size: 12px;\n color: ${theme.colors[\"primary-500\"]};\n margin: 0;\n }\n`\n\nexport const ReadNotif = styled.div`\n background: ${theme.colors.white};\n cursor: pointer;\n padding: 16px;\n display: flex;\n gap: 16px;\n align-items: start;\n &:hover{\n background: ${theme.colors[\"neutral-50\"]};\n }\n :hover .txn-amts{\n background: ${theme.colors.white};\n }\n .txn-amts{\n background: ${theme.colors[\"neutral-50\"]};\n padding:16px;\n border-radius: 8px;\n }\n .request-status{\n font-family: Circular Book Medium, sans-serif;\n font-weight: 500;\n margin: 0;\n }\n .lp-info-txn-no{\n font-size: 12px;\n color: ${theme.colors[\"primary-500\"]};\n margin: 0;\n }\n`\n\nexport const ProfileCard = styled.div`\n width: 290px;\n background: ${theme.colors.white};\n position: absolute;\n top: 95px;\n right: 32px;\n box-shadow: 0 0 24px rgba(0, 0, 0, 0.04);\n border-radius: 8px;\n`\n\nexport const ProfileLink = styled.a`\n display: flex;\n gap: 16px;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n font-weight: 400;\n font-size: 16px;\n line-height: 19px;\n color: ${theme.colors[\"neutral-900\"]};\n text-decoration: none;\n &:hover{\n background: ${theme.colors[\"neutral-50\"]};\n }\n`\n\nexport const ResponseContainer = styled.div`\n position: absolute;\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n`\n\nexport const EmptyNotifContainer = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n height: 477px;\n`\n\nexport const ContentArea = styled.div`\n display: flex;\n flex-direction: column;\n gap: 16px;\n align-items: center;\n .text-center{\n text-align: center;\n color: ${theme.colors[\"neutral-900\"]};\n }\n .text-center .text-heading{\n font-family: Circular Book Medium, sans-serif;\n font-weight: 500;\n margin-bottom: 8px;\n }\n .text-center .subtext{\n font-size: 14px;\n margin: 0;\n }\n`\n\nexport const NotifTime = styled.div`\n color: ${theme.colors[\"neutral-500\"]};\n font-size: 12px;\n text-align: right;\n width: 40px;\n`\n","var img = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAALjSURBVHgBtVZLKG1RGP7OdsqbU0gkrkeY6Q4MKGFMuaUU8kxJmZgokpkyMGdiQJmY6BZFkqtk4NE9kVeKQpxzOu9H59R5/Hf9P0cmR7ec/dVqrb3XWt//WN+/9gYUiOiHavuquSg52GBO5ja8D/6qZkJy4VbtJxvYUINf0Ad/2ABBP7j1NgANOkMXAzs7Ozg5OXkzwBny+/34nKlIJIJgMPhfZOFwGD6f7+M5Fothe3sbx8fHiEajwPj4ODU3N1NfXx95vV66vb2l3t5eamlpodHRUZqcnKTz83Nqb28XgZvNZhoYGKBQKERHR0fU1dUl+0dGRshisRDzNTY2UlNTE3V0dJDGoayurmJiYgKZmZmYnZ1FWVkZ1tbWUFxcDLvdLp69vLxIr4hlbLPZMD09jdbWVtmfkZGBqakpzMzMoK6uDm1tbVhcXIRWWFgI5TG2trbgdDrx8PCAwcFBIa+qqkqYmtfXV6iIoTxHaWkpOjs78fT0hOzsbKSnp0tfVFQEbWlpCfPz89jc3MTd3Z1MXF1dCQkbZKSlpUnvdrvh8XiEoKCgAJqm4fr6WubOzs6Ql5cnkfB7jpRh7OnpQUlJiZBUV1eju7sbc3NzWF9fh9VqlXTxfG1tLYaGhuRAOeLy8nL09/djbGxMIri/v8fCwoKQ8tqVlRVcXFzA4HA46PHxUTbk5ubKAg6VvT09PcXh4SGWl5dFZZeXlzCZTGLwc6rYkcrKSok+Ds6GRPHVlagOmoaHh+k7MOIL1NfXo6KiAt+B7ndRwggODg5EKXzInE9WB6vH5XIhKysLBoMBNzc3kneuHz4/XpOfn4+9vT00NDRAnW9iA0zCZb+7u4uUlBSpC1YaFx4rjI2zeoxGo1wJLGl2JicnB6qipa7EkUQpitdAamqq3FWsqrjKOJJAICDkXNH8zGP2/vn5WdbX1NSIYTbgQvI/lx/g69oM/fBb94++jOjtt2WDkgP+9dl/dxz/AC0iYjxOw7vYAAAAAElFTkSuQmCC\";\n export default img;","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const MarketdataWidgetContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 8px;\n`\n\nexport const MarketDataItemContainer = styled.div`\n border-radius: 8px;\n padding: 16px;\n border: 1px solid ${theme.colors[\"neutral-100\"]};\n background: ${theme.colors.white};\n`\n\nexport const MarketNameFlagContainer = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 24px;\n`\n\nexport const EntityName = styled.p`\n margin: 0;\n font-size: 16px;\n color: ${theme.colors[\"neutral-900\"]};\n font-weight: 500;\n font-family: Circular Book Medium, sans-serif;\n line-height: 19px;\n`\n\nexport const DataContainer = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: end;\n`\n\nexport const DataInfoContainer = styled.div`\n display: flex;\n justify-content: space-between;\n width: 250px;\n`\n\nexport const InfoItem = styled.div`\n small{\n font-weight: 400;\n color: ${theme.colors[\"neutral-500\"]};\n line-height: 14px;\n font-size: 12px;\n }\n p{\n margin: 0;\n font-weight: 500;\n font-family: Circular Book Medium, sans-serif;\n color: ${theme.colors[\"neutral-600\"]};\n line-height: 19px;\n font-size: 16px;\n };\n`\n\nexport const LastUpdated = styled.div`\n p{\n font-size: 10px;\n line-height: 12px;\n letter-spacing: 0.02em;\n color: ${theme.colors[\"neutral-500\"]};\n font-weight: 400;\n text-align: end;\n margin: 0;\n }\n`\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const MarketMoversWidget = styled.div`\n display: flex;\n flex-direction: column;\n gap: 8px;\n`\n\nexport const MarketMoversContainer = styled.div`\n padding: 16px;\n border-radius: 8px;\n border: 1px solid ${theme.colors[\"neutral-100\"]};\n background: ${theme.colors.white};\n display: flex;\n gap: 14px;\n align-items: center;\n //height: 76px;\n`\n\nexport const Row = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n`\n\nexport const DataSection = styled.div`\n display: flex;\n flex-direction: column;\n gap: 8px;\n width: 100%;\n .entity-short-name{\n color: ${theme.colors[\"neutral-900\"]};\n font-weight: 500;\n font-family: Circular Book Medium, sans-serif;\n font-size: 16px;\n line-height: 19px;\n }\n .entity-short-name p,.entity-long-name p{\n margin:0\n }\n .entity-long-name,.entity-price{\n color: ${theme.colors[\"neutral-600\"]};\n font-weight: 400;\n line-height: 17px;\n display: flex;\n gap: 8px;\n }\n .entity-long-name p{\n width: 200px;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n }\n .changeRatio{\n font-size: 16px;\n font-weight: 500;\n font-family: Circular Book Medium, sans-serif;\n line-height: 19px;\n text-align: right;\n }\n .success{\n color: ${theme.colors[\"success-500\"]};\n }\n .error{\n color: ${theme.colors[\"error-500\"]};\n }\n`\n\nexport const LastUpdated = styled.p`\n color: ${theme.colors[\"neutral-600\"]};\n font-weight: 400;\n font-size: 10px;\n line-height: 12px;\n letter-spacing: 0.02em;\n margin: 0;\n text-align: right;\n padding: 0 8px 0 0;\n`\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const TabContainer = styled.div`\n display: flex;\n`\n\nexport const TabItem = styled.div`\n width: 100%;\n height: 51px;\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 16px 0;\n border-bottom: 2px solid ${theme.colors.white};\n color: ${theme.colors[\"neutral-900\"]};\n cursor: pointer;\n font-size: 16px;\n font-weight: 500;\n font-family: Circular Book Medium, sans-serif;\n line-height: 19px;\n letter-spacing: -0.02em;\n border-bottom: 1px solid ${theme.colors[\"neutral-50\"]};\n &.active{\n border-bottom: 1px solid ${theme.colors[\"neutral-900\"]};\n background: ${theme.colors[\"neutral-50\"]};\n animation: select-tab 0.2s ease-out;\n @keyframes select-tab{\n from{\n border-color: ${theme.colors[\"neutral-50\"]};\n background: transparent;\n }\n to{\n background: ${theme.colors[\"neutral-50\"]};\n border-color: ${theme.colors[\"neutral-900\"]};\n }\n }\n }\n`\n\nexport const TabContent = styled.div`\n color: ${theme.colors[\"neutral-900\"]};\n padding: 8px 0;\n position: relative;\n display: flex;\n flex-direction: column;\n flex: 1;\n`\n","import React, {useState} from 'react'\nimport {TabContainer, TabContent, TabItem} from \"./style\";\nimport {TabType} from \"./type\";\n\nconst Tab = (props:TabType) => {\n const {tabs,bgHexColor} = props\n const [tabIndex,setTabIndex] = useState(0)\n\n return (\n <>\n {tabs && tabs.length > 0 &&\n <TabContainer>\n {tabs.map((tab:{tabName:string,tabComponent:any},index:number) => {\n return (\n <TabItem key={index} className={tabIndex === index ? 'active' : ''} onClick={()=>{setTabIndex(index)}}>{tab.tabName}</TabItem>\n )\n })}\n </TabContainer>\n }\n <TabContent style={{background:bgHexColor}}>\n {tabs &&\n <>\n {tabs[tabIndex].tabComponent}\n </>\n }\n </TabContent>\n </>\n )\n}\n\nexport default Tab\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const MenuBarContainer = styled.div`\n display: flex;\n justify-content: space-around;\n align-items: center;\n background: ${theme.colors.white};\n`\n\nexport const MenuItems = styled.div`\n display: flex;\n gap: 8px;\n align-items: center;\n .menu-item{\n padding: 0 24px;\n height: 67px;\n text-decoration: none;\n color: ${theme.colors[\"neutral-900\"]};\n display: flex;\n align-items: center;\n font-size: 16px;\n line-height: 19px;\n letter-spacing: 0.02em;\n font-weight: 700;\n }\n .active{\n background: ${theme.colors[\"primary-50\"]};\n border-bottom: 1px solid ${theme.colors[\"primary-500\"]};\n color: ${theme.colors[\"primary-500\"]};\n }\n`\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const NewsCardContainer = styled.div`\n padding: 24px;\n border-radius: 8px;\n background:${theme.colors.white};\n display:flex;\n //align-items: center;\n justify-content: space-between;\n a{\n text-decoration: none;\n }\n`\n\nexport const FeaturedImg = styled.div`\n border-radius: 8px;\n overflow: hidden;\n width: 300px;\n height: 210px;\n .featured-img{\n object-fit: cover;\n width: 300px;\n height: 210px;\n }\n`\n\nexport const SourceDate = styled.div`\n background: ${theme.colors[\"neutral-50\"]};\n border-radius: 8px;\n display: inline-flex;\n .tag{\n color: ${theme.colors[\"neutral-900\"]};\n font-size: 14px;\n font-weight: 400;\n line-height: 17px;\n padding: 8px;\n display: inline-flex;\n }\n .tag:first-of-type{\n border-right: 2px solid ${theme.colors[\"neutral-100\"]};\n }\n`\n\nexport const NewsTitle = styled.h5`\n margin: 16px 0;\n font-weight: 700;\n font-size: 23px;\n line-height: 28px;\n letter-spacing: 0.02em;\n color: ${theme.colors[\"neutral-900\"]};\n`\n\nexport const NewsExcerpt = styled.p`\n font-weight: 400;\n font-size: 16px;\n line-height: 19px;\n color:${theme.colors[\"neutral-900\"]};\n`\nexport const NewsData = styled.div`\n width: 555px;\n`\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const TitleBarContainer = styled.div`\n background: ${theme.colors[\"neutral-900\"]};\n padding: 11px 16px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n height: 72px;\n color:${theme.colors[\"neutral-50\"]};\n .title-bar-text{\n font-size: 16px;\n font-weight: 500;\n font-family: Circular Book Medium, sans-serif;\n line-height: 19px;\n margin: 0;\n }\n`\n\nexport const NewsFilters = styled.div`\n display: flex;\n gap: 16px;\n .filterContainer{\n width: 200px;\n }\n`\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const SourceDate = styled.div`\n background: ${theme.colors[\"neutral-50\"]};\n border-radius: 8px;\n display: inline-flex;\n .tag{\n color: ${theme.colors[\"neutral-900\"]};\n font-size: 14px;\n font-weight: 400;\n line-height: 17px;\n padding: 8px;\n display: inline-flex;\n }\n .tag:first-of-type{\n border-right: 2px solid ${theme.colors[\"neutral-100\"]};\n }\n`\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const TitleBarContainer = styled.div`\n background: ${theme.colors[\"neutral-900\"]};\n padding: 11px 16px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n height: 72px;\n color:${theme.colors[\"neutral-50\"]};\n .title-bar-text{\n font-size: 16px;\n font-weight: 500;\n font-family: Circular Book Medium, sans-serif;\n line-height: 19px;\n margin: 0;\n }\n`\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const InputLabel = styled.div`\n display: flex;\n gap: 4px;\n flex-direction: column;\n label{\n color:${theme.colors[\"primary-900\"]};\n font-weight: 500;\n font-family: \"Circular Book Medium\", sans-serif;\n }\n span{\n color: ${theme.colors[\"neutral-600\"]};\n }\n .disabled{\n color: ${theme.colors[\"neutral-100\"]};\n }\n`\nexport const InputField = styled.input`\n border: none;\n width: 100%;\n height: 50px;\n font-size: 16px;\n padding: 0 16px;\n margin: 0;\n &:focus,&:focus-within{\n outline: none;\n }\n &::placeholder{\n color: ${theme.colors[\"neutral-200\"]};\n }\n &:disabled{\n background: ${theme.colors.white};\n cursor: not-allowed;\n pointer-events: none;\n }\n &:disabled &::placeholder{\n color: ${theme.colors[\"neutral-100\"]};\n }\n`\n\nexport const InputContainer = styled.div`\n height: 50px;\n width: 100%;\n border-radius: 8px;\n border: 1px solid ${theme.colors[\"neutral-200\"]};\n display: flex;\n align-items: center;\n overflow: hidden;\n &:hover{\n border: 1px solid ${theme.colors[\"primary-300\"]};\n }\n &:focus,&:focus-within{\n border: 1px solid ${theme.colors[\"primary-500\"]};\n outline: none;\n }\n &.success{\n border: 1px solid ${theme.colors[\"success-500\"]};\n }\n &.error{\n border: 1px solid ${theme.colors[\"error-500\"]};\n }\n &.disabled{\n pointer-events: none;\n }\n &.disabled input{\n cursor: not-allowed !important;\n }\n`\n\nexport const ToggleButton = styled.button`\n border: none;\n background: ${theme.colors.white};\n cursor:pointer;\n height: 100%;\n padding: 13px 8px;\n`\n\nexport const ErrorMessage = styled.p`\n color: ${theme.colors[\"error-500\"]};\n margin: 0;\n display: flex;\n gap: 4px;\n justify-content: start;\n align-items: center;\n`\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const TableContainer = styled.div`\n overflow-x: auto;\n`\n\nexport const Table = styled.table`\n width: 100%;\n border-collapse: separate;\n border-spacing: 0 8px;\n text-align: left;\n .rounded-row td:first-child, .rounded-row th:first-child{\n border-top-left-radius: 8px;\n border-bottom-left-radius: 8px;\n }\n .rounded-row td:last-child, .rounded-row th:last-child{\n border-top-right-radius: 8px;\n border-bottom-right-radius: 8px;\n }\n .rounded-row td:last-child div{\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n thead tr{\n background: ${theme.colors[\"neutral-900\"]};\n font-size: 16px;\n font-weight: 500;\n font-family: Circular Book Medium, sans-serif;\n line-height: 19px;\n }\n thead th{\n color: ${theme.colors.white};\n padding: 11px 16px;\n }\n tbody tr{\n background: ${theme.colors.white};\n color: ${theme.colors[\"neutral-900\"]};\n font-size: 16px;\n font-weight: 400;\n line-height: 19px;\n cursor:pointer;\n }\n tbody td{\n padding: 16px;\n }\n`\n\nexport const NothingContainer = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 300px;\n background: ${theme.colors.white};\n border-radius: 8px;\n`\n\nexport const NothingContent = styled.div`\n display: flex;\n align-items: center;\n flex-direction: column;\n gap: 20px;\n p{\n font-size: 16px;\n font-weight: 400;\n line-height: 19px;\n margin: 0;\n }\n`\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const TableContainer = styled.div`\n overflow-x: auto;\n`\n\nexport const Table = styled.table`\n width: 100%;\n border-collapse: separate;\n border-spacing: 0 8px;\n text-align: left;\n .rounded-row td:first-child, .rounded-row th:first-child{\n border-top-left-radius: 8px;\n border-bottom-left-radius: 8px;\n }\n .rounded-row td:last-child, .rounded-row th:last-child{\n border-top-right-radius: 8px;\n border-bottom-right-radius: 8px;\n }\n .rounded-row td:last-child div{\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n thead tr{\n background: ${theme.colors[\"neutral-900\"]};\n font-size: 16px;\n font-weight: 500;\n font-family: Circular Book Medium, sans-serif;\n line-height: 19px;\n }\n thead th{\n color: ${theme.colors.white};\n padding: 11px 16px;\n }\n tbody tr{\n background: ${theme.colors.white};\n color: ${theme.colors[\"neutral-900\"]};\n font-size: 16px;\n font-weight: 400;\n line-height: 19px;\n cursor:pointer;\n }\n tbody td{\n padding: 16px;\n }\n`\n\nexport const NothingContainer = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 300px;\n background: ${theme.colors.white};\n border-radius: 8px;\n`\n\nexport const NothingContent = styled.div`\n display: flex;\n align-items: center;\n flex-direction: column;\n gap: 20px;\n p{\n font-size: 16px;\n font-weight: 400;\n line-height: 19px;\n margin: 0;\n }\n`\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const Container = styled.div`\n display: flex;\n flex-direction: column;\n gap: 8px;\n`\n\nexport const RateContainer = styled.div`\n border-radius: 8px;\n padding: 16px;\n background: ${theme.colors[\"neutral-50\"]};\n display: flex;\n flex-direction: column;\n gap: 16px;\n`\n\nexport const Currencies = styled.div`\n display: flex;\n gap: 26px;\n align-items: center;\n height: 30px;\n .currency{\n display: flex;\n gap: 4px;\n align-items: center;\n font-weight: 500;\n font-family: Circular Book Medium, sans-serif;\n font-size: 16px;\n line-height: 19px;\n color: ${theme.colors[\"neutral-900\"]};\n }\n`\n\nexport const Rates = styled.div`\n display: flex;\n gap: 16px;\n align-items: center;\n p{\n margin: 0;\n font-weight: 500;\n font-family: Circular Book Medium, sans-serif;\n font-size: 16px;\n line-height: 19px;\n color: ${theme.colors[\"neutral-900\"]};\n }\n`\n\nexport const Dates = styled.div`\n display: flex;\n gap: 12px;\n font-weight: 400;\n font-size: 12px;\n line-height: 14px;\n color: ${theme.colors[\"neutral-600\"]};\n *{\n margin: 0;\n }\n`\n\nexport const EmptyContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 8px;\n align-items: center;\n justify-content: center;\n height: 300px;\n`","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const Container = styled.div`\n padding: 24px;\n //border-radius: 8px;\n gap: 24px;\n display: grid;\n grid-template-columns: calc(100%/5) auto auto auto calc(100%/5);\n //grid-template-columns: calc(100%/5) calc(100%/5) calc(100%/5) calc(100%/5) calc(100%/5);\n align-items: end;\n //background: ${theme.colors.white};\n \n`\n\nexport const FormField = styled.div`\n display: flex;\n gap: 12px;\n flex-direction: column;\n width: 100%;\n label{\n font-weight: 500;\n font-family: \"Circular Book Medium\", sans-serif;\n font-size: 16px;\n line-height: 19px;\n }\n`\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const InputLabel = styled.div`\n display: flex;\n flex-direction: column;\n gap: 4px;\n label{\n color:${theme.colors[\"primary-900\"]};\n font-weight: 500;\n font-family: \"Circular Book Medium\", sans-serif;\n }\n span{\n color: ${theme.colors[\"neutral-600\"]};\n font-size: 14px;\n line-height: 17px;\n font-weight: 400;\n }\n`\nexport const InputField = styled.input`\n border: none;\n left: 0;\n right: 0;\n height: 100%;\n position: absolute;\n font-size: 16px;\n padding: 0 16px;\n width: 100%;\n &:focus,&:focus-within{\n outline: none;\n }\n &::placeholder{\n color: ${theme.colors[\"neutral-200\"]};\n }\n &:disabled{\n background: ${theme.colors.white};\n cursor: not-allowed;\n pointer-events: none;\n }\n &:disabled &::placeholder{\n color: ${theme.colors[\"neutral-100\"]};\n }\n`\n\nexport const InputContainer = styled.div`\n position: relative;\n height: 50px;\n width: 100%; \n border-radius: 8px;\n border: 1px solid ${theme.colors[\"neutral-200\"]};\n display: flex;\n align-items: center;\n justify-content: space-between;\n overflow: hidden;\n transition: 300ms ease-out;\n &:hover{\n border: 1px solid ${theme.colors[\"primary-300\"]};\n }\n &:focus,&:focus-within{\n border: 1px solid ${theme.colors[\"primary-500\"]};\n outline: none;\n }\n &.success{\n border: 1px solid ${theme.colors[\"success-500\"]};\n }\n &.error{\n border: 1px solid ${theme.colors[\"error-500\"]};\n }\n .disabled{\n pointer-events: none;\n }\n`\n\nexport const ErrorMessage = styled.p`\n color: ${theme.colors[\"error-500\"]};\n margin: 0;\n display: flex;\n gap: 4px;\n justify-content: start;\n align-items: center;\n`\n","import React, { useRef, useState} from \"react\"\nimport {InputLabel, InputContainer, InputField, ErrorMessage} from \"./style\";\nimport {TextFieldProps} from \"./type\";\n\nconst TextField = (props:TextFieldProps) => {\n let {label,subtext,errMsg,disabled,required,value} = props\n\n // const [value,setValue]:any = useState('')\n const [borderColor,setBorderColor] = useState('')\n const [err,setErr] = useState(false)\n const textFieldRef = useRef() as any\n\n function validate(){\n if (value){\n setBorderColor('success')\n setErr(false)\n }else{\n if (required) {\n setBorderColor('error')\n setErr(true)\n }\n }\n }\n\n const style={\n display:'flex',\n flexDirection:'column',\n gap:'12px'\n } as any\n\n return (\n <div style={style}>\n {label &&\n <InputLabel>\n <label>{label}</label>\n {subtext && <span>{subtext}</span>}\n </InputLabel>\n }\n <InputContainer className={`${borderColor} ${disabled ? 'disabled' : ''}`}>\n <InputField ref={textFieldRef} onBlur={()=>{validate()}} {...props}/>\n </InputContainer>\n {!value && required && err &&\n <ErrorMessage>\n {/*exclamation-triangle*/}\n <svg width=\"16\" height=\"14\" viewBox=\"0 0 16 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M8.00006 9.66669C7.86821 9.66669 7.73931 9.70578 7.62968 9.77904C7.52005 9.85229 7.4346 9.95641 7.38414 10.0782C7.33368 10.2 7.32048 10.3341 7.3462 10.4634C7.37193 10.5927 7.43542 10.7115 7.52866 10.8048C7.62189 10.898 7.74068 10.9615 7.87 10.9872C7.99932 11.0129 8.13336 10.9997 8.25518 10.9493C8.377 10.8988 8.48112 10.8134 8.55437 10.7037C8.62763 10.5941 8.66673 10.4652 8.66673 10.3334C8.66673 10.1565 8.59649 9.98697 8.47146 9.86195C8.34644 9.73692 8.17687 9.66669 8.00006 9.66669ZM15.1134 10.6467L9.74673 1.31335C9.57326 1.00236 9.31992 0.743323 9.01285 0.562997C8.70579 0.382672 8.35615 0.287598 8.00006 0.287598C7.64396 0.287598 7.29433 0.382672 6.98726 0.562997C6.6802 0.743323 6.42686 1.00236 6.25339 1.31335L0.92006 10.6467C0.74059 10.9494 0.644155 11.294 0.640489 11.6459C0.636824 11.9978 0.726058 12.3444 0.899184 12.6507C1.07231 12.9571 1.3232 13.2123 1.62652 13.3907C1.92984 13.5691 2.27485 13.6643 2.62673 13.6667H13.3734C13.7281 13.6702 14.0773 13.5793 14.3853 13.4033C14.6933 13.2273 14.949 12.9726 15.126 12.6652C15.3031 12.3579 15.3953 12.009 15.3931 11.6542C15.3908 11.2995 15.2943 10.9518 15.1134 10.6467ZM13.9601 11.98C13.9016 12.084 13.8164 12.1704 13.7132 12.2302C13.61 12.29 13.4927 12.321 13.3734 12.32H2.62673C2.50747 12.321 2.39013 12.29 2.28694 12.2302C2.18375 12.1704 2.0985 12.084 2.04006 11.98C1.98155 11.8787 1.95074 11.7637 1.95074 11.6467C1.95074 11.5297 1.98155 11.4147 2.04006 11.3134L7.37339 1.98002C7.42934 1.87082 7.51433 1.77917 7.61902 1.71518C7.72371 1.65119 7.84403 1.61733 7.96673 1.61733C8.08942 1.61733 8.20974 1.65119 8.31443 1.71518C8.41912 1.77917 8.50411 1.87082 8.56006 1.98002L13.9267 11.3134C13.9929 11.4132 14.0309 11.5291 14.0367 11.6488C14.0426 11.7684 14.0161 11.8875 13.9601 11.9934V11.98ZM8.00006 4.33335C7.82325 4.33335 7.65368 4.40359 7.52866 4.52861C7.40363 4.65364 7.33339 4.82321 7.33339 5.00002V7.66669C7.33339 7.8435 7.40363 8.01307 7.52866 8.13809C7.65368 8.26311 7.82325 8.33335 8.00006 8.33335C8.17687 8.33335 8.34644 8.26311 8.47146 8.13809C8.59649 8.01307 8.66673 7.8435 8.66673 7.66669V5.00002C8.66673 4.82321 8.59649 4.65364 8.47146 4.52861C8.34644 4.40359 8.17687 4.33335 8.00006 4.33335Z\" fill=\"#F80000\"/>\n </svg>\n {errMsg ? errMsg : 'This field is required'}\n </ErrorMessage>\n }\n </div>\n )\n}\n\nexport default TextField\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const RibbonContainer = styled.div`\n border: 1px solid ${theme.colors[\"primary-500\"]};\n border-radius: 100px;\n display: inline-block;\n overflow: hidden;\n`\nexport const RibbonItem = styled.a`\n display: inline-block;\n background: ${theme.colors[\"neutral-900\"]};\n padding: 16px;\n text-decoration: none;\n color: ${theme.colors.white};\n &:hover{\n background:${theme.colors[\"primary-500\"]};\n }\n`\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const SearchBarContainer = styled.div`\n display: flex;\n gap: 8px;\n justify-content: space-between;\n`\n\nexport const SearchBox = styled.input`\n padding: 13px 16px;\n height: 48px;\n width: 100%;\n background: ${theme.colors.white};\n border-radius: 8px;\n border: 1px solid ${theme.colors[\"neutral-200\"]};\n font-size: 16px;\n &::placeholder{\n color: ${theme.colors[\"neutral-200\"]};\n }\n &:focus-within,&:focus{\n outline: none;\n }\n`\n\nexport const SearchButton = styled.button`\n width: 60px;\n height: 48px;\n background: ${theme.colors[\"primary-500\"]};\n color: ${theme.colors.white};\n padding: 12px 18px;\n border-radius: 8px;\n border: none;\n cursor: pointer;\n`\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const TitleBarContainer = styled.div`\n height: 72px;\n background: ${theme.colors[\"neutral-900\"]};\n padding: 11px 16px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n color:${theme.colors[\"neutral-50\"]};\n .search-term{\n font-size: 16px;\n font-weight: 500;\n font-family: Circular Book Medium, sans-serif;\n line-height: 19px;\n }\n .results-count{\n font-size: 14px;\n font-weight: 400;\n line-height: 17px;\n }\n`\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const ModalBackdrop = styled.div`\n position: absolute;\n width: 100%;\n height: 100%;\n left: 0;\n top: 0;\n background: rgb(0 0 0 / 40%);\n z-index: 9999;\n`\n\nexport const SideModalContainer = styled.div`\n position: absolute;\n right: 0;\n top: 0;\n width: 510px;\n height:100%;\n background: ${theme.colors.white};\n padding: 0;\n margin: 0;\n`\n\nexport const NavSection = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n background: ${theme.colors.white};\n border-bottom: 1px solid ${theme.colors[\"neutral-100\"]};\n padding: 32px 38px;\n`\n\nexport const Button = styled.button`\n background: transparent;\n border: none;\n cursor: pointer;\n display: flex;\n gap: 10px;\n align-items: center;\n font-size: 16px;\n &:disabled{\n cursor: not-allowed;\n color: ${theme.colors[\"neutral-100\"]};\n }\n`\n\nexport const ModalContent = styled.div`\n padding: 32px;\n`\n\nexport const ModalTitleArea = styled.div`\n display: flex;\n flex-direction: column;\n gap: 4px;\n color: ${theme.colors[\"neutral-900\"]};\n .title{\n font-size: 19px;\n font-weight: 700;\n margin: 0;\n font-style: normal;\n font-family: Circular, sans-serif;\n }\n .sub-text{\n font-size: 14px;\n font-weight: 400;\n margin: 0;\n font-style: normal;\n font-family: Circular, sans-serif;\n }\n`\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const SmallNewsCardContainer = styled.div`\n padding: 16px;\n border-radius: 8px;\n background: ${theme.colors.white};\n display: flex;\n align-items: start;\n position:relative;\n gap: 16px;\n a{\n text-decoration: none;\n }\n`\n\nexport const FeaturedImage = styled.img`\n width: 113px;\n height: 102px;\n border-radius: 8px;\n object-fit: cover;\n max-width: none;\n`\n\nexport const NewsTitle = styled.h6`\n font-size: 19px;\n font-weight: 500;\n line-height: 23px;\n letter-spacing: 0.02em;\n font-family: Circular Book Medium, sans-serif;\n color: ${theme.colors[\"neutral-900\"]};\n margin: 0;\n`\n\nexport const TitleSource = styled.div`\n display: flex;\n flex-direction: column;\n gap: 16px;\n`\nexport const SourceDate = styled.div`\n background: ${theme.colors[\"neutral-50\"]};\n border-radius: 8px;\n width: fit-content;\n position: absolute;\n bottom: 0;\n margin-bottom: 16px;\n .tag{\n color: ${theme.colors[\"neutral-900\"]};\n font-size: 14px;\n font-weight: 400;\n line-height: 17px;\n padding: 8px;\n display: inline-flex;\n }\n .tag:first-of-type{\n border-right: 2px solid ${theme.colors[\"neutral-100\"]};\n }\n`\n","import React, { Fragment, useEffect, useState, useRef } from \"react\";\nimport \"./Marquee.scss\";\n\ninterface MarqueeProps {\n /**\n * Inline style for the container div\n * Type: object\n * Default: {}\n */\n style?: React.CSSProperties;\n /**\n * Class name to style the container div\n * Type: string\n * Default: \"\"\n */\n className?: string;\n /**\n * Whether to play or pause the marquee\n * Type: boolean\n * Default: true\n */\n play?: boolean;\n /**\n * Whether to pause the marquee when hovered\n * Type: boolean\n * Default: false\n */\n pauseOnHover?: boolean;\n /**\n * Whether to pause the marquee when clicked\n * Type: boolean\n * Default: false\n */\n pauseOnClick?: boolean;\n /**\n * The direction the marquee is sliding\n * Type: \"left\" or \"right\"\n * Default: \"left\"\n */\n direction?: \"left\" | \"right\";\n /**\n * Speed calculated as pixels/second\n * Type: number\n * Default: 20\n */\n speed?: number;\n /**\n * Duration to delay the animation after render, in seconds\n * Type: number\n * Default: 0\n */\n delay?: number;\n /**\n * The number of times the marquee should loop, 0 is equivalent to infinite\n * Type: number\n * Default: 0\n */\n loop?: number;\n /**\n * Whether to show the gradient or not\n * Type: boolean\n * Default: true\n */\n gradient?: boolean;\n /**\n * The rgb color of the gradient as an array of length 3\n * Type: Array<number> of length 3\n * Default: [255, 255, 255]\n */\n gradientColor?: [number, number, number];\n /**\n * The width of the gradient on either side\n * Type: string\n * Default: 200\n */\n gradientWidth?: number | string;\n /**\n * A callback for when the marquee finishes scrolling and stops. Only calls if loop is non-zero.\n * Type: Function\n * Default: null\n */\n onFinish?: () => void;\n /**\n * A callback for when the marquee finishes a loop. Does not call if maximum loops are reached (use onFinish instead).\n * Type: Function\n * Default: null\n */\n onCycleComplete?: () => void;\n /**\n * The children rendered inside the marquee\n * Type: ReactNode\n * Default: null\n */\n children?: React.ReactNode;\n}\n\nconst Marquee: React.FC<MarqueeProps> = ({\n style = {},\n className = \"\",\n play = true,\n pauseOnHover = false,\n pauseOnClick = false,\n direction = \"left\",\n speed = 20,\n delay = 0,\n loop = 0,\n gradient = true,\n gradientColor = [255, 255, 255],\n gradientWidth = 200,\n onFinish,\n onCycleComplete,\n children,\n}) => {\n // React Hooks\n const [containerWidth, setContainerWidth] = useState(0);\n const [marqueeWidth, setMarqueeWidth] = useState(0);\n const [isMounted, setIsMounted] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n const marqueeRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!isMounted) return;\n\n const calculateWidth = () => {\n // Find width of container and width of marquee\n if (marqueeRef.current && containerRef.current) {\n setContainerWidth(containerRef.current.getBoundingClientRect().width);\n setMarqueeWidth(marqueeRef.current.getBoundingClientRect().width);\n }\n };\n\n calculateWidth();\n // Rerender on window resize\n window.addEventListener(\"resize\", calculateWidth);\n return () => {\n window.removeEventListener(\"resize\", calculateWidth);\n };\n }, [isMounted]);\n\n useEffect(() => {\n setIsMounted(true);\n }, []);\n\n // Gradient color in an unfinished rgba format\n const rgbaGradientColor = `rgba(${gradientColor[0]}, ${gradientColor[1]}, ${gradientColor[2]}`;\n\n // Animation duration\n const duration =\n marqueeWidth < containerWidth\n ? containerWidth / speed\n : marqueeWidth / speed;\n\n return (\n <Fragment>\n {!isMounted ? null : (\n <div\n ref={containerRef}\n style={{\n ...style,\n [\"--pause-on-hover\" as string]: !play || pauseOnHover ? \"paused\" : \"running\",\n [\"--pause-on-click\" as string]: !play || (pauseOnHover && !pauseOnClick) || pauseOnClick ? \"paused\" : \"running\",\n }}\n className={className + \" marquee-container\"}\n >\n {gradient && (\n <div\n style={{\n [\"--gradient-color\" as string]: `${rgbaGradientColor}, 1), ${rgbaGradientColor}, 0)`,\n [\"--gradient-width\" as string]:\n typeof gradientWidth === \"number\"\n ? `${gradientWidth}px`\n : gradientWidth,\n }}\n className=\"overlay\"\n />\n )}\n <div\n ref={marqueeRef}\n style={{\n [\"--play\" as string]: play ? \"running\" : \"paused\",\n [\"--direction\" as string]:\n direction === \"left\" ? \"normal\" : \"reverse\",\n [\"--duration\" as string]: `${duration}s`,\n [\"--delay\" as string]: `${delay}s`,\n [\"--iteration-count\" as string]: !!loop ? `${loop}` : \"infinite\",\n }}\n className=\"marquee\"\n onAnimationIteration={onCycleComplete}\n onAnimationEnd={onFinish}\n >\n {children}\n </div>\n <div\n style={{\n [\"--play\" as string]: play ? \"running\" : \"paused\",\n [\"--direction\" as string]:\n direction === \"left\" ? \"normal\" : \"reverse\",\n [\"--duration\" as string]: `${duration}s`,\n [\"--delay\" as string]: `${delay}s`,\n [\"--iteration-count\" as string]: !!loop ? `${loop}` : \"infinite\",\n }}\n className=\"marquee\"\n aria-hidden=\"true\"\n >\n {children}\n </div>\n </div>\n )}\n </Fragment>\n );\n};\n\nexport default Marquee;\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const TickerTrack = styled.div`\n // background: ${theme.colors[\"neutral-700\"]};\n color: ${theme.colors[\"neutral-50\"]};\n font-size: 14px;\n width: 100%;\n height: 33px;\n display: flex;\n align-items: center;\n span.success{\n color: ${theme.colors[\"success-500\"]} !important;\n }\n span.error{\n color: ${theme.colors[\"error-500\"]} !important;\n }\n span.market-item{\n padding: 0 16px;\n display: flex;\n align-items: center;\n gap: 4px;\n }\n span.market-item svg{\n padding: 0 1px;\n }\n .ticker-divider{\n height: 70%;\n width: 1px;\n background: white;\n margin-left: 4px;\n }\n .ticker-divider:last-of-type{\n height: 0;\n width: 0;\n }\n`\n\nexport const TickerItem = styled.div`\n border-left: 1px solid ${theme.colors[\"neutral-400\"]};\n`\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const TableContainer = styled.div`\n overflow-x: auto;\n`\n\nexport const Table = styled.table`\n width: 100%;\n border-collapse: separate;\n border-spacing: 0 8px;\n text-align: left;\n .rounded-row td:first-child, .rounded-row th:first-child{\n border-top-left-radius: 8px;\n border-bottom-left-radius: 8px;\n }\n .rounded-row td:last-child, .rounded-row th:last-child{\n border-top-right-radius: 8px;\n border-bottom-right-radius: 8px;\n }\n .rounded-row td:last-child div{\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n thead tr{\n background: ${theme.colors[\"neutral-900\"]};\n font-size: 16px;\n font-weight: 500;\n font-family: Circular Book Medium, sans-serif;\n line-height: 19px;\n }\n thead th{\n color: ${theme.colors.white};\n padding: 11px 16px;\n }\n tbody tr{\n background: ${theme.colors.white};\n color: ${theme.colors[\"neutral-900\"]};\n font-size: 16px;\n font-weight: 400;\n line-height: 19px;\n cursor:pointer;\n }\n tbody td{\n padding: 16px;\n }\n`\n\nexport const NothingContainer = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 300px;\n background: ${theme.colors.white};\n border-radius: 8px;\n`\n\nexport const NothingContent = styled.div`\n display: flex;\n align-items: center;\n flex-direction: column;\n gap: 20px;\n p{\n font-size: 16px;\n font-weight: 400;\n line-height: 19px;\n margin: 0;\n }\n`\n","import styled from \"styled-components\";\n\nexport const TableStyled = styled.table`\n.btn {\n padding: 0.6rem 1rem;\n background: transparent;\n border: 1px solid #1e1e1e;\n cursor: pointer;\n }\n \n .s-datatable-icon {\n width: 1rem;\n height: 1rem;\n fill: #1e1e1e;\n }\n \n \n \n .s-data-table {\n \n .s-data-table_header{\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n \n .s-data-table_head-selected {\n background: #f5f5f5;\n }\n \n \n table {\n width: 100%;\n border-collapse: collapse;\n border-spacing: 0;\n \n th {\n padding: 0.6rem 1rem;\n border-bottom: 1px solid #1e1e1e;\n text-align: left;\n font-size: 0.8rem;\n font-weight: bold;\n color: #1e1e1e;\n text-align: left;\n \n div{\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n }\n }\n \n td {\n padding: 0.6rem 1rem;\n text-align: left;\n font-size: 0.8rem;\n color: #1e1e1e;\n }\n \n \n \n }\n }\n`","import * as React from \"react\";\n\nfunction ChevronDownIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M12.53 16.28a.75.75 0 01-1.06 0l-7.5-7.5a.75.75 0 011.06-1.06L12 14.69l6.97-6.97a.75.75 0 111.06 1.06l-7.5 7.5z\",\n clipRule: \"evenodd\"\n }));\n}\n\nconst ForwardRef = React.forwardRef(ChevronDownIcon);\nexport default ForwardRef;","import * as React from \"react\";\n\nfunction XMarkIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M5.47 5.47a.75.75 0 011.06 0L12 10.94l5.47-5.47a.75.75 0 111.06 1.06L13.06 12l5.47 5.47a.75.75 0 11-1.06 1.06L12 13.06l-5.47 5.47a.75.75 0 01-1.06-1.06L10.94 12 5.47 6.53a.75.75 0 010-1.06z\",\n clipRule: \"evenodd\"\n }));\n}\n\nconst ForwardRef = React.forwardRef(XMarkIcon);\nexport default ForwardRef;","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const InputLabel = styled.div`\n display: flex;\n gap: 4px;\n flex-direction: column;\n label{\n color:${theme.colors[\"primary-900\"]};\n font-weight: 500;\n font-family: 'Circular Book Medium', sans-serif;\n }\n span{\n color: ${theme.colors[\"neutral-600\"]};\n }\n`\nexport const TextAreaField = styled.textarea`\n border: none;\n height: 75px;\n font-size: 16px;\n padding: 8px 16px;\n width: 100%;\n &:focus,&:focus-within{\n outline: none;\n }\n &::placeholder{\n color: ${theme.colors[\"neutral-200\"]};\n }\n &:disabled{\n background: ${theme.colors.white};\n cursor: not-allowed;\n pointer-events: none;\n }\n &:disabled &::placeholder{\n color: ${theme.colors[\"neutral-100\"]};\n }\n`\n\nexport const InputContainer = styled.div`\n position: relative;\n height: auto;\n width: 100%; \n border-radius: 8px;\n border: 1px solid ${theme.colors[\"neutral-200\"]};\n display: flex;\n align-items: center;\n justify-content: space-between;\n overflow: hidden;\n \n &:hover{\n border: 1px solid ${theme.colors[\"primary-300\"]};\n }\n &:focus,&:focus-within{\n border: 1px solid ${theme.colors[\"primary-500\"]};\n outline: none;\n }\n &.success{\n border: 1px solid ${theme.colors[\"success-500\"]};\n }\n &.error{\n border: 1px solid ${theme.colors[\"error-500\"]};\n }\n .disabled{\n pointer-events: none;\n }\n`\n\nexport const ErrorMessage = styled.p`\n color: ${theme.colors[\"error-500\"]};\n margin: 0;\n display: flex;\n gap: 4px;\n justify-content: start;\n align-items: center;\n`\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const Container = styled.div`\n display: flex;\n flex-direction: column;\n gap: 40px;\n position: relative;\n`\n\nexport const FieldSection = styled.div`\n display: flex;\n flex-direction: column;\n gap: 8px;\n color: ${theme.colors[\"neutral-900\"]};\n p{\n margin: 0;\n font-size: 14px;\n font-family: \"Circular Book Medium\",sans-serif;\n font-weight: 500;\n line-height: 17px;\n }\n .field-dets{\n padding: 16px;\n border-radius: 8px;\n background: ${theme.colors[\"neutral-50\"]};\n font-size: 16px;\n line-height: 19px;\n font-weight: 400;\n display: flex;\n align-items: center;\n gap: 16px;\n }\n .field-dets .bank-acct-dets{\n display: flex;\n gap: 8px;\n flex-direction: column;\n color: ${theme.colors[\"neutral-600\"]};\n font-size: 12px;\n line-height: 14px;\n }\n .field-dets .bank-acct-dets .acct-no{\n font-family: \"Circular Book Medium\",sans-serif;\n font-size: 16px;\n font-weight: 500;\n line-height: 19px;\n color: ${theme.colors[\"neutral-900\"]};\n }\n .field-dets .bank-acct-dets .bank-name{\n font-family: \"Circular Book Medium\",sans-serif;\n font-weight: 500;\n }\n .amt-dets{\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n .exch-rate{\n font-family: \"Circular Book\",sans-serif;\n font-weight: 400;\n font-size: 16px;\n line-height: 16px;\n color: #0F1B4C;\n }\n .amt-dets div{\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 8px;\n }\n`\n","export function moneyfy(number: number | bigint, currency:string){\n const numberFormat = new Intl.NumberFormat('en-US', {\n style:'currency',\n currency:currency,\n currencyDisplay:'code'\n })\n\n return numberFormat.format(number)\n}","import React from \"react\"\nimport {Container, FieldSection} from './style'\nimport provDef from './prov-default.png'\nimport {TxnDetsProps} from \"./type\";\nimport {moneyfy} from \"./helpers\";\n\nconst TransactionDetails = (props:TxnDetsProps) => {\n const {amount,provider,requestDate,requestedBy} = props\n\n return (\n <Container>\n <FieldSection>\n <p>Requested By</p>\n <div className=\"field-dets\">\n {requestedBy}\n </div>\n </FieldSection>\n <FieldSection>\n <p>Request Date</p>\n <div className=\"field-dets\">\n {requestDate}\n </div>\n </FieldSection>\n <FieldSection>\n <p>Amount</p>\n <div className=\"field-dets amt-dets\">\n <div>\n <img\n src={amount.baseFlag}\n alt=\"flag\"/>\n {`${moneyfy(amount.baseAmount,amount.baseCurr)}`}\n </div>\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M17.9982 10.0002C17.9982 9.73497 17.8928 9.48062 17.7053 9.29308C17.5178 9.10554 17.2634 9.00019 16.9982 9.00019H5.40819L7.70819 6.71019C7.89649 6.52188 8.00228 6.26649 8.00228 6.00019C8.00228 5.73388 7.89649 5.47849 7.70819 5.29019C7.51988 5.10188 7.26449 4.99609 6.99819 4.99609C6.73188 4.99609 6.47649 5.10188 6.28819 5.29019L2.28819 9.29019C2.14943 9.43081 2.05543 9.60938 2.01806 9.80337C1.98068 9.99736 2.00161 10.1981 2.07819 10.3802C2.15321 10.5628 2.2806 10.7191 2.44432 10.8295C2.60804 10.9398 2.80076 10.9992 2.99819 11.0002H16.9982C17.2634 11.0002 17.5178 10.8948 17.7053 10.7073C17.8928 10.5198 17.9982 10.2654 17.9982 10.0002ZM21.9182 13.6202C21.8432 13.4376 21.7158 13.2812 21.552 13.1709C21.3883 13.0606 21.1956 13.0012 20.9982 13.0002H6.99819C6.73297 13.0002 6.47862 13.1055 6.29108 13.2931C6.10354 13.4806 5.99819 13.735 5.99819 14.0002C5.99819 14.2654 6.10354 14.5198 6.29108 14.7073C6.47862 14.8948 6.73297 15.0002 6.99819 15.0002H18.5882L16.2882 17.2902C16.1945 17.3831 16.1201 17.4937 16.0693 17.6156C16.0185 17.7375 15.9924 17.8682 15.9924 18.0002C15.9924 18.1322 16.0185 18.2629 16.0693 18.3848C16.1201 18.5066 16.1945 18.6172 16.2882 18.7102C16.3812 18.8039 16.4917 18.8783 16.6136 18.9291C16.7355 18.9798 16.8662 19.006 16.9982 19.006C17.1302 19.006 17.2609 18.9798 17.3828 18.9291C17.5046 18.8783 17.6152 18.8039 17.7082 18.7102L21.7082 14.7102C21.8469 14.5696 21.9409 14.391 21.9783 14.197C22.0157 14.003 21.9948 13.8023 21.9182 13.6202Z\" fill=\"#BBCCE6\"/>\n </svg>\n <div>\n <img\n src={amount.exchFlag}\n alt=\"flag\"/>\n {`${moneyfy(amount.exchAmount,amount.exchCurr)}`}\n </div>\n </div>\n <p className=\"exch-rate\">{amount.baseCurr} 1.0000 = {`${amount.exchCurr} ${amount.exchRate}`}</p>\n </FieldSection>\n <FieldSection>\n <p>Provider</p>\n <div className=\"field-dets\">\n <img src={provider.logo ? provider.logo : provDef} alt=\"Provider logo\"/> {provider.name}\n </div>\n </FieldSection>\n {/*<FieldSection>\n <p>LP Funds Destination Bank Account</p>\n <div className=\"field-dets\">\n <img src={destAcctDets.bankLogo ? destAcctDets.bankLogo : bankDef} alt=\"Bank logo\"/>\n <div className=\"bank-acct-dets\">\n <span className=\"acct-no\">{destAcctDets.acctNo}</span>\n <span className=\"bank-name\">{destAcctDets.bankName}</span>\n <span>{destAcctDets.acctName}</span>\n <span>{destAcctDets.acctCurr}</span>\n </div>\n </div>\n </FieldSection>*/}\n </Container>\n )\n}\n\nexport default TransactionDetails\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const Container = styled.div`\n display: flex;\n flex-direction: column;\n gap: 40px;\n position: relative;\n`\n\nexport const FieldSection = styled.div`\n display: flex;\n flex-direction: column;\n gap: 8px;\n color: ${theme.colors[\"neutral-900\"]};\n p{\n margin: 0;\n font-size: 14px;\n font-family: \"Circular Book Medium\",sans-serif;\n font-weight: 500;\n line-height: 17px;\n }\n .field-dets{\n padding: 16px;\n border-radius: 8px;\n background: ${theme.colors[\"neutral-50\"]};\n font-size: 16px;\n line-height: 19px;\n font-weight: 400;\n display: flex;\n align-items: center;\n gap: 16px;\n }\n .bank-ctry-dets{\n gap: 8px;\n }\n .amt-dets{\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n .exch-rate{\n font-family: \"Circular Book\",sans-serif;\n font-weight: 400;\n font-size: 16px;\n line-height: 16px;\n color: #0F1B4C;\n }\n .amt-dets div{\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 8px;\n }\n`\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const Container = styled.div`\n display: flex;\n flex-direction: column;\n gap: 34px;\n`\n\nexport const ActionsContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 12px;\n h4{\n color: ${theme.colors[\"neutral-900\"]};\n font-weight: 500;\n font-size: 16px;\n line-height: 19px;\n font-family: Circular Book Medium,sans-serif;\n margin: 0;\n }\n`\n\nexport const ActionsListContainer = styled.div`\n padding: 8px;\n border-radius: 8px;\n border: 1px solid ${theme.colors[\"neutral-200\"]};\n display: flex;\n flex-direction: column;\n gap: 8px;\n height: 346px;\n overflow-y: auto;\n`\n\nexport const ActionItem = styled.div`\n padding: 8px;\n border-radius: 8px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n :hover{\n background: ${theme.colors[\"neutral-50\"]};\n }\n &.current-action{\n background: ${theme.colors[\"neutral-100\"]};\n }\n p{\n color: ${theme.colors[\"neutral-900\"]};\n margin: 0;\n font-weight: 400;\n font-size: 16px;\n line-height: 22.4px;\n }\n button{\n background: none;\n border: none;\n cursor: pointer;\n padding: 2px;\n }\n`\n\nexport const NoActionsContainer = styled.div`\n height: 346px;\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n gap:8px;\n p{\n margin: 0;\n font-weight: 400;\n font-size: 16px;\n line-height: 19px;\n color: #0F1B4C;\n }\n`\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const Container = styled.div`\n display: flex;\n flex-direction: column;\n gap: 34px;\n`\n\nexport const ActionsContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 12px;\n h4{\n color: ${theme.colors[\"neutral-900\"]};\n font-weight: 500;\n font-size: 16px;\n line-height: 19px;\n font-family: Circular Book Medium,sans-serif;\n margin: 0;\n }\n`\n\nexport const ActionsListContainer = styled.div`\n padding: 8px;\n border-radius: 8px;\n border: 1px solid ${theme.colors[\"neutral-200\"]};\n display: flex;\n flex-direction: column;\n gap: 8px;\n height: 346px;\n overflow-y: auto;\n`\n\nexport const ActionItem = styled.div`\n padding: 8px;\n border-radius: 8px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n :hover{\n background: ${theme.colors[\"neutral-50\"]};\n }\n &.current-action{\n background: ${theme.colors[\"neutral-100\"]};\n }\n p{\n color: ${theme.colors[\"neutral-900\"]};\n margin: 0;\n font-weight: 400;\n font-size: 16px;\n line-height: 22.4px;\n }\n button{\n background: none;\n border: none;\n cursor: pointer;\n padding: 2px;\n }\n`\n\nexport const NoActionsContainer = styled.div`\n height: 346px;\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n gap:8px;\n p{\n margin: 0;\n font-weight: 400;\n font-size: 16px;\n line-height: 19px;\n color: #0F1B4C;\n }\n`\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const TableContainer = styled.div`\n overflow-x: auto;\n`\n\nexport const Table = styled.table`\n width: 100%;\n border-collapse: separate;\n border-spacing: 0 8px;\n text-align: left;\n .rounded-row td:first-child, .rounded-row th:first-child{\n border-top-left-radius: 8px;\n border-bottom-left-radius: 8px;\n }\n .rounded-row td:last-child, .rounded-row th:last-child{\n border-top-right-radius: 8px;\n border-bottom-right-radius: 8px;\n }\n .rounded-row td:last-child div{\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n thead tr{\n background: ${theme.colors[\"neutral-900\"]};\n font-size: 16px;\n font-weight: 500;\n font-family: Circular Book Medium, sans-serif;\n line-height: 19px;\n }\n thead th{\n color: ${theme.colors.white};\n padding: 11px 16px;\n }\n tbody tr{\n background: ${theme.colors.white};\n color: ${theme.colors[\"neutral-900\"]};\n font-size: 16px;\n font-weight: 400;\n line-height: 19px;\n cursor:pointer;\n }\n tbody td{\n padding: 16px;\n }\n`\n\nexport const NothingContainer = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 300px;\n background: ${theme.colors.white};\n border-radius: 8px;\n`\n\nexport const NothingContent = styled.div`\n display: flex;\n align-items: center;\n flex-direction: column;\n gap: 20px;\n p{\n font-size: 16px;\n font-weight: 400;\n line-height: 19px;\n margin: 0;\n }\n`\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const TableContainer = styled.div`\n overflow-x: auto;\n`\n\nexport const Table = styled.table`\n width: 100%;\n border-collapse: separate;\n border-spacing: 0 8px;\n text-align: left;\n .rounded-row td:first-child, .rounded-row th:first-child{\n border-top-left-radius: 8px;\n border-bottom-left-radius: 8px;\n }\n .rounded-row td:last-child, .rounded-row th:last-child{\n border-top-right-radius: 8px;\n border-bottom-right-radius: 8px;\n }\n .rounded-row td:last-child div{\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n thead tr{\n background: ${theme.colors[\"neutral-900\"]};\n font-size: 16px;\n font-weight: 500;\n font-family: Circular Book Medium, sans-serif;\n line-height: 19px;\n }\n thead th{\n padding: 11px 16px;\n color: ${theme.colors.white};\n }\n tbody tr{\n background: ${theme.colors.white};\n color: ${theme.colors[\"neutral-900\"]};\n font-size: 16px;\n font-weight: 400;\n line-height: 19px;\n cursor:pointer;\n }\n tbody td{\n padding: 16px;\n }\n`\n\nexport const NothingContainer = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 300px;\n background: ${theme.colors.white};\n border-radius: 8px;\n`\n\nexport const NothingContent = styled.div`\n display: flex;\n align-items: center;\n flex-direction: column;\n gap: 20px;\n p{\n font-size: 16px;\n font-weight: 400;\n line-height: 19px;\n margin: 0;\n }\n`\n","import styled from \"styled-components\";\nimport theme from \"../../theme\";\n\nexport const WidgetTitleContainer = styled.div`\n display: flex;\n align-items: center;\n padding: 11px 16px;\n border-radius: 8px;\n height: 57px;\n //width: 100%;\n background: ${theme.colors[\"neutral-50\"]};\n color: ${theme.colors[\"neutral-900\"]};\n font-size: 16px;\n line-height: 19px;\n font-weight: 500;\n font-family: Circular Book Medium, sans-serif;\n`\n","import React from \"react\"\nimport {Container, TextArea} from \"./style\";\nimport {ActionFailedProps} from \"./type\";\n\nexport const ActionFailed = (props:ActionFailedProps) => {\n const {subText,headingText} = props\n\n return (\n <Container>\n <span className=\"mb8\">\n <svg width=\"64\" height=\"64\" viewBox=\"0 0 64 64\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clipPath=\"url(#clip0_453_10020)\">\n <path fillRule=\"evenodd\" clipRule=\"evenodd\"\n d=\"M30.181 8.068C30.781 8.023 31.388 8 32 8C45.246 8 56 18.754 56 32C56 45.246 45.246 56 32 56C18.754 56 8 45.246 8 32C8 31.388 8.02299 30.781 8.06799 30.181C8.92399 40.71 17.751 49 28.5 49C39.814 49 49 39.814 49 28.5C49 17.751 40.71 8.924 30.181 8.068Z\"\n fill=\"#FFD8D8\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\"\n d=\"M22.0992 24.9293L39.0697 41.8998C39.8504 42.6805 41.1181 42.6805 41.8987 41.8998C42.6794 41.1192 42.6794 39.8515 41.8987 39.0709L24.9282 22.1003C24.1475 21.3196 22.8798 21.3196 22.0992 22.1003C21.3185 22.8809 21.3185 24.1486 22.0992 24.9293Z\"\n fill=\"#F80000\" className=\"svg-checkmark\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\"\n d=\"M39.069 22.1006L22.0984 39.0712C21.3178 39.8519 21.3178 41.1195 22.0985 41.9002C22.8791 42.6808 24.1468 42.6808 24.9274 41.9002L41.898 24.9296C42.6786 24.149 42.6786 22.8813 41.898 22.1006C41.1174 21.32 39.8497 21.32 39.069 22.1006Z\"\n fill=\"#F80000\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\"\n d=\"M47.5567 47.5561C38.9713 56.1415 25.0299 56.1415 16.4445 47.5561C7.85911 38.9707 7.85912 25.0294 16.4445 16.444C25.0299 7.85855 38.9713 7.85853 47.5567 16.4439C54.3245 23.2118 55.7585 33.3076 51.8562 41.4848C51.3801 42.4819 51.8035 43.6758 52.7988 44.1518C53.795 44.627 54.9906 44.2035 55.4658 43.2074C60.0767 33.5443 58.3839 21.6132 50.3856 13.615C40.2389 3.46826 23.7622 3.46825 13.6155 13.6149C3.46882 23.7616 3.46883 40.2384 13.6155 50.3851C23.7622 60.5318 40.2389 60.5318 50.3856 50.3851C51.1663 49.6044 51.1663 48.3367 50.3856 47.5561C49.605 46.7754 48.3373 46.7754 47.5567 47.5561Z\"\n fill=\"#F80000\"/>\n </g>\n <defs>\n <clipPath id=\"clip0_453_10020\">\n <rect width=\"64\" height=\"64\" fill=\"white\"/>\n </clipPath>\n </defs>\n </svg>\n </span>\n <TextArea>\n {headingText &&\n <h3 className=\"heading-text\">{headingText}</h3>\n }\n {subText &&\n <p className=\"sub-text\">{subText}</p>\n }\n </TextArea>\n </Container>\n )\n}\n\nexport default ActionFailed\n","import React from \"react\";\nimport {TableContainer, Table, NothingContainer, NothingContent} from \"./style\";\nimport {AppActionsProps} from \"./type\";\n\nconst AppActionsTable = (props:AppActionsProps) => {\n const {actions,callback} = props\n return (\n <TableContainer>\n <Table>\n <thead>\n <tr className=\"rounded-row\">\n <th>Title</th>\n <th>Description</th>\n <th>Clearance Level</th>\n </tr>\n </thead>\n {actions && actions.length > 0 &&\n <tbody>\n {actions.map((action:any,index:number) => (\n <tr key={index} className=\"rounded-row\" onClick={()=>{callback(action)}}>\n <td>{action.title}</td>\n <td>{action.description}</td>\n <td>\n <div>\n {action.clearanceLevel}\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M10.3592 7.52685L6.58584 3.76019C6.52387 3.6977 6.45013 3.64811 6.36889 3.61426C6.28765 3.58041 6.20052 3.56299 6.11251 3.56299C6.0245 3.56299 5.93736 3.58041 5.85612 3.61426C5.77488 3.64811 5.70115 3.6977 5.63917 3.76019C5.51501 3.8851 5.44531 4.05406 5.44531 4.23019C5.44531 4.40631 5.51501 4.57528 5.63917 4.70019L8.93917 8.03352L5.63917 11.3335C5.51501 11.4584 5.44531 11.6274 5.44531 11.8035C5.44531 11.9796 5.51501 12.1486 5.63917 12.2735C5.70092 12.3365 5.77455 12.3866 5.8558 12.421C5.93705 12.4553 6.0243 12.4732 6.11251 12.4735C6.20071 12.4732 6.28797 12.4553 6.36922 12.421C6.45047 12.3866 6.5241 12.3365 6.58584 12.2735L10.3592 8.50685C10.4268 8.44443 10.4808 8.36866 10.5178 8.28432C10.5547 8.19999 10.5738 8.10892 10.5738 8.01685C10.5738 7.92479 10.5547 7.83372 10.5178 7.74938C10.4808 7.66505 10.4268 7.58928 10.3592 7.52685Z\" fill=\"#A4BBDD\"/>\n </svg>\n </div>\n </td>\n </tr>\n ))}\n </tbody>\n }\n </Table>\n {actions && actions.length == 0 &&\n <NothingContainer>\n <NothingContent>\n <svg width=\"65\" height=\"64\" viewBox=\"0 0 65 64\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clipPath=\"url(#clip0_651_2393)\">\n <path d=\"M39.5 6H25.5V14H39.5V6Z\" fill=\"#E8EEF7\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M41.5006 6C41.5006 4.895 40.6046 4 39.5 4H25.5C24.3954 4 23.4994 4.895 23.4994 6V14C23.4994 15.105 24.3954 16 25.5 16H39.5C40.6046 16 41.5006 15.105 41.5006 14V6ZM27.5006 8V12H37.4994V8H27.5006Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M49.5 56C49.5 54.896 50.396 54 51.5 54C52.604 54 53.5 54.896 53.5 56V58C53.5 59.105 52.605 60 51.5 60H13.5C12.395 60 11.5 59.105 11.5 58V10C11.5 8.895 12.395 8 13.5 8H25.5C26.605 8 27.5 8.895 27.5 10V12H37.5V10C37.5 8.895 38.395 8 39.5 8H51.5C52.605 8 53.5 8.895 53.5 10V48C53.5 49.104 52.604 50 51.5 50C50.396 50 49.5 49.104 49.5 48V12H41.5V14C41.5 15.105 40.605 16 39.5 16H25.5C24.395 16 23.5 15.105 23.5 14V12H15.5V56H49.5Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M23.5 27H41.5C42.604 27 43.5 26.104 43.5 25C43.5 23.896 42.604 23 41.5 23H23.5C22.396 23 21.5 23.896 21.5 25C21.5 26.104 22.396 27 23.5 27Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M23.5 38H41.5C42.604 38 43.5 37.104 43.5 36C43.5 34.896 42.604 34 41.5 34H23.5C22.396 34 21.5 34.896 21.5 36C21.5 37.104 22.396 38 23.5 38Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M23.5 49H41.5C42.604 49 43.5 48.104 43.5 47C43.5 45.896 42.604 45 41.5 45H23.5C22.396 45 21.5 45.896 21.5 47C21.5 48.104 22.396 49 23.5 49Z\" fill=\"#D2DDEE\"/>\n </g>\n <defs>\n <clipPath id=\"clip0_651_2393\">\n <rect width=\"64\" height=\"64\" fill=\"white\" transform=\"translate(0.5)\"/>\n </clipPath>\n </defs>\n </svg>\n <p>App actions will be displayed here when you have any.</p>\n </NothingContent>\n </NothingContainer>\n }\n </TableContainer>\n )\n}\n\nexport default AppActionsTable\n","import React from \"react\";\nimport {TableContainer, Table, NothingContainer, NothingContent} from \"./style\";\nimport {AppFormsProps} from \"./type\";\n\nconst AppFormsTable = (props:AppFormsProps) => {\n const {forms,callback} = props\n return (\n <TableContainer>\n <Table>\n <thead>\n <tr className=\"rounded-row\">\n <th>Form Name</th>\n <th>Form Code</th>\n <th>Authorised User Type</th>\n </tr>\n </thead>\n {forms && forms.length > 0 &&\n <tbody>\n {forms.map((form: { formName:string,formCode:string,userType:string },index:number) => (\n <tr key={index} className=\"rounded-row\" onClick={()=>{callback(form)}}>\n <td>{form.formName}</td>\n <td>{form.formCode}</td>\n <td>\n <div>\n {form.userType}\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M10.3592 7.52685L6.58584 3.76019C6.52387 3.6977 6.45013 3.64811 6.36889 3.61426C6.28765 3.58041 6.20052 3.56299 6.11251 3.56299C6.0245 3.56299 5.93736 3.58041 5.85612 3.61426C5.77488 3.64811 5.70115 3.6977 5.63917 3.76019C5.51501 3.8851 5.44531 4.05406 5.44531 4.23019C5.44531 4.40631 5.51501 4.57528 5.63917 4.70019L8.93917 8.03352L5.63917 11.3335C5.51501 11.4584 5.44531 11.6274 5.44531 11.8035C5.44531 11.9796 5.51501 12.1486 5.63917 12.2735C5.70092 12.3365 5.77455 12.3866 5.8558 12.421C5.93705 12.4553 6.0243 12.4732 6.11251 12.4735C6.20071 12.4732 6.28797 12.4553 6.36922 12.421C6.45047 12.3866 6.5241 12.3365 6.58584 12.2735L10.3592 8.50685C10.4268 8.44443 10.4808 8.36866 10.5178 8.28432C10.5547 8.19999 10.5738 8.10892 10.5738 8.01685C10.5738 7.92479 10.5547 7.83372 10.5178 7.74938C10.4808 7.66505 10.4268 7.58928 10.3592 7.52685Z\" fill=\"#A4BBDD\"/>\n </svg>\n </div>\n </td>\n </tr>\n ))}\n </tbody>\n }\n </Table>\n {forms && forms.length == 0 &&\n <NothingContainer>\n <NothingContent>\n <svg width=\"65\" height=\"64\" viewBox=\"0 0 65 64\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clipPath=\"url(#clip0_651_2393)\">\n <path d=\"M39.5 6H25.5V14H39.5V6Z\" fill=\"#E8EEF7\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M41.5006 6C41.5006 4.895 40.6046 4 39.5 4H25.5C24.3954 4 23.4994 4.895 23.4994 6V14C23.4994 15.105 24.3954 16 25.5 16H39.5C40.6046 16 41.5006 15.105 41.5006 14V6ZM27.5006 8V12H37.4994V8H27.5006Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M49.5 56C49.5 54.896 50.396 54 51.5 54C52.604 54 53.5 54.896 53.5 56V58C53.5 59.105 52.605 60 51.5 60H13.5C12.395 60 11.5 59.105 11.5 58V10C11.5 8.895 12.395 8 13.5 8H25.5C26.605 8 27.5 8.895 27.5 10V12H37.5V10C37.5 8.895 38.395 8 39.5 8H51.5C52.605 8 53.5 8.895 53.5 10V48C53.5 49.104 52.604 50 51.5 50C50.396 50 49.5 49.104 49.5 48V12H41.5V14C41.5 15.105 40.605 16 39.5 16H25.5C24.395 16 23.5 15.105 23.5 14V12H15.5V56H49.5Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M23.5 27H41.5C42.604 27 43.5 26.104 43.5 25C43.5 23.896 42.604 23 41.5 23H23.5C22.396 23 21.5 23.896 21.5 25C21.5 26.104 22.396 27 23.5 27Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M23.5 38H41.5C42.604 38 43.5 37.104 43.5 36C43.5 34.896 42.604 34 41.5 34H23.5C22.396 34 21.5 34.896 21.5 36C21.5 37.104 22.396 38 23.5 38Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M23.5 49H41.5C42.604 49 43.5 48.104 43.5 47C43.5 45.896 42.604 45 41.5 45H23.5C22.396 45 21.5 45.896 21.5 47C21.5 48.104 22.396 49 23.5 49Z\" fill=\"#D2DDEE\"/>\n </g>\n <defs>\n <clipPath id=\"clip0_651_2393\">\n <rect width=\"64\" height=\"64\" fill=\"white\" transform=\"translate(0.5)\"/>\n </clipPath>\n </defs>\n </svg>\n <p>App forms will be displayed here when you have any.</p>\n </NothingContent>\n </NothingContainer>\n }\n </TableContainer>\n )\n}\n\nexport default AppFormsTable\n","import React from \"react\";\nimport {TableContainer, Table, NothingContainer, NothingContent} from \"./style\";\nimport {AppModulesProps} from \"./type\";\n\nconst AppModulesTable = (props:AppModulesProps) => {\n const {modules,callback} = props\n return (\n <TableContainer>\n <Table>\n <thead>\n <tr className=\"rounded-row\">\n <th>Module Name</th>\n <th>Module Code</th>\n <th>Remarks</th>\n </tr>\n </thead>\n {modules && modules.length > 0 &&\n <tbody>\n {modules.map((action: { moduleName:string,moduleCode:string,remarks:string },index:number) => (\n <tr key={index} className=\"rounded-row\" onClick={()=>{callback(action)}}>\n <td>{action.moduleName}</td>\n <td>{action.moduleCode}</td>\n <td>\n <div>\n {action.remarks}\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M10.3592 7.52685L6.58584 3.76019C6.52387 3.6977 6.45013 3.64811 6.36889 3.61426C6.28765 3.58041 6.20052 3.56299 6.11251 3.56299C6.0245 3.56299 5.93736 3.58041 5.85612 3.61426C5.77488 3.64811 5.70115 3.6977 5.63917 3.76019C5.51501 3.8851 5.44531 4.05406 5.44531 4.23019C5.44531 4.40631 5.51501 4.57528 5.63917 4.70019L8.93917 8.03352L5.63917 11.3335C5.51501 11.4584 5.44531 11.6274 5.44531 11.8035C5.44531 11.9796 5.51501 12.1486 5.63917 12.2735C5.70092 12.3365 5.77455 12.3866 5.8558 12.421C5.93705 12.4553 6.0243 12.4732 6.11251 12.4735C6.20071 12.4732 6.28797 12.4553 6.36922 12.421C6.45047 12.3866 6.5241 12.3365 6.58584 12.2735L10.3592 8.50685C10.4268 8.44443 10.4808 8.36866 10.5178 8.28432C10.5547 8.19999 10.5738 8.10892 10.5738 8.01685C10.5738 7.92479 10.5547 7.83372 10.5178 7.74938C10.4808 7.66505 10.4268 7.58928 10.3592 7.52685Z\" fill=\"#A4BBDD\"/>\n </svg>\n </div>\n </td>\n </tr>\n ))}\n </tbody>\n }\n </Table>\n {modules && modules.length === 0 &&\n <NothingContainer>\n <NothingContent>\n <svg width=\"65\" height=\"64\" viewBox=\"0 0 65 64\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clipPath=\"url(#clip0_651_2393)\">\n <path d=\"M39.5 6H25.5V14H39.5V6Z\" fill=\"#E8EEF7\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M41.5006 6C41.5006 4.895 40.6046 4 39.5 4H25.5C24.3954 4 23.4994 4.895 23.4994 6V14C23.4994 15.105 24.3954 16 25.5 16H39.5C40.6046 16 41.5006 15.105 41.5006 14V6ZM27.5006 8V12H37.4994V8H27.5006Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M49.5 56C49.5 54.896 50.396 54 51.5 54C52.604 54 53.5 54.896 53.5 56V58C53.5 59.105 52.605 60 51.5 60H13.5C12.395 60 11.5 59.105 11.5 58V10C11.5 8.895 12.395 8 13.5 8H25.5C26.605 8 27.5 8.895 27.5 10V12H37.5V10C37.5 8.895 38.395 8 39.5 8H51.5C52.605 8 53.5 8.895 53.5 10V48C53.5 49.104 52.604 50 51.5 50C50.396 50 49.5 49.104 49.5 48V12H41.5V14C41.5 15.105 40.605 16 39.5 16H25.5C24.395 16 23.5 15.105 23.5 14V12H15.5V56H49.5Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M23.5 27H41.5C42.604 27 43.5 26.104 43.5 25C43.5 23.896 42.604 23 41.5 23H23.5C22.396 23 21.5 23.896 21.5 25C21.5 26.104 22.396 27 23.5 27Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M23.5 38H41.5C42.604 38 43.5 37.104 43.5 36C43.5 34.896 42.604 34 41.5 34H23.5C22.396 34 21.5 34.896 21.5 36C21.5 37.104 22.396 38 23.5 38Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M23.5 49H41.5C42.604 49 43.5 48.104 43.5 47C43.5 45.896 42.604 45 41.5 45H23.5C22.396 45 21.5 45.896 21.5 47C21.5 48.104 22.396 49 23.5 49Z\" fill=\"#D2DDEE\"/>\n </g>\n <defs>\n <clipPath id=\"clip0_651_2393\">\n <rect width=\"64\" height=\"64\" fill=\"white\" transform=\"translate(0.5)\"/>\n </clipPath>\n </defs>\n </svg>\n <p>App modules will be displayed here when you have any.</p>\n </NothingContent>\n </NothingContainer>\n }\n </TableContainer>\n )\n}\n\nexport default AppModulesTable\n","import React from \"react\"\nimport {Container, LogContent, LogTimeline, TimelineDot} from './style'\nimport {AuditProps} from \"./type\";\n\nconst AuditLog = (props:AuditProps) => {\n const {logDetails} = props\n\n return (\n <>\n {logDetails && logDetails.length > 0 && logDetails.map((log:{\n timestamp:string,\n user:string,\n logDescription:string,\n reference?:string\n },index) => (\n <Container key={index}>\n <div>\n <LogTimeline/>\n <TimelineDot/>\n </div>\n <LogContent>\n <p className=\"timestamp\">{log.timestamp}</p>\n <p>User: {log.user}</p>\n <p className=\"log-description\">{log.logDescription}</p>\n {log.reference && <p>Reference: {log.reference}</p>}\n </LogContent>\n </Container>\n ))}\n </>\n )\n}\n\nexport default AuditLog\n","import React, {useState} from \"react\"\nimport {AcctDets, ActionButtons, BankAcctsWrapper, Container} from \"./style\";\nimport Img from './default-bank.svg'\nimport {BankAcctsProps} from \"./type\";\nimport OutlineButton from \"../ButtonOutline/OutlineButton\";\nimport LoadingSpinner from \"../LoadingSpinner/LoadingSpinner\";\n\n \n\nconst BankAccounts = (props:BankAcctsProps) => {\n const {acctDets,loading} = props\n const [acctBtnNum,setAcctBtnNum]:any = useState(null) //index of the account whose button was clicked. Used to trigger the loading spinner for that account\n const [clickedBtn,setClickedBtn]:any = useState(null)\n\n return (\n <BankAcctsWrapper>\n {acctDets && acctDets.length > 0 && acctDets.map((acct:{\n acctNumber:number,\n bankName:string,\n acctName:string,\n currency:string,\n swiftCode:string\n isActive:boolean,\n bankLogo?:string,\n editFxn:(a?:any)=>void,\n deactivateFxn:(a?:any)=>void\n reactivateFxn:(a?:any)=>void\n },index:number) => (\n <Container key={index} className={acct.isActive ? 'is-active' : ''}>\n <div>\n <img src={acct.bankLogo ? acct.bankLogo : Img} alt=\"\"/>\n </div>\n <AcctDets>\n <h4 className=\"acct-no\">{acct.acctNumber}</h4>\n <p className=\"bank-name\">{acct.bankName}</p>\n <p>Account Name: {acct.acctName}</p>\n <p>Currency: {acct.currency}</p>\n <p>SWIFT Code: {acct.swiftCode}</p>\n <ActionButtons>\n <div>\n <OutlineButton size=\"sm\" variant=\"primary\" onClick={()=>{\n setAcctBtnNum(index)\n acct.editFxn(acct)\n setClickedBtn('edit')\n }} disabled={loading}>{clickedBtn === 'edit' && loading ? <LoadingSpinner/> : 'Edit'}</OutlineButton>\n </div>\n <div style={{width:100}}>\n {acct.isActive ? <OutlineButton size=\"sm\" variant=\"warning\" onClick={()=>{\n setAcctBtnNum(index)\n acct.deactivateFxn(acct)\n setClickedBtn('act')\n }} disabled={loading}>{clickedBtn === 'act' && acctBtnNum === index && loading ? <LoadingSpinner/> : 'Deactivate'}</OutlineButton> : <OutlineButton size=\"sm\" variant=\"success\" onClick={()=>{\n setAcctBtnNum(index)\n acct.reactivateFxn(acct)\n setClickedBtn('act')\n }} disabled={loading}>{clickedBtn === 'act' && acctBtnNum === index && loading ? <LoadingSpinner/> : 'Reactivate'}</OutlineButton>}\n </div>\n\n </ActionButtons>\n </AcctDets>\n </Container>\n ))}\n </BankAcctsWrapper>\n )\n}\n\nexport default BankAccounts\n","var img = \"data:image/svg+xml,%3c%3fxml version='1.0' standalone='no'%3f%3e%3c!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 20010904//EN' 'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'%3e%3csvg version='1.0' xmlns='http://www.w3.org/2000/svg' width='44.000000pt' height='44.000000pt' viewBox='0 0 44.000000 44.000000' preserveAspectRatio='xMidYMid meet'%3e%3cg transform='translate(0.000000%2c44.000000) scale(0.100000%2c-0.100000)'fill='black' stroke='none'%3e%3c/g%3e%3c/svg%3e\";\n export default img;","import React, {useState} from \"react\"\nimport {AccountInfo, Dets, Container, MapContainer} from \"./style\";\nimport defLogo from './img/default-bank.svg'\nimport defLogoSel from './img/default-bank-selected.svg'\nimport {BankSelectorProps} from \"./type\";\n\nconst BankSelector = (props:BankSelectorProps) => {\n const {bankAcct,selectedBank} = props\n const [selIndex,setSelIndex]:any = useState(null)\n\n return (\n <MapContainer>\n {bankAcct && bankAcct.length > 0 && bankAcct.map((acct:{\n bankLogo?:string,\n acctNo:number,\n bankName:string,\n acctName:string,\n currency:string\n },index:number) => (\n <Container key={index} className={`${selIndex == index ? 'active':''}`} onClick={()=>{\n selectedBank(acct)\n setSelIndex(index)\n }}>\n {!acct.bankLogo &&\n <div>\n <img src={selIndex == index ? defLogoSel : defLogo} alt=\"Default logo\"/>\n </div>\n }\n {acct.bankLogo &&\n <div>\n <img src={acct.bankLogo} alt=\"Bank logo\"/>\n </div>\n }\n <Dets>\n <AccountInfo>\n <p className=\"acct-no\">{acct.acctNo}</p>\n <p className=\"bank-name\">{acct.bankName}</p>\n <p className=\"acct-name\">{acct.acctName}</p>\n <p className=\"curr\">{acct.currency}</p>\n </AccountInfo>\n <div>\n {selIndex != index ?\n //gray check mark\n <svg width=\"24\" height=\"25\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M18.7099 7.70998C18.617 7.61625 18.5064 7.54186 18.3845 7.49109C18.2627 7.44032 18.132 7.41418 17.9999 7.41418C17.8679 7.41418 17.7372 7.44032 17.6154 7.49109C17.4935 7.54186 17.3829 7.61625 17.29 7.70998L9.83995 15.17L6.70995 12.03C6.61343 11.9367 6.49949 11.8634 6.37463 11.8142C6.24978 11.765 6.11645 11.7409 5.98227 11.7432C5.84809 11.7455 5.71568 11.7743 5.5926 11.8278C5.46953 11.8812 5.35819 11.9585 5.26495 12.055C5.17171 12.1515 5.0984 12.2654 5.04919 12.3903C4.99999 12.5152 4.97586 12.6485 4.97818 12.7827C4.9805 12.9168 5.00923 13.0493 5.06272 13.1723C5.11622 13.2954 5.19343 13.4067 5.28995 13.5L9.12995 17.34C9.22291 17.4337 9.33351 17.5081 9.45537 17.5589C9.57723 17.6096 9.70794 17.6358 9.83995 17.6358C9.97196 17.6358 10.1027 17.6096 10.2245 17.5589C10.3464 17.5081 10.457 17.4337 10.55 17.34L18.7099 9.17998C18.8115 9.08634 18.8925 8.97269 18.9479 8.84619C19.0033 8.71969 19.0319 8.58308 19.0319 8.44498C19.0319 8.30688 19.0033 8.17028 18.9479 8.04378C18.8925 7.91728 18.8115 7.80363 18.7099 7.70998V7.70998Z\" fill=\"#E8EEF7\"/>\n </svg>\n :\n //violet check mark\n <svg width=\"24\" height=\"25\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M18.7099 7.70998C18.617 7.61625 18.5064 7.54186 18.3845 7.49109C18.2627 7.44032 18.132 7.41418 17.9999 7.41418C17.8679 7.41418 17.7372 7.44032 17.6154 7.49109C17.4935 7.54186 17.3829 7.61625 17.29 7.70998L9.83995 15.17L6.70995 12.03C6.61343 11.9367 6.49949 11.8634 6.37463 11.8142C6.24978 11.765 6.11645 11.7409 5.98227 11.7432C5.84809 11.7455 5.71568 11.7743 5.5926 11.8278C5.46953 11.8812 5.35819 11.9585 5.26495 12.055C5.17171 12.1515 5.0984 12.2654 5.04919 12.3903C4.99999 12.5152 4.97586 12.6485 4.97818 12.7827C4.9805 12.9168 5.00923 13.0493 5.06272 13.1723C5.11622 13.2954 5.19343 13.4067 5.28995 13.5L9.12995 17.34C9.22291 17.4337 9.33351 17.5081 9.45537 17.5589C9.57723 17.6096 9.70794 17.6358 9.83995 17.6358C9.97196 17.6358 10.1027 17.6096 10.2245 17.5589C10.3464 17.5081 10.457 17.4337 10.55 17.34L18.7099 9.17998C18.8115 9.08634 18.8925 8.97269 18.9479 8.84619C19.0033 8.71969 19.0319 8.58308 19.0319 8.44498C19.0319 8.30688 19.0033 8.17028 18.9479 8.04378C18.8925 7.91728 18.8115 7.80363 18.7099 7.70998Z\" fill=\"#4040F2\"/>\n </svg>\n }\n </div>\n </Dets>\n </Container>\n ))}\n\n </MapContainer>\n )\n}\n\nexport default BankSelector\n","var img = \"data:image/svg+xml,%3c%3fxml version='1.0' standalone='no'%3f%3e%3c!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 20010904//EN' 'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'%3e%3csvg version='1.0' xmlns='http://www.w3.org/2000/svg' width='44.000000pt' height='44.000000pt' viewBox='0 0 44.000000 44.000000' preserveAspectRatio='xMidYMid meet'%3e%3cg transform='translate(0.000000%2c44.000000) scale(0.100000%2c-0.100000)'fill='black' stroke='none'%3e%3cpath d='M137 433 c46 -2 120 -2 166 0 45 1 8 3 -83 3 -91 0 -128 -2 -83 -3z'/%3e%3cpath d='M140 356 c-115 -63 -105 -71 80 -71 190 0 201 9 83 70 -43 22 -80 41-83 41 -3 1 -39 -17 -80 -40z'/%3e%3cpath d='M4 220 c0 -91 2 -128 3 -82 2 45 2 119 0 165 -1 45 -3 8 -3 -83z'/%3e%3cpath d='M434 220 c0 -91 2 -128 3 -82 2 45 2 119 0 165 -1 45 -3 8 -3 -83z'/%3e%3cpath d='M94 227 c-3 -8 -4 -32 -2 -53 2 -31 7 -39 23 -39 17 0 20 7 20 50 039 -4 50 -18 53 -9 2 -20 -3 -23 -11z'/%3e%3cpath d='M200 185 c0 -48 2 -55 20 -55 18 0 20 7 20 55 0 48 -2 55 -20 55 -180 -20 -7 -20 -55z'/%3e%3cpath d='M304 227 c-3 -8 -4 -32 -2 -53 2 -31 7 -39 23 -39 17 0 20 7 20 50 039 -4 50 -18 53 -9 2 -20 -3 -23 -11z'/%3e%3cpath d='M63 75 c-11 -31 13 -36 163 -33 141 3 149 4 149 23 0 19 -8 20 -15323 -132 2 -153 0 -159 -13z'/%3e%3cpath d='M137 3 c46 -2 120 -2 166 0 45 1 8 3 -83 3 -91 0 -128 -2 -83 -3z'/%3e%3c/g%3e%3c/svg%3e\";\n export default img;","var img = \"data:image/svg+xml,%3c%3fxml version='1.0' standalone='no'%3f%3e%3c!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 20010904//EN' 'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'%3e%3csvg version='1.0' xmlns='http://www.w3.org/2000/svg' width='44.000000pt' height='44.000000pt' viewBox='0 0 44.000000 44.000000' preserveAspectRatio='xMidYMid meet'%3e%3cg transform='translate(0.000000%2c44.000000) scale(0.100000%2c-0.100000)'fill='black' stroke='none'%3e%3c/g%3e%3c/svg%3e\";\n export default img;","import React from \"react\"\nimport {BreadcrumbContainer} from \"./style\";\nimport {BreadcrumbType} from \"./type\";\n\nconst BreadcrumbBar = (props:BreadcrumbType) => {\n const {pages} = props\n\n return (\n <BreadcrumbContainer {...props}>\n {pages && pages.length > 0 && pages.map((page:{label:string,url?:string},index:number) => (\n <div key={index}>\n {index < pages.length - 1 &&\n <>\n {index > 0 &&\n <svg width=\"6\" height=\"9\" viewBox=\"0 0 6 9\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M5.36003 4.02667L1.5867 0.260004C1.52472 0.197518 1.45099 0.147922 1.36975 0.114077C1.28851 0.0802308 1.20137 0.0628052 1.11336 0.0628052C1.02535 0.0628052 0.938217 0.0802308 0.856977 0.114077C0.775738 0.147922 0.702004 0.197518 0.640029 0.260004C0.515861 0.384912 0.446167 0.55388 0.446167 0.730004C0.446167 0.906128 0.515861 1.0751 0.640029 1.2L3.94003 4.53334L0.640029 7.83334C0.515861 7.95825 0.446167 8.12721 0.446167 8.30334C0.446167 8.47946 0.515861 8.64843 0.640029 8.77334C0.701772 8.83633 0.775402 8.88644 0.856652 8.92077C0.937902 8.9551 1.02516 8.97297 1.11336 8.97334C1.20157 8.97297 1.28882 8.9551 1.37007 8.92077C1.45132 8.88644 1.52495 8.83633 1.5867 8.77334L5.36003 5.00667C5.4277 4.94424 5.4817 4.86847 5.51864 4.78414C5.55558 4.69981 5.57465 4.60874 5.57465 4.51667C5.57465 4.4246 5.55558 4.33353 5.51864 4.2492C5.4817 4.16487 5.4277 4.0891 5.36003 4.02667V4.02667Z\" fill=\"#A4BBDD\"/>\n </svg>\n }\n <a href={page.url}>{page.label}</a>\n </>\n }\n {index == pages.length - 1 &&\n <>\n {index > 0 &&\n <svg width=\"6\" height=\"9\" viewBox=\"0 0 6 9\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M5.36003 4.02667L1.5867 0.260004C1.52472 0.197518 1.45099 0.147922 1.36975 0.114077C1.28851 0.0802308 1.20137 0.0628052 1.11336 0.0628052C1.02535 0.0628052 0.938217 0.0802308 0.856977 0.114077C0.775738 0.147922 0.702004 0.197518 0.640029 0.260004C0.515861 0.384912 0.446167 0.55388 0.446167 0.730004C0.446167 0.906128 0.515861 1.0751 0.640029 1.2L3.94003 4.53334L0.640029 7.83334C0.515861 7.95825 0.446167 8.12721 0.446167 8.30334C0.446167 8.47946 0.515861 8.64843 0.640029 8.77334C0.701772 8.83633 0.775402 8.88644 0.856652 8.92077C0.937902 8.9551 1.02516 8.97297 1.11336 8.97334C1.20157 8.97297 1.28882 8.9551 1.37007 8.92077C1.45132 8.88644 1.52495 8.83633 1.5867 8.77334L5.36003 5.00667C5.4277 4.94424 5.4817 4.86847 5.51864 4.78414C5.55558 4.69981 5.57465 4.60874 5.57465 4.51667C5.57465 4.4246 5.55558 4.33353 5.51864 4.2492C5.4817 4.16487 5.4277 4.0891 5.36003 4.02667Z\"\n fill=\"#070B12\"/>\n </svg>\n }\n {page.label}\n </>\n }\n\n </div>\n ))\n\n }\n </BreadcrumbContainer>\n )\n}\n\nexport default BreadcrumbBar\n","import React from \"react\";\nimport {TableContainer, Table, NothingContainer, NothingContent, BrokerCountry} from \"./style\";\nimport {BrokersProps} from \"./type\";\n\nconst BrokersTable = (props:BrokersProps) => {\n const {brokers,callback} = props\n return (\n <TableContainer>\n <Table>\n <thead>\n <tr className=\"rounded-row\">\n <th>Name</th>\n <th>Email</th>\n <th>Phone</th>\n <th>Country</th>\n </tr>\n </thead>\n {brokers && brokers.length > 0 &&\n <tbody>\n {brokers.map((broker: { name:string, email:string, phone:string, country:string, countryFlag?:string },index:number) => (\n <tr key={index} className=\"rounded-row\" onClick={()=>{callback(broker)}}>\n <td>{broker.name}</td>\n <td>{broker.email}</td>\n <td>{broker.phone}</td>\n <td>\n <div>\n <BrokerCountry>\n {broker.countryFlag && <img src={broker.countryFlag} alt=\"Country flag\"/>}\n {broker.country}\n </BrokerCountry>\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M10.3592 7.52685L6.58584 3.76019C6.52387 3.6977 6.45013 3.64811 6.36889 3.61426C6.28765 3.58041 6.20052 3.56299 6.11251 3.56299C6.0245 3.56299 5.93736 3.58041 5.85612 3.61426C5.77488 3.64811 5.70115 3.6977 5.63917 3.76019C5.51501 3.8851 5.44531 4.05406 5.44531 4.23019C5.44531 4.40631 5.51501 4.57528 5.63917 4.70019L8.93917 8.03352L5.63917 11.3335C5.51501 11.4584 5.44531 11.6274 5.44531 11.8035C5.44531 11.9796 5.51501 12.1486 5.63917 12.2735C5.70092 12.3365 5.77455 12.3866 5.8558 12.421C5.93705 12.4553 6.0243 12.4732 6.11251 12.4735C6.20071 12.4732 6.28797 12.4553 6.36922 12.421C6.45047 12.3866 6.5241 12.3365 6.58584 12.2735L10.3592 8.50685C10.4268 8.44443 10.4808 8.36866 10.5178 8.28432C10.5547 8.19999 10.5738 8.10892 10.5738 8.01685C10.5738 7.92479 10.5547 7.83372 10.5178 7.74938C10.4808 7.66505 10.4268 7.58928 10.3592 7.52685Z\" fill=\"#A4BBDD\"/>\n </svg>\n </div>\n </td>\n </tr>\n ))}\n </tbody>\n }\n </Table>\n {brokers && brokers.length == 0 &&\n <NothingContainer>\n <NothingContent>\n <svg width=\"65\" height=\"64\" viewBox=\"0 0 65 64\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clipPath=\"url(#clip0_651_2393)\">\n <path d=\"M39.5 6H25.5V14H39.5V6Z\" fill=\"#E8EEF7\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M41.5006 6C41.5006 4.895 40.6046 4 39.5 4H25.5C24.3954 4 23.4994 4.895 23.4994 6V14C23.4994 15.105 24.3954 16 25.5 16H39.5C40.6046 16 41.5006 15.105 41.5006 14V6ZM27.5006 8V12H37.4994V8H27.5006Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M49.5 56C49.5 54.896 50.396 54 51.5 54C52.604 54 53.5 54.896 53.5 56V58C53.5 59.105 52.605 60 51.5 60H13.5C12.395 60 11.5 59.105 11.5 58V10C11.5 8.895 12.395 8 13.5 8H25.5C26.605 8 27.5 8.895 27.5 10V12H37.5V10C37.5 8.895 38.395 8 39.5 8H51.5C52.605 8 53.5 8.895 53.5 10V48C53.5 49.104 52.604 50 51.5 50C50.396 50 49.5 49.104 49.5 48V12H41.5V14C41.5 15.105 40.605 16 39.5 16H25.5C24.395 16 23.5 15.105 23.5 14V12H15.5V56H49.5Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M23.5 27H41.5C42.604 27 43.5 26.104 43.5 25C43.5 23.896 42.604 23 41.5 23H23.5C22.396 23 21.5 23.896 21.5 25C21.5 26.104 22.396 27 23.5 27Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M23.5 38H41.5C42.604 38 43.5 37.104 43.5 36C43.5 34.896 42.604 34 41.5 34H23.5C22.396 34 21.5 34.896 21.5 36C21.5 37.104 22.396 38 23.5 38Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M23.5 49H41.5C42.604 49 43.5 48.104 43.5 47C43.5 45.896 42.604 45 41.5 45H23.5C22.396 45 21.5 45.896 21.5 47C21.5 48.104 22.396 49 23.5 49Z\" fill=\"#D2DDEE\"/>\n </g>\n <defs>\n <clipPath id=\"clip0_651_2393\">\n <rect width=\"64\" height=\"64\" fill=\"white\" transform=\"translate(0.5)\"/>\n </clipPath>\n </defs>\n </svg>\n <p>Brokers will be displayed here when you have any.</p>\n </NothingContent>\n </NothingContainer>\n }\n </TableContainer>\n )\n}\n\nexport default BrokersTable\n","import dayjs from \"dayjs\";\n\n//used to return 'today' or 'yesterday' or date where needed\nexport function dayDiff(rateDate:string){\n //format dates\n const todayFrmt = dayjs(new Date()).format('YYYY M D')\n const newDayFrmt = dayjs(rateDate).format('YYYY M D')\n\n const today = dayjs(todayFrmt)\n const newDay = dayjs(newDayFrmt)\n\n // return today.diff(newDay)+' '\n\n if (today.diff(newDay) === 0){\n return 'today, '\n }\n\n if (today.diff(newDay) === 662774400000){\n return 'yesterday, '\n }\n\n if (today.diff(newDay) > 86400000){\n return '' //older than yesterday\n }\n}\n\n","import dayjs from \"dayjs\";\n\n//used to return 'today' or 'yesterday' or date where needed\nexport function dayDiff(rateDate:string){\n //format dates\n const todayFrmt = dayjs(new Date()).format('YYYY M D')\n const newDayFrmt = dayjs(rateDate).format('YYYY M D')\n\n const today = dayjs(todayFrmt)\n const newDay = dayjs(newDayFrmt)\n\n // return today.diff(newDay)+' '\n\n if (today.diff(newDay) === 0){\n return 'today, '\n }\n\n if (today.diff(newDay) === 662774400000){\n return 'yesterday, '\n }\n\n if (today.diff(newDay) > 86400000){\n return '' //older than yesterday\n }\n}\n\n","import dayjs from \"dayjs\";\n\n//used to return 'today' or 'yesterday' or date where needed\nexport function dayDiff(rateDate:string){\n //format dates\n const todayFrmt = dayjs(new Date()).format('YYYY M D')\n const newDayFrmt = dayjs(rateDate).format('YYYY M D')\n\n const today = dayjs(todayFrmt)\n const newDay = dayjs(newDayFrmt)\n\n // return today.diff(newDay)+' '\n\n if (today.diff(newDay) === 0){\n return 'today, '\n }\n\n if (today.diff(newDay) === 662774400000){\n return 'yesterday, '\n }\n\n if (today.diff(newDay) > 86400000){\n return '' //older than yesterday\n }\n}\n\n","import React from \"react\";\nimport {\n ConsentContainer,\n ConsentHeading,\n ConsentNotice,\n ConsentDesc,\n ConsentButton,\n ConsentButtonsContainer\n} from \"./style\";\nimport {CookieConsentProps} from \"./type\";\n\nconst CookieConsent = (props:CookieConsentProps) => {\n const {closeFxn,declineFxn,acceptFxn} = props\n\n return (\n <ConsentContainer>\n <ConsentNotice>\n <div>\n 🍪\n </div>\n <div>\n <ConsentHeading>Privacy Notice</ConsentHeading>\n <ConsentDesc>This website uses cookie to improve your web experience. By using the site, you agree to the use of cookies.</ConsentDesc>\n </div>\n </ConsentNotice>\n <ConsentButtonsContainer>\n <ConsentButton onClick={()=>{acceptFxn()}}>Accept</ConsentButton>\n <ConsentButton onClick={()=>{declineFxn()}}>Decline</ConsentButton>\n {closeFxn &&\n <ConsentButton onClick={()=>{closeFxn()}}>\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M8.40994 6.99994L12.7099 2.70994C12.8982 2.52164 13.004 2.26624 13.004 1.99994C13.004 1.73364 12.8982 1.47825 12.7099 1.28994C12.5216 1.10164 12.2662 0.99585 11.9999 0.99585C11.7336 0.99585 11.4782 1.10164 11.2899 1.28994L6.99994 5.58994L2.70994 1.28994C2.52164 1.10164 2.26624 0.99585 1.99994 0.99585C1.73364 0.99585 1.47824 1.10164 1.28994 1.28994C1.10164 1.47825 0.995847 1.73364 0.995847 1.99994C0.995847 2.26624 1.10164 2.52164 1.28994 2.70994L5.58994 6.99994L1.28994 11.2899C1.19621 11.3829 1.12182 11.4935 1.07105 11.6154C1.02028 11.7372 0.994141 11.8679 0.994141 11.9999C0.994141 12.132 1.02028 12.2627 1.07105 12.3845C1.12182 12.5064 1.19621 12.617 1.28994 12.7099C1.3829 12.8037 1.4935 12.8781 1.61536 12.9288C1.73722 12.9796 1.86793 13.0057 1.99994 13.0057C2.13195 13.0057 2.26266 12.9796 2.38452 12.9288C2.50638 12.8781 2.61698 12.8037 2.70994 12.7099L6.99994 8.40994L11.2899 12.7099C11.3829 12.8037 11.4935 12.8781 11.6154 12.9288C11.7372 12.9796 11.8679 13.0057 11.9999 13.0057C12.132 13.0057 12.2627 12.9796 12.3845 12.9288C12.5064 12.8781 12.617 12.8037 12.7099 12.7099C12.8037 12.617 12.8781 12.5064 12.9288 12.3845C12.9796 12.2627 13.0057 12.132 13.0057 11.9999C13.0057 11.8679 12.9796 11.7372 12.9288 11.6154C12.8781 11.4935 12.8037 11.3829 12.7099 11.2899L8.40994 6.99994Z\" fill=\"#4040F2\"/>\n </svg>\n </ConsentButton>\n }\n </ConsentButtonsContainer>\n </ConsentContainer>\n )\n}\n\nexport default CookieConsent\n","import React from \"react\";\nimport {TableContainer, Table, NothingContainer, NothingContent} from \"./style\";\nimport {CurrencyPairsProps} from \"./type\";\n\nconst CurrencyPairsTable = (props:CurrencyPairsProps) => {\n const {pairs,callback} = props\n return (\n <TableContainer>\n <Table>\n <thead>\n <tr className=\"rounded-row\">\n <th>Pair Code</th>\n <th>Base Currency</th>\n <th>Exchange Currency</th>\n <th>Pair Name</th>\n </tr>\n </thead>\n {pairs && pairs.length > 0 &&\n <tbody>\n {pairs.map(( pair: { pairCode:string,baseCurrency:string,baseFlag:string,exchangeCurrency:string,exchangeFlag:string,pairName:string },index:number) => (\n <tr key={index} className=\"rounded-row\" onClick={()=>{callback(pair)}}>\n <td>{pair.pairCode}</td>\n <td>\n <div style={{display:'flex',gap:'8px'}}>\n {pair.baseFlag ? <img src={pair.baseFlag} alt=\"Base currency flag\"/> : ''}\n {pair.baseCurrency}\n </div>\n </td>\n <td>\n <div style={{display:'flex',gap:'8px'}}>\n {pair.exchangeFlag ? <img src={pair.exchangeFlag} alt=\"Exchange currency flag\"/> : ''}\n {pair.exchangeCurrency}\n </div>\n </td>\n <td>\n <div>\n {pair.pairName ? pair.pairName : '-'}\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M10.3592 7.52685L6.58584 3.76019C6.52387 3.6977 6.45013 3.64811 6.36889 3.61426C6.28765 3.58041 6.20052 3.56299 6.11251 3.56299C6.0245 3.56299 5.93736 3.58041 5.85612 3.61426C5.77488 3.64811 5.70115 3.6977 5.63917 3.76019C5.51501 3.8851 5.44531 4.05406 5.44531 4.23019C5.44531 4.40631 5.51501 4.57528 5.63917 4.70019L8.93917 8.03352L5.63917 11.3335C5.51501 11.4584 5.44531 11.6274 5.44531 11.8035C5.44531 11.9796 5.51501 12.1486 5.63917 12.2735C5.70092 12.3365 5.77455 12.3866 5.8558 12.421C5.93705 12.4553 6.0243 12.4732 6.11251 12.4735C6.20071 12.4732 6.28797 12.4553 6.36922 12.421C6.45047 12.3866 6.5241 12.3365 6.58584 12.2735L10.3592 8.50685C10.4268 8.44443 10.4808 8.36866 10.5178 8.28432C10.5547 8.19999 10.5738 8.10892 10.5738 8.01685C10.5738 7.92479 10.5547 7.83372 10.5178 7.74938C10.4808 7.66505 10.4268 7.58928 10.3592 7.52685Z\" fill=\"#A4BBDD\"/>\n </svg>\n </div>\n </td>\n </tr>\n ))}\n </tbody>\n }\n </Table>\n {pairs && pairs.length === 0 &&\n <NothingContainer>\n <NothingContent>\n <svg width=\"65\" height=\"64\" viewBox=\"0 0 65 64\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clipPath=\"url(#clip0_651_2393)\">\n <path d=\"M39.5 6H25.5V14H39.5V6Z\" fill=\"#E8EEF7\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M41.5006 6C41.5006 4.895 40.6046 4 39.5 4H25.5C24.3954 4 23.4994 4.895 23.4994 6V14C23.4994 15.105 24.3954 16 25.5 16H39.5C40.6046 16 41.5006 15.105 41.5006 14V6ZM27.5006 8V12H37.4994V8H27.5006Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M49.5 56C49.5 54.896 50.396 54 51.5 54C52.604 54 53.5 54.896 53.5 56V58C53.5 59.105 52.605 60 51.5 60H13.5C12.395 60 11.5 59.105 11.5 58V10C11.5 8.895 12.395 8 13.5 8H25.5C26.605 8 27.5 8.895 27.5 10V12H37.5V10C37.5 8.895 38.395 8 39.5 8H51.5C52.605 8 53.5 8.895 53.5 10V48C53.5 49.104 52.604 50 51.5 50C50.396 50 49.5 49.104 49.5 48V12H41.5V14C41.5 15.105 40.605 16 39.5 16H25.5C24.395 16 23.5 15.105 23.5 14V12H15.5V56H49.5Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M23.5 27H41.5C42.604 27 43.5 26.104 43.5 25C43.5 23.896 42.604 23 41.5 23H23.5C22.396 23 21.5 23.896 21.5 25C21.5 26.104 22.396 27 23.5 27Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M23.5 38H41.5C42.604 38 43.5 37.104 43.5 36C43.5 34.896 42.604 34 41.5 34H23.5C22.396 34 21.5 34.896 21.5 36C21.5 37.104 22.396 38 23.5 38Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M23.5 49H41.5C42.604 49 43.5 48.104 43.5 47C43.5 45.896 42.604 45 41.5 45H23.5C22.396 45 21.5 45.896 21.5 47C21.5 48.104 22.396 49 23.5 49Z\" fill=\"#D2DDEE\"/>\n </g>\n <defs>\n <clipPath id=\"clip0_651_2393\">\n <rect width=\"64\" height=\"64\" fill=\"white\" transform=\"translate(0.5)\"/>\n </clipPath>\n </defs>\n </svg>\n <p>Currency pairs will be displayed here when you have any.</p>\n </NothingContent>\n </NothingContainer>\n }\n </TableContainer>\n )\n}\n\nexport default CurrencyPairsTable\n","import React from \"react\"\nimport {DropShadowCard} from \"./style\";\nimport {CardType} from \"./type\";\n\nconst DropShadows = (props:CardType) => {\n const {children,type} = props\n return (\n <DropShadowCard className={type} {...props}>\n {children}\n </DropShadowCard>\n )\n}\n\nexport default DropShadows\n","import React from \"react\"\nimport {CurrencyName, RateContainer, Rates} from './style'\nimport {ExchangeRatesProps} from \"./type\";\n\nconst ExchangeRates = (props:ExchangeRatesProps) => {\n const {baseCurr,baseCurrShortName,source,lastUpdated,exchangeCurrs} = props\n return (\n <>\n {exchangeCurrs && exchangeCurrs.length > 0 &&\n <RateContainer>\n <CurrencyName>{baseCurr} ({baseCurrShortName})</CurrencyName>\n <Rates>\n {exchangeCurrs.map((exchCurr:{currName:string,rate:number,currFlag:string},index:number)=>(\n <div key={index} className=\"exchange-currency\">\n <img src={exchCurr.currFlag} alt=\"\"/>\n {exchCurr.currName} 1 = {exchCurr.rate}\n </div>\n ))}\n </Rates>\n <p className=\"last-updated\">Last updated on {lastUpdated} | Source: {source}</p>\n </RateContainer>\n }\n </>\n )\n}\n\nexport default ExchangeRates\n","import React from \"react\";\nimport {FooterArea, FooterContainer, CopyrightArea, CopyrightText, AboutSSX, SSXInfo} from \"./style\";\n\nconst Footer = () => {\n return (\n <FooterContainer>\n <FooterArea>\n <AboutSSX>\n {/*<img style={{marginBottom:'16px'}} src={SSXLogo} alt=\"SSX Logo\"/>*/}\n <img\n src=\"https://res.cloudinary.com/dxivfczqg/image/upload/v1643889560/ssx-linear-logo-light_mdafbc.png\"\n alt=\"SSX Logo\"/>\n <p style={{width:'270px'}}>A platform you can trust to deliver the latest capital trading news and trends across Africa.</p>\n </AboutSSX>\n <SSXInfo>\n <h6>Contact Us</h6>\n <p>222 Swaniker Street<br/>\n Abelemkpe - Accra<br/>\n +233 (0) 59 284 1131<br/>\n questions@secondstax.info</p>\n </SSXInfo>\n <SSXInfo>\n <h6><svg width=\"14\" height=\"15\" viewBox=\"0 0 14 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7.00001 0.833336C5.68147 0.833336 4.39254 1.22433 3.29621 1.95687C2.19988 2.68941 1.3454 3.73061 0.840816 4.94878C0.336232 6.16695 0.20421 7.5074 0.461445 8.8006C0.718679 10.0938 1.35362 11.2817 2.28597 12.214C3.21832 13.1464 4.4062 13.7813 5.69941 14.0386C6.99262 14.2958 8.33306 14.1638 9.55124 13.6592C10.7694 13.1546 11.8106 12.3001 12.5431 11.2038C13.2757 10.1075 13.6667 8.81854 13.6667 7.5C13.6647 5.7325 12.9617 4.03795 11.7119 2.78813C10.4621 1.53831 8.76752 0.835302 7.00001 0.833336ZM7.00001 12.8333C5.94518 12.8333 4.91403 12.5205 4.03697 11.9345C3.15991 11.3485 2.47632 10.5155 2.07266 9.54098C1.66899 8.56644 1.56337 7.49409 1.76916 6.45952C1.97495 5.42496 2.4829 4.47465 3.22878 3.72877C3.97466 2.98289 4.92497 2.47494 5.95953 2.26915C6.9941 2.06336 8.06645 2.16898 9.04099 2.57265C10.0155 2.97631 10.8485 3.6599 11.4345 4.53696C12.0206 5.41402 12.3333 6.44517 12.3333 7.5C12.3317 8.91399 11.7693 10.2696 10.7695 11.2695C9.76962 12.2693 8.41401 12.8317 7.00001 12.8333ZM7.00001 7.16667C6.8232 7.16667 6.65363 7.23691 6.52861 7.36193C6.40358 7.48696 6.33335 7.65652 6.33335 7.83334V9.83333C6.33335 10.0101 6.40358 10.1797 6.52861 10.3047C6.65363 10.4298 6.8232 10.5 7.00001 10.5C7.17682 10.5 7.34639 10.4298 7.47142 10.3047C7.59644 10.1797 7.66668 10.0101 7.66668 9.83333V7.83334C7.66668 7.65652 7.59644 7.48696 7.47142 7.36193C7.34639 7.23691 7.17682 7.16667 7.00001 7.16667ZM7.00001 4.5C6.8352 4.5 6.67408 4.54888 6.53704 4.64044C6.4 4.73201 6.29319 4.86216 6.23011 5.01443C6.16704 5.1667 6.15054 5.33426 6.18269 5.49591C6.21485 5.65756 6.29421 5.80605 6.41076 5.92259C6.5273 6.03913 6.67579 6.1185 6.83744 6.15066C6.99909 6.18281 7.16664 6.16631 7.31892 6.10323C7.47119 6.04016 7.60134 5.93335 7.6929 5.79631C7.78447 5.65927 7.83335 5.49815 7.83335 5.33334C7.83335 5.11232 7.74555 4.90036 7.58927 4.74408C7.43299 4.5878 7.22103 4.5 7.00001 4.5Z\" fill=\"#F7F9FC\"/>\n </svg>\n Important Note</h6>\n <p>SecondSTAX does not own rights to some of the content displayed on this website. All content is sourced directly from the outlet.</p>\n </SSXInfo>\n </FooterArea>\n <CopyrightArea>\n <CopyrightText>©{new Date().getFullYear()} SecondSTAX Ltd. All Rights Reserved.</CopyrightText>\n </CopyrightArea>\n </FooterContainer>\n )\n}\n\nexport default Footer\n","import React from \"react\"\nimport {IndexName, IndexValue, IndicesContainer, IndicesItem, ValidityText} from \"./style\"\nimport {IndicesType} from \"./type\";\n\nconst Indices = (props:IndicesType) => {\n const {indices,lastUpdated,source} = props\n\n function percentColor(percent:number){\n if (percent > 0){\n return 'success'\n }else if(percent < 0){\n return 'error'\n }else if(percent == 0){\n return 'neutral'\n }\n }\n\n return (\n <>\n {indices && indices.length > 0 &&\n <>\n <IndicesContainer>\n {indices.map((indexItem:{itemName:string, value:number, changePercent:number},index:number) => (\n <IndicesItem key={index}>\n <IndexName>\n {indexItem.changePercent < 0 &&\n //red down-arrow-circle\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9.29 13.71C9.3851 13.801 9.49725 13.8724 9.62 13.92C9.86346 14.02 10.1365 14.02 10.38 13.92C10.5028 13.8724 10.6149 13.801 10.71 13.71L13.71 10.71C13.8983 10.5217 14.0041 10.2663 14.0041 10C14.0041 9.7337 13.8983 9.47831 13.71 9.29C13.5217 9.1017 13.2663 8.99591 13 8.99591C12.7337 8.99591 12.4783 9.1017 12.29 9.29L11 10.59V7C11 6.73479 10.8946 6.48043 10.7071 6.2929C10.5196 6.10536 10.2652 6 10 6C9.73478 6 9.48043 6.10536 9.29289 6.2929C9.10536 6.48043 9 6.73479 9 7V10.59L7.71 9.29C7.61704 9.19628 7.50644 9.12188 7.38458 9.07111C7.26272 9.02034 7.13201 8.99421 7 8.99421C6.86799 8.99421 6.73728 9.02034 6.61542 9.07111C6.49356 9.12188 6.38296 9.19628 6.29 9.29C6.19627 9.38297 6.12188 9.49357 6.07111 9.61543C6.02034 9.73729 5.9942 9.86799 5.9942 10C5.9942 10.132 6.02034 10.2627 6.07111 10.3846C6.12188 10.5064 6.19627 10.617 6.29 10.71L9.29 13.71ZM10 20C11.9778 20 13.9112 19.4135 15.5557 18.3147C17.2002 17.2159 18.4819 15.6541 19.2388 13.8268C19.9957 11.9996 20.1937 9.98891 19.8079 8.0491C19.422 6.10929 18.4696 4.32746 17.0711 2.92894C15.6725 1.53041 13.8907 0.578004 11.9509 0.192152C10.0111 -0.193701 8.00043 0.00433284 6.17317 0.761209C4.3459 1.51809 2.78412 2.79981 1.6853 4.4443C0.58649 6.08879 0 8.02219 0 10C0 12.6522 1.05357 15.1957 2.92893 17.0711C3.85752 17.9997 4.95991 18.7363 6.17317 19.2388C7.38642 19.7413 8.68678 20 10 20V20ZM10 2C11.5823 2 13.129 2.4692 14.4446 3.34825C15.7602 4.2273 16.7855 5.47673 17.391 6.93854C17.9965 8.40035 18.155 10.0089 17.8463 11.5607C17.5376 13.1126 16.7757 14.538 15.6569 15.6569C14.538 16.7757 13.1126 17.5376 11.5607 17.8463C10.0089 18.155 8.40034 17.9965 6.93853 17.391C5.47672 16.7855 4.22729 15.7602 3.34824 14.4446C2.46919 13.129 2 11.5823 2 10C2 7.87827 2.84285 5.84344 4.34315 4.34315C5.84344 2.84286 7.87827 2 10 2V2Z\" fill=\"#F80000\"/>\n </svg>\n }\n {indexItem.changePercent > 0 &&\n //green up-arrow-circle\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M10.71 6.29C10.6149 6.19896 10.5028 6.12759 10.38 6.08C10.1365 5.97998 9.86347 5.97998 9.62 6.08C9.49725 6.12759 9.38511 6.19896 9.29 6.29L6.29 9.29C6.1017 9.4783 5.99591 9.7337 5.99591 10C5.99591 10.2663 6.1017 10.5217 6.29 10.71C6.47831 10.8983 6.7337 11.0041 7 11.0041C7.26631 11.0041 7.5217 10.8983 7.71 10.71L9 9.41V13C9 13.2652 9.10536 13.5196 9.2929 13.7071C9.48043 13.8946 9.73479 14 10 14C10.2652 14 10.5196 13.8946 10.7071 13.7071C10.8946 13.5196 11 13.2652 11 13V9.41L12.29 10.71C12.383 10.8037 12.4936 10.8781 12.6154 10.9289C12.7373 10.9797 12.868 11.0058 13 11.0058C13.132 11.0058 13.2627 10.9797 13.3846 10.9289C13.5064 10.8781 13.617 10.8037 13.71 10.71C13.8037 10.617 13.8781 10.5064 13.9289 10.3846C13.9797 10.2627 14.0058 10.132 14.0058 10C14.0058 9.86799 13.9797 9.73728 13.9289 9.61542C13.8781 9.49356 13.8037 9.38296 13.71 9.29L10.71 6.29ZM10 0C8.02219 0 6.08879 0.58649 4.4443 1.6853C2.79981 2.78412 1.51809 4.3459 0.761209 6.17317C0.00433284 8.00043 -0.193701 10.0111 0.192152 11.9509C0.578004 13.8907 1.53041 15.6725 2.92894 17.0711C4.32746 18.4696 6.10929 19.422 8.0491 19.8079C9.98891 20.1937 11.9996 19.9957 13.8268 19.2388C15.6541 18.4819 17.2159 17.2002 18.3147 15.5557C19.4135 13.9112 20 11.9778 20 10C20 8.68678 19.7413 7.38642 19.2388 6.17317C18.7363 4.95991 17.9997 3.85752 17.0711 2.92893C16.1425 2.00035 15.0401 1.26375 13.8268 0.761205C12.6136 0.258658 11.3132 0 10 0ZM10 18C8.41775 18 6.87104 17.5308 5.55544 16.6518C4.23985 15.7727 3.21447 14.5233 2.60897 13.0615C2.00347 11.5997 1.84504 9.99113 2.15372 8.43928C2.4624 6.88743 3.22433 5.46197 4.34315 4.34315C5.46197 3.22433 6.88743 2.4624 8.43928 2.15372C9.99113 1.84504 11.5997 2.00346 13.0615 2.60896C14.5233 3.21447 15.7727 4.23984 16.6518 5.55544C17.5308 6.87103 18 8.41775 18 10C18 12.1217 17.1572 14.1566 15.6569 15.6569C14.1566 17.1571 12.1217 18 10 18Z\" fill=\"#06BA63\"/>\n </svg>\n }\n {indexItem.changePercent == 0 &&\n //gray dash-circle\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M10 0C8.02219 0 6.08879 0.58649 4.4443 1.6853C2.79981 2.78412 1.51809 4.3459 0.761209 6.17317C0.00433284 8.00043 -0.193701 10.0111 0.192152 11.9509C0.578004 13.8907 1.53041 15.6725 2.92894 17.0711C4.32746 18.4696 6.10929 19.422 8.0491 19.8079C9.98891 20.1937 11.9996 19.9957 13.8268 19.2388C15.6541 18.4819 17.2159 17.2002 18.3147 15.5557C19.4135 13.9112 20 11.9778 20 10C20 8.68678 19.7413 7.38642 19.2388 6.17317C18.7363 4.95991 17.9997 3.85752 17.0711 2.92893C16.1425 2.00035 15.0401 1.26375 13.8268 0.761205C12.6136 0.258658 11.3132 0 10 0V0ZM10 18C8.41775 18 6.87104 17.5308 5.55544 16.6518C4.23985 15.7727 3.21447 14.5233 2.60897 13.0615C2.00347 11.5997 1.84504 9.99113 2.15372 8.43928C2.4624 6.88743 3.22433 5.46197 4.34315 4.34315C5.46197 3.22433 6.88743 2.4624 8.43928 2.15372C9.99113 1.84504 11.5997 2.00346 13.0615 2.60896C14.5233 3.21447 15.7727 4.23984 16.6518 5.55544C17.5308 6.87103 18 8.41775 18 10C18 12.1217 17.1572 14.1566 15.6569 15.6569C14.1566 17.1571 12.1217 18 10 18V18ZM14 9H6C5.73479 9 5.48043 9.10536 5.2929 9.29289C5.10536 9.48043 5 9.73478 5 10C5 10.2652 5.10536 10.5196 5.2929 10.7071C5.48043 10.8946 5.73479 11 6 11H14C14.2652 11 14.5196 10.8946 14.7071 10.7071C14.8946 10.5196 15 10.2652 15 10C15 9.73478 14.8946 9.48043 14.7071 9.29289C14.5196 9.10536 14.2652 9 14 9Z\" fill=\"#A4BBDD\"/>\n </svg>\n }\n {indexItem.itemName}\n </IndexName>\n <IndexValue>\n <span className=\"index-value\">{indexItem.value}</span> / <span className={percentColor(indexItem.changePercent)}>{indexItem.changePercent}%</span>\n </IndexValue>\n </IndicesItem>\n ))}\n </IndicesContainer>\n <ValidityText>\n {lastUpdated &&\n <>Last updated on {lastUpdated}</>\n }\n {lastUpdated && source && <> | </>}\n {source &&\n <>Source: {source}</>\n }\n </ValidityText>\n </>\n }\n </>\n )\n}\n\nexport default Indices\n","import React from \"react\";\nimport {TableContainer, Table, NothingContainer, NothingContent} from \"./style\";\nimport {AppModulesProps} from \"./type\";\nimport OutlineButton from \"../ButtonOutline/OutlineButton\";\nimport StatusBadge from \"../StatusBadge/StatusBadge\";\n\nconst LPRequestTable = (props:AppModulesProps) => {\n const {transactions,callback,newTransactionFxn} = props\n function txnStatus(status:string){\n let st = {\n label: status,\n badgeColor: ''\n }\n if (status.toUpperCase() === 'NW'){\n st = {\n label: 'New',\n badgeColor: 'neutral'\n }\n }\n if (status.toUpperCase() === 'PCP'){\n st = {\n label: 'Pending payment',\n badgeColor: 'warning'\n }\n }\n if (status.toUpperCase() === 'PLC'){\n st = {\n label: 'Sent to LP',\n badgeColor: 'primary'\n }\n }\n if (status.toUpperCase() === 'PLP'){\n st = {\n label: 'Confirmed with LP',\n badgeColor: 'neutral'\n }\n }\n if (status.toUpperCase() === 'PBC'){\n st = {\n label: 'Processing at LP',\n badgeColor: 'neutral'\n }\n }\n if (status.toUpperCase() === 'ST'){\n st = {\n label: 'Complete',\n badgeColor: 'success'\n }\n }\n if (status.toUpperCase() === 'CAN'){\n st = {\n label: 'Complete',\n badgeColor: 'error'\n }\n }\n return st\n }\n\n return (\n <TableContainer>\n <Table>\n <thead>\n <tr className=\"rounded-row\">\n <th>Provider</th>\n <th>Transaction amount</th>\n <th>Transaction ID</th>\n <th>Status</th>\n <th>Date</th>\n </tr>\n </thead>\n {transactions && transactions.length > 0 &&\n <tbody>\n {transactions.map((transaction: {\n providerLogo?:string,\n providerName:string,\n baseCurrFlag:string,\n baseAmount:number,\n baseCurrency:string\n exchangeCurrFlag:string,\n exchangeAmount:number,\n exchangeCurrency:string\n transactionId:string,\n status:string,\n date:string\n },index:number) => (\n <tr key={index} className=\"rounded-row\" onClick={()=>{callback(transaction)}}>\n <td>\n <div className=\"provider\">\n {transaction.providerLogo &&\n <img src={transaction.providerLogo} alt=\"Provider logo\"/>\n }\n {transaction.providerName}\n </div>\n </td>\n <td>\n <div className=\"txn-amt\">\n <span className=\"amt\">\n <img src={transaction.baseCurrFlag} alt=\"base flag\"/>\n {`${transaction.baseCurrency} ${transaction.baseAmount}`}\n </span>\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M17.9982 10.0002C17.9982 9.73497 17.8928 9.48062 17.7053 9.29308C17.5178 9.10554 17.2634 9.00019 16.9982 9.00019H5.40819L7.70819 6.71019C7.89649 6.52188 8.00228 6.26649 8.00228 6.00019C8.00228 5.73388 7.89649 5.47849 7.70819 5.29019C7.51988 5.10188 7.26449 4.99609 6.99819 4.99609C6.73188 4.99609 6.47649 5.10188 6.28819 5.29019L2.28819 9.29019C2.14943 9.43081 2.05543 9.60938 2.01806 9.80337C1.98068 9.99736 2.00161 10.1981 2.07819 10.3802C2.15321 10.5628 2.2806 10.7191 2.44432 10.8295C2.60804 10.9398 2.80076 10.9992 2.99819 11.0002H16.9982C17.2634 11.0002 17.5178 10.8948 17.7053 10.7073C17.8928 10.5198 17.9982 10.2654 17.9982 10.0002ZM21.9182 13.6202C21.8432 13.4376 21.7158 13.2812 21.552 13.1709C21.3883 13.0606 21.1956 13.0012 20.9982 13.0002H6.99819C6.73297 13.0002 6.47862 13.1055 6.29108 13.2931C6.10354 13.4806 5.99819 13.735 5.99819 14.0002C5.99819 14.2654 6.10354 14.5198 6.29108 14.7073C6.47862 14.8948 6.73297 15.0002 6.99819 15.0002H18.5882L16.2882 17.2902C16.1945 17.3831 16.1201 17.4937 16.0693 17.6156C16.0185 17.7375 15.9924 17.8682 15.9924 18.0002C15.9924 18.1322 16.0185 18.2629 16.0693 18.3848C16.1201 18.5066 16.1945 18.6172 16.2882 18.7102C16.3812 18.8039 16.4917 18.8783 16.6136 18.9291C16.7355 18.9798 16.8662 19.006 16.9982 19.006C17.1302 19.006 17.2609 18.9798 17.3828 18.9291C17.5046 18.8783 17.6152 18.8039 17.7082 18.7102L21.7082 14.7102C21.8469 14.5696 21.9409 14.391 21.9783 14.197C22.0157 14.003 21.9948 13.8023 21.9182 13.6202Z\" fill=\"#BBCCE6\"/>\n </svg>\n <span className=\"amt\">\n <img src={transaction.exchangeCurrFlag} alt=\"exchange flag\"/>\n {/*<img src={getFlag(transaction.exchangeCurrFlag)} alt=\"exchange flag\"/>*/}\n {`${transaction.exchangeCurrency} ${transaction.exchangeAmount}`}\n </span>\n </div>\n </td>\n <td>\n <div>\n {transaction.transactionId}\n </div>\n </td>\n <td>\n <div>\n <StatusBadge status={txnStatus(transaction.status).badgeColor as any} label={txnStatus(transaction.status).label} width={150}/>\n </div>\n </td>\n <td>\n <div className=\"txn-date\">\n {transaction.date}\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M10.3592 7.52685L6.58584 3.76019C6.52387 3.6977 6.45013 3.64811 6.36889 3.61426C6.28765 3.58041 6.20052 3.56299 6.11251 3.56299C6.0245 3.56299 5.93736 3.58041 5.85612 3.61426C5.77488 3.64811 5.70115 3.6977 5.63917 3.76019C5.51501 3.8851 5.44531 4.05406 5.44531 4.23019C5.44531 4.40631 5.51501 4.57528 5.63917 4.70019L8.93917 8.03352L5.63917 11.3335C5.51501 11.4584 5.44531 11.6274 5.44531 11.8035C5.44531 11.9796 5.51501 12.1486 5.63917 12.2735C5.70092 12.3365 5.77455 12.3866 5.8558 12.421C5.93705 12.4553 6.0243 12.4732 6.11251 12.4735C6.20071 12.4732 6.28797 12.4553 6.36922 12.421C6.45047 12.3866 6.5241 12.3365 6.58584 12.2735L10.3592 8.50685C10.4268 8.44443 10.4808 8.36866 10.5178 8.28432C10.5547 8.19999 10.5738 8.10892 10.5738 8.01685C10.5738 7.92479 10.5547 7.83372 10.5178 7.74938C10.4808 7.66505 10.4268 7.58928 10.3592 7.52685Z\" fill=\"#A4BBDD\"/>\n </svg>\n </div>\n </td>\n </tr>\n ))}\n </tbody>\n }\n </Table>\n {transactions && transactions.length == 0 &&\n <NothingContainer>\n <NothingContent>\n <svg width=\"65\" height=\"64\" viewBox=\"0 0 65 64\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clipPath=\"url(#clip0_651_2393)\">\n <path d=\"M39.5 6H25.5V14H39.5V6Z\" fill=\"#E8EEF7\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M41.5006 6C41.5006 4.895 40.6046 4 39.5 4H25.5C24.3954 4 23.4994 4.895 23.4994 6V14C23.4994 15.105 24.3954 16 25.5 16H39.5C40.6046 16 41.5006 15.105 41.5006 14V6ZM27.5006 8V12H37.4994V8H27.5006Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M49.5 56C49.5 54.896 50.396 54 51.5 54C52.604 54 53.5 54.896 53.5 56V58C53.5 59.105 52.605 60 51.5 60H13.5C12.395 60 11.5 59.105 11.5 58V10C11.5 8.895 12.395 8 13.5 8H25.5C26.605 8 27.5 8.895 27.5 10V12H37.5V10C37.5 8.895 38.395 8 39.5 8H51.5C52.605 8 53.5 8.895 53.5 10V48C53.5 49.104 52.604 50 51.5 50C50.396 50 49.5 49.104 49.5 48V12H41.5V14C41.5 15.105 40.605 16 39.5 16H25.5C24.395 16 23.5 15.105 23.5 14V12H15.5V56H49.5Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M23.5 27H41.5C42.604 27 43.5 26.104 43.5 25C43.5 23.896 42.604 23 41.5 23H23.5C22.396 23 21.5 23.896 21.5 25C21.5 26.104 22.396 27 23.5 27Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M23.5 38H41.5C42.604 38 43.5 37.104 43.5 36C43.5 34.896 42.604 34 41.5 34H23.5C22.396 34 21.5 34.896 21.5 36C21.5 37.104 22.396 38 23.5 38Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M23.5 49H41.5C42.604 49 43.5 48.104 43.5 47C43.5 45.896 42.604 45 41.5 45H23.5C22.396 45 21.5 45.896 21.5 47C21.5 48.104 22.396 49 23.5 49Z\" fill=\"#D2DDEE\"/>\n </g>\n <defs>\n <clipPath id=\"clip0_651_2393\">\n <rect width=\"64\" height=\"64\" fill=\"white\" transform=\"translate(0.5)\"/>\n </clipPath>\n </defs>\n </svg>\n <p>Your most recent liquidity requests will live here when you have them.</p>\n <OutlineButton size=\"md\" variant=\"primary\" onClick={()=>{newTransactionFxn()}}>Begin Transaction</OutlineButton>\n </NothingContent>\n </NothingContainer>\n }\n </TableContainer>\n )\n}\n\nexport default LPRequestTable\n","import React, {useState} from \"react\"\nimport {\n BugReportingBody,\n NavCardHeading,\n IconButton,\n Logo,\n ProfileButton,\n TopBarContainer,\n TopBarRight,\n BugReportingCard,\n NotifList,\n UnreadNotif,\n NotificationsCard,\n ReadNotif,\n ProfileCard,\n ProfileLink,\n ProfileCardHeading,\n ResponseContainer, EmptyNotifContainer, ContentArea, NotifTime\n} from \"./style\";\nimport Button from \"../Button/Button\";\nimport clientLogo from './client-logo.png'\nimport theme from \"../../theme\";\nimport LoadingSpinner from \"../LoadingSpinner/LoadingSpinner\";\nimport ActionSuccess from \"../ActionSuccess/ActionSuccess\";\nimport {TopBarProps} from \"./type\";\n\nconst LPTopBar = (props:TopBarProps) => {\n const {userName,requestLpUrl,notifications, myProfileUrl, signOutApiUrl} = props\n const [toggleBugReporting,setToggleBugReporting] = useState(false)\n const [toggleNotifications,setToggleNotifications] = useState(false)\n const [toggleProfileCard,setToggleProfileCard] = useState(false)\n const [bugReportStage,setBugReportStage] = useState(1)\n const [sendingBR,setSendingBR] = useState(false)\n\n function submitBug(){\n setSendingBR(true)\n //TODO perform the actual submission of the form\n setTimeout(()=>{\n setBugReportStage(bugReportStage + 1)\n setSendingBR(false)\n },2000)\n }\n\n return (\n <TopBarContainer>\n <Logo>\n <img src=\"https://res.cloudinary.com/dxivfczqg/image/upload/v1663283686/dashboard-logo_a7i59z.svg\" alt=\"SSX Logo\"/>\n </Logo>\n <TopBarRight>\n <a href={requestLpUrl} className=\"trade-button\">Request LP</a>\n <div className=\"vt-divider\"/>\n <div className=\"icon-buttons\">\n <IconButton className={`${toggleBugReporting ? 'active-item' : ''}`} onClick={()=>{\n setToggleBugReporting(!toggleBugReporting)\n setToggleNotifications(false)\n setToggleProfileCard(false)\n setBugReportStage(1)\n }}>\n {/*icon-bug*/}\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M17 12H19C19.2652 12 19.5196 11.8946 19.7071 11.7071C19.8946 11.5196 20 11.2652 20 11C20 10.7348 19.8946 10.4804 19.7071 10.2929C19.5196 10.1054 19.2652 10 19 10H17V9C16.9912 8.53931 16.9205 8.0819 16.79 7.64C17.73 7.27962 18.5393 6.64391 19.112 5.81603C19.6847 4.98815 19.9942 4.00667 20 3C20 2.73478 19.8946 2.48043 19.7071 2.29289C19.5196 2.10536 19.2652 2 19 2C18.7348 2 18.4804 2.10536 18.2929 2.29289C18.1054 2.48043 18 2.73478 18 3C17.9991 3.64484 17.7905 4.27224 17.405 4.7892C17.0196 5.30615 16.4778 5.68515 15.86 5.87C15.3668 5.23797 14.7289 4.7338 14 4.4C14.0104 4.26687 14.0104 4.13313 14 4C14 2.93913 13.5786 1.92172 12.8284 1.17157C12.0783 0.421427 11.0609 0 10 0C8.93913 0 7.92172 0.421427 7.17157 1.17157C6.42143 1.92172 6 2.93913 6 4C5.98965 4.13313 5.98965 4.26687 6 4.4C5.25662 4.72831 4.60446 5.23288 4.1 5.87C3.48968 5.67807 2.9567 5.29604 2.5789 4.77971C2.2011 4.26338 1.99826 3.63979 2 3C2 2.73478 1.89464 2.48043 1.70711 2.29289C1.51957 2.10536 1.26522 2 1 2C0.734784 2 0.48043 2.10536 0.292893 2.29289C0.105357 2.48043 0 2.73478 0 3C0.00576615 4.00667 0.315265 4.98815 0.888 5.81603C1.46074 6.64391 2.27003 7.27962 3.21 7.64C3.07948 8.0819 3.00885 8.53931 3 9V10H1C0.734784 10 0.48043 10.1054 0.292893 10.2929C0.105357 10.4804 0 10.7348 0 11C0 11.2652 0.105357 11.5196 0.292893 11.7071C0.48043 11.8946 0.734784 12 1 12H3V13C3.00086 13.4635 3.04776 13.9258 3.14 14.38C2.21628 14.7502 1.42404 15.3876 0.864657 16.2106C0.305279 17.0336 0.00421571 18.0049 0 19C0 19.2652 0.105357 19.5196 0.292893 19.7071C0.48043 19.8946 0.734784 20 1 20C1.26522 20 1.51957 19.8946 1.70711 19.7071C1.89464 19.5196 2 19.2652 2 19C2.0027 18.4168 2.17535 17.847 2.49681 17.3604C2.81828 16.8737 3.27462 16.4913 3.81 16.26C4.40471 17.3862 5.29541 18.3289 6.38616 18.9864C7.47692 19.6439 8.72639 19.9914 10 19.9914C11.2736 19.9914 12.5231 19.6439 13.6138 18.9864C14.7046 18.3289 15.5953 17.3862 16.19 16.26C16.7254 16.4913 17.1817 16.8737 17.5032 17.3604C17.8247 17.847 17.9973 18.4168 18 19C18 19.2652 18.1054 19.5196 18.2929 19.7071C18.4804 19.8946 18.7348 20 19 20C19.2652 20 19.5196 19.8946 19.7071 19.7071C19.8946 19.5196 20 19.2652 20 19C19.9958 18.0049 19.6947 17.0336 19.1353 16.2106C18.576 15.3876 17.7837 14.7502 16.86 14.38C16.9522 13.9258 16.9991 13.4635 17 13V12ZM9 17.9C7.87064 17.6695 6.8556 17.0558 6.12669 16.1629C5.39778 15.27 4.99976 14.1527 5 13V9C5 8.20435 5.31607 7.44129 5.87868 6.87868C6.44129 6.31607 7.20435 6 8 6H9V17.9ZM8 4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2C10.5304 2 11.0391 2.21071 11.4142 2.58579C11.7893 2.96086 12 3.46957 12 4H8ZM15 13C15.0002 14.1527 14.6022 15.27 13.8733 16.1629C13.1444 17.0558 12.1294 17.6695 11 17.9V6H12C12.7956 6 13.5587 6.31607 14.1213 6.87868C14.6839 7.44129 15 8.20435 15 9V13Z\" fill=\"#070B12\"/>\n </svg>\n </IconButton>\n\n <IconButton className={`${toggleNotifications ? 'active-item' : ''}`} onClick={()=>{\n setToggleBugReporting(false)\n setToggleNotifications(!toggleNotifications)\n setToggleProfileCard(false)\n }}>\n <div className=\"notification-dot\"/>\n {/*icon-bell*/}\n <svg width=\"16\" height=\"20\" viewBox=\"0 0 16 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M14 11.18V8C13.9986 6.58312 13.4958 5.21247 12.5806 4.13077C11.6655 3.04908 10.3971 2.32615 9 2.09V1C9 0.734784 8.89464 0.48043 8.70711 0.292893C8.51957 0.105357 8.26522 0 8 0C7.73478 0 7.48043 0.105357 7.29289 0.292893C7.10536 0.48043 7 0.734784 7 1V2.09C5.60294 2.32615 4.33452 3.04908 3.41939 4.13077C2.50425 5.21247 2.00144 6.58312 2 8V11.18C1.41645 11.3863 0.910998 11.7681 0.552938 12.2729C0.194879 12.7778 0.00173951 13.3811 0 14V16C0 16.2652 0.105357 16.5196 0.292893 16.7071C0.48043 16.8946 0.734784 17 1 17H4.14C4.37028 17.8474 4.873 18.5954 5.5706 19.1287C6.26819 19.6621 7.1219 19.951 8 19.951C8.8781 19.951 9.73181 19.6621 10.4294 19.1287C11.127 18.5954 11.6297 17.8474 11.86 17H15C15.2652 17 15.5196 16.8946 15.7071 16.7071C15.8946 16.5196 16 16.2652 16 16V14C15.9983 13.3811 15.8051 12.7778 15.4471 12.2729C15.089 11.7681 14.5835 11.3863 14 11.18ZM4 8C4 6.93913 4.42143 5.92172 5.17157 5.17157C5.92172 4.42143 6.93913 4 8 4C9.06087 4 10.0783 4.42143 10.8284 5.17157C11.5786 5.92172 12 6.93913 12 8V11H4V8ZM8 18C7.65097 17.9979 7.30857 17.9045 7.00683 17.7291C6.70509 17.5536 6.45451 17.3023 6.28 17H9.72C9.54549 17.3023 9.29491 17.5536 8.99317 17.7291C8.69143 17.9045 8.34903 17.9979 8 18ZM14 15H2V14C2 13.7348 2.10536 13.4804 2.29289 13.2929C2.48043 13.1054 2.73478 13 3 13H13C13.2652 13 13.5196 13.1054 13.7071 13.2929C13.8946 13.4804 14 13.7348 14 14V15Z\" fill=\"#070B12\"/>\n </svg>\n </IconButton>\n </div>\n <ProfileButton onClick={()=>{\n setToggleBugReporting(false)\n setToggleNotifications(false)\n setToggleProfileCard(!toggleProfileCard)\n }}>\n <div className=\"profile-pic\"/>\n {/*angle-down*/}\n <svg className={toggleProfileCard ? 'rotate-icon-180' : 'rotate-icon-0'} width=\"8\" height=\"6\" viewBox=\"0 0 8 6\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7.33334 1.1133C7.20843 0.989128 7.03946 0.919434 6.86334 0.919434C6.68722 0.919434 6.51825 0.989128 6.39334 1.1133L4.00001 3.4733L1.64001 1.1133C1.5151 0.989128 1.34613 0.919434 1.17001 0.919434C0.993883 0.919434 0.824915 0.989128 0.700006 1.1133C0.637521 1.17527 0.587925 1.249 0.554079 1.33024C0.520233 1.41148 0.502808 1.49862 0.502808 1.58663C0.502808 1.67464 0.520233 1.76177 0.554079 1.84301C0.587925 1.92425 0.637521 1.99799 0.700006 2.05996L3.52667 4.88663C3.58865 4.94911 3.66238 4.99871 3.74362 5.03256C3.82486 5.0664 3.912 5.08383 4.00001 5.08383C4.08801 5.08383 4.17515 5.0664 4.25639 5.03256C4.33763 4.99871 4.41136 4.94911 4.47334 4.88663L7.33334 2.05996C7.39582 1.99799 7.44542 1.92425 7.47927 1.84301C7.51311 1.76177 7.53054 1.67464 7.53054 1.58663C7.53054 1.49862 7.51311 1.41148 7.47927 1.33024C7.44542 1.249 7.39582 1.17527 7.33334 1.1133Z\" fill=\"#070B12\"/>\n </svg>\n </ProfileButton>\n </TopBarRight>\n\n {toggleBugReporting &&\n <BugReportingCard>\n {bugReportStage === 1 &&\n <>\n <NavCardHeading>\n <h4 className=\"heading\">Report Bug</h4>\n </NavCardHeading>\n <BugReportingBody>\n <textarea/>\n <div className=\"info-text\">\n {/*info-cirlce*/}\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6.99968 0.333252C5.68114 0.333252 4.3922 0.724245 3.29588 1.45679C2.19955 2.18933 1.34506 3.23052 0.840481 4.4487C0.335896 5.66687 0.203874 7.00731 0.461109 8.30052C0.718344 9.59373 1.35328 10.7816 2.28563 11.714C3.21798 12.6463 4.40587 13.2813 5.69908 13.5385C6.99228 13.7957 8.33273 13.6637 9.5509 13.1591C10.7691 12.6545 11.8103 11.8 12.5428 10.7037C13.2754 9.60739 13.6663 8.31846 13.6663 6.99992C13.6644 5.23241 12.9614 3.53786 11.7116 2.28804C10.4617 1.03823 8.76718 0.335218 6.99968 0.333252ZM6.99968 12.3333C5.94484 12.3333 4.9137 12.0205 4.03664 11.4344C3.15957 10.8484 2.47599 10.0154 2.07232 9.0409C1.66865 8.06636 1.56304 6.994 1.76882 5.95944C1.97461 4.92487 2.48256 3.97456 3.22844 3.22868C3.97432 2.4828 4.92463 1.97485 5.9592 1.76906C6.99376 1.56328 8.06612 1.66889 9.04066 2.07256C10.0152 2.47623 10.8481 3.15982 11.4342 4.03688C12.0202 4.91394 12.333 5.94508 12.333 6.99992C12.3314 8.41391 11.769 9.76952 10.7691 10.7694C9.76928 11.7692 8.41367 12.3316 6.99968 12.3333ZM6.99968 6.66658C6.82287 6.66658 6.6533 6.73682 6.52827 6.86185C6.40325 6.98687 6.33301 7.15644 6.33301 7.33325V9.33325C6.33301 9.51006 6.40325 9.67963 6.52827 9.80466C6.6533 9.92968 6.82287 9.99992 6.99968 9.99992C7.17649 9.99992 7.34606 9.92968 7.47108 9.80466C7.59611 9.67963 7.66634 9.51006 7.66634 9.33325V7.33325C7.66634 7.15644 7.59611 6.98687 7.47108 6.86185C7.34606 6.73682 7.17649 6.66658 6.99968 6.66658ZM6.99968 3.99992C6.83486 3.99992 6.67374 4.04879 6.5367 4.14036C6.39966 4.23193 6.29285 4.36208 6.22978 4.51435C6.16671 4.66662 6.1502 4.83418 6.18236 4.99583C6.21451 5.15748 6.29388 5.30596 6.41042 5.42251C6.52697 5.53905 6.67545 5.61842 6.8371 5.65057C6.99875 5.68273 7.16631 5.66622 7.31858 5.60315C7.47085 5.54008 7.601 5.43327 7.69257 5.29623C7.78414 5.15919 7.83301 4.99807 7.83301 4.83325C7.83301 4.61224 7.74521 4.40028 7.58893 4.244C7.43265 4.08772 7.22069 3.99992 6.99968 3.99992Z\" fill=\"#070B12\"/>\n </svg>\n <p>By submitting a report you agree to your current browser tab and LP system information being captured.</p>\n </div>\n {!sendingBR && <Button size=\"md\" variant=\"primary\" onClick={submitBug}>Report Bug</Button>}\n {sendingBR && <Button size=\"md\" variant=\"primary\" disabled={true}><LoadingSpinner/></Button>}\n </BugReportingBody>\n </>\n }\n {bugReportStage === 2 &&\n <ResponseContainer>\n <ActionSuccess headingText=\"Bug report sent\"/>\n </ResponseContainer>\n }\n </BugReportingCard>\n }\n\n {toggleNotifications &&\n <NotificationsCard>\n {notifications && notifications.length > 0 &&\n <>\n <NavCardHeading>\n <h4>Notifications</h4>\n </NavCardHeading>\n <NotifList>\n {notifications.map((notification: { notifTitle:string, notifTime:string, baseCurrFlag:string, baseCurrencyCode:string, baseAmount:string, exchCurrFlag:string, exchCurrencyCode:string, exchAmount:string, lpProvider:string, transactionNumber:string, notifRead:boolean },index:number) => {\n if (!notification.notifRead){\n return (\n //UNREAD NOTIFICATIONS\n <UnreadNotif key={index}>\n <div><img src={clientLogo} style={{width:'24px',height:'24px',borderRadius:'4px'}} alt=\"Provider logo\"/></div>\n <div style={{display:'flex',width:'100%'}}>\n <div style={{display:'flex',flexDirection:'column',gap:'12px',width:'87%'}}>\n <div>\n <p className=\"request-status\">{notification.notifTitle}</p>\n <p className=\"lp-info-txn-no\">{notification.lpProvider} • #{notification.transactionNumber}</p>\n </div>\n <div className=\"txn-amts\">\n <div style={{display:'flex',justifyContent:'space-between',alignItems:'center',gap:'16px'}}>\n <div style={{display:'flex',gap:'8px'}}>\n <img src={notification.baseCurrFlag} alt=\"Base currency flag\"/>\n <p style={{color:theme.colors[\"neutral-900\"],fontSize:'14px'}}>{notification.baseCurrencyCode} {notification.baseAmount}</p>\n </div>\n <div>\n <i className=\"icon-arrows-left-right\"/>\n </div>\n <div style={{display:'flex',gap:'8px'}}>\n <img src={notification.exchCurrFlag} alt=\"Exchange currency flag\"/>\n <p style={{color:theme.colors[\"neutral-900\"],fontSize:'14px'}}>{notification.exchCurrencyCode} {notification.exchAmount}</p>\n </div>\n </div>\n </div>\n </div>\n <NotifTime>{notification.notifTime}</NotifTime>\n </div>\n </UnreadNotif>\n )\n }\n if(notification.notifRead){\n return (\n //READ NOTIFICATIONS\n <ReadNotif key={index}>\n <div><img src={clientLogo} style={{width:'24px',height:'24px',borderRadius:'4px'}} alt=\"client logo\"/></div>\n <div style={{display:'flex',width:'100%'}}>\n <div style={{display:'flex',flexDirection:'column',gap:'12px',width:'87%'}}>\n <div>\n <p className=\"request-status\">{notification.notifTitle}</p>\n <p className=\"lp-info-txn-no\">{notification.lpProvider} • #{notification.transactionNumber}</p>\n </div>\n <div className=\"txn-amts\">\n <div style={{display:'flex',justifyContent:'space-between',alignItems:'center',gap:'16px'}}>\n <div style={{display:'flex',gap:'8px'}}>\n <img src={notification.baseCurrFlag} alt=\"Base currency flag\"/>\n <p style={{color:theme.colors[\"neutral-900\"],fontSize:'14px'}}>{notification.baseCurrencyCode} 12,900.99</p>\n </div>\n <div>\n <i className=\"icon-arrows-left-right\"/>\n </div>\n <div style={{display:'flex',gap:'8px'}}>\n <img src={notification.exchCurrFlag} alt=\"Exchange currency flag\"/>\n <p style={{color:theme.colors[\"neutral-900\"],fontSize:'14px'}}>{notification.exchCurrencyCode} 1,228.08</p>\n </div>\n </div>\n </div>\n </div>\n <NotifTime>{notification.notifTime}</NotifTime>\n </div>\n </ReadNotif>\n )\n }\n })}\n </NotifList>\n </>\n }\n {notifications && notifications.length === 0 &&\n <EmptyNotifContainer>\n <ContentArea>\n <svg width=\"64\" height=\"65\" viewBox=\"0 0 64 65\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clipPath=\"url(#clip0_499_2669)\">\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M46 26.5003C46 26.5003 46 28.3139 46 24.5001C46 16.768 39.732 10.501 32 10.501C24.268 10.501 18 16.768 18 24.5001C18 28.3139 18 26.5003 18 26.5003\" fill=\"#E8EEF7\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M15.521 48.5003H37C38.104 48.5003 39 49.397 39 50.5006C39 51.6041 38.104 52.5008 37 52.5008H12C11.253 52.5008 10.567 52.0834 10.224 51.4198C9.87998 50.7562 9.93499 49.9559 10.367 49.3459C10.367 49.3459 16 41.4092 16 32.501V24.5001C16 15.6644 23.163 8.50076 32 8.50076C40.837 8.50076 48 15.6644 48 24.5001C48 28.3139 48 28.4982 48 32.501C48 41.4092 53.633 49.3459 53.633 49.3459C54.065 49.9559 54.12 50.7562 53.776 51.4198C53.433 52.0834 52.747 52.5008 52 52.5008H46C44.896 52.5008 44 51.6041 44 50.5006C44 49.397 44.896 48.5003 46 48.5003H48.479C46.601 44.997 44 38.9726 44 32.501C44 28.4982 44 28.3139 44 24.5001C44 17.8728 38.627 12.5 32 12.5C25.373 12.5 20 17.8728 20 24.5001V32.501C20 38.9726 17.399 44.997 15.521 48.5003Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M37.658 50.5C37.88 51.126 38 51.799 38 52.5C38 55.811 35.311 58.5 32 58.5C28.689 58.5 26 55.811 26 52.5C26 51.799 26.12 51.126 26.342 50.5H37.658Z\" fill=\"#E8EEF7\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M39.543 49.833C39.261 49.034 38.505 48.5 37.658 48.5H26.342C25.495 48.5 24.739 49.034 24.457 49.833C24.161 50.667 24 51.565 24 52.5C24 56.915 27.585 60.5 32 60.5C36.415 60.5 40 56.915 40 52.5C40 51.565 39.839 50.667 39.543 49.833ZM28.005 52.706C28.113 54.818 29.861 56.5 32 56.5C34.208 56.5 36 54.708 36 52.5H28L28.005 52.706ZM30 6.5V10.5C30 11.604 30.896 12.5 32 12.5C33.104 12.5 34 11.604 34 10.5V6.5C34 5.396 33.104 4.5 32 4.5C30.896 4.5 30 5.396 30 6.5Z\" fill=\"#D2DDEE\"/>\n </g>\n <defs>\n <clipPath id=\"clip0_499_2669\">\n <rect width=\"64\" height=\"64\" fill=\"white\" transform=\"translate(0 0.5)\"/>\n </clipPath>\n </defs>\n </svg>\n <div className=\"text-center\">\n <h3 className=\"text-neutral-900 text-heading\">No Notifications</h3>\n <p className=\"subtext\">Your notifications will show up here when you have them</p>\n </div>\n </ContentArea>\n </EmptyNotifContainer>\n }\n </NotificationsCard>\n }\n\n {toggleProfileCard &&\n <ProfileCard>\n <ProfileCardHeading>\n <h4>{userName}</h4>\n </ProfileCardHeading>\n <ProfileLink href={myProfileUrl}>\n <div style={{display:'flex',gap:'16px'}}>\n {/*icon-user*/}\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9.47333 7.47325C10.1269 6.95903 10.604 6.25387 10.8382 5.45588C11.0723 4.6579 11.0519 3.80676 10.7799 3.0209C10.5078 2.23503 9.9975 1.55352 9.32005 1.07116C8.64259 0.5888 7.83163 0.32959 7 0.32959C6.16836 0.32959 5.35741 0.5888 4.67995 1.07116C4.00249 1.55352 3.49223 2.23503 3.22014 3.0209C2.94805 3.80676 2.92767 4.6579 3.16184 5.45588C3.396 6.25387 3.87307 6.95903 4.52666 7.47325C3.40672 7.92195 2.42952 8.66615 1.69926 9.62653C0.968996 10.5869 0.51304 11.7275 0.379998 12.9266C0.370368 13.0141 0.378075 13.1027 0.402681 13.1873C0.427287 13.2719 0.468309 13.3508 0.523405 13.4195C0.634677 13.5582 0.79652 13.6471 0.973331 13.6666C1.15014 13.686 1.32744 13.6345 1.46621 13.5232C1.60499 13.4119 1.69388 13.2501 1.71333 13.0733C1.85972 11.77 2.48112 10.5665 3.45881 9.69245C4.4365 8.81844 5.70193 8.33527 7.01333 8.33527C8.32473 8.33527 9.59016 8.81844 10.5679 9.69245C11.5455 10.5665 12.1669 11.77 12.3133 13.0733C12.3315 13.2371 12.4096 13.3884 12.5327 13.4979C12.6559 13.6075 12.8152 13.6676 12.98 13.6666H13.0533C13.2281 13.6465 13.3878 13.5581 13.4977 13.4208C13.6076 13.2834 13.6587 13.1082 13.64 12.9333C13.5063 11.7307 13.0479 10.5872 12.3139 9.62539C11.5799 8.66354 10.5979 7.91957 9.47333 7.47325V7.47325ZM7 6.99992C6.47258 6.99992 5.95701 6.84352 5.51848 6.55051C5.07995 6.25749 4.73815 5.84101 4.53632 5.35374C4.33449 4.86647 4.28168 4.3303 4.38457 3.81301C4.48746 3.29573 4.74144 2.82058 5.11438 2.44764C5.48732 2.0747 5.96247 1.82072 6.47976 1.71783C6.99704 1.61493 7.53322 1.66774 8.02049 1.86958C8.50776 2.07141 8.92423 2.4132 9.21725 2.85173C9.51027 3.29026 9.66667 3.80584 9.66667 4.33325C9.66667 5.0405 9.38571 5.71878 8.88562 6.21887C8.38552 6.71897 7.70724 6.99992 7 6.99992Z\" fill=\"#070B12\"/>\n </svg>\n My Profile\n </div>\n {/*angle-right*/}\n <svg width=\"6\" height=\"10\" viewBox=\"0 0 6 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M5.36015 4.52685L1.58682 0.760187C1.52484 0.697702 1.45111 0.648106 1.36987 0.61426C1.28863 0.580414 1.20149 0.562988 1.11348 0.562988C1.02548 0.562988 0.938339 0.580414 0.8571 0.61426C0.77586 0.648106 0.702126 0.697702 0.640151 0.760187C0.515983 0.885095 0.446289 1.05406 0.446289 1.23019C0.446289 1.40631 0.515983 1.57528 0.640151 1.70019L3.94015 5.03352L0.640151 8.33352C0.515983 8.45843 0.446289 8.6274 0.446289 8.80352C0.446289 8.97964 0.515983 9.14861 0.640151 9.27352C0.701894 9.33651 0.775524 9.38663 0.856774 9.42096C0.938024 9.45529 1.02528 9.47315 1.11348 9.47352C1.20169 9.47315 1.28894 9.45529 1.37019 9.42096C1.45144 9.38663 1.52507 9.33651 1.58682 9.27352L5.36015 5.50685C5.42782 5.44443 5.48183 5.36866 5.51876 5.28432C5.5557 5.19999 5.57477 5.10892 5.57477 5.01685C5.57477 4.92479 5.5557 4.83372 5.51876 4.74938C5.48183 4.66505 5.42782 4.58928 5.36015 4.52685Z\" fill=\"#A4BBDD\"/>\n </svg>\n </ProfileLink>\n <ProfileLink href=\"#\">\n <div style={{display:'flex',gap:'16px'}}>\n {/*sign-out*/}\n <svg width=\"12\" height=\"14\" viewBox=\"0 0 12 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M0.666992 7.00016C0.666992 7.17697 0.73723 7.34654 0.862254 7.47157C0.987279 7.59659 1.15685 7.66683 1.33366 7.66683H6.39366L4.86033 9.1935C4.79784 9.25547 4.74824 9.3292 4.7144 9.41044C4.68055 9.49168 4.66313 9.57882 4.66313 9.66683C4.66313 9.75484 4.68055 9.84197 4.7144 9.92321C4.74824 10.0045 4.79784 10.0782 4.86033 10.1402C4.9223 10.2026 4.99604 10.2522 5.07727 10.2861C5.15851 10.3199 5.24565 10.3374 5.33366 10.3374C5.42167 10.3374 5.5088 10.3199 5.59004 10.2861C5.67128 10.2522 5.74502 10.2026 5.80699 10.1402L8.47366 7.4735C8.53435 7.41009 8.58193 7.33533 8.61366 7.2535C8.68034 7.09119 8.68034 6.90914 8.61366 6.74683C8.58193 6.66499 8.53435 6.59023 8.47366 6.52683L5.80699 3.86016C5.74483 3.798 5.67104 3.7487 5.58983 3.71506C5.50861 3.68142 5.42157 3.6641 5.33366 3.6641C5.24575 3.6641 5.15871 3.68142 5.07749 3.71506C4.99628 3.7487 4.92248 3.798 4.86033 3.86016C4.79817 3.92232 4.74886 3.99611 4.71522 4.07733C4.68158 4.15854 4.66426 4.24559 4.66426 4.3335C4.66426 4.4214 4.68158 4.50845 4.71522 4.58966C4.74886 4.67088 4.79817 4.74467 4.86033 4.80683L6.39366 6.3335H1.33366C1.15685 6.3335 0.987279 6.40373 0.862254 6.52876C0.73723 6.65378 0.666992 6.82335 0.666992 7.00016ZM9.33366 0.333496H2.66699C2.13656 0.333496 1.62785 0.54421 1.25278 0.919283C0.877706 1.29436 0.666992 1.80306 0.666992 2.3335V4.3335C0.666992 4.51031 0.73723 4.67988 0.862254 4.8049C0.987279 4.92992 1.15685 5.00016 1.33366 5.00016C1.51047 5.00016 1.68004 4.92992 1.80506 4.8049C1.93009 4.67988 2.00033 4.51031 2.00033 4.3335V2.3335C2.00033 2.15668 2.07056 1.98712 2.19559 1.86209C2.32061 1.73707 2.49018 1.66683 2.66699 1.66683H9.33366C9.51047 1.66683 9.68004 1.73707 9.80506 1.86209C9.93009 1.98712 10.0003 2.15668 10.0003 2.3335V11.6668C10.0003 11.8436 9.93009 12.0132 9.80506 12.1382C9.68004 12.2633 9.51047 12.3335 9.33366 12.3335H2.66699C2.49018 12.3335 2.32061 12.2633 2.19559 12.1382C2.07056 12.0132 2.00033 11.8436 2.00033 11.6668V9.66683C2.00033 9.49002 1.93009 9.32045 1.80506 9.19542C1.68004 9.0704 1.51047 9.00016 1.33366 9.00016C1.15685 9.00016 0.987279 9.0704 0.862254 9.19542C0.73723 9.32045 0.666992 9.49002 0.666992 9.66683V11.6668C0.666992 12.1973 0.877706 12.706 1.25278 13.081C1.62785 13.4561 2.13656 13.6668 2.66699 13.6668H9.33366C9.86409 13.6668 10.3728 13.4561 10.7479 13.081C11.1229 12.706 11.3337 12.1973 11.3337 11.6668V2.3335C11.3337 1.80306 11.1229 1.29436 10.7479 0.919283C10.3728 0.54421 9.86409 0.333496 9.33366 0.333496Z\" fill=\"#070B12\"/>\n </svg>\n {/*TODO handle logout mechanism*/}\n Sign Out\n </div>\n {/*angle-right*/}\n <svg width=\"6\" height=\"10\" viewBox=\"0 0 6 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M5.36015 4.52685L1.58682 0.760187C1.52484 0.697702 1.45111 0.648106 1.36987 0.61426C1.28863 0.580414 1.20149 0.562988 1.11348 0.562988C1.02548 0.562988 0.938339 0.580414 0.8571 0.61426C0.77586 0.648106 0.702126 0.697702 0.640151 0.760187C0.515983 0.885095 0.446289 1.05406 0.446289 1.23019C0.446289 1.40631 0.515983 1.57528 0.640151 1.70019L3.94015 5.03352L0.640151 8.33352C0.515983 8.45843 0.446289 8.6274 0.446289 8.80352C0.446289 8.97964 0.515983 9.14861 0.640151 9.27352C0.701894 9.33651 0.775524 9.38663 0.856774 9.42096C0.938024 9.45529 1.02528 9.47315 1.11348 9.47352C1.20169 9.47315 1.28894 9.45529 1.37019 9.42096C1.45144 9.38663 1.52507 9.33651 1.58682 9.27352L5.36015 5.50685C5.42782 5.44443 5.48183 5.36866 5.51876 5.28432C5.5557 5.19999 5.57477 5.10892 5.57477 5.01685C5.57477 4.92479 5.5557 4.83372 5.51876 4.74938C5.48183 4.66505 5.42782 4.58928 5.36015 4.52685Z\" fill=\"#A4BBDD\"/>\n </svg>\n </ProfileLink>\n </ProfileCard>\n }\n </TopBarContainer>\n )\n}\n\nexport default LPTopBar\n","import React from \"react\"\nimport {LoaderContainer, Shimmer} from \"./style\";\nimport {LoaderType} from \"./type\";\n\nconst LoadingShimmer = (props:LoaderType) => {\n const {shape,width,height} = props\n if (shape == 'circular'){\n return (\n <LoaderContainer style={{borderRadius:'100%',width:!width?'100%':width,height:height}}>\n <Shimmer/>\n </LoaderContainer>\n )\n }\n return (\n <LoaderContainer style={{borderRadius:'8px',width:!width?'100%':width,height:height}}>\n <Shimmer/>\n </LoaderContainer>\n )\n}\n\nexport default LoadingShimmer\n","import React from \"react\"\nimport {\n EntityName,\n MarketNameFlagContainer,\n MarketDataItemContainer,\n MarketdataWidgetContainer,\n DataContainer, DataInfoContainer, InfoItem, LastUpdated,\n} from \"./style\";\nimport {MarketDataProps} from \"./type\";\n\nconst MarketData = (props:MarketDataProps) => {\n const {marketData} = props\n\n return (\n <>\n {marketData && marketData.length > 0 &&\n <MarketdataWidgetContainer>\n {marketData.map((data: { market:string, marketCountryFlag:string, volume:number, marketCap:number, lastUpdated:string },index:number) => (\n <MarketDataItemContainer key={index}>\n <MarketNameFlagContainer>\n <EntityName>{data.market}</EntityName>\n <img src={data.marketCountryFlag}\n alt=\"Country flag\"/>\n </MarketNameFlagContainer>\n <DataContainer>\n <DataInfoContainer>\n <InfoItem>\n <small>Volume</small>\n <p>{data.volume}</p>\n </InfoItem>\n <InfoItem>\n <small>Market Cap</small>\n <p>{data.marketCap}</p>\n </InfoItem>\n </DataInfoContainer>\n <LastUpdated>\n <p>\n Last updated:<br/>\n {data.lastUpdated}\n </p>\n </LastUpdated>\n </DataContainer>\n </MarketDataItemContainer>\n ))\n }\n </MarketdataWidgetContainer>\n }\n </>\n )\n}\n\nexport default MarketData\n","import React from \"react\";\nimport {DataSection, LastUpdated, MarketMoversContainer, MarketMoversWidget, Row} from \"./style\";\nimport {MarketMoversProps} from \"./type\";\nimport Tab from \"../Tab/Tab\";\n\nconst MarketMovers = (props:MarketMoversProps) => {\n const {movers,lastUpdated} = props\n\n const Top = (props:any) => {\n const {movers} = props\n return(\n <>\n {movers && movers.length > 0 &&\n <MarketMoversWidget>\n {movers.map((mover: { entityName:string, entityShortName:string, changeAmount:number, changePercent:number, entityPrice:number , type:string, marketFlag:string },index:number) => {\n if((mover.type).toLowerCase() === 'top'){\n return (\n <MarketMoversContainer key={index}>\n <div>\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M10.71 6.29C10.6149 6.19896 10.5028 6.12759 10.38 6.08C10.1365 5.97998 9.86347 5.97998 9.62 6.08C9.49725 6.12759 9.38511 6.19896 9.29 6.29L6.29 9.29C6.1017 9.4783 5.99591 9.7337 5.99591 10C5.99591 10.2663 6.1017 10.5217 6.29 10.71C6.47831 10.8983 6.7337 11.0041 7 11.0041C7.26631 11.0041 7.5217 10.8983 7.71 10.71L9 9.41V13C9 13.2652 9.10536 13.5196 9.2929 13.7071C9.48043 13.8946 9.73479 14 10 14C10.2652 14 10.5196 13.8946 10.7071 13.7071C10.8946 13.5196 11 13.2652 11 13V9.41L12.29 10.71C12.383 10.8037 12.4936 10.8781 12.6154 10.9289C12.7373 10.9797 12.868 11.0058 13 11.0058C13.132 11.0058 13.2627 10.9797 13.3846 10.9289C13.5064 10.8781 13.617 10.8037 13.71 10.71C13.8037 10.617 13.8781 10.5064 13.9289 10.3846C13.9797 10.2627 14.0058 10.132 14.0058 10C14.0058 9.86799 13.9797 9.73728 13.9289 9.61542C13.8781 9.49356 13.8037 9.38296 13.71 9.29L10.71 6.29ZM10 0C8.02219 0 6.08879 0.58649 4.4443 1.6853C2.79981 2.78412 1.51809 4.3459 0.761209 6.17317C0.00433284 8.00043 -0.193701 10.0111 0.192152 11.9509C0.578004 13.8907 1.53041 15.6725 2.92894 17.0711C4.32746 18.4696 6.10929 19.422 8.0491 19.8079C9.98891 20.1937 11.9996 19.9957 13.8268 19.2388C15.6541 18.4819 17.2159 17.2002 18.3147 15.5557C19.4135 13.9112 20 11.9778 20 10C20 8.68678 19.7413 7.38642 19.2388 6.17317C18.7363 4.95991 17.9997 3.85752 17.0711 2.92893C16.1425 2.00035 15.0401 1.26375 13.8268 0.761205C12.6136 0.258658 11.3132 0 10 0ZM10 18C8.41775 18 6.87104 17.5308 5.55544 16.6518C4.23985 15.7727 3.21447 14.5233 2.60897 13.0615C2.00347 11.5997 1.84504 9.99113 2.15372 8.43928C2.4624 6.88743 3.22433 5.46197 4.34315 4.34315C5.46197 3.22433 6.88743 2.4624 8.43928 2.15372C9.99113 1.84504 11.5997 2.00346 13.0615 2.60896C14.5233 3.21447 15.7727 4.23984 16.6518 5.55544C17.5308 6.87103 18 8.41775 18 10C18 12.1217 17.1572 14.1566 15.6569 15.6569C14.1566 17.1571 12.1217 18 10 18Z\" fill=\"#06BA63\"/>\n </svg>\n </div>\n <DataSection>\n <Row>\n <div className=\"entity-short-name\">\n <p>{mover.entityShortName}</p>\n </div>\n <div className=\"changeRatio\">\n <span className=\"success\">{mover.changeAmount}</span> / <span className=\"success\">{mover.changePercent}%</span>\n </div>\n </Row>\n <Row>\n <div className=\"entity-long-name\">\n <p>{mover.entityName}</p>\n <img src={mover.marketFlag} alt=\"Market flag\"/>\n </div>\n <div className=\"entity-price\">\n {mover.entityPrice}\n </div>\n </Row>\n </DataSection>\n </MarketMoversContainer>\n )\n }\n })}\n </MarketMoversWidget>\n }\n </>\n )\n }\n\n const Worst = (props:any) => {\n const {movers} = props\n return(\n <>\n {movers && movers.length > 0 &&\n <MarketMoversWidget>\n {movers.map((mover: { entityName:string, entityShortName:string, changeAmount:number, changePercent:number, entityPrice:number, type:string, marketFlag:string },index:number) => {\n if((mover.type).toLowerCase() === 'worst'){\n return (\n <MarketMoversContainer key={index}>\n <div>\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9.29 13.71C9.3851 13.801 9.49725 13.8724 9.62 13.92C9.86346 14.02 10.1365 14.02 10.38 13.92C10.5028 13.8724 10.6149 13.801 10.71 13.71L13.71 10.71C13.8983 10.5217 14.0041 10.2663 14.0041 10C14.0041 9.7337 13.8983 9.47831 13.71 9.29C13.5217 9.1017 13.2663 8.99591 13 8.99591C12.7337 8.99591 12.4783 9.1017 12.29 9.29L11 10.59V7C11 6.73479 10.8946 6.48043 10.7071 6.2929C10.5196 6.10536 10.2652 6 10 6C9.73478 6 9.48043 6.10536 9.29289 6.2929C9.10536 6.48043 9 6.73479 9 7V10.59L7.71 9.29C7.61704 9.19628 7.50644 9.12188 7.38458 9.07111C7.26272 9.02034 7.13201 8.99421 7 8.99421C6.86799 8.99421 6.73728 9.02034 6.61542 9.07111C6.49356 9.12188 6.38296 9.19628 6.29 9.29C6.19627 9.38297 6.12188 9.49357 6.07111 9.61543C6.02034 9.73729 5.9942 9.86799 5.9942 10C5.9942 10.132 6.02034 10.2627 6.07111 10.3846C6.12188 10.5064 6.19627 10.617 6.29 10.71L9.29 13.71ZM10 20C11.9778 20 13.9112 19.4135 15.5557 18.3147C17.2002 17.2159 18.4819 15.6541 19.2388 13.8268C19.9957 11.9996 20.1937 9.98891 19.8079 8.0491C19.422 6.10929 18.4696 4.32746 17.0711 2.92894C15.6725 1.53041 13.8907 0.578004 11.9509 0.192152C10.0111 -0.193701 8.00043 0.00433284 6.17317 0.761209C4.3459 1.51809 2.78412 2.79981 1.6853 4.4443C0.58649 6.08879 0 8.02219 0 10C0 12.6522 1.05357 15.1957 2.92893 17.0711C3.85752 17.9997 4.95991 18.7363 6.17317 19.2388C7.38642 19.7413 8.68678 20 10 20V20ZM10 2C11.5823 2 13.129 2.4692 14.4446 3.34825C15.7602 4.2273 16.7855 5.47673 17.391 6.93854C17.9965 8.40035 18.155 10.0089 17.8463 11.5607C17.5376 13.1126 16.7757 14.538 15.6569 15.6569C14.538 16.7757 13.1126 17.5376 11.5607 17.8463C10.0089 18.155 8.40034 17.9965 6.93853 17.391C5.47672 16.7855 4.22729 15.7602 3.34824 14.4446C2.46919 13.129 2 11.5823 2 10C2 7.87827 2.84285 5.84344 4.34315 4.34315C5.84344 2.84286 7.87827 2 10 2V2Z\" fill=\"#F80000\"/>\n </svg>\n </div>\n <DataSection>\n <Row>\n <div className=\"entity-short-name\">\n <p>{mover.entityShortName}</p>\n </div>\n <div className=\"changeRatio\">\n <span className=\"error\">{mover.changeAmount}</span> / <span className=\"error\">{mover.changePercent}%</span>\n </div>\n </Row>\n <Row>\n <div className=\"entity-long-name\">\n <p>{mover.entityName}</p>\n <img src={mover.marketFlag} alt=\"Market flag\"/>\n </div>\n <div className=\"entity-price\">\n {mover.entityPrice}\n </div>\n </Row>\n </DataSection>\n </MarketMoversContainer>\n )\n }\n })}\n </MarketMoversWidget>\n }\n </>\n )\n }\n\n const tabs = [\n {\n tabName:'Gainers',\n tabComponent:<Top movers={movers}/>\n },\n {\n tabName:'Losers',\n tabComponent:<Worst movers={movers}/>\n }\n ]\n\n return (\n <>\n <Tab tabs={tabs}/>\n {lastUpdated && <LastUpdated>Last updated on {lastUpdated}</LastUpdated>}\n </>\n )\n}\n\nexport default MarketMovers\n","import React from \"react\"\nimport {MenuBarContainer, MenuItems} from \"./style\";\nimport {MenuBarProps} from \"./type\";\n\nconst MenuBar = (props:MenuBarProps) => {\n const {menuItems,currentPageName} = props\n\n return (\n <>\n {menuItems && menuItems.length &&\n <MenuBarContainer>\n <MenuItems>\n {menuItems.map((menuItem:{label:string, url:string, pageName?:string},index:number) => (\n <a key={index} href={menuItem.url} className={`menu-item ${menuItem.pageName && menuItem.pageName.toLowerCase() === currentPageName && currentPageName.toLowerCase() ? 'active' : ''}`}>{menuItem.label}</a>\n ))}\n </MenuItems>\n </MenuBarContainer>\n }\n </>\n )\n}\n\nexport default MenuBar\n","import React from \"react\"\nimport {FeaturedImg, NewsCardContainer, NewsData, NewsExcerpt, NewsTitle, SourceDate} from \"./style\";\nimport {NewsProps} from \"./type\";\n\nconst NewsCard = (props:NewsProps) => {\n const {featuredImg,excerpt,source,sourceCountryFlag,title,date,storyUrl} = props\n return (\n <NewsCardContainer>\n <NewsData>\n <SourceDate>\n <div className=\"tag\">\n <span style={{marginRight:'8px'}}>\n <img src={sourceCountryFlag} alt=\"Source flag\"/>\n </span>\n {source}\n </div>\n <div className=\"tag\">{date}</div>\n </SourceDate>\n <a href={storyUrl}><NewsTitle>{title}</NewsTitle></a>\n <NewsExcerpt>{`${excerpt.substring(0,140)}...`}</NewsExcerpt>\n </NewsData>\n <FeaturedImg>\n <a href={storyUrl}><img src={featuredImg} alt=\"Featured image\" className=\"featured-img\" loading=\"lazy\"/></a>\n </FeaturedImg>\n </NewsCardContainer>\n )\n}\n\nexport default NewsCard\n","import React, {useState} from \"react\"\nimport {NewsFilters, TitleBarContainer} from \"./style\";\nimport DropdownList from \"../DropdownList/DropdownList\";\nimport {NewsFilterProps} from \"./type\";\n\nconst NewsFilterBar = (props:NewsFilterProps) => {\n const {countries,outlets,selectedCountryFxn,selectedOutletFxn} = props\n\n return (\n <TitleBarContainer {...props}>\n <h4 className=\"title-bar-text\">News</h4>\n <NewsFilters>\n {countries && countries.length > 0 &&\n <div className=\"filterContainer\">\n <DropdownList options={countries} returnedSelection={(selCountry:any) => {\n if (selectedCountryFxn) selectedCountryFxn(selCountry)\n }} initialText=\"Select Country\"/>\n </div>\n }\n {outlets && outlets.length > 0 &&\n <div className=\"filterContainer\">\n <DropdownList options={outlets} returnedSelection={(selOutlet:any) => {\n if (selectedOutletFxn) selectedOutletFxn(selOutlet)\n }} initialText=\"Select Outlet\"/>\n </div>\n }\n </NewsFilters>\n </TitleBarContainer>\n )\n}\n\nexport default NewsFilterBar\n","import {SourceDate} from \"./style\";\nimport React from \"react\";\nimport {TagProps} from \"./type\";\n\nconst NewsSourceTag = (props:TagProps) => {\n const {source,date,flag} = props\n\n return (\n <SourceDate>\n <div className=\"tag\">\n <span style={{marginRight:'8px'}}>\n <img src={flag} alt=\"Source flag\"/>\n </span>\n {source}\n </div>\n <div className=\"tag\">{date}</div>\n </SourceDate>\n )\n}\n\nexport default NewsSourceTag\n","import React from \"react\"\nimport {TitleBarContainer} from \"./style\";\nimport {NewsBarProps} from \"./type\";\n\nconst NewsTitleBar = (props:NewsBarProps) => {\n const {title} = props\n\n return (\n <TitleBarContainer {...props}>\n <h4 className=\"title-bar-text\">{title}</h4>\n </TitleBarContainer>\n )\n}\n\nexport default NewsTitleBar\n","import React, {useState} from \"react\"\nimport {InputLabel, InputContainer, InputField, ErrorMessage, ToggleButton} from \"./style\";\nimport {PasswordFieldProps} from \"./type\";\n\nconst PasswordField = (props:PasswordFieldProps) => {\n const {label,subtext,disabled,errMsg,setValue} = props\n\n const [passString,setPassString] = useState('')\n const [borderColor,setBorderColor] = useState('')\n const [err,setErr] = useState(false)\n const [showPw,setShowPw] = useState(false)\n\n function validate(){\n if (passString){\n setBorderColor('success')\n setErr(false)\n }else{\n setBorderColor('error')\n setErr(true)\n }\n }\n\n const style={\n display:'flex',\n flexDirection:'column',\n gap:'12px'\n } as any\n\n return (\n <div style={style}>\n {label &&\n <InputLabel>\n <label className={disabled ? 'disabled' : ''}>{label}</label>\n <span className={disabled ? 'disabled' : ''}>{subtext}</span>\n </InputLabel>\n }\n <InputContainer className={`${borderColor} ${disabled ? 'disabled' : ''}`}>\n <InputField type={!showPw ? 'password' : 'text'} value={passString} onChange={(e)=>{\n setValue(e.target.value)\n setPassString(e.target.value)\n }} onBlur={()=>{validate()}} disabled={disabled} {...props} required={true}/>\n <ToggleButton type=\"button\" onClick={()=>{setShowPw(!showPw)}}>\n {!showPw ?\n //eye\n <svg width=\"22\" height=\"16\" viewBox=\"0 0 22 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M20.9201 7.6C18.9001 2.91 15.1001 0 11.0001 0C6.90007 0 3.10007 2.91 1.08007 7.6C1.025 7.72617 0.996582 7.86234 0.996582 8C0.996582 8.13766 1.025 8.27383 1.08007 8.4C3.10007 13.09 6.90007 16 11.0001 16C15.1001 16 18.9001 13.09 20.9201 8.4C20.9751 8.27383 21.0036 8.13766 21.0036 8C21.0036 7.86234 20.9751 7.72617 20.9201 7.6ZM11.0001 14C7.83007 14 4.83007 11.71 3.10007 8C4.83007 4.29 7.83007 2 11.0001 2C14.1701 2 17.1701 4.29 18.9001 8C17.1701 11.71 14.1701 14 11.0001 14ZM11.0001 4C10.2089 4 9.43558 4.2346 8.77779 4.67412C8.11999 5.11365 7.6073 5.73836 7.30455 6.46927C7.0018 7.20017 6.92258 8.00444 7.07693 8.78036C7.23127 9.55628 7.61223 10.269 8.17164 10.8284C8.73105 11.3878 9.44378 11.7688 10.2197 11.9231C10.9956 12.0775 11.7999 11.9983 12.5308 11.6955C13.2617 11.3928 13.8864 10.8801 14.3259 10.2223C14.7655 9.56448 15.0001 8.79113 15.0001 8C15.0001 6.93913 14.5786 5.92172 13.8285 5.17157C13.0783 4.42143 12.0609 4 11.0001 4ZM11.0001 10C10.6045 10 10.2178 9.8827 9.88893 9.66294C9.56003 9.44318 9.30368 9.13082 9.15231 8.76537C9.00093 8.39991 8.96133 7.99778 9.0385 7.60982C9.11567 7.22186 9.30615 6.86549 9.58585 6.58579C9.86556 6.30608 10.2219 6.1156 10.6099 6.03843C10.9978 5.96126 11.4 6.00087 11.7654 6.15224C12.1309 6.30362 12.4432 6.55996 12.663 6.88886C12.8828 7.21776 13.0001 7.60444 13.0001 8C13.0001 8.53043 12.7894 9.03914 12.4143 9.41421C12.0392 9.78929 11.5305 10 11.0001 10Z\" fill=\"#070B12\"/>\n </svg>\n :\n //eye-slash\n <svg width=\"22\" height=\"22\" viewBox=\"0 0 22 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9.94018 5.07994C10.2909 5.02617 10.6453 4.99943 11.0002 4.99994C14.1802 4.99994 17.1702 7.28994 18.9102 10.9999C18.6441 11.5645 18.3435 12.1122 18.0102 12.6399C17.9044 12.8038 17.8487 12.9949 17.8502 13.1899C17.8524 13.4082 17.926 13.6197 18.0596 13.7922C18.1933 13.9647 18.3798 14.0888 18.5905 14.1455C18.8013 14.2021 19.0248 14.1883 19.227 14.106C19.4291 14.0238 19.5988 13.8776 19.7102 13.6899C20.1761 12.9579 20.5808 12.1886 20.9202 11.3899C20.9738 11.2652 21.0015 11.1308 21.0015 10.9949C21.0015 10.8591 20.9738 10.7247 20.9202 10.5999C18.9002 5.90994 15.1002 2.99994 11.0002 2.99994C10.5309 2.99758 10.0623 3.03774 9.60019 3.11994C9.46886 3.14227 9.34322 3.19024 9.23044 3.26112C9.11766 3.332 9.01994 3.4244 8.94287 3.53304C8.8658 3.64169 8.81088 3.76445 8.78125 3.89432C8.75162 4.02419 8.74786 4.15862 8.77018 4.28994C8.79251 4.42126 8.84048 4.5469 8.91136 4.65968C8.98224 4.77247 9.07464 4.87018 9.18329 4.94726C9.29193 5.02433 9.41469 5.07925 9.54456 5.10888C9.67443 5.13851 9.80886 5.14227 9.94018 5.11994V5.07994ZM2.71019 1.28994C2.61695 1.1967 2.50626 1.12274 2.38443 1.07228C2.26261 1.02182 2.13204 0.99585 2.00019 0.99585C1.86833 0.99585 1.73776 1.02182 1.61594 1.07228C1.49411 1.12274 1.38342 1.1967 1.29019 1.28994C1.10188 1.47824 0.996094 1.73364 0.996094 1.99994C0.996094 2.26624 1.10188 2.52164 1.29019 2.70994L4.39019 5.79994C2.97576 7.16147 1.85004 8.79393 1.08019 10.5999C1.02512 10.7261 0.996701 10.8623 0.996701 10.9999C0.996701 11.1376 1.02512 11.2738 1.08019 11.3999C3.10019 16.0899 6.90019 18.9999 11.0002 18.9999C12.7973 18.9875 14.552 18.4524 16.0502 17.4599L19.2902 20.7099C19.3831 20.8037 19.4937 20.8781 19.6156 20.9288C19.7375 20.9796 19.8682 21.0057 20.0002 21.0057C20.1322 21.0057 20.2629 20.9796 20.3848 20.9288C20.5066 20.8781 20.6172 20.8037 20.7102 20.7099C20.8039 20.617 20.8783 20.5064 20.9291 20.3845C20.9798 20.2627 21.006 20.132 21.006 19.9999C21.006 19.8679 20.9798 19.7372 20.9291 19.6154C20.8783 19.4935 20.8039 19.3829 20.7102 19.2899L2.71019 1.28994ZM9.07018 10.4799L11.5202 12.9299C11.3512 12.9784 11.176 13.002 11.0002 12.9999C10.4698 12.9999 9.96104 12.7892 9.58597 12.4142C9.2109 12.0391 9.00019 11.5304 9.00019 10.9999C8.99814 10.8241 9.02172 10.649 9.07018 10.4799ZM11.0002 16.9999C7.82018 16.9999 4.83019 14.7099 3.10019 10.9999C3.74627 9.57369 4.66326 8.28652 5.80019 7.20994L7.57019 8.99994C7.15443 9.75874 6.99592 10.6319 7.11844 11.4884C7.24096 12.3449 7.6379 13.1386 8.24971 13.7504C8.86152 14.3622 9.65522 14.7592 10.5117 14.8817C11.3682 15.0042 12.2414 14.8457 13.0002 14.4299L14.5902 15.9999C13.5013 16.6408 12.2636 16.9856 11.0002 16.9999Z\" fill=\"#070B12\"/>\n </svg>\n }\n\n </ToggleButton>\n </InputContainer>\n {!passString && err &&\n <ErrorMessage>\n {/*exclamation-triangle*/}\n <svg width=\"16\" height=\"14\" viewBox=\"0 0 16 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M8.00006 9.66669C7.86821 9.66669 7.73931 9.70578 7.62968 9.77904C7.52005 9.85229 7.4346 9.95641 7.38414 10.0782C7.33368 10.2 7.32048 10.3341 7.3462 10.4634C7.37193 10.5927 7.43542 10.7115 7.52866 10.8048C7.62189 10.898 7.74068 10.9615 7.87 10.9872C7.99932 11.0129 8.13336 10.9997 8.25518 10.9493C8.377 10.8988 8.48112 10.8134 8.55437 10.7037C8.62763 10.5941 8.66673 10.4652 8.66673 10.3334C8.66673 10.1565 8.59649 9.98697 8.47146 9.86195C8.34644 9.73692 8.17687 9.66669 8.00006 9.66669ZM15.1134 10.6467L9.74673 1.31335C9.57326 1.00236 9.31992 0.743323 9.01285 0.562997C8.70579 0.382672 8.35615 0.287598 8.00006 0.287598C7.64396 0.287598 7.29433 0.382672 6.98726 0.562997C6.6802 0.743323 6.42686 1.00236 6.25339 1.31335L0.92006 10.6467C0.74059 10.9494 0.644155 11.294 0.640489 11.6459C0.636824 11.9978 0.726058 12.3444 0.899184 12.6507C1.07231 12.9571 1.3232 13.2123 1.62652 13.3907C1.92984 13.5691 2.27485 13.6643 2.62673 13.6667H13.3734C13.7281 13.6702 14.0773 13.5793 14.3853 13.4033C14.6933 13.2273 14.949 12.9726 15.126 12.6652C15.3031 12.3579 15.3953 12.009 15.3931 11.6542C15.3908 11.2995 15.2943 10.9518 15.1134 10.6467ZM13.9601 11.98C13.9016 12.084 13.8164 12.1704 13.7132 12.2302C13.61 12.29 13.4927 12.321 13.3734 12.32H2.62673C2.50747 12.321 2.39013 12.29 2.28694 12.2302C2.18375 12.1704 2.0985 12.084 2.04006 11.98C1.98155 11.8787 1.95074 11.7637 1.95074 11.6467C1.95074 11.5297 1.98155 11.4147 2.04006 11.3134L7.37339 1.98002C7.42934 1.87082 7.51433 1.77917 7.61902 1.71518C7.72371 1.65119 7.84403 1.61733 7.96673 1.61733C8.08942 1.61733 8.20974 1.65119 8.31443 1.71518C8.41912 1.77917 8.50411 1.87082 8.56006 1.98002L13.9267 11.3134C13.9929 11.4132 14.0309 11.5291 14.0367 11.6488C14.0426 11.7684 14.0161 11.8875 13.9601 11.9934V11.98ZM8.00006 4.33335C7.82325 4.33335 7.65368 4.40359 7.52866 4.52861C7.40363 4.65364 7.33339 4.82321 7.33339 5.00002V7.66669C7.33339 7.8435 7.40363 8.01307 7.52866 8.13809C7.65368 8.26311 7.82325 8.33335 8.00006 8.33335C8.17687 8.33335 8.34644 8.26311 8.47146 8.13809C8.59649 8.01307 8.66673 7.8435 8.66673 7.66669V5.00002C8.66673 4.82321 8.59649 4.65364 8.47146 4.52861C8.34644 4.40359 8.17687 4.33335 8.00006 4.33335Z\" fill=\"#F80000\"/>\n </svg>\n {errMsg ? errMsg : 'This field is required'}\n </ErrorMessage>\n }\n </div>\n )\n}\n\nexport default PasswordField\n","import React from \"react\";\nimport {TableContainer, Table, NothingContainer, NothingContent} from \"./style\";\nimport {PaymentMethodsProps} from \"./type\";\n\nconst PaymentMethodsTable = (props:PaymentMethodsProps) => {\n const {methods,callback} = props\n return (\n <TableContainer>\n <Table>\n <thead>\n <tr className=\"rounded-row\">\n <th>Code</th>\n <th>Name</th>\n <th>Short Name</th>\n <th>Remarks</th>\n </tr>\n </thead>\n {methods && methods.length > 0 &&\n <tbody>\n {methods.map((method: { pymtModeCode:string, pymtModeName:string, pymtModeShortName:string, remarks:string },index:number) => (\n <tr key={index} className=\"rounded-row\" onClick={()=>{callback(method)}}>\n <td>{method.pymtModeCode}</td>\n <td>{method.pymtModeName}</td>\n <td>{method.pymtModeShortName}</td>\n <td>\n <div>\n {method.remarks ? method.remarks : '-'}\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M10.3592 7.52685L6.58584 3.76019C6.52387 3.6977 6.45013 3.64811 6.36889 3.61426C6.28765 3.58041 6.20052 3.56299 6.11251 3.56299C6.0245 3.56299 5.93736 3.58041 5.85612 3.61426C5.77488 3.64811 5.70115 3.6977 5.63917 3.76019C5.51501 3.8851 5.44531 4.05406 5.44531 4.23019C5.44531 4.40631 5.51501 4.57528 5.63917 4.70019L8.93917 8.03352L5.63917 11.3335C5.51501 11.4584 5.44531 11.6274 5.44531 11.8035C5.44531 11.9796 5.51501 12.1486 5.63917 12.2735C5.70092 12.3365 5.77455 12.3866 5.8558 12.421C5.93705 12.4553 6.0243 12.4732 6.11251 12.4735C6.20071 12.4732 6.28797 12.4553 6.36922 12.421C6.45047 12.3866 6.5241 12.3365 6.58584 12.2735L10.3592 8.50685C10.4268 8.44443 10.4808 8.36866 10.5178 8.28432C10.5547 8.19999 10.5738 8.10892 10.5738 8.01685C10.5738 7.92479 10.5547 7.83372 10.5178 7.74938C10.4808 7.66505 10.4268 7.58928 10.3592 7.52685Z\" fill=\"#A4BBDD\"/>\n </svg>\n </div>\n </td>\n </tr>\n ))}\n </tbody>\n }\n </Table>\n {methods && methods.length === 0 &&\n <NothingContainer>\n <NothingContent>\n <svg width=\"65\" height=\"64\" viewBox=\"0 0 65 64\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clipPath=\"url(#clip0_651_2393)\">\n <path d=\"M39.5 6H25.5V14H39.5V6Z\" fill=\"#E8EEF7\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M41.5006 6C41.5006 4.895 40.6046 4 39.5 4H25.5C24.3954 4 23.4994 4.895 23.4994 6V14C23.4994 15.105 24.3954 16 25.5 16H39.5C40.6046 16 41.5006 15.105 41.5006 14V6ZM27.5006 8V12H37.4994V8H27.5006Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M49.5 56C49.5 54.896 50.396 54 51.5 54C52.604 54 53.5 54.896 53.5 56V58C53.5 59.105 52.605 60 51.5 60H13.5C12.395 60 11.5 59.105 11.5 58V10C11.5 8.895 12.395 8 13.5 8H25.5C26.605 8 27.5 8.895 27.5 10V12H37.5V10C37.5 8.895 38.395 8 39.5 8H51.5C52.605 8 53.5 8.895 53.5 10V48C53.5 49.104 52.604 50 51.5 50C50.396 50 49.5 49.104 49.5 48V12H41.5V14C41.5 15.105 40.605 16 39.5 16H25.5C24.395 16 23.5 15.105 23.5 14V12H15.5V56H49.5Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M23.5 27H41.5C42.604 27 43.5 26.104 43.5 25C43.5 23.896 42.604 23 41.5 23H23.5C22.396 23 21.5 23.896 21.5 25C21.5 26.104 22.396 27 23.5 27Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M23.5 38H41.5C42.604 38 43.5 37.104 43.5 36C43.5 34.896 42.604 34 41.5 34H23.5C22.396 34 21.5 34.896 21.5 36C21.5 37.104 22.396 38 23.5 38Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M23.5 49H41.5C42.604 49 43.5 48.104 43.5 47C43.5 45.896 42.604 45 41.5 45H23.5C22.396 45 21.5 45.896 21.5 47C21.5 48.104 22.396 49 23.5 49Z\" fill=\"#D2DDEE\"/>\n </g>\n <defs>\n <clipPath id=\"clip0_651_2393\">\n <rect width=\"64\" height=\"64\" fill=\"white\" transform=\"translate(0.5)\"/>\n </clipPath>\n </defs>\n </svg>\n <p>Payment methods will be displayed here when you have any.</p>\n </NothingContent>\n </NothingContainer>\n }\n </TableContainer>\n )\n}\n\nexport default PaymentMethodsTable\n","import React from \"react\";\nimport {TableContainer, Table, NothingContainer, NothingContent} from \"./style\";\nimport {ProvidersProps,Status} from \"./type\";\nimport StatusBadge from \"../StatusBadge/StatusBadge\";\n\nconst ProvidersTable = (props:ProvidersProps) => {\n const {providers,callback} = props\n return (\n <TableContainer>\n <Table>\n <thead>\n <tr className=\"rounded-row\">\n <th>Name</th>\n <th>Email</th>\n <th>Phone</th>\n <th>Status</th>\n </tr>\n </thead>\n {providers && providers.length > 0 &&\n <tbody>\n {providers.map((provider: { name:string, email:string, phone:string, status: Status},index:number) => (\n <tr key={index} className=\"rounded-row\" onClick={()=>{callback(provider)}}>\n <td>{provider.name}</td>\n <td>{provider.email}</td>\n <td>{provider.phone}</td>\n <td>\n <div>\n <StatusBadge status={provider.status === 'active' ? 'success' : 'error'} label={provider.status.toUpperCase()}/>\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M10.3592 7.52685L6.58584 3.76019C6.52387 3.6977 6.45013 3.64811 6.36889 3.61426C6.28765 3.58041 6.20052 3.56299 6.11251 3.56299C6.0245 3.56299 5.93736 3.58041 5.85612 3.61426C5.77488 3.64811 5.70115 3.6977 5.63917 3.76019C5.51501 3.8851 5.44531 4.05406 5.44531 4.23019C5.44531 4.40631 5.51501 4.57528 5.63917 4.70019L8.93917 8.03352L5.63917 11.3335C5.51501 11.4584 5.44531 11.6274 5.44531 11.8035C5.44531 11.9796 5.51501 12.1486 5.63917 12.2735C5.70092 12.3365 5.77455 12.3866 5.8558 12.421C5.93705 12.4553 6.0243 12.4732 6.11251 12.4735C6.20071 12.4732 6.28797 12.4553 6.36922 12.421C6.45047 12.3866 6.5241 12.3365 6.58584 12.2735L10.3592 8.50685C10.4268 8.44443 10.4808 8.36866 10.5178 8.28432C10.5547 8.19999 10.5738 8.10892 10.5738 8.01685C10.5738 7.92479 10.5547 7.83372 10.5178 7.74938C10.4808 7.66505 10.4268 7.58928 10.3592 7.52685Z\" fill=\"#A4BBDD\"/>\n </svg>\n </div>\n </td>\n </tr>\n ))}\n </tbody>\n }\n </Table>\n {providers && providers.length == 0 &&\n <NothingContainer>\n <NothingContent>\n <svg width=\"65\" height=\"64\" viewBox=\"0 0 65 64\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clipPath=\"url(#clip0_651_2393)\">\n <path d=\"M39.5 6H25.5V14H39.5V6Z\" fill=\"#E8EEF7\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M41.5006 6C41.5006 4.895 40.6046 4 39.5 4H25.5C24.3954 4 23.4994 4.895 23.4994 6V14C23.4994 15.105 24.3954 16 25.5 16H39.5C40.6046 16 41.5006 15.105 41.5006 14V6ZM27.5006 8V12H37.4994V8H27.5006Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M49.5 56C49.5 54.896 50.396 54 51.5 54C52.604 54 53.5 54.896 53.5 56V58C53.5 59.105 52.605 60 51.5 60H13.5C12.395 60 11.5 59.105 11.5 58V10C11.5 8.895 12.395 8 13.5 8H25.5C26.605 8 27.5 8.895 27.5 10V12H37.5V10C37.5 8.895 38.395 8 39.5 8H51.5C52.605 8 53.5 8.895 53.5 10V48C53.5 49.104 52.604 50 51.5 50C50.396 50 49.5 49.104 49.5 48V12H41.5V14C41.5 15.105 40.605 16 39.5 16H25.5C24.395 16 23.5 15.105 23.5 14V12H15.5V56H49.5Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M23.5 27H41.5C42.604 27 43.5 26.104 43.5 25C43.5 23.896 42.604 23 41.5 23H23.5C22.396 23 21.5 23.896 21.5 25C21.5 26.104 22.396 27 23.5 27Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M23.5 38H41.5C42.604 38 43.5 37.104 43.5 36C43.5 34.896 42.604 34 41.5 34H23.5C22.396 34 21.5 34.896 21.5 36C21.5 37.104 22.396 38 23.5 38Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M23.5 49H41.5C42.604 49 43.5 48.104 43.5 47C43.5 45.896 42.604 45 41.5 45H23.5C22.396 45 21.5 45.896 21.5 47C21.5 48.104 22.396 49 23.5 49Z\" fill=\"#D2DDEE\"/>\n </g>\n <defs>\n <clipPath id=\"clip0_651_2393\">\n <rect width=\"64\" height=\"64\" fill=\"white\" transform=\"translate(0.5)\"/>\n </clipPath>\n </defs>\n </svg>\n <p>Providers will be displayed here when you have any.</p>\n </NothingContent>\n </NothingContainer>\n }\n </TableContainer>\n )\n}\n\nexport default ProvidersTable\n","import React from \"react\"\nimport {RateContainer, Currencies, Dates, Rates, Container, EmptyContainer} from \"./style\";\nimport {RateHistoryProps} from \"./type\";\n\nconst RateHistory = (props:RateHistoryProps) => {\n const {ratePairs} = props\n\n return (\n <>\n {ratePairs && ratePairs.length > 0 &&\n <Container>\n {ratePairs.map((rate: { baseFlag:string,\n baseCurrency:string,\n exchangeFlag:string,\n exchangeCurrency:string,\n baseRate:number,\n exchangeRate:number,\n startDate:string,\n endDate:string },index:number)=>(\n <RateContainer key={index}>\n <Currencies>\n\n <div className=\"currency\">\n {rate.baseFlag && <img src={rate.baseFlag} alt=\"\"/>} {rate.baseCurrency}\n </div>\n\n {/*icon-exchange*/}\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M17.9999 10C17.9999 9.73479 17.8945 9.48043 17.707 9.2929C17.5195 9.10536 17.2651 9 16.9999 9H5.4099L7.7099 6.71C7.8982 6.5217 8.00399 6.2663 8.00399 6C8.00399 5.7337 7.8982 5.47831 7.7099 5.29C7.52159 5.1017 7.2662 4.99591 6.9999 4.99591C6.73359 4.99591 6.4782 5.1017 6.2899 5.29L2.2899 9.29C2.15114 9.43063 2.05714 9.6092 2.01977 9.80319C1.98239 9.99718 2.00332 10.1979 2.0799 10.38C2.15492 10.5626 2.28231 10.7189 2.44603 10.8293C2.60975 10.9396 2.80247 10.999 2.9999 11H16.9999C17.2651 11 17.5195 10.8946 17.707 10.7071C17.8945 10.5196 17.9999 10.2652 17.9999 10ZM21.9199 13.62C21.8449 13.4374 21.7175 13.2811 21.5538 13.1707C21.39 13.0604 21.1973 13.001 20.9999 13H6.9999C6.73468 13 6.48033 13.1054 6.29279 13.2929C6.10525 13.4804 5.9999 13.7348 5.9999 14C5.9999 14.2652 6.10525 14.5196 6.29279 14.7071C6.48033 14.8946 6.73468 15 6.9999 15H18.5899L16.2899 17.29C16.1962 17.383 16.1218 17.4936 16.071 17.6154C16.0202 17.7373 15.9941 17.868 15.9941 18C15.9941 18.132 16.0202 18.2627 16.071 18.3846C16.1218 18.5064 16.1962 18.617 16.2899 18.71C16.3829 18.8037 16.4935 18.8781 16.6153 18.9289C16.7372 18.9797 16.8679 19.0058 16.9999 19.0058C17.1319 19.0058 17.2626 18.9797 17.3845 18.9289C17.5063 18.8781 17.6169 18.8037 17.7099 18.71L21.7099 14.71C21.8487 14.5694 21.9426 14.3908 21.98 14.1968C22.0174 14.0028 21.9965 13.8021 21.9199 13.62Z\" fill=\"#BBCCE6\"/>\n </svg>\n <div className=\"currency\">\n {rate.exchangeFlag && <img src={rate.exchangeFlag} alt=\"\"/>} {rate.exchangeCurrency}\n </div>\n </Currencies>\n <Rates>\n <p>Buy Rate: {Number(rate.baseRate).toFixed(4)}</p> | <p>Sell Rate: {Number(rate.exchangeRate).toFixed(4)}</p>\n </Rates>\n <Dates>\n <p>{rate.startDate}</p> to <p>{rate.endDate}</p>\n </Dates>\n </RateContainer>\n ))}\n </Container>\n }\n {ratePairs && ratePairs.length === 0 &&\n <EmptyContainer>\n <svg width=\"64\" height=\"64\" viewBox=\"0 0 64 64\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clipPath=\"url(#clip0_1126_91)\">\n <path d=\"M39 6H25V14H39V6Z\" fill=\"#E8EEF7\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M41.0006 6C41.0006 4.895 40.1046 4 39 4H25C23.8954 4 22.9994 4.895 22.9994 6V14C22.9994 15.105 23.8954 16 25 16H39C40.1046 16 41.0006 15.105 41.0006 14V6ZM27.0006 8V12H36.9994V8H27.0006Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M49 56C49 54.896 49.896 54 51 54C52.104 54 53 54.896 53 56V58C53 59.105 52.105 60 51 60H13C11.895 60 11 59.105 11 58V10C11 8.895 11.895 8 13 8H25C26.105 8 27 8.895 27 10V12H37V10C37 8.895 37.895 8 39 8H51C52.105 8 53 8.895 53 10V48C53 49.104 52.104 50 51 50C49.896 50 49 49.104 49 48V12H41V14C41 15.105 40.105 16 39 16H25C23.895 16 23 15.105 23 14V12H15V56H49Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M23 27H41C42.104 27 43 26.104 43 25C43 23.896 42.104 23 41 23H23C21.896 23 21 23.896 21 25C21 26.104 21.896 27 23 27Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M23 38H41C42.104 38 43 37.104 43 36C43 34.896 42.104 34 41 34H23C21.896 34 21 34.896 21 36C21 37.104 21.896 38 23 38Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M23 49H41C42.104 49 43 48.104 43 47C43 45.896 42.104 45 41 45H23C21.896 45 21 45.896 21 47C21 48.104 21.896 49 23 49Z\" fill=\"#D2DDEE\"/>\n </g>\n <defs>\n <clipPath id=\"clip0_1126_91\">\n <rect width=\"64\" height=\"64\" fill=\"white\"/>\n </clipPath>\n </defs>\n </svg>\n Rates history shall be displayed here when available\n </EmptyContainer>\n }\n </>\n )\n}\n\nexport default RateHistory\n","import React, {useEffect, useState} from \"react\"\nimport {Container, FormField} from \"./style\"\nimport {Button} from \"../Button\";\nimport TextField from \"../TextField/TextField\";\nimport CountrySelector from \"../CountrySelector/CountrySelector\";\nimport {RequestFormProps} from \"./type\";\n\nconst RequestForm = (props:RequestFormProps) => {\n const {symbols,currencies,returnedData} = props\n const [selSymbol,setSelSymbol]:any = useState({})\n const [qty,setQty] = useState('')\n const [baseCurrency,setBaseCurrency]:any = useState({})\n const [price,setPrice] = useState('')\n\n const [fmtdSymbl,setFmtdSymbl]:any = useState([])\n const [fmtdCurr,setFmtdCurr]:any = useState([])\n\n useEffect(()=>{\n let tempFmtd:any = []\n symbols.forEach((symbol:{name:string,shortName:string,countryFlag?:string,price:string}) => {\n let temp = {\n optionName:symbol.name,\n optionShortName:symbol.shortName,\n optionFlag:symbol.countryFlag,\n price:symbol.price\n }\n tempFmtd.push(temp)\n })\n setFmtdSymbl(tempFmtd)\n },[symbols])\n\n useEffect(()=>{\n let tempFmtd:any = []\n currencies.forEach((currency:{currencyShortName:string, currencyLongName:string, countryFlag?:string}) => {\n let temp = {\n optionName:currency.currencyLongName,\n optionShortName:currency.currencyShortName,\n optionFlag:currency.countryFlag\n }\n tempFmtd.push(temp)\n })\n setFmtdCurr(tempFmtd)\n },[currencies])\n\n function compileInput(){\n if (Object.keys(selSymbol).length > 0 && Object.keys(baseCurrency).length > 0 && qty){\n const data = {\n symbol:selSymbol,\n quantity:Number(qty),\n baseCurrency:baseCurrency\n }\n returnedData(data)\n }\n }\n\n return (\n <Container>\n <FormField>\n <label>Symbol</label>\n <CountrySelector options={fmtdSymbl} selectedOption={(symb)=>{\n setSelSymbol(symb)\n setPrice(symb.price)\n }} initialText=\"Select a symbol\"/>\n </FormField>\n <FormField>\n <label>Price</label>\n <TextField required={false} value={price} disabled/>\n </FormField>\n <FormField>\n <label>Quantity</label>\n <TextField required={false} onChange={(e)=>{setQty(e.target.value)}} value={qty}/>\n </FormField>\n <FormField>\n {/*<label>Base Currency</label>*/}\n <label>Currency I have</label>\n <CountrySelector options={fmtdCurr} selectedOption={(curr)=>{setBaseCurrency(curr)}} initialText=\"Select a currency\"/>\n </FormField>\n <FormField>\n <Button size=\"lg\" variant=\"primary\" onClick={compileInput}>View Offers</Button>\n </FormField>\n </Container>\n )\n}\n\nexport default RequestForm\n","import React from \"react\";\nimport {RibbonContainer,RibbonItem} from \"./style\";\nimport {LinksType} from \"./type\";\n\nconst Ribbon = (props:LinksType) => {\n const {links} = props\n\n return (\n <>\n {links && links.length > 0 &&\n <RibbonContainer>\n {links.map((link: {label:string,url:string},index:number) => (\n <RibbonItem key={index} href={link.url}>{link.label}</RibbonItem>\n ))}\n </RibbonContainer>\n }\n </>\n )\n}\n\nexport default Ribbon\n","import React from \"react\"\nimport {SearchBarContainer, SearchBox,SearchButton} from \"./style\";\nimport {SearchProps} from \"./type\";\n\nconst SearchBar = (props:SearchProps) => {\n const {value,submitFxn} = props\n\n\n return (\n <form onSubmit={(e)=>{\n e.preventDefault()\n submitFxn()\n }}>\n <SearchBarContainer>\n <SearchBox type=\"search\" placeholder=\"Search\" value={value} {...props}/>\n <SearchButton type=\"submit\">\n <svg width=\"21\" height=\"21\" viewBox=\"0 0 21 21\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M20.21 19.29L16.5 15.61C17.9401 13.8144 18.6375 11.5353 18.4488 9.2413C18.2601 6.9473 17.1997 4.81278 15.4855 3.27664C13.7714 1.74051 11.5338 0.91951 9.23292 0.98247C6.93203 1.04543 4.74272 1.98756 3.11514 3.61514C1.48756 5.24272 0.545427 7.43204 0.482466 9.73292C0.419506 12.0338 1.2405 14.2714 2.77664 15.9855C4.31278 17.6997 6.4473 18.7601 8.7413 18.9488C11.0353 19.1375 13.3144 18.4401 15.11 17L18.79 20.68C18.883 20.7737 18.9936 20.8481 19.1154 20.8989C19.2373 20.9497 19.368 20.9758 19.5 20.9758C19.632 20.9758 19.7627 20.9497 19.8846 20.8989C20.0064 20.8481 20.117 20.7737 20.21 20.68C20.3902 20.4935 20.491 20.2443 20.491 19.985C20.491 19.7257 20.3902 19.4765 20.21 19.29V19.29ZM9.5 17C8.11553 17 6.76215 16.5895 5.611 15.8203C4.45986 15.0511 3.56265 13.9579 3.03284 12.6788C2.50303 11.3997 2.3644 9.99223 2.6345 8.63437C2.9046 7.2765 3.57128 6.02922 4.55025 5.05025C5.52922 4.07128 6.7765 3.4046 8.13436 3.1345C9.49223 2.86441 10.8997 3.00303 12.1788 3.53284C13.4579 4.06266 14.5511 4.95986 15.3203 6.11101C16.0895 7.26215 16.5 8.61553 16.5 10C16.5 11.8565 15.7625 13.637 14.4497 14.9497C13.137 16.2625 11.3565 17 9.5 17V17Z\" fill=\"#F7F9FC\"/>\n </svg>\n </SearchButton>\n </SearchBarContainer>\n </form>\n )\n}\n\nexport default SearchBar\n","import React from \"react\"\nimport {TitleBarContainer} from \"./style\";\nimport {NewsBarProps} from \"./type\";\n\nconst SearchResultsBar = (props:NewsBarProps) => {\n const {title,resultsDisplayed,totalRes} = props\n\n return (\n <TitleBarContainer>\n <div className=\"search-term\">\n Search Term: \"{title}\"\n </div>\n <div className=\"results-count\">\n Showing {resultsDisplayed} of {totalRes} results\n </div>\n </TitleBarContainer>\n )\n}\n\nexport default SearchResultsBar\n","import React from \"react\"\nimport {ModalBackdrop, NavSection, SideModalContainer, Button, ModalContent, ModalTitleArea} from \"./style\";\nimport {SideModalProps} from \"./type\";\n\nconst SideModal = (props:SideModalProps) => {\n const {disabledNav,modalTitle,modalSubText,closeModal,children} = props\n return (\n <ModalBackdrop>\n <SideModalContainer>\n <NavSection>\n <Button disabled={disabledNav}>\n {/*arrow-left*/}\n {!disabledNav &&\n <svg width=\"12\" height=\"14\" viewBox=\"0 0 12 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M11 6H3.41L6.71 2.71C6.89831 2.5217 7.00409 2.2663 7.00409 2C7.00409 1.7337 6.89831 1.47831 6.71 1.29C6.5217 1.1017 6.2663 0.995911 6 0.995911C5.7337 0.995911 5.47831 1.1017 5.29 1.29L0.290003 6.29C0.198963 6.38511 0.127598 6.49725 0.0800031 6.62C-0.0200149 6.86346 -0.0200149 7.13654 0.0800031 7.38C0.127598 7.50275 0.198963 7.6149 0.290003 7.71L5.29 12.71C5.38297 12.8037 5.49357 12.8781 5.61543 12.9289C5.73729 12.9797 5.86799 13.0058 6 13.0058C6.13202 13.0058 6.26272 12.9797 6.38458 12.9289C6.50644 12.8781 6.61704 12.8037 6.71 12.71C6.80373 12.617 6.87813 12.5064 6.92889 12.3846C6.97966 12.2627 7.0058 12.132 7.0058 12C7.0058 11.868 6.97966 11.7373 6.92889 11.6154C6.87813 11.4936 6.80373 11.383 6.71 11.29L3.41 8H11C11.2652 8 11.5196 7.89465 11.7071 7.70711C11.8946 7.51957 12 7.26522 12 7C12 6.73479 11.8946 6.48043 11.7071 6.2929C11.5196 6.10536 11.2652 6 11 6Z\" fill=\"#070B12\"/>\n </svg>\n }\n {disabledNav &&\n <svg width=\"12\" height=\"14\" viewBox=\"0 0 12 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M11 6H3.41L6.71 2.71C6.89831 2.5217 7.00409 2.2663 7.00409 2C7.00409 1.7337 6.89831 1.47831 6.71 1.29C6.5217 1.1017 6.2663 0.995911 6 0.995911C5.7337 0.995911 5.47831 1.1017 5.29 1.29L0.290003 6.29C0.198963 6.38511 0.127598 6.49725 0.0800031 6.62C-0.0200149 6.86346 -0.0200149 7.13654 0.0800031 7.38C0.127598 7.50275 0.198963 7.6149 0.290003 7.71L5.29 12.71C5.38297 12.8037 5.49357 12.8781 5.61543 12.9289C5.73729 12.9797 5.86799 13.0058 6 13.0058C6.13202 13.0058 6.26272 12.9797 6.38458 12.9289C6.50644 12.8781 6.61704 12.8037 6.71 12.71C6.80373 12.617 6.87813 12.5064 6.92889 12.3846C6.97966 12.2627 7.0058 12.132 7.0058 12C7.0058 11.868 6.97966 11.7373 6.92889 11.6154C6.87813 11.4936 6.80373 11.383 6.71 11.29L3.41 8H11C11.2652 8 11.5196 7.89465 11.7071 7.70711C11.8946 7.51957 12 7.26522 12 7C12 6.73479 11.8946 6.48043 11.7071 6.2929C11.5196 6.10536 11.2652 6 11 6Z\" fill=\"#070B12\"/>\n </svg>\n }\n\n Go Back</Button>\n <Button onClick={()=>{closeModal(false)}}>\n {/*times*/}\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7.4 6L11.7 1.7C12.1 1.3 12.1 0.7 11.7 0.3C11.3 -0.1 10.7 -0.1 10.3 0.3L6 4.6L1.7 0.3C1.3 -0.1 0.7 -0.1 0.3 0.3C-0.0999998 0.7 -0.0999998 1.3 0.3 1.7L4.6 6L0.3 10.3C0.1 10.5 0 10.7 0 11C0 11.6 0.4 12 1 12C1.3 12 1.5 11.9 1.7 11.7L6 7.4L10.3 11.7C10.5 11.9 10.7 12 11 12C11.3 12 11.5 11.9 11.7 11.7C12.1 11.3 12.1 10.7 11.7 10.3L7.4 6Z\" fill=\"#070B12\"/>\n </svg>\n </Button>\n </NavSection>\n <ModalContent>\n {modalTitle &&\n <ModalTitleArea>\n <h3 className=\"title\">{modalTitle}</h3>\n <p className=\"sub-text\">{modalSubText}</p>\n </ModalTitleArea>\n }\n {children}\n </ModalContent>\n </SideModalContainer>\n </ModalBackdrop>\n )\n}\n\nexport default SideModal\n","import React from \"react\"\nimport {FeaturedImage, NewsTitle, SmallNewsCardContainer, SourceDate, TitleSource} from \"./style\";\nimport {SmallNewsCardProps} from \"./type\";\n\nconst SmallNewsCard = (props:SmallNewsCardProps) => {\n const {title,date,source,sourceCountryFlagUrl,featuredImgUrl,storyUrl} = props\n\n return (\n <SmallNewsCardContainer>\n <a href={storyUrl}><FeaturedImage src={featuredImgUrl}/></a>\n <TitleSource>\n <a href={storyUrl}><NewsTitle>{title}</NewsTitle></a>\n <SourceDate>\n <div className=\"tag\">\n <span style={{marginRight:'8px'}}>\n <img src={sourceCountryFlagUrl} alt=\"Source flag\"/>\n </span>\n {source}\n </div>\n <div className=\"tag\">{date}</div>\n </SourceDate>\n </TitleSource>\n </SmallNewsCardContainer>\n )\n}\n\nexport default SmallNewsCard\n","import React from \"react\"\nimport Marquee from \"react-fast-marquee\";\nimport {TickerItem, TickerTrack} from \"./style\";\nimport {StocksType} from \"./type\";\n\nconst StocksTicker = (props:StocksType) => {\n const {stocksData} = props\n\n function changeIndicator(priceChange:number){\n if (priceChange < 0){\n return 'error'\n }else if(priceChange > 0){\n return 'success'\n }else{\n return ''\n }\n }\n\n function getMarket(country:string){\n if (country === 'GH'){\n return 'GSE'\n }\n if (country === 'KE'){\n return 'KSE'\n }\n if (country === 'NG'){\n return 'NGX'\n }\n }\n\n return (\n <>\n {stocksData && stocksData.length > 0 &&\n <Marquee speed={30} pauseOnHover={true} pauseOnClick={true} gradient={false} style={{background:'#1B2D49'}}>\n <TickerTrack>\n {stocksData.map((stockItem:{\n symbolName:string,\n symbolShortName:string,\n market:string,\n price:string | null,\n changeValue:string | null,\n changePercent:string | null\n },index:number) => (\n <span key={index}>\n {stockItem.price && stockItem.changeValue && stockItem.changePercent &&\n <TickerItem>\n <span className=\"market-item\">\n {changeIndicator(Number(stockItem.changeValue)) === 'success' &&\n <svg width=\"14\" height=\"15\" viewBox=\"0 0 14 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7.47335 5.02667C7.40994 4.96598 7.33518 4.9184 7.25335 4.88667C7.09104 4.81999 6.90899 4.81999 6.74668 4.88667C6.66485 4.9184 6.59008 4.96598 6.52668 5.02667L4.52668 7.02667C4.40114 7.1522 4.33062 7.32247 4.33062 7.5C4.33062 7.67754 4.40114 7.8478 4.52668 7.97334C4.65222 8.09887 4.82248 8.1694 5.00001 8.1694C5.17755 8.1694 5.34781 8.09887 5.47335 7.97334L6.33335 7.10667V9.5C6.33335 9.67681 6.40358 9.84638 6.52861 9.97141C6.65363 10.0964 6.8232 10.1667 7.00001 10.1667C7.17682 10.1667 7.34639 10.0964 7.47142 9.97141C7.59644 9.84638 7.66668 9.67681 7.66668 9.5V7.10667L8.52668 7.97334C8.58866 8.03582 8.66239 8.08542 8.74363 8.11926C8.82487 8.15311 8.91201 8.17053 9.00001 8.17053C9.08802 8.17053 9.17516 8.15311 9.2564 8.11926C9.33764 8.08542 9.41137 8.03582 9.47335 7.97334C9.53583 7.91136 9.58543 7.83763 9.61927 7.75639C9.65312 7.67515 9.67055 7.58801 9.67055 7.5C9.67055 7.41199 9.65312 7.32486 9.61927 7.24362C9.58543 7.16238 9.53583 7.08864 9.47335 7.02667L7.47335 5.02667ZM7.00001 0.833336C5.68147 0.833336 4.39254 1.22433 3.29621 1.95687C2.19988 2.68941 1.3454 3.73061 0.840816 4.94878C0.336232 6.16695 0.20421 7.5074 0.461445 8.8006C0.718679 10.0938 1.35362 11.2817 2.28597 12.214C3.21832 13.1464 4.4062 13.7813 5.69941 14.0386C6.99262 14.2958 8.33306 14.1638 9.55124 13.6592C10.7694 13.1546 11.8106 12.3001 12.5431 11.2038C13.2757 10.1075 13.6667 8.81854 13.6667 7.5C13.6667 6.62452 13.4942 5.75762 13.1592 4.94878C12.8242 4.13994 12.3331 3.40501 11.7141 2.78596C11.095 2.1669 10.3601 1.67584 9.55124 1.34081C8.7424 1.00577 7.87549 0.833336 7.00001 0.833336ZM7.00001 12.8333C5.94518 12.8333 4.91403 12.5205 4.03697 11.9345C3.15991 11.3485 2.47632 10.5155 2.07266 9.54098C1.66899 8.56644 1.56337 7.49409 1.76916 6.45952C1.97495 5.42496 2.4829 4.47465 3.22878 3.72877C3.97466 2.98289 4.92497 2.47494 5.95953 2.26915C6.9941 2.06336 8.06645 2.16898 9.04099 2.57265C10.0155 2.97631 10.8485 3.6599 11.4345 4.53696C12.0206 5.41402 12.3333 6.44517 12.3333 7.5C12.3333 8.91449 11.7714 10.271 10.7712 11.2712C9.77106 12.2714 8.4145 12.8333 7.00001 12.8333Z\" fill=\"#06BA63\"/>\n </svg>\n }\n {changeIndicator(Number(stockItem.changeValue)) === 'error' &&\n <svg width=\"14\" height=\"15\" viewBox=\"0 0 14 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6.52667 9.97333C6.59007 10.034 6.66483 10.0816 6.74667 10.1133C6.90898 10.18 7.09103 10.18 7.25334 10.1133C7.33517 10.0816 7.40993 10.034 7.47334 9.97333L9.47334 7.97333C9.59887 7.8478 9.6694 7.67753 9.6694 7.5C9.6694 7.32246 9.59887 7.1522 9.47334 7.02666C9.3478 6.90113 9.17754 6.8306 9 6.8306C8.82247 6.8306 8.6522 6.90113 8.52667 7.02666L7.66667 7.89333V5.5C7.66667 5.32319 7.59643 5.15362 7.47141 5.02859C7.34638 4.90357 7.17681 4.83333 7 4.83333C6.82319 4.83333 6.65362 4.90357 6.5286 5.02859C6.40357 5.15362 6.33334 5.32319 6.33334 5.5V7.89333L5.47334 7.02666C5.41136 6.96418 5.33763 6.91458 5.25639 6.88074C5.17515 6.84689 5.08801 6.82947 5 6.82947C4.91199 6.82947 4.82486 6.84689 4.74362 6.88074C4.66238 6.91458 4.58864 6.96418 4.52667 7.02666C4.46418 7.08864 4.41459 7.16237 4.38074 7.24361C4.3469 7.32485 4.32947 7.41199 4.32947 7.5C4.32947 7.58801 4.3469 7.67514 4.38074 7.75638C4.41459 7.83762 4.46418 7.91136 4.52667 7.97333L6.52667 9.97333ZM7 14.1667C8.31854 14.1667 9.60748 13.7757 10.7038 13.0431C11.8001 12.3106 12.6546 11.2694 13.1592 10.0512C13.6638 8.83305 13.7958 7.4926 13.5386 6.1994C13.2813 4.90619 12.6464 3.7183 11.714 2.78595C10.7817 1.8536 9.59381 1.21866 8.3006 0.961429C7.0074 0.704195 5.66695 0.836217 4.44878 1.3408C3.23061 1.84539 2.18941 2.69987 1.45687 3.7962C0.724329 4.89252 0.333336 6.18146 0.333336 7.5C0.333336 9.26811 1.03571 10.9638 2.28596 12.214C2.90501 12.8331 3.63994 13.3242 4.44878 13.6592C5.25762 13.9942 6.12452 14.1667 7 14.1667ZM7 2.16666C8.05484 2.16666 9.08598 2.47946 9.96304 3.06549C10.8401 3.65153 11.5237 4.48448 11.9274 5.45902C12.331 6.43356 12.4366 7.50591 12.2309 8.54048C12.0251 9.57505 11.5171 10.5254 10.7712 11.2712C10.0254 12.0171 9.07505 12.5251 8.04048 12.7309C7.00592 12.9366 5.93356 12.831 4.95902 12.4274C3.98448 12.0237 3.15153 11.3401 2.5655 10.463C1.97946 9.58598 1.66667 8.55483 1.66667 7.5C1.66667 6.08551 2.22857 4.72896 3.22877 3.72876C4.22896 2.72857 5.58551 2.16666 7 2.16666Z\" fill=\"#F80000\"/>\n </svg>\n }\n {changeIndicator(Number(stockItem.changeValue)) === '' &&\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7.00017 0.333374C5.68162 0.333374 4.39269 0.724367 3.29636 1.45691C2.20004 2.18945 1.34555 3.23064 0.840969 4.44882C0.336385 5.66699 0.204362 7.00744 0.461597 8.30064C0.718832 9.59385 1.35377 10.7817 2.28612 11.7141C3.21847 12.6464 4.40636 13.2814 5.69956 13.5386C6.99277 13.7958 8.33322 13.6638 9.55139 13.1592C10.7696 12.6547 11.8108 11.8002 12.5433 10.7038C13.2758 9.60751 13.6668 8.31858 13.6668 7.00004C13.6668 6.12456 13.4944 5.25765 13.1594 4.44882C12.8243 3.63998 12.3333 2.90505 11.7142 2.286C11.0952 1.66694 10.3602 1.17588 9.55139 0.840844C8.74255 0.505812 7.87565 0.333374 7.00017 0.333374ZM7.00017 12.3334C5.94533 12.3334 4.91419 12.0206 4.03712 11.4345C3.16006 10.8485 2.47648 10.0156 2.07281 9.04102C1.66914 8.06648 1.56352 6.99412 1.76931 5.95956C1.9751 4.92499 2.48305 3.97468 3.22893 3.2288C3.97481 2.48292 4.92512 1.97497 5.95968 1.76919C6.99425 1.5634 8.06661 1.66902 9.04114 2.07268C10.0157 2.47635 10.8486 3.15994 11.4347 4.037C12.0207 4.91406 12.3335 5.94521 12.3335 7.00004C12.3335 8.41453 11.7716 9.77108 10.7714 10.7713C9.77121 11.7715 8.41465 12.3334 7.00017 12.3334ZM9.66683 6.33337H4.3335C4.15669 6.33337 3.98712 6.40361 3.86209 6.52864C3.73707 6.65366 3.66683 6.82323 3.66683 7.00004C3.66683 7.17685 3.73707 7.34642 3.86209 7.47144C3.98712 7.59647 4.15669 7.66671 4.3335 7.66671H9.66683C9.84364 7.66671 10.0132 7.59647 10.1382 7.47144C10.2633 7.34642 10.3335 7.17685 10.3335 7.00004C10.3335 6.82323 10.2633 6.65366 10.1382 6.52864C10.0132 6.40361 9.84364 6.33337 9.66683 6.33337Z\" fill=\"#F7F9FC\"/>\n </svg>\n }\n {stockItem.symbolShortName} ({getMarket(stockItem.market)}) <span className={changeIndicator(Number(stockItem.changeValue))}>{`${stockItem.changePercent}%`} ({stockItem.price})</span>\n </span>\n <div className=\"ticker-divider\"/>\n </TickerItem>\n }\n </span>\n ))}\n </TickerTrack>\n </Marquee>\n }\n </>\n )\n}\n\nexport default StocksTicker\n","import React from \"react\";\nimport {TableContainer, Table, NothingContainer, NothingContent} from \"./style\";\nimport {SystemConfigProps} from \"./type\";\nimport {BrokerCountry} from \"../BrokersTable/style\";\n\nconst SystemConfigTable = (props:SystemConfigProps) => {\n const {configs,callback} = props\n return (\n <TableContainer>\n <Table>\n <thead>\n <tr className=\"rounded-row\">\n <th>Code</th>\n <th>Name</th>\n <th>Value</th>\n <th>Remarks</th>\n </tr>\n </thead>\n {configs && configs.length > 0 &&\n <tbody>\n {configs.map((config: { configCode:string, configName:string, configValue:string, remarks:string },index:number) => (\n <tr key={index} className=\"rounded-row\" onClick={()=>{callback(config)}}>\n <td>{config.configCode}</td>\n <td>{config.configName}</td>\n <td>{config.configValue}</td>\n <td>\n <div>\n {config.remarks}\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M10.3592 7.52685L6.58584 3.76019C6.52387 3.6977 6.45013 3.64811 6.36889 3.61426C6.28765 3.58041 6.20052 3.56299 6.11251 3.56299C6.0245 3.56299 5.93736 3.58041 5.85612 3.61426C5.77488 3.64811 5.70115 3.6977 5.63917 3.76019C5.51501 3.8851 5.44531 4.05406 5.44531 4.23019C5.44531 4.40631 5.51501 4.57528 5.63917 4.70019L8.93917 8.03352L5.63917 11.3335C5.51501 11.4584 5.44531 11.6274 5.44531 11.8035C5.44531 11.9796 5.51501 12.1486 5.63917 12.2735C5.70092 12.3365 5.77455 12.3866 5.8558 12.421C5.93705 12.4553 6.0243 12.4732 6.11251 12.4735C6.20071 12.4732 6.28797 12.4553 6.36922 12.421C6.45047 12.3866 6.5241 12.3365 6.58584 12.2735L10.3592 8.50685C10.4268 8.44443 10.4808 8.36866 10.5178 8.28432C10.5547 8.19999 10.5738 8.10892 10.5738 8.01685C10.5738 7.92479 10.5547 7.83372 10.5178 7.74938C10.4808 7.66505 10.4268 7.58928 10.3592 7.52685Z\" fill=\"#A4BBDD\"/>\n </svg>\n </div>\n </td>\n </tr>\n ))}\n </tbody>\n }\n </Table>\n {configs && configs.length == 0 &&\n <NothingContainer>\n <NothingContent>\n <svg width=\"65\" height=\"64\" viewBox=\"0 0 65 64\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clipPath=\"url(#clip0_651_2393)\">\n <path d=\"M39.5 6H25.5V14H39.5V6Z\" fill=\"#E8EEF7\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M41.5006 6C41.5006 4.895 40.6046 4 39.5 4H25.5C24.3954 4 23.4994 4.895 23.4994 6V14C23.4994 15.105 24.3954 16 25.5 16H39.5C40.6046 16 41.5006 15.105 41.5006 14V6ZM27.5006 8V12H37.4994V8H27.5006Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M49.5 56C49.5 54.896 50.396 54 51.5 54C52.604 54 53.5 54.896 53.5 56V58C53.5 59.105 52.605 60 51.5 60H13.5C12.395 60 11.5 59.105 11.5 58V10C11.5 8.895 12.395 8 13.5 8H25.5C26.605 8 27.5 8.895 27.5 10V12H37.5V10C37.5 8.895 38.395 8 39.5 8H51.5C52.605 8 53.5 8.895 53.5 10V48C53.5 49.104 52.604 50 51.5 50C50.396 50 49.5 49.104 49.5 48V12H41.5V14C41.5 15.105 40.605 16 39.5 16H25.5C24.395 16 23.5 15.105 23.5 14V12H15.5V56H49.5Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M23.5 27H41.5C42.604 27 43.5 26.104 43.5 25C43.5 23.896 42.604 23 41.5 23H23.5C22.396 23 21.5 23.896 21.5 25C21.5 26.104 22.396 27 23.5 27Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M23.5 38H41.5C42.604 38 43.5 37.104 43.5 36C43.5 34.896 42.604 34 41.5 34H23.5C22.396 34 21.5 34.896 21.5 36C21.5 37.104 22.396 38 23.5 38Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M23.5 49H41.5C42.604 49 43.5 48.104 43.5 47C43.5 45.896 42.604 45 41.5 45H23.5C22.396 45 21.5 45.896 21.5 47C21.5 48.104 22.396 49 23.5 49Z\" fill=\"#D2DDEE\"/>\n </g>\n <defs>\n <clipPath id=\"clip0_651_2393\">\n <rect width=\"64\" height=\"64\" fill=\"white\" transform=\"translate(0.5)\"/>\n </clipPath>\n </defs>\n </svg>\n <p>System configs will be displayed here when you have any.</p>\n </NothingContent>\n </NothingContainer>\n }\n </TableContainer>\n )\n}\n\nexport default SystemConfigTable\n","//create react component\nimport * as React from \"react\";\nimport { TableProps, TableColumn, TableRow } from \"./type\";\nimport { TableStyled } from \"./style\";\nimport { setHeader, getData, sortData } from \"./helpers\";\nimport { ChevronDownIcon, ChevronUpIcon, XMarkIcon } from \"@heroicons/react/24/solid\";\n\nconst Table = (props: TableProps) => {\n const {\n title,\n data,\n columns = [],\n columnSort = false,\n config,\n onRowClick,\n rowExpand = false,\n onRowExpandComponent,\n } = props;\n const [dataToShow, setDataToShow] = React.useState<Array<TableRow>>([]);\n const [allData, setAllData] = React.useState<Array<TableRow>>([]);\n const [currentPage, setCurrentPage] = React.useState<number>(1);\n const [itemsPerPage, setItemsPerPage] = React.useState<number>(10);\n const [search, setSearch] = React.useState<string>(\"\");\n const [selectedColumn, setSelectedColumn] = React.useState<string>(\"\");\n const [searchResults, setSearchResults] = React.useState<Array<TableRow>>([]);\n const [refresh, setRefresh] = React.useState<boolean>(false);\n const [secondaryColumns, setSecondaryColumns] = React.useState<\n Array<TableColumn>\n >([]);\n const [rowsToExpand, setRowsToExpand] = React.useState<Array<any>>([]);\n\n const rowClick = function (row: TableRow) {\n if (onRowClick) {\n onRowClick(row);\n }\n if (rowExpand && rowsToExpand.indexOf(row.id) === -1) {\n setRowsToExpand([...rowsToExpand, row.id]);\n }else if (rowExpand){\n setRowsToExpand(rowsToExpand.filter(id => id !== row.id));\n }\n };\n\n const goToNext = () => {\n setCurrentPage(currentPage + 1);\n };\n\n React.useEffect(() => {\n if (searchResults.length > 0) {\n setDataToShow(\n searchResults.slice(\n (currentPage - 1) * itemsPerPage,\n currentPage * itemsPerPage\n )\n );\n return;\n }\n let y = allData.slice(\n (currentPage - 1) * itemsPerPage,\n currentPage * itemsPerPage\n );\n setDataToShow(y);\n }, [currentPage]);\n\n React.useEffect(() => {\n let y = allData.slice(\n (currentPage - 1) * itemsPerPage,\n currentPage * itemsPerPage\n );\n setDataToShow(y);\n }, [refresh]);\n\n const goToPrevious = () => {\n setCurrentPage(currentPage - 1);\n };\n\n const clearSearchData = () => {\n setSearch(\"\");\n };\n\n const onSearchChange = (search: string) => {\n if (!search) {\n setSearchResults([]);\n setSelectedColumn(\"\");\n if (currentPage != 1) {\n setCurrentPage(1);\n } else {\n setRefresh(!refresh);\n }\n return;\n }\n if (selectedColumn) {\n let filteredData = allData.filter((item) =>\n item[selectedColumn].toString().includes(search)\n );\n setSearchResults(filteredData);\n } else {\n let filteredData = allData.filter((item) => {\n for (let key in item) {\n if (item[key].toString().includes(search)) return true;\n }\n return false;\n });\n setSearchResults(filteredData);\n }\n setSearch(search);\n setCurrentPage(1);\n };\n\n React.useEffect(() => {\n if (search) {\n setDataToShow(searchResults.slice(0, itemsPerPage));\n }\n }, [searchResults]);\n\n React.useEffect(() => {\n setDataToShow(allData.slice(0, itemsPerPage));\n }, [secondaryColumns]);\n\n React.useEffect(() => {\n onSearchChange(search);\n }, [search]);\n\n React.useEffect(() => {\n getData(data, config)\n .then((data) => {\n setAllData(data);\n if (columns.length == 0 && data.length > 0) {\n let heads = Object.keys(data[0]);\n let columndata: TableColumn[] = heads.map((head) => {\n return {\n title: setHeader(head),\n field: head,\n sortable: columnSort,\n };\n });\n setSecondaryColumns(columndata);\n }else {\n setSecondaryColumns(columns.map((l, ind)=>{\n return {\n sortable: columnSort,\n ...l\n }\n }))\n }\n })\n .catch(() => {\n setAllData([]);\n });\n }, [data]);\n\n // console.log(dataToShow);\n return (\n <div className=\"s-data-table\">\n <div className=\"s-data-table_header\">\n <h5>{title}</h5>\n {/* search input for table */}\n <div>\n <input\n type=\"text\"\n value={search}\n placeholder=\"Search\"\n onChange={(e) => {\n setSearch(e.target.value);\n }}\n />\n {search && (\n <XMarkIcon onClick={clearSearchData} className=\"s-datatable-icon\" />\n )}\n </div>\n </div>\n <TableStyled>\n <thead className=\"s-data-table_head\">\n <tr>\n {secondaryColumns &&\n secondaryColumns.length > 0 &&\n secondaryColumns.map((column, index) => {\n return (\n <th\n style={{\n width: column.width\n ? column.width\n : (1 / secondaryColumns.length) * 100 + \"%\",\n }}\n className={`${\n selectedColumn == column.field\n ? \"s-data-table_head-selected\"\n : \"\"\n }`}\n key={index}\n onClick={() => {\n setSelectedColumn(column.field);\n }}\n >\n <div>\n <span>{column.title}</span>\n <span>\n {column.sortable && (\n <ChevronDownIcon className=\"s-datatable-icon\" />\n )}\n </span>\n </div>\n </th>\n );\n })}\n </tr>\n </thead>\n <tbody>\n {dataToShow &&\n dataToShow.length > 0 &&\n dataToShow.map((item: TableRow, index) => {\n return (\n <>\n <tr\n style={{ cursor: onRowClick ? \"pointer\" : \"\" }}\n onClick={() => rowClick(item)}\n key={item.id}\n >\n {secondaryColumns.map((column, index) => {\n return <td key={index}>{item[column.field]}</td>;\n })}\n </tr>\n {rowExpand &&\n rowsToExpand.length > 0 &&\n rowsToExpand.indexOf(item.id) > -1 &&\n onRowExpandComponent && (\n <tr>\n <td colSpan={secondaryColumns.length}>\n <div key={index}>{onRowExpandComponent(item)}</div>\n </td>\n </tr>\n )}\n </>\n );\n })}\n {dataToShow &&\n dataToShow.length === 0 && (\n <tr>\n <td colSpan={columns.length}>No data found</td>\n </tr>\n )}\n </tbody>\n <tfoot>\n <tr>\n <td colSpan={columns.length}>\n <div className=\"s-datatable-foot_summary\">\n <span>\n {dataToShow.length * currentPage} of {allData.length}\n </span>\n </div>\n <div className=\"s-datable-foot_pagination\">\n {/* hide previous button when on first page */}\n {currentPage > 1 && (\n <button onClick={goToPrevious}>Previous</button>\n )}\n {/* hide next button when on last page */}\n {currentPage < Math.ceil(allData.length / itemsPerPage) && (\n <button onClick={goToNext}>Next</button>\n )}\n </div>\n </td>\n </tr>\n </tfoot>\n </TableStyled>\n </div>\n );\n};\n\nexport default Table;\n","import {TableRow} from './type'\nexport function setHeader(arr: string) {\n let first = arr.split(\"\");\n first[0] = first[0].toUpperCase();\n let head = first.join(\"\");\n return head.replace(\"_\", \" \");\n}\n\nexport async function getData(data: any, config: {[key:string]: any}) {\n if (Array.isArray(data)) {\n return data;\n }\n //regex check if data is a url\n const regex =\n /^(http:\\/\\/www\\.|https:\\/\\/www\\.|http:\\/\\/|https:\\/\\/)?[a-z0-9]+([\\-\\.]{1}[a-z0-9]+)*\\.[a-z]{2,5}(:[0-9]{1,5})?(\\/.*)?$/gm;\n if (regex.test(data)) {\n const response = await fetch(data, config);\n const json = await response.json();\n return json;\n }\n return [];\n}\n\n\nexport function sortData(data: TableRow[], sort: string, order: string) {\n if (sort === \"\") {\n sort = \"id\"\n }\n return data.sort((a, b) => {\n if (order === \"asc\") {\n return a[sort] > b[sort] ? 1 : -1;\n } else {\n return a[sort] < b[sort] ? 1 : -1;\n }\n }).reverse();\n}\n","import React, { useRef, useState} from \"react\"\nimport {InputLabel, InputContainer, TextAreaField, ErrorMessage} from \"./style\";\nimport {TextAreaProps} from \"./type\";\n\nconst TextArea = (props:TextAreaProps) => {\n let {label,subtext,errMsg,disabled,required,value} = props\n\n // const [value,setValue]:any = useState('')\n const [borderColor,setBorderColor] = useState('')\n const [err,setErr] = useState(false)\n const textFieldRef = useRef() as any\n\n function validate(){\n if (value){\n setBorderColor('success')\n setErr(false)\n }else{\n if (required) {\n setBorderColor('error')\n setErr(true)\n }\n }\n }\n\n const style={\n display:'flex',\n flexDirection:'column',\n gap:'12px'\n } as any\n\n return (\n <div style={style}>\n {label &&\n <InputLabel>\n <label>{label}</label>\n {subtext && <span>{subtext}</span>}\n </InputLabel>\n }\n <InputContainer className={`${borderColor} ${disabled ? 'disabled' : ''}`}>\n <TextAreaField ref={textFieldRef} onBlur={()=>{validate()}} {...props}/>\n </InputContainer>\n {!value && required && err &&\n <ErrorMessage>\n {/*exclamation-triangle*/}\n <svg width=\"16\" height=\"14\" viewBox=\"0 0 16 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M8.00006 9.66669C7.86821 9.66669 7.73931 9.70578 7.62968 9.77904C7.52005 9.85229 7.4346 9.95641 7.38414 10.0782C7.33368 10.2 7.32048 10.3341 7.3462 10.4634C7.37193 10.5927 7.43542 10.7115 7.52866 10.8048C7.62189 10.898 7.74068 10.9615 7.87 10.9872C7.99932 11.0129 8.13336 10.9997 8.25518 10.9493C8.377 10.8988 8.48112 10.8134 8.55437 10.7037C8.62763 10.5941 8.66673 10.4652 8.66673 10.3334C8.66673 10.1565 8.59649 9.98697 8.47146 9.86195C8.34644 9.73692 8.17687 9.66669 8.00006 9.66669ZM15.1134 10.6467L9.74673 1.31335C9.57326 1.00236 9.31992 0.743323 9.01285 0.562997C8.70579 0.382672 8.35615 0.287598 8.00006 0.287598C7.64396 0.287598 7.29433 0.382672 6.98726 0.562997C6.6802 0.743323 6.42686 1.00236 6.25339 1.31335L0.92006 10.6467C0.74059 10.9494 0.644155 11.294 0.640489 11.6459C0.636824 11.9978 0.726058 12.3444 0.899184 12.6507C1.07231 12.9571 1.3232 13.2123 1.62652 13.3907C1.92984 13.5691 2.27485 13.6643 2.62673 13.6667H13.3734C13.7281 13.6702 14.0773 13.5793 14.3853 13.4033C14.6933 13.2273 14.949 12.9726 15.126 12.6652C15.3031 12.3579 15.3953 12.009 15.3931 11.6542C15.3908 11.2995 15.2943 10.9518 15.1134 10.6467ZM13.9601 11.98C13.9016 12.084 13.8164 12.1704 13.7132 12.2302C13.61 12.29 13.4927 12.321 13.3734 12.32H2.62673C2.50747 12.321 2.39013 12.29 2.28694 12.2302C2.18375 12.1704 2.0985 12.084 2.04006 11.98C1.98155 11.8787 1.95074 11.7637 1.95074 11.6467C1.95074 11.5297 1.98155 11.4147 2.04006 11.3134L7.37339 1.98002C7.42934 1.87082 7.51433 1.77917 7.61902 1.71518C7.72371 1.65119 7.84403 1.61733 7.96673 1.61733C8.08942 1.61733 8.20974 1.65119 8.31443 1.71518C8.41912 1.77917 8.50411 1.87082 8.56006 1.98002L13.9267 11.3134C13.9929 11.4132 14.0309 11.5291 14.0367 11.6488C14.0426 11.7684 14.0161 11.8875 13.9601 11.9934V11.98ZM8.00006 4.33335C7.82325 4.33335 7.65368 4.40359 7.52866 4.52861C7.40363 4.65364 7.33339 4.82321 7.33339 5.00002V7.66669C7.33339 7.8435 7.40363 8.01307 7.52866 8.13809C7.65368 8.26311 7.82325 8.33335 8.00006 8.33335C8.17687 8.33335 8.34644 8.26311 8.47146 8.13809C8.59649 8.01307 8.66673 7.8435 8.66673 7.66669V5.00002C8.66673 4.82321 8.59649 4.65364 8.47146 4.52861C8.34644 4.40359 8.17687 4.33335 8.00006 4.33335Z\" fill=\"#F80000\"/>\n </svg>\n {errMsg ? errMsg : 'This field is required'}\n </ErrorMessage>\n }\n </div>\n )\n}\n\nexport default TextArea\n","var img = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAN3SURBVHgBvZddbFRFFMd/c/duW5sW1MRGxWol8UESImqsRjBuLbGNUb7iA4YHon3wxURfkFZFdoMi2MTY+CoEaEgITaGhSaE00EK2QICQ9gUaCGmBtgsLJeWrwN72Dme2gWzYwt6lu/t7uJkzc/8zZ2bOnTtH8TgLdQDFEiwWi1VGMhO4LKJDtTHUvQn0d6RC0yN99hBzQrxZMZDYpB6VAvp58lkrpZ9IzZgol7FPtTMU/k/sH/CK4l/uxx0ZnTQfDp5Hp1jz8M49mVmAdnWcSLhZykvT0JrVqDBOWHHTzDy9wQ0FojlAlS7nJitlLlvS0M4j329WW7qo1mXifT/PTkT0X1HX1ctb/nbp8TPPSldXWBJQQabHKzLofuoDsyksWCb29jS0SywRv8P0eZFxOlj+finX7nwv9mFPKkvNNzGQ7t5PjeL1eEys+rxUAkw+YflCUouKLDJLiTixl5rATIrtFWh1IpXAlhhYS6axqWTGh5vpC1dSrLrkJHrvSa8qss3V8Ks4Eh+aOcmNqs+mdlUnWUMd5KUF6xg6Xo2KtYoTSQFvo1SA7BFg9eo8ZpWv4eaZSm6N9ErdrMQXMh2EyVj6N2p//oMZb49gOQtkFfpy64BB8St1tVv4JjRIXl6F1JzNrQNx3JV8XN5ASfllnIlqqbiYYwfi3Io/lTUqqzKeWwcUIdb/XcvgsdfwK/NZzjbVNjlBb2B9fZBoZxGO0yYn5NyHLTlYAbWGv+rrOLmnkJj/oNhzE1vNChwiW2j5L2zYuJHrHTMZK2iWbfjg8VeyfxT3d8p1z98kpYXJjeYoLln6O5nGZ/cTaWrkXFs+ft/WqQefRI5iK0Qm0XJFG7/7KTpcLKVGsRc97fXMBqHmHD65E0ZbzzOsG8RenEpiHLhAZhiRP14VkeY+hru3yf5+m1riXhcH3Bami+IS2q3kSmu/JCr/S80Kb0LrrFxKfdN1QK7l9hdEd/cyGP5H7BrPypgV8nH79ABFc14Q8yPSZwxtfUl05ykiRyRF0z96VmqJkTfm75gMwucmgph0KR00N7DcKqJNR2XP/8R1veeHqB6coqApTTow0DIqTpj/dIPHHkax9dcM7+qWwdfJbH7BK2bmsULJC99NSE4TeXl5Ga4TRGnJF9RUSYsjndQQ3dUoAWcOMQ/niL6Aa7XEA770k67ElgfvFxf0wKvTiwAAAABJRU5ErkJggg==\";\n export default img;","import React from \"react\"\nimport {Container, FieldSection} from './style'\nimport provDef from './prov-default.png'\nimport {TxnDetsWPymntProps} from \"./type\";\n\nconst TransactionDetailsWithPayment = (props:TxnDetsWPymntProps) => {\n const {amount,provider,paymentDets,requestedBy,requestDate} = props\n\n return (\n <Container>\n <FieldSection>\n <p>Amount</p>\n <div className=\"field-dets amt-dets\">\n <div>\n <img\n src={amount.baseFlag}\n alt=\"flag\"/>\n {`${amount.baseCurr} ${amount.baseAmount}`}\n </div>\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M17.9982 10.0002C17.9982 9.73497 17.8928 9.48062 17.7053 9.29308C17.5178 9.10554 17.2634 9.00019 16.9982 9.00019H5.40819L7.70819 6.71019C7.89649 6.52188 8.00228 6.26649 8.00228 6.00019C8.00228 5.73388 7.89649 5.47849 7.70819 5.29019C7.51988 5.10188 7.26449 4.99609 6.99819 4.99609C6.73188 4.99609 6.47649 5.10188 6.28819 5.29019L2.28819 9.29019C2.14943 9.43081 2.05543 9.60938 2.01806 9.80337C1.98068 9.99736 2.00161 10.1981 2.07819 10.3802C2.15321 10.5628 2.2806 10.7191 2.44432 10.8295C2.60804 10.9398 2.80076 10.9992 2.99819 11.0002H16.9982C17.2634 11.0002 17.5178 10.8948 17.7053 10.7073C17.8928 10.5198 17.9982 10.2654 17.9982 10.0002ZM21.9182 13.6202C21.8432 13.4376 21.7158 13.2812 21.552 13.1709C21.3883 13.0606 21.1956 13.0012 20.9982 13.0002H6.99819C6.73297 13.0002 6.47862 13.1055 6.29108 13.2931C6.10354 13.4806 5.99819 13.735 5.99819 14.0002C5.99819 14.2654 6.10354 14.5198 6.29108 14.7073C6.47862 14.8948 6.73297 15.0002 6.99819 15.0002H18.5882L16.2882 17.2902C16.1945 17.3831 16.1201 17.4937 16.0693 17.6156C16.0185 17.7375 15.9924 17.8682 15.9924 18.0002C15.9924 18.1322 16.0185 18.2629 16.0693 18.3848C16.1201 18.5066 16.1945 18.6172 16.2882 18.7102C16.3812 18.8039 16.4917 18.8783 16.6136 18.9291C16.7355 18.9798 16.8662 19.006 16.9982 19.006C17.1302 19.006 17.2609 18.9798 17.3828 18.9291C17.5046 18.8783 17.6152 18.8039 17.7082 18.7102L21.7082 14.7102C21.8469 14.5696 21.9409 14.391 21.9783 14.197C22.0157 14.003 21.9948 13.8023 21.9182 13.6202Z\" fill=\"#BBCCE6\"/>\n </svg>\n <div>\n <img\n src={amount.exchFlag}\n alt=\"flag\"/>\n {`${amount.exchCurr} ${amount.exchAmount}`}\n </div>\n </div>\n <p className=\"exch-rate\">{amount.exchCurr} 1.0000 = {`${amount.baseCurr} ${amount.exchRate}`}</p>\n </FieldSection>\n <FieldSection>\n <p>Provider</p>\n <div className=\"field-dets\">\n <img src={provider.logo ? provider.logo : provDef} alt=\"Provider logo\"/> {provider.name}\n </div>\n </FieldSection>\n <FieldSection>\n <p>Requested By</p>\n <div className=\"field-dets\">\n {requestedBy}\n </div>\n </FieldSection>\n <FieldSection>\n <p>Request Date</p>\n <div className=\"field-dets\">\n {requestDate}\n </div>\n </FieldSection>\n <FieldSection>\n <p>Payment Method</p>\n <div className=\"field-dets\">\n {requestDate}\n </div>\n </FieldSection>\n <FieldSection>\n <p>Payee Name</p>\n <div className=\"field-dets\">\n {paymentDets.payeeName}\n </div>\n </FieldSection>\n <FieldSection>\n <p>Bank Name</p>\n <div className=\"field-dets\">\n {paymentDets.bankName}\n </div>\n </FieldSection>\n <FieldSection>\n <p>Bank Country</p>\n <div className=\"field-dets bank-ctry-dets\">\n <img src={paymentDets.bankCountryFlag} alt=\"Bank country flag\"/> {paymentDets.bankCountry}\n </div>\n </FieldSection>\n <FieldSection>\n <p>Remarks</p>\n <div className=\"field-dets\">\n {paymentDets.paymentRemarks}\n </div>\n </FieldSection>\n </Container>\n )\n}\n\nexport default TransactionDetailsWithPayment\n","var img = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAN3SURBVHgBvZddbFRFFMd/c/duW5sW1MRGxWol8UESImqsRjBuLbGNUb7iA4YHon3wxURfkFZFdoMi2MTY+CoEaEgITaGhSaE00EK2QICQ9gUaCGmBtgsLJeWrwN72Dme2gWzYwt6lu/t7uJkzc/8zZ2bOnTtH8TgLdQDFEiwWi1VGMhO4LKJDtTHUvQn0d6RC0yN99hBzQrxZMZDYpB6VAvp58lkrpZ9IzZgol7FPtTMU/k/sH/CK4l/uxx0ZnTQfDp5Hp1jz8M49mVmAdnWcSLhZykvT0JrVqDBOWHHTzDy9wQ0FojlAlS7nJitlLlvS0M4j329WW7qo1mXifT/PTkT0X1HX1ctb/nbp8TPPSldXWBJQQabHKzLofuoDsyksWCb29jS0SywRv8P0eZFxOlj+finX7nwv9mFPKkvNNzGQ7t5PjeL1eEys+rxUAkw+YflCUouKLDJLiTixl5rATIrtFWh1IpXAlhhYS6axqWTGh5vpC1dSrLrkJHrvSa8qss3V8Ks4Eh+aOcmNqs+mdlUnWUMd5KUF6xg6Xo2KtYoTSQFvo1SA7BFg9eo8ZpWv4eaZSm6N9ErdrMQXMh2EyVj6N2p//oMZb49gOQtkFfpy64BB8St1tVv4JjRIXl6F1JzNrQNx3JV8XN5ASfllnIlqqbiYYwfi3Io/lTUqqzKeWwcUIdb/XcvgsdfwK/NZzjbVNjlBb2B9fZBoZxGO0yYn5NyHLTlYAbWGv+rrOLmnkJj/oNhzE1vNChwiW2j5L2zYuJHrHTMZK2iWbfjg8VeyfxT3d8p1z98kpYXJjeYoLln6O5nGZ/cTaWrkXFs+ft/WqQefRI5iK0Qm0XJFG7/7KTpcLKVGsRc97fXMBqHmHD65E0ZbzzOsG8RenEpiHLhAZhiRP14VkeY+hru3yf5+m1riXhcH3Bami+IS2q3kSmu/JCr/S80Kb0LrrFxKfdN1QK7l9hdEd/cyGP5H7BrPypgV8nH79ABFc14Q8yPSZwxtfUl05ykiRyRF0z96VmqJkTfm75gMwucmgph0KR00N7DcKqJNR2XP/8R1veeHqB6coqApTTow0DIqTpj/dIPHHkax9dcM7+qWwdfJbH7BK2bmsULJC99NSE4TeXl5Ga4TRGnJF9RUSYsjndQQ3dUoAWcOMQ/niL6Aa7XEA770k67ElgfvFxf0wKvTiwAAAABJRU5ErkJggg==\";\n export default img;","import React, {useEffect, useState} from \"react\"\nimport {ActionItem, ActionsContainer, ActionsListContainer, Container, NoActionsContainer} from \"./style\";\nimport {UpdateUserActionsProps} from \"./type\";\n\nconst UpdateUserActions = (props:UpdateUserActionsProps) => {\n const {currentOptions,availableOptions,selOptions,titleAvailable,titleCurrent} = props\n const [available,setAvailable]:any = useState(availableOptions)\n const [currentUserOptions,setCurrentUserOptions]:any = useState(currentOptions)\n const [selections,setSelections]:any = useState({added:[],removed:[]})\n\n useEffect(()=>{\n selOptions(selections)\n },[])\n\n function addOption(actionItem:any){\n //if the item is coming from the original list of current options, dont add it to the selections.added array\n if (currentOptions.filter((curr:any)=>curr.optionId == actionItem.optionId).length === 0) {\n let tmp = selections\n if (!tmp.added.includes(actionItem.optionId)) tmp.added.push(actionItem.optionId)\n setSelections(tmp)\n }\n\n //if the item is from the original list of current options, remove it from the selections.removed array\n if (currentOptions.filter((curr:any)=>curr.optionId == actionItem.optionId).length > 0) {\n let sels = selections\n sels.removed = selections.removed.filter((sel: any) => sel != actionItem.optionId)\n setSelections(sels)\n }\n\n //remove selected item from the available list\n setAvailable(available.filter((avail:any)=>!avail.optionId.toLowerCase().includes(actionItem.optionId.toLowerCase())))\n\n //add the select item to the currentuseroptions list\n setCurrentUserOptions([...currentUserOptions, actionItem])\n\n //finally,send out the complete list of both added and removed selections\n selOptions(selections)\n }\n\n function removeOption(actionItem:any){\n //remove the selected item from the currentuseroptinons list\n setCurrentUserOptions(currentUserOptions.filter((curr:any)=>!curr.optionId.toLowerCase().includes(actionItem.optionId.toLowerCase())))\n\n //add the selected item to the available list\n setAvailable([...available,actionItem])\n\n //if the item is from the original list of available options, remove it from the selections.added array\n if (availableOptions.filter((avail:any)=>avail.optionId == actionItem.optionId).length > 0){\n let sels = selections\n sels.added = selections.added.filter((sel:any) => sel != actionItem.optionId)\n setSelections(sels)\n }\n\n //add the item to the selections.removed array only if it's coming from the original list of current options\n if (currentOptions.filter((curr:any)=>curr.optionId.includes(actionItem.optionId)).length > 0){\n let tmp = selections\n if (!tmp.removed.includes(actionItem.optionId)) tmp.removed.push(actionItem.optionId)\n setSelections(tmp)\n }\n\n //finally,send out the complete list of both added and removed selections\n selOptions(selections)\n }\n\n return (\n <Container>\n <ActionsContainer>\n <h4>{titleAvailable ? titleAvailable : 'Available Options'}</h4>\n <ActionsListContainer>\n {available && available.length > 0 && available.map((action:{optionName:string,optionId:string}) => {\n if (currentOptions.filter((curr:any) => curr.optionId == action.optionId && !selections.added.includes(action.optionId)).length == 0)\n return (\n <ActionItem key={action.optionId}>\n <p>{action.optionName}</p>\n <button onClick={() => {\n addOption(action)\n }}>\n {/*icon-plus*/}\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12.6667 7.33332H8.66675V3.33332C8.66675 3.15651 8.59651 2.98694 8.47149 2.86192C8.34646 2.73689 8.17689 2.66666 8.00008 2.66666C7.82327 2.66666 7.6537 2.73689 7.52868 2.86192C7.40365 2.98694 7.33342 3.15651 7.33342 3.33332V7.33332H3.33341C3.1566 7.33332 2.98703 7.40356 2.86201 7.52859C2.73699 7.65361 2.66675 7.82318 2.66675 7.99999C2.66675 8.1768 2.73699 8.34637 2.86201 8.47139C2.98703 8.59642 3.1566 8.66666 3.33341 8.66666H7.33342V12.6667C7.33342 12.8435 7.40365 13.013 7.52868 13.1381C7.6537 13.2631 7.82327 13.3333 8.00008 13.3333C8.17689 13.3333 8.34646 13.2631 8.47149 13.1381C8.59651 13.013 8.66675 12.8435 8.66675 12.6667V8.66666H12.6667C12.8436 8.66666 13.0131 8.59642 13.1382 8.47139C13.2632 8.34637 13.3334 8.1768 13.3334 7.99999C13.3334 7.82318 13.2632 7.65361 13.1382 7.52859C13.0131 7.40356 12.8436 7.33332 12.6667 7.33332Z\"\n fill=\"#070B12\"/>\n </svg>\n </button>\n </ActionItem>\n )\n })}\n {available.length == 0 &&\n <NoActionsContainer>\n <svg width=\"64\" height=\"65\" viewBox=\"0 0 64 65\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clipPath=\"url(#clip0_814_3248)\">\n <path d=\"M39 6.5H25V14.5H39V6.5Z\" fill=\"#E8EEF7\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M41.0007 6.5C41.0007 5.395 40.1047 4.5 39.0001 4.5H25.0001C23.8955 4.5 22.9995 5.395 22.9995 6.5V14.5C22.9995 15.605 23.8955 16.5 25.0001 16.5H39.0001C40.1047 16.5 41.0007 15.605 41.0007 14.5V6.5ZM27.0007 8.5V12.5H36.9995V8.5H27.0007Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M49 56.5C49 55.396 49.896 54.5 51 54.5C52.104 54.5 53 55.396 53 56.5V58.5C53 59.605 52.105 60.5 51 60.5H13C11.895 60.5 11 59.605 11 58.5V10.5C11 9.395 11.895 8.5 13 8.5H25C26.105 8.5 27 9.395 27 10.5V12.5H37V10.5C37 9.395 37.895 8.5 39 8.5H51C52.105 8.5 53 9.395 53 10.5V48.5C53 49.604 52.104 50.5 51 50.5C49.896 50.5 49 49.604 49 48.5V12.5H41V14.5C41 15.605 40.105 16.5 39 16.5H25C23.895 16.5 23 15.605 23 14.5V12.5H15V56.5H49Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M23 27.5H41C42.104 27.5 43 26.604 43 25.5C43 24.396 42.104 23.5 41 23.5H23C21.896 23.5 21 24.396 21 25.5C21 26.604 21.896 27.5 23 27.5Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M23 38.5H41C42.104 38.5 43 37.604 43 36.5C43 35.396 42.104 34.5 41 34.5H23C21.896 34.5 21 35.396 21 36.5C21 37.604 21.896 38.5 23 38.5Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M23 49.5H41C42.104 49.5 43 48.604 43 47.5C43 46.396 42.104 45.5 41 45.5H23C21.896 45.5 21 46.396 21 47.5C21 48.604 21.896 49.5 23 49.5Z\" fill=\"#D2DDEE\"/>\n </g>\n <defs>\n <clipPath id=\"clip0_814_3248\">\n <rect width=\"64\" height=\"64\" fill=\"white\" transform=\"translate(0 0.5)\"/>\n </clipPath>\n </defs>\n </svg>\n <p>No options available</p>\n </NoActionsContainer>\n }\n </ActionsListContainer>\n </ActionsContainer>\n <ActionsContainer>\n <h4>{titleCurrent ? titleCurrent : 'Current Options'}</h4>\n <ActionsListContainer>\n {currentUserOptions.length > 0 && currentUserOptions.map((action:{optionName:string,optionId:string}) => (\n <ActionItem key={action.optionId}>\n <p>{action.optionName}</p>\n <button onClick={()=>{removeOption(action)}}>\n {/*icon-minus*/}\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M12.6667 7.33333H3.33341C3.1566 7.33333 2.98703 7.40357 2.86201 7.52859C2.73699 7.65361 2.66675 7.82318 2.66675 7.99999C2.66675 8.17681 2.73699 8.34638 2.86201 8.4714C2.98703 8.59642 3.1566 8.66666 3.33341 8.66666H12.6667C12.8436 8.66666 13.0131 8.59642 13.1382 8.4714C13.2632 8.34638 13.3334 8.17681 13.3334 7.99999C13.3334 7.82318 13.2632 7.65361 13.1382 7.52859C13.0131 7.40357 12.8436 7.33333 12.6667 7.33333Z\" fill=\"#070B12\"/>\n </svg>\n </button>\n </ActionItem>\n ))}\n {currentUserOptions.length == 0 &&\n <NoActionsContainer>\n <svg width=\"64\" height=\"65\" viewBox=\"0 0 64 65\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clipPath=\"url(#clip0_814_3248)\">\n <path d=\"M39 6.5H25V14.5H39V6.5Z\" fill=\"#E8EEF7\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M41.0007 6.5C41.0007 5.395 40.1047 4.5 39.0001 4.5H25.0001C23.8955 4.5 22.9995 5.395 22.9995 6.5V14.5C22.9995 15.605 23.8955 16.5 25.0001 16.5H39.0001C40.1047 16.5 41.0007 15.605 41.0007 14.5V6.5ZM27.0007 8.5V12.5H36.9995V8.5H27.0007Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M49 56.5C49 55.396 49.896 54.5 51 54.5C52.104 54.5 53 55.396 53 56.5V58.5C53 59.605 52.105 60.5 51 60.5H13C11.895 60.5 11 59.605 11 58.5V10.5C11 9.395 11.895 8.5 13 8.5H25C26.105 8.5 27 9.395 27 10.5V12.5H37V10.5C37 9.395 37.895 8.5 39 8.5H51C52.105 8.5 53 9.395 53 10.5V48.5C53 49.604 52.104 50.5 51 50.5C49.896 50.5 49 49.604 49 48.5V12.5H41V14.5C41 15.605 40.105 16.5 39 16.5H25C23.895 16.5 23 15.605 23 14.5V12.5H15V56.5H49Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M23 27.5H41C42.104 27.5 43 26.604 43 25.5C43 24.396 42.104 23.5 41 23.5H23C21.896 23.5 21 24.396 21 25.5C21 26.604 21.896 27.5 23 27.5Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M23 38.5H41C42.104 38.5 43 37.604 43 36.5C43 35.396 42.104 34.5 41 34.5H23C21.896 34.5 21 35.396 21 36.5C21 37.604 21.896 38.5 23 38.5Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M23 49.5H41C42.104 49.5 43 48.604 43 47.5C43 46.396 42.104 45.5 41 45.5H23C21.896 45.5 21 46.396 21 47.5C21 48.604 21.896 49.5 23 49.5Z\" fill=\"#D2DDEE\"/>\n </g>\n <defs>\n <clipPath id=\"clip0_814_3248\">\n <rect width=\"64\" height=\"64\" fill=\"white\" transform=\"translate(0 0.5)\"/>\n </clipPath>\n </defs>\n </svg>\n <p>No options available</p>\n </NoActionsContainer>\n }\n </ActionsListContainer>\n </ActionsContainer>\n </Container>\n )\n}\n\nexport default UpdateUserActions\n","import React, {useEffect, useState} from \"react\"\nimport {ActionItem, ActionsContainer, ActionsListContainer, Container, NoActionsContainer} from \"./style\";\nimport {UserActionsProps} from \"./type\";\n\nconst UserActions = (props:UserActionsProps) => {\n const {currentActions,availableActions,newActionsFxn,titleAvailable,titleCurrent,currentSelections} = props\n const [available,setAvailable]:any = useState([])\n const [newActions,setNewActions]:any = useState([])\n const [currentSels,setCurrentSel]:any = useState([])\n\n //TODO come back to this later\n /* useEffect(()=>{\n if (currentSelections && currentSelections.length > 0){\n setCurrentSel(currentSelections)\n }\n },[currentSelections])*/\n\n useEffect(()=>{\n setAvailable(availableActions)\n },[availableActions])\n\n function addAction(actionItem:any){\n let tempNew = newActions\n let al = available.filter((addAction: any) => addAction.actionId !== actionItem.actionId)\n setAvailable(al)\n tempNew.push(actionItem)\n setNewActions(tempNew)\n newActionsFxn(tempNew)\n }\n\n function removeAction(actionItem:any){\n let tempAvailable = available\n let al = newActions.filter((newAction:any )=> newAction.actionId !== actionItem.actionId)\n setNewActions(al)\n newActionsFxn(al)\n tempAvailable.push(actionItem)\n setAvailable(tempAvailable)\n }\n\n /*useEffect(()=>{\n newActionsFxn(newActions)\n },[newActions])*/\n\n return (\n <Container>\n <ActionsContainer>\n <h4>{titleAvailable ? titleAvailable : 'Available Actions'}</h4>\n <ActionsListContainer>\n {available && available.length > 0 && available.map((action:{actionName:string,actionId:string}) => (\n <ActionItem key={action.actionId}>\n <p>{action.actionName}</p>\n <button onClick={()=>{addAction(action)}}>\n {/*icon-plus*/}\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M12.6667 7.33332H8.66675V3.33332C8.66675 3.15651 8.59651 2.98694 8.47149 2.86192C8.34646 2.73689 8.17689 2.66666 8.00008 2.66666C7.82327 2.66666 7.6537 2.73689 7.52868 2.86192C7.40365 2.98694 7.33342 3.15651 7.33342 3.33332V7.33332H3.33341C3.1566 7.33332 2.98703 7.40356 2.86201 7.52859C2.73699 7.65361 2.66675 7.82318 2.66675 7.99999C2.66675 8.1768 2.73699 8.34637 2.86201 8.47139C2.98703 8.59642 3.1566 8.66666 3.33341 8.66666H7.33342V12.6667C7.33342 12.8435 7.40365 13.013 7.52868 13.1381C7.6537 13.2631 7.82327 13.3333 8.00008 13.3333C8.17689 13.3333 8.34646 13.2631 8.47149 13.1381C8.59651 13.013 8.66675 12.8435 8.66675 12.6667V8.66666H12.6667C12.8436 8.66666 13.0131 8.59642 13.1382 8.47139C13.2632 8.34637 13.3334 8.1768 13.3334 7.99999C13.3334 7.82318 13.2632 7.65361 13.1382 7.52859C13.0131 7.40356 12.8436 7.33332 12.6667 7.33332Z\" fill=\"#070B12\"/>\n </svg>\n </button>\n </ActionItem>\n ))}\n {available.length == 0 &&\n <NoActionsContainer>\n <svg width=\"64\" height=\"65\" viewBox=\"0 0 64 65\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clipPath=\"url(#clip0_814_3248)\">\n <path d=\"M39 6.5H25V14.5H39V6.5Z\" fill=\"#E8EEF7\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M41.0007 6.5C41.0007 5.395 40.1047 4.5 39.0001 4.5H25.0001C23.8955 4.5 22.9995 5.395 22.9995 6.5V14.5C22.9995 15.605 23.8955 16.5 25.0001 16.5H39.0001C40.1047 16.5 41.0007 15.605 41.0007 14.5V6.5ZM27.0007 8.5V12.5H36.9995V8.5H27.0007Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M49 56.5C49 55.396 49.896 54.5 51 54.5C52.104 54.5 53 55.396 53 56.5V58.5C53 59.605 52.105 60.5 51 60.5H13C11.895 60.5 11 59.605 11 58.5V10.5C11 9.395 11.895 8.5 13 8.5H25C26.105 8.5 27 9.395 27 10.5V12.5H37V10.5C37 9.395 37.895 8.5 39 8.5H51C52.105 8.5 53 9.395 53 10.5V48.5C53 49.604 52.104 50.5 51 50.5C49.896 50.5 49 49.604 49 48.5V12.5H41V14.5C41 15.605 40.105 16.5 39 16.5H25C23.895 16.5 23 15.605 23 14.5V12.5H15V56.5H49Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M23 27.5H41C42.104 27.5 43 26.604 43 25.5C43 24.396 42.104 23.5 41 23.5H23C21.896 23.5 21 24.396 21 25.5C21 26.604 21.896 27.5 23 27.5Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M23 38.5H41C42.104 38.5 43 37.604 43 36.5C43 35.396 42.104 34.5 41 34.5H23C21.896 34.5 21 35.396 21 36.5C21 37.604 21.896 38.5 23 38.5Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M23 49.5H41C42.104 49.5 43 48.604 43 47.5C43 46.396 42.104 45.5 41 45.5H23C21.896 45.5 21 46.396 21 47.5C21 48.604 21.896 49.5 23 49.5Z\" fill=\"#D2DDEE\"/>\n </g>\n <defs>\n <clipPath id=\"clip0_814_3248\">\n <rect width=\"64\" height=\"64\" fill=\"white\" transform=\"translate(0 0.5)\"/>\n </clipPath>\n </defs>\n </svg>\n <p>No options available</p>\n </NoActionsContainer>\n }\n </ActionsListContainer>\n </ActionsContainer>\n <ActionsContainer>\n <h4>{titleCurrent ? titleCurrent : 'Current Actions'}</h4>\n <ActionsListContainer>\n {currentActions && currentActions.length > 0 && currentActions.map((action:{actionName:string,actionId:string}) => (\n <ActionItem key={action.actionId} className=\"current-action\">\n <p>{action.actionName}</p>\n </ActionItem>\n ))}\n {newActions.length > 0 && newActions.map((action:{actionName:string,actionId:string}) => (\n <ActionItem key={action.actionId}>\n <p>{action.actionName}</p>\n <button onClick={()=>{removeAction(action)}}>\n {/*icon-minus*/}\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M12.6667 7.33333H3.33341C3.1566 7.33333 2.98703 7.40357 2.86201 7.52859C2.73699 7.65361 2.66675 7.82318 2.66675 7.99999C2.66675 8.17681 2.73699 8.34638 2.86201 8.4714C2.98703 8.59642 3.1566 8.66666 3.33341 8.66666H12.6667C12.8436 8.66666 13.0131 8.59642 13.1382 8.4714C13.2632 8.34638 13.3334 8.17681 13.3334 7.99999C13.3334 7.82318 13.2632 7.65361 13.1382 7.52859C13.0131 7.40357 12.8436 7.33333 12.6667 7.33333Z\" fill=\"#070B12\"/>\n </svg>\n </button>\n </ActionItem>\n ))}\n {currentSels.length > 0 && currentSels.map((action:{actionName:string,actionId:string}) => (\n <ActionItem key={action.actionId}>\n <p>{action.actionName}</p>\n <button onClick={()=>{removeAction(action)}}>\n {/*icon-minus*/}\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M12.6667 7.33333H3.33341C3.1566 7.33333 2.98703 7.40357 2.86201 7.52859C2.73699 7.65361 2.66675 7.82318 2.66675 7.99999C2.66675 8.17681 2.73699 8.34638 2.86201 8.4714C2.98703 8.59642 3.1566 8.66666 3.33341 8.66666H12.6667C12.8436 8.66666 13.0131 8.59642 13.1382 8.4714C13.2632 8.34638 13.3334 8.17681 13.3334 7.99999C13.3334 7.82318 13.2632 7.65361 13.1382 7.52859C13.0131 7.40357 12.8436 7.33333 12.6667 7.33333Z\" fill=\"#070B12\"/>\n </svg>\n </button>\n </ActionItem>\n ))}\n {currentActions && currentActions.length == 0 && newActions.length == 0 && currentSelections && currentSelections.length == 0 &&\n <NoActionsContainer>\n <svg width=\"64\" height=\"65\" viewBox=\"0 0 64 65\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clipPath=\"url(#clip0_814_3248)\">\n <path d=\"M39 6.5H25V14.5H39V6.5Z\" fill=\"#E8EEF7\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M41.0007 6.5C41.0007 5.395 40.1047 4.5 39.0001 4.5H25.0001C23.8955 4.5 22.9995 5.395 22.9995 6.5V14.5C22.9995 15.605 23.8955 16.5 25.0001 16.5H39.0001C40.1047 16.5 41.0007 15.605 41.0007 14.5V6.5ZM27.0007 8.5V12.5H36.9995V8.5H27.0007Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M49 56.5C49 55.396 49.896 54.5 51 54.5C52.104 54.5 53 55.396 53 56.5V58.5C53 59.605 52.105 60.5 51 60.5H13C11.895 60.5 11 59.605 11 58.5V10.5C11 9.395 11.895 8.5 13 8.5H25C26.105 8.5 27 9.395 27 10.5V12.5H37V10.5C37 9.395 37.895 8.5 39 8.5H51C52.105 8.5 53 9.395 53 10.5V48.5C53 49.604 52.104 50.5 51 50.5C49.896 50.5 49 49.604 49 48.5V12.5H41V14.5C41 15.605 40.105 16.5 39 16.5H25C23.895 16.5 23 15.605 23 14.5V12.5H15V56.5H49Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M23 27.5H41C42.104 27.5 43 26.604 43 25.5C43 24.396 42.104 23.5 41 23.5H23C21.896 23.5 21 24.396 21 25.5C21 26.604 21.896 27.5 23 27.5Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M23 38.5H41C42.104 38.5 43 37.604 43 36.5C43 35.396 42.104 34.5 41 34.5H23C21.896 34.5 21 35.396 21 36.5C21 37.604 21.896 38.5 23 38.5Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M23 49.5H41C42.104 49.5 43 48.604 43 47.5C43 46.396 42.104 45.5 41 45.5H23C21.896 45.5 21 46.396 21 47.5C21 48.604 21.896 49.5 23 49.5Z\" fill=\"#D2DDEE\"/>\n </g>\n <defs>\n <clipPath id=\"clip0_814_3248\">\n <rect width=\"64\" height=\"64\" fill=\"white\" transform=\"translate(0 0.5)\"/>\n </clipPath>\n </defs>\n </svg>\n <p>No options available</p>\n </NoActionsContainer>\n }\n </ActionsListContainer>\n </ActionsContainer>\n </Container>\n )\n}\n\nexport default UserActions\n","import React from \"react\";\nimport {TableContainer, Table, NothingContainer, NothingContent} from \"./style\";\nimport {UserRolesProps} from \"./type\";\n\nconst UserRolesTable = (props:UserRolesProps) => {\n const {roles,callback} = props\n return (\n <TableContainer>\n <Table>\n <thead>\n <tr className=\"rounded-row\">\n <th>Title</th>\n <th>Code</th>\n <th>Clearance Level</th>\n </tr>\n </thead>\n {roles && roles.length > 0 &&\n <tbody>\n {roles.map((role: { roleName:string, roleCode:string, clearanceLevel:number },index:number) => (\n <tr key={index} className=\"rounded-row\" onClick={()=>{callback(role)}}>\n <td>{role.roleName}</td>\n <td>{role.roleCode}</td>\n <td>\n <div>\n {role.clearanceLevel}\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M10.3592 7.52685L6.58584 3.76019C6.52387 3.6977 6.45013 3.64811 6.36889 3.61426C6.28765 3.58041 6.20052 3.56299 6.11251 3.56299C6.0245 3.56299 5.93736 3.58041 5.85612 3.61426C5.77488 3.64811 5.70115 3.6977 5.63917 3.76019C5.51501 3.8851 5.44531 4.05406 5.44531 4.23019C5.44531 4.40631 5.51501 4.57528 5.63917 4.70019L8.93917 8.03352L5.63917 11.3335C5.51501 11.4584 5.44531 11.6274 5.44531 11.8035C5.44531 11.9796 5.51501 12.1486 5.63917 12.2735C5.70092 12.3365 5.77455 12.3866 5.8558 12.421C5.93705 12.4553 6.0243 12.4732 6.11251 12.4735C6.20071 12.4732 6.28797 12.4553 6.36922 12.421C6.45047 12.3866 6.5241 12.3365 6.58584 12.2735L10.3592 8.50685C10.4268 8.44443 10.4808 8.36866 10.5178 8.28432C10.5547 8.19999 10.5738 8.10892 10.5738 8.01685C10.5738 7.92479 10.5547 7.83372 10.5178 7.74938C10.4808 7.66505 10.4268 7.58928 10.3592 7.52685Z\" fill=\"#A4BBDD\"/>\n </svg>\n </div>\n </td>\n </tr>\n ))}\n </tbody>\n }\n </Table>\n {roles && roles.length == 0 &&\n <NothingContainer>\n <NothingContent>\n <svg width=\"65\" height=\"64\" viewBox=\"0 0 65 64\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clipPath=\"url(#clip0_651_2393)\">\n <path d=\"M39.5 6H25.5V14H39.5V6Z\" fill=\"#E8EEF7\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M41.5006 6C41.5006 4.895 40.6046 4 39.5 4H25.5C24.3954 4 23.4994 4.895 23.4994 6V14C23.4994 15.105 24.3954 16 25.5 16H39.5C40.6046 16 41.5006 15.105 41.5006 14V6ZM27.5006 8V12H37.4994V8H27.5006Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M49.5 56C49.5 54.896 50.396 54 51.5 54C52.604 54 53.5 54.896 53.5 56V58C53.5 59.105 52.605 60 51.5 60H13.5C12.395 60 11.5 59.105 11.5 58V10C11.5 8.895 12.395 8 13.5 8H25.5C26.605 8 27.5 8.895 27.5 10V12H37.5V10C37.5 8.895 38.395 8 39.5 8H51.5C52.605 8 53.5 8.895 53.5 10V48C53.5 49.104 52.604 50 51.5 50C50.396 50 49.5 49.104 49.5 48V12H41.5V14C41.5 15.105 40.605 16 39.5 16H25.5C24.395 16 23.5 15.105 23.5 14V12H15.5V56H49.5Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M23.5 27H41.5C42.604 27 43.5 26.104 43.5 25C43.5 23.896 42.604 23 41.5 23H23.5C22.396 23 21.5 23.896 21.5 25C21.5 26.104 22.396 27 23.5 27Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M23.5 38H41.5C42.604 38 43.5 37.104 43.5 36C43.5 34.896 42.604 34 41.5 34H23.5C22.396 34 21.5 34.896 21.5 36C21.5 37.104 22.396 38 23.5 38Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M23.5 49H41.5C42.604 49 43.5 48.104 43.5 47C43.5 45.896 42.604 45 41.5 45H23.5C22.396 45 21.5 45.896 21.5 47C21.5 48.104 22.396 49 23.5 49Z\" fill=\"#D2DDEE\"/>\n </g>\n <defs>\n <clipPath id=\"clip0_651_2393\">\n <rect width=\"64\" height=\"64\" fill=\"white\" transform=\"translate(0.5)\"/>\n </clipPath>\n </defs>\n </svg>\n <p>User roles will be displayed here when you have any.</p>\n </NothingContent>\n </NothingContainer>\n }\n </TableContainer>\n )\n}\n\nexport default UserRolesTable\n","import React from \"react\";\nimport {TableContainer, Table, NothingContainer, NothingContent} from \"./style\";\nimport {UserTableType} from \"./type\";\nimport StatusBadge from \"../StatusBadge/StatusBadge\";\n\nconst UsersTable = (props:UserTableType) => {\n const {users,callback} = props\n return (\n <TableContainer>\n <Table>\n <thead>\n <tr className=\"rounded-row\">\n <th>Name</th>\n <th>Organisation</th>\n <th>Email</th>\n <th>Role</th>\n <th>Status</th>\n </tr>\n </thead>\n {users && users.length > 0 &&\n <tbody>\n {users.map((user: {name:string,organisation:string,email:string,role:string,status:string},index:number) => (\n <tr key={index} className=\"rounded-row\" onClick={()=>{callback(user)}}>\n <td>{user.name}</td>\n <td>{user.organisation}</td>\n <td>{user.email}</td>\n <td>{user.role}</td>\n <td>\n <div>\n <StatusBadge status={user.status.toUpperCase() === 'ACTIVE' ? 'success' : \"error\"} label={user.status}/>\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M10.3592 7.52685L6.58584 3.76019C6.52387 3.6977 6.45013 3.64811 6.36889 3.61426C6.28765 3.58041 6.20052 3.56299 6.11251 3.56299C6.0245 3.56299 5.93736 3.58041 5.85612 3.61426C5.77488 3.64811 5.70115 3.6977 5.63917 3.76019C5.51501 3.8851 5.44531 4.05406 5.44531 4.23019C5.44531 4.40631 5.51501 4.57528 5.63917 4.70019L8.93917 8.03352L5.63917 11.3335C5.51501 11.4584 5.44531 11.6274 5.44531 11.8035C5.44531 11.9796 5.51501 12.1486 5.63917 12.2735C5.70092 12.3365 5.77455 12.3866 5.8558 12.421C5.93705 12.4553 6.0243 12.4732 6.11251 12.4735C6.20071 12.4732 6.28797 12.4553 6.36922 12.421C6.45047 12.3866 6.5241 12.3365 6.58584 12.2735L10.3592 8.50685C10.4268 8.44443 10.4808 8.36866 10.5178 8.28432C10.5547 8.19999 10.5738 8.10892 10.5738 8.01685C10.5738 7.92479 10.5547 7.83372 10.5178 7.74938C10.4808 7.66505 10.4268 7.58928 10.3592 7.52685Z\" fill=\"#A4BBDD\"/>\n </svg>\n </div>\n </td>\n </tr>\n ))}\n </tbody>\n }\n </Table>\n {users && users.length == 0 &&\n <NothingContainer>\n <NothingContent>\n <svg width=\"65\" height=\"64\" viewBox=\"0 0 65 64\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clipPath=\"url(#clip0_651_2393)\">\n <path d=\"M39.5 6H25.5V14H39.5V6Z\" fill=\"#E8EEF7\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M41.5006 6C41.5006 4.895 40.6046 4 39.5 4H25.5C24.3954 4 23.4994 4.895 23.4994 6V14C23.4994 15.105 24.3954 16 25.5 16H39.5C40.6046 16 41.5006 15.105 41.5006 14V6ZM27.5006 8V12H37.4994V8H27.5006Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M49.5 56C49.5 54.896 50.396 54 51.5 54C52.604 54 53.5 54.896 53.5 56V58C53.5 59.105 52.605 60 51.5 60H13.5C12.395 60 11.5 59.105 11.5 58V10C11.5 8.895 12.395 8 13.5 8H25.5C26.605 8 27.5 8.895 27.5 10V12H37.5V10C37.5 8.895 38.395 8 39.5 8H51.5C52.605 8 53.5 8.895 53.5 10V48C53.5 49.104 52.604 50 51.5 50C50.396 50 49.5 49.104 49.5 48V12H41.5V14C41.5 15.105 40.605 16 39.5 16H25.5C24.395 16 23.5 15.105 23.5 14V12H15.5V56H49.5Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M23.5 27H41.5C42.604 27 43.5 26.104 43.5 25C43.5 23.896 42.604 23 41.5 23H23.5C22.396 23 21.5 23.896 21.5 25C21.5 26.104 22.396 27 23.5 27Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M23.5 38H41.5C42.604 38 43.5 37.104 43.5 36C43.5 34.896 42.604 34 41.5 34H23.5C22.396 34 21.5 34.896 21.5 36C21.5 37.104 22.396 38 23.5 38Z\" fill=\"#D2DDEE\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M23.5 49H41.5C42.604 49 43.5 48.104 43.5 47C43.5 45.896 42.604 45 41.5 45H23.5C22.396 45 21.5 45.896 21.5 47C21.5 48.104 22.396 49 23.5 49Z\" fill=\"#D2DDEE\"/>\n </g>\n <defs>\n <clipPath id=\"clip0_651_2393\">\n <rect width=\"64\" height=\"64\" fill=\"white\" transform=\"translate(0.5)\"/>\n </clipPath>\n </defs>\n </svg>\n <p>Users will live here when you have any.</p>\n </NothingContent>\n </NothingContainer>\n }\n </TableContainer>\n )\n}\n\nexport default UsersTable\n","import React from \"react\"\nimport {WidgetTitleProps} from \"./type\";\nimport {WidgetTitleContainer} from \"./style\";\n\nconst WidgetTitle = (props:WidgetTitleProps) => {\n const {title} = props\n return (\n <WidgetTitleContainer {...props}>\n {title}\n </WidgetTitleContainer>\n )\n}\n\nexport default WidgetTitle\n"],"names":["l","Symbol","for","n","p","q","r","t","u","v","w","x","y","z","iterator","B","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","C","Object","assign","D","E","a","b","e","this","props","context","refs","updater","F","G","prototype","isReactComponent","setState","Error","forceUpdate","H","constructor","isPureReactComponent","I","Array","isArray","J","hasOwnProperty","K","current","L","key","ref","__self","__source","M","d","c","k","h","call","g","arguments","length","children","f","m","defaultProps","$$typeof","type","_owner","O","P","Q","replace","escape","toString","R","N","push","A","next","done","value","String","keys","join","S","T","_status","_result","then","default","U","V","transition","W","ReactCurrentDispatcher","ReactCurrentBatchConfig","ReactCurrentOwner","react_production_min","Children","map","forEach","apply","count","toArray","only","Component","Fragment","Profiler","StrictMode","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","cloneElement","createContext","_currentValue","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","_context","createElement","bind","createRef","forwardRef","render","isValidElement","lazy","_payload","_init","memo","compare","startTransition","unstable_act","useCallback","useContext","useDebugValue","useDeferredValue","useEffect","useId","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useSyncExternalStore","useTransition","version","process","env","NODE_ENV","__REACT_DEVTOOLS_GLOBAL_HOOK__","registerInternalModuleStart","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_OFFSCREEN_TYPE","MAYBE_ITERATOR_SYMBOL","getIteratorFn","maybeIterable","maybeIterator","ReactCurrentActQueue","isBatchingLegacy","didScheduleLegacyUpdate","ReactDebugCurrentFrame","currentExtraStackFrame","setExtraStackFrame","stack","getCurrentStack","getStackAddendum","impl","ReactSharedInternals","warn","format","_len","args","_key","printWarning","error","_len2","_key2","level","concat","argsWithFormat","item","unshift","Function","console","didWarnStateUpdateForUnmountedComponent","warnNoop","publicInstance","callerName","_constructor","componentName","displayName","name","warningKey","ReactNoopUpdateQueue","callback","completeState","partialState","emptyObject","freeze","deprecatedAPIs","replaceState","defineDeprecationWarning","methodName","info","defineProperty","get","fnName","ComponentDummy","PureComponent","pureComponentPrototype","isArrayImpl","testStringCoercion","checkKeyStringCoercion","willCoercionThrow","toStringTag","typeName","getContextName","getComponentNameFromType","tag","outerType","innerType","wrapperName","functionName","getWrappedName","outerName","lazyComponent","payload","init","specialPropKeyWarningShown","specialPropRefWarningShown","didWarnAboutStringRefs","RESERVED_PROPS","hasValidRef","config","getter","getOwnPropertyDescriptor","isReactWarning","undefined","hasValidKey","defineKeyPropWarningGetter","warnAboutAccessingKey","configurable","defineRefPropWarningGetter","warnAboutAccessingRef","warnIfStringRefCannotBeAutoConverted","stateNode","ReactElement","self","source","owner","element","_store","enumerable","writable","propName","childrenLength","childArray","i","_self","_source","object","didWarnAboutMaps","userProvidedKeyEscapeRegex","escapeUserProvidedKey","text","getElementKey","index","escaperLookup","match","mapIntoArray","array","escapedPrefix","nameSoFar","oldElement","newKey","child","invokeCallback","_child","mappedChild","childKey","escapedChildKey","subtreeCount","nextNamePrefix","iteratorFn","iterableChildren","entries","step","ii","childrenString","mapChildren","func","result","REACT_MODULE_REFERENCE","lazyInitializer","thenable","ctor","moduleObject","resolved","rejected","pending","isValidElementType","getModuleId","resolveDispatcher","dispatcher","prevLog","prevInfo","prevWarn","prevError","prevGroup","prevGroupCollapsed","prevGroupEnd","disabledDepth","disabledLog","__reactDisabledLog","prefix","ReactCurrentDispatcher$1","describeBuiltInComponentFrame","ownerFn","trim","componentFrameCache","reentry","PossiblyWeakMap","WeakMap","Map","describeNativeComponentFrame","fn","construct","control","frame","previousDispatcher","previousPrepareStackTrace","prepareStackTrace","log","group","groupCollapsed","groupEnd","defineProperties","disableLogs","Fake","set","Reflect","sample","sampleLines","split","controlLines","s","_frame","includes","reenableLogs","syntheticFrame","describeUnknownElementTypeFrameInDEV","shouldConstruct","propTypesMisspellWarningShown","loggedTypeFailures","ReactDebugCurrentFrame$1","setCurrentlyValidatingElement","setCurrentlyValidatingElement$1","getDeclarationErrorAddendum","getSourceInfoErrorAddendumForProps","elementProps","fileName","lineNumber","ownerHasKeyUseWarning","validateExplicitKey","parentType","validated","currentComponentErrorInfo","parentName","getCurrentComponentErrorInfo","childOwner","validateChildKeys","node","validatePropTypes","propTypes","typeSpecs","values","location","has","typeSpecName","error$1","err","ex","message","checkPropTypes","PropTypes","getDefaultProps","isReactClassApproved","validateFragmentProps","fragment","createElementWithValidation","validType","typeString","sourceInfo","didWarnAboutDeprecatedCreateFactory","didWarnAboutMessageChannel","enqueueTaskImpl","actScopeDepth","didWarnNoAwaitAct","popActScope","prevActScopeDepth","recursivelyFlushAsyncActWork","returnValue","resolve","reject","queue","flushActQueue","task","requireString","Math","random","slice","nodeRequire","module","setImmediate","_err","MessageChannel","channel","port1","onmessage","port2","postMessage","enqueueTask","isFlushing","createElement$1","cloneElement$1","newElement","createFactory","validatedFactory","forEachFunc","forEachContext","exports","Suspense","defaultValue","hasWarnedAboutUsingNestedContextConsumers","hasWarnedAboutUsingConsumerProvider","hasWarnedAboutDisplayNameOnConsumer","_Provider","_currentRenderer","_currentRenderer2","refObject","seal","ownName","elementType","lazyType","newDefaultProps","newPropTypes","scope","options","prevTransition","currentTransition","_updatedFibers","Set","size","clear","prevIsBatchingLegacy","thenableResult","wasAwaited","Promise","_queue","_thenable","_thenable2","deps","Context","realContext","formatterFn","create","reducer","initialArg","initialValue","initialState","subscribe","getSnapshot","getServerSnapshot","registerInternalModuleStop","require$$0","require$$1","theme","white","black","ButtonComp","styled","button","templateObject_1","__makeTemplateObject","Button","variant","disabled","label","React","__assign","className","Container","div","TextArea","templateObject_2","ActionSuccess","subText","headingText","width","height","viewBox","fill","xmlns","clipPath","fillRule","clipRule","id","transform","TableContainer","Table","table","NothingContainer","templateObject_3","NothingContent","templateObject_4","LogTimeline","TimelineDot","LogContent","BankAcctsWrapper","AcctDets","ActionButtons","OutlineButtonComp","OutlineButton","styleInject","css","insertAt","document","head","getElementsByTagName","style","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","Loader","xmlnsXlink","patternContentUnits","xlinkHref","MapContainer","Dets","AccountInfo","BreadcrumbContainer","BrokerCountry","templateObject_5","noop","uid","isNullOrUndef","isObject","isNumberFinite","Number","isFinite","finiteOrDefault","valueOrDefault","toDimension","dimension","endsWith","parseFloat","thisArg","each","loopable","reverse","len","_elementsEqual","a0","a1","ilen","v0","v1","datasetIndex","clone$1","target","klen","isValidKey","indexOf","_merger","tval","sval","merge","sources","merger","mergeIf","_mergerIf","keyResolvers","o","resolveObjectKey","obj","resolver","parts","tmp","part","_splitKey","_getKeyResolver","_capitalize","str","charAt","toUpperCase","defined","isFunction","setsEqual","PI","TAU","PITAU","INFINITY","POSITIVE_INFINITY","RAD_PER_DEG","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","log10","sign","niceNum","range","roundedRange","round","almostEquals","niceRange","pow","floor","fraction","isNumber","isNaN","epsilon","abs","_setMinAndMaxByKey","property","min","max","toRadians","degrees","toDegrees","radians","_decimalPlaces","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","sqrt","angle","atan2","distance","distanceBetweenPoints","pt1","pt2","_angleDiff","_normalizeAngle","_angleBetween","start","end","sameAngleIsFullCircle","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","_isBetween","_lookup","cmp","mid","hi","lo","_lookupByKey","last","_rlookupByKey","arrayEvents","unlistenArrayEvents","listener","stub","_chartjs","listeners","splice","_arrayUnique","items","add","from","requestAnimFrame","window","requestAnimationFrame","throttled","updateFn","updateArgs","ticking","rest","_toLeftRightCenter","align","_alignStartEnd","_getStartAndCountOfVisiblePoints","meta","points","animationsDisabled","pointCount","_sorted","iScale","_parsed","axis","minDefined","maxDefined","getUserBounds","getPixelForValue","_scaleRangesChanged","xScale","yScale","_scaleRanges","newRanges","xmin","xmax","ymin","ymax","changed","atEdge","elasticIn","sin","elasticOut","effects","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","cos","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","lim","p2b","n2b","b2n","n2p","map$1","hex","h1","h2","eq","hexString","isShort","alpha","HUE_RE","hsl2rgbn","hsv2rgbn","hwb2rgbn","rgb","rgb2hsl","hueValue","calln","hsl2rgb","hue","hueParse","exec","p1","p2","hwb2rgb","hsv2rgb","Z","Y","X","names$1","OiceXe","antiquewEte","aqua","aquamarRe","azuY","beige","bisque","blanKedOmond","Xe","XeviTet","bPwn","burlywood","caMtXe","KartYuse","KocTate","cSO","cSnflowerXe","cSnsilk","crimson","cyan","xXe","xcyan","xgTMnPd","xWay","xgYF","xgYy","xkhaki","xmagFta","xTivegYF","xSange","xScEd","xYd","xsOmon","xsHgYF","xUXe","xUWay","xUgYy","xQe","xviTet","dAppRk","dApskyXe","dimWay","dimgYy","dodgerXe","fiYbrick","flSOwEte","foYstWAn","fuKsia","gaRsbSo","ghostwEte","gTd","gTMnPd","Way","gYF","gYFLw","gYy","honeyMw","hotpRk","RdianYd","Rdigo","ivSy","khaki","lavFMr","lavFMrXsh","lawngYF","NmoncEffon","ZXe","ZcSO","Zcyan","ZgTMnPdLw","ZWay","ZgYF","ZgYy","ZpRk","ZsOmon","ZsHgYF","ZskyXe","ZUWay","ZUgYy","ZstAlXe","ZLw","lime","limegYF","lRF","magFta","maPon","VaquamarRe","VXe","VScEd","VpurpN","VsHgYF","VUXe","VsprRggYF","VQe","VviTetYd","midnightXe","mRtcYam","mistyPse","moccasR","navajowEte","navy","Tdlace","Tive","TivedBb","Sange","SangeYd","ScEd","pOegTMnPd","pOegYF","pOeQe","pOeviTetYd","papayawEp","pHKpuff","peru","pRk","plum","powMrXe","purpN","YbeccapurpN","Yd","Psybrown","PyOXe","saddNbPwn","sOmon","sandybPwn","sHgYF","sHshell","siFna","silver","skyXe","UXe","UWay","UgYy","snow","sprRggYF","stAlXe","tan","teO","tEstN","tomato","Qe","viTet","JHt","wEte","wEtesmoke","Lw","LwgYF","names","nameParse","unpacked","tkeys","j","ok","nk","parseInt","unpack","transparent","toLowerCase","RGB_RE","to","modHSL","ratio","clone","proto","fromObject","input","functionParse","rgbParse","Color","ret","_rgb","_valid","valid","rgbString","hslString","mix","color","weight","c1","c2","w2","w1","interpolate","rgb1","rgb2","clearer","greyscale","val","opaquer","negate","lighten","darken","saturate","desaturate","rotate","deg","index_esm","isPatternOrGradient","getHoverColor","overrides","descriptors","getScope$1","root","defaults","_descriptors","animation","backgroundColor","borderColor","datasets","devicePixelRatio","chart","platform","getDevicePixelRatio","elements","events","font","family","lineHeight","hover","hoverBackgroundColor","ctx","hoverBorderColor","hoverColor","indexAxis","interaction","mode","intersect","includeInvisible","maintainAspectRatio","onHover","onClick","parsing","plugins","responsive","scale","scales","showLine","drawActiveElementsOnTop","describe","override","route","targetScope","targetName","scopeObject","targetScopeObject","privateName","local","_scriptable","startsWith","_indexable","_fallback","_measureText","data","gc","longest","string","textWidth","measureText","_longestText","arrayOfThings","cache","garbageCollect","save","jlen","thing","nestedThing","restore","gcLen","_alignPixel","pixel","currentDevicePixelRatio","halfWidth","clearCanvas","canvas","getContext","resetTransform","clearRect","drawPoint","drawPointLegend","xOffset","yOffset","cornerRadius","pointStyle","rotation","radius","rad","translate","drawImage","beginPath","ellipse","arc","closePath","moveTo","lineTo","SQRT1_2","rect","borderWidth","stroke","_isPointInArea","point","area","margin","left","right","top","bottom","clipArea","clip","unclipArea","_steppedLineTo","previous","flip","midpoint","_bezierCurveTo","bezierCurveTo","cp1x","cp2x","cp1y","cp2y","renderText","opts","lines","strokeWidth","strokeColor","line","translation","fillStyle","textAlign","textBaseline","setRenderOpts","strokeStyle","lineWidth","strokeText","maxWidth","fillText","decorateText","strikethrough","underline","metrics","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","yDecoration","decorationWidth","addRoundedRectPath","topLeft","bottomLeft","bottomRight","topRight","LINE_HEIGHT","RegExp","FONT_STYLE","toLineHeight","matches","_readValueToProps","objProps","read","prop","toTRBL","toTRBLCorners","toPadding","toFont","fallback","toFontString","inputs","cacheable","parentContext","_createResolver","scopes","prefixes","rootScopes","getTarget","_resolve","_cacheable","_scopes","_rootScopes","_getTarget","Proxy","deleteProperty","_keys","_cached","proxy","readKey","needsSubResolver","createSubResolver","_resolveWithPrefixes","getPrototypeOf","getKeysFromAllScopes","ownKeys","storage","_storage","_attachContext","subProxy","descriptorDefaults","_proxy","_subProxy","_stack","setContext","receiver","isScriptable","delete","_resolveScriptable","isIndexable","arr","filter","_resolveArray","_resolveWithContext","allKeys","scriptable","indexable","_allKeys","resolveFallback","getScope","parent","addScopes","parentScopes","parentFallback","allScopes","addScopesFromKey","subGetTarget","resolveKeysFromAllScopes","_parseObjectDataRadialScale","_parsing","parsed","parse","EPSILON","getPoint","skip","getValueAxis","splineCurve","firstPoint","middlePoint","afterPoint","d01","d12","s01","s12","fa","fb","splineCurveMonotone","valueAxis","pointsLen","deltaK","mK","pointBefore","pointCurrent","pointAfter","slopeDelta","alphaK","betaK","tauK","squaredMagnitude","monotoneAdjust","delta","iPixel","vPixel","monotoneCompute","capControlPoint","pt","_updateBezierControlPoints","loop","controlPoints","spanGaps","cubicInterpolationMode","prev","tension","capBezierPoints","inArea","inAreaPrev","inAreaNext","_isDomSupported","_getParentNode","domNode","parentNode","host","parseMaxStyle","styleValue","parentProperty","valueInPixels","getComputedStyle","positions","getPositionedStyle","styles","suffix","pos","getRelativePosition","evt","borderBox","boxSizing","paddings","borders","box","touches","offsetX","offsetY","shadowRoot","useOffsetPos","getBoundingClientRect","clientX","clientY","getCanvasPosition","round1","getMaximumSize","bbWidth","bbHeight","aspectRatio","margins","maxHeight","containerSize","container","containerStyle","containerBorder","containerPadding","clientWidth","clientHeight","getContainerSize","retinaScale","forceRatio","forceStyle","pixelRatio","deviceHeight","deviceWidth","setTransform","supportsEventListenerOptions","passiveSupported","passive","addEventListener","removeEventListener","readUsedSize","el","getPropertyValue","getStyle","_pointInLine","_steppedInterpolation","_bezierInterpolation","cp1","cp2","intlCache","formatNumber","num","locale","cacheKey","JSON","stringify","formatter","Intl","NumberFormat","getNumberFormat","getRtlAdapter","rtl","rectX","setWidth","xPlus","leftForLtr","itemWidth","getRightToLeftAdapter","_itemWidth","overrideTextDirection","direction","original","getPropertyPriority","setProperty","prevTextDirection","restoreTextDirection","propertyFn","between","normalize","normalizeSegment","_boundSegment","segment","bounds","startBound","endBound","getSegment","prevValue","inside","subStart","shouldStart","shouldStop","_boundSegments","segments","sub","splitByStyles","segmentOptions","chartContext","_chart","baseStyle","readStyle","_datasetIndex","prevStyle","addStyle","st","dir","p0","p0DataIndex","p1DataIndex","styleChanged","doSplitByStyles","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","animator","_request","_charts","_running","_lastDate","_notify","anims","date","callbacks","numSteps","duration","initial","currentStep","_refresh","_update","Date","now","remaining","running","draw","_active","_total","tick","pop","_getAnims","charts","complete","progress","listen","event","cb","reduce","acc","cur","_duration","stop","cancel","remove","interpolators","boolean","factor","c0","number","Animation","cfg","currentValue","_fn","_easing","easing","_start","delay","_loop","_target","_prop","_from","_to","_promises","active","update","elapsed","remain","wait","promises","res","rej","method","animationOptions","colors","properties","numbers","resize","show","animations","visible","hide","Animations","_properties","configure","animatedProps","getOwnPropertyNames","option","_animateOptions","newOptions","$shared","$animations","resolveTargetOptions","_createAnimations","anim","all","awaitAll","scaleClip","allowedOverflow","getSortedDatasetIndices","filterVisible","metasets","_getSortedDatasetMetas","applyStack","dsIndex","singleMode","otherValue","isStacked","stacked","getOrCreateStack","stacks","stackKey","indexValue","subStack","getLastIndexInStack","vScale","positive","getMatchingVisibleMetas","updateStacks","controller","_cachedMeta","_stacks","iAxis","vAxis","indexScale","valueScale","getStackKey","_top","_bottom","getFirstScaleId","shift","clearStacks","isDirectUpdateMode","cloneIfNotShared","cached","shared","DatasetController","_ctx","_cachedDataOpts","getMeta","_type","_data","_objectData","_sharedOptions","_drawStart","_drawCount","enableOptionSharing","supportsDecimation","$context","_syncList","initialize","linkScales","_stacked","addElements","updateIndex","dataset","getDataset","chooseId","xid","xAxisID","yid","yAxisID","rid","rAxisID","iid","iAxisID","vid","vAxisID","getScaleForId","rScale","getDatasetMeta","scaleID","_getOtherScale","reset","_destroy","_dataCheck","adata","convertObjectDataToArray","isExtensible","base","datasetElementType","buildOrUpdateElements","resetNewElements","stackChanged","oldStacked","_resyncElements","scopeKeys","datasetScopeKeys","getOptionScopes","createResolver","sorted","parseArrayData","parseObjectData","parsePrimitiveData","isNotInOrderComparedToPrev","labels","getLabels","singleScale","xAxisKey","yAxisKey","getParsed","getDataElement","updateRangeFromParsed","parsedValue","NaN","getMinMax","canStack","otherScale","hidden","createStack","NEGATIVE_INFINITY","otherMin","otherMax","_skip","getAllParsedValues","getMaxOverflow","getLabelAndValue","getLabelForValue","_clip","toClip","defaultClip","chartArea","resolveDatasetElementOptions","resolveDataElementOptions","dataIndex","raw","createDataContext","createDatasetContext","_resolveElementOptions","dataElementType","sharing","datasetElementScopeKeys","resolveNamedOptions","_resolveAnimations","datasetAnimationScopeKeys","getSharedOptions","includeOptions","sharedOptions","_animationsDisabled","_getSharedOptions","firstOpts","previouslySharedOptions","updateSharedOptions","updateElement","_setStyle","removeHoverStyle","setHoverStyle","_removeDatasetHoverStyle","_setDatasetHoverStyle","arg1","arg2","numMeta","numData","_insertElements","_removeElements","move","updateElements","removed","_sync","_dataChanges","_onDataPush","_onDataPop","_onDataShift","_onDataSplice","newCount","_onDataUnshift","computeMinSampleSize","_cache","$bar","visibleMetas","sort","getAllScaleValues","curr","_length","updateMinAndPrev","ticks","getPixelForTick","parseValue","entry","startValue","endValue","barStart","barEnd","_custom","parseFloatBar","parseArrayOrPrimitive","isFloatBar","custom","setBorderSkipped","edge","borderSkipped","horizontal","borderProps","enableBorderRadius","parseEdge","orig","v2","startEnd","setInflateAmount","inflateAmount","BarController","iAxisKey","vAxisKey","super","bars","getBasePixel","isHorizontal","ruler","_getRuler","vpixels","_calculateBarValuePixels","ipixels","_calculateBarIndexPixels","center","_getStacks","grouped","skipNull","_getStackCount","_getStackIndex","pixels","barThickness","_startPixel","_endPixel","stackCount","categoryPercentage","barPercentage","baseValue","minBarLength","actualBase","floating","getDataVisibility","barSign","startPixel","getPixelForDecimal","endPixel","halfGrid","getLineWidthForValue","maxBarThickness","Infinity","percent","chunk","computeFlexCategoryTraits","thickness","computeFitCategoryTraits","stackIndex","rects","_index_","offset","grid","_value_","beginAtZero","BubbleController","tooltip","title","DoughnutController","innerRadius","outerRadius","_getRotation","_getCircumference","circumference","_getRotationExtents","isDatasetVisible","arcs","spacing","getMaxBorderWidth","getMaxOffset","maxSize","cutout","chartWeight","_getRingWeight","ratioX","ratioY","startAngle","endAngle","startX","startY","endX","endY","calcMax","calcMin","maxX","maxY","minX","minY","getRatioAndOffset","maxRadius","radiusLength","_getVisibleDatasetWeightTotal","total","calculateTotal","_getRingWeightOffset","_circumference","animateRotate","calculateCircumference","animationOpts","centerX","centerY","animateScale","metaData","borderAlign","hoverBorderWidth","hoverOffset","ringWeightOffset","legend","generateLabels","legendItem","toggleDataVisibility","tooltipItem","dataLabel","formattedValue","LineController","_dataset","_decimated","animated","maxGapLength","directUpdate","prevParsed","nullData","border","lastPoint","updateControlPoints","PolarAreaController","_updateRadius","minSize","cutoutPercentage","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getIndexAngle","defaultAngle","countVisibleElements","_computeAngle","getDistanceFromCenterForValue","angleLines","display","circular","pointLabels","PieController","RadarController","_fullLoop","pointPosition","getPointPositionForValue","Element","tooltipPosition","useFinalPosition","getProps","hasValue","final","defaultRoutes","formatters","numeric","tickValue","notation","maxTick","calculateDelta","logDelta","numDecimal","minimumFractionDigits","maximumFractionDigits","logarithmic","Ticks","autoSkip","tickOpts","ticksLimit","maxTicksLimit","tickLength","_tickSize","maxScale","maxChart","_maxLength","determineMaxTicks","majorIndices","major","enabled","getMajorIndices","numMajorIndices","first","newTicks","ceil","skipMajors","evenMajorSpacing","diff","getEvenSpacing","factors","_factorize","calculateSpacing","avgMajorSpacing","majorStart","majorEnd","grace","drawBorder","drawOnChartArea","drawTicks","tickWidth","tickColor","padding","minRotation","maxRotation","mirror","textStrokeWidth","textStrokeColor","autoSkipPadding","labelOffset","minor","crossAlign","showLabelBackdrop","backdropColor","backdropPadding","offsetFromEdge","numItems","increment","getPixelForGridLine","offsetGridLines","validIndex","lineValue","getTickMarkLength","getTitleHeight","titleAlign","position","reverseAlign","Scale","_margins","paddingTop","paddingBottom","paddingLeft","paddingRight","labelRotation","_range","_gridLineItems","_labelItems","_labelSizes","_longestTextCache","_reversePixels","_userMax","_userMin","_suggestedMax","_suggestedMin","_ticksLength","_borderValue","_dataLimitsCached","suggestedMin","suggestedMax","metas","getPadding","getTicks","xLabels","yLabels","beforeLayout","beforeUpdate","sampleSize","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","minmax","change","keepZero","_addGrace","beforeBuildTicks","buildTicks","afterBuildTicks","samplingEnabled","_convertTicksToLabels","beforeCalculateLabelRotation","calculateLabelRotation","afterCalculateLabelRotation","afterAutoSkip","beforeFit","fit","afterFit","afterUpdate","reversePixels","_alignToPixels","alignToPixels","_callHooks","notifyPlugins","beforeTickToLabelConversion","generateTickLabels","afterTickToLabelConversion","numTicks","maxLabelDiagonal","_isVisible","labelSizes","_getLabelSizes","maxLabelWidth","widest","maxLabelHeight","highest","asin","titleOpts","gridOpts","titleHeight","tickPadding","angleRadians","labelHeight","labelWidth","_calculatePadding","_handleMargins","isRotated","labelsBelowTicks","offsetLeft","offsetRight","isFullSize","fullSize","_computeLabelSizes","caches","widths","heights","tickFont","fontString","nestedLabel","widestLabelSize","highestLabelSize","_resolveTickFontOptions","valueAt","idx","getValueForPixel","decimal","getDecimalForPixel","getBaseValue","createTickContext","optionTicks","rot","_computeGridLineItems","ticksLength","tl","borderOpts","axisWidth","axisHalfWidth","alignBorderValue","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","x1","y1","x2","y2","positionAxisID","limit","optsAtIndex","lineColor","tickBorderDash","tickBorderDashOffset","_computeLabelItems","tickAndPadding","hTickAndPadding","lineCount","textOffset","_getXAxisLabelAlignment","_getYAxisLabelAlignment","halfCount","backdrop","tickTextAlign","labelPadding","_computeLabelArea","drawBackground","fillRect","findIndex","drawGrid","drawLine","setLineDash","lineDashOffset","lastLineWidth","drawLabels","drawTitle","titleX","titleY","titleArgs","_layers","tz","gz","getSortedVisibleDatasetMetas","axisID","_maxDigits","fontSize","TypedRegistry","isForType","isPrototypeOf","register","parentScope","isIChartComponent","itemDefaults","routes","propertyParts","sourceName","sourceScope","routeDefaults","registerDefaults","unregister","registry","controllers","_typedRegistries","_each","addControllers","addPlugins","addScales","getController","_get","getElement","getPlugin","getScale","removeControllers","removeElements","removePlugins","removeScales","typedRegistry","arg","reg","_getRegistryForType","_exec","itemReg","component","camelMethod","ScatterController","__proto__","abstract","DateAdapter","chartOptions","formats","timestamp","amount","unit","startOf","weekday","endOf","members","adapters","_date","binarySearch","metaset","lookupMethod","getRange","evaluateInteractionItems","handler","getIntersectItems","isPointInArea","inRange","getNearestCartesianItems","distanceMetric","useX","useY","deltaX","deltaY","getDistanceMetricForAxis","minDistance","getCenterPoint","getNearestItems","getNearestRadialItems","getAxisItems","rangeMethod","intersectsItem","Interaction","modes","nearest","STATIC_POSITIONS","filterByPosition","filterDynamicPositionByAxis","sortByWeight","setLayoutDims","layouts","params","wrap","stackWeight","placed","buildStacks","vBoxMaxWidth","hBoxMaxHeight","layout","availableWidth","availableHeight","getCombinedMax","maxPadding","updateMaxPadding","boxPadding","updateDims","newWidth","outerWidth","newHeight","outerHeight","widthChanged","heightChanged","same","other","getMargins","marginForPositions","fitBoxes","boxes","refitBoxes","refit","setBoxDims","placeBoxes","userPadding","autoPadding","addBox","removeBox","layoutItem","minPadding","layoutBoxes","wrapBoxes","centerHorizontal","centerVertical","leftAndTop","rightAndBottom","vertical","buildLayoutBoxes","verticalBoxes","horizontalBoxes","visibleVerticalBoxCount","updatePos","handleMaxPadding","BasePlatform","acquireContext","releaseContext","isAttached","updateConfig","BasicPlatform","EXPANDO_KEY","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","isNullOrEmpty","eventListenerOptions","removeListener","nodeListContains","nodeList","contains","createAttachObserver","observer","MutationObserver","trigger","addedNodes","removedNodes","observe","childList","subtree","createDetachObserver","drpListeningCharts","oldDevicePixelRatio","onWindowResize","dpr","createResizeObserver","ResizeObserver","contentRect","listenDevicePixelRatioChanges","releaseObserver","disconnect","unlistenDevicePixelRatioChanges","createProxyAndListen","native","fromNativeEvent","addListener","DomPlatform","renderHeight","getAttribute","renderWidth","displayWidth","displayHeight","initCanvas","removeAttribute","setAttribute","proxies","$proxies","attach","detach","isConnected","PluginService","notify","hook","_createDescriptors","descriptor","plugin","cancelable","invalidate","_oldCache","_notifyStateChanges","localIds","allPlugins","getOpts","pluginOpts","createDescriptors","previousDescriptors","some","pluginScopeKeys","getIndexAxis","datasetDefaults","determineAxis","scaleOptions","initOptions","chartDefaults","configScales","chartIndexAxis","firstIDs","scaleConf","defaultId","getDefaultScaleIDFromAxis","defaultScaleOptions","defaultID","getAxisFromDefaultScaleID","mergeScaleConfig","initData","keyCache","keysCached","cachedKeys","generate","addIfFound","Config","_config","initConfig","_scopeCache","_resolverCache","clearCache","datasetType","additionalOptionScopes","_cachedScopes","mainScope","resetCache","keyLists","chartOptionScopes","subPrefixes","getResolver","hasFunction","needContext","resolverCache","KNOWN_POSITIONS","positionIsHorizontal","compare2Level","l1","l2","onAnimationsComplete","onComplete","onAnimationProgress","onProgress","getCanvas","getElementById","instances","getChart","moveNumericKeys","intKey","Chart$2","userConfig","initialCanvas","existingChart","OffscreenCanvas","_detectPlatform","_options","_aspectRatio","_metasets","_lastEvent","_listeners","_responsiveListeners","_sortedMetasets","_plugins","_hiddenIndices","attached","_doResize","timeout","clearTimeout","setTimeout","debounce","resizeDelay","_initialize","bindEvents","_resizeBeforeDraw","_resize","newSize","newRatio","onResize","ensureScalesHaveIDs","axisOptions","buildOrUpdateScales","scaleOpts","updated","isRadial","dposition","dtype","scaleType","hasUpdated","_updateMetasets","_destroyDatasetMeta","_removeUnreferencedMetasets","buildOrUpdateControllers","newControllers","order","ControllerClass","_resetElements","animsDisabled","_updateScales","_checkEventBindings","_updateHiddenIndices","_minPadding","_updateLayout","_updateDatasets","_eventHandler","_updateHoverStyles","existingEvents","newEvents","unbindEvents","changes","_getUniformDataChanges","datasetCount","makeSet","changeSet","noArea","_idx","_updateDataset","layers","_drawDatasets","_drawDataset","useClip","getElementsAtEventForMode","setDatasetVisibility","_updateVisibility","_stop","destroy","toBase64Image","toDataURL","bindUserEvents","bindResponsiveEvents","_add","_remove","detached","updateHoverStyle","getActiveElements","setActiveElements","activeElements","lastActive","replay","hoverOptions","deactivated","activated","inChartArea","eventFilter","_handleEvent","_getActiveElements","isClick","_isClickEvent","lastEvent","determineLastEvent","invalidatePlugins","Chart","clipArc","pixelMargin","angleMargin","parseBorderRadius$1","angleDelta","borderRadius","halfThickness","innerLimit","computeOuterLimit","outerArcLimit","outerStart","outerEnd","innerStart","innerEnd","rThetaToXY","theta","pathArc","innerR","spacingOffset","avNogSpacingRadius","angleOffset","outerStartAdjustedRadius","outerEndAdjustedRadius","outerStartAdjustedAngle","outerEndAdjustedAngle","innerStartAdjustedRadius","innerEndAdjustedRadius","innerStartAdjustedAngle","innerEndAdjustedAngle","pCenter","p4","p8","outerStartX","outerStartY","outerEndX","outerEndY","inner","lineJoin","fullCircles","drawFullCircleBorders","ArcElement","chartX","chartY","rAdjust","betweenAngles","withinRadius","halfAngle","halfRadius","radiusOffset","drawArc","setStyle","lineCap","pathVars","paramsStart","paramsEnd","segmentStart","segmentEnd","outside","pathSegment","lineMethod","stepped","getLineMethod","fastPathSegment","prevX","lastY","avgX","countX","pointIndex","drawX","truncX","_getSegmentMethod","usePath2D","Path2D","path","_path","strokePathWithCache","segmentMethod","strokePathDirect","LineElement","_points","_segments","_pointsUpdated","findStartAndEnd","solidSegments","_computeSegments","_interpolate","_getInterpolationMethod","interpolated","inRange$1","hitRadius","PointElement","mouseX","mouseY","inXRange","inYRange","hoverRadius","getBarBounds","bar","half","skipOrLimit","boundingRects","maxW","maxH","parseBorderWidth","maxR","enableBorder","parseBorderRadius","outer","skipX","skipY","addNormalRectPath","inflateRect","refRect","BarElement","addRectPath","cleanDecimatedDataset","cleanDecimatedData","plugin_decimation","algorithm","beforeElementsUpdate","xAxis","getStartAndCountOfVisiblePointsSimplified","threshold","decimated","samples","bucketWidth","sampledIndex","endIndex","maxAreaPoint","maxArea","nextA","avgY","avgRangeStart","avgRangeEnd","avgRangeLength","rangeOffs","rangeTo","pointAx","pointAy","lttbDecimation","minIndex","maxIndex","startIndex","xMin","dx","lastIndex","intermediateIndex1","intermediateIndex2","minMaxDecimation","_getBounds","_findSegmentEnd","_getEdge","_createBoundaryLine","boundary","linePoints","_pointsFromSegments","_shouldApplyFill","_resolveTarget","propagate","visited","_decodeFill","fillOption","parseFillOption","firstCh","decodeTargetIndex","addPointsBelow","sourcePoint","linesBelow","postponed","findPoint","pointValue","firstValue","lastValue","simpleArc","getLineByIndex","sourcePoints","below","getLinesBelow","_buildStackLine","_getTargetValue","computeCircularBoundary","_getTargetPixel","computeLinearBoundary","computeBoundary","_drawfill","lineOpts","above","clipVertical","doFill","clipY","lineLoop","tpoints","targetSegments","tgt","subBounds","fillSources","fillSource","src","notShape","clipBounds","interpolatedLineTo","targetLoop","interpolatedPoint","afterDatasetsUpdate","_args","$filler","beforeDraw","drawTime","beforeDatasetsDraw","beforeDatasetDraw","getBoxSize","labelOpts","boxHeight","boxWidth","usePointStyle","pointStyleWidth","itemHeight","Legend","_added","legendHitBoxes","_hoveredItem","doughnutMode","legendItems","columnSizes","lineWidths","buildLabels","labelFont","_computeTitleHeight","_fitRows","_fitCols","hitboxes","totalHeight","row","heightLimit","totalWidth","currentColWidth","currentColHeight","col","adjustHitBoxes","rtlHelper","hitbox","_draw","defaultColor","fontColor","halfFontSize","cursor","textDirection","lineDash","drawOptions","SQRT2","yBoxTop","xBoxLeft","drawLegendBox","_textX","titleFont","titlePadding","topPaddingPlusHalfFontSize","_getLegendItemAt","hitBox","lh","handleEvent","onLeave","isListened","hoveredItem","sameItem","plugin_legend","_element","afterEvent","ci","Title","_padding","textSize","_drawArgs","fontOpts","plugin_title","titleBlock","createTitle","plugin_subtitle","positioners","average","eventPosition","nearestElement","tp","pushOrConcat","toPush","splitNewlines","createTooltipItem","getTooltipSize","body","footer","bodyFont","footerFont","titleLineCount","footerLineCount","bodyLineItemCount","combinedBodyLength","bodyItem","before","after","beforeBody","afterBody","titleSpacing","titleMarginBottom","displayColors","bodySpacing","footerMarginTop","footerSpacing","widthPadding","maxLineWidth","determineXAlign","yAlign","chartWidth","xAlign","caret","caretSize","caretPadding","doesNotFitWithAlign","determineAlignment","determineYAlign","getBackgroundPoint","alignment","paddingAndSize","alignX","alignY","getAlignedX","getBeforeAfterBodyLines","overrideCallbacks","Tooltip","opacity","_eventPosition","_size","_cachedAnimations","_tooltipItems","dataPoints","caretX","caretY","labelColors","labelPointStyles","labelTextColors","tooltipItems","getTitle","beforeTitle","afterTitle","getBeforeBody","getBody","bodyItems","scoped","beforeLabel","afterLabel","getAfterBody","getFooter","beforeFooter","afterFooter","_createItems","itemSort","labelColor","labelPointStyle","labelTextColor","positionAndSize","backgroundPoint","external","drawCaret","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","titleColor","_drawColorBox","colorX","rtlColorX","yOffSet","colorY","multiKeyBackground","outerX","innerX","strokeRect","drawBody","bodyAlign","bodyLineHeight","xLinePadding","fillLineOfText","bodyAlignForCalculation","textColor","bodyColor","drawFooter","footerAlign","footerColor","tooltipSize","quadraticCurveTo","_updateAnimationTarget","animX","animY","_willRender","hasTooltipContent","globalAlpha","positionChanged","_positionChanged","_ignoreReplayEvents","plugin_tooltip","afterInit","afterDraw","labelCount","Decimation","Filler","SubTitle","findOrAddLabel","addedLabels","addIfString","lastIndexOf","CategoryScale","_startValue","_valueRange","_addedLabels","added","generateTicks$1","generationOptions","dataRange","precision","maxTicks","maxDigits","includeBounds","maxSpaces","rmin","rmax","countDefined","minSpacing","niceMin","niceMax","numSpaces","rounded","almostWhole","decimalPlaces","relativeLabelSize","LinearScaleBase","_endValue","handleTickRangeOptions","setMin","setMax","minSign","maxSign","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","getTickLimit","stepSize","computeTickLimit","LinearScale","isMajor","tickVal","LogarithmicScale","_zero","exp","endExp","endSignificand","significand","lastTick","generateTicks","getTickBackdropHeight","determineLimits","fitWithPointLabels","limits","valueCount","_pointLabels","pointLabelOpts","additionalAngle","centerPointLabels","getPointLabelContext","getPointPosition","drawingArea","plFont","updateLimits","setCenterPoint","_pointLabelItems","extra","outerDistance","pointLabelPosition","yForAngle","getTextAlignForAngle","leftForTextAlign","buildPointLabelItems","hLimits","vLimits","pathRadiusLine","RadialLinearScale","leftMovement","rightMovement","topMovement","bottomMovement","scalingFactor","getValueForDistanceFromCenter","scaledDistance","pointLabel","createPointLabelContext","distanceFromCenter","getBasePosition","getPointLabelPosition","backdropLeft","backdropTop","backdropWidth","backdropHeight","drawPointLabels","gridLineOpts","drawRadiusLine","animate","INTERVALS","millisecond","common","steps","second","minute","hour","day","week","month","quarter","year","UNITS","sorter","adapter","_adapter","parser","isoWeekday","_parseOpts","determineUnitForAutoTicks","minUnit","capacity","interval","addTick","time","timestamps","ticksFromTimestamps","majorUnit","setMajorTicks","TimeScale","_unit","_majorUnit","_offsets","_normalized","displayFormats","normalized","_applyBounds","_getLabelBounds","getLabelTimestamps","timeOpts","_generate","_filterBetween","_getLabelCapacity","determineUnitForFormatting","determineMajorUnit","initOffsets","offsetAfterAutoskip","getDecimalForValue","hasWeekday","getDataTimestamps","tooltipFormat","datetime","_tickFormatFunction","minorFormat","majorFormat","offsets","_getLabelSize","ticksOpts","tickLabelWidth","cosRotation","sinRotation","tickFontSize","exampleTime","exampleLabel","prevSource","nextSource","prevTarget","nextTarget","span","TimeSeriesScale","_table","_minPos","_tableRange","_getTimestampsForTable","buildLookupTable","registerables","defaultDatasetIdKey","reforwardRef","setLabels","currentData","nextLabels","setDatasets","nextDatasets","datasetIdKey","addedDatasets","nextDataset","currentDataset","find","cloneData","nextData","ChartComponent","param","redraw","fallbackContent","updateMode","canvasRef","chartRef","renderChart","ChartJS","destroyChart","setOptions","nextOptions","role","createTypedChart","Line","$","weekdays","months","ordinal","utcOffset","ms","_","$L","utc","$u","$x","$offset","$d","test","substring","UTC","$y","getFullYear","$M","getMonth","$D","getDate","$W","getDay","$H","getHours","$m","getMinutes","$s","getSeconds","$ms","getMilliseconds","$utils","isValid","isSame","isAfter","isBefore","$g","unix","valueOf","getTime","toDate","$locale","weekStart","$set","daysInMonth","subtract","invalidDate","meridiem","YY","YYYY","MM","MMM","monthsShort","MMMM","DD","dd","weekdaysMin","ddd","weekdaysShort","dddd","HH","hh","mm","ss","SSS","getTimezoneOffset","toJSON","toISOString","toUTCString","extend","$i","isDayjs","en","Ls","ChartContainer","GraphArea","ExchangeCurr","RateInfo","RateDate","templateObject_6","ChartJs","ConsentContainer","ConsentNotice","ConsentHeading","h5","ConsentDesc","ConsentButton","ConsentButtonsContainer","DropdownContainer","LabelContainer","DropdownField","DropdownIcon","OptionsList","DropdownOption","CountrySelector","selectedOption","initialText","initialFlag","_a","opened","setOpened","_b","passedOption","setPassedOption","imgFile","activeElement","classList","code","onBlur","onMouseUp","gap","alignItems","overflowX","optionFlag","alt","optionName","country","DatePickerComp","calendarPosition","topOffset","leftOffset","DateCellContainer","fallsWithinRange","selected","notSelectable","TimePickerComp","DatePickerContainer","DatePickerCalendar","refSec","setActiveCalendar","currentMonth","setCurrentMonth","currentYear","setCurrentYear","_c","currentMonth2","setCurrentMonth2","_d","currentYear2","setCurrentYear2","calendarRef","parentRef","showCalendar","onDateChange","showTime","fromDate","dateObject","handleClickOutside","applyDate","getDayNames","getDayNamesTrimmed","getMonthNames","getMonthDays","getMonthFirstDay","getMonthLastDay","getMonthName","getDayName","getYear","getDayOfWeek","getWeekOfMonth","getDateData","curYear","curMonth","getDaysOfWeek","days","Months","today","isMonth","isToday","dayName","getPreviousMonthDays","daysToCut","getNextMonthDays","renderDateToShow","renderDate","thismonth","refactored","prevdays","nextdays","weeks","g_1","ind","Cell","endCalendar","startCalendar","selectDate","TimePicker","onTimeChange","hours","minutes","selectedHour","setSelectedHour","selectedMinute","setSelectedMinute","_e","selectedAmPm","setSelectedAmPm","ampm","fal","FieldContainer","DisabledContainer","templateObject_7","DropdownList","returnedSelection","DropShadowCard","RateContainer","CurrencyName","Rates","FooterContainer","FooterArea","AboutSSX","SSXInfo","CopyrightArea","CopyrightText","IndicesContainer","IndicesItem","IndexName","IndexValue","ValidityText","LoaderContainer","Shimmer","Badge","StatusBadge","status","MenuLink","MenuItem","MenuLinks","MenuItemContainer","CodeMaintenanceSubMenu","CodeMaintenanceContainer","TopBarContainer","Logo","TopBarRight","IconButton","ProfileButton","BugReportingCard","NotificationsCard","NavCardHeading","templateObject_8","ProfileCardHeading","templateObject_9","BugReportingBody","templateObject_10","NotifList","templateObject_11","UnreadNotif","templateObject_12","ReadNotif","templateObject_13","ProfileCard","templateObject_14","ProfileLink","templateObject_15","ResponseContainer","templateObject_16","EmptyNotifContainer","templateObject_17","ContentArea","templateObject_18","NotifTime","templateObject_19","img","MarketdataWidgetContainer","MarketDataItemContainer","MarketNameFlagContainer","EntityName","DataContainer","DataInfoContainer","InfoItem","LastUpdated","MarketMoversWidget","MarketMoversContainer","Row","DataSection","TabContainer","TabItem","TabContent","Tab","tabs","bgHexColor","tabIndex","setTabIndex","tab","tabName","background","tabComponent","MenuBarContainer","MenuItems","NewsCardContainer","FeaturedImg","SourceDate","NewsTitle","NewsExcerpt","NewsData","TitleBarContainer","NewsFilters","InputLabel","InputField","InputContainer","ToggleButton","ErrorMessage","Currencies","Dates","EmptyContainer","FormField","TextField","subtext","errMsg","required","setBorderColor","setErr","textFieldRef","flexDirection","RibbonContainer","RibbonItem","SearchBarContainer","SearchBox","SearchButton","ModalBackdrop","SideModalContainer","NavSection","ModalContent","ModalTitleArea","SmallNewsCardContainer","FeaturedImage","h6","TitleSource","_f","_g","_h","play","_j","pauseOnHover","_k","pauseOnClick","_l","_m","speed","_o","_p","_q","gradient","_r","gradientColor","_s","gradientWidth","onFinish","onCycleComplete","_t","containerWidth","setContainerWidth","_u","marqueeWidth","setMarqueeWidth","_v","setIsMounted","containerRef","marqueeRef","calculateWidth","rgbaGradientColor","onAnimationIteration","onAnimationEnd","TickerTrack","TickerItem","TableStyled","ChevronDownIcon$1","React.forwardRef","titleId","svgRef","React.createElement","XMarkIcon$1","TextAreaField","textarea","FieldSection","moneyfy","currency","currencyDisplay","ActionsContainer","ActionsListContainer","ActionItem","NoActionsContainer","WidgetTitleContainer","actions","action","description","clearanceLevel","forms","form","formName","formCode","userType","modules","moduleName","moduleCode","remarks","logDetails","user","logDescription","reference","acctDets","loading","acctBtnNum","setAcctBtnNum","clickedBtn","setClickedBtn","acct","isActive","bankLogo","acctNumber","bankName","acctName","swiftCode","editFxn","LoadingSpinner","deactivateFxn","reactivateFxn","bankAcct","selectedBank","selIndex","setSelIndex","acctNo","pages","page","href","url","brokers","broker","email","phone","countryFlag","ratesData","exchCurrFlag","baseCurrCode","exchCurrName","exchCurrCode","graphData","setGraphData","setChange","performanceColor","rateChange","fillColor","dates","exchCurrency","baseCurrency","dayjs","currDate","rate","chartData","rateDate","todayFrmt","newDayFrmt","newDay","closeFxn","declineFxn","acceptFxn","pairs","pair","pairCode","baseFlag","exchangeFlag","exchangeCurrency","pairName","placeholder","toLocaleString","setDateObject","dateSelected","setDateSelected","formattedDate","setFormattedDate","setFromDate","setToDate","userInput","setUserInput","activeCalendar","localTime","setLocalTime","setPosition","wrapperRef","formatDateAndTime","formatDateRange","top_1","onFocus","onChange","fd","td","selectedDate","baseCurr","baseCurrShortName","lastUpdated","exchangeCurrs","exchCurr","currFlag","currName","indices","indexItem","changePercent","itemName","transactions","newTransactionFxn","txnStatus","badgeColor","transaction","providerLogo","providerName","baseCurrFlag","baseAmount","exchangeCurrFlag","exchangeAmount","transactionId","mainNavLinks","codeMaintenanceLinks","currentPage","link","LinkComponent","pageName","iconClass","preventDefault","querySelector","toggle","userName","requestLpUrl","notifications","myProfileUrl","signOutApiUrl","toggleBugReporting","setToggleBugReporting","toggleNotifications","setToggleNotifications","toggleProfileCard","setToggleProfileCard","bugReportStage","setBugReportStage","sendingBR","setSendingBR","notification","notifRead","clientLogo","notifTitle","lpProvider","transactionNumber","justifyContent","baseCurrencyCode","exchCurrencyCode","notifTime","exchAmount","shape","marketData","market","marketCountryFlag","volume","marketCap","movers","mover","entityShortName","changeAmount","entityName","marketFlag","entityPrice","menuItems","currentPageName","menuItem","featuredImg","excerpt","sourceCountryFlag","storyUrl","marginRight","countries","outlets","selectedCountryFxn","selectedOutletFxn","selCountry","selOutlet","flag","setValue","passString","setPassString","showPw","setShowPw","methods","pymtModeCode","pymtModeName","pymtModeShortName","providers","provider","ratePairs","baseRate","toFixed","exchangeRate","startDate","endDate","symbols","currencies","returnedData","selSymbol","setSelSymbol","qty","setQty","setBaseCurrency","price","setPrice","fmtdSymbl","setFmtdSymbl","fmtdCurr","setFmtdCurr","tempFmtd","symbol","temp","optionShortName","shortName","currencyLongName","currencyShortName","symb","quantity","links","submitFxn","onSubmit","resultsDisplayed","totalRes","disabledNav","modalTitle","modalSubText","closeModal","sourceCountryFlagUrl","featuredImgUrl","stocksData","changeIndicator","priceChange","Marquee","stockItem","changeValue","symbolShortName","configs","configCode","configName","configValue","columns","columnSort","onRowClick","rowExpand","onRowExpandComponent","React.useState","dataToShow","setDataToShow","allData","setAllData","setCurrentPage","itemsPerPage","search","setSearch","selectedColumn","setSelectedColumn","searchResults","setSearchResults","refresh","setRefresh","secondaryColumns","setSecondaryColumns","rowsToExpand","setRowsToExpand","React.useEffect","filteredData","onSearchChange","fetch","sent","json","getData","columndata","field","sortable","catch","XMarkIcon","column","ChevronDownIcon","React.Fragment","colSpan","requestDate","requestedBy","exchFlag","exchRate","logo","paymentDets","payeeName","bankCountryFlag","bankCountry","paymentRemarks","currentOptions","availableOptions","selOptions","titleAvailable","titleCurrent","available","setAvailable","currentUserOptions","setCurrentUserOptions","selections","setSelections","optionId","actionItem","sels","sel","avail","__spreadArray","addOption","removeOption","currentActions","availableActions","newActionsFxn","currentSelections","newActions","setNewActions","currentSels","removeAction","tempAvailable","al","newAction","actionId","actionName","tempNew","addAction","roles","roleName","roleCode","users","organisation"],"mappings":"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"}
|